diff --git a/ag/clan/clan_info.php b/ag/clan/clan_info.php
index 17b5e1b..7946cef 100644
--- a/ag/clan/clan_info.php
+++ b/ag/clan/clan_info.php
@@ -10,7 +10,6 @@ include_once($_SERVER['DOCUMENT_ROOT'].'ag/include/clan.inc.php');
include_once($_SERVER['DOCUMENT_ROOT'].'ag/include/clan_fights.inc.php');
include_once($_SERVER['DOCUMENT_ROOT'].'ag/include/fehlerausgabe.inc.php');
-
// GET-Section
if(isset($_GET['action'])) {
@@ -454,6 +453,9 @@ function setProfile($what, $value1, $value2, $clanid, $rootlvl){
mysql_query('UPDATE clan SET homepage = \''.$value1.'\' where id = '.$clanid);
return NULL;
case 'Clanzeichen':
+ if(strlen($value1.$value2) > MAX_CHARS_CLANSIGN) {
+ return 'Clanzeichen sind ungültig: Summe aus beiden Teilen darf nicht größer als '.MAX_CHARS_CLANSIGN.' Zeichen sein!';
+ }
mysql_query('UPDATE clan SET clanz_pre = \''.$value1.'\', clanz_suff = \''.$value2.'\' where id = '.$clanid);
return NULL;
case 'Banner':
diff --git a/ag/clan/new.php b/ag/clan/new.php
index 0dfc4f2..d4a1f60 100644
--- a/ag/clan/new.php
+++ b/ag/clan/new.php
@@ -9,6 +9,8 @@ include_once ($_SERVER['DOCUMENT_ROOT'] . 'ag/include/config.inc.php');
include_once ($_SERVER['DOCUMENT_ROOT'] . 'ag/include/designfunctions.inc.php');
include_once ($_SERVER['DOCUMENT_ROOT'] . 'ag/include/fehlerausgabe.inc.php');
include_once ($_SERVER['DOCUMENT_ROOT'] . 'ag/include/parse.inc.php');
+include_once ($_SERVER['DOCUMENT_ROOT'] . 'ag/include/clan.inc.php');
+
// GET-Section
// Kritisch (SQL-Injections)
$clan_name = validateName($_GET['clan_name']);
@@ -27,6 +29,11 @@ if ($charm == 1) {
exit;
}
+ if(strlen($clan_for.$clan_back) > MAX_CHARS_CLANSIGN) {
+ displayErrorMessage(NULL, 'Clanzeichen sind ungültig: Summe aus beiden Teilen darf nicht größer als '.MAX_CHARS_CLANSIGN.' Zeichen sein!.', displayHistoryBackLink());
+ exit;
+ }
+
if (!$clan_name) {
displayErrorMessage(NULL, 'Sie müssen einen Clannamen haben.', displayHistoryBackLink());
exit;
diff --git a/ag/include/arena.inc.php b/ag/include/arena.inc.php
index ad6ac20..cf40f7c 100644
--- a/ag/include/arena.inc.php
+++ b/ag/include/arena.inc.php
@@ -8,38 +8,21 @@
include_once($_SERVER['DOCUMENT_ROOT'].'ag/include/char.inc.php');
-//if($chara_1['id']) {
-// $arena = mysql_fetch_array(mysql_query("SELECT id, name, ring, platz, lux, preis, level, skill, exp FROM arena WHERE besitzer='$chara_2[besitzer]' LIMIT 1"));
-//} else {
-// $arena = mysql_fetch_array(mysql_query("SELECT id, name, ring, platz, lux, preis, level, skill, exp FROM arena WHERE besitzer='$user_ida[id]' LIMIT 1"));
-//}
-//$arena_geld = ($arena['platz'] / 2) + ($arena['ring'] * 3) + ($arena['lux'] * 50);
-//$arena_geld /= 4;
-//
-//$exp1 = explode(",",$arena[exp]);
-//$exp1[0] = round($exp1[0]);
-//$arena_besucher = ($arena[ring] * 3) + ($arena[lux] * 200);
-//if($arena[preis] != 0){
-// $arena_besucher = round($arena_besucher / ($arena[preis] / 10));
-//} else{
-// $arena_besucher = 1;
-//}
-//if($arena_besucher<0) {
-//$arena_besucher = 0;
-//}
-//
-//if($arena_besucher>$arena[platz]) {
-//$arena_besucher = $arena[platz];
-//}
-//
-//$arena_einkommen = $arena_besucher * $arena[preis];
-
function calculateArenaData($owner_id, $char_1, $char_2, $factor){
// echo 'Berechne die Arena-Daten mit Faktor '.$factor;
$lf = 0.7; // Luxus Exponent
$kf_1 = 1/3; // Kampf Exponent a)
$kf_2 = $kf_1 * $kf_1; // Kampf Exponent b)
-
+
+ // default arena!
+ if($owner_id == NULL) {
+ $arena['luxus'] = 2;
+ $arena['level'] = 2;
+ $arena['steh'] = 1000000;
+ $arena['sitz'] = 1000000;
+ $arena['loge'] = 1000000;
+ }
+
$arena = mysql_fetch_assoc(mysql_query('SELECT * FROM arena WHERE besitzer = '.$owner_id));
$wert_char1 = max(0.75,min(1.25,$char_1['siege']/($char_1['niederlagen'] + 0.01))) * getPowerLevelWithBuffs($char_1['id']);
$wert_char2 = max(0.75,min(1.25,$char_2['siege']/($char_2['niederlagen'] + 0.01))) * getPowerLevelWithBuffs($char_2['id']);
@@ -47,7 +30,7 @@ function calculateArenaData($owner_id, $char_1, $char_2, $factor){
$kampf_wert = (pow($wert_char1,$kf_1)+pow($wert_char1,$kf_2))*(pow($wert_char2,$kf_1)+pow($wert_char2,$kf_2));
// Neue Kalkulation :)
$arena_wert = pow($arena['luxus'], $lf)+log($arena['level'],4)+0.5;
-
+
$zuschauer = $kampf_wert*$arena_wert*$factor;
$z_loge = floor(0.01*$zuschauer);
$z_sitz = round(0.36*$zuschauer);
@@ -68,7 +51,7 @@ function calculateUnterhaltsKosten($arena){
}
function calculateRenovierungsKosten($arena){
- return (1-$arena['zustand'])*($arena['steh']*10+$arena['sitz']*150+$arena['loge']*18000);
+ return (1-$arena['zustand'])*($arena['steh']*10+$arena['sitz']*150+$arena['loge']*18000);
}
?>
\ No newline at end of file
diff --git a/ag/include/attackenset.inc.php b/ag/include/attackenset.inc.php
index 9dfd2dd..b31191f 100644
--- a/ag/include/attackenset.inc.php
+++ b/ag/include/attackenset.inc.php
@@ -7,7 +7,7 @@
*/
?>
- $result['gruppen_id'], "gruppen_name" => $result['gruppen_name']);
+ $set[$result['round']] = $result['attack_id'];
}
return $set;
}
function updateCharAttackSet($set) {
-
-}
+
+}
function createCharAttackSet() {
-
+
}
diff --git a/ag/include/char.inc.php b/ag/include/char.inc.php
index 7ddfc5a..a9375c6 100644
--- a/ag/include/char.inc.php
+++ b/ag/include/char.inc.php
@@ -389,14 +389,4 @@ function getAttacksforChar($charid, $mode = 0) {
return $overview;
}
-/**
- * This function reads out the attack set of the char
- * @param string $name
- * @param int $char_id
- */
-function getAttackenSet($name, $char_id) {
- // TODO: Further implementation
- return NULL;
-}
-
?>
diff --git a/ag/include/clan.inc.php b/ag/include/clan.inc.php
index 2f1599a..6e59f65 100644
--- a/ag/include/clan.inc.php
+++ b/ag/include/clan.inc.php
@@ -7,6 +7,7 @@
*/
+define('MAX_CHARS_CLANSIGN', 8);
$GLOBALS['clan_buffered_instances'] = array ();
diff --git a/ag/include/clan_fights.inc.php b/ag/include/clan_fights.inc.php
index 4a53b80..b879051 100644
--- a/ag/include/clan_fights.inc.php
+++ b/ag/include/clan_fights.inc.php
@@ -7,6 +7,8 @@
*/
include_once ($_SERVER['DOCUMENT_ROOT'] . 'ag/include/clan.inc.php');
+include_once ($_SERVER['DOCUMENT_ROOT'] . 'ag/include/attackenset.inc.php');
+include_once ($_SERVER['DOCUMENT_ROOT'] . 'ag/include/arena.inc.php');
include_once ($_SERVER['DOCUMENT_ROOT'] . 'ag/include/kampf_wrapper.inc.php');
include_once ($_SERVER['DOCUMENT_ROOT'] . 'ag/include/semaphore.inc.php');
include_once ($_SERVER['DOCUMENT_ROOT'] . 'ag/include/event.inc.php');
@@ -511,17 +513,45 @@ function calculateSurvivalClanFight($event_id, array $clan_ids, array $clan_char
* @return the winners array
*/
function battle($event_id, array $char1, array $char2, $attack_set) {
+ $char1['attacke'] = implode(',', getCharAttackSet($char1['id'], $attack_set));
+ $char2['attacke'] = implode(',', getCharAttackSet($char2['id'], $attack_set));
+
$combinedArray = calculateFight($char1, $char2);
+ $exp = calculateExperience($char1, $char2, $combinedArray['winner'], 0.01); // very few exp
+
+ $combinedArray[KEY_EXP_CHAR1] = $exp[$char1['id']];
+ $combinedArray[KEY_EXP_CHAR2] = $exp[$char2['id']];
+
+ $arena = calculateArenaData(null, $char_1, $char_2, 0.01);
+ $combinedArray[KEY_LOGE] = $arena['loge'];
+ $combinedArray[KEY_SITZ] = $arena['sitz'];
+ $combinedArray[KEY_STEH] = $arena['steh'];
+
+ if($combinedArray['winner'] == $char1['id']) {
+ $combinedArray[KEY_GELD_CHAR1] = $result['geld'] * 0.7;
+ $combinedArray[KEY_GELD_CHAR2] = $result['geld'] * 0.3;
+ } else {
+ $combinedArray[KEY_GELD_CHAR2] = $result['geld'] * 0.7;
+ $combinedArray[KEY_GELD_CHAR1] = $result['geld'] * 0.3;
+ }
+
// first persist the fight and then check who was the winner and adjust the char array for him ;)
persistFight($event_id, $combinedArray);
- // now determine the winner
- // TODO: implement
-
- // now adjust the winners array
- // TODO: implement
+ // now get the winners array
+ $rounds = $combinedArray['rounds'];
+ $lastRound = $rounds[count($rounds) - 1];
+ $newChar = null;
+ if($lastRound['char1_array']['id'] == $combinedArray['winner']){
+ $newChar = $lastRound['char1_array'];
+ } else {
+ $newChar = $lastRound['char2_array'];
+ }
+ $newChar['mp'] = $newChar['mp']. ','.$newChar['mp_max'];
+ $newChar['hp'] = $newChar['hp']. ','.$newChar['hp_max'];
+ return $newChar;
}
diff --git a/ag/include/event.inc.php b/ag/include/event.inc.php
index 6a17744..f6da500 100644
--- a/ag/include/event.inc.php
+++ b/ag/include/event.inc.php
@@ -16,6 +16,25 @@ define('EVENT_LIGA', 4);
define('EVENT_WANTED', 5);
define('EVENT_CLAN_FIGHT', 6);
+// The fights duration is fixed
+define('DURATION_FIGHT', 0);
+// The fights duration is resolved by the amount of rounds
+define('DURATION_ROUND', 1);
+// The fights duration is fixed but the time ouf rounds is resolved!
+define('DURATION_FIGHT_RESOLVED_ROUNDS', 2);
+
+define('KEY_LOGE', 'LOGE');
+define('KEY_SITZ', 'SITZ');
+define('KEY_STEH', 'STEH');
+define('KEY_EXP_CHAR1', 'EXP_CHAR1');
+define('KEY_EXP_CHAR2', 'EXP_CHAR2');
+define('KEY_GELD_CHAR1', 'GELD_CHAR1');
+define('KEY_GELD_CHAR2', 'GELD_CHAR2');
+define('KEY_AXP_CHAR1', 'AXP_CHAR1');
+define('KEY_AXP_CHAR2', 'AXP_CHAR2');
+define('KEY_ITM_CHAR1', 'ITM_CHAR1');
+
+
/**
* Creates an event for a given type and returns the id of this event!
* @param string $type
@@ -59,18 +78,28 @@ function addParticipant($event_id, array $char) {
* Persists a fight of one event.
* @param int $event_id
* @param array combined array that is calculated in the kampf_wrapper
+ * @param int $startTimestamp unix timestamp for the start of the battle
+ * @param int $durationType the duration value (see the DURATION constants)
+ * @param int $durationValue the amount of time in minutes
* @return int the id of the fight
*/
-function persistFight($event_id, array $combinedArray) {
+function persistFight($event_id, array $combinedArray, $startTimestamp, $durationType, $durationValue) {
// persist a fight of two chars (calculated by the wrapper) ^^"
//echo 'The fight was about ' . count($combinedArray) . ' rounds
';
+
+ $roundsArray = $combinedArray['rounds'];
+ $winnerId = $combinedArray['winner'];
+ $hostId = $combinedArray['host'];
+ $data = $combinedArray['data'];
+
+
// first get a fight id ;).
$finished = FALSE;
while(!$finished) {
$sql = 'SELECT IFNULL(max(event_fight_id),0) + 1 FROM event_fights';
$row = mysql_fetch_row(mysql_query($sql));
- mysql_query('INSERT INTO event_fights(event_id, event_fight_id) values('.$event_id.', \''.$row[0].'\')');
+ mysql_query('INSERT INTO event_fights(event_id, event_fight_id, host, winner) values('.$event_id.', \''.$row[0].'\, '. $hostId . ', ' . $winnerId .')');
$finished = mysql_affected_rows() > 0;
$event_fight_id = $row[0];
}
@@ -79,28 +108,33 @@ function persistFight($event_id, array $combinedArray) {
- for($round = 0; $round < count($combinedArray) ; $round++) {
+ for($round = 0; $round < count($roundsArray) ; $round++) {
// persist this round ^^"
// first persist char1
- $chara_1 = $combinedArray[$round]['char1_array'];
+ $chara_1 = $roundsArray[$round]['char1_array'];
$sql = 'INSERT INTO event_fight_rounds(event_id, event_fight_id, round, event_char_id, hp, mp, strength, speed, defense, luck, stamina, attack, damage)';
- $sql .= ' values('.$event_id.','.$event_fight_id.','.$round.',' .$chara_1['id'].','. $chara_1['hp'].', '. $chara_1['mp'].', '. $chara_1['starke'].', '. $chara_1['speed'].', '. $chara_1['verteidigung'].', '. $chara_1['glueck'].', '. $chara_1['ausdauer'].', \''. $combinedArray[$round]['atk_char1'] .'\', \''. $combinedArray[$round]['dmg_char1'] .'\')';
+ $sql .= ' values('.$event_id.','.$event_fight_id.','.$round.',' .$chara_1['id'].','. $chara_1['hp'].', '. $chara_1['mp'].', '. $chara_1['starke'].', '. $chara_1['speed'].', '. $chara_1['verteidigung'].', '. $chara_1['glueck'].', '. $chara_1['ausdauer'].', \''. $roundsArray[$round]['atk_char1'] .'\', \''. $roundsArray[$round]['dmg_char1'] .'\')';
// echo $sql .'
';
mysql_query($sql);
// now persist char2
- $chara_2 = $combinedArray[$round]['char2_array'];
+ $chara_2 = $roundsArray[$round]['char2_array'];
$sql = 'INSERT INTO event_fight_rounds(event_id, event_fight_id, round, event_char_id, hp, mp, strength, speed, defense, luck, stamina, attack, damage)';
- $sql .= ' values('.$event_id.','.$event_fight_id.','.$round.',' .$chara_2['id'].', '. $chara_2['hp'].', '. $chara_2['mp'].', '. $chara_2['starke'].', '. $chara_2['speed'].', '. $chara_2['verteidigung'].', '. $chara_2['glueck'].', '. $chara_2['ausdauer'].', \''. $combinedArray[$round]['atk_char2'] .'\', \''. $combinedArray[$round]['dmg_char2'] .'\')';
+ $sql .= ' values('.$event_id.','.$event_fight_id.','.$round.',' .$chara_2['id'].', '. $chara_2['hp'].', '. $chara_2['mp'].', '. $chara_2['starke'].', '. $chara_2['speed'].', '. $chara_2['verteidigung'].', '. $chara_2['glueck'].', '. $chara_2['ausdauer'].', \''. $roundsArray[$round]['atk_char2'] .'\', \''. $roundsArray[$round]['dmg_char2'] .'\')';
// echo $sql .'
';
mysql_query($sql);
+ }
+ // Okay now do we have any additional data left?
+ foreach ($data as $key => $value) {
+ $sql = 'INSERT INTO event_fight_metadata(event_id, event_fight_id, key, value) values('.$event_id.','.$event_fight_id.',\''.$key.'\',\''.$value.'\')';
+ mysql_query($sql);
}
}
diff --git a/ag/include/kampf_wrapper.inc.php b/ag/include/kampf_wrapper.inc.php
index 293c12b..6fc3e9b 100644
--- a/ag/include/kampf_wrapper.inc.php
+++ b/ag/include/kampf_wrapper.inc.php
@@ -6,6 +6,9 @@
*
*/
+include_once ($_SERVER['DOCUMENT_ROOT'] . 'ag/include/arena.inc.php');
+
+
/**
*
* Converts the learn-ids of a char to the attack ids (that can be used to determine the technique)
@@ -33,7 +36,7 @@ function convertLearnIDToAttackID (array $learnids, $char_id) {
* Lets char1 fight against char2 (the attacks that are in the entry "attacken" will be used, no conditions!)
* @param array $char1 the char-array for the first char that should be used (like it is)
* @param array $char2 the char-array for the second char that should be used (like it is)
- * @return an array with the contents of the several rounds
+ * @return an array with the contents of the several rounds + metadata
*/
function calculateFight(array $char1, array $char2) {
@@ -105,14 +108,15 @@ function calculateFight(array $char1, array $char2) {
}
}
+
+ $metaData = array();
+ $metaData['host'] = $char1['id'];
## Start the fight ;)
// The "rundenArray" has a specific structure. For each round played another entry is placed.
// An entry contains { char1_array*, char2_array*, atk_char1, atk_char2, dmg_char1, dmg_char2 }
// the char arrays contain the stats of the chars at the end of the round !
-
-
$rundenArray = array();
$tmp_hp = array();
@@ -206,10 +210,40 @@ function calculateFight(array $char1, array $char2) {
$x++;
$rundenArray[] = $runde;
+ }
+ if(($k_hp[0] > $k_aufgabe[0] && $k_hp[1] > $k_aufgabe[1]) || ($k_hp[0] < $k_aufgabe[0] && $k_hp[1] < $k_aufgabe[1])) {
+ // Both are above or both are below their limit to surrender?
+ if($k_hp[0] >= $k_hp[1]) { // If even the creator wins ;)
+ $metaData['winner'] = $chara_1['id'];
+ } else {
+ $metaData['winner'] = $chara_2['id'];
+ }
+ } else if($k_hp[0] < $k_aufgabe[0]) { // char1 is about to surrender
+ $metaData['winner'] = $chara_2['id'];
+ } else {
+ $metaData['winner'] = $chara_1['id'];
}
+ $metaData['rounds'] = $rundenArray;
+ $metaData['data'] = array();
return $rundenArray;
}
+
+function calculateExperience(array $char1, array $char2, $winner, $factor) {
+ $exp[$char1['id']] = 0;
+ $exp[$char2['id']] = 0;
+ if($winner == $char1['id']) {
+ $exp[$char1['id']] = (getPowerLevelWithBuffs($chara_1['id']) + getPowerLevelWithBuffs($chara_2['id'])) * 2.2 * $factor;
+ $exp[$char2['id']] = (getPowerLevelWithBuffs($chara_1['id']) + getPowerLevelWithBuffs($chara_2['id'])) * $factor;
+ } else {
+ $exp[$char1['id']] = (getPowerLevelWithBuffs($chara_1['id']) + getPowerLevelWithBuffs($chara_2['id'])) * $factor;
+ $exp[$char2['id']] = (getPowerLevelWithBuffs($chara_1['id']) + getPowerLevelWithBuffs($chara_2['id'])) * 2.2 * $factor;
+ }
+ return $exp;
+}
+
+
+
?>
\ No newline at end of file