Advertisement
Guest User

Untitled

a guest
Jun 28th, 2017
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 17.37 KB | None | 0 0
  1. function Attaque($game_id)
  2.     {
  3.         global $liste_unit;
  4.         global $liste_bat;
  5.    
  6.         //étapes de l'Attaques
  7.             //Recup data joueurs
  8.             //Récup All the Unit
  9.             //Calcul du dégats des tours
  10.             // Kill
  11.             //Attaque Château
  12.             //Changement tour
  13.        
  14.         //Etape 0 : Recup data de la partie
  15.         $game_query = mysql_query("SELECT * FROM td_game WHERE id = '".$game_id."' ")or die(mysql_error());
  16.         $game_data = mysql_fetch_assoc($game_query);
  17.         $hard = $game_data['hard'];
  18.             if($hard == 1)
  19.             {
  20.                 $coeff_hard = 3;
  21.             }
  22.             else
  23.             {
  24.                 $coeff_hard = 1;
  25.             }
  26.         //Etapes 1 : Récupérer les données des joueurs :
  27.         $joueurs_query = mysql_query("SELECT * FROM td_users WHERE game = '".$game_id."' ")or die(mysql_error());
  28.             while($data_user = mysql_fetch_assoc($joueurs_query))
  29.             {
  30.                 $i++;
  31.                 if($i == 1)
  32.                 {
  33.                     $user1 = $data_user['pseudo'];
  34.                     $u1_id = $data_user['id'];
  35.                     $u1_income = $data_user['income'];
  36.                     $user1_prot = $data_user['protectedAttaque'];
  37.                     $u1_clanid = $data_user['Clan_id'];
  38.                 }
  39.                 elseif($i == 2)
  40.                 {
  41.                     $user2 = $data_user['pseudo'];
  42.                     $u2_id = $data_user['id'];
  43.                     $u2_income = $data_user['income'];
  44.                     $user2_prot = $data_user['protectedAttaque'];
  45.                     $u2_clanid = $data_user['Clan_id'];
  46.                 }
  47.             }
  48.        
  49.         //Etape 2 : Récupérer les unités des joueurs
  50.             //Etape 2.1 : Unités du joueur 1
  51.             $unit_user1_query = mysql_query("SELECT * FROM td_units WHERE owner = '".$user1."' ")or die(mysql_error());
  52.             //Etape 2.2 : Unités du joueur 2
  53.             $unit_user2_query = mysql_query("SELECT * FROM td_units WHERE owner = '".$user2."' ")or die(mysql_error());
  54.            
  55.             //Etape 2.3 : Récupérer les Tours du Joueur 1
  56.             $tower_user1_query = mysql_query("SELECT * FROM td_bat WHERE owner = '".$u1_id."' ")or die(mysql_error());
  57.             //Etape 2.4 : Récupérer les Tours du Joueur 2
  58.             $tower_user2_query = mysql_query("SELECT * FROM td_bat WHERE owner = '".$u2_id."' ")or die(mysql_error());
  59.        
  60.         //Etape 3 : Calcul des Dégats des Tours sur les Unités
  61.             //Etape 3.1 : Dégats possible du joueur 1
  62.                 while($tower_user1_data = mysql_fetch_assoc($tower_user1_query))
  63.                 {
  64.                     if($tower_user1_data['bat'] == "Castle")
  65.                     {
  66.                       $castle_1_PV = $tower_user1_data['PV'];
  67.                       $Max_PV_Castle_1 = $liste_bat[$tower_user1_data['bat'].'_'.$tower_user1_data['lvl']]['PV'];
  68.                     }
  69.                    
  70.                     $degats_user1 += $liste_bat[$tower_user1_data['bat'].'_'.$tower_user1_data['lvl']]['Attaque'];
  71.                 }
  72.             //Etape 3.2 : Dégâts possible du joueur 2
  73.                 while($tower_user2_data = mysql_fetch_assoc($tower_user2_query))
  74.                 {
  75.                     if($tower_user2_data['bat'] == "Castle")
  76.                     {
  77.                       $castle_2_PV = $tower_user2_data['PV'];
  78.                       $Max_PV_Castle_2 = $liste_bat[$tower_user2_data['bat'].'_'.$tower_user2_data['lvl']]['PV'];
  79.                     }
  80.                     $degats_user2 += $liste_bat[$tower_user2_data['bat'].'_'.$tower_user2_data['lvl']]['Attaque'];
  81.                 }
  82.                    
  83.             //Etape 3.3 : Calcul des Dégats max subissables par les Unités du joueur 1
  84.                 while($unit_user1_data = mysql_fetch_assoc($unit_user1_query))
  85.                 {
  86.                     if($liste_unit[$unit_user1_data['name']]['Assaut'] == 0)
  87.                     {
  88.                     $max_PV_1 += $liste_unit[$unit_user1_data['name']]['PV'] * $unit_user1_data['nbr'];
  89.                    
  90.                     //MAx gain de ressources
  91.                     $max_or_1 += $liste_unit[$unit_user1_data['name']]['Give_gold']*$unit_user1_data['nbr'];
  92.                     $max_water_1 += $liste_unit[$unit_user1_data['name']]['Give_water']*$unit_user1_data['nbr'];
  93.                     }
  94.                 }
  95.             //Etape 3.4 : Calcul des Dégats max subissables par les Unités du joueur 2
  96.                 while($unit_user2_data = mysql_fetch_assoc($unit_user2_query))
  97.                 {
  98.                
  99.                     if($liste_unit[$unit_user2_data['name']]['Assaut'] == 0)
  100.                     {
  101.                     $max_PV_2 += $liste_unit[$unit_user2_data['name']]['PV'] * $unit_user2_data['nbr'];
  102.                    
  103.                     //Max gain de ressources
  104.                     $max_or_2 += $liste_unit[$unit_user2_data['name']]['Give_gold'] * $unit_user2_data['nbr'];
  105.                     $max_water_2 += $liste_unit[$unit_user2_data['name']]['Give_water'] * $unit_user2_data['nbr'];
  106.                     }
  107.                 }
  108.        
  109.             //Etape 4 : Calcul des Morts
  110.                 //Etape 4.1 : Calcul des Morts du J1
  111.                     if($degats_user2 >= $max_PV_1)
  112.                     {
  113.                         //Toutes les unités sont mortes !
  114.                         $attack_1 = 0;
  115.                        
  116.                         //Gain d'or et eau !
  117.                         $win_or_2 = $max_or_1;
  118.                         $win_water_2 = $max_water_1;
  119.                         $txt = "Attaque : ".$user2." a repoussé toutes les unités de ".$user1."";
  120.                         $time = time();
  121.            
  122.                         mysql_query("INSERT INTO td_histo_game(id, game_id, time, content) VALUES('', '$game_id', '$time', '$txt') ")or die(mysql_error());
  123.            
  124.                     }
  125.                     else
  126.                     {
  127.                     $attack_1 = 69;
  128.                         $army1 = array(); //Array de l'armée survivante du J1
  129.                         //Toutes les unités ne meurs pas.
  130.                         //Sélection des morts
  131.                         mysql_data_seek($unit_user1_query, 0);
  132.                             while($unit_user1_data = mysql_fetch_assoc($unit_user1_query))
  133.                             {
  134.                                 if($liste_unit[$unit_user1_data['name']]['Assaut'] == 0)
  135.                                 {
  136.                                     if($degats_user2 > 0)
  137.                                     {
  138.                                         $pv_vague = $liste_unit[$unit_user1_data['name']]['PV'] * $unit_user1_data['nbr'];
  139.                                         if($degats_user2 >= $pv_vague)
  140.                                         {
  141.                                             //Toutes unités de ce type sont morte !
  142.                                             //On ne les ajoute pas à l'armée
  143.                                             //On retire les dégats des dégats possibles
  144.                                             $degats_user2 = $degats_user2 - $pv_vague;
  145.                                            
  146.                                             //Cacul des gains d'or/d'eau
  147.                                             $win_or_2 += $liste_unit[$unit_user1_data['name']]['Give_gold'] * $unit_user1_data['nbr'];
  148.                                             $win_water_2 += $liste_unit[$unit_user1_data['name']]['Give_water'] * $unit_user1_data['nbr'];
  149.                                         }
  150.                                         else
  151.                                         {
  152.                                             //Toutes les unités ne meurs pas !
  153.                                                 //On calcul le nbr de mort
  154.                                                 $pv_survie = $pv_vague - $degats_user2;
  155.                                                 $nbr_morts = $unit_user1_data['nbr'] - (floor($pv_surie /  $unit_user1_data['nbr']));
  156.                                                 $nbr_survivants = $unit_user1_data['nbr'] - $nbr_morts;
  157.                                                
  158.                                                 /* $nbr_dégats = ($liste_unit[$unit_user1_data['name']]['PV'] * $unit_user1_data['nbr']) / $degats_user2;
  159.                                                 $nbr_morts = floor( ($liste_unit[$unit_user1_data['name']]['PV'] * $unit_user1_data['nbr'] - $nbr_degats) / $liste_unit[$unit_user1_data['name']]['PV'] );
  160.                                                 $nbr_survivants = $unit_user1_data['nbr'] - $nbr_morts; */
  161.                                                
  162.                                                 $army1[$unit_user1_data['name']] = $nbr_survivants;
  163.                                                 $nbr_soldiers1 += $nbr_survivants;
  164.                                             $degats_user2 = 0;
  165.                                            
  166.                                             //Calcul des gains d'or/d'eau
  167.                                             $win_or_2 += $nbr_morts * $liste_unit[$unit_user1_data['name']]['Give_gold'];
  168.                                             $win_water_2 += $nbr_morts * $liste_unit[$unit_user1_data['name']]['Give_water'];
  169.                                         }
  170.                                     }
  171.                                     else
  172.                                     {
  173.                                         //Toutes les unités passent !
  174.                                         $army1[$unit_user1_data['name']] = $unit_user1_data['nbr'];
  175.                                         $nbr_soldiers1 += $unit_user1_data['nbr'];
  176.                                         //Aucun gain d'or et d'eau
  177.                                     }
  178.                                 }
  179.                             }
  180.                            
  181.                         $txt = "Attaque : ".$nbr_soldiers1." Unités de ".$user1." attaquent le Château de ".$user2."";
  182.                         $time = time();
  183.            
  184.                         mysql_query("INSERT INTO td_histo_game(id, game_id, time, content) VALUES('', '$game_id', '$time', '$txt') ")or die(mysql_error());
  185.                    
  186.                     }
  187.                
  188.                 //Etape 4.2 : Calcul des Morts du J2
  189.                     if($degats_user1 >= $max_PV_2)
  190.                     {
  191.                         //Toutes les unités sont mortes !
  192.                         $attack_2 = 0;
  193.                        
  194.                         //Gain d'or et eau !
  195.                         $win_or_1 = $max_or_2;
  196.                         $win_water_1 = $max_water_2;
  197.                        
  198.                         $txt = "Attaque : ".$user1." a repoussé toutes les unités de ".$user2."";
  199.                         $time = time();
  200.            
  201.                         mysql_query("INSERT INTO td_histo_game(id, game_id, time, content) VALUES('', '$game_id', '$time', '$txt') ")or die(mysql_error());
  202.                
  203.                     }
  204.                     else
  205.                     {
  206.                     $attack_2 = 69;
  207.                         $army2 = array(); //Array de l'armée survivante du J2
  208.                         //Toutes les unités ne meurs pas.
  209.                         //Sélection des morts
  210.                         mysql_data_seek($unit_user2_query, 0);
  211.                             while($unit_user2_data = mysql_fetch_assoc($unit_user2_query))
  212.                             {
  213.                                 if($liste_unit[$unit_user2_data['name']]['Assaut'] == 0)
  214.                                 {
  215.                                     if($degats_user1 > 0)
  216.                                     {
  217.                                     $pv_vague = $liste_unit[$unit_user2_data['name']]['PV'] * $unit_user2_data['nbr'];
  218.                                         if($degats_user1 >= $pv_vague)
  219.                                         {
  220.                                             //Toutes unités de ce type sont morte !
  221.                                             //On ne les ajoute pas à l'armée
  222.                                             //On retire les dégats des dégats possibles
  223.                                             $degats_user1 -= $pv_vague;
  224.                                            
  225.                                             //Cacul des gains d'or/d'eau
  226.                                             $win_or_1 += $liste_unit[$unit_user2_data['name']]['Give_gold'] * $unit_user2_data['nbr'];
  227.                                             $win_water_1 += $liste_unit[$unit_user2_data['name']]['Give_water'] * $unit_user2_data['nbr'];
  228.                                        
  229.                                         }
  230.                                         else
  231.                                         {
  232.                                             //Toutes les unités ne meurs pas !
  233.                                                 //On calcul le nbr de mort
  234.                                                 $pv_survie = $pv_vague - $degats_user1;
  235.                                                 $nbr_morts = $unit_user2_data['nbr'] - (floor($pv_surie /  $unit_user2_data['nbr']));
  236.                                                 $nbr_survivants = $unit_user2_data['nbr'] - $nbr_morts;
  237.                                                 $nbr_soldiers2 += $nbr_survivants;
  238.                                                 /*
  239.                                                 $nbr_dégats = ($liste_unit[$unit_user2_data['name']]['PV'] * $unit_user2_data['nbr']) / $degats_user1;
  240.                                                 $nbr_morts = floor( ($liste_unit[$unit_user2_data['name']]['PV'] * $unit_user2_data['nbr'] - $nbr_degats) / $liste_unit[$unit_user2_data['name']]['PV'] );
  241.                                                 $nbr_survivants = $unit_user1_data['nbr'] - $nbr_morts; */
  242.                                                
  243.                                                 $army2[$unit_user2_data['name']] = $nbr_survivants;
  244.                                             $degats_user1 = 0;
  245.                                            
  246.                                             //Calcul des gains d'or/d'eau
  247.                                             $win_or_1 += $nbr_morts * $liste_unit[$unit_user2_data['name']]['Give_gold'];
  248.                                             $win_water_1 += $nbr_morts * $liste_unit[$unit_user2_data['name']]['Give_water'];
  249.                                         }
  250.                                     }
  251.                                     else
  252.                                     {
  253.                                         //Toutes les unités passent !
  254.                                         $army2[$unit_user2_data['name']] = $unit_user2_data['nbr'];
  255.                                         $nbr_soldiers2 += $unit_user2_data['nbr'];
  256.                                         //Aucun gain d'or et d'eau
  257.                                     }
  258.                             }
  259.                         }
  260.                        
  261.                         $txt = "Attaque : ".$nbr_soldiers2." Unités de ".$user2." attaquent le Château de ".$user1."";
  262.                         $time = time();
  263.            
  264.                         mysql_query("INSERT INTO td_histo_game(id, game_id, time, content) VALUES('', '$game_id', '$time', '$txt') ")or die(mysql_error());
  265.                    
  266.                     }
  267.            
  268.            
  269.             //Etape 5 Attaque sur les Châteaux
  270.                 //Etape 5.1 : Attaque sur Chateau joueur 1
  271.                     //Calcul des dégats de l'armée 2
  272.                 if($attack_2 > 0)
  273.                 {
  274.                     //Le joueur 2 a fait une percée
  275.                     WinStatAttack('Perce', 1, $user2);
  276.                    
  277.                     foreach($army2 as $key => $value)
  278.                     {
  279.                         $degats_2_castle += $liste_unit[$key]['Attaque'] * abs($value);
  280.                     }
  281.                     $pv_restant_1 = $castle_1_PV - $degats_2_castle;
  282.                    
  283.                     if($hard == 1 AND $user1_prot == 1)
  284.                     {
  285.                         $degats_2_castle = 0;
  286.                         $txt = "Percée de ".$user2." mais l\'utilisation d\'un Livre Satanique repousse les troupes.";
  287.                         $time = time();
  288.                        
  289.                     }
  290.                     else
  291.                     {
  292.                         $txt = "Percée de ".$user2." : ".$degats_2_castle." dégâts sur le Château.";
  293.                         $time = time();
  294.                     }
  295.                         mysql_query("INSERT INTO td_histo_game(id, game_id, time, content) VALUES('', '$game_id', '$time', '$txt') ")or die(mysql_error());
  296.                    
  297.                 }
  298.                 else
  299.                 {
  300.                     WinStatAttack('Def', 1, $user1); //Le joueur 1 a protégé son château !
  301.                     $pv_restant_1 = $castle_1_PV;
  302.                 }
  303.                
  304.                 //Etape 5.2 : Attaque sur Chateau joueur 2
  305.                     //Calcul des dégats de l'armée 1
  306.                 if($attack_1 > 0)
  307.                 {
  308.                     //le joueur 1 a fait une Percée :
  309.                     WinStatAttack('Perce', 1, $user1);
  310.                    
  311.                     foreach($army1 as $key => $value)
  312.                     {
  313.                         $degats_1_castle += $liste_unit[$key]['Attaque'] * abs($value);
  314.                     }  
  315.                     if($hard == 1 AND $user2_prot == 1)
  316.                     {
  317.                         $degats_1_castle = 0;
  318.                         $txt = "Percée de ".$user1." mais l\'utilisation d\'un Livre Satanique repousse les troupes.";
  319.                         $time = time();
  320.                        
  321.                     }
  322.                     else
  323.                     {
  324.                         $txt = "Percée de ".$user1." : ".$degats_1_castle." dégâts sur le Château.";
  325.                         $time = time();
  326.                     }
  327.                         mysql_query("INSERT INTO td_histo_game(id, game_id, time, content) VALUES('', '$game_id', '$time', '$txt') ")or die(mysql_error());
  328.                    
  329.                     $pv_restant_2 = $castle_2_PV - $degats_1_castle;
  330.                 }
  331.                 else
  332.                 {
  333.                     WinStatAttack('Def', 1, $user2); //Le joueur 2 a protégé son château !
  334.                    
  335.                     $pv_restant_2 = $castle_2_PV;
  336.                 }
  337.                     if($pv_restant_1 < $Max_PV_Castle_1 AND $pv_restant_1 < $castle_1_PV)
  338.                     {
  339.                     mysql_query("UPDATE td_bat SET PV = '".$pv_restant_1."' WHERE owner = '".$u1_id."' AND bat = 'Castle' ")or die(mysql_error());
  340.                     }
  341.                     if($pv_restant_2 < $Max_PV_Castle_2 AND $pv_restant < $castle_2_PV )
  342.                     {
  343.                     mysql_query("UPDATE td_bat SET PV = '".$pv_restant_2."' WHERE owner = '".$u2_id."' AND bat = 'Castle' ")or die(mysql_error());
  344.                     }
  345.                 //Etape 5.3 : Vérifier si vainqeur
  346.                     //Egalité
  347.                         if($pv_restant_1 <= 0 AND $pv_restant_2  <= 0)
  348.                         {
  349.                             $vic = "egal";
  350.                             mysql_query("UPDATE td_users SET vic_act = '1' WHERE uid = '".$u1_id."'")or die(mysql_error());
  351.                             mysql_query("UPDATE td_users SET vic_act = '1' WHERE uid = '".$u2_id."'")or die(mysql_error());
  352.                             mysql_query("UPDATE td_game SET fini = '1' WHERE id = '".$game_id."' ")or die(mysql_error());
  353.  
  354.                         }
  355.                         else
  356.                         {
  357.                             //Victoire normal
  358.                                 if($pv_restant_1 <= 0)
  359.                                 {
  360.                                     $vic = 2;
  361.                                     mysql_query("UPDATE td_users SET protectedAttaque = '0', vic_act = '2' WHERE uid = '".$u2_id."' ")or die(mysql_error());
  362.                                     mysql_query("UPDATE td_users SET protectedAttaque = '0', vic_act = '-1' WHERE uid = '".$u1_id."' ")or die(mysql_error());
  363.                                
  364.                                    
  365.                                     mysql_query("UPDATE td_game SET fini = '1' WHERE id = '".$game_id."' ")or die(mysql_error());
  366.                                 }
  367.                                 elseif($pv_restant_2 <= 0)
  368.                                 {
  369.                                        
  370.                                     $vic = 1;
  371.                                     mysql_query("UPDATE td_users SET protectedAttaque = '0',vic_act = '2' WHERE uid = '".$u1_id."' ")or die(mysql_error());
  372.                                     mysql_query("UPDATE td_users SET protectedAttaque = '0',  vic_act = '-1' WHERE uid = '".$u2_id."' ")or die(mysql_error());
  373.                                    
  374.                                    
  375.                                     mysql_query("UPDATE td_game SET fini = '1' WHERE id = '".$game_id."' ")or die(mysql_error());
  376.                                 }
  377.                                 else
  378.                                 {
  379.                                    
  380.                                 }
  381.                         }
  382.                
  383.                 //Etape 5.4 : MAJ des données
  384.                     if($vic != "egal" AND $vic != 1 AND $vic != 2)
  385.                     {
  386.                     //Etape 6 : Nouveau tour
  387.                     $turn = $game_data['tour'];
  388.                         //Etape 6.1 : Gain de ressources (Par tour + Income) + Gain d'unité kill
  389.                             $new_gold = $coeff_hard*giveTurnOr($turn);
  390.                             $new_water = $coeff_hard*giveTurnWater($turn);
  391.                             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());
  392.                             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());
  393.                         //Etape 6.2 : Nouveau recrutement d'unités
  394.                             $new_units = RecrutingDay($turn, $hard);
  395.                                 foreach($new_units as $key => $value)
  396.                                 {
  397.                                     $verif_query = mysql_query("SELECT id FROM td_units WHERE name = '".$key."' AND owner = '".$user1."' ")or die(mysql_error());
  398.                                     $verif_nbr = mysql_num_rows($verif_query);
  399.                                         if($verif_nbr == 0)
  400.                                         {
  401.                                             mysql_query("INSERT INTO td_units(id, name, owner, nbr) VALUES('', '$key', '$user1', '$value') ")or die(mysql_error());
  402.                                         }
  403.                                         else
  404.                                         {  
  405.                                             mysql_query("UPDATE td_units SET nbr = nbr + '".$value."' WHERE owner = '".$user1."' AND name = '".$key."' ")or die(mysql_error());
  406.                                         }
  407.                                 }
  408.                                
  409.                                 foreach($new_units as $key => $value)
  410.                                 {
  411.                                     $verif_query = mysql_query("SELECT id FROM td_units WHERE name = '".$key."' AND owner = '".$user2."' ")or die(mysql_error());
  412.                                     $verif_nbr = mysql_num_rows($verif_query);
  413.                                         if($verif_nbr == 0)
  414.                                         {
  415.                                             mysql_query("INSERT INTO td_units(id, name, owner, nbr) VALUES('', '$key', '$user2', '$value') ")or die(mysql_error());
  416.                                         }
  417.                                         else
  418.                                         {  
  419.                                             mysql_query("UPDATE td_units SET nbr = nbr + '".$value."' WHERE owner = '".$user2."' AND name = '".$key."' ")or die(mysql_error());
  420.                                         }
  421.                                 }
  422.                         //Etape 6.3 Update champ tour dans td_game
  423.                         mysql_query("UPDATE td_game SET tour = tour + '1' WHERE id = '".$game_id."' ")or die(mysql_error());
  424.                         mysql_query("UPDATE td_users SET vote = '0', Assaut = '0', tireArchi = '0' WHERE pseudo = '".$user1."' ")or die(mysql_error());
  425.                         mysql_query("UPDATE td_users SET vote = '0', Assaut = '0', tireArchi = '0' WHERE pseudo = '".$user2."' ")or die(mysql_error());
  426.                     }
  427.        
  428.             //FIN ! ENFIN !
  429.            
  430.                         $txt = "Un nouveau jour se lève...";
  431.                         $time = time();
  432.            
  433.                         mysql_query("INSERT INTO td_histo_game(id, game_id, time, content) VALUES('', '$game_id', '$time', '$txt') ")or die(mysql_error());
  434.                    
  435.             global $href;
  436.             header('Location: index2.php?'.$href);
  437.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement