Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- *
- * @ This file is created by deZender.Net
- * @ deZender (PHP4 Decoder for eAccelerator & MMCache)
- *
- * @ Version : 1.1.3.0
- * @ Author : DeZender
- * @ Release on : 17.05.2011
- * @ Official site : http://DeZender.Net
- *
- */
- function check_recruit($id, $time) {
- global $db;
- $result = $db->query( 'SELECT unit,num_unit,num_finished,time_start,time_finished,time_per_unit,villageid from recruit where id=\'' . $id . '\'' );
- if ($row = $db->Fetch( $result )) {
- if ($row['num_unit'] < $units_finished = floor( $diff_time = $time - $row['time_start'] / $row['time_per_unit'] ) - $row['num_finished'] + $row['num_finished']) {
- $units_finished = $row['num_unit'] - $row['num_finished'];
- }
- $db->query( 'UPDATE unit_place SET ' . $row['unit'] . '=' . $row['unit'] . ( '+\'' . $units_finished . '\' where villages_from_id=\'' ) . $row['villageid'] . '\' AND villages_to_id=\'' . $row['villageid'] . '\'' );
- $db->query( 'UPDATE villages SET all_' . $row['unit'] . '=all_' . $row['unit'] . ( '+\'' . $units_finished . '\' where id=\'' ) . $row['villageid'] . '\'' );
- if ($units_finished + $row['num_finished'] == $row['num_unit']) {
- $db->query( 'DELETE from recruit where id=\'' . $id . '\'' );
- return true;
- }
- $db->query( 'UPDATE recruit SET num_finished=num_finished+\'' . $units_finished . '\' where id=\'' . $id . '\'' );
- return $row['time_start'] + ( $units_finished + $row['num_finished'] ) * $row['time_per_unit'] + $row['time_per_unit'];
- }
- }
- function check_builds($id) {
- global $db;
- $done = false;
- $reload_village = array( );
- $reload_player = array( );
- $result = $db->query( 'SELECT villageid,building,end_time from build where id=\'' . $id . '\'' );
- while ($row = $db->Fetch( $result )) {
- $db->query( 'DELETE from build where id=\'' . $id . '\'' );
- if ($db->affectedRows( ) == 1) {
- $result2 = $db->query( 'SELECT COUNT(*) AS build_count from build where villageid=\'' . $row['villageid'] . '\'' );
- $row2 = $db->Fetch( $result2 );
- if ($row2['build_count'] == '0') {
- $add_sql = ',main_build=\'\' ';
- } else {
- $result2 = $db->query( 'SELECT building,end_time from build where villageid=\'' . $row['villageid'] . '\' order by end_time LIMIT 1' );
- $next_build = $db->Fetch( $result2 );
- $add_sql = ',main_build=\'' . $next_build['building'] . ',' . $next_build['end_time'] . '\' ';
- }
- if (!( ( ( ( !( $row['building'] == 'storage' ) && !( $row['building'] == 'wood' ) ) && !( $row['building'] == 'stone' ) ) && !( $row['building'] == 'iron' ) ))) {
- $res = $db->query( 'SELECT last_prod_aktu,wood,stone,iron,r_wood,r_stone,r_iron,storage from villages where id=' . $row['villageid'] . '' );
- ressis( $villagedata, $row['end_time'] );
- }
- $db->query( 'UPDATE villages SET ' . $row['building'] . '=' . $row['building'] . ( '+1 ' . $add_sql . ' where id=\'' ) . $row['villageid'] . '\'' );
- return $row['villageid'];
- }
- }
- }
- function check_tech($id) {
- global $db;
- $return = array( );
- $result = $db->query( 'SELECT research,villageid from research where id=\'' . $id . '\'' );
- while ($row = $db->Fetch( $result )) {
- $db->query( 'DELETE from research where id=\'' . $id . '\'' );
- $db->query( 'UPDATE villages SET unit_' . $row['research'] . '_tec_level=unit_' . $row['research'] . '_tec_level+\'1\',smith_tec=\'\' where id=\'' . $row['villageid'] . '\'' );
- }
- }
- function check_dealers($id, $event_id) {
- global $db;
- global $cl_reports;
- $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 . '\'' );
- $row = $db->Fetch( $result );
- $also_back = false;
- if ($row['type'] == 'to') {
- $db->query( 'UPDATE villages SET r_wood=r_wood+' . $row['wood'] . ',r_stone=r_stone+' . $row['stone'] . ',r_iron=r_iron+' . $row['iron'] . ' where id=' . $row['to_village'] . '' );
- $start_time = $row['end_time'];
- if ($end_time = $row['end_time'] + ( $row['end_time'] - $row['start_time'] ) <= time( )) {
- $also_back = true;
- }
- $db->query( 'UPDATE dealers SET wood=0,stone=0,iron=0,start_time=' . $start_time . ',end_time=' . $end_time . ',type=\'back\' where id=' . $id );
- $db->query( 'UPDATE events SET can_knot=0,event_time=' . $end_time . ',cid=0 WHERE event_id=' . $id . ' AND event_type=\'dealers\'' );
- $result = $db->query( 'SELECT name from villages where id=' . $row['from_village'] . '' );
- $from_village = $db->Fetch( $result );
- $result = $db->query( 'SELECT username from users where id=' . $row['to_userid'] . '' );
- $to_user = $db->Fetch( $result );
- $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'] );
- if (!( $also_back)) {
- $db->query( 'DELETE from run_events where id=\'' . $event_id . 'dealers\'' );
- return false;
- }
- }
- if (!( ( !( $row['type'] == 'back' ) && !$also_back ))) {
- $db->query( 'UPDATE villages SET dealers_outside=dealers_outside-' . $row['dealers'] . ',r_wood=r_wood+' . $row['wood'] . ',r_stone=r_stone+' . $row['stone'] . ',r_iron=r_iron+' . $row['iron'] . ' where id=' . $row['from_village'] . '' );
- $db->query( 'DELETE from dealers where id=' . $id );
- return true;
- }
- }
- function do_movement($id, $event_id, $time) {
- global $db;
- $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 . '\'' );
- $row = $db->Fetch( $result );
- $row['id'] = $id;
- if (!( isset( $row['type'] ))) {
- $row['type'] = '';
- }
- switch ($row['type']) {
- case 'attack': {
- global $session;
- return do_movement_attack( $row, $event_id, $time );
- }
- case 'support': {
- if ($row['die'] == '1') {
- $db->query( 'DELETE from movements where id=' . $row['id'] . '' );
- return true;
- }
- return do_movement_support( $row );
- }
- case 'return': {
- if ($row['die'] == '1') {
- $db->query( 'DELETE from movements where id=' . $row['id'] . '' );
- return true;
- }
- return do_movement_return( $row );
- }
- case 'back': {
- if ($row['die'] == '1') {
- $db->query( 'DELETE from movements where id=' . $row['id'] . '' );
- return true;
- }
- return do_movement_back( $row );
- }
- case 'cancel': {
- if ($row['die'] == '1') {
- $db->query( 'DELETE from movements where id=' . $row['id'] . '' );
- return true;
- }
- return do_movement_back( $row );
- }
- }
- }
- function do_movement_back($row) {
- global $cl_units;
- global $db;
- $sql = 'UPDATE unit_place SET ';
- $first = true;
- $i = 0;
- $ex_units = explode( ';', $row['units'] );
- foreach ($cl_units->get_array( 'dbname' ) as $dbname) {
- if ($first) {
- $sql .= $dbname . '=' . $dbname . '+\'' . $ex_units[$i] . '\'';
- $first = false;
- } else {
- $sql .= ',' . $dbname . '=' . $dbname . '+\'' . $ex_units[$i] . '\'';
- }
- ++$i;
- }
- $sql .= ' WHERE villages_from_id=\'' . $row['from_village'] . '\' AND villages_to_id=\'' . $row['from_village'] . '\'';
- $db->query( $sql );
- $db->query( 'DELETE from movements where id=\'' . $row['id'] . '\'' );
- return true;
- }
- function do_movement_return($row) {
- global $cl_units;
- global $db;
- $sql = 'UPDATE unit_place SET ';
- $first = true;
- $i = 0;
- $ex_units = explode( ';', $row['units'] );
- foreach ($cl_units->get_array( 'dbname' ) as $dbname) {
- if ($first) {
- $sql .= $dbname . '=' . $dbname . '+\'' . $ex_units[$i] . '\'';
- $first = false;
- } else {
- $sql .= ',' . $dbname . '=' . $dbname . '+\'' . $ex_units[$i] . '\'';
- }
- ++$i;
- }
- $sql .= ' WHERE villages_from_id=\'' . $row['to_village'] . '\' AND villages_to_id=\'' . $row['to_village'] . '\'';
- $db->query( $sql );
- if (!( ( ( !( 0 < $row['wood'] ) && !( 0 < $row['stone'] ) ) && !( 0 < $row['iron'] ) ))) {
- $db->query( 'UPDATE villages SET r_wood=r_wood+\'' . $row['wood'] . '\',r_stone=r_stone+\'' . $row['stone'] . '\',r_iron=r_iron+\'' . $row['iron'] . '\' where id=\'' . $row['to_village'] . '\'' );
- }
- $db->query( 'DELETE from movements where id=\'' . $row['id'] . '\'' );
- return true;
- }
- function do_movement_attack($row, $event_id, $event_time, $var = '') {
- global $db;
- global $cl_units;
- global $cl_builds;
- global $config;
- global $arr_maxhide;
- global $cl_reports;
- $reload_allys = array( );
- $del_event = false;
- $att_ex_units = explode( ';', $row['units'] );
- $i = 0;
- foreach ($cl_units->get_array( 'dbname' ) as $dbname) {
- $att[] = $att_ex_units[$i];
- ++$i;
- }
- $first = true;
- $techs = '';
- foreach ($cl_units->get_array( 'dbname' ) as $dbname) {
- while ($first) {
- $techs .= $dbname . '_tec_level AS ' . $dbname;
- $first = false;
- break;
- }
- $techs .= ',' . $dbname . '_tec_level AS ' . $dbname;
- }
- $result = $db->query( 'SELECT ' . $techs . ' from villages where id=\'' . $row['from_village'] . '\'' );
- $att_tech = $db->Fetch( $result );
- $first = true;
- $units = '';
- foreach ($cl_units->get_array( 'dbname' ) as $dbname) {
- while ($first) {
- $units .= 'SUM(' . $dbname . ') AS ' . $dbname;
- $first = false;
- break;
- }
- $units .= ',SUM(' . $dbname . ') AS ' . $dbname;
- }
- $result = $db->query( 'SELECT ' . $units . ' from unit_place where villages_to_id=\'' . $row['to_village'] . '\'' );
- $def = $db->Fetch( $result );
- $first = true;
- $techs = '';
- foreach ($cl_units->get_array( 'dbname' ) as $dbname) {
- while ($first) {
- $techs .= $dbname . '_tec_level AS ' . $dbname;
- $first = false;
- break;
- }
- $techs .= ',' . $dbname . '_tec_level AS ' . $dbname;
- }
- if (!( empty( $row['building'] ))) {
- if ($row['building'] != 'storage') {
- if ($row['building'] != 'hide') {
- if ($row['building'] != 'wall') {
- if ($row['building'] != 'wood') {
- if ($row['building'] != 'stone') {
- if ($row['building'] != 'iron') {
- $techs .= ',' . $row['building'];
- }
- }
- }
- }
- }
- }
- }
- $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'] . '\'' );
- $def_tech = $db->Fetch( $result );
- $others['def_wall'] = $def_tech['wall'];
- if ($row['building'] != 'wall') {
- unset( $def_tech[wall] );
- }
- $def_ress['r_wood'] = $def_tech['r_wood'];
- unset( $def_tech[r_wood] );
- $def_ress['r_stone'] = $def_tech['r_stone'];
- unset( $def_tech[r_stone] );
- $def_ress['r_iron'] = $def_tech['r_iron'];
- unset( $def_tech[r_iron] );
- $def_ress['wood'] = $def_tech['wood'];
- if ($row['building'] != 'wood') {
- unset( $def_tech[wood] );
- }
- $def_ress['stone'] = $def_tech['stone'];
- if ($row['building'] != 'stone') {
- unset( $def_tech[stone] );
- }
- $def_ress['iron'] = $def_tech['iron'];
- if ($row['building'] != 'iron') {
- unset( $def_tech[iron] );
- }
- $def_ress['hide'] = $def_tech['hide'];
- if ($row['building'] != 'hide') {
- unset( $def_tech[hide] );
- }
- $def_ress['storage'] = $def_tech['storage'];
- if ($row['building'] != 'storage') {
- unset( $def_tech[storage] );
- }
- $def_ress['last_prod_aktu'] = $def_tech['last_prod_aktu'];
- unset( $def_tech[last_prod_aktu] );
- $def_ress['id'] = $row['to_village'];
- $def_agreement['agreement'] = $def_tech['agreement'];
- unset( $def_tech[agreement] );
- $def_agreement['agreement_aktu'] = $def_tech['agreement_aktu'];
- unset( $def_tech[agreement] );
- $def_agreement['id'] = $row['to_village'];
- $def_attacks = $def_tech['attacks'];
- unset( $def_tech[attacks] );
- $def_snobed_by = $def_tech['snobed_by'];
- unset( $def_tech[snobed_by] );
- if (!( empty( $row['building'] ))) {
- $others['def_building'] = $def_tech[$row['building']];
- $others['cata_building'] = $row['building'];
- unset( $def_tech[$row['building']] );
- } else {
- $others['def_building'] = 0;
- $others['cata_building'] = '';
- }
- $others['luck'] = mt_rand( -25, 25 );
- if ($config['moral_activ']) {
- if ($row['to_userid'] == '-1') {
- $others['moral'] = 100;
- } else {
- $result = $db->query( 'SELECT points from users where id=\'' . $row['from_userid'] . '\'' );
- $att_player = $db->Fetch( $result );
- $result = $db->query( 'SELECT points from users where id=\'' . $row['to_userid'] . '\'' );
- $def_player = $db->Fetch( $result );
- $others['moral'] = calc_moral( $def_player['points'], $att_player['points'] );
- }
- } else {
- $others['moral'] = 100;
- }
- $simulate = simulate( $att, $att_tech, $def, $def_tech, $others );
- if ($row['building'] == 'storage') {
- $def_ress['storage'] = $simulate['others']['new_building'];
- }
- $max_booty = 0;
- foreach ($cl_units->get_array( 'dbname' ) as $dbname) {
- $max_booty += $cl_units->get_booty( $dbname ) * ( $simulate['att'][$dbname] - $simulate['att_lose'][$dbname] );
- }
- $ress_calc = ressis( $def_ress, $event_time );
- $ress_calc['r_wood'] -= $arr_maxhide[$def_ress['hide']];
- $ress_calc['r_stone'] -= $arr_maxhide[$def_ress['hide']];
- $ress_calc['r_iron'] -= $arr_maxhide[$def_ress['hide']];
- $ress_calc['r_wood'] = ( $ress_calc['r_wood'] < 0 ? 0 : $ress_calc['r_wood'] );
- $ress_calc['r_stone'] = ( $ress_calc['r_stone'] < 0 ? 0 : $ress_calc['r_stone'] );
- $ress_calc['r_iron'] = ( $ress_calc['r_iron'] < 0 ? 0 : $ress_calc['r_iron'] );
- $ress_calc['all_ress'] = $ress_calc['r_wood'] + $ress_calc['r_stone'] + $ress_calc['r_iron'];
- ( true ? $ress_calc['all_ress'] == '0' : 0 );
- $ress_calc['procent_wood'] = 100 / $ress_calc['all_ress'] * $ress_calc['r_wood'];
- ( true ? $ress_calc['all_ress'] == '0' : 0 );
- $ress_calc['procent_stone'] = 100 / $ress_calc['all_ress'] * $ress_calc['r_stone'];
- ( true ? $ress_calc['all_ress'] == '0' : 0 );
- $ress_calc['procent_iron'] = 100 / $ress_calc['all_ress'] * $ress_calc['r_iron'];
- $booty['wood'] = ( $ress_calc['r_wood'] < $max_ress_booty = floor( $max_booty * ( $ress_calc['procent_wood'] / 100 ) ) ? $ress_calc['r_wood'] : $max_ress_booty );
- $booty['stone'] = ( $ress_calc['r_stone'] < $max_ress_booty = floor( $max_booty * ( $ress_calc['procent_stone'] / 100 ) ) ? $ress_calc['r_stone'] : $max_ress_booty );
- $booty['iron'] = ( $ress_calc['r_iron'] < $max_ress_booty = floor( $max_booty * ( $ress_calc['procent_iron'] / 100 ) ) ? $ress_calc['r_iron'] : $max_ress_booty );
- $stolen_booty = $booty['wood'] + $booty['stone'] + $booty['iron'];
- $not_enough_wood = false;
- $not_enough_stone = false;
- $not_enough_iron = false;
- while ($stolen_booty < $max_booty) {
- if ($stolen_booty < $max_booty) {
- if (0 < $ress_calc['r_wood'] - $booty['wood']) {
- ++$booty['wood'];
- ++$stolen_booty;
- }
- } else {
- $not_enough_wood = true;
- }
- if ($stolen_booty < $max_booty) {
- if (0 < $ress_calc['r_stone'] - $booty['stone']) {
- ++$booty['stone'];
- ++$stolen_booty;
- }
- } else {
- $not_enough_stone = true;
- }
- if ($stolen_booty < $max_booty) {
- if (0 < $ress_calc['r_iron'] - $booty['iron']) {
- ++$booty['iron'];
- ++$stolen_booty;
- }
- } else {
- $not_enough_iron = true;
- }
- while ($not_enough_wood) {
- while ($not_enough_stone) {
- if ($not_enough_iron) {
- }
- break 2;
- }
- break;
- }
- }
- $market_ress['wood'] = 0;
- $market_ress['stone'] = 0;
- $market_ress['iron'] = 0;
- if ($stolen_booty < $max_booty) {
- $result = $db->query( 'SELECT sell,sell_ress,id from offers where from_village=' . $row['to_village'] . '' );
- while ($offers = $db->Fetch( $result )) {
- while (!( $max_booty <= $stolen_booty)) {
- $db->query( 'DELETE from offers_multi where id=' . $offers['id'] . ( ' LIMIT ' . $offers_num = ceil( $ress = $max_booty - $stolen_booty / $offers['sell'] ) ) );
- if ($ress < $offers_ress = $num = $db->affectedRows( ) * $offers['sell']) {
- $booty[$offers['sell_ress']] += $ress;
- $market_ress[$offers['sell_ress']] += $ress;
- $stolen_booty += $ress;
- $db->query( 'UPDATE villages SET r_' . $offers['sell_ress'] . '=r_' . $offers['sell_ress'] . '+' . $ress_to_village = $offers_ress - $ress . ' where id=' . $row['to_village'] . '' );
- } else {
- $booty[$offers['sell_ress']] += $offers_ress;
- $market_ress[$offers['sell_ress']] += $offers_ress;
- $stolen_booty += $offers_ress;
- }
- if ($db->NumRows( $db->query( 'SELECT id from offers_multi where id=' . $offers['id'] . '' ) ) == 0) {
- $db->query( 'DELETE from offers where id=' . $offers['id'] . '' );
- } else {
- $db->query( 'UPDATE offers SET multi=multi-' . $num . ' where id=\'' . $offers['id'] . '\'' );
- }
- $db->query( 'UPDATE villages SET dealers_outside=dealers_outside-' . ceil( $offers['sell'] / 1000 ) * $num . ' where id=' . $row['to_village'] . '' );
- break;
- }
- }
- }
- $rows_query = array( );
- $sql = 'UPDATE villages SET ';
- $bh_profit = 0;
- if ($others['def_wall'] != $simulate['others']['new_wall']) {
- $rows_query[] = 'wall=\'' . $simulate['others']['new_wall'] . '\'';
- for ($n = $simulate['others']['new_wall'] + 1; $n <= $others['def_wall']; ++$n) {
- $bh_profit += $cl_builds->get_bh( 'wall', $n );
- }
- }
- if ($others['def_building'] != $simulate['others']['new_building']) {
- $rows_query[] = $others['cata_building'] . '=\'' . $simulate['others']['new_building'] . '\'';
- for ($n = $simulate['others']['new_building'] + 1; $n <= $others['def_building']; ++$n) {
- $bh_profit += $cl_builds->get_bh( $others['cata_building'], $n );
- }
- }
- if ($booty['wood'] != '0') {
- $rows_query[] = 'r_wood=r_wood-\'' . ( $booty['wood'] - $market_ress['wood'] ) . '\'';
- }
- if ($booty['stone'] != '0') {
- $rows_query[] = 'r_stone=r_stone-\'' . ( $booty['stone'] - $market_ress['stone'] ) . '\'';
- }
- if ($booty['iron'] != '0') {
- $rows_query[] = 'r_iron=r_iron-\'' . ( $booty['iron'] - $market_ress['iron'] ) . '\'';
- }
- if (0 < $bh_profit) {
- $rows_query[] = 'r_bh=r_bh-\'' . $bh_profit . '\'';
- }
- $insert_snobed_def = false;
- if ($simulate['att']['unit_snob'] - $simulate['att_lose']['unit_snob']) {
- $agreement_abzug = mt_rand( 20, 35 );
- $def_agreement['agreement'] = calc_agreement( $def_agreement, $event_time );
- $agreement = $def_agreement['agreement'] . ';';
- $def_agreement['agreement'] -= $agreement_abzug;
- $agreement .= $def_agreement['agreement'];
- $rows_query[] = 'agreement_aktu=\'' . $event_time . '\'';
- if ($def_agreement['agreement'] < 0) {
- $rows_query[] = 'agreement=\'25\'';
- foreach ($cl_units->get_array( 'dbname' ) as $dbname) {
- $u_querys[] = '' . $dbname;
- }
- $result = $db->query( 'SELECT ' . implode( ',', $u_querys ) . ' from unit_place where villages_from_id=' . $row['to_village'] . ' AND villages_to_id=' . $row['to_village'] . '' );
- $in_village_units = $db->Fetch( $result );
- $querys = array( );
- foreach ($cl_units->get_array( 'dbname' ) as $dbname) {
- $querys[] = 'all_' . $dbname . '';
- }
- $result = $db->query( 'SELECT ' . implode( ',', $querys ) . ' from villages where id=\'' . $row['to_village'] . '\'' );
- $outside_units_row = $db->Fetch( $result );
- $outside_units = array( );
- $bh_outside = 0;
- $units_in_village = array( );
- foreach ($cl_units->get_array( 'dbname' ) as $dbname) {
- $outside_units[] = $outside_units_row['all_' . $dbname] - $simulate['def'][$dbname];
- $bh_outside += ( $outside_units_row['all_' . $dbname] - $in_village_units[$dbname] ) * $cl_units->get_bhprice( $dbname );
- $rows_query[] = 'all_' . $dbname . '=0';
- }
- $outside_deff_village = implode( ';', $outside_units );
- $del_event = true;
- $db->query( 'DELETE from movements where id=' . $row['id'] . '' );
- $res = $db->query( 'SELECT SUM(unit_snob) AS snob_count from unit_place where villages_from_id=' . $row['to_village'] . ' AND villages_from_id!=villages_to_id' );
- $res = $db->Fetch( $res );
- if ($res['snob_count'] != 0) {
- $db->query( 'UPDATE villages SET recruited_snobs=recruited_snobs-' . $res['snob_count'] . ' where id=' . $row['to_village'] . '' );
- }
- $db->query( 'DELETE from unit_place where villages_from_id=' . $row['to_village'] . ' AND villages_from_id!=villages_to_id' );
- $result = $db->query( 'SELECT id,units,type from movements where send_from_village=' . $row['to_village'] . '' );
- while ($mov = $db->Fetch( $result )) {
- $units = explode( ';', $mov['units'] );
- $i = 0;
- foreach ($cl_units->get_array( 'dbname' ) as $dbname) {
- if ($dbname == 'unit_snob') {
- if ($units[$i] != 0) {
- $db->query( 'UPDATE villages SET recruited_snobs=recruited_snobs-' . $units[$i] . ' where id=' . $row['to_village'] . '' );
- }
- }
- ++$i;
- }
- while ($mov['type'] != 'attack') {
- $db->query( 'DELETE from events where event_id=\'' . $mov['id'] . '\' AND event_type=\'movement\'' );
- $db->query( 'DELETE from movements where id=' . $mov['id'] . '' );
- break;
- }
- }
- $db->query( 'UPDATE events SET user_id=' . $row['from_userid'] . ' where villageid=' . $row['to_village'] . '' );
- $db->query( 'UPDATE movements SET die=\'1\', from_userid=' . $row['from_userid'] . ' where send_from_village=\'' . $row['to_village'] . '\'' );
- $db->query( 'UPDATE movements SET to_userid=' . $row['from_userid'] . ' where to_village=' . $row['to_village'] . ' AND type=\'attack\'' );
- $rows_query[] = 'userid=\'' . $row['from_userid'] . '\'';
- $rows_query[] = 'r_bh=r_bh-\'' . $bh_outside . '\'';
- $rows_query[] = 'snobed_by=\'' . $row['from_village'] . '\'';
- if ($def_snobed_by != -1) {
- $db->query( 'UPDATE villages SET control_villages=control_villages-\'1\' where id=\'' . $def_snobed_by . '\'' );
- }
- $db->query( 'UPDATE villages SET control_villages=control_villages+\'1\',recruited_snobs=recruited_snobs-\'1\',all_unit_snob=all_unit_snob-\'1\',r_bh=r_bh-' . $cl_units->get_bhprice( 'unit_snob' ) . ' where id=\'' . $row['from_village'] . '\'' );
- if (!( in_array( $row['to_userid'], $reload_allys ))) {
- $reload_alllys[] = $row['to_userid'];
- }
- if (!( in_array( $row['from_userid'], $reload_allys ))) {
- $reload_alllys[] = $row['from_userid'];
- }
- --$def_attacks;
- $result = $db->query( 'SELECT username from users where id=\'' . $row['from_userid'] . '\'' );
- $att_player = $db->Fetch( $result );
- $db->query( 'UPDATE users SET villages=villages-\'1\',attacks=attacks-\'' . $def_attacks . '\',ennobled_by=\'' . $att_player['username'] . '\' where id=\'' . $row['to_userid'] . '\'' );
- $db->query( 'UPDATE offers set userid=' . $row['from_userid'] . ' where from_village=' . $row['to_village'] . '' );
- $db->query( 'UPDATE users SET villages=villages+\'1\',attacks=attacks+\'' . $def_attacks . '\' where id=\'' . $row['from_userid'] . '\'' );
- $db->query( 'UPDATE dealers SET from_userid=\'' . $row['from_userid'] . '\' where from_village=\'' . $row['to_village'] . '\'' );
- $db->query( 'UPDATE dealers SET to_userid=\'' . $row['from_userid'] . '\' where to_village=\'' . $row['to_village'] . '\'' );
- $insert_snobed_def = true;
- } else {
- $rows_query[] = 'agreement=agreement-\'' . $agreement_abzug . '\'';
- $outside_deff_village = '';
- }
- } else {
- $agreement = '100;100';
- $outside_deff_village = '';
- }
- $rows_query[] = 'attacks=attacks-\'1\'';
- $sql .= implode( ',', $rows_query );
- $sql .= ' where id=\'' . $row['to_village'] . '\'';
- if (0 < count( $rows_query )) {
- $db->query( $sql );
- }
- if ($insert_snobed_def) {
- reload_player_points( $row['from_userid'] );
- reload_player_points( $row['to_userid'] );
- reload_player_rangs( );
- }
- if (!( ( !( $others['def_wall'] != $simulate['others']['new_wall'] ) && !( $others['def_building'] != $simulate['others']['new_building'] ) ))) {
- reload_village_points( $row['to_village'] );
- reload_player_points( $row['to_userid'] );
- reload_player_rangs( );
- if (!( in_array( $row['to_userid'], $reload_allys ))) {
- $reload_alllys[] = $row['to_userid'];
- }
- }
- $new_att_units = array( );
- $att_bh_profit = 0;
- $all_units_died_att = true;
- foreach ($simulate['att'] as $unit => $num) {
- $new_att_units[] = $num - $simulate['att_lose'][];
- $att_bh_profit += $simulate['att_lose'][$unit] * $cl_units->get_bhprice( $unit );
- while ($num - $simulate['att_lose'][$unit] != '0') {
- $all_units_died_att = false;
- break;
- }
- }
- $return_end = $row['end_time'] + ( ['end_time'] - ['start_time'] );
- $do_return_try = true;
- if (!( ( !$all_units_died_att && !( $row['die'] == 1 ) ))) {
- $db->query( 'DELETE from movements where id=\'' . $row['id'] . '\'' );
- $del_event = true;
- $do_return_try = false;
- } else {
- $sql = 'UPDATE movements SET ';
- $sql .= 'wood=\'' . $booty['wood'] . '\',stone=\'' . ['stone'] . '\',iron=\'' . ['iron'] . '\'';
- $sql .= ',units=\'' . implode( ';', $new_att_units ) . '\',type=\'return\',to_hidden=\'1\'';
- $sql .= ',from_village=\'' . $row['to_village'] . '\', from_userid=\'' . ['to_userid'] . '\'';
- $sql .= ',to_village=\'' . $row['from_village'] . '\',to_userid=\'' . ['from_userid'] . '\'';
- $sql .= ',start_time=' . $row['end_time'] . ',end_time=\'' . $return_end . '\'';
- $sql .= ' where id=\'' . $row['id'] . '\'';
- $db->query( $sql );
- }
- $db->query( 'UPDATE users SET attacks=attacks-\'1\' where id=\'' . $row['to_userid'] . '\'' );
- $units_accounteFor = array( );
- $abzug = array( );
- $max_abzug = array( );
- $result = $db->query( 'SELECT ' . implode( ',', $cl_units->get_array( 'dbname' ) ) . ',villages_from_id from unit_place where villages_to_id=\'' . $row['to_village'] . '\'' );
- while ($row_unitplace = $db->Fetch( $result )) {
- foreach ($cl_units->get_array( 'dbname' ) as $dbname) {
- if (!( isset( $units_accounteFor[] ))) {
- $units_accounteFor[$dbname] = 0;
- }
- if ($row_unitplace[$dbname] != 0) {
- if ($simulate['def_lose'][$dbname] != 0) {
- $v_abzug = $simulate['def_lose'][$dbname] * ( 100 / ['def'][$dbname] * $row_unitplace[$dbname] / 100 );
- }
- } else {
- $v_abzug = 0;
- }
- $abzug[$row_unitplace['villages_from_id']][$dbname] = round( $v_abzug );
- $max_abzug[$row_unitplace['villages_from_id']][$dbname] = $row_unitplace[$dbname];
- $units_accounteFor[$dbname] += $abzug[$row_unitplace['villages_from_id']][$dbname];
- }
- }
- if (true) {
- foreach ($abzug as $id => $arr) {
- foreach ($cl_units->get_array( 'dbname' ) as $dbname) {
- while ($units_accounteFor[] != $simulate['def_lose'][$dbname]) {
- while ($abzug[$id][$dbname] != 0) {
- while ($abzug[$id][$dbname] != $max_abzug[$id][$dbname]) {
- while ($simulate['def_lose'][$dbname] < $units_accounteFor[$dbname]) {
- --$abzug[$id][$dbname];
- --$units_accounteFor[$dbname];
- break 4;
- }
- ++$abzug[$id][$dbname];
- ++$units_accounteFor[$dbname];
- break 3;
- }
- break 2;
- }
- break;
- }
- }
- }
- }
- if ($insert_snobed_def) {
- $sqlq = 'INSERT into unit_place (villages_from_id,villages_to_id,' . implode( ',', $cl_units->get_array( 'dbname' ) ) . ') VALUES (\'' . $row['from_village'] . '\',\'' . ['to_village'] . '\'';
- foreach ($cl_units->get_array( 'dbname' ) as $dbname) {
- while ( == 'unit_snob') {
- $sqlq .= ',\'' . ( $simulate['att'][$dbname] - ['att_lose'][$dbname] - 1 ) . '\'';
- break;
- }
- $sqlq .= ',\'' . ( $simulate['att'][$dbname] - ['att_lose'][$dbname] ) . '\'';
- }
- $sqlq .= ')';
- $db->query( $sqlq );
- }
- $result = $db->query( 'SELECT name from villages where id=\'' . $row['to_village'] . '\'' );
- $arr = $db->Fetch( $result );
- $row['to_villagename'] = html_entity_decode( entparse( $arr['name'] ) );
- $bh_def = 0;
- foreach ($abzug as $id => $arr) {
- $sql = 'UPDATE unit_place SET ';
- $row_query = array( );
- foreach ($abzug[$id] as $dbname => $num) {
- $row_query[] = . '=' . $dbname . '-\'' . $num . '\'';
- }
- $sql .= implode( ',', $row_query );
- $sql .= ' WHERE villages_from_id=\'' . $id . '\' AND villages_to_id=\'' . $row['to_village'] . '\'';
- $db->query( $sql );
- $bh = 0;
- foreach ($abzug[$id] as $dbname => $num) {
- $bh += $cl_units->get_bhprice( $dbname ) * $num;
- }
- $bh_def += $bh;
- $sql = 'UPDATE villages SET ';
- $row_query = array( );
- if (!( ( $def_agreement['agreement'] < 0 && $id == $row['to_village'] ))) {
- foreach ($abzug[$id] as $dbname => $num) {
- $row_query[] = 'all_' . . '=all_' . $dbname . '-\'' . $num . '\'';
- }
- }
- if ($abzug[$id]['unit_snob'] != 0) {
- $row_query[] = 'recruited_snobs=recruited_snobs-' . $abzug[$id]['unit_snob'] . '';
- }
- $row_query[] = 'r_bh=r_bh-\'' . $bh . '\'';
- $sql .= implode( ',', $row_query );
- $sql .= ' WHERE id=\'' . $id . '\'';
- $db->query( $sql );
- $all_units_died = true;
- $no_units_died = true;
- foreach ($abzug[$id] as $dbname => $num) {
- if ($max_abzug[$id][] - $num) {
- $all_units_died = false;
- }
- while ($max_abzug[$id][$dbname] != $num) {
- $no_units_died = false;
- break;
- }
- }
- while ($id != $row['to_village']) {
- if ($all_units_died) {
- $color = 'red';
- } else {
- if ($no_units_died) {
- $color = 'green';
- } else {
- $color = 'yellow';
- }
- }
- $result = $db->query( 'SELECT name,userid from villages where id=\'' . $id . '\'' );
- $arr = $db->Fetch( $result );
- $support_villagename = html_entity_decode( entparse( $arr['name'] ) );
- $result = $db->query( 'SELECT id from users where id=\'' . $arr['userid'] . '\'' );
- $support_userid = $arr = $db->Fetch( $result )['id'];
- $cl_reports->support_attack( $support_userid, $id, $support_villagename, $row['to_userid'], $row['to_village'], $row['to_villagename'], $color, $event_time, implode( ';', $max_abzug[$id] ), implode( ';', $abzug[$id] ) );
- while ($all_units_died) {
- $db->query( 'DELETE from unit_place WHERE villages_from_id=\'' . $id . '\' AND villages_to_id=\'' . $row['to_village'] . '\'' );
- break 2;
- }
- break;
- }
- }
- $db->query( 'UPDATE users SET killed_units_att=killed_units_att+' . $bh_def . ',killed_units_altogether=killed_units_altogether+' . $bh_def . ' where id=' . $row['from_userid'] . '' );
- $row_querys = array( );
- if ($row['die'] != 1) {
- $row_querys[] = 'r_bh=r_bh-\'' . $att_bh_profit . '\'';
- }
- $db->query( 'UPDATE users SET killed_units_def=killed_units_def+' . $att_bh_profit . ',killed_units_altogether=killed_units_altogether+' . $att_bh_profit . ' where id=' . $row['to_userid'] . '' );
- if ($simulate['att_lose']['unit_snob'] != 0) {
- if ($row['die'] != 1) {
- $row_querys[] = 'recruited_snobs=recruited_snobs-' . $simulate['att_lose']['unit_snob'];
- }
- }
- if ($row['die'] != 1) {
- foreach ($cl_units->get_array( 'dbname' ) as $dbname) {
- $row_querys[] = 'all_' . . '=all_' . $dbname . '-\'' . $simulate['att_lose'][$dbname] . '\'';
- }
- }
- if (count( $row_querys )) {
- $db->query( 'UPDATE villages SET ' . implode( ',', $row_querys ) . ' where id=\'' . $row['from_village'] . '\'' );
- }
- $result = $db->query( 'SELECT username from users where id=\'' . $row['from_userid'] . '\'' );
- $arr = $db->Fetch( $result );
- $row['from_username'] = html_entity_decode( entparse( $arr['username'] ) );
- $ram = $others['def_wall'] . ';' . $simulate['others']['new_wall'];
- $catapult = $others['def_building'] . ';' . $simulate['others']['new_building'] . ';' . ['cata_building'];
- $booty = $booty['wood'] . ';' . ['stone'] . ';' . ['iron'] . ';' . $stolen_booty . ( ';' . $max_booty );
- $cl_reports->attack( $row['from_userid'], $row['from_username'], $row['from_village'], $row['to_userid'], $row['to_village'], $row['to_villagename'], $simulate['others']['wins'], $simulate['others']['att_color'], $simulate['others']['def_color'], $row['end_time'], implode( ';', $simulate['att'] ), implode( ';', $simulate['att_lose'] ), implode( ';', $simulate['def'] ), implode( ';', $simulate['def_lose'] ), $outside_deff_village, $agreement, $ram, $catapult, $booty, $others['luck'], $others['moral'], $simulate['others']['see_def_units'] );
- if (!( $all_units_died_att)) {
- if (!( $row['die'] == 1)) {
- $db->query( 'UPDATE events SET event_time=\'' . $return_end . '\',can_knot=0,cid=0 where event_id=\'' . $row['id'] . '\' AND event_type=\'movement\'' );
- $db->query( 'DELETE from run_events where id=\'' . $event_id . 'movement\'' );
- }
- }
- $reloaded = array( );
- foreach ($reload_allys as $id) {
- $result = $db->query( 'SELECT ally from users where id=' . );
- if (!( in_array( $r = $db->Fetch( $result )['ally'], $reloaded ))) {
- reload_ally_points( $r['ally'] );
- }
- $reloaded[] = $r['ally'];
- }
- reload_ally_rangs( );
- if ($do_return_try) {
- if (!( $del_event)) {
- if ($return_end <= time( )) {
- $del_event = do_movement( $row['id'], $event_id, $event_time );
- }
- }
- }
- return $del_event;
- }
- function do_movement_support($row) {
- global $cl_units;
- global $db;
- global $cl_reports;
- $result = $db->query( 'SELECT COUNT(villages_to_id) AS count from unit_place where villages_from_id=\'' . $row['from_village'] . '\' AND villages_to_id=\'' . ['to_village'] . '\'' );
- if ($exist_support = $db->Fetch( $result )['count'] == '0') {
- $sql = 'INSERT into unit_place (';
- $first = true;
- foreach ($cl_units->get_array( 'dbname' ) as $dbname) {
- while ($first) {
- $sql .= '' . $dbname;
- $first = false;
- break;
- }
- $sql .= ',' . $dbname;
- }
- $sql .= ',villages_from_id,villages_to_id) VALUES (';
- $first = true;
- $i = 0;
- $ex_units = explode( ';', $row['units'] );
- foreach ($cl_units->get_array( 'dbname' ) as $dbname) {
- if ($first) {
- $sql .= '\'' . $ex_units[$i] . '\'';
- $first = false;
- } else {
- $sql .= ',\'' . $ex_units[$i] . '\'';
- }
- ++$i;
- }
- $sql .= ',\'' . $row['from_village'] . '\',\'' . ['to_village'] . '\')';
- } else {
- $sql = 'UPDATE unit_place SET ';
- $first = true;
- $i = 0;
- $ex_units = explode( ';', $row['units'] );
- foreach ($cl_units->get_array( 'dbname' ) as $dbname) {
- if ($first) {
- $sql .= $dbname . '=' . $dbname . '+\'' . $ex_units[$i] . '\'';
- $first = false;
- } else {
- $sql .= ',' . $dbname . '=' . $dbname . '+\'' . $ex_units[$i] . '\'';
- }
- ++$i;
- }
- $sql .= ' where villages_from_id=\'' . $row['from_village'] . '\' AND villages_to_id=\'' . ['to_village'] . '\'';
- }
- $db->query( $sql );
- $result = $db->query( 'SELECT username from users where id=\'' . $row['to_userid'] . '\'' );
- $arr = $db->Fetch( $result );
- $row['to_username'] = entparse( $arr['username'] );
- $result = $db->query( 'SELECT name from villages where id=\'' . $row['from_village'] . '\'' );
- $arr = $db->Fetch( $result );
- $row['from_villagename'] = entparse( $arr['name'] );
- $cl_reports->support( $row['from_userid'], $row['from_village'], $row['from_villagename'], $row['to_userid'], $row['to_username'], $row['to_village'], $row['units'], $row['end_time'] );
- $db->query( 'DELETE from movements where id=\'' . $row['id'] . '\'' );
- return true;
- }
- function check_events() {
- global $db;
- $time = time( );
- $reload_village_points = array( );
- $event_ids = array( );
- $do_event = true;
- $i = 0;
- $reload_allys = array( );
- $result = $db->query( 'SELECT id,user_id,event_type,event_id,knot_event from events where event_time<\'' . $time . '\' order by event_time,id' );
- while ($row = $db->Fetch( $result )) {
- $delete_event = false;
- $do_event = true;
- $event_ids[$i] = $row['event_type'] . '_' . ['event_id'];
- if ($do_event) {
- switch ($row['event_type']) {
- case 'build': {
- if (isset( $villageid = check_builds( $row['event_id'] ) )) {
- $reload_village_points[] = $villageid;
- $delete_event = true;
- break;
- }
- }
- case 'movement': {
- $do_mov = true;
- if ($movement_return = do_movement( $row['event_id'], ['id'], $time )) {
- $delete_event = true;
- break;
- }
- }
- case 'recruit': {
- if (!( is_numeric( $rekruit = check_recruit( $row['event_id'], $time ) ))) {
- $delete_event = true;
- break;
- } else {
- $delete_event = false;
- $db->query( 'UPDATE events SET event_time=\'' . $rekruit . '\',cid=\'0\' where id=\'' . $row['id'] . '\'' );
- $db->query( 'DELETE from run_events where id=\'' . $row['id'] . ['event_type'] . '\'' );
- break;
- }
- }
- case 'research': {
- check_tech( $row['event_id'] );
- $delete_event = true;
- break;
- }
- case 'dealers': {
- $delete_event = check_dealers( $row['event_id'], ['id'] );
- }
- }
- }
- if ($delete_event) {
- $db->query( 'DELETE from events where id=\'' . $row['id'] . '\'' );
- } else {
- $db->query( 'UPDATE events SET is_locked=0 where id=' . $row['id'] . ' AND is_locked=1' );
- }
- ++$i;
- }
- $reload_player_points = array( );
- foreach ($reload_village_points as $villageid) {
- reload_village_points( $villageid );
- $res = $db->query( 'SELECT userid FROM `villages` WHERE id = ' . $villageid );
- while (!( in_array( $village = $db->fetch( $res )['user_id'], $reload_player_points ))) {
- $reload_player_points[] = $village['userid'];
- break;
- }
- }
- foreach ($reload_player_points as $playerid) {
- reload_player_points( $playerid );
- reload_player_rangs( );
- }
- }
- include( 'include.inc.php' );
- for ($i = 0; $i < 10000; ++$i) {
- check_events( );
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement