PageRenderTime 53ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 1ms

/src/2.10.2/upload/includes/classes/class.FlyingFleetHandler.php

https://github.com/SantiHarry/XG-Proyect-v2.10.x
PHP | 2284 lines | 1976 code | 296 blank | 12 comment | 274 complexity | 6c07d6ba1b7b91b1ae72f1eb1191cebe MD5 | raw file

Large files files are truncated, but you can click here to view the full file

  1. <?php
  2. /**
  3. * @project XG Proyect
  4. * @version 2.10.x build 0000
  5. * @copyright Copyright (C) 2008 - 2012
  6. */
  7. if (!defined('INSIDE'))die(header("location:../../"));
  8. class FlyingFleetHandler
  9. {
  10. public static function calculateAKSSteal($attackFleets, $defenderPlanet, $ForSim = FALSE)
  11. {
  12. //Steal-Math by Slaver for 2Moons(http://www.titanspace.org) based on http://www.owiki.de/Beute
  13. global $pricelist, $db;
  14. $SortFleets = array();
  15. foreach ($attackFleets as $FleetID => $Attacker)
  16. {
  17. foreach($Attacker['detail'] as $Element => $amount)
  18. {
  19. if ($Element != 210) //fix probos capacity in attack by jstar
  20. $SortFleets[$FleetID] += $pricelist[$Element]['capacity'] * $amount;
  21. }
  22. $SortFleets[$FleetID] -= $Attacker['fleet']['fleet_resource_metal'] - $Attacker['fleet']['fleet_resource_crystal'] - $Attacker['fleet']['fleet_resource_deuterium'];
  23. }
  24. $Sumcapacity = array_sum($SortFleets);
  25. //FIX JTSAMPER
  26. $booty['deuterium'] = min($Sumcapacity / 3, ($defenderPlanet['deuterium'] / 2));
  27. $Sumcapacity -= $booty['deuterium'];
  28. $booty['crystal'] = min(($Sumcapacity / 2), ($defenderPlanet['crystal'] / 2));
  29. $Sumcapacity -= $booty['crystal'];
  30. $booty['metal'] = min(($Sumcapacity ), ($defenderPlanet['metal'] / 2));
  31. $Sumcapacity -= $booty['metal'];
  32. $oldMetalBooty = $booty['crystal'] ;
  33. $booty['crystal'] += min(($Sumcapacity /2 ), max((($defenderPlanet['crystal']) / 2) - $booty['crystal'], 0));
  34. $Sumcapacity += $oldMetalBooty - $booty['crystal'] ;
  35. $booty['metal'] += min(($Sumcapacity ), max(($defenderPlanet['metal'] / 2) - $booty['metal'], 0));
  36. $booty['metal'] = max($booty['metal'] ,0);
  37. $booty['crystal'] = max($booty['crystal'] ,0);
  38. $booty['deuterium'] = max($booty['deuterium'] ,0);
  39. //END FIX
  40. $steal = array_map('floor', $booty);
  41. if($ForSim)
  42. return $steal;
  43. $AllCapacity = array_sum($SortFleets);
  44. $QryUpdateFleet = "";
  45. if ( $AllCapacity != 0 )
  46. {
  47. foreach($SortFleets as $FleetID => $Capacity)
  48. {
  49. $QryUpdateFleet = 'UPDATE {{table}} SET ';
  50. $QryUpdateFleet .= '`fleet_resource_metal` = `fleet_resource_metal` + '.Format::float_to_string($steal['metal'] * ($Capacity / $AllCapacity)).', ';
  51. $QryUpdateFleet .= '`fleet_resource_crystal` = `fleet_resource_crystal` +'.Format::float_to_string($steal['crystal'] * ($Capacity / $AllCapacity)).', ';
  52. $QryUpdateFleet .= '`fleet_resource_deuterium` = `fleet_resource_deuterium` +'.Format::float_to_string($steal['deuterium'] * ($Capacity / $AllCapacity)).' ';
  53. $QryUpdateFleet .= 'WHERE fleet_id = '.$FleetID.' ';
  54. $QryUpdateFleet .= 'LIMIT 1;';
  55. doquery($QryUpdateFleet, 'fleets');
  56. }
  57. }
  58. else
  59. {
  60. $steal = 0;
  61. }
  62. return $steal;
  63. }
  64. private function SpyTarget ($TargetPlanet, $Mode, $TitleString)
  65. {
  66. global $lang, $resource;
  67. $LookAtLoop = TRUE;
  68. if ($Mode == 0)
  69. {
  70. $String = "<table width=\"440\"><tr><td class=\"c\" colspan=\"5\">";
  71. $String .= $TitleString ." ". $TargetPlanet['name'];
  72. $String .= " <a href=\"game.php?page=galaxy&mode=3&galaxy=". $TargetPlanet["galaxy"] ."&system=". $TargetPlanet["system"]. "\">";
  73. $String .= "[". $TargetPlanet["galaxy"] .":". $TargetPlanet["system"] .":". $TargetPlanet["planet"] ."]</a>";
  74. $String .= $lang['sys_the'] . date("d-m-Y H:i:s", time()) ."</td>";
  75. $String .= "</tr><tr>";
  76. $String .= "<td width=220>". $lang['Metal'] ."</td><td width=220 align=right>". Format::pretty_number($TargetPlanet['metal']) ."</td><td>&nbsp;</td>";
  77. $String .= "<td width=220>". $lang['Crystal'] ."</td></td><td width=220 align=right>". Format::pretty_number($TargetPlanet['crystal']) ."</td>";
  78. $String .= "</tr><tr>";
  79. $String .= "<td width=220>". $lang['Deuterium'] ."</td><td width=220 align=right>". Format::pretty_number($TargetPlanet['deuterium']) ."</td><td>&nbsp;</td>";
  80. $String .= "<td width=220>". $lang['Energy'] ."</td><td width=220 align=right>". Format::pretty_number($TargetPlanet['energy_max']) ."</td>";
  81. $String .= "</tr>";
  82. $LookAtLoop = FALSE;
  83. }
  84. elseif ($Mode == 1)
  85. {
  86. $ResFrom[0] = 200;
  87. $ResTo[0] = 299;
  88. $Loops = 1;
  89. }
  90. elseif ($Mode == 2)
  91. {
  92. $ResFrom[0] = 400;
  93. $ResTo[0] = 499;
  94. $ResFrom[1] = 500;
  95. $ResTo[1] = 599;
  96. $Loops = 2;
  97. }
  98. elseif ($Mode == 3)
  99. {
  100. $ResFrom[0] = 1;
  101. $ResTo[0] = 99;
  102. $Loops = 1;
  103. }
  104. elseif ($Mode == 4)
  105. {
  106. $ResFrom[0] = 100;
  107. $ResTo[0] = 199;
  108. $Loops = 1;
  109. }
  110. if ($LookAtLoop == TRUE)
  111. {
  112. $String = "<table width=\"440\" cellspacing=\"1\"><tr><td class=\"c\" colspan=\"". ((2 * SPY_REPORT_ROW) + (SPY_REPORT_ROW - 1))."\">". $TitleString ."</td></tr>";
  113. $Count = 0;
  114. $CurrentLook = 0;
  115. while ($CurrentLook < $Loops)
  116. {
  117. $row = 0;
  118. for ($Item = $ResFrom[$CurrentLook]; $Item <= $ResTo[$CurrentLook]; $Item++)
  119. {
  120. if ( $TargetPlanet[$resource[$Item]] > 0)
  121. {
  122. if ($row == 0)
  123. $String .= "<tr>";
  124. $String .= "<td align=left>".$lang['tech'][$Item]."</td><td align=right>".$TargetPlanet[$resource[$Item]]."</td>";
  125. if ($row < SPY_REPORT_ROW - 1)
  126. $String .= "<td>&nbsp;</td>";
  127. $Count += $TargetPlanet[$resource[$Item]];
  128. $row++;
  129. if ($row == SPY_REPORT_ROW)
  130. {
  131. $String .= "</tr>";
  132. $row = 0;
  133. }
  134. }
  135. }
  136. while ($row != 0)
  137. {
  138. $String .= "<td>&nbsp;</td><td>&nbsp;</td>";
  139. $row++;
  140. if ($row == SPY_REPORT_ROW)
  141. {
  142. $String .= "</tr>";
  143. $row = 0;
  144. }
  145. }
  146. $CurrentLook++;
  147. }
  148. }
  149. $String .= "</table>";
  150. $return['String'] = $String;
  151. $return['Count'] = $Count;
  152. return $return;
  153. }
  154. private function walka ($CurrentSet, $TargetSet, $CurrentTechno, $TargetTechno)
  155. {
  156. global $pricelist, $CombatCaps, $user;
  157. $runda = array();
  158. $atakujacy_n = array();
  159. $wrog_n = array();
  160. if (!is_null($CurrentSet))
  161. {
  162. $atakujacy_zlom_poczatek['metal'] = 0;
  163. $atakujacy_zlom_poczatek['crystal'] = 0;
  164. foreach($CurrentSet as $a => $b)
  165. {
  166. $atakujacy_zlom_poczatek['metal'] = $atakujacy_zlom_poczatek['metal'] + $CurrentSet[$a]['count'] * $pricelist[$a]['metal'];
  167. $atakujacy_zlom_poczatek['crystal'] = $atakujacy_zlom_poczatek['crystal'] + $CurrentSet[$a]['count'] * $pricelist[$a]['crystal'];
  168. }
  169. }
  170. $wrog_zlom_poczatek['metal'] = 0;
  171. $wrog_zlom_poczatek['crystal'] = 0;
  172. $wrog_poczatek = $TargetSet;
  173. if (!is_null($TargetSet))
  174. {
  175. foreach($TargetSet as $a => $b)
  176. {
  177. if ($a < 300)
  178. {
  179. $wrog_zlom_poczatek['metal'] = $wrog_zlom_poczatek['metal'] + $TargetSet[$a]['count'] * $pricelist[$a]['metal'];
  180. $wrog_zlom_poczatek['crystal'] = $wrog_zlom_poczatek['crystal'] + $TargetSet[$a]['count'] * $pricelist[$a]['crystal'];
  181. }
  182. else
  183. {
  184. $wrog_zlom_poczatek_obrona['metal'] = $wrog_zlom_poczatek_obrona['metal'] + $TargetSet[$a]['count'] * $pricelist[$a]['metal'];
  185. $wrog_zlom_poczatek_obrona['crystal'] = $wrog_zlom_poczatek_obrona['crystal'] + $TargetSet[$a]['count'] * $pricelist[$a]['crystal'];
  186. }
  187. }
  188. }
  189. for ($i = 1; $i <= 7; $i++)
  190. {
  191. $atakujacy_atak = 0;
  192. $wrog_atak = 0;
  193. $atakujacy_obrona = 0;
  194. $wrog_obrona = 0;
  195. $atakujacy_ilosc = 0;
  196. $wrog_ilosc = 0;
  197. $wrog_tarcza = 0;
  198. $atakujacy_tarcza = 0;
  199. if (!is_null($CurrentSet))
  200. {
  201. foreach($CurrentSet as $a => $b)
  202. {
  203. $CurrentSet[$a]["obrona"] = $CurrentSet[$a]['count'] * ($pricelist[$a]['metal'] + $pricelist[$a]['crystal']) / 10 * (1 + (0.1 * ($CurrentTechno["defence_tech"])));
  204. $rand = rand(80, 120) / 100;
  205. $CurrentSet[$a]["tarcza"] = $CurrentSet[$a]['count'] * $CombatCaps[$a]['shield'] * (1 + (0.1 * $CurrentTechno["shield_tech"])) * $rand;
  206. $atak_statku = $CombatCaps[$a]['attack'];
  207. $technologie = (1 + (0.1 * $CurrentTechno["military_tech"]));
  208. $rand = rand(80, 120) / 100;
  209. $ilosc = $CurrentSet[$a]['count'];
  210. $CurrentSet[$a]["atak"] = $ilosc * $atak_statku * $technologie * $rand;
  211. $atakujacy_atak = $atakujacy_atak + $CurrentSet[$a]["atak"];
  212. $atakujacy_obrona = $atakujacy_obrona + $CurrentSet[$a]["obrona"];
  213. $atakujacy_ilosc = $atakujacy_ilosc + $CurrentSet[$a]['count'];
  214. }
  215. }
  216. else
  217. {
  218. $atakujacy_ilosc = 0;
  219. break;
  220. }
  221. if (!is_null($TargetSet))
  222. {
  223. foreach($TargetSet as $a => $b)
  224. {
  225. $TargetSet[$a]["obrona"] = $TargetSet[$a]['count'] * ($pricelist[$a]['metal'] + $pricelist[$a]['crystal']) / 10 * (1 + (0.1 * ($TargetTechno["defence_tech"])));
  226. $rand = rand(80, 120) / 100;
  227. $TargetSet[$a]["tarcza"] = $TargetSet[$a]['count'] * $CombatCaps[$a]['shield'] * (1 + (0.1 * $TargetTechno["shield_tech"])) * $rand;
  228. $atak_statku = $CombatCaps[$a]['attack'];
  229. $technologie = (1 + (0.1 * $TargetTechno["military_tech"]));
  230. $rand = rand(80, 120) / 100;
  231. $ilosc = $TargetSet[$a]['count'];
  232. $TargetSet[$a]["atak"] = $ilosc * $atak_statku * $technologie * $rand;
  233. $wrog_atak = $wrog_atak + $TargetSet[$a]["atak"];
  234. $wrog_obrona = $wrog_obrona + $TargetSet[$a]["obrona"];
  235. $wrog_ilosc = $wrog_ilosc + $TargetSet[$a]['count'];
  236. }
  237. }
  238. else
  239. {
  240. $wrog_ilosc = 0;
  241. $runda[$i]["atakujacy"] = $CurrentSet;
  242. $runda[$i]["wrog"] = $TargetSet;
  243. $runda[$i]["atakujacy"]["atak"] = $atakujacy_atak;
  244. $runda[$i]["wrog"]["atak"] = $wrog_atak;
  245. $runda[$i]["atakujacy"]['count'] = $atakujacy_ilosc;
  246. $runda[$i]["wrog"]['count'] = $wrog_ilosc;
  247. break;
  248. }
  249. $runda[$i]["atakujacy"] = $CurrentSet;
  250. $runda[$i]["wrog"] = $TargetSet;
  251. $runda[$i]["atakujacy"]["atak"] = $atakujacy_atak;
  252. $runda[$i]["wrog"]["atak"] = $wrog_atak;
  253. $runda[$i]["atakujacy"]['count'] = $atakujacy_ilosc;
  254. $runda[$i]["wrog"]['count'] = $wrog_ilosc;
  255. if (($atakujacy_ilosc == 0) or ($wrog_ilosc == 0))
  256. break;
  257. foreach($CurrentSet as $a => $b)
  258. {
  259. if ($atakujacy_ilosc > 0)
  260. {
  261. $wrog_moc = $CurrentSet[$a]['count'] * $wrog_atak / $atakujacy_ilosc;
  262. if ($CurrentSet[$a]["tarcza"] < $wrog_moc)
  263. {
  264. $max_zdjac = floor($CurrentSet[$a]['count'] * $wrog_ilosc / $atakujacy_ilosc);
  265. $wrog_moc = $wrog_moc - $CurrentSet[$a]["tarcza"];
  266. $atakujacy_tarcza = $atakujacy_tarcza + $CurrentSet[$a]["tarcza"];
  267. $ile_zdjac = floor(($wrog_moc / (($pricelist[$a]['metal'] + $pricelist[$a]['crystal']) / 10)));
  268. if ($ile_zdjac > $max_zdjac)
  269. $ile_zdjac = $max_zdjac;
  270. $atakujacy_n[$a]['count'] = ceil($CurrentSet[$a]['count'] - $ile_zdjac);
  271. if ($atakujacy_n[$a]['count'] <= 0)
  272. $atakujacy_n[$a]['count'] = 0;
  273. }
  274. else
  275. {
  276. $atakujacy_n[$a]['count'] = $CurrentSet[$a]['count'];
  277. $atakujacy_tarcza = $atakujacy_tarcza + $wrog_moc;
  278. }
  279. }
  280. else
  281. {
  282. $atakujacy_n[$a]['count'] = $CurrentSet[$a]['count'];
  283. $atakujacy_tarcza = $atakujacy_tarcza + $wrog_moc;
  284. }
  285. }
  286. foreach($TargetSet as $a => $b)
  287. {
  288. if ($wrog_ilosc > 0)
  289. {
  290. $atakujacy_moc = $TargetSet[$a]['count'] * $atakujacy_atak / $wrog_ilosc;
  291. if ($TargetSet[$a]["tarcza"] < $atakujacy_moc)
  292. {
  293. $max_zdjac = floor($TargetSet[$a]['count'] * $atakujacy_ilosc / $wrog_ilosc);
  294. $atakujacy_moc = $atakujacy_moc - $TargetSet[$a]["tarcza"];
  295. $wrog_tarcza = $wrog_tarcza + $TargetSet[$a]["tarcza"];
  296. $ile_zdjac = floor(($atakujacy_moc / (($pricelist[$a]['metal'] + $pricelist[$a]['crystal']) / 10)));
  297. if ($ile_zdjac > $max_zdjac)
  298. $ile_zdjac = $max_zdjac;
  299. $wrog_n[$a]['count'] = ceil($TargetSet[$a]['count'] - $ile_zdjac);
  300. if ($wrog_n[$a]['count'] <= 0)
  301. $wrog_n[$a]['count'] = 0;
  302. }
  303. else
  304. {
  305. $wrog_n[$a]['count'] = $TargetSet[$a]['count'];
  306. $wrog_tarcza = $wrog_tarcza + $atakujacy_moc;
  307. }
  308. }
  309. else
  310. {
  311. $wrog_n[$a]['count'] = $TargetSet[$a]['count'];
  312. $wrog_tarcza = $wrog_tarcza + $atakujacy_moc;
  313. }
  314. }
  315. foreach($CurrentSet as $a => $b)
  316. {
  317. foreach ($CombatCaps[$a]['sd'] as $c => $d)
  318. {
  319. if (isset($TargetSet[$c]))
  320. {
  321. $wrog_n[$c]['count'] = $wrog_n[$c]['count'] - floor($d * rand(50, 100) / 100);
  322. if ($wrog_n[$c]['count'] <= 0)
  323. $wrog_n[$c]['count'] = 0;
  324. }
  325. }
  326. }
  327. foreach($TargetSet as $a => $b)
  328. {
  329. foreach ($CombatCaps[$a]['sd'] as $c => $d)
  330. {
  331. if (isset($CurrentSet[$c]))
  332. {
  333. $atakujacy_n[$c]['count'] = $atakujacy_n[$c]['count'] - floor($d * rand(50, 100) / 100);
  334. if ($atakujacy_n[$c]['count'] <= 0)
  335. $atakujacy_n[$c]['count'] = 0;
  336. }
  337. }
  338. }
  339. $runda[$i]["atakujacy"]["tarcza"] = $atakujacy_tarcza;
  340. $runda[$i]["wrog"]["tarcza"] = $wrog_tarcza;
  341. $TargetSet = $wrog_n;
  342. $CurrentSet = $atakujacy_n;
  343. }
  344. if (($atakujacy_ilosc == 0) or ($wrog_ilosc == 0))
  345. {
  346. if (($atakujacy_ilosc == 0) and ($wrog_ilosc == 0))
  347. $wygrana = "r";
  348. else
  349. if ($atakujacy_ilosc == 0)
  350. $wygrana = "w";
  351. else
  352. $wygrana = "a";
  353. }
  354. else
  355. {
  356. $i = sizeof($runda);
  357. $runda[$i]["atakujacy"] = $CurrentSet;
  358. $runda[$i]["wrog"] = $TargetSet;
  359. $runda[$i]["atakujacy"]["atak"] = $atakujacy_atak;
  360. $runda[$i]["wrog"]["atak"] = $wrog_atak;
  361. $runda[$i]["atakujacy"]['count'] = $atakujacy_ilosc;
  362. $runda[$i]["wrog"]['count'] = $wrog_ilosc;
  363. $wygrana = "r";
  364. }
  365. $atakujacy_zlom_koniec['metal'] = 0;
  366. $atakujacy_zlom_koniec['crystal'] = 0;
  367. if (!is_null($CurrentSet))
  368. {
  369. foreach($CurrentSet as $a => $b)
  370. {
  371. $atakujacy_zlom_koniec['metal'] = $atakujacy_zlom_koniec['metal'] + $CurrentSet[$a]['count'] * $pricelist[$a]['metal'];
  372. $atakujacy_zlom_koniec['crystal'] = $atakujacy_zlom_koniec['crystal'] + $CurrentSet[$a]['count'] * $pricelist[$a]['crystal'];
  373. }
  374. }
  375. $wrog_zlom_koniec['metal'] = 0;
  376. $wrog_zlom_koniec['crystal'] = 0;
  377. if (!is_null($TargetSet))
  378. {
  379. foreach($TargetSet as $a => $b)
  380. {
  381. if ($a < 300)
  382. {
  383. $wrog_zlom_koniec['metal'] = $wrog_zlom_koniec['metal'] + $TargetSet[$a]['count'] * $pricelist[$a]['metal'];
  384. $wrog_zlom_koniec['crystal'] = $wrog_zlom_koniec['crystal'] + $TargetSet[$a]['count'] * $pricelist[$a]['crystal'];
  385. }
  386. else
  387. {
  388. $wrog_zlom_koniec_obrona['metal'] = $wrog_zlom_koniec_obrona['metal'] + $TargetSet[$a]['count'] * $pricelist[$a]['metal'];
  389. $wrog_zlom_koniec_obrona['crystal'] = $wrog_zlom_koniec_obrona['crystal'] + $TargetSet[$a]['count'] * $pricelist[$a]['crystal'];
  390. }
  391. }
  392. }
  393. $ilosc_wrog = 0;
  394. $straty_obrona_wrog = 0;
  395. if (!is_null($TargetSet))
  396. {
  397. foreach($TargetSet as $a => $b)
  398. {
  399. if ($a > 300)
  400. {
  401. $straty_obrona_wrog = $straty_obrona_wrog + (($wrog_poczatek[$a]['count'] - $TargetSet[$a]['count']) * ($pricelist[$a]['metal'] + $pricelist[$a]['crystal']));
  402. $TargetSet[$a]['count'] = $TargetSet[$a]['count'] + (($wrog_poczatek[$a]['count'] - $TargetSet[$a]['count']) * rand(60, 80) / 100);
  403. $ilosc_wrog = $ilosc_wrog + $TargetSet[$a]['count'];
  404. }
  405. }
  406. }
  407. if (($ilosc_wrog > 0) && ($atakujacy_ilosc == 0))
  408. $wygrana = "w";
  409. $game_fleet_cdr = read_config ( 'fleet_cdr' );
  410. $game_def_cdr = read_config ( 'defs_cdr' );
  411. $zlom['metal'] = ((($atakujacy_zlom_poczatek['metal'] - $atakujacy_zlom_koniec['metal']) + ($wrog_zlom_poczatek['metal'] - $wrog_zlom_koniec['metal'])) * ($game_fleet_cdr / 100));
  412. $zlom['crystal'] = ((($atakujacy_zlom_poczatek['crystal'] - $atakujacy_zlom_koniec['crystal']) + ($wrog_zlom_poczatek['crystal'] - $wrog_zlom_koniec['crystal'])) * ($game_fleet_cdr / 100));
  413. $zlom['metal'] += ((($atakujacy_zlom_poczatek['metal'] - $atakujacy_zlom_koniec['metal']) + ($wrog_zlom_poczatek['metal'] - $wrog_zlom_koniec['metal'])) * ($game_def_cdr / 100));
  414. $zlom['crystal'] += ((($atakujacy_zlom_poczatek['crystal'] - $atakujacy_zlom_koniec['crystal']) + ($wrog_zlom_poczatek['crystal'] - $wrog_zlom_koniec['crystal'])) * ($game_def_cdr / 100));
  415. $zlom["atakujacy"] = (($atakujacy_zlom_poczatek['metal'] - $atakujacy_zlom_koniec['metal']) + ($atakujacy_zlom_poczatek['crystal'] - $atakujacy_zlom_koniec['crystal']));
  416. $zlom["wrog"] = (($wrog_zlom_poczatek['metal'] - $wrog_zlom_koniec['metal']) + ($wrog_zlom_poczatek['crystal'] - $wrog_zlom_koniec['crystal']) + $straty_obrona_wrog);
  417. return array("atakujacy" => $CurrentSet, "wrog" => $TargetSet, "wygrana" => $wygrana, "dane_do_rw" => $runda, "zlom" => $zlom);
  418. }
  419. private function RestoreFleetToPlanet ($FleetRow, $Start = TRUE)
  420. {
  421. global $resource;
  422. //fix resource by jstar
  423. $targetPlanet = doquery("SELECT * FROM {{table}} WHERE `galaxy` = ". intval($FleetRow['fleet_start_galaxy']) ." AND `system` = ". intval($FleetRow['fleet_start_system']) ." AND `planet_type` = ". intval($FleetRow['fleet_start_type']) ." AND `planet` = ". intval($FleetRow['fleet_start_planet']) .";",'planets', TRUE);
  424. $targetUser = doquery('SELECT * FROM {{table}} WHERE id='.intval($targetPlanet['id_owner']),'users', TRUE);
  425. PlanetResourceUpdate ( $targetUser, $targetPlanet, time() );
  426. //
  427. $FleetRecord = explode(";", $FleetRow['fleet_array']);
  428. $QryUpdFleet = "";
  429. foreach ($FleetRecord as $Item => $Group)
  430. {
  431. if ($Group != '')
  432. {
  433. $Class = explode (",", $Group);
  434. $QryUpdFleet .= "`". $resource[$Class[0]] ."` = `".$resource[$Class[0]]."` + '".$Class[1]."', \n";
  435. }
  436. }
  437. $QryUpdatePlanet = "UPDATE {{table}} SET ";
  438. if ($QryUpdFleet != "")
  439. $QryUpdatePlanet .= $QryUpdFleet;
  440. $QryUpdatePlanet .= "`metal` = `metal` + '". $FleetRow['fleet_resource_metal'] ."', ";
  441. $QryUpdatePlanet .= "`crystal` = `crystal` + '". $FleetRow['fleet_resource_crystal'] ."', ";
  442. $QryUpdatePlanet .= "`deuterium` = `deuterium` + '". $FleetRow['fleet_resource_deuterium'] ."' ";
  443. $QryUpdatePlanet .= "WHERE ";
  444. if ($Start == TRUE)
  445. {
  446. $QryUpdatePlanet .= "`galaxy` = '". $FleetRow['fleet_start_galaxy'] ."' AND ";
  447. $QryUpdatePlanet .= "`system` = '". $FleetRow['fleet_start_system'] ."' AND ";
  448. $QryUpdatePlanet .= "`planet` = '". $FleetRow['fleet_start_planet'] ."' AND ";
  449. $QryUpdatePlanet .= "`planet_type` = '". $FleetRow['fleet_start_type'] ."' ";
  450. }
  451. else
  452. {
  453. $QryUpdatePlanet .= "`galaxy` = '". $FleetRow['fleet_end_galaxy'] ."' AND ";
  454. $QryUpdatePlanet .= "`system` = '". $FleetRow['fleet_end_system'] ."' AND ";
  455. $QryUpdatePlanet .= "`planet` = '". $FleetRow['fleet_end_planet'] ."' AND ";
  456. $QryUpdatePlanet .= "`planet_type` = '". $FleetRow['fleet_end_type'] ."' ";
  457. }
  458. $QryUpdatePlanet .= "LIMIT 1;";
  459. doquery( $QryUpdatePlanet, 'planets');
  460. }
  461. private function StoreGoodsToPlanet ($FleetRow, $Start = FALSE)
  462. {
  463. //fix resource by jstar
  464. $targetPlanet = doquery("SELECT * FROM {{table}} WHERE `galaxy` = ". intval($FleetRow['fleet_start_galaxy']) ." AND `system` = ". intval($FleetRow['fleet_start_system']) ." AND `planet_type` = ". intval($FleetRow['fleet_start_type']) ." AND `planet` = ". intval($FleetRow['fleet_start_planet']) .";",'planets', TRUE);
  465. $targetUser = doquery('SELECT * FROM {{table}} WHERE id='.intval($targetPlanet['id_owner']),'users', TRUE);
  466. PlanetResourceUpdate ( $targetUser, $targetPlanet, time() );
  467. //
  468. $QryUpdatePlanet = "UPDATE {{table}} SET ";
  469. $QryUpdatePlanet .= "`metal` = `metal` + '". $FleetRow['fleet_resource_metal'] ."', ";
  470. $QryUpdatePlanet .= "`crystal` = `crystal` + '". $FleetRow['fleet_resource_crystal'] ."', ";
  471. $QryUpdatePlanet .= "`deuterium` = `deuterium` + '". $FleetRow['fleet_resource_deuterium'] ."' ";
  472. $QryUpdatePlanet .= "WHERE ";
  473. if ($Start == TRUE)
  474. {
  475. $QryUpdatePlanet .= "`galaxy` = '". $FleetRow['fleet_start_galaxy'] ."' AND ";
  476. $QryUpdatePlanet .= "`system` = '". $FleetRow['fleet_start_system'] ."' AND ";
  477. $QryUpdatePlanet .= "`planet` = '". $FleetRow['fleet_start_planet'] ."' AND ";
  478. $QryUpdatePlanet .= "`planet_type` = '". $FleetRow['fleet_start_type'] ."' ";
  479. }
  480. else
  481. {
  482. $QryUpdatePlanet .= "`galaxy` = '". $FleetRow['fleet_end_galaxy'] ."' AND ";
  483. $QryUpdatePlanet .= "`system` = '". $FleetRow['fleet_end_system'] ."' AND ";
  484. $QryUpdatePlanet .= "`planet` = '". $FleetRow['fleet_end_planet'] ."' AND ";
  485. $QryUpdatePlanet .= "`planet_type` = '". $FleetRow['fleet_end_type'] ."' ";
  486. }
  487. $QryUpdatePlanet .= "LIMIT 1;";
  488. doquery( $QryUpdatePlanet, 'planets');
  489. }
  490. private function MissionCaseAttack ($FleetRow)
  491. {
  492. global $pricelist, $lang, $resource, $CombatCaps, $user;
  493. if ($FleetRow['fleet_mess'] == 0 && $FleetRow['fleet_start_time'] <= time())
  494. {
  495. $targetPlanet = doquery("SELECT * FROM {{table}} WHERE `galaxy` = ". intval($FleetRow['fleet_end_galaxy']) ." AND `system` = ". intval($FleetRow['fleet_end_system']) ." AND `planet_type` = ". intval($FleetRow['fleet_end_type']) ." AND `planet` = ". intval($FleetRow['fleet_end_planet']) .";",'planets', TRUE);
  496. if ($FleetRow['fleet_group'] > 0)
  497. {
  498. doquery("DELETE FROM {{table}} WHERE id =".intval($FleetRow['fleet_group']),'aks');
  499. doquery("UPDATE {{table}} SET fleet_mess=1 WHERE fleet_group=".$FleetRow['fleet_group'],'fleets');
  500. }
  501. else
  502. {
  503. doquery("UPDATE {{table}} SET fleet_mess=1 WHERE fleet_id=".intval($FleetRow['fleet_id']),'fleets');
  504. }
  505. $targetGalaxy = doquery('SELECT * FROM {{table}} WHERE `galaxy` = '. intval($FleetRow['fleet_end_galaxy']) .' AND `system` = '. intval($FleetRow['fleet_end_system']) .' AND `planet` = '. intval($FleetRow['fleet_end_planet']) .';','galaxy', TRUE);
  506. $targetUser = doquery('SELECT * FROM {{table}} WHERE id='.intval($targetPlanet['id_owner']),'users', TRUE);
  507. PlanetResourceUpdate ( $targetUser, $targetPlanet, time() );
  508. $targetGalaxy = doquery('SELECT * FROM {{table}} WHERE `galaxy` = '. intval($FleetRow['fleet_end_galaxy']) .' AND `system` = '. intval($FleetRow['fleet_end_system']) .' AND `planet` = '. intval($FleetRow['fleet_end_planet']) .';','galaxy', TRUE);
  509. $targetUser = doquery('SELECT * FROM {{table}} WHERE id='.intval($targetPlanet['id_owner']),'users', TRUE);
  510. $TargetUserID = $targetUser['id'];
  511. $attackFleets = array();
  512. if ($FleetRow['fleet_group'] != 0)
  513. {
  514. $fleets = doquery('SELECT * FROM {{table}} WHERE fleet_group='.$FleetRow['fleet_group'],'fleets');
  515. while ($fleet = mysql_fetch_assoc($fleets))
  516. {
  517. $attackFleets[$fleet['fleet_id']]['fleet'] = $fleet;
  518. $attackFleets[$fleet['fleet_id']]['user'] = doquery('SELECT * FROM {{table}} WHERE id ='.intval($fleet['fleet_owner']),'users', TRUE);
  519. $attackFleets[$fleet['fleet_id']]['detail'] = array();
  520. $temp = explode(';', $fleet['fleet_array']);
  521. foreach ($temp as $temp2)
  522. {
  523. $temp2 = explode(',', $temp2);
  524. if ($temp2[0] < 100) continue;
  525. if (!isset($attackFleets[$fleet['fleet_id']]['detail'][$temp2[0]]))
  526. $attackFleets[$fleet['fleet_id']]['detail'][$temp2[0]] = 0;
  527. $attackFleets[$fleet['fleet_id']]['detail'][$temp2[0]] += $temp2[1];
  528. }
  529. }
  530. }
  531. else
  532. {
  533. $attackFleets[$FleetRow['fleet_id']]['fleet'] = $FleetRow;
  534. $attackFleets[$FleetRow['fleet_id']]['user'] = doquery('SELECT * FROM {{table}} WHERE id='.intval($FleetRow['fleet_owner']),'users', TRUE);
  535. $attackFleets[$FleetRow['fleet_id']]['detail'] = array();
  536. $temp = explode(';', $FleetRow['fleet_array']);
  537. foreach ($temp as $temp2)
  538. {
  539. $temp2 = explode(',', $temp2);
  540. if ($temp2[0] < 100) continue;
  541. if (!isset($attackFleets[$FleetRow['fleet_id']]['detail'][$temp2[0]]))
  542. $attackFleets[$FleetRow['fleet_id']]['detail'][$temp2[0]] = 0;
  543. $attackFleets[$FleetRow['fleet_id']]['detail'][$temp2[0]] += $temp2[1];
  544. }
  545. }
  546. $defense = array();
  547. $def = doquery('SELECT * FROM {{table}} WHERE `fleet_end_galaxy` = '. intval($FleetRow['fleet_end_galaxy']) .' AND `fleet_end_system` = '. intval($FleetRow['fleet_end_system']) .' AND `fleet_end_type` = '. intval($FleetRow['fleet_end_type']) .' AND `fleet_end_planet` = '. intval($FleetRow['fleet_end_planet']) .' AND fleet_start_time<'.time().' AND fleet_end_stay>='.time(),'fleets');
  548. while ($defRow = mysql_fetch_assoc($def))
  549. {
  550. $defRowDef = explode(';', $defRow['fleet_array']);
  551. foreach ($defRowDef as $Element)
  552. {
  553. $Element = explode(',', $Element);
  554. if ($Element[0] < 100) continue;
  555. if (!isset($defense[$defRow['fleet_id']]['def'][$Element[0]]))
  556. $defense[$defRow['fleet_id']][$Element[0]] = 0;
  557. $defense[$defRow['fleet_id']]['def'][$Element[0]] += $Element[1];
  558. $defense[$defRow['fleet_id']]['user'] = doquery('SELECT * FROM {{table}} WHERE id='.intval($defRow['fleet_owner']),'users', TRUE);
  559. }
  560. }
  561. $defense[0]['def'] = array();
  562. $defense[0]['user'] = $targetUser;
  563. for ($i = 200; $i < 500; $i++)
  564. {
  565. if (isset($resource[$i]) && isset($targetPlanet[$resource[$i]]))
  566. {
  567. $defense[0]['def'][$i] = $targetPlanet[$resource[$i]];
  568. }
  569. }
  570. $start = microtime(TRUE);
  571. $result = calculateAttack($attackFleets, $defense);
  572. $totaltime = microtime(TRUE) - $start;
  573. $QryUpdateGalaxy = "UPDATE {{table}} SET ";
  574. $QryUpdateGalaxy .= "`invisible_start_time` = '".time()."', ";
  575. $QryUpdateGalaxy .= "`metal` = `metal` +'".($result['debree']['att'][0]+$result['debree']['def'][0]) . "', ";
  576. $QryUpdateGalaxy .= "`crystal` = `crystal` + '" .($result['debree']['att'][1]+$result['debree']['def'][1]). "' ";
  577. $QryUpdateGalaxy .= "WHERE ";
  578. $QryUpdateGalaxy .= "`galaxy` = '" . intval($FleetRow['fleet_end_galaxy']) . "' AND ";
  579. $QryUpdateGalaxy .= "`system` = '" . intval($FleetRow['fleet_end_system']) . "' AND ";
  580. $QryUpdateGalaxy .= "`planet` = '" . intval($FleetRow['fleet_end_planet']) . "' ";
  581. $QryUpdateGalaxy .= "LIMIT 1;";
  582. doquery($QryUpdateGalaxy , 'galaxy');
  583. $totalDebree = $result['debree']['def'][0] + $result['debree']['def'][1] + $result['debree']['att'][0] + $result['debree']['att'][1];
  584. $steal = array('metal' => 0, 'crystal' => 0, 'deuterium' => 0);
  585. if ($result['won'] == "a")
  586. {
  587. $steal = self::calculateAKSSteal($attackFleets, $targetPlanet);
  588. }
  589. foreach ($attackFleets as $fleetID => $attacker)
  590. {
  591. $fleetArray = '';
  592. $totalCount = 0;
  593. foreach ($attacker['detail'] as $element => $amount)
  594. {
  595. if ($amount)
  596. $fleetArray .= $element.','.$amount.';';
  597. $totalCount += $amount;
  598. }
  599. if ($totalCount <= 0)
  600. {
  601. doquery ('DELETE FROM {{table}} WHERE `fleet_id`='.intval($fleetID),'fleets');
  602. }
  603. else
  604. {
  605. doquery ('UPDATE {{table}} SET fleet_array="'.substr($fleetArray, 0, -1).'", fleet_amount='.$totalCount.', fleet_mess=1 WHERE fleet_id='.intval($fleetID),'fleets');
  606. }
  607. }
  608. foreach ($defense as $fleetID => $defender)
  609. {
  610. if ($fleetID != 0)
  611. {
  612. $fleetArray = '';
  613. $totalCount = 0;
  614. foreach ($defender['def'] as $element => $amount)
  615. {
  616. if ($amount) $fleetArray .= $element.','.$amount.';';
  617. $totalCount += $amount;
  618. }
  619. if ($totalCount <= 0)
  620. {
  621. doquery ('DELETE FROM {{table}} WHERE `fleet_id`='.intval($fleetID),'fleets');
  622. }
  623. else
  624. {
  625. doquery("UPDATE {{table}} SET fleet_array='$fleetArray', fleet_amount='$totalCount' WHERE fleet_id='$fleetID'",'fleets');
  626. }
  627. }
  628. else
  629. {
  630. $fleetArray = '';
  631. $totalCount = 0;
  632. foreach ($defender['def'] as $element => $amount)
  633. {
  634. $fleetArray .= '`'.$resource[$element].'`='.$amount.', ';
  635. }
  636. $QryUpdateTarget = "UPDATE {{table}} SET ";
  637. $QryUpdateTarget .= $fleetArray;
  638. $QryUpdateTarget .= "`metal` = `metal` - '". $steal['metal'] ."', ";
  639. $QryUpdateTarget .= "`crystal` = `crystal` - '". $steal['crystal'] ."', ";
  640. $QryUpdateTarget .= "`deuterium` = `deuterium` - '". $steal['deuterium'] ."' ";
  641. $QryUpdateTarget .= "WHERE ";
  642. $QryUpdateTarget .= "`galaxy` = '". $FleetRow['fleet_end_galaxy'] ."' AND ";
  643. $QryUpdateTarget .= "`system` = '". $FleetRow['fleet_end_system'] ."' AND ";
  644. $QryUpdateTarget .= "`planet` = '". $FleetRow['fleet_end_planet'] ."' AND ";
  645. $QryUpdateTarget .= "`planet_type` = '". $FleetRow['fleet_end_type'] ."' ";
  646. $QryUpdateTarget .= "LIMIT 1;";
  647. doquery( $QryUpdateTarget , 'planets');
  648. }
  649. }
  650. $FleetDebris = $result['debree']['att'][0] + $result['debree']['def'][0] + $result['debree']['att'][1] + $result['debree']['def'][1];
  651. $StrAttackerUnits = sprintf ($lang['sys_attacker_lostunits'], $result['lost']['att']);
  652. $StrDefenderUnits = sprintf ($lang['sys_defender_lostunits'], $result['lost']['def']);
  653. $StrRuins = sprintf ($lang['sys_gcdrunits'], $result['debree']['def'][0] + $result['debree']['att'][0], $lang['Metal'], $result['debree']['def'][1] + $result['debree']['att'][1], $lang['Crystal']);
  654. $DebrisField = $StrAttackerUnits ."<br />". $StrDefenderUnits ."<br />". $StrRuins;
  655. $MoonChance = $FleetDebris / 100000;
  656. if($FleetDebris > 2000000)
  657. {
  658. $MoonChance = 20;
  659. $UserChance = mt_rand(1, 100);
  660. $ChanceMoon = sprintf ($lang['sys_moonproba'], $MoonChance);
  661. }
  662. elseif($FleetDebris < 100000)
  663. {
  664. $UserChance = 0;
  665. $ChanceMoon = sprintf ($lang['sys_moonproba'], $MoonChance);
  666. }
  667. elseif($FleetDebris >= 100000)
  668. {
  669. $UserChance = mt_rand(1, 100);
  670. $ChanceMoon = sprintf ($lang['sys_moonproba'], $MoonChance);
  671. }
  672. if (($UserChance > 0) && ($UserChance <= $MoonChance) && ($targetGalaxy['id_luna'] == 0))
  673. {
  674. $TargetPlanetName = CreateOneMoonRecord ( $FleetRow['fleet_end_galaxy'], $FleetRow['fleet_end_system'], $FleetRow['fleet_end_planet'], $TargetUserID, $FleetRow['fleet_start_time'], '', $MoonChance );
  675. $GottenMoon = sprintf ($lang['sys_moonbuilt'], $TargetPlanetName, $FleetRow['fleet_end_galaxy'], $FleetRow['fleet_end_system'], $FleetRow['fleet_end_planet']);
  676. $GottenMoon .= "<br />";
  677. }
  678. elseif ($UserChance = 0 or $UserChance > $MoonChance)
  679. {
  680. $GottenMoon = "";
  681. }
  682. $formatted_cr = formatCR($result,$steal,$MoonChance,$GottenMoon,$totaltime);
  683. $raport = $formatted_cr['html'];
  684. $rid = md5($raport);
  685. $QryInsertRapport = 'INSERT INTO {{table}} SET ';
  686. $QryInsertRapport .= '`time` = UNIX_TIMESTAMP(), ';
  687. foreach ($attackFleets as $fleetID => $attacker)
  688. {
  689. $users2[$attacker['user']['id']] = $attacker['user']['id'];
  690. }
  691. foreach ($defense as $fleetID => $defender)
  692. {
  693. $users2[$defender['user']['id']] = $defender['user']['id'];
  694. }
  695. $QryInsertRapport .= '`owners` = "'.implode(',', $users2).'", ';
  696. $QryInsertRapport .= '`rid` = "'. $rid .'", ';
  697. $QryInsertRapport .= '`a_zestrzelona` = "'.$formatted_cr['destroyed'].'", ';
  698. $QryInsertRapport .= '`raport` = "'. mysql_escape_string( $raport ) .'"';
  699. doquery($QryInsertRapport,'rw') or die("Error inserting CR to database".mysql_error()."<br /><br />Trying to execute:".mysql_query());
  700. if($result['won'] == "a")
  701. {
  702. $style = "green";
  703. }
  704. elseif ($result['won'] == "w")
  705. {
  706. $style = "orange";
  707. }
  708. elseif ($result['won'] == "r")
  709. {
  710. $style = "red";
  711. }
  712. $raport = "<a href=\"#\" style=\"color:".$style.";\" OnClick=\'f(\"CombatReport.php?raport=". $rid ."\", \"\");\' >" . $lang['sys_mess_attack_report'] ." [". $FleetRow['fleet_end_galaxy'] .":". $FleetRow['fleet_end_system'] .":". $FleetRow['fleet_end_planet'] ."]</a>";
  713. SendSimpleMessage ( $FleetRow['fleet_owner'], '', $FleetRow['fleet_start_time'], 3, $lang['sys_mess_tower'], $raport, '' );
  714. if($result['won'] == "a")
  715. {
  716. $style = "red";
  717. }
  718. elseif ($result['won'] == "w")
  719. {
  720. $style = "orange";
  721. }
  722. elseif ($result['won'] == "r")
  723. {
  724. $style = "green";
  725. }
  726. $raport2 = "<a href=\"#\" style=\"color:".$style.";\" OnClick=\'f(\"CombatReport.php?raport=". $rid ."\", \"\");\' >" . $lang['sys_mess_attack_report'] ." [". $FleetRow['fleet_end_galaxy'] .":". $FleetRow['fleet_end_system'] .":". $FleetRow['fleet_end_planet'] ."]</a>";
  727. foreach ($users2 as $id)
  728. {
  729. if ($id != $FleetRow['fleet_owner'] && $id != 0)
  730. {
  731. SendSimpleMessage ( $id, '', $FleetRow['fleet_start_time'], 3, $lang['sys_mess_tower'], $raport2, '' );
  732. }
  733. }
  734. }
  735. elseif ($FleetRow['fleet_end_time'] <= time())
  736. {
  737. $Message = sprintf( $lang['sys_fleet_won'],
  738. $TargetName, GetTargetAdressLink($FleetRow, ''),
  739. Format::pretty_number($FleetRow['fleet_resource_metal']), $lang['Metal'],
  740. Format::pretty_number($FleetRow['fleet_resource_crystal']), $lang['Crystal'],
  741. Format::pretty_number($FleetRow['fleet_resource_deuterium']), $lang['Deuterium'] );
  742. SendSimpleMessage ( $FleetRow['fleet_owner'], '', $FleetRow['fleet_end_time'], 3, $lang['sys_mess_tower'], $lang['sys_mess_fleetback'], $Message);
  743. $this->RestoreFleetToPlanet($FleetRow);
  744. doquery ('DELETE FROM {{table}} WHERE `fleet_id`='.intval($FleetRow['fleet_id']),'fleets');
  745. }
  746. }
  747. private function MissionCaseACS($FleetRow)
  748. {
  749. global $pricelist, $lang, $resource, $CombatCaps;
  750. if ($FleetRow['fleet_mess'] == 0 && $FleetRow['fleet_start_time'] > time())
  751. {
  752. $QryUpdateFleet = "UPDATE {{table}} SET `fleet_mess` = '1' WHERE `fleet_id` = '". intval($FleetRow['fleet_id']) ."' LIMIT 1 ;";
  753. doquery( $QryUpdateFleet, 'fleets');
  754. }
  755. elseif ($FleetRow['fleet_end_time'] <= time())
  756. {
  757. $this->RestoreFleetToPlanet($FleetRow);
  758. doquery ('DELETE FROM {{table}} WHERE `fleet_id`='.intval($FleetRow['fleet_id']),'fleets');
  759. }
  760. }
  761. private function MissionCaseTransport ( $FleetRow )
  762. {
  763. global $lang;
  764. $QryStartPlanet = "SELECT * FROM {{table}} ";
  765. $QryStartPlanet .= "WHERE ";
  766. $QryStartPlanet .= "`galaxy` = '". $FleetRow['fleet_start_galaxy'] ."' AND ";
  767. $QryStartPlanet .= "`system` = '". $FleetRow['fleet_start_system'] ."' AND ";
  768. $QryStartPlanet .= "`planet` = '". $FleetRow['fleet_start_planet'] ."' AND ";
  769. $QryStartPlanet .= "`planet_type` = '". $FleetRow['fleet_start_type'] ."';";
  770. $StartPlanet = doquery( $QryStartPlanet, 'planets', TRUE);
  771. $StartName = $StartPlanet['name'];
  772. $StartOwner = $StartPlanet['id_owner'];
  773. $QryTargetPlanet = "SELECT * FROM {{table}} ";
  774. $QryTargetPlanet .= "WHERE ";
  775. $QryTargetPlanet .= "`galaxy` = '". $FleetRow['fleet_end_galaxy'] ."' AND ";
  776. $QryTargetPlanet .= "`system` = '". $FleetRow['fleet_end_system'] ."' AND ";
  777. $QryTargetPlanet .= "`planet` = '". $FleetRow['fleet_end_planet'] ."' AND ";
  778. $QryTargetPlanet .= "`planet_type` = '". $FleetRow['fleet_end_type'] ."';";
  779. $TargetPlanet = doquery( $QryTargetPlanet, 'planets', TRUE);
  780. $TargetName = $TargetPlanet['name'];
  781. $TargetOwner = $TargetPlanet['id_owner'];
  782. if ($FleetRow['fleet_mess'] == 0)
  783. {
  784. if ($FleetRow['fleet_start_time'] < time())
  785. {
  786. $this->StoreGoodsToPlanet ($FleetRow, FALSE);
  787. $Message = sprintf( $lang['sys_tran_mess_owner'],
  788. $TargetName, GetTargetAdressLink($FleetRow, ''),
  789. $FleetRow['fleet_resource_metal'], $lang['Metal'],
  790. $FleetRow['fleet_resource_crystal'], $lang['Crystal'],
  791. $FleetRow['fleet_resource_deuterium'], $lang['Deuterium'] );
  792. SendSimpleMessage ( $StartOwner, '', $FleetRow['fleet_start_time'], 5, $lang['sys_mess_tower'], $lang['sys_mess_transport'], $Message);
  793. if ($TargetOwner <> $StartOwner)
  794. {
  795. $Message = sprintf( $lang['sys_tran_mess_user'],
  796. $StartName, GetStartAdressLink($FleetRow, ''),
  797. $TargetName, GetTargetAdressLink($FleetRow, ''),
  798. $FleetRow['fleet_resource_metal'], $lang['Metal'],
  799. $FleetRow['fleet_resource_crystal'], $lang['Crystal'],
  800. $FleetRow['fleet_resource_deuterium'], $lang['Deuterium'] );
  801. SendSimpleMessage ( $TargetOwner, '', $FleetRow['fleet_start_time'], 5, $lang['sys_mess_tower'], $lang['sys_mess_transport'], $Message);
  802. }
  803. $QryUpdateFleet = "UPDATE {{table}} SET ";
  804. $QryUpdateFleet .= "`fleet_resource_metal` = '0' , ";
  805. $QryUpdateFleet .= "`fleet_resource_crystal` = '0' , ";
  806. $QryUpdateFleet .= "`fleet_resource_deuterium` = '0' , ";
  807. $QryUpdateFleet .= "`fleet_mess` = '1' ";
  808. $QryUpdateFleet .= "WHERE `fleet_id` = '". intval($FleetRow['fleet_id']) ."' ";
  809. $QryUpdateFleet .= "LIMIT 1 ;";
  810. doquery( $QryUpdateFleet, 'fleets');
  811. }
  812. }
  813. else
  814. {
  815. if ($FleetRow['fleet_end_time'] < time())
  816. {
  817. $Message = sprintf ($lang['sys_tran_mess_back'], $StartName, GetStartAdressLink($FleetRow, ''));
  818. SendSimpleMessage ( $StartOwner, '', $FleetRow['fleet_end_time'], 5, $lang['sys_mess_tower'], $lang['sys_mess_fleetback'], $Message);
  819. $this->RestoreFleetToPlanet ( $FleetRow, TRUE );
  820. doquery("DELETE FROM {{table}} WHERE fleet_id=" . $FleetRow["fleet_id"], 'fleets');
  821. }
  822. }
  823. }
  824. private function MissionCaseStay($FleetRow)
  825. {
  826. global $lang, $resource;
  827. if ($FleetRow['fleet_mess'] == 0)
  828. {
  829. if ($FleetRow['fleet_start_time'] <= time())
  830. {
  831. $QryGetTargetPlanet = "SELECT * FROM {{table}} ";
  832. $QryGetTargetPlanet .= "WHERE ";
  833. $QryGetTargetPlanet .= "`galaxy` = '". $FleetRow['fleet_end_galaxy'] ."' AND ";
  834. $QryGetTargetPlanet .= "`system` = '". $FleetRow['fleet_end_system'] ."' AND ";
  835. $QryGetTargetPlanet .= "`planet` = '". $FleetRow['fleet_end_planet'] ."' AND ";
  836. $QryGetTargetPlanet .= "`planet_type` = '". $FleetRow['fleet_end_type'] ."';";
  837. $TargetPlanet = doquery( $QryGetTargetPlanet, 'planets', TRUE);
  838. $TargetUserID = $TargetPlanet['id_owner'];
  839. $TargetAdress = sprintf ($lang['sys_adress_planet'], $FleetRow['fleet_end_galaxy'], $FleetRow['fleet_end_system'], $FleetRow['fleet_end_planet']);
  840. $TargetAddedGoods = sprintf ($lang['sys_stay_mess_goods'],
  841. $lang['Metal'], Format::pretty_number($FleetRow['fleet_resource_metal']),
  842. $lang['Crystal'], Format::pretty_number($FleetRow['fleet_resource_crystal']),
  843. $lang['Deuterium'], Format::pretty_number($FleetRow['fleet_resource_deuterium']));
  844. $TargetMessage = $lang['sys_stay_mess_start'] ."<a href=\"game.php?page=galaxy&mode=3&galaxy=". $FleetRow['fleet_end_galaxy'] ."&system=". $FleetRow['fleet_end_system'] ."\">";
  845. $TargetMessage .= $TargetAdress. "</a>". $lang['sys_stay_mess_end'] ."<br />". $TargetAddedGoods;
  846. SendSimpleMessage ( $TargetUserID, '', $FleetRow['fleet_start_time'], 5, $lang['sys_mess_qg'], $lang['sys_stay_mess_stay'], $TargetMessage);
  847. $this->RestoreFleetToPlanet ( $FleetRow, FALSE );
  848. doquery("DELETE FROM {{table}} WHERE `fleet_id` = '". $FleetRow["fleet_id"] ."';", 'fleets');
  849. }
  850. }
  851. else
  852. {
  853. if ($FleetRow['fleet_end_time'] <= time())
  854. {
  855. $TargetAdress = sprintf ($lang['sys_adress_planet'], $FleetRow['fleet_start_galaxy'], $FleetRow['fleet_start_system'], $FleetRow['fleet_start_planet']);
  856. $TargetAddedGoods = sprintf ($lang['sys_stay_mess_goods'],
  857. $lang['Metal'], Format::pretty_number($FleetRow['fleet_resource_metal']),
  858. $lang['Crystal'], Format::pretty_number($FleetRow['fleet_resource_crystal']),
  859. $lang['Deuterium'], Format::pretty_number($FleetRow['fleet_resource_deuterium']));
  860. $TargetMessage = $lang['sys_stay_mess_back'] ."<a href=\"game.php?page=galaxy&mode=3&galaxy=". $FleetRow['fleet_start_galaxy'] ."&system=". $FleetRow['fleet_start_system'] ."\">";
  861. $TargetMessage .= $TargetAdress. "</a>". $lang['sys_stay_mess_bend'] ."<br />". $TargetAddedGoods;
  862. SendSimpleMessage ( $FleetRow['fleet_owner'], '', $FleetRow['fleet_end_time'], 5, $lang['sys_mess_qg'], $lang['sys_mess_fleetback'], $TargetMessage);
  863. $this->RestoreFleetToPlanet ( $FleetRow, TRUE );
  864. doquery("DELETE FROM {{table}} WHERE `fleet_id` = '". $FleetRow["fleet_id"] ."';", 'fleets');
  865. }
  866. }
  867. }
  868. private function MissionCaseStayAlly($FleetRow)
  869. {
  870. global $lang;
  871. $QryStartPlanet = "SELECT * FROM {{table}} ";
  872. $QryStartPlanet .= "WHERE ";
  873. $QryStartPlanet .= "`galaxy` = '". $FleetRow['fleet_start_galaxy'] ."' AND ";
  874. $QryStartPlanet .= "`system` = '". $FleetRow['fleet_start_system'] ."' AND ";
  875. $QryStartPlanet .= "`planet` = '". $FleetRow['fleet_start_planet'] ."';";
  876. $StartPlanet = doquery( $QryStartPlanet, 'planets', TRUE);
  877. $StartName = $StartPlanet['name'];
  878. $StartOwner = $StartPlanet['id_owner'];
  879. $QryTargetPlanet = "SELECT * FROM {{table}} ";
  880. $QryTargetPlanet .= "WHERE ";
  881. $QryTargetPlanet .= "`galaxy` = '". $FleetRow['fleet_end_galaxy'] ."' AND ";
  882. $QryTargetPlanet .= "`system` = '". $FleetRow['fleet_end_system'] ."' AND ";
  883. $QryTargetPlanet .= "`planet` = '". $FleetRow['fleet_end_planet'] ."';";
  884. $TargetPlanet = doquery( $QryTargetPlanet, 'planets', TRUE);
  885. $TargetName = $TargetPlanet['name'];
  886. $TargetOwner = $TargetPlanet['id_owner'];
  887. if ($FleetRow['fleet_mess'] == 0)
  888. {
  889. if ($FleetRow['fleet_start_time'] <= time())
  890. {
  891. $Message = sprintf($lang['sys_tran_mess_owner'], $TargetName, GetTargetAdressLink($FleetRow, ''),
  892. $FleetRow['fleet_resource_metal'], $lang['Metal'],
  893. $FleetRow['fleet_resource_crystal'], $lang['Crystal'],
  894. $FleetRow['fleet_resource_deuterium'], $lang['Deuterium'] );
  895. SendSimpleMessage ($StartOwner, '',$FleetRow['fleet_start_time'], 5, $lang['sys_mess_tower'], $lang['sys_mess_transport'], $Message);
  896. $Message = sprintf( $lang['sys_tran_mess_user'], $StartName, GetStartAdressLink($FleetRow, ''),
  897. $TargetName, GetTargetAdressLink($FleetRow, ''),
  898. $FleetRow['fleet_resource_metal'], $lang['Metal'],
  899. $FleetRow['fleet_resource_crystal'], $lang['Crystal'],
  900. $FleetRow['fleet_resource_deuterium'], $lang['Deuterium'] );
  901. SendSimpleMessage ($TargetOwner, '',$FleetRow['fleet_start_time'], 5, $lang['sys_mess_tower'], $lang['sys_mess_transport'], $Message);
  902. $QryUpdateFleet = "UPDATE {{table}} SET ";
  903. $QryUpdateFleet .= "`fleet_mess` = 2 ";
  904. $QryUpdateFleet .= "WHERE `fleet_id` = '". intval($FleetRow['fleet_id']) ."' ";
  905. $QryUpdateFleet .= "LIMIT 1 ;";
  906. doquery( $QryUpdateFleet, 'fleets');
  907. }
  908. elseif($FleetRow['fleet_end_stay'] <= time())
  909. {
  910. $QryUpdateFleet = "UPDATE {{table}} SET ";
  911. $QryUpdateFleet .= "`fleet_mess` = 1 ";
  912. $QryUpdateFleet .= "WHERE `fleet_id` = '". intval($FleetRow['fleet_id']) ."' ";
  913. $QryUpdateFleet .= "LIMIT 1 ;";
  914. doquery( $QryUpdateFleet, 'fleets');
  915. }
  916. }
  917. else
  918. {
  919. if ($FleetRow['fleet_end_time'] < time())
  920. {
  921. $Message = sprintf ($lang['sys_tran_mess_back'], $StartName, GetStartAdressLink($FleetRow, ''));
  922. SendSimpleMessage ( $StartOwner, '', $FleetRow['fleet_end_time'], 5, $lang['sys_mess_tower'], $lang['sys_mess_fleetback'], $Message);
  923. $this->RestoreFleetToPlanet ( $FleetRow, TRUE );
  924. doquery("DELETE FROM {{table}} WHERE fleet_id=" . $FleetRow["fleet_id"], 'fleets');
  925. }
  926. }
  927. }
  928. private function MissionCaseSpy($FleetRow)
  929. {
  930. global $lang, $resource;
  931. if ($FleetRow['fleet_start_time'] <= time())
  932. {
  933. $CurrentUser = doquery("SELECT * FROM {{table}} WHERE `id` = '".$FleetRow['fleet_owner']."';", 'users', TRUE);
  934. $CurrentUserID = $FleetRow['fleet_owner'];
  935. $QryGetTargetPlanet = "SELECT * FROM {{table}} ";
  936. $QryGetTargetPlanet .= "WHERE ";
  937. $QryGetTargetPlanet .= "`galaxy` = '". $FleetRow['fleet_end_galaxy'] ."' AND ";
  938. $QryGetTargetPlanet .= "`system` = '". $FleetRow['fleet_end_system'] ."' AND ";
  939. $QryGetTargetPlanet .= "`planet` = '". $FleetRow['fleet_end_planet'] ."' AND ";
  940. $QryGetTargetPlanet .= "`planet_type` = '". $FleetRow['fleet_end_type'] ."';";
  941. $TargetPlanet = doquery( $QryGetTargetPlanet, 'planets', TRUE);
  942. $TargetUserID = $TargetPlanet['id_owner'];
  943. $CurrentPlanet = doquery("SELECT * FROM {{table}} WHERE `galaxy` = '".$FleetRow['fleet_start_galaxy']."' AND `system` = '".$FleetRow['fleet_start_system']."' AND `planet` = '".$FleetRow['fleet_start_planet']."';", 'planets', TRUE);
  944. $CurrentSpyLvl = $CurrentUser['spy_tech'] + ($CurrentUser['rpg_technocrate'] * TECHNOCRATE_SPY);
  945. $TargetUser = doquery("SELECT * FROM {{table}} WHERE `id` = '".$TargetUserID."';", 'users', TRUE);
  946. $TargetSpyLvl = $TargetUser['spy_tech'] + ($TargetUser['rpg_technocrate'] * TECHNOCRATE_SPY);
  947. $fleet = explode(";", $FleetRow['fleet_array']);
  948. $fquery = "";
  949. PlanetResourceUpdate ( $TargetUser, $TargetPlanet, time() );
  950. foreach ($fleet as $a => $b)
  951. {
  952. if ($b != '')
  953. {
  954. $a = explode(",", $b);
  955. $fquery .= "{$resource[$a[0]]}={$resource[$a[0]]} + {$a[1]}, \n";
  956. if ($FleetRow["fleet_mess"] != "1" && $a[0] == "210")
  957. {
  958. $LS = $a[1];
  959. $QryTargetGalaxy = "SELECT * FROM {{table}} WHERE ";
  960. $QryTargetGalaxy .= "`galaxy` = '". $FleetRow['fleet_end_galaxy'] ."' AND ";
  961. $QryTargetGalaxy .= "`system` = '". $FleetRow['fleet_end_system'] ."' AND ";
  962. $QryTargetGalaxy .= "`planet` = '". $FleetRow['fleet_end_planet'] ."';";
  963. $TargetGalaxy = doquery( $QryTargetGalaxy, 'galaxy', TRUE);
  964. $CristalDebris = $TargetGalaxy['crystal'];
  965. $SpyToolDebris = $LS * 300;
  966. $MaterialsInfo = $this->SpyTarget ( $TargetPlanet, 0, $lang['sys_spy_maretials'] );
  967. $Materials = $MaterialsInfo['String'];
  968. $PlanetFleetInfo = $this->SpyTarget ( $TargetPlanet, 1, $lang['sys_spy_fleet'] );
  969. $PlanetFleet = $Materials;
  970. $PlanetFleet .= $PlanetFleetInfo['String'];
  971. $PlanetDefenInfo = $this->SpyTarget ( $TargetPlanet, 2, $lang['sys_spy_defenses'] );
  972. $PlanetDefense = $PlanetFleet;
  973. $PlanetDefense .= $PlanetDefenInfo['String'];
  974. $PlanetBuildInfo = $this->SpyTarget ( $TargetPlanet, 3, $lang['tech'][0] );
  975. $PlanetBuildings = $PlanetDefense;
  976. $PlanetBuildings .= $PlanetBuildInfo['String'];
  977. $TargetTechnInfo = $this->SpyTarget ( $TargetUser, 4, $lang['tech'][100] );
  978. $TargetTechnos = $PlanetBuildings;
  979. $TargetTechnos .= $TargetTechnInfo['String'];
  980. $TargetForce = ($PlanetFleetInfo['Count'] * $LS) / 4;
  981. if ($TargetForce > 100)
  982. $TargetForce = 100;
  983. $TargetChances = rand(0, $TargetForce);
  984. $SpyerChances = rand(0, 100);
  985. if ($TargetChances >= $SpyerChances)
  986. $DestProba = "<font color=\"red\">".$lang['sys_mess_spy_destroyed']."</font>";
  987. elseif ($TargetChances < $SpyerChances)
  988. $DestProba = sprintf( $lang['sys_mess_spy_lostproba'], $TargetChances);
  989. $AttackLink = "<center>";
  990. $AttackLink .= "<a href=\"game.php?page=fleet&galaxy=". $FleetRow['fleet_end_galaxy'] ."&system=". $FleetRow['fleet_end_system'] ."";
  991. $AttackLink .= "&planet=".$FleetRow['fleet_end_planet']."&planettype=".$FleetRow['fleet_end_type']."";
  992. $AttackLink .= "&target_mission=1";
  993. $AttackLink .= " \">". $lang['type_mission'][1] ."";
  994. $AttackLink .= "</a></center>";
  995. $MessageEnd = "<center>".$DestProba."</center>";
  996. $pT = ($TargetSpyLvl - $CurrentSpyLvl);
  997. $pW = ($CurrentSpyLvl - $TargetSpyLvl);
  998. if ($TargetSpyLvl > $CurrentSpyLvl)
  999. $ST = ($LS - pow($pT, 2));
  1000. if ($CurrentSpyLvl > $TargetSpyLvl)
  1001. $ST = ($LS + pow($pW, 2));
  1002. if ($TargetSpyLvl == $CurrentSpyLvl)
  1003. $ST = $CurrentSpyLvl;
  1004. if ($ST <= "1")
  1005. $SpyMessage = $Materials."<br />".$AttackLink.$MessageEnd;
  1006. if ($ST == "2")
  1007. $SpyMessage = $PlanetFleet."<br />".$AttackLink.$MessageEnd;
  1008. if ($ST == "4" or $ST == "3")
  1009. $SpyMessage = $PlanetDefense."<br />".$AttackLink.$MessageEnd;
  1010. if ($ST == "5" or $ST == "6")
  1011. $SpyMessage = $PlanetBuildings."<br />".$AttackLink.$MessageEnd;
  1012. if ($ST >= "7")
  1013. $SpyMessage = $TargetTechnos."<br />".$AttackLink.$MessageEnd;
  1014. SendSimpleMessage ( $CurrentUserID, '', $FleetRow['fleet_start_time'], 0, $lang['sys_mess_qg'], $lang['sys_mess_spy_report'], $SpyMessage);
  1015. $TargetMessage = $lang['sys_mess_spy_ennemyfleet'] ." ". $CurrentPlanet['name'];
  1016. if($FleetRow['fleet_start_type'] == 3)
  1017. $TargetMessage .= $lang['sys_mess_spy_report_moon'] . " ";
  1018. $TargetMessage .= "<a href=\"game.php?page=galaxy&mode=3&galaxy=". $CurrentPlanet["galaxy"] ."&system=". $CurrentPlanet["system"] ."\">";
  1019. $TargetMessage .= "[". $CurrentPlanet["galaxy"] .":". $CurrentPlanet["system"] .":". $CurrentPlanet["planet"] ."]</a> ";
  1020. $TargetMessage .= $lang['sys_mess_spy_seen_at'] ." ". $TargetPlanet['name'];
  1021. $TargetMessage .= " [". $TargetPlanet["galaxy"] .":". $TargetPlanet["system"] .":". $TargetPlanet["planet"] ."].";
  1022. SendSimpleMessage ( $TargetUserID, '', $FleetRow['fleet_start_time'], 0, $lang['sys_mess_spy_control'], $lang['sys_mess_spy_activity'], $TargetMessage);
  1023. if ($TargetChances >= $SpyerChances)
  1024. {
  1025. $QryUpdateGalaxy = "UPDATE {{table}} SET ";
  1026. $QryUpdateGalaxy .= "`invisible_start_time` = '".time()

Large files files are truncated, but you can click here to view the full file