function Attaque($game_id) { global $liste_unit; global $liste_bat; //étapes de l'Attaques //Recup data joueurs //Récup All the Unit //Calcul du dégats des tours // Kill //Attaque Château //Changement tour //Etape 0 : Recup data de la partie $game_query = mysql_query("SELECT * FROM td_game WHERE id = '".$game_id."' ")or die(mysql_error()); $game_data = mysql_fetch_assoc($game_query); $hard = $game_data['hard']; if($hard == 1) { $coeff_hard = 3; } else { $coeff_hard = 1; } //Etapes 1 : Récupérer les données des joueurs : $joueurs_query = mysql_query("SELECT * FROM td_users WHERE game = '".$game_id."' ")or die(mysql_error()); while($data_user = mysql_fetch_assoc($joueurs_query)) { $i++; if($i == 1) { $user1 = $data_user['pseudo']; $u1_id = $data_user['id']; $u1_income = $data_user['income']; $user1_prot = $data_user['protectedAttaque']; $u1_clanid = $data_user['Clan_id']; } elseif($i == 2) { $user2 = $data_user['pseudo']; $u2_id = $data_user['id']; $u2_income = $data_user['income']; $user2_prot = $data_user['protectedAttaque']; $u2_clanid = $data_user['Clan_id']; } } //Etape 2 : Récupérer les unités des joueurs //Etape 2.1 : Unités du joueur 1 $unit_user1_query = mysql_query("SELECT * FROM td_units WHERE owner = '".$user1."' ")or die(mysql_error()); //Etape 2.2 : Unités du joueur 2 $unit_user2_query = mysql_query("SELECT * FROM td_units WHERE owner = '".$user2."' ")or die(mysql_error()); //Etape 2.3 : Récupérer les Tours du Joueur 1 $tower_user1_query = mysql_query("SELECT * FROM td_bat WHERE owner = '".$u1_id."' ")or die(mysql_error()); //Etape 2.4 : Récupérer les Tours du Joueur 2 $tower_user2_query = mysql_query("SELECT * FROM td_bat WHERE owner = '".$u2_id."' ")or die(mysql_error()); //Etape 3 : Calcul des Dégats des Tours sur les Unités //Etape 3.1 : Dégats possible du joueur 1 while($tower_user1_data = mysql_fetch_assoc($tower_user1_query)) { if($tower_user1_data['bat'] == "Castle") { $castle_1_PV = $tower_user1_data['PV']; $Max_PV_Castle_1 = $liste_bat[$tower_user1_data['bat'].'_'.$tower_user1_data['lvl']]['PV']; } $degats_user1 += $liste_bat[$tower_user1_data['bat'].'_'.$tower_user1_data['lvl']]['Attaque']; } //Etape 3.2 : Dégâts possible du joueur 2 while($tower_user2_data = mysql_fetch_assoc($tower_user2_query)) { if($tower_user2_data['bat'] == "Castle") { $castle_2_PV = $tower_user2_data['PV']; $Max_PV_Castle_2 = $liste_bat[$tower_user2_data['bat'].'_'.$tower_user2_data['lvl']]['PV']; } $degats_user2 += $liste_bat[$tower_user2_data['bat'].'_'.$tower_user2_data['lvl']]['Attaque']; } //Etape 3.3 : Calcul des Dégats max subissables par les Unités du joueur 1 while($unit_user1_data = mysql_fetch_assoc($unit_user1_query)) { if($liste_unit[$unit_user1_data['name']]['Assaut'] == 0) { $max_PV_1 += $liste_unit[$unit_user1_data['name']]['PV'] * $unit_user1_data['nbr']; //MAx gain de ressources $max_or_1 += $liste_unit[$unit_user1_data['name']]['Give_gold']*$unit_user1_data['nbr']; $max_water_1 += $liste_unit[$unit_user1_data['name']]['Give_water']*$unit_user1_data['nbr']; } } //Etape 3.4 : Calcul des Dégats max subissables par les Unités du joueur 2 while($unit_user2_data = mysql_fetch_assoc($unit_user2_query)) { if($liste_unit[$unit_user2_data['name']]['Assaut'] == 0) { $max_PV_2 += $liste_unit[$unit_user2_data['name']]['PV'] * $unit_user2_data['nbr']; //Max gain de ressources $max_or_2 += $liste_unit[$unit_user2_data['name']]['Give_gold'] * $unit_user2_data['nbr']; $max_water_2 += $liste_unit[$unit_user2_data['name']]['Give_water'] * $unit_user2_data['nbr']; } } //Etape 4 : Calcul des Morts //Etape 4.1 : Calcul des Morts du J1 if($degats_user2 >= $max_PV_1) { //Toutes les unités sont mortes ! $attack_1 = 0; //Gain d'or et eau ! $win_or_2 = $max_or_1; $win_water_2 = $max_water_1; $txt = "Attaque : ".$user2." a repoussé toutes les unités de ".$user1.""; $time = time(); mysql_query("INSERT INTO td_histo_game(id, game_id, time, content) VALUES('', '$game_id', '$time', '$txt') ")or die(mysql_error()); } else { $attack_1 = 69; $army1 = array(); //Array de l'armée survivante du J1 //Toutes les unités ne meurs pas. //Sélection des morts mysql_data_seek($unit_user1_query, 0); while($unit_user1_data = mysql_fetch_assoc($unit_user1_query)) { if($liste_unit[$unit_user1_data['name']]['Assaut'] == 0) { if($degats_user2 > 0) { $pv_vague = $liste_unit[$unit_user1_data['name']]['PV'] * $unit_user1_data['nbr']; if($degats_user2 >= $pv_vague) { //Toutes unités de ce type sont morte ! //On ne les ajoute pas à l'armée //On retire les dégats des dégats possibles $degats_user2 = $degats_user2 - $pv_vague; //Cacul des gains d'or/d'eau $win_or_2 += $liste_unit[$unit_user1_data['name']]['Give_gold'] * $unit_user1_data['nbr']; $win_water_2 += $liste_unit[$unit_user1_data['name']]['Give_water'] * $unit_user1_data['nbr']; } else { //Toutes les unités ne meurs pas ! //On calcul le nbr de mort $pv_survie = $pv_vague - $degats_user2; $nbr_morts = $unit_user1_data['nbr'] - (floor($pv_surie / $unit_user1_data['nbr'])); $nbr_survivants = $unit_user1_data['nbr'] - $nbr_morts; /* $nbr_dégats = ($liste_unit[$unit_user1_data['name']]['PV'] * $unit_user1_data['nbr']) / $degats_user2; $nbr_morts = floor( ($liste_unit[$unit_user1_data['name']]['PV'] * $unit_user1_data['nbr'] - $nbr_degats) / $liste_unit[$unit_user1_data['name']]['PV'] ); $nbr_survivants = $unit_user1_data['nbr'] - $nbr_morts; */ $army1[$unit_user1_data['name']] = $nbr_survivants; $nbr_soldiers1 += $nbr_survivants; $degats_user2 = 0; //Calcul des gains d'or/d'eau $win_or_2 += $nbr_morts * $liste_unit[$unit_user1_data['name']]['Give_gold']; $win_water_2 += $nbr_morts * $liste_unit[$unit_user1_data['name']]['Give_water']; } } else { //Toutes les unités passent ! $army1[$unit_user1_data['name']] = $unit_user1_data['nbr']; $nbr_soldiers1 += $unit_user1_data['nbr']; //Aucun gain d'or et d'eau } } } $txt = "Attaque : ".$nbr_soldiers1." Unités de ".$user1." attaquent le Château de ".$user2.""; $time = time(); mysql_query("INSERT INTO td_histo_game(id, game_id, time, content) VALUES('', '$game_id', '$time', '$txt') ")or die(mysql_error()); } //Etape 4.2 : Calcul des Morts du J2 if($degats_user1 >= $max_PV_2) { //Toutes les unités sont mortes ! $attack_2 = 0; //Gain d'or et eau ! $win_or_1 = $max_or_2; $win_water_1 = $max_water_2; $txt = "Attaque : ".$user1." a repoussé toutes les unités de ".$user2.""; $time = time(); mysql_query("INSERT INTO td_histo_game(id, game_id, time, content) VALUES('', '$game_id', '$time', '$txt') ")or die(mysql_error()); } else { $attack_2 = 69; $army2 = array(); //Array de l'armée survivante du J2 //Toutes les unités ne meurs pas. //Sélection des morts mysql_data_seek($unit_user2_query, 0); while($unit_user2_data = mysql_fetch_assoc($unit_user2_query)) { if($liste_unit[$unit_user2_data['name']]['Assaut'] == 0) { if($degats_user1 > 0) { $pv_vague = $liste_unit[$unit_user2_data['name']]['PV'] * $unit_user2_data['nbr']; if($degats_user1 >= $pv_vague) { //Toutes unités de ce type sont morte ! //On ne les ajoute pas à l'armée //On retire les dégats des dégats possibles $degats_user1 -= $pv_vague; //Cacul des gains d'or/d'eau $win_or_1 += $liste_unit[$unit_user2_data['name']]['Give_gold'] * $unit_user2_data['nbr']; $win_water_1 += $liste_unit[$unit_user2_data['name']]['Give_water'] * $unit_user2_data['nbr']; } else { //Toutes les unités ne meurs pas ! //On calcul le nbr de mort $pv_survie = $pv_vague - $degats_user1; $nbr_morts = $unit_user2_data['nbr'] - (floor($pv_surie / $unit_user2_data['nbr'])); $nbr_survivants = $unit_user2_data['nbr'] - $nbr_morts; $nbr_soldiers2 += $nbr_survivants; /* $nbr_dégats = ($liste_unit[$unit_user2_data['name']]['PV'] * $unit_user2_data['nbr']) / $degats_user1; $nbr_morts = floor( ($liste_unit[$unit_user2_data['name']]['PV'] * $unit_user2_data['nbr'] - $nbr_degats) / $liste_unit[$unit_user2_data['name']]['PV'] ); $nbr_survivants = $unit_user1_data['nbr'] - $nbr_morts; */ $army2[$unit_user2_data['name']] = $nbr_survivants; $degats_user1 = 0; //Calcul des gains d'or/d'eau $win_or_1 += $nbr_morts * $liste_unit[$unit_user2_data['name']]['Give_gold']; $win_water_1 += $nbr_morts * $liste_unit[$unit_user2_data['name']]['Give_water']; } } else { //Toutes les unités passent ! $army2[$unit_user2_data['name']] = $unit_user2_data['nbr']; $nbr_soldiers2 += $unit_user2_data['nbr']; //Aucun gain d'or et d'eau } } } $txt = "Attaque : ".$nbr_soldiers2." Unités de ".$user2." attaquent le Château de ".$user1.""; $time = time(); mysql_query("INSERT INTO td_histo_game(id, game_id, time, content) VALUES('', '$game_id', '$time', '$txt') ")or die(mysql_error()); } //Etape 5 Attaque sur les Châteaux //Etape 5.1 : Attaque sur Chateau joueur 1 //Calcul des dégats de l'armée 2 if($attack_2 > 0) { //Le joueur 2 a fait une percée WinStatAttack('Perce', 1, $user2); foreach($army2 as $key => $value) { $degats_2_castle += $liste_unit[$key]['Attaque'] * abs($value); } $pv_restant_1 = $castle_1_PV - $degats_2_castle; if($hard == 1 AND $user1_prot == 1) { $degats_2_castle = 0; $txt = "Percée de ".$user2." mais l\'utilisation d\'un Livre Satanique repousse les troupes."; $time = time(); } else { $txt = "Percée de ".$user2." : ".$degats_2_castle." dégâts sur le Château."; $time = time(); } mysql_query("INSERT INTO td_histo_game(id, game_id, time, content) VALUES('', '$game_id', '$time', '$txt') ")or die(mysql_error()); } else { WinStatAttack('Def', 1, $user1); //Le joueur 1 a protégé son château ! $pv_restant_1 = $castle_1_PV; } //Etape 5.2 : Attaque sur Chateau joueur 2 //Calcul des dégats de l'armée 1 if($attack_1 > 0) { //le joueur 1 a fait une Percée : WinStatAttack('Perce', 1, $user1); foreach($army1 as $key => $value) { $degats_1_castle += $liste_unit[$key]['Attaque'] * abs($value); } if($hard == 1 AND $user2_prot == 1) { $degats_1_castle = 0; $txt = "Percée de ".$user1." mais l\'utilisation d\'un Livre Satanique repousse les troupes."; $time = time(); } else { $txt = "Percée de ".$user1." : ".$degats_1_castle." dégâts sur le Château."; $time = time(); } mysql_query("INSERT INTO td_histo_game(id, game_id, time, content) VALUES('', '$game_id', '$time', '$txt') ")or die(mysql_error()); $pv_restant_2 = $castle_2_PV - $degats_1_castle; } else { WinStatAttack('Def', 1, $user2); //Le joueur 2 a protégé son château ! $pv_restant_2 = $castle_2_PV; } if($pv_restant_1 < $Max_PV_Castle_1 AND $pv_restant_1 < $castle_1_PV) { mysql_query("UPDATE td_bat SET PV = '".$pv_restant_1."' WHERE owner = '".$u1_id."' AND bat = 'Castle' ")or die(mysql_error()); } if($pv_restant_2 < $Max_PV_Castle_2 AND $pv_restant < $castle_2_PV ) { mysql_query("UPDATE td_bat SET PV = '".$pv_restant_2."' WHERE owner = '".$u2_id."' AND bat = 'Castle' ")or die(mysql_error()); } //Etape 5.3 : Vérifier si vainqeur //Egalité if($pv_restant_1 <= 0 AND $pv_restant_2 <= 0) { $vic = "egal"; mysql_query("UPDATE td_users SET vic_act = '1' WHERE uid = '".$u1_id."'")or die(mysql_error()); mysql_query("UPDATE td_users SET vic_act = '1' WHERE uid = '".$u2_id."'")or die(mysql_error()); mysql_query("UPDATE td_game SET fini = '1' WHERE id = '".$game_id."' ")or die(mysql_error()); } else { //Victoire normal if($pv_restant_1 <= 0) { $vic = 2; mysql_query("UPDATE td_users SET protectedAttaque = '0', vic_act = '2' WHERE uid = '".$u2_id."' ")or die(mysql_error()); mysql_query("UPDATE td_users SET protectedAttaque = '0', vic_act = '-1' WHERE uid = '".$u1_id."' ")or die(mysql_error()); mysql_query("UPDATE td_game SET fini = '1' WHERE id = '".$game_id."' ")or die(mysql_error()); } elseif($pv_restant_2 <= 0) { $vic = 1; mysql_query("UPDATE td_users SET protectedAttaque = '0',vic_act = '2' WHERE uid = '".$u1_id."' ")or die(mysql_error()); mysql_query("UPDATE td_users SET protectedAttaque = '0', vic_act = '-1' WHERE uid = '".$u2_id."' ")or die(mysql_error()); mysql_query("UPDATE td_game SET fini = '1' WHERE id = '".$game_id."' ")or die(mysql_error()); } else { } } //Etape 5.4 : MAJ des données if($vic != "egal" AND $vic != 1 AND $vic != 2) { //Etape 6 : Nouveau tour $turn = $game_data['tour']; //Etape 6.1 : Gain de ressources (Par tour + Income) + Gain d'unité kill $new_gold = $coeff_hard*giveTurnOr($turn); $new_water = $coeff_hard*giveTurnWater($turn); mysql_query("UPDATE td_users SET protectedAttaque = '0', ress_gold = ress_gold + '".$new_gold."' + '".$u1_income."' + '".$win_or_1."' , ress_water = ress_water + '".$new_water."' + '".$win_water_1."' WHERE uid = '".$u1_id."' ")or die(mysql_error()); mysql_query("UPDATE td_users SET protectedAttaque = '0', ress_gold = ress_gold + '".$new_gold."' + '".$u2_income."' + '".$win_or_2."' , ress_water = ress_water + '".$new_water."' + '".$win_water_2."' WHERE uid = '".$u2_id."' ")or die(mysql_error()); //Etape 6.2 : Nouveau recrutement d'unités $new_units = RecrutingDay($turn, $hard); foreach($new_units as $key => $value) { $verif_query = mysql_query("SELECT id FROM td_units WHERE name = '".$key."' AND owner = '".$user1."' ")or die(mysql_error()); $verif_nbr = mysql_num_rows($verif_query); if($verif_nbr == 0) { mysql_query("INSERT INTO td_units(id, name, owner, nbr) VALUES('', '$key', '$user1', '$value') ")or die(mysql_error()); } else { mysql_query("UPDATE td_units SET nbr = nbr + '".$value."' WHERE owner = '".$user1."' AND name = '".$key."' ")or die(mysql_error()); } } foreach($new_units as $key => $value) { $verif_query = mysql_query("SELECT id FROM td_units WHERE name = '".$key."' AND owner = '".$user2."' ")or die(mysql_error()); $verif_nbr = mysql_num_rows($verif_query); if($verif_nbr == 0) { mysql_query("INSERT INTO td_units(id, name, owner, nbr) VALUES('', '$key', '$user2', '$value') ")or die(mysql_error()); } else { mysql_query("UPDATE td_units SET nbr = nbr + '".$value."' WHERE owner = '".$user2."' AND name = '".$key."' ")or die(mysql_error()); } } //Etape 6.3 Update champ tour dans td_game mysql_query("UPDATE td_game SET tour = tour + '1' WHERE id = '".$game_id."' ")or die(mysql_error()); mysql_query("UPDATE td_users SET vote = '0', Assaut = '0', tireArchi = '0' WHERE pseudo = '".$user1."' ")or die(mysql_error()); mysql_query("UPDATE td_users SET vote = '0', Assaut = '0', tireArchi = '0' WHERE pseudo = '".$user2."' ")or die(mysql_error()); } //FIN ! ENFIN ! $txt = "Un nouveau jour se lève..."; $time = time(); mysql_query("INSERT INTO td_histo_game(id, game_id, time, content) VALUES('', '$game_id', '$time', '$txt') ")or die(mysql_error()); global $href; header('Location: index2.php?'.$href); }