コード例 #1
0
ファイル: war.php プロジェクト: vcelis/tatar-wars
 function captureVillage($toVillageRow, $fromVillageRow, $kingCropConumption)
 {
     global $GameMetadata, $SetupMetadata;
     $this->provider->executeQuery('DELETE FROM p_queue WHERE player_id=%s AND village_id=%s AND proc_type IN (%s)', array(intval($toVillageRow['player_id']), intval($toVillageRow['id']), QS_BUILD_CREATEUPGRADE . ',' . QS_BUILD_DROP . ',' . QS_TROOP_RESEARCH . ',' . QS_TROOP_UPGRADE_ATTACK . ',' . QS_TROOP_UPGRADE_DEFENSE . ',' . QS_TROOP_TRAINING . ',' . QS_TROOP_TRAINING_HERO . ',' . QS_WAR_ATTACK . ',' . QS_WAR_ATTACK_PLUNDER . ',' . QS_WAR_ATTACK_SPY . ',' . QS_CREATEVILLAGE));
     $troops_training = '';
     $troops_num = '';
     foreach ($GameMetadata['troops'] as $k => $v) {
         if ($v['for_tribe_id'] == -1 || $v['for_tribe_id'] == $fromVillageRow['tribe_id']) {
             if ($troops_training != '') {
                 $troops_training .= ',';
             }
             $researching_done = $v['research_time_consume'] == 0 ? 1 : 0;
             $troops_training .= $k . ' ' . $researching_done . ' 0 0';
             if ($troops_num != '') {
                 $troops_num .= ',';
             }
             $troops_num .= $k . ' 0';
         }
     }
     $troops_num = '-1:' . $troops_num;
     $buildings = '';
     $reCheckBuilding = $this->provider->fetchScalar('SELECT v.buildings FROM p_villages v WHERE v.id=%s', array(intval($toVillageRow['id'])));
     $bStr = trim($reCheckBuilding);
     if ($bStr != '') {
         $bStrArr = explode(',', $bStr);
         $mq = new QueueJobModel();
         $ccb = 0;
         foreach ($bStrArr as $b2Str) {
             ++$ccb;
             if ($buildings != '') {
                 $buildings .= ',';
             }
             list($item_id, $level, $update_state) = explode(' ', $b2Str);
             if (!isset($GameMetadata['items'][$item_id]['for_tribe_id'][$fromVillageRow['tribe_id']])) {
                 while (0 < $level--) {
                     $mq->upgradeBuilding($toVillageRow['id'], $ccb, $item_id, TRUE);
                 }
                 $item_id = $level = $update_state = 0;
             }
             $buildings .= $item_id . ' ' . $level . ' ' . $update_state;
         }
     }
     $this->provider->executeQuery('UPDATE p_villages v
             SET
                 v.parent_id=%s,
                 v.tribe_id=%s,
                 v.player_id=%s,
                 v.alliance_id=%s,
                 v.player_name=\'%s\',
                 v.alliance_name=\'%s\',
                 v.is_capital=0,
                 v.buildings=\'%s\',
                 v.troops_training=\'%s\',
                 v.troops_num=\'%s\',
                 v.child_villages_id=NULL,
                 v.allegiance_percent=100,
                 v.troops_out_num=NULL,
                 v.troops_out_intrap_num=NULL,
                 v.creation_date=NOW(),
                 v.last_update_date=NOW()
             WHERE v.id=%s', array(intval($fromVillageRow['id']), intval($fromVillageRow['tribe_id']), intval($fromVillageRow['player_id']), intval($fromVillageRow['alliance_id']) > 0 ? intval($fromVillageRow['alliance_id']) : 'NULL', $fromVillageRow['player_name'], $fromVillageRow['alliance_name'], $buildings, $troops_training, $troops_num, intval($toVillageRow['id'])));
     $this->provider->executeQuery('UPDATE p_villages v
             SET
                 v.tribe_id=%s,
                 v.player_id=%s,
                 v.alliance_id=%s,
                 v.player_name=\'%s\',
                 v.alliance_name=\'%s\',
                 v.troops_num=NULL,
                 v.troops_out_num=NULL,
                 v.troops_out_intrap_num=NULL
             WHERE v.parent_id=%s AND v.is_oasis=1', array(intval($fromVillageRow['tribe_id']), intval($fromVillageRow['player_id']), intval($fromVillageRow['alliance_id']) > 0 ? intval($fromVillageRow['alliance_id']) : 'NULL', $fromVillageRow['player_name'], $fromVillageRow['alliance_name'], intval($toVillageRow['id'])));
     $child_villages_id = trim($fromVillageRow['child_villages_id']);
     if ($child_villages_id != '') {
         $child_villages_id .= ',';
     }
     $child_villages_id .= $toVillageRow['id'];
     $this->provider->executeQuery('UPDATE p_villages v
             SET
                 v.crop_consumption=v.crop_consumption-%s,
                 v.child_villages_id=\'%s\'
             WHERE v.id=%s', array($kingCropConumption, $child_villages_id, intval($fromVillageRow['id'])));
     $prow = $this->provider->fetchRow('SELECT p.villages_id, p.villages_data FROM p_players p WHERE p.id=%s', array(intval($fromVillageRow['player_id'])));
     $villages_id = trim($prow['villages_id']);
     if ($villages_id != '') {
         $villages_id .= ',';
     }
     $villages_id .= $toVillageRow['id'];
     $villages_data = trim($prow['villages_data']);
     if ($villages_data != '') {
         $villages_data .= "\n";
     }
     $villages_data .= $toVillageRow['id'] . ' ' . $toVillageRow['rel_x'] . ' ' . $toVillageRow['rel_y'] . ' ' . $toVillageRow['village_name'];
     $toCheckPeople = $this->provider->fetchScalar('SELECT v.people_count FROM p_villages v WHERE v.id=%s', array(intval($toVillageRow['id'])));
     $this->provider->executeQuery('UPDATE p_players p
             SET
                 p.total_people_count=p.total_people_count+%s,
                 p.villages_count=p.villages_count+1,
                 p.selected_village_id=%s,
                 p.villages_id=\'%s\',
                 p.villages_data=\'%s\'
             WHERE
                 p.id=%s', array(intval($toCheckPeople), intval($toVillageRow['id']), $villages_id, $villages_data, intval($fromVillageRow['player_id'])));
 }
コード例 #2
0
ファイル: build.php プロジェクト: halshaman/TravianDboor
 public function makeVillageAsCapital($playerId, $villageId)
 {
     $mq = new QueueJobModel();
     $capitalRow = $this->provider->fetchRow("SELECT v.id, v.buildings FROM p_villages v WHERE  v.player_id=%s AND v.is_capital=1", array($playerId));
     $buildingArr = explode(",", $capitalRow['buildings']);
     $c = 0;
     foreach ($buildingArr as $buildingItem) {
         ++$c;
         $update_state = explode(" ", $buildingItem[2]);
         $level = explode(" ", $buildingItem[1]);
         $item_id = explode(" ", $buildingItem[0]);
         list($item_id, $level, $update_state) = $item_id;
         if ($item_id == 0) {
             continue;
         }
         $max_lvl_in_non_capital = $GLOBALS['GameMetadata']['items'][$item_id]['max_lvl_in_non_capital'];
         if ($max_lvl_in_non_capital == NULL || $level + $update_state <= $max_lvl_in_non_capital) {
             continue;
         }
         $dropLevels = $level + $update_state - $max_lvl_in_non_capital;
         while (0 < $dropLevels--) {
             $mq->upgradeBuilding($capitalRow['id'], $c, $item_id, TRUE);
         }
     }
     $this->provider->executeQuery("UPDATE p_villages v SET v.is_capital=0 WHERE v.player_id=%s", array($playerId));
     $this->provider->executeQuery("UPDATE p_villages v SET v.is_capital=1 WHERE v.id=%s AND v.player_id=%s", array($villageId, $playerId));
 }
コード例 #3
0
ファイル: war.php プロジェクト: halshaman/TravianDboor
 public function captureVillage($toVillageRow, $fromVillageRow, $kingCropConumption)
 {
     $GameMetadata = $GLOBALS['GameMetadata'];
     $SetupMetadata = $GLOBALS['SetupMetadata'];
     $this->provider->executeQuery("DELETE FROM p_queue WHERE player_id=%s AND village_id=%s AND proc_type IN (%s)", array(intval($toVillageRow['player_id']), intval($toVillageRow['id']), QS_BUILD_CREATEUPGRADE . "," . QS_BUILD_DROP . "," . QS_TROOP_RESEARCH . "," . QS_TROOP_UPGRADE_ATTACK . "," . QS_TROOP_UPGRADE_DEFENSE . "," . QS_TROOP_TRAINING . "," . QS_TROOP_TRAINING_HERO . "," . QS_WAR_REINFORCE . "," . QS_WAR_ATTACK . "," . QS_WAR_ATTACK_PLUNDER . "," . QS_WAR_ATTACK_SPY . "," . QS_CREATEVILLAGE));
     $troops_training = "";
     $troops_num = "";
     foreach ($GameMetadata['troops'] as $k => $v) {
         if ($v['for_tribe_id'] == 0 - 1 || $v['for_tribe_id'] == $fromVillageRow['tribe_id']) {
             if ($troops_training != "") {
                 $troops_training .= ",";
             }
             $researching_done = $v['research_time_consume'] == 0 ? 1 : 0;
             $troops_training .= $k . " " . $researching_done . " 0 0";
             if ($troops_num != "") {
                 $troops_num .= ",";
             }
             $troops_num .= $k . " 0";
         }
     }
     $troops_num = "-1:" . $troops_num;
     $buildings = "";
     $bStr = trim($toVillageRow['buildings']);
     if ($bStr != "") {
         $bStrArr = explode(",", $bStr);
         $mq = new QueueJobModel();
         $ccb = 0;
         foreach ($bStrArr as $b2Str) {
             ++$ccb;
             if ($buildings != "") {
                 $buildings .= ",";
             }
             $update_state = explode(" ", $b2Str);
             $level = explode(" ", $b2Str);
             $item_id = explode(" ", $b2Str);
             list($item_id, $level, $update_state) = $item_id;
             if (!isset($GameMetadata['items'][$item_id]['for_tribe_id'][$fromVillageRow['tribe_id']])) {
                 while (0 < $level--) {
                     $mq->upgradeBuilding($toVillageRow['id'], $ccb, $item_id, TRUE);
                 }
                 $item_id = $level = $update_state = 0;
             }
             $buildings .= $item_id . " " . $level . " " . $update_state;
         }
     }
     $this->provider->executeQuery("UPDATE p_villages v\r\n\t\t\tSET\r\n\t\t\t\tv.parent_id=%s,\r\n\t\t\t\tv.tribe_id=%s,\r\n\t\t\t\tv.player_id=%s,\r\n\t\t\t\tv.alliance_id=%s,\r\n\t\t\t\tv.player_name='%s',\r\n\t\t\t\tv.alliance_name='%s',\r\n\t\t\t\tv.is_capital=0,\r\n\t\t\t\tv.buildings='%s',\r\n\t\t\t\tv.troops_training='%s',\r\n\t\t\t\tv.troops_num='%s',\r\n\t\t\t\tv.child_villages_id=NULL,\r\n\t\t\t\tv.allegiance_percent=100,\r\n\t\t\t\tv.troops_out_num=NULL,\r\n\t\t\t\tv.troops_out_intrap_num=NULL,\r\n\t\t\t\tv.creation_date=NOW(),\r\n\t\t\t\tv.last_update_date=NOW()\r\n\t\t\tWHERE v.id=%s", array(intval($fromVillageRow['id']), intval($fromVillageRow['tribe_id']), intval($fromVillageRow['player_id']), 0 < intval($fromVillageRow['alliance_id']) ? intval($fromVillageRow['alliance_id']) : "NULL", $fromVillageRow['player_name'], $fromVillageRow['alliance_name'], $buildings, $troops_training, $troops_num, intval($toVillageRow['id'])));
     $this->provider->executeQuery("UPDATE p_villages v\r\n\t\t\tSET\r\n\t\t\t\tv.tribe_id=%s,\r\n\t\t\t\tv.player_id=%s,\r\n\t\t\t\tv.alliance_id=%s,\r\n\t\t\t\tv.player_name='%s',\r\n\t\t\t\tv.alliance_name='%s',\r\n\t\t\t\tv.troops_num=NULL,\r\n\t\t\t\tv.troops_out_num=NULL,\r\n\t\t\t\tv.troops_out_intrap_num=NULL\r\n\t\t\tWHERE v.parent_id=%s AND v.is_oasis=1", array(intval($fromVillageRow['tribe_id']), intval($fromVillageRow['player_id']), 0 < intval($fromVillageRow['alliance_id']) ? intval($fromVillageRow['alliance_id']) : "NULL", $fromVillageRow['player_name'], $fromVillageRow['alliance_name'], intval($toVillageRow['id'])));
     $child_villages_id = trim($fromVillageRow['child_villages_id']);
     if ($child_villages_id != "") {
         $child_villages_id .= ",";
     }
     $child_villages_id .= $toVillageRow['id'];
     $this->provider->executeQuery("UPDATE p_villages v\r\n\t\t\tSET\r\n\t\t\t\tv.crop_consumption=v.crop_consumption-%s,\r\n\t\t\t\tv.child_villages_id='%s'\r\n\t\t\tWHERE v.id=%s", array($kingCropConumption, $child_villages_id, intval($fromVillageRow['id'])));
     $prow = $this->provider->fetchRow("SELECT p.villages_id, p.villages_data FROM p_players p WHERE p.id=%s", array(intval($fromVillageRow['player_id'])));
     $villages_id = trim($prow['villages_id']);
     if ($villages_id != "") {
         $villages_id .= ",";
     }
     $villages_id .= $toVillageRow['id'];
     $villages_data = trim($prow['villages_data']);
     if ($villages_data != "") {
         $villages_data .= "\n";
     }
     $villages_data .= $toVillageRow['id'] . " " . $toVillageRow['rel_x'] . " " . $toVillageRow['rel_y'] . " " . $toVillageRow['village_name'];
     $this->provider->executeQuery("UPDATE p_players p\r\n\t\t\tSET\r\n\t\t\t\tp.total_people_count=p.total_people_count+%s,\r\n\t\t\t\tp.villages_count=p.villages_count+1,\r\n\t\t\t\tp.selected_village_id=%s,\r\n\t\t\t\tp.villages_id='%s',\r\n\t\t\t\tp.villages_data='%s'\r\n\t\t\tWHERE\r\n\t\t\t\tp.id=%s", array(intval($toVillageRow['people_count']), intval($toVillageRow['id']), $villages_id, $villages_data, intval($fromVillageRow['player_id'])));
 }