PageRenderTime 59ms CodeModel.GetById 15ms 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
  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()."', ";
  1027. $QryUpdateGalaxy .= "`crystal` = `crystal` + '". (0 + $SpyToolDebris) ."' ";
  1028. $QryUpdateGalaxy .= "WHERE `id_planet` = '". $TargetPlanet['id'] ."';";
  1029. doquery( $QryUpdateGalaxy, 'galaxy');
  1030. doquery("DELETE FROM {{table}} WHERE `fleet_id` = '". $FleetRow["fleet_id"] ."';", 'fleets');
  1031. }
  1032. else
  1033. doquery("UPDATE {{table}} SET `fleet_mess` = '1' WHERE `fleet_id` = '". $FleetRow["fleet_id"] ."';", 'fleets');
  1034. }
  1035. }
  1036. else
  1037. {
  1038. if ($FleetRow['fleet_end_time'] <= time())
  1039. {
  1040. $this->RestoreFleetToPlanet ( $FleetRow, TRUE );
  1041. doquery("DELETE FROM {{table}} WHERE `fleet_id` = ". $FleetRow["fleet_id"], 'fleets');
  1042. }
  1043. }
  1044. }
  1045. }
  1046. }
  1047. private function MissionCaseRecycling ($FleetRow)
  1048. {
  1049. global $pricelist, $lang;
  1050. if ($FleetRow["fleet_mess"] == "0")
  1051. {
  1052. if ($FleetRow['fleet_start_time'] <= time())
  1053. {
  1054. $QrySelectGalaxy = "SELECT * FROM {{table}} ";
  1055. $QrySelectGalaxy .= "WHERE ";
  1056. $QrySelectGalaxy .= "`galaxy` = '".$FleetRow['fleet_end_galaxy']."' AND ";
  1057. $QrySelectGalaxy .= "`system` = '".$FleetRow['fleet_end_system']."' AND ";
  1058. $QrySelectGalaxy .= "`planet` = '".$FleetRow['fleet_end_planet']."' ";
  1059. $QrySelectGalaxy .= "LIMIT 1;";
  1060. $TargetGalaxy = doquery( $QrySelectGalaxy, 'galaxy', TRUE);
  1061. $FleetRecord = explode(";", $FleetRow['fleet_array']);
  1062. $RecyclerCapacity = 0;
  1063. $OtherFleetCapacity = 0;
  1064. foreach ($FleetRecord as $Item => $Group)
  1065. {
  1066. if ($Group != '')
  1067. {
  1068. $Class = explode (",", $Group);
  1069. if ($Class[0] == 209)
  1070. $RecyclerCapacity += $pricelist[$Class[0]]["capacity"] * $Class[1];
  1071. else
  1072. $OtherFleetCapacity += $pricelist[$Class[0]]["capacity"] * $Class[1];
  1073. }
  1074. }
  1075. $IncomingFleetGoods = $FleetRow["fleet_resource_metal"] + $FleetRow["fleet_resource_crystal"] + $FleetRow["fleet_resource_deuterium"];
  1076. if ($IncomingFleetGoods > $OtherFleetCapacity)
  1077. $RecyclerCapacity -= ($IncomingFleetGoods - $OtherFleetCapacity);
  1078. if (($TargetGalaxy["metal"] + $TargetGalaxy["crystal"]) <= $RecyclerCapacity)
  1079. {
  1080. $RecycledGoods["metal"] = $TargetGalaxy["metal"];
  1081. $RecycledGoods["crystal"] = $TargetGalaxy["crystal"];
  1082. }
  1083. else
  1084. {
  1085. if (($TargetGalaxy["metal"] > $RecyclerCapacity / 2) && ($TargetGalaxy["crystal"] > $RecyclerCapacity / 2))
  1086. {
  1087. $RecycledGoods["metal"] = $RecyclerCapacity / 2;
  1088. $RecycledGoods["crystal"] = $RecyclerCapacity / 2;
  1089. }
  1090. else
  1091. {
  1092. if ($TargetGalaxy["metal"] > $TargetGalaxy["crystal"])
  1093. {
  1094. $RecycledGoods["crystal"] = $TargetGalaxy["crystal"];
  1095. if ($TargetGalaxy["metal"] > ($RecyclerCapacity - $RecycledGoods["crystal"]))
  1096. $RecycledGoods["metal"] = $RecyclerCapacity - $RecycledGoods["crystal"];
  1097. else
  1098. $RecycledGoods["metal"] = $TargetGalaxy["metal"];
  1099. }
  1100. else
  1101. {
  1102. $RecycledGoods["metal"] = $TargetGalaxy["metal"];
  1103. if ($TargetGalaxy["crystal"] > ($RecyclerCapacity - $RecycledGoods["metal"]))
  1104. $RecycledGoods["crystal"] = $RecyclerCapacity - $RecycledGoods["metal"];
  1105. else
  1106. $RecycledGoods["crystal"] = $TargetGalaxy["crystal"];
  1107. }
  1108. }
  1109. }
  1110. $QryUpdateGalaxy = "UPDATE {{table}} SET ";
  1111. $QryUpdateGalaxy .= "`metal` = `metal` - '".$RecycledGoods["metal"]."', ";
  1112. $QryUpdateGalaxy .= "`crystal` = `crystal` - '".$RecycledGoods["crystal"]."' ";
  1113. $QryUpdateGalaxy .= "WHERE ";
  1114. $QryUpdateGalaxy .= "`galaxy` = '".$FleetRow['fleet_end_galaxy']."' AND ";
  1115. $QryUpdateGalaxy .= "`system` = '".$FleetRow['fleet_end_system']."' AND ";
  1116. $QryUpdateGalaxy .= "`planet` = '".$FleetRow['fleet_end_planet']."' ";
  1117. $QryUpdateGalaxy .= "LIMIT 1;";
  1118. doquery( $QryUpdateGalaxy, 'galaxy');
  1119. $Message = sprintf($lang['sys_recy_gotten'], Format::pretty_number($RecycledGoods["metal"]), $lang['Metal'], Format::pretty_number($RecycledGoods["crystal"]), $lang['Crystal']);
  1120. SendSimpleMessage ( $FleetRow['fleet_owner'], '', $FleetRow['fleet_start_time'], 4, $lang['sys_mess_spy_control'], $lang['sys_recy_report'], $Message);
  1121. $QryUpdateFleet = "UPDATE {{table}} SET ";
  1122. $QryUpdateFleet .= "`fleet_resource_metal` = `fleet_resource_metal` + '".$RecycledGoods["metal"]."', ";
  1123. $QryUpdateFleet .= "`fleet_resource_crystal` = `fleet_resource_crystal` + '".$RecycledGoods["crystal"]."', ";
  1124. $QryUpdateFleet .= "`fleet_mess` = '1' ";
  1125. $QryUpdateFleet .= "WHERE ";
  1126. $QryUpdateFleet .= "`fleet_id` = '".intval($FleetRow['fleet_id'])."' ";
  1127. $QryUpdateFleet .= "LIMIT 1;";
  1128. doquery( $QryUpdateFleet, 'fleets');
  1129. }
  1130. }
  1131. else
  1132. {
  1133. if ($FleetRow['fleet_end_time'] <= time())
  1134. {
  1135. $Message = sprintf( $lang['sys_tran_mess_owner'],
  1136. $TargetName, GetTargetAdressLink($FleetRow, ''),
  1137. Format::pretty_number($FleetRow['fleet_resource_metal']), $lang['Metal'],
  1138. Format::pretty_number($FleetRow['fleet_resource_crystal']), $lang['Crystal'],
  1139. Format::pretty_number($FleetRow['fleet_resource_deuterium']), $lang['Deuterium'] );
  1140. SendSimpleMessage ( $FleetRow['fleet_owner'], '', $FleetRow['fleet_end_time'], 4, $lang['sys_mess_spy_control'], $lang['sys_mess_fleetback'], $Message);
  1141. $this->RestoreFleetToPlanet ( $FleetRow, TRUE );
  1142. doquery("DELETE FROM {{table}} WHERE `fleet_id` = '". $FleetRow["fleet_id"] ."';", 'fleets');
  1143. }
  1144. }
  1145. }
  1146. private function MissionCaseColonisation($FleetRow)
  1147. {
  1148. global $lang, $resource;
  1149. $iPlanetCount = mysql_result(doquery ("SELECT count(*) FROM {{table}} WHERE `id_owner` = '". $FleetRow['fleet_owner'] ."' AND `planet_type` = '1' AND `destruyed` = '0'", 'planets'), 0);
  1150. if ($FleetRow['fleet_mess'] == 0)
  1151. {
  1152. $iGalaxyPlace = mysql_result(doquery ("SELECT count(*) FROM {{table}} WHERE `galaxy` = '". $FleetRow['fleet_end_galaxy']."' AND `system` = '". $FleetRow['fleet_end_system']."' AND `planet` = '". $FleetRow['fleet_end_planet']."';", 'galaxy'), 0);
  1153. $TargetAdress = sprintf ($lang['sys_adress_planet'], $FleetRow['fleet_end_galaxy'], $FleetRow['fleet_end_system'], $FleetRow['fleet_end_planet']);
  1154. if ($iGalaxyPlace == 0)
  1155. {
  1156. if ($iPlanetCount >= MAX_PLAYER_PLANETS)
  1157. {
  1158. $TheMessage = $lang['sys_colo_arrival'] . $TargetAdress . $lang['sys_colo_maxcolo'] . MAX_PLAYER_PLANETS . $lang['sys_colo_planet'];
  1159. SendSimpleMessage ( $FleetRow['fleet_owner'], '', $FleetRow['fleet_start_time'], 0, $lang['sys_colo_mess_from'], $lang['sys_colo_mess_report'], $TheMessage);
  1160. doquery("UPDATE {{table}} SET `fleet_mess` = '1' WHERE `fleet_id` = ". $FleetRow["fleet_id"], 'fleets');
  1161. }
  1162. else
  1163. {
  1164. $NewOwnerPlanet = CreateOnePlanetRecord($FleetRow['fleet_end_galaxy'], $FleetRow['fleet_end_system'], $FleetRow['fleet_end_planet'], $FleetRow['fleet_owner'], $lang['sys_colo_defaultname'], FALSE);
  1165. if ( $NewOwnerPlanet == TRUE )
  1166. {
  1167. $TheMessage = $lang['sys_colo_arrival'] . $TargetAdress . $lang['sys_colo_allisok'];
  1168. SendSimpleMessage ( $FleetRow['fleet_owner'], '', $FleetRow['fleet_start_time'], 0, $lang['sys_colo_mess_from'], $lang['sys_colo_mess_report'], $TheMessage);
  1169. if ($FleetRow['fleet_amount'] == 1)
  1170. {
  1171. $this->StoreGoodsToPlanet ($FleetRow);
  1172. doquery("DELETE FROM {{table}} WHERE fleet_id=" . $FleetRow["fleet_id"], 'fleets');
  1173. }
  1174. else
  1175. {
  1176. $this->StoreGoodsToPlanet ($FleetRow);
  1177. $CurrentFleet = explode(";", $FleetRow['fleet_array']);
  1178. $NewFleet = "";
  1179. foreach ($CurrentFleet as $Item => $Group)
  1180. {
  1181. if ($Group != '')
  1182. {
  1183. $Class = explode (",", $Group);
  1184. if ($Class[0] == 208)
  1185. {
  1186. if ($Class[1] > 1)
  1187. {
  1188. $NewFleet .= $Class[0].",".($Class[1] - 1).";";
  1189. }
  1190. }
  1191. else
  1192. {
  1193. if ($Class[1] <> 0)
  1194. {
  1195. $NewFleet .= $Class[0].",".$Class[1].";";
  1196. }
  1197. }
  1198. }
  1199. }
  1200. $QryUpdateFleet = "UPDATE {{table}} SET ";
  1201. $QryUpdateFleet .= "`fleet_array` = '". $NewFleet ."', ";
  1202. $QryUpdateFleet .= "`fleet_amount` = `fleet_amount` - 1, ";
  1203. $QryUpdateFleet .= "`fleet_resource_metal` = '0' , ";
  1204. $QryUpdateFleet .= "`fleet_resource_crystal` = '0' , ";
  1205. $QryUpdateFleet .= "`fleet_resource_deuterium` = '0' , ";
  1206. $QryUpdateFleet .= "`fleet_mess` = '1' ";
  1207. $QryUpdateFleet .= "WHERE `fleet_id` = '". $FleetRow["fleet_id"] ."';";
  1208. doquery( $QryUpdateFleet, 'fleets');
  1209. }
  1210. }
  1211. else
  1212. {
  1213. $TheMessage = $lang['sys_colo_arrival'] . $TargetAdress . $lang['sys_colo_badpos'];
  1214. SendSimpleMessage ( $FleetRow['fleet_owner'], '', $FleetRow['fleet_start_time'], 0, $lang['sys_colo_mess_from'], $lang['sys_colo_mess_report'], $TheMessage);
  1215. doquery("UPDATE {{table}} SET `fleet_mess` = '1' WHERE `fleet_id` = ". $FleetRow["fleet_id"], 'fleets');
  1216. }
  1217. }
  1218. }
  1219. else
  1220. {
  1221. $TheMessage = $lang['sys_colo_arrival'] . $TargetAdress . $lang['sys_colo_notfree'];
  1222. SendSimpleMessage ( $FleetRow['fleet_owner'], '', $FleetRow['fleet_end_time'], 0, $lang['sys_colo_mess_from'], $lang['sys_colo_mess_report'], $TheMessage);
  1223. doquery("UPDATE {{table}} SET `fleet_mess` = '1' WHERE `fleet_id` = ". $FleetRow["fleet_id"], 'fleets');
  1224. }
  1225. }
  1226. elseif ($FleetRow['fleet_end_time'] < time())
  1227. {
  1228. $this->RestoreFleetToPlanet ( $FleetRow, TRUE );
  1229. doquery("DELETE FROM {{table}} WHERE fleet_id=" . $FleetRow["fleet_id"], 'fleets');
  1230. }
  1231. }
  1232. private function MissionCaseDestruction($FleetRow)
  1233. {
  1234. global $user, $pricelist, $lang, $resource, $CombatCaps;
  1235. if ($FleetRow['fleet_start_time'] <= time())
  1236. {
  1237. if ($FleetRow['fleet_mess'] == 0)
  1238. {
  1239. if (!isset($CombatCaps[202]['sd']))
  1240. header("location:game.php?page=fleet");
  1241. $QryTargetPlanet = "SELECT * FROM {{table}} ";
  1242. $QryTargetPlanet .= "WHERE ";
  1243. $QryTargetPlanet .= "`galaxy` = '". $FleetRow['fleet_end_galaxy'] ."' AND ";
  1244. $QryTargetPlanet .= "`system` = '". $FleetRow['fleet_end_system'] ."' AND ";
  1245. $QryTargetPlanet .= "`planet` = '". $FleetRow['fleet_end_planet'] ."' AND ";
  1246. $QryTargetPlanet .= "`planet_type` = '". $FleetRow['fleet_end_type'] ."';";
  1247. $TargetPlanet = doquery( $QryTargetPlanet, 'planets', TRUE);
  1248. $TargetUserID = $TargetPlanet['id_owner'];
  1249. $QryDepPlanet = "SELECT * FROM {{table}} ";
  1250. $QryDepPlanet .= "WHERE ";
  1251. $QryDepPlanet .= "`galaxy` = '". $FleetRow['fleet_start_galaxy'] ."' AND ";
  1252. $QryDepPlanet .= "`system` = '". $FleetRow['fleet_start_system'] ."' AND ";
  1253. $QryDepPlanet .= "`planet` = '". $FleetRow['fleet_start_planet'] ."' AND ";
  1254. $QryDepPlanet .= "`planet_type` = '". $FleetRow['fleet_start_type'] ."';";
  1255. $DepPlanet = doquery( $QryDepPlanet, 'planets', TRUE);
  1256. $DepName = $DepPlanet['name'];
  1257. $QryCurrentUser = "SELECT * FROM {{table}} ";
  1258. $QryCurrentUser .= "WHERE ";
  1259. $QryCurrentUser .= "`id` = '". $FleetRow['fleet_owner'] ."';";
  1260. $CurrentUser = doquery($QryCurrentUser , 'users', TRUE);
  1261. $CurrentUserID = $CurrentUser['id'];
  1262. $QryTargetUser = "SELECT * FROM {{table}} ";
  1263. $QryTargetUser .= "WHERE ";
  1264. $QryTargetUser .= "`id` = '". $TargetUserID ."';";
  1265. $TargetUser = doquery($QryTargetUser, 'users', TRUE);
  1266. for ($SetItem = 200; $SetItem < 500; $SetItem++)
  1267. {
  1268. if ($TargetPlanet[$resource[$SetItem]] > 0)
  1269. $TargetSet[$SetItem]['count'] = $TargetPlanet[$resource[$SetItem]];
  1270. }
  1271. $TheFleet = explode(";", $FleetRow['fleet_array']);
  1272. foreach($TheFleet as $a => $b)
  1273. {
  1274. if ($b != '')
  1275. {
  1276. $a = explode(",", $b);
  1277. $CurrentSet[$a[0]]['count'] = $a[1];
  1278. }
  1279. }
  1280. $walka = $this->walka($CurrentSet, $TargetSet, $CurrentUser, $TargetUser);
  1281. $CurrentSet = $walka["atakujacy"];
  1282. $TargetSet = $walka["wrog"];
  1283. $FleetResult = $walka["wygrana"];
  1284. $dane_do_rw = $walka["dane_do_rw"];
  1285. $zlom = $walka["zlom"];
  1286. $FleetArray = "";
  1287. $FleetAmount = 0;
  1288. $FleetStorage = 0;
  1289. foreach ($CurrentSet as $Ship => $Count)
  1290. {
  1291. $FleetStorage += $pricelist[$Ship]["capacity"] * $Count['count'];
  1292. $FleetArray .= $Ship.",".$Count['count'].";";
  1293. $FleetAmount += $Count['count'];
  1294. }
  1295. $TargetPlanetUpd = "";
  1296. if (!is_null($TargetSet))
  1297. {
  1298. foreach($TargetSet as $Ship => $Count)
  1299. {
  1300. $TargetPlanetUpd .= "`". $resource[$Ship] ."` = '". $Count['count'] ."', ";
  1301. }
  1302. }
  1303. if ($FleetResult == "a")
  1304. {
  1305. $destructionl1 = 100-sqrt($TargetPlanet['diameter']);
  1306. $destructionl21 = $destructionl1*sqrt($CurrentSet['214']['count']);
  1307. $destructionl2 = $destructionl21/1;
  1308. if ($destructionl2 > 100)
  1309. $chance = '100';
  1310. else
  1311. $chance = round($destructionl2);
  1312. $tirage = mt_rand(0, 100);
  1313. $probalune = sprintf ($lang['sys_destruc_lune'], $chance);
  1314. if($tirage <= $chance)
  1315. {
  1316. $resultat = '1';
  1317. $finmess = $lang['sys_destruc_reussi'];
  1318. doquery("DELETE FROM {{table}} WHERE `id` = '". $TargetPlanet['id'] ."';", 'planets');
  1319. $Qrydestructionlune = "UPDATE {{table}} SET ";
  1320. $Qrydestructionlune .= "`id_luna` = '0' ";
  1321. $Qrydestructionlune .= "WHERE ";
  1322. $Qrydestructionlune .= "`galaxy` = '". $FleetRow['fleet_end_galaxy'] ."' AND ";
  1323. $Qrydestructionlune .= "`system` = '". $FleetRow['fleet_end_system'] ."' AND ";
  1324. $Qrydestructionlune .= "`planet` = '". $FleetRow['fleet_end_planet'] ."' ";
  1325. $Qrydestructionlune .= "LIMIT 1 ;";
  1326. doquery( $Qrydestructionlune , 'galaxy');
  1327. $QryDetFleets1 = "UPDATE {{table}} SET ";
  1328. $QryDetFleets1 .= "`fleet_start_type` = '1' ";
  1329. $QryDetFleets1 .= "WHERE ";
  1330. $QryDetFleets1 .= "`fleet_start_galaxy` = '". $FleetRow['fleet_end_galaxy'] ."' AND ";
  1331. $QryDetFleets1 .= "`fleet_start_system` = '". $FleetRow['fleet_end_system'] ."' AND ";
  1332. $QryDetFleets1 .= "`fleet_start_planet` = '". $FleetRow['fleet_end_planet'] ."' ";
  1333. $QryDetFleets1 .= ";";
  1334. doquery( $QryDetFleets1 , 'fleets');
  1335. $QryDetFleets2 = "UPDATE {{table}} SET ";
  1336. $QryDetFleets2 .= "`fleet_end_type` = '1' ";
  1337. $QryDetFleets2 .= "WHERE ";
  1338. $QryDetFleets2 .= "`fleet_end_galaxy` = '". $FleetRow['fleet_end_galaxy'] ."' AND ";
  1339. $QryDetFleets2 .= "`fleet_end_system` = '". $FleetRow['fleet_end_system'] ."' AND ";
  1340. $QryDetFleets2 .= "`fleet_end_planet` = '". $FleetRow['fleet_end_planet'] ."' ";
  1341. $QryDetFleets2 .= ";";
  1342. doquery( $QryDetFleets2 , 'fleets');
  1343. if ($TargetUser['current_planet'] == $TargetPlanet['id'])
  1344. {
  1345. $QryPlanet = "SELECT * FROM {{table}} ";
  1346. $QryPlanet .= "WHERE ";
  1347. $QryPlanet .= "`galaxy` = '". $FleetRow['fleet_end_galaxy'] ."' AND ";
  1348. $QryPlanet .= "`system` = '". $FleetRow['fleet_end_system'] ."' AND ";
  1349. $QryPlanet .= "`planet` = '". $FleetRow['fleet_end_planet'] ."' AND ";
  1350. $QryPlanet .= "`planet_type` = '1';";
  1351. $Planet = doquery( $QryPlanet, 'planets', TRUE);
  1352. $IDPlanet = $Planet['id'];
  1353. $Qryvue = "UPDATE {{table}} SET ";
  1354. $Qryvue .= "`current_planet` = '". $IDPlanet ."' ";
  1355. $Qryvue .= "WHERE ";
  1356. $Qryvue .= "`id` = '". $TargetUserID ."' ";
  1357. $Qryvue .= ";";
  1358. doquery( $Qryvue , 'users');
  1359. }
  1360. }
  1361. else
  1362. $resultat = '0';
  1363. $destructionrip = sqrt($TargetPlanet['diameter'])/2;
  1364. $chance2 = round($destructionrip);
  1365. if ($resultat == 0)
  1366. {
  1367. $tirage2 = mt_rand(0, 100);
  1368. $probarip = sprintf ($lang['sys_destruc_rip'], $chance2);
  1369. if($tirage2 <= $chance2)
  1370. {
  1371. $resultat2 = ' detruite 1';
  1372. $finmess = $lang['sys_destruc_echec'];
  1373. doquery("DELETE FROM {{table}} WHERE `fleet_id` = '". $FleetRow["fleet_id"] ."';", 'fleets');
  1374. }
  1375. else
  1376. {
  1377. $resultat2 = 'sauvees 0';
  1378. $finmess = $lang['sys_destruc_null'];
  1379. }
  1380. }
  1381. }
  1382. $introdestruc = sprintf ($lang['sys_destruc_mess'], $DepName , $FleetRow['fleet_start_galaxy'], $FleetRow['fleet_start_system'], $FleetRow['fleet_start_planet'], $FleetRow['fleet_end_galaxy'], $FleetRow['fleet_end_system'], $FleetRow['fleet_end_planet']);
  1383. $QryUpdateTarget = "UPDATE {{table}} SET ";
  1384. $QryUpdateTarget .= $TargetPlanetUpd;
  1385. $QryUpdateTarget .= "`metal` = `metal` - '". $Mining['metal'] ."', ";
  1386. $QryUpdateTarget .= "`crystal` = `crystal` - '". $Mining['crystal'] ."', ";
  1387. $QryUpdateTarget .= "`deuterium` = `deuterium` - '". $Mining['deuter'] ."' ";
  1388. $QryUpdateTarget .= "WHERE ";
  1389. $QryUpdateTarget .= "`galaxy` = '". $FleetRow['fleet_end_galaxy'] ."' AND ";
  1390. $QryUpdateTarget .= "`system` = '". $FleetRow['fleet_end_system'] ."' AND ";
  1391. $QryUpdateTarget .= "`planet` = '". $FleetRow['fleet_end_planet'] ."' AND ";
  1392. $QryUpdateTarget .= "`planet_type` = '". $FleetRow['fleet_end_type'] ."' ";
  1393. $QryUpdateTarget .= "LIMIT 1;";
  1394. doquery( $QryUpdateTarget , 'planets');
  1395. $QryUpdateGalaxy = "UPDATE {{table}} SET ";
  1396. $QryUpdateGalaxy .= "`invisible_start_time` = '".time()."', ";
  1397. $QryUpdateGalaxy .= "`metal` = `metal` + '". $zlom['metal'] ."', ";
  1398. $QryUpdateGalaxy .= "`crystal` = `crystal` + '". $zlom['crystal'] ."' ";
  1399. $QryUpdateGalaxy .= "WHERE ";
  1400. $QryUpdateGalaxy .= "`galaxy` = '". $FleetRow['fleet_end_galaxy'] ."' AND ";
  1401. $QryUpdateGalaxy .= "`system` = '". $FleetRow['fleet_end_system'] ."' AND ";
  1402. $QryUpdateGalaxy .= "`planet` = '". $FleetRow['fleet_end_planet'] ."' ";
  1403. $QryUpdateGalaxy .= "LIMIT 1;";
  1404. doquery( $QryUpdateGalaxy , 'galaxy');
  1405. $FleetDebris = $zlom['metal'] + $zlom['crystal'];
  1406. $StrAttackerUnits = sprintf ($lang['sys_attacker_lostunits'], $zlom["atakujacy"]);
  1407. $StrDefenderUnits = sprintf ($lang['sys_defender_lostunits'], $zlom["wrog"]);
  1408. $StrRuins = sprintf ($lang['sys_gcdrunits'], $zlom["metal"], $lang['Metal'], $zlom['crystal'], $lang['Crystal']);
  1409. $DebrisField = $StrAttackerUnits ."<br />". $StrDefenderUnits ."<br />". $StrRuins;
  1410. $MoonChance = $FleetDebris / 100000;
  1411. if ($FleetDebris > 2000000)
  1412. {
  1413. $MoonChance = 20;
  1414. $ChanceMoon = sprintf ($lang['sys_moonproba'], $MoonChance);
  1415. }
  1416. elseif ($FleetDebris < 100000)
  1417. {
  1418. $UserChance = 0;
  1419. $ChanceMoon = sprintf ($lang['sys_moonproba'], $MoonChance);
  1420. }
  1421. elseif ($FleetDebris >= 100000)
  1422. {
  1423. $UserChance = mt_rand(1, 100);
  1424. $ChanceMoon = sprintf ($lang['sys_moonproba'], $MoonChance);
  1425. }
  1426. if (($UserChance > 0) and ($UserChance <= $MoonChance) and $galenemyrow['id_luna'] == 0)
  1427. {
  1428. $TargetPlanetName = CreateOneMoonRecord ( $FleetRow['fleet_end_galaxy'], $FleetRow['fleet_end_system'], $FleetRow['fleet_end_planet'], $TargetUserID, $FleetRow['fleet_start_time'], '', $MoonChance );
  1429. $GottenMoon = sprintf ($lang['sys_moonbuilt'], $TargetPlanetName, $FleetRow['fleet_end_galaxy'], $FleetRow['fleet_end_system'], $FleetRow['fleet_end_planet']);
  1430. }
  1431. elseif ($UserChance = 0 or $UserChance > $MoonChance)
  1432. $GottenMoon = "";
  1433. $AttackDate = date("r", $FleetRow["fleet_start_time"]);
  1434. $title = sprintf ($lang['sys_destruc_title'], $AttackDate);
  1435. $raport = "<center><table><tr><td>". $title ."<br />";
  1436. $zniszczony = FALSE;
  1437. $a_zestrzelona = 0;
  1438. $AttackTechon['A'] = $CurrentUser["military_tech"] * 10;
  1439. $AttackTechon['B'] = $CurrentUser["defence_tech"] * 10;
  1440. $AttackTechon['C'] = $CurrentUser["shield_tech"] * 10;
  1441. $AttackerData = sprintf ($lang['sys_attack_attacker_pos'], $CurrentUser["username"], $FleetRow['fleet_start_galaxy'], $FleetRow['fleet_start_system'], $FleetRow['fleet_start_planet'] );
  1442. $AttackerTech = sprintf ($lang['sys_attack_techologies'], $AttackTechon['A'], $AttackTechon['B'], $AttackTechon['C']);
  1443. $DefendTechon['A'] = $TargetUser["military_tech"] * 10;
  1444. $DefendTechon['B'] = $TargetUser["defence_tech"] * 10;
  1445. $DefendTechon['C'] = $TargetUser["shield_tech"] * 10;
  1446. $DefenderData = sprintf ($lang['sys_attack_defender_pos'], $TargetUser["username"], $FleetRow['fleet_end_galaxy'], $FleetRow['fleet_end_system'], $FleetRow['fleet_end_planet'] );
  1447. $DefenderTech = sprintf ($lang['sys_attack_techologies'], $DefendTechon['A'], $DefendTechon['B'], $DefendTechon['C']);
  1448. foreach ($dane_do_rw as $a => $b)
  1449. {
  1450. $raport .= "<table border=1 width=100%><tr><th><br /><center>".$AttackerData."<br />".$AttackerTech."<table border=1>";
  1451. if ($b["atakujacy"]['count'] > 0)
  1452. {
  1453. $raport1 = "<tr><th>".$lang['sys_ship_type']."</th>";
  1454. $raport2 = "<tr><th>".$lang['sys_ship_count']."</th>";
  1455. $raport3 = "<tr><th>".$lang['sys_ship_weapon']."</th>";
  1456. $raport4 = "<tr><th>".$lang['sys_ship_shield']."</th>";
  1457. $raport5 = "<tr><th>".$lang['sys_ship_armour']."</th>";
  1458. foreach ($b["atakujacy"] as $Ship => $Data)
  1459. {
  1460. if (is_numeric($Ship))
  1461. {
  1462. if ($Data['count'] > 0)
  1463. {
  1464. $raport1 .= "<th>". $lang["tech_rc"][$Ship] ."</th>";
  1465. $raport2 .= "<th>". $Data['count'] ."</th>";
  1466. $raport3 .= "<th>". round($Data["atak"] / $Data['count']) ."</th>";
  1467. $raport4 .= "<th>". round($Data["tarcza"] / $Data['count']) ."</th>";
  1468. $raport5 .= "<th>". round($Data["obrona"] / $Data['count']) ."</th>";
  1469. }
  1470. }
  1471. }
  1472. $raport1 .= "</tr>";
  1473. $raport2 .= "</tr>";
  1474. $raport3 .= "</tr>";
  1475. $raport4 .= "</tr>";
  1476. $raport5 .= "</tr>";
  1477. $raport .= $raport1 . $raport2 . $raport3 . $raport4 . $raport5;
  1478. }
  1479. else
  1480. {
  1481. if ($a == 2)
  1482. $a_zestrzelona = 1;
  1483. $zniszczony = TRUE;
  1484. $raport .= "<br />". $lang['sys_destroyed'];
  1485. }
  1486. $raport .= "</table></center></th></tr></table>";
  1487. $raport .= "<table border=1 width=100%><tr><th><br /><center>".$DefenderData."<br />".$DefenderTech."<table border=1>";
  1488. if ($b["wrog"]['count'] > 0)
  1489. {
  1490. $raport1 = "<tr><th>".$lang['sys_ship_type']."</th>";
  1491. $raport2 = "<tr><th>".$lang['sys_ship_count']."</th>";
  1492. $raport3 = "<tr><th>".$lang['sys_ship_weapon']."</th>";
  1493. $raport4 = "<tr><th>".$lang['sys_ship_shield']."</th>";
  1494. $raport5 = "<tr><th>".$lang['sys_ship_armour']."</th>";
  1495. foreach ($b["wrog"] as $Ship => $Data)
  1496. {
  1497. if (is_numeric($Ship))
  1498. {
  1499. if ($Data['count'] > 0)
  1500. {
  1501. $raport1 .= "<th>". $lang["tech_rc"][$Ship] ."</th>";
  1502. $raport2 .= "<th>". $Data['count'] ."</th>";
  1503. $raport3 .= "<th>". round($Data["atak"] / $Data['count']) ."</th>";
  1504. $raport4 .= "<th>". round($Data["tarcza"] / $Data['count']) ."</th>";
  1505. $raport5 .= "<th>". round($Data["obrona"] / $Data['count']) ."</th>";
  1506. }
  1507. }
  1508. }
  1509. $raport1 .= "</tr>";
  1510. $raport2 .= "</tr>";
  1511. $raport3 .= "</tr>";
  1512. $raport4 .= "</tr>";
  1513. $raport5 .= "</tr>";
  1514. $raport .= $raport1 . $raport2 . $raport3 . $raport4 . $raport5;
  1515. }
  1516. else
  1517. {
  1518. $zniszczony = TRUE;
  1519. $raport .= "<br />". $lang['sys_destroyed'];
  1520. }
  1521. $raport .= "</table></center></th></tr></table>";
  1522. if (($zniszczony == FALSE) and !($a == 8))
  1523. {
  1524. $AttackWaveStat = sprintf ($lang['sys_attack_attack_wave'], floor($b["atakujacy"]["atak"]), floor($b["wrog"]["tarcza"]));
  1525. $DefendWavaStat = sprintf ($lang['sys_attack_defend_wave'], floor($b["wrog"]["atak"]), floor($b["atakujacy"]["tarcza"]));
  1526. $raport .= "<br /><center>".$AttackWaveStat."<br />".$DefendWavaStat."</center>";
  1527. }
  1528. }
  1529. switch ($FleetResult)
  1530. {
  1531. case "a":
  1532. $raport .= $lang['sys_attacker_won'] ."<br />";
  1533. $raport .= $DebrisField ."<br />";
  1534. $raport .= $introdestruc ."<br />";
  1535. $raport .= $lang['sys_destruc_mess1'];
  1536. $raport .= $finmess ."<br />";
  1537. $raport .= $probalune ."<br />";
  1538. $raport .= $probarip ."<br />";
  1539. break;
  1540. case "r":
  1541. $raport .= $lang['sys_both_won'] ."<br />";
  1542. $raport .= $DebrisField ."<br />";
  1543. $raport .= $introdestruc ."<br />";
  1544. $raport .= $lang['sys_destruc_stop'] ."<br />";
  1545. break;
  1546. case "w":
  1547. $raport .= $lang['sys_defender_won'] ."<br />";
  1548. $raport .= $DebrisField ."<br />";
  1549. $raport .= $introdestruc ."<br />";
  1550. $raport .= $lang['sys_destruc_stop'] ."<br />";
  1551. doquery("DELETE FROM {{table}} WHERE `fleet_id` = '". $FleetRow["fleet_id"] ."';", 'fleets');
  1552. break;
  1553. }
  1554. $raport .= "</table>";
  1555. $rid = md5($raport);
  1556. $owners = $FleetRow['fleet_owner'].",".$TargetUserID;
  1557. $QryInsertRapport = "INSERT INTO {{table}} SET ";
  1558. $QryInsertRapport .= "`time` = UNIX_TIMESTAMP(), ";
  1559. $QryInsertRapport .= "`owners` = '". $owners ."', ";
  1560. $QryInsertRapport .= "`rid` = '". $rid ."', ";
  1561. $QryInsertRapport .= "`a_zestrzelona` = '". $a_zestrzelona ."', ";
  1562. $QryInsertRapport .= "`raport` = '". addslashes ( $raport ) ."';";
  1563. doquery( $QryInsertRapport , 'rw');
  1564. $raport = "<a href=\"#\" OnClick=\'f(\"CombatReport.php?raport=". $rid ."\", \"\");\' >";
  1565. $raport .= "<center>";
  1566. if($FleetResult == "a")
  1567. $raport .= "<font color=\"green\">";
  1568. elseif ($FleetResult == "r")
  1569. $raport .= "<font color=\"orange\">";
  1570. elseif ($FleetResult == "w")
  1571. $raport .= "<font color=\"red\">";
  1572. $raport .= $lang['sys_mess_destruc_report'] ." [". $FleetRow['fleet_end_galaxy'] .":". $FleetRow['fleet_end_system'] .":". $FleetRow['fleet_end_planet'] ."] </font></a><br /><br />";
  1573. $raport .= "<font color=\"red\">". $lang['sys_perte_attaquant'] .": ". $zlom["atakujacy"] ."</font>";
  1574. $raport .= "<font color=\"green\"> ". $lang['sys_perte_defenseur'] .":". $zlom["wrog"] ."</font><br />" ;
  1575. $raport .= $lang['sys_debris'] ." ". $lang['Metal'] .":<font color=\"#adaead\">". $zlom['metal'] ."</font> ". $lang['Crystal'] .":<font color=\"#ef51ef\">". $zlom['crystal'] ."</font><br /></center>";
  1576. $QryUpdateFleet = "UPDATE {{table}} SET ";
  1577. $QryUpdateFleet .= "`fleet_amount` = '". $FleetAmount ."', ";
  1578. $QryUpdateFleet .= "`fleet_array` = '". $FleetArray ."', ";
  1579. $QryUpdateFleet .= "`fleet_mess` = '1' ";
  1580. $QryUpdateFleet .= "WHERE fleet_id = '". intval($FleetRow['fleet_id']) ."' ";
  1581. $QryUpdateFleet .= "LIMIT 1 ;";
  1582. doquery( $QryUpdateFleet , 'fleets');
  1583. SendSimpleMessage ( $CurrentUserID, '', $FleetRow['fleet_start_time'], 3, $lang['sys_mess_tower'], $lang['sys_mess_destruc_report'], $raport );
  1584. $raport2 = "<a href=\"#\" OnClick=\'f(\"CombatReport.php?raport=". $rid ."\", \"\");\' >";
  1585. $raport2 .= "<center>";
  1586. if($FleetResult == "a")
  1587. $raport2 .= "<font color=\"red\">";
  1588. elseif ($FleetResult == "r")
  1589. $raport2 .= "<font color=\"orange\">";
  1590. elseif ($FleetResult == "w")
  1591. $raport2 .= "<font color=\"green\">";
  1592. $raport2 .= $lang['sys_mess_destruc_report'] ." [". $FleetRow['fleet_end_galaxy'] .":". $FleetRow['fleet_end_system'] .":". $FleetRow['fleet_end_planet'] ."] </font></a><br /><br />";
  1593. SendSimpleMessage ( $TargetUserID, '', $FleetRow['fleet_start_time'], 3, $lang['sys_mess_tower'], $lang['sys_mess_destruc_report'], $raport2 );
  1594. }
  1595. $fquery = "";
  1596. if ($FleetRow['fleet_end_time'] <= time())
  1597. {
  1598. if (!is_null($CurrentSet))
  1599. {
  1600. foreach($CurrentSet as $Ship => $Count)
  1601. {
  1602. $fquery .= "`". $resource[$Ship] ."` = `". $resource[$Ship] ."` + '". $Count['count'] ."', ";
  1603. }
  1604. }
  1605. else
  1606. {
  1607. $fleet = explode(";", $FleetRow['fleet_array']);
  1608. foreach($fleet as $a => $b)
  1609. {
  1610. if ($b != '')
  1611. {
  1612. $a = explode(",", $b);
  1613. $fquery .= "{$resource[$a[0]]}={$resource[$a[0]]} + {$a[1]}, \n";
  1614. }
  1615. }
  1616. }
  1617. doquery ("DELETE FROM {{table}} WHERE `fleet_id` = " . $FleetRow["fleet_id"], 'fleets');
  1618. if (!($FleetResult == "w"))
  1619. {
  1620. $QryUpdatePlanet = "UPDATE {{table}} SET ";
  1621. $QryUpdatePlanet .= $fquery;
  1622. $QryUpdatePlanet .= "`metal` = `metal` + ". $FleetRow['fleet_resource_metal'] .", ";
  1623. $QryUpdatePlanet .= "`crystal` = `crystal` + ". $FleetRow['fleet_resource_crystal'] .", ";
  1624. $QryUpdatePlanet .= "`deuterium` = `deuterium` + ". $FleetRow['fleet_resource_deuterium'] ." ";
  1625. $QryUpdatePlanet .= "WHERE ";
  1626. $QryUpdatePlanet .= "`galaxy` = ".$FleetRow['fleet_start_galaxy']." AND ";
  1627. $QryUpdatePlanet .= "`system` = ".$FleetRow['fleet_start_system']." AND ";
  1628. $QryUpdatePlanet .= "`planet` = ".$FleetRow['fleet_start_planet']." AND ";
  1629. $QryUpdatePlanet .= "`planet_type` = ".$FleetRow['fleet_start_type']." LIMIT 1 ;";
  1630. doquery( $QryUpdatePlanet, 'planets' );
  1631. }
  1632. }
  1633. }
  1634. }
  1635. private function MissionCaseMIP ($FleetRow)
  1636. {
  1637. global $user, $pricelist, $lang, $resource, $CombatCaps;
  1638. if ($FleetRow['fleet_start_time'] <= time())
  1639. {
  1640. if ($FleetRow['fleet_mess'] == 0)
  1641. {
  1642. $planet = doquery('SELECT * FROM {{table}} WHERE `galaxy` = '.$FleetRow['fleet_end_galaxy'].' AND `system` = '.$FleetRow['fleet_end_system'].' AND `planet` = '.$FleetRow['fleet_end_planet'].' AND `planet_type` = '.$FleetRow['fleet_end_type'], 'planets', TRUE);
  1643. $Target = doquery('SELECT id, defence_tech FROM {{table}} WHERE `galaxy` = '.$FleetRow['fleet_end_galaxy'].' AND `system` = '.$FleetRow['fleet_end_system'].' AND `planet` = '.$FleetRow['fleet_end_planet'], 'users', TRUE);
  1644. if ($planet['interceptor_misil'] >= $FleetRow['fleet_amount'])
  1645. {
  1646. $message = $lang["ma_all_destroyed"] . '<br>';
  1647. doquery("UPDATE {{table}} SET ".$resource[502]." = ".$resource[502]." - ".$FleetRow['fleet_amount']." WHERE id = ".$planet['id'], 'planets');
  1648. }
  1649. else
  1650. {
  1651. doquery("UPDATE {{table}} SET ".$resource[502]." = '0' WHERE id = ".$planet['id'], 'planets');
  1652. if ($planet['interceptor_misil'] > 0)
  1653. $message .= $planet['interceptor_misil'].$lang['ma_some_destroyed']." <br>";
  1654. $attack = floor(($FleetRow['fleet_amount'] - $planet['interceptor_misil']) * ($CombatCaps[503]['attack'] * (1 + ($user["military_tech"] / 10))));
  1655. switch ($FleetRow['fleet_target_obj'])
  1656. {
  1657. case 0:
  1658. $attack_order = Array(401, 402, 403, 404, 405, 406, 407, 408, 503);
  1659. break;
  1660. case 1:
  1661. $attack_order = Array(402, 401, 403, 404, 405, 406, 407, 408, 503);
  1662. break;
  1663. case 2:
  1664. $attack_order = Array(403, 401, 402, 404, 405, 406, 407, 408, 503);
  1665. break;
  1666. case 3:
  1667. $attack_order = Array(404, 401, 402, 403, 405, 406, 407, 408, 503);
  1668. break;
  1669. case 4:
  1670. $attack_order = Array(405, 401, 402, 403, 404, 406, 407, 408, 503);
  1671. break;
  1672. case 5:
  1673. $attack_order = Array(406, 401, 402, 403, 404, 405, 407, 408, 503);
  1674. break;
  1675. case 6:
  1676. $attack_order = Array(407, 401, 402, 403, 404, 405, 406, 408, 503);
  1677. break;
  1678. case 7:
  1679. $attack_order = Array(408, 401, 402, 403, 404, 405, 406, 407, 503);
  1680. break;
  1681. case 8:
  1682. $attack_order = Array(401, 402, 403, 404, 405, 406, 407, 408, 503);
  1683. break;
  1684. }
  1685. for ($t = 0; $t < 10; $t++)
  1686. {
  1687. $n = $attack_order[$t];
  1688. if ($planet[$resource[$n]])
  1689. {
  1690. $defense = (($pricelist[$n]['metal'] + $pricelist[$n]['crystal']) / 10) * (1 + ($Target['defence_tech'] / 10));
  1691. if ($attack >= ($defense * $planet[$resource[$n]]))
  1692. {
  1693. $destroyed = $planet[$resource[$n]];
  1694. }
  1695. else
  1696. {
  1697. $destroyed = floor($attack / $defense);
  1698. }
  1699. $attack -= $destroyed * $defense;
  1700. if ($destroyed != 0)
  1701. {
  1702. $message .= $lang['tech'][$n] . " (-" . $destroyed . ")<br>";
  1703. doquery("UPDATE {{table}} SET ".$resource[$n]." = ".$resource[$n]." - ".$destroyed." WHERE id = ".$planet['id'], 'planets');
  1704. }
  1705. }
  1706. }
  1707. }
  1708. $UserPlanet = doquery('SELECT name FROM {{table}} WHERE `galaxy` = '.$FleetRow['fleet_start_galaxy'].' AND `system` = '.$FleetRow['fleet_start_system'].' AND `planet` = '.$FleetRow['fleet_start_planet'].' AND `planet_type` = '.$FleetRow['fleet_start_type'], 'planets', TRUE);
  1709. $search=array('%1%','%2%','%3%');
  1710. $replace=array($FleetRow['fleet_amount'], $UserPlanet['name'].' ['. $FleetRow['fleet_start_galaxy'] .':'. $FleetRow['fleet_start_system'] .':'. $FleetRow['fleet_start_planet'].'] ', $planet['name']. ' ['. $FleetRow['fleet_end_galaxy'] .':'. $FleetRow['fleet_end_system'] .':'. $FleetRow['fleet_end_planet'].'] ');
  1711. $message_vorlage=str_replace($search,$replace,$lang['ma_missile_string']);
  1712. if (empty($message))
  1713. $message = $lang['ma_planet_without_defens'];
  1714. SendSimpleMessage($Target['id'], '', $FleetRow['fleet_end_time'], 3, $lang['sys_mess_tower'], $lang['gl_missile_attack'], $message_vorlage . $message);
  1715. doquery("DELETE FROM {{table}} WHERE fleet_id = '" . intval($FleetRow['fleet_id']) . "'", 'fleets');
  1716. }
  1717. }
  1718. }
  1719. private function MissionCaseExpedition($FleetRow)
  1720. {
  1721. global $lang, $resource, $pricelist;
  1722. $FleetOwner = $FleetRow['fleet_owner'];
  1723. $MessSender = $lang['sys_mess_qg'];
  1724. $MessTitle = $lang['sys_expe_report'];
  1725. if ($FleetRow['fleet_mess'] == 0)
  1726. {
  1727. if ($FleetRow['fleet_end_stay'] < time())
  1728. {
  1729. $PointsFlotte = array (
  1730. 202 => 1.0,
  1731. 203 => 1.5,
  1732. 204 => 0.5,
  1733. 205 => 1.5,
  1734. 206 => 2.0,
  1735. 207 => 2.5,
  1736. 208 => 0.5,
  1737. 209 => 1.0,
  1738. 210 => 0.01,
  1739. 211 => 3.0,
  1740. 212 => 0.0,
  1741. 213 => 3.5,
  1742. 214 => 5.0,
  1743. 215 => 3.2,
  1744. );
  1745. $RatioGain = array (
  1746. 202 => 0.1,
  1747. 203 => 0.1,
  1748. 204 => 0.1,
  1749. 205 => 0.5,
  1750. 206 => 0.25,
  1751. 207 => 0.125,
  1752. 208 => 0.5,
  1753. 209 => 0.1,
  1754. 210 => 0.1,
  1755. 211 => 0.0625,
  1756. 212 => 0.0,
  1757. 213 => 0.0625,
  1758. 214 => 0.03125,
  1759. 215 => 0.0625,
  1760. );
  1761. $FleetStayDuration = ($FleetRow['fleet_end_stay'] - $FleetRow['fleet_start_time']) / 3600;
  1762. $farray = explode(";", $FleetRow['fleet_array']);
  1763. foreach ($farray as $Item => $Group)
  1764. {
  1765. if ($Group != '')
  1766. {
  1767. $Class = explode (",", $Group);
  1768. $TypeVaisseau = $Class[0];
  1769. $NbreVaisseau = $Class[1];
  1770. $LaFlotte[$TypeVaisseau] = $NbreVaisseau;
  1771. $FleetCapacity += $pricelist[$TypeVaisseau]['capacity'] * $NbreVaisseau;
  1772. $FleetPoints += ($NbreVaisseau * $PointsFlotte[$TypeVaisseau]);
  1773. }
  1774. }
  1775. $FleetUsedCapacity = $FleetRow['fleet_resource_metal'] + $FleetRow['fleet_resource_crystal'] + $FleetRow['fleet_resource_deuterium'] + $FleetRow['fleet_resource_darkmatter'];
  1776. $FleetCapacity -= $FleetUsedCapacity;
  1777. $FleetCount = $FleetRow['fleet_amount'];
  1778. $Hasard = rand(0, 10);
  1779. $MessSender = $lang['sys_mess_qg']. "(".$Hasard.")";
  1780. if ($Hasard < 3)
  1781. {
  1782. $Hasard += 1;
  1783. $LostAmount = (($Hasard * 33) + 1) / 100;
  1784. if ($LostAmount == 1)
  1785. {
  1786. SendSimpleMessage ( $FleetOwner, '', $FleetRow['fleet_end_stay'], 15, $MessSender, $MessTitle, $lang['sys_expe_blackholl_2'] );
  1787. doquery ("DELETE FROM {{table}} WHERE `fleet_id` = ". $FleetRow["fleet_id"], 'fleets');
  1788. }
  1789. else
  1790. {
  1791. $all_destroyed = TRUE;
  1792. foreach ($LaFlotte as $Ship => $Count)
  1793. {
  1794. if(floor($Count * $LostAmount)!=0)
  1795. {
  1796. $LostShips[$Ship] = floor($Count * $LostAmount);
  1797. $NewFleetArray .= $Ship.",". ($Count - $LostShips[$Ship]) .";";
  1798. $all_destroyed = FALSE;
  1799. }
  1800. }
  1801. if(!$all_destroyed)
  1802. {
  1803. $QryUpdateFleet = "UPDATE {{table}} SET ";
  1804. $QryUpdateFleet .= "`fleet_array` = '". $NewFleetArray ."', ";
  1805. $QryUpdateFleet .= "`fleet_mess` = '1' ";
  1806. $QryUpdateFleet .= "WHERE ";
  1807. $QryUpdateFleet .= "`fleet_id` = '". $FleetRow["fleet_id"] ."';";
  1808. doquery( $QryUpdateFleet, 'fleets');
  1809. SendSimpleMessage ( $FleetOwner, '', $FleetRow['fleet_end_stay'], 15, $MessSender, $MessTitle, $lang['sys_expe_blackholl_1'] );
  1810. }
  1811. else
  1812. {
  1813. SendSimpleMessage ( $FleetOwner, '', $FleetRow['fleet_end_stay'], 15, $MessSender, $MessTitle, $lang['sys_expe_blackholl_2'] );
  1814. doquery ("DELETE FROM {{table}} WHERE `fleet_id` = ". $FleetRow["fleet_id"], 'fleets');
  1815. }
  1816. }
  1817. }
  1818. elseif ($Hasard == 3)
  1819. {
  1820. doquery("UPDATE {{table}} SET `fleet_mess` = '1' WHERE `fleet_id` = ". $FleetRow["fleet_id"], 'fleets');
  1821. SendSimpleMessage ( $FleetOwner, '', $FleetRow['fleet_end_stay'], 15, $MessSender, $MessTitle, $lang['sys_expe_nothing_1'] );
  1822. }
  1823. elseif ($Hasard >= 4 && $Hasard < 7)
  1824. {
  1825. if ($FleetCapacity > 5000)
  1826. {
  1827. $MinCapacity = $FleetCapacity - 5000;
  1828. $MaxCapacity = $FleetCapacity;
  1829. $FoundGoods = rand($MinCapacity, $MaxCapacity);
  1830. $FoundMetal = intval($FoundGoods / 2);
  1831. $FoundCrist = intval($FoundGoods / 4);
  1832. $FoundDeute = intval($FoundGoods / 6);
  1833. $FoundDark = ( $FleetCapacity > 10000 ) ? intval ( 3 * log ( $FleetCapacity / 10000 ) * 100 ) : 0;
  1834. $FoundDark = mt_rand ( $FoundDark / 2 , $FoundDark );
  1835. $QryUpdateFleet = "UPDATE {{table}} SET ";
  1836. $QryUpdateFleet .= "`fleet_resource_metal` = `fleet_resource_metal` + '". $FoundMetal ."', ";
  1837. $QryUpdateFleet .= "`fleet_resource_crystal` = `fleet_resource_crystal` + '". $FoundCrist."', ";
  1838. $QryUpdateFleet .= "`fleet_resource_deuterium` = `fleet_resource_deuterium` + '". $FoundDeute ."', ";
  1839. $QryUpdateFleet .= "`fleet_resource_darkmatter` = `fleet_resource_darkmatter` + '". $FoundDark ."', ";
  1840. $QryUpdateFleet .= "`fleet_mess` = '1' ";
  1841. $QryUpdateFleet .= "WHERE ";
  1842. $QryUpdateFleet .= "`fleet_id` = '". $FleetRow["fleet_id"] ."';";
  1843. doquery( $QryUpdateFleet, 'fleets');
  1844. $Message = sprintf($lang['sys_expe_found_goods'],
  1845. Format::pretty_number($FoundMetal), $lang['Metal'],
  1846. Format::pretty_number($FoundCrist), $lang['Crystal'],
  1847. Format::pretty_number($FoundDeute), $lang['Deuterium'],
  1848. Format::pretty_number($FoundDark), $lang['Darkmatter']);
  1849. SendSimpleMessage ( $FleetOwner, '', $FleetRow['fleet_end_stay'], 15, $MessSender, $MessTitle, $Message );
  1850. }
  1851. }
  1852. elseif ($Hasard == 7)
  1853. {
  1854. doquery("UPDATE {{table}} SET `fleet_mess` = '1' WHERE `fleet_id` = ". $FleetRow["fleet_id"], 'fleets');
  1855. SendSimpleMessage ( $FleetOwner, '', $FleetRow['fleet_end_stay'], 15, $MessSender, $MessTitle, $lang['sys_expe_nothing_2'] );
  1856. }
  1857. elseif ($Hasard >= 8 && $Hasard < 11)
  1858. {
  1859. $FoundChance = $FleetPoints / $FleetCount;
  1860. for ($Ship = 202; $Ship <= 215; $Ship++)
  1861. {
  1862. if ($LaFlotte[$Ship] != 0)
  1863. {
  1864. $FoundShip[$Ship] = round($LaFlotte[$Ship] * $RatioGain[$Ship]) + 1;
  1865. if ($FoundShip[$Ship] > 0)
  1866. $LaFlotte[$Ship] += $FoundShip[$Ship];
  1867. }
  1868. }
  1869. $NewFleetArray = "";
  1870. $FoundShipMess = "";
  1871. foreach ($LaFlotte as $Ship => $Count)
  1872. {
  1873. if ($Count > 0)
  1874. $NewFleetArray .= $Ship.",". $Count .";";
  1875. }
  1876. if ( $FoundShip != NULL )
  1877. {
  1878. foreach ($FoundShip as $Ship => $Count)
  1879. {
  1880. if ($Count != 0)
  1881. $FoundShipMess .= $Count." ".$lang['tech'][$Ship].",";
  1882. }
  1883. }
  1884. $QryUpdateFleet = "UPDATE {{table}} SET ";
  1885. $QryUpdateFleet .= "`fleet_array` = '". $NewFleetArray ."', ";
  1886. $QryUpdateFleet .= "`fleet_mess` = '1' ";
  1887. $QryUpdateFleet .= "WHERE ";
  1888. $QryUpdateFleet .= "`fleet_id` = '". $FleetRow["fleet_id"] ."';";
  1889. doquery( $QryUpdateFleet, 'fleets');
  1890. $Message = $lang['sys_expe_found_ships']. $FoundShipMess . "";
  1891. SendSimpleMessage ( $FleetOwner, '', $FleetRow['fleet_end_stay'], 15, $MessSender, $MessTitle, $Message);
  1892. }
  1893. }
  1894. }
  1895. else
  1896. {
  1897. if ($FleetRow['fleet_end_time'] < time())
  1898. {
  1899. $farray = explode(";", $FleetRow['fleet_array']);
  1900. foreach ($farray as $Item => $Group)
  1901. {
  1902. if ($Group != '')
  1903. {
  1904. $Class = explode (",", $Group);
  1905. $FleetAutoQuery .= "`". $resource[$Class[0]]. "` = `". $resource[$Class[0]] ."` + ". $Class[1] .", ";
  1906. }
  1907. }
  1908. $QryUpdatePlanet = "UPDATE {{table}} SET ";
  1909. $QryUpdatePlanet .= $FleetAutoQuery;
  1910. $QryUpdatePlanet .= "`metal` = `metal` + ". $FleetRow['fleet_resource_metal'] .", ";
  1911. $QryUpdatePlanet .= "`crystal` = `crystal` + ". $FleetRow['fleet_resource_crystal'] .", ";
  1912. $QryUpdatePlanet .= "`deuterium` = `deuterium` + ". $FleetRow['fleet_resource_deuterium'] ." ";
  1913. $QryUpdatePlanet .= "WHERE ";
  1914. $QryUpdatePlanet .= "`galaxy` = '". $FleetRow['fleet_start_galaxy'] ."' AND ";
  1915. $QryUpdatePlanet .= "`system` = '". $FleetRow['fleet_start_system'] ."' AND ";
  1916. $QryUpdatePlanet .= "`planet` = '". $FleetRow['fleet_start_planet'] ."' AND ";
  1917. $QryUpdatePlanet .= "`planet_type` = '". $FleetRow['fleet_start_type'] ."' ";
  1918. $QryUpdatePlanet .= "LIMIT 1 ;";
  1919. doquery( $QryUpdatePlanet, 'planets');
  1920. doquery("UPDATE `{{table}}` SET `darkmatter` = `darkmatter` + '".$FleetRow['fleet_resource_darkmatter']."' WHERE `id` =".$FleetRow['fleet_owner']." LIMIT 1 ;", 'users');
  1921. doquery ("DELETE FROM {{table}} WHERE `fleet_id` = ". intval($FleetRow["fleet_id"]), 'fleets');
  1922. SendSimpleMessage ( $FleetOwner, '', $FleetRow['fleet_end_time'], 15, $MessSender, $MessTitle, $lang['sys_expe_back_home'] );
  1923. }
  1924. }
  1925. }
  1926. public function __construct (&$planet)
  1927. {
  1928. global $resource;
  1929. doquery("LOCK TABLE {{table}}aks WRITE, {{table}}rw WRITE, {{table}}errors WRITE, {{table}}messages WRITE, {{table}}fleets WRITE, {{table}}planets WRITE, {{table}}galaxy WRITE ,{{table}}users WRITE", "");
  1930. $QryFleet = "SELECT * FROM {{table}} ";
  1931. $QryFleet .= "WHERE (";
  1932. $QryFleet .= "( ";
  1933. $QryFleet .= "`fleet_start_galaxy` = ". $planet['galaxy'] ." AND ";
  1934. $QryFleet .= "`fleet_start_system` = ". $planet['system'] ." AND ";
  1935. $QryFleet .= "`fleet_start_planet` = ". $planet['planet'] ." AND ";
  1936. $QryFleet .= "`fleet_start_type` = ". $planet['planet_type'] ." ";
  1937. $QryFleet .= ") OR ( ";
  1938. $QryFleet .= "`fleet_end_galaxy` = ". $planet['galaxy'] ." AND ";
  1939. $QryFleet .= "`fleet_end_system` = ". $planet['system'] ." AND ";
  1940. $QryFleet .= "`fleet_end_planet` = ". $planet['planet'] ." ) AND ";
  1941. $QryFleet .= "`fleet_end_type`= ". $planet['planet_type'] ." ) AND ";
  1942. $QryFleet .= "( `fleet_start_time` < '". time() ."' OR `fleet_end_time` < '". time() ."' );";
  1943. $fleetquery = doquery( $QryFleet, 'fleets' );
  1944. while ($CurrentFleet = mysql_fetch_array($fleetquery))
  1945. {
  1946. switch ($CurrentFleet["fleet_mission"])
  1947. {
  1948. case 1:
  1949. $this->MissionCaseAttack($CurrentFleet);
  1950. break;
  1951. case 2:
  1952. $this->MissionCaseACS($CurrentFleet);
  1953. break;
  1954. case 3:
  1955. $this->MissionCaseTransport($CurrentFleet);
  1956. break;
  1957. case 4:
  1958. $this->MissionCaseStay($CurrentFleet);
  1959. break;
  1960. case 5:
  1961. $this->MissionCaseStayAlly($CurrentFleet);
  1962. break;
  1963. case 6:
  1964. $this->MissionCaseSpy($CurrentFleet);
  1965. break;
  1966. case 7:
  1967. $this->MissionCaseColonisation($CurrentFleet);
  1968. break;
  1969. case 8:
  1970. $this->MissionCaseRecycling($CurrentFleet);
  1971. break;
  1972. case 9:
  1973. $this->MissionCaseDestruction($CurrentFleet);
  1974. break;
  1975. case 10:
  1976. $this->MissionCaseMIP($CurrentFleet);
  1977. break;
  1978. case 15:
  1979. $this->MissionCaseExpedition($CurrentFleet);
  1980. break;
  1981. default:
  1982. doquery("DELETE FROM {{table}} WHERE `fleet_id` = '". $CurrentFleet['fleet_id'] ."';", 'fleets');
  1983. }
  1984. }
  1985. doquery("UNLOCK TABLES", "");
  1986. }
  1987. }
  1988. ?>