Advertisement
Guest User

Untitled

a guest
Jun 30th, 2012
293
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.41 KB | None | 0 0
  1. <?php
  2. /**
  3. *
  4. * @ This file is created by deZender.Net
  5. * @ deZender (PHP4 Decoder for eAccelerator & MMCache)
  6. *
  7. * @ Version : 1.1.3.0
  8. * @ Author : DeZender
  9. * @ Release on : 17.05.2011
  10. * @ Official site : http://DeZender.Net
  11. *
  12. */
  13.  
  14. function check_recruit($id, $time) {
  15. global $db;
  16.  
  17. $result = $db->query( 'SELECT unit,num_unit,num_finished,time_start,time_finished,time_per_unit,villageid from recruit where id=\'' . $id . '\'' );
  18.  
  19. if ($row = $db->Fetch( $result )) {
  20. if (['num_unit'] < $units_finished = floor( $diff_time = $time - $row['time_start'] / $row['time_per_unit'] ) - $row['num_finished'] + $row['num_finished']) {
  21. $units_finished = $row['num_unit'] - ['num_finished'];
  22. }
  23.  
  24. $db->query( 'UPDATE unit_place SET ' . $row['unit'] . '=' . ['unit'] . ( '+\'' . $units_finished . '\' where villages_from_id=\'' ) . ['villageid'] . '\' AND villages_to_id=\'' . ['villageid'] . '\'' );
  25. $db->query( 'UPDATE villages SET all_' . $row['unit'] . '=all_' . ['unit'] . ( '+\'' . $units_finished . '\' where id=\'' ) . ['villageid'] . '\'' );
  26.  
  27. if ($units_finished + $row['num_finished'] == ['num_unit']) {
  28. $db->query( 'DELETE from recruit where id=\'' . $id . '\'' );
  29. return true;
  30. }
  31.  
  32. $db->query( 'UPDATE recruit SET num_finished=num_finished+\'' . $units_finished . '\' where id=\'' . $id . '\'' );
  33. return $row['time_start'] + ( $units_finished + ['num_finished'] ) * ['time_per_unit'] + ['time_per_unit'];
  34. }
  35.  
  36. }
  37.  
  38. function check_builds($id) {
  39. global $db;
  40.  
  41. $done = false;
  42. $reload_village = array( );
  43. $reload_player = array( );
  44. $result = $db->query( 'SELECT villageid,building,end_time from build where id=\'' . $id . '\'' );
  45.  
  46. while ($row = $db->Fetch( $result )) {
  47. $db->query( 'DELETE from build where id=\'' . $id . '\'' );
  48.  
  49. if ($db->affectedRows( ) == 1) {
  50. $result2 = $db->query( 'SELECT COUNT(*) AS build_count from build where villageid=\'' . $row['villageid'] . '\'' );
  51.  
  52. if ($row2 = $db->Fetch( $result2 )['build_count'] == '0') {
  53. $add_sql = ',main_build=\'\' ';
  54. } else {
  55. $result2 = $db->query( 'SELECT building,end_time from build where villageid=\'' . $row['villageid'] . '\' order by end_time LIMIT 1' );
  56. $add_sql = ',main_build=\'' . $next_build = $db->Fetch( $result2 )['building'] . ',' . ['end_time'] . '\' ';
  57. }
  58.  
  59.  
  60. if (!( ( ( ( !( $row['building'] == 'storage' ) && !( $row['building'] == 'wood' ) ) && !( $row['building'] == 'stone' ) ) && !( $row['building'] == 'iron' ) ))) {
  61. $res = $db->query( 'SELECT last_prod_aktu,wood,stone,iron,r_wood,r_stone,r_iron,storage from villages where id=' . $row['villageid'] . '' );
  62. ressis( $villagedata, $row['end_time'] );
  63. }
  64.  
  65. $db->query( 'UPDATE villages SET ' . $row['building'] . '=' . ['building'] . ( '+1 ' . $add_sql . ' where id=\'' ) . ['villageid'] . '\'' );
  66. return $row['villageid'];
  67. }
  68. }
  69.  
  70. }
  71.  
  72. function check_tech($id) {
  73. global $db;
  74.  
  75. $return = array( );
  76. $result = $db->query( 'SELECT research,villageid from research where id=\'' . $id . '\'' );
  77.  
  78. while ($row = $db->Fetch( $result )) {
  79. $db->query( 'DELETE from research where id=\'' . $id . '\'' );
  80. $db->query( 'UPDATE villages SET unit_' . $row['research'] . '_tec_level=unit_' . ['research'] . '_tec_level+\'1\',smith_tec=\'\' where id=\'' . ['villageid'] . '\'' );
  81. }
  82.  
  83. }
  84.  
  85. function check_dealers($id, $event_id) {
  86. global $db;
  87. global $cl_reports;
  88.  
  89. $result = $db->query( 'SELECT dealers,wood,stone,iron,type,from_village,to_village,start_time,end_time,from_userid,to_userid from dealers where id=\'' . $id . '\'' );
  90. $row = $db->Fetch( $result );
  91. $also_back = false;
  92.  
  93. if ($row['type'] == 'to') {
  94. $db->query( 'UPDATE villages SET r_wood=r_wood+' . $row['wood'] . ',r_stone=r_stone+' . ['stone'] . ',r_iron=r_iron+' . ['iron'] . ' where id=' . ['to_village'] . '' );
  95. $start_time = $row['end_time'];
  96.  
  97. if ($end_time = $row['end_time'] + ( ['end_time'] - ['start_time'] ) <= time( )) {
  98. $also_back = true;
  99. }
  100.  
  101. $db->query( 'UPDATE dealers SET wood=0,stone=0,iron=0,start_time=' . $start_time . ',end_time=' . $end_time . ',type=\'back\' where id=' . $id );
  102. $db->query( 'UPDATE events SET can_knot=0,event_time=' . $end_time . ',cid=0 WHERE event_id=' . $id . ' AND event_type=\'dealers\'' );
  103. $result = $db->query( 'SELECT name from villages where id=' . $row['from_village'] . '' );
  104. $from_village = $db->Fetch( $result );
  105. $result = $db->query( 'SELECT username from users where id=' . $row['to_userid'] . '' );
  106. $to_user = $db->Fetch( $result );
  107. $cl_reports->sendRess( $row['from_userid'], $row['from_village'], entparse( $from_village['name'] ), $row['to_userid'], entparse( $to_user['username'] ), $row['to_village'], $row['wood'], $row['stone'], $row['iron'], $row['end_time'] );
  108.  
  109. if (!( $also_back)) {
  110. $db->query( 'DELETE from run_events where id=\'' . $event_id . 'dealers\'' );
  111. return false;
  112. }
  113. }
  114.  
  115. if (!( ( !( $row['type'] == 'back' ) && !$also_back ))) {
  116. $db->query( 'UPDATE villages SET dealers_outside=dealers_outside-' . $row['dealers'] . ',r_wood=r_wood+' . ['wood'] . ',r_stone=r_stone+' . ['stone'] . ',r_iron=r_iron+' . ['iron'] . ' where id=' . ['from_village'] . '' );
  117. $db->query( 'DELETE from dealers where id=' . $id );
  118. return true;
  119. }
  120.  
  121. }
  122.  
  123. function do_movement($id, $event_id, $time) {
  124. global $db;
  125.  
  126. $result = $db->query( 'SELECT die,from_village,to_village,units,type,start_time,end_time,building,from_userid,to_userid,to_userid,wood,stone,iron from movements where id=\'' . $id . '\'' );
  127. $row = $db->Fetch( $result );
  128. $row['id'] = $id;
  129.  
  130. if (!( isset( $row['type'] ))) {
  131. $row['type'] = '';
  132. }
  133.  
  134. switch ($row['type']) {
  135. case 'attack': {
  136. global $session;
  137.  
  138. return do_movement_attack( $row, $event_id, $time );
  139. }
  140.  
  141. case 'support': {
  142. if ($row['die'] == '1') {
  143. $db->query( 'DELETE from movements where id=' . $row['id'] . '' );
  144. return true;
  145. }
  146.  
  147. return do_movement_support( $row );
  148. }
  149.  
  150. case 'return': {
  151. if ($row['die'] == '1') {
  152. $db->query( 'DELETE from movements where id=' . $row['id'] . '' );
  153. return true;
  154. }
  155.  
  156. return do_movement_return( $row );
  157. }
  158.  
  159. case 'back': {
  160. if ($row['die'] == '1') {
  161. $db->query( 'DELETE from movements where id=' . $row['id'] . '' );
  162. return true;
  163. }
  164.  
  165. return do_movement_back( $row );
  166. }
  167.  
  168. case 'cancel': {
  169. if ($row['die'] == '1') {
  170. $db->query( 'DELETE from movements where id=' . $row['id'] . '' );
  171. return true;
  172. }
  173.  
  174. return do_movement_back( $row );
  175. }
  176. }
  177.  
  178. }
  179.  
  180. function do_movement_back($row) {
  181. global $cl_units;
  182. global $db;
  183.  
  184. $sql = 'UPDATE unit_place SET ';
  185. $first = true;
  186. $i = 0;
  187. $ex_units = explode( ';', $row['units'] );
  188.  
  189. foreach ($cl_units->get_array( 'dbname' ) as $dbname) {
  190. if ($first) {
  191. $sql .= $dbname . '=' . $dbname . '+\'' . $ex_units[$i] . '\'';
  192. $first = false;
  193. } else {
  194. $sql .= ',' . $dbname . '=' . $dbname . '+\'' . $ex_units[$i] . '\'';
  195. }
  196.  
  197. ++$i;
  198. }
  199.  
  200. $sql .= ' WHERE villages_from_id=\'' . $row['from_village'] . '\' AND villages_to_id=\'' . ['from_village'] . '\'';
  201. $db->query( $sql );
  202. $db->query( 'DELETE from movements where id=\'' . $row['id'] . '\'' );
  203. return true;
  204. }
  205.  
  206. function do_movement_return($row) {
  207. global $cl_units;
  208. global $db;
  209.  
  210. $sql = 'UPDATE unit_place SET ';
  211. $first = true;
  212. $i = 0;
  213. $ex_units = explode( ';', $row['units'] );
  214.  
  215. foreach ($cl_units->get_array( 'dbname' ) as $dbname) {
  216. if ($first) {
  217. $sql .= $dbname . '=' . $dbname . '+\'' . $ex_units[$i] . '\'';
  218. $first = false;
  219. } else {
  220. $sql .= ',' . $dbname . '=' . $dbname . '+\'' . $ex_units[$i] . '\'';
  221. }
  222.  
  223. ++$i;
  224. }
  225.  
  226. $sql .= ' WHERE villages_from_id=\'' . $row['to_village'] . '\' AND villages_to_id=\'' . ['to_village'] . '\'';
  227. $db->query( $sql );
  228.  
  229. if (!( ( ( !( 0 < $row['wood'] ) && !( 0 < $row['stone'] ) ) && !( 0 < $row['iron'] ) ))) {
  230. $db->query( 'UPDATE villages SET r_wood=r_wood+\'' . $row['wood'] . '\',r_stone=r_stone+\'' . ['stone'] . '\',r_iron=r_iron+\'' . ['iron'] . '\' where id=\'' . ['to_village'] . '\'' );
  231. }
  232.  
  233. $db->query( 'DELETE from movements where id=\'' . $row['id'] . '\'' );
  234. return true;
  235. }
  236.  
  237. function do_movement_attack($row, $event_id, $event_time, $var = '') {
  238. global $db;
  239. global $cl_units;
  240. global $cl_builds;
  241. global $config;
  242. global $arr_maxhide;
  243. global $cl_reports;
  244.  
  245. $reload_allys = array( );
  246. $del_event = false;
  247. $att_ex_units = explode( ';', $row['units'] );
  248. $i = 0;
  249.  
  250. foreach ($cl_units->get_array( 'dbname' ) as $dbname) {
  251. $att[] = $att_ex_units[$i];
  252. ++$i;
  253. }
  254.  
  255. $first = true;
  256. $techs = '';
  257.  
  258. foreach ($cl_units->get_array( 'dbname' ) as $dbname) {
  259. while ($first) {
  260. $techs .= $dbname . '_tec_level AS ' . $dbname;
  261. $first = false;
  262. break;
  263. }
  264.  
  265. $techs .= ',' . $dbname . '_tec_level AS ' . $dbname;
  266. }
  267.  
  268. $result = $db->query( 'SELECT ' . $techs . ' from villages where id=\'' . $row['from_village'] . '\'' );
  269. $att_tech = $db->Fetch( $result );
  270. $first = true;
  271. $units = '';
  272.  
  273. foreach ($cl_units->get_array( 'dbname' ) as $dbname) {
  274. while ($first) {
  275. $units .= 'SUM(' . $dbname . ') AS ' . $dbname;
  276. $first = false;
  277. break;
  278. }
  279.  
  280. $units .= ',SUM(' . $dbname . ') AS ' . $dbname;
  281. }
  282.  
  283. $result = $db->query( 'SELECT ' . $units . ' from unit_place where villages_to_id=\'' . $row['to_village'] . '\'' );
  284. $def = $db->Fetch( $result );
  285. $first = true;
  286. $techs = '';
  287.  
  288. foreach ($cl_units->get_array( 'dbname' ) as $dbname) {
  289. while ($first) {
  290. $techs .= $dbname . '_tec_level AS ' . $dbname;
  291. $first = false;
  292. break;
  293. }
  294.  
  295. $techs .= ',' . $dbname . '_tec_level AS ' . $dbname;
  296. }
  297.  
  298.  
  299. if (!( empty( $row['building'] ))) {
  300. if ($row['building'] != 'storage') {
  301. if ($row['building'] != 'hide') {
  302. if ($row['building'] != 'wall') {
  303. if ($row['building'] != 'wood') {
  304. if ($row['building'] != 'stone') {
  305. if ($row['building'] != 'iron') {
  306. $techs .= ',' . $row['building'];
  307. }
  308. }
  309. }
  310. }
  311. }
  312. }
  313. }
  314.  
  315. $result = $db->query( 'SELECT ' . $techs . ',wall,r_wood,r_stone,r_iron,last_prod_aktu,storage,hide,wood,stone,iron,agreement,agreement_aktu,attacks,snobed_by from villages where id=\'' . $row['to_village'] . '\'' );
  316. $others['def_wall'] = $def_tech = $db->Fetch( $result )['wall'];
  317.  
  318. if ($row['building'] != 'wall') {
  319. unset( $def_tech[wall] );
  320. }
  321.  
  322. $def_ress['r_wood'] = $def_tech['r_wood'];
  323. unset( $def_tech[r_wood] );
  324. $def_ress['r_stone'] = $def_tech['r_stone'];
  325. unset( $def_tech[r_stone] );
  326. $def_ress['r_iron'] = $def_tech['r_iron'];
  327. unset( $def_tech[r_iron] );
  328. $def_ress['wood'] = $def_tech['wood'];
  329.  
  330. if ($row['building'] != 'wood') {
  331. unset( $def_tech[wood] );
  332. }
  333.  
  334. $def_ress['stone'] = $def_tech['stone'];
  335.  
  336. if ($row['building'] != 'stone') {
  337. unset( $def_tech[stone] );
  338. }
  339.  
  340. $def_ress['iron'] = $def_tech['iron'];
  341.  
  342. if ($row['building'] != 'iron') {
  343. unset( $def_tech[iron] );
  344. }
  345.  
  346. $def_ress['hide'] = $def_tech['hide'];
  347.  
  348. if ($row['building'] != 'hide') {
  349. unset( $def_tech[hide] );
  350. }
  351.  
  352. $def_ress['storage'] = $def_tech['storage'];
  353.  
  354. if ($row['building'] != 'storage') {
  355. unset( $def_tech[storage] );
  356. }
  357.  
  358. $def_ress['last_prod_aktu'] = $def_tech['last_prod_aktu'];
  359. unset( $def_tech[last_prod_aktu] );
  360. $def_ress['id'] = $row['to_village'];
  361. $def_agreement['agreement'] = $def_tech['agreement'];
  362. unset( $def_tech[agreement] );
  363. $def_agreement['agreement_aktu'] = $def_tech['agreement_aktu'];
  364. unset( $def_tech[agreement] );
  365. $def_agreement['id'] = $row['to_village'];
  366. $def_attacks = $def_tech['attacks'];
  367. unset( $def_tech[attacks] );
  368. $def_snobed_by = $def_tech['snobed_by'];
  369. unset( $def_tech[snobed_by] );
  370.  
  371. if (!( empty( $row['building'] ))) {
  372. $others['def_building'] = $def_tech[$row['building']];
  373. $others['cata_building'] = $row['building'];
  374. unset( $def_tech[$row['building']] );
  375. } else {
  376. $others['def_building'] = 0;
  377. $others['cata_building'] = '';
  378. }
  379.  
  380. $others['luck'] = mt_rand( -25, 25 );
  381.  
  382. if ($config['moral_activ']) {
  383. if ($row['to_userid'] == '-1') {
  384. $others['moral'] = 100;
  385. } else {
  386. $result = $db->query( 'SELECT points from users where id=\'' . $row['from_userid'] . '\'' );
  387. $att_player = $db->Fetch( $result );
  388. $result = $db->query( 'SELECT points from users where id=\'' . $row['to_userid'] . '\'' );
  389. $def_player = $db->Fetch( $result );
  390. $others['moral'] = calc_moral( $def_player['points'], $att_player['points'] );
  391. }
  392. } else {
  393. $others['moral'] = 100;
  394. }
  395.  
  396. $simulate = simulate( $att, $att_tech, $def, $def_tech, $others );
  397.  
  398. if ($row['building'] == 'storage') {
  399. $def_ress['storage'] = $simulate['others']['new_building'];
  400. }
  401.  
  402. $max_booty = 0;
  403.  
  404. foreach ($cl_units->get_array( 'dbname' ) as $dbname) {
  405. $max_booty += $cl_units->get_booty( $dbname ) * ( $simulate['att'][$dbname] - ['att_lose'][$dbname] );
  406. }
  407.  
  408. $ress_calc = ressis( $def_ress, $event_time );
  409. $ress_calc['r_wood'] -= $arr_maxhide[$def_ress['hide']];
  410. $ress_calc['r_stone'] -= $arr_maxhide[$def_ress['hide']];
  411. $ress_calc['r_iron'] -= $arr_maxhide[$def_ress['hide']];
  412. $ress_calc['r_wood'] = ( $ress_calc['r_wood'] < 0 ? 0 : $ress_calc['r_wood'] );
  413. $ress_calc['r_stone'] = ( $ress_calc['r_stone'] < 0 ? 0 : $ress_calc['r_stone'] );
  414. $ress_calc['r_iron'] = ( $ress_calc['r_iron'] < 0 ? 0 : $ress_calc['r_iron'] );
  415. $ress_calc['all_ress'] = $ress_calc['r_wood'] + ['r_stone'] + ['r_iron'];
  416. ( true ? $ress_calc['all_ress'] == '0' : 0 );
  417. $ress_calc['procent_wood'] = 100 / $ress_calc['all_ress'] * ['r_wood'];
  418. ( true ? $ress_calc['all_ress'] == '0' : 0 );
  419. $ress_calc['procent_stone'] = 100 / $ress_calc['all_ress'] * ['r_stone'];
  420. ( true ? $ress_calc['all_ress'] == '0' : 0 );
  421. $ress_calc['procent_iron'] = 100 / $ress_calc['all_ress'] * ['r_iron'];
  422. $booty['wood'] = ( $ress_calc['r_wood'] < $max_ress_booty = floor( $max_booty * ( $ress_calc['procent_wood'] / 100 ) ) ? $ress_calc['r_wood'] : $max_ress_booty );
  423. $booty['stone'] = ( $ress_calc['r_stone'] < $max_ress_booty = floor( $max_booty * ( $ress_calc['procent_stone'] / 100 ) ) ? $ress_calc['r_stone'] : $max_ress_booty );
  424. $booty['iron'] = ( $ress_calc['r_iron'] < $max_ress_booty = floor( $max_booty * ( $ress_calc['procent_iron'] / 100 ) ) ? $ress_calc['r_iron'] : $max_ress_booty );
  425. $stolen_booty = $booty['wood'] + ['stone'] + ['iron'];
  426. $not_enough_wood = false;
  427. $not_enough_stone = false;
  428. $not_enough_iron = false;
  429.  
  430. while ($stolen_booty < $max_booty) {
  431. if ($stolen_booty < $max_booty) {
  432. if (0 < $ress_calc['r_wood'] - $booty['wood']) {
  433. ++$booty['wood'];
  434. ++$stolen_booty;
  435. }
  436. } else {
  437. $not_enough_wood = true;
  438. }
  439.  
  440.  
  441. if ($stolen_booty < $max_booty) {
  442. if (0 < $ress_calc['r_stone'] - $booty['stone']) {
  443. ++$booty['stone'];
  444. ++$stolen_booty;
  445. }
  446. } else {
  447. $not_enough_stone = true;
  448. }
  449.  
  450.  
  451. if ($stolen_booty < $max_booty) {
  452. if (0 < $ress_calc['r_iron'] - $booty['iron']) {
  453. ++$booty['iron'];
  454. ++$stolen_booty;
  455. }
  456. } else {
  457. $not_enough_iron = true;
  458. }
  459.  
  460.  
  461. while ($not_enough_wood) {
  462. while ($not_enough_stone) {
  463. if ($not_enough_iron) {
  464. }
  465.  
  466. break 2;
  467. }
  468.  
  469. break;
  470. }
  471. }
  472.  
  473. ...............................................
  474. ......................
  475. ........
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement