function run() { if (Config::get(ROOT_UNI)->ref_active != 1) { return null; } /** @var $langObjects Language[] */ $langObjects = array(); $db = Database::get(); $sql = 'SELECT `username`, `ref_id`, `id`, `lang`, user.`universe` FROM %%USERS%% user INNER JOIN %%STATPOINTS%% as stats ON stats.`id_owner` = user.`id` AND stats.`stat_type` = :type AND stats.`total_points` >= :points WHERE user.`ref_bonus` = 1;'; $userArray = $db->select($sql, array(':type' => 1, ':points' => Config::get(ROOT_UNI)->ref_minpoints)); foreach ($userArray as $user) { if (!isset($langObjects[$user['lang']])) { $langObjects[$user['lang']] = new Language($user['lang']); $langObjects[$user['lang']]->includeData(array('L18N', 'INGAME', 'TECH', 'CUSTOM')); } $userConfig = Config::get($user['universe']); $LNG = $langObjects[$user['lang']]; $sql = 'UPDATE %%USERS%% SET `darkmatter` = `darkmatter` + :bonus WHERE `id` = :userId;'; $db->update($sql, array(':bonus' => $userConfig->ref_bonus, ':userId' => $user['ref_id'])); $sql = 'UPDATE %%USERS%% SET `ref_bonus` = 0 WHERE `id` = :userId;'; $db->update($sql, array(':userId' => $user['id'])); $Message = sprintf($LNG['sys_refferal_text'], $user['username'], pretty_number($userConfig->ref_minpoints), pretty_number($userConfig->ref_bonus), $LNG['tech'][921]); PlayerUtil::sendMessage($user['ref_id'], '', $LNG['sys_refferal_from'], 4, sprintf($LNG['sys_refferal_title'], $user['username']), $Message, TIMESTAMP); } return true; }
function send() { global $USER, $LNG; $ticketID = HTTP::_GP('id', 0); $message = HTTP::_GP('message', '', true); $change = HTTP::_GP('change_status', 0); $ticketDetail = $GLOBALS['DATABASE']->getFirstRow("SELECT ownerID, subject, status FROM " . TICKETS . " WHERE ticketID = " . $ticketID . ";"); $status = $change ? $ticketDetail['status'] <= 1 ? 2 : 1 : 1; if (!$change && empty($message)) { HTTP::redirectTo('admin.php?page=support&mode=view&id=' . $ticketID); } $subject = "RE: " . $ticketDetail['subject']; if ($change && $status == 1) { $this->ticketObj->createAnswer($ticketID, $USER['id'], $USER['username'], $subject, $LNG['ti_admin_open'], $status); } if (!empty($message)) { $this->ticketObj->createAnswer($ticketID, $USER['id'], $USER['username'], $subject, $message, $status); } if ($change && $status == 2) { $this->ticketObj->createAnswer($ticketID, $USER['id'], $USER['username'], $subject, $LNG['ti_admin_close'], $status); } $subject = sprintf($LNG['sp_answer_message_title'], $ticketID); $text = sprintf($LNG['sp_answer_message'], $ticketID); PlayerUtil::sendMessage($ticketDetail['ownerID'], $USER['id'], $USER['username'], 4, $subject, $text, TIMESTAMP, NULL, 1, Universe::getEmulated()); HTTP::redirectTo('admin.php?page=support'); }
function ReturnEvent() { $LNG = $this->getLanguage(NULL, $this->_fleet['fleet_owner']); $Message = sprintf($LNG['sys_stat_mess'], GetStartAddressLink($this->_fleet, ''), pretty_number($this->_fleet['fleet_resource_metal']), $LNG['tech'][901], pretty_number($this->_fleet['fleet_resource_crystal']), $LNG['tech'][902], pretty_number($this->_fleet['fleet_resource_deuterium']), $LNG['tech'][903]); PlayerUtil::sendMessage($this->_fleet['fleet_owner'], 0, $LNG['sys_mess_tower'], 4, $LNG['sys_mess_fleetback'], $Message, $this->_fleet['fleet_end_time'], NULL, 1, $this->_fleet['fleet_universe']); $this->RestoreFleet(); }
function ShowSendMessagesPage() { global $USER, $LNG; $ACTION = HTTP::_GP('action', ''); if ($ACTION == 'send') { switch ($USER['authlevel']) { case AUTH_MOD: $class = 'mod'; break; case AUTH_OPS: $class = 'ops'; break; case AUTH_ADM: $class = 'admin'; break; default: $class = ''; break; } $Subject = HTTP::_GP('subject', '', true); $Message = HTTP::_GP('text', '', true); $Mode = HTTP::_GP('mode', 0); $Lang = HTTP::_GP('lang', ''); if (!empty($Message) && !empty($Subject)) { require 'includes/classes/BBCode.class.php'; if ($Mode == 0 || $Mode == 2) { $From = '<span class="' . $class . '">' . $LNG['user_level'][$USER['authlevel']] . ' ' . $USER['username'] . '</span>'; $pmSubject = '<span class="' . $class . '">' . $Subject . '</span>'; $pmMessage = '<span class="' . $class . '">' . BBCode::parse($Message) . '</span>'; $USERS = $GLOBALS['DATABASE']->query("SELECT `id`, `username` FROM " . USERS . " WHERE `universe` = '" . Universe::getEmulated() . "'" . (!empty($Lang) ? " AND `lang` = '" . $GLOBALS['DATABASE']->sql_escape($Lang) . "'" : "") . ";"); while ($UserData = $GLOBALS['DATABASE']->fetch_array($USERS)) { $sendMessage = str_replace('{USERNAME}', $UserData['username'], $pmMessage); PlayerUtil::sendMessage($UserData['id'], $USER['id'], $From, 50, $pmSubject, $sendMessage, TIMESTAMP, NULL, 1, Universe::getEmulated()); } } if ($Mode == 1 || $Mode == 2) { require 'includes/classes/Mail.class.php'; $userList = array(); $USERS = $GLOBALS['DATABASE']->query("SELECT `email`, `username` FROM " . USERS . " WHERE `universe` = '" . Universe::getEmulated() . "'" . (!empty($Lang) ? " AND `lang` = '" . $GLOBALS['DATABASE']->sql_escape($Lang) . "'" : "") . ";"); while ($UserData = $GLOBALS['DATABASE']->fetch_array($USERS)) { $userList[$UserData['email']] = array('username' => $UserData['username'], 'body' => BBCode::parse(str_replace('{USERNAME}', $UserData['username'], $Message))); } Mail::multiSend($userList, strip_tags($Subject)); } exit($LNG['ma_message_sended']); } else { exit($LNG['ma_subject_needed']); } } $sendModes = $LNG['ma_modes']; if (Config::get()->mail_active == 0) { unset($sendModes[1]); unset($sendModes[2]); } $template = new template(); $template->assign_vars(array('langSelector' => array_merge(array('' => $LNG['ma_all']), $LNG->getAllowedLangs(false)), 'modes' => $sendModes)); $template->show('SendMessagesPage.tpl'); }
function ReturnEvent() { $LNG = $this->getLanguage(NULL, $this->_fleet['fleet_owner']); $sql = 'SELECT name FROM %%PLANETS%% WHERE id = :planetId;'; $planetName = Database::get()->selectSingle($sql, array(':planetId' => $this->_fleet['fleet_start_id']), 'name'); $Message = sprintf($LNG['sys_fleet_won'], $planetName, GetTargetAdressLink($this->_fleet, ''), pretty_number($this->_fleet['fleet_resource_metal']), $LNG['tech'][901], pretty_number($this->_fleet['fleet_resource_crystal']), $LNG['tech'][902], pretty_number($this->_fleet['fleet_resource_deuterium']), $LNG['tech'][903]); PlayerUtil::sendMessage($this->_fleet['fleet_owner'], 0, $LNG['sys_mess_tower'], 4, $LNG['sys_mess_fleetback'], $Message, $this->_fleet['fleet_end_time'], NULL, 1, $this->_fleet['fleet_universe']); $this->RestoreFleet(); }
function ReturnEvent() { $LNG = $this->getLanguage(NULL, $this->_fleet['fleet_owner']); $sql = 'SELECT name FROM %%PLANETS%% WHERE id = :planetId;'; $planetName = Database::get()->selectSingle($sql, array(':planetId' => $this->_fleet['fleet_start_id']), 'name'); $Message = sprintf($LNG['sys_tran_mess_back'], $planetName, GetStartAddressLink($this->_fleet, '')); PlayerUtil::sendMessage($this->_fleet['fleet_owner'], 0, $LNG['sys_mess_tower'], 4, $LNG['sys_mess_fleetback'], $Message, $this->_fleet['fleet_end_time'], NULL, 1, $this->_fleet['fleet_universe']); $this->RestoreFleet(); }
function ReturnEvent() { $LNG = $this->getLanguage(NULL, $this->_fleet['fleet_owner']); if ($this->_fleet['fleet_resource_darkmatter'] > 0) { $message = sprintf($LNG['sys_expe_back_home_with_dm'], $LNG['tech'][921], pretty_number($this->_fleet['fleet_resource_darkmatter']), $LNG['tech'][921]); $this->UpdateFleet('fleet_array', '220,0;'); } else { $message = $LNG['sys_expe_back_home_without_dm']; } PlayerUtil::sendMessage($this->_fleet['fleet_owner'], 0, $LNG['sys_mess_tower'], 4, $LNG['sys_mess_fleetback'], $message, $this->_fleet['fleet_end_time'], NULL, 1, $this->_fleet['fleet_universe']); $this->RestoreFleet(); }
private function _activeUser() { global $LNG; $validationID = HTTP::_GP('i', 0); $validationKey = HTTP::_GP('k', ''); $db = Database::get(); $sql = "SELECT * FROM %%USERS_VALID%%\n\t\tWHERE validationID\t= :validationID\n\t\tAND validationKey\t= :validationKey\n\t\tAND universe\t\t= :universe;"; $userData = $db->selectSingle($sql, array(':validationKey' => $validationKey, ':validationID' => $validationID, ':universe' => Universe::current())); if (empty($userData)) { $this->printMessage($LNG['vertifyNoUserFound']); } $config = Config::get(); $sql = "DELETE FROM %%USERS_VALID%% WHERE validationID = :validationID;"; $db->delete($sql, array(':validationID' => $validationID)); list($userID, $planetID) = PlayerUtil::createPlayer($userData['universe'], $userData['userName'], $userData['password'], $userData['email'], $userData['language']); if ($config->mail_active == 1) { require 'includes/classes/Mail.class.php'; $MailSubject = sprintf($LNG['registerMailCompleteTitle'], $config->game_name, Universe::current()); $MailRAW = $LNG->getTemplate('email_reg_done'); $MailContent = str_replace(array('{USERNAME}', '{GAMENAME}', '{GAMEMAIL}'), array($userData['userName'], $config->game_name . ' - ' . $config->uni_name, $config->smtp_sendmail), $MailRAW); try { Mail::send($userData['email'], $userData['userName'], $MailSubject, $MailContent); } catch (Exception $e) { // This mail is wayne. } } if (!empty($userData['referralID'])) { $sql = "UPDATE %%USERS%% SET\n\t\t\t`ref_id`\t= :referralId,\n\t\t\t`ref_bonus`\t= 1\n\t\t\tWHERE\n\t\t\t`id`\t\t= :userID;"; $db->update($sql, array(':referralId' => $userData['referralID'], ':userID' => $userID)); } if (!empty($userData['externalAuthUID'])) { $sql = "INSERT INTO %%USERS_AUTH%% SET\n\t\t\t`id`\t\t= :userID,\n\t\t\t`account`\t= :externalAuthUID,\n\t\t\t`mode`\t\t= :externalAuthMethod;"; $db->insert($sql, array(':userID' => $userID, ':externalAuthUID' => $userData['externalAuthUID'], ':externalAuthMethod' => $userData['externalAuthMethod'])); } $senderName = $LNG['registerWelcomePMSenderName']; $subject = $LNG['registerWelcomePMSubject']; $message = sprintf($LNG['registerWelcomePMText'], $config->game_name, $userData['universe']); PlayerUtil::sendMessage($userID, 1, $senderName, 1, $subject, $message, TIMESTAMP); return array('userID' => $userID, 'userName' => $userData['userName'], 'planetID' => $planetID); }
public function getACSPageData($fleetID) { global $USER, $LNG; $db = Database::get(); $sql = "SELECT fleet_start_time, fleet_end_id, fleet_group, fleet_mess FROM %%FLEETS%% WHERE fleet_id = :fleetID;"; $fleetData = $db->selectSingle($sql, array(':fleetID' => $fleetID)); if ($db->rowCount() != 1) { return array(); } if ($fleetData['fleet_mess'] == 1 || $fleetData['fleet_start_time'] <= TIMESTAMP) { return array(); } if ($fleetData['fleet_group'] == 0) { $acsData = $this->createACS($fleetID, $fleetData); } else { $acsData = $this->loadACS($fleetData); } if (empty($acsData)) { return array(); } $acsName = HTTP::_GP('acsName', '', UTF8_SUPPORT); if (!empty($acsName)) { if (PlayerUtil::isNameValid($acsName)) { $this->sendJSON($LNG['fl_acs_newname_alphanum']); } $sql = "UPDATE %%AKS%% SET name = acsName WHERE id = :acsID;"; $db->update($sql, array(':acsName' => $acsName, ':acsID' => $acsData['id'])); $this->sendJSON(false); } $invitedUsers = array(); $sql = "SELECT id, username FROM %%USERS_ACS%% INNER JOIN %%USERS%% ON userID = id WHERE acsID = :acsID;"; $userResult = $db->select($sql, array(':acsID' => $acsData['id'])); foreach ($userResult as $userRow) { $invitedUsers[$userRow['id']] = $userRow['username']; } $newUser = HTTP::_GP('username', '', UTF8_SUPPORT); $statusMessage = ""; if (!empty($newUser)) { $sql = "SELECT id FROM %%USERS%% WHERE universe = :universe AND username = :username;"; $newUserID = $db->selectSingle($sql, array(':universe' => Universe::current(), ':username' => $newUser), 'id'); if (empty($newUserID)) { $statusMessage = $LNG['fl_player'] . " " . $newUser . " " . $LNG['fl_dont_exist']; } elseif (isset($invitedUsers[$newUserID])) { $statusMessage = $LNG['fl_player'] . " " . $newUser . " " . $LNG['fl_already_invited']; } else { $statusMessage = $LNG['fl_player'] . " " . $newUser . " " . $LNG['fl_add_to_attack']; $sql = "INSERT INTO %%USERS_ACS%% SET acsID = :acsID, userID = :newUserID;"; $db->insert($sql, array(':acsID' => $acsData['id'], ':newUserID' => $newUserID)); $invitedUsers[$newUserID] = $newUser; $inviteTitle = $LNG['fl_acs_invitation_title']; $inviteMessage = $LNG['fl_player'] . $USER['username'] . $LNG['fl_acs_invitation_message']; PlayerUtil::sendMessage($newUserID, $USER['id'], TIMESTAMP, 1, $USER['username'], $inviteTitle, $inviteMessage); } } return array('invitedUsers' => $invitedUsers, 'acsName' => $acsData['name'], 'mainFleetID' => $fleetID, 'statusMessage' => $statusMessage); }
public function SetNextQueueTechOnTop() { global $resource, $LNG; if (empty($this->USER['b_tech_queue'])) { $this->USER['b_tech'] = 0; $this->USER['b_tech_id'] = 0; $this->USER['b_tech_planet'] = 0; $this->USER['b_tech_queue'] = ''; return false; } $CurrentQueue = unserialize($this->USER['b_tech_queue']); $Loop = true; while ($Loop == true) { $ListIDArray = $CurrentQueue[0]; $isAnotherPlanet = $ListIDArray[4] != $this->PLANET['id']; if ($isAnotherPlanet) { $sql = 'SELECT * FROM %%PLANETS%% WHERE id = :planetId;'; $PLANET = Database::get()->selectSingle($sql, array(':planetId' => $ListIDArray[4])); $RPLANET = new ResourceUpdate(true, false); list(, $PLANET) = $RPLANET->CalcResource($this->USER, $PLANET, false, $this->USER['b_tech']); } else { $PLANET = $this->PLANET; } $PLANET[$resource[31] . '_inter'] = self::getNetworkLevel($this->USER, $PLANET); $Element = $ListIDArray[0]; $Level = $ListIDArray[1]; $costResources = BuildFunctions::getElementPrice($this->USER, $PLANET, $Element); $BuildTime = BuildFunctions::getBuildingTime($this->USER, $PLANET, $Element, $costResources); $HaveResources = BuildFunctions::isElementBuyable($this->USER, $PLANET, $Element, $costResources); $BuildEndTime = $this->USER['b_tech'] + $BuildTime; $CurrentQueue[0] = array($Element, $Level, $BuildTime, $BuildEndTime, $PLANET['id']); if ($HaveResources == true) { if (isset($costResources[901])) { $PLANET[$resource[901]] -= $costResources[901]; } if (isset($costResources[902])) { $PLANET[$resource[902]] -= $costResources[902]; } if (isset($costResources[903])) { $PLANET[$resource[903]] -= $costResources[903]; } if (isset($costResources[921])) { $this->USER[$resource[921]] -= $costResources[921]; } $this->USER['b_tech_id'] = $Element; $this->USER['b_tech'] = $BuildEndTime; $this->USER['b_tech_planet'] = $PLANET['id']; $this->USER['b_tech_queue'] = serialize($CurrentQueue); $Loop = false; } else { if ($this->USER['hof'] == 1) { if (!isset($costResources[901])) { $costResources[901] = 0; } if (!isset($costResources[902])) { $costResources[902] = 0; } if (!isset($costResources[903])) { $costResources[903] = 0; } $Message = sprintf($LNG['sys_notenough_money'], $PLANET['name'], $PLANET['id'], $PLANET['galaxy'], $PLANET['system'], $PLANET['planet'], $LNG['tech'][$Element], pretty_number($PLANET['metal']), $LNG['tech'][901], pretty_number($PLANET['crystal']), $LNG['tech'][902], pretty_number($PLANET['deuterium']), $LNG['tech'][903], pretty_number($costResources[901]), $LNG['tech'][901], pretty_number($costResources[902]), $LNG['tech'][902], pretty_number($costResources[903]), $LNG['tech'][903]); PlayerUtil::sendMessage($this->USER['id'], 0, $this->USER['b_tech'], 99, $LNG['sys_techlist'], $LNG['sys_buildlist_fail'], $Message); } array_shift($CurrentQueue); if (count($CurrentQueue) == 0) { $this->USER['b_tech'] = 0; $this->USER['b_tech_id'] = 0; $this->USER['b_tech_planet'] = 0; $this->USER['b_tech_queue'] = ''; $Loop = false; } else { $BaseTime = $BuildEndTime - $BuildTime; $NewQueue = array(); foreach ($CurrentQueue as $ListIDArray) { $ListIDArray[2] = BuildFunctions::getBuildingTime($this->USER, $PLANET, $ListIDArray[0]); $BaseTime += $ListIDArray[2]; $ListIDArray[3] = $BaseTime; $NewQueue[] = $ListIDArray; } $CurrentQueue = $NewQueue; } } if ($isAnotherPlanet) { $RPLANET->SavePlanetToDB($this->USER, $PLANET); $RPLANET = NULL; unset($RPLANET); } else { $this->PLANET = $PLANET; } } return true; }
function TargetEvent() { global $pricelist, $reslist, $resource; $db = Database::get(); $sql = 'SELECT * FROM %%USERS%% WHERE id = :userId;'; $senderUser = $db->selectSingle($sql, array(':userId' => $this->_fleet['fleet_owner'])); $targetUser = $db->selectSingle($sql, array(':userId' => $this->_fleet['fleet_target_owner'])); $sql = 'SELECT * FROM %%PLANETS%% WHERE id = :planetId;'; $targetPlanet = $db->selectSingle($sql, array(':planetId' => $this->_fleet['fleet_end_id'])); $sql = 'SELECT name FROM %%PLANETS%% WHERE id = :planetId;'; $senderPlanetName = $db->selectSingle($sql, array(':planetId' => $this->_fleet['fleet_start_id']), 'name'); $LNG = $this->getLanguage($senderUser['lang']); $senderUser['factor'] = getFactors($senderUser, 'basic', $this->_fleet['fleet_start_time']); $targetUser['factor'] = getFactors($targetUser, 'basic', $this->_fleet['fleet_start_time']); $planetUpdater = new ResourceUpdate(); list($targetUser, $targetPlanet) = $planetUpdater->CalcResource($targetUser, $targetPlanet, true, $this->_fleet['fleet_start_time']); $sql = 'SELECT * FROM %%FLEETS%% WHERE fleet_end_id = :planetId AND fleet_mission = 5 AND fleet_end_stay > :time;'; $targetStayFleets = $db->select($sql, array(':planetId' => $this->_fleet['fleet_end_id'], ':time' => $this->_fleet['fleet_start_time'])); foreach ($targetStayFleets as $fleetRow) { $fleetData = FleetFunctions::unserialize($fleetRow['fleet_array']); foreach ($fleetData as $shipId => $shipAmount) { $targetPlanet[$resource[$shipId]] += $shipAmount; } } $fleetAmount = $this->_fleet['fleet_amount'] * (1 + $senderUser['factor']['SpyPower']); $senderSpyTech = max($senderUser['spy_tech'], 1); $targetSpyTech = max($targetUser['spy_tech'], 1); $techDifference = abs($senderSpyTech - $targetSpyTech); $MinAmount = ($senderSpyTech > $targetSpyTech ? -1 : 1) * pow($techDifference * SPY_DIFFENCE_FACTOR, 2); $SpyFleet = $fleetAmount >= $MinAmount; $SpyDef = $fleetAmount >= $MinAmount + 1 * SPY_VIEW_FACTOR; $SpyBuild = $fleetAmount >= $MinAmount + 3 * SPY_VIEW_FACTOR; $SpyTechno = $fleetAmount >= $MinAmount + 5 * SPY_VIEW_FACTOR; $classIDs[900] = array_merge($reslist['resstype'][1], $reslist['resstype'][2]); if ($SpyFleet) { $classIDs[200] = $reslist['fleet']; } if ($SpyDef) { $classIDs[400] = array_merge($reslist['defense'], $reslist['missile']); } if ($SpyBuild) { $classIDs[0] = $reslist['build']; } if ($SpyTechno) { $classIDs[100] = $reslist['tech']; } $targetChance = mt_rand(0, min($fleetAmount / 4 * ($targetSpyTech / $senderSpyTech), 100)); $spyChance = mt_rand(0, 100); $spyData = array(); foreach ($classIDs as $classID => $elementIDs) { foreach ($elementIDs as $elementID) { if (isset($targetUser[$resource[$elementID]])) { $spyData[$classID][$elementID] = $targetUser[$resource[$elementID]]; } else { $spyData[$classID][$elementID] = $targetPlanet[$resource[$elementID]]; } } if ($senderUser['spyMessagesMode'] == 1) { $spyData[$classID] = array_filter($spyData[$classID]); } } // I'm use template class here, because i want to exclude HTML in PHP. require_once 'includes/classes/class.template.php'; $template = new template(); $template->caching = true; $template->compile_id = $senderUser['lang']; $template->loadFilter('output', 'trimwhitespace'); list($tplDir) = $template->getTemplateDir(); $template->setTemplateDir($tplDir . 'game/'); $template->assign_vars(array('spyData' => $spyData, 'targetPlanet' => $targetPlanet, 'targetChance' => $targetChance, 'spyChance' => $spyChance, 'isBattleSim' => ENABLE_SIMULATOR_LINK == true && isModuleAvailable(MODULE_SIMULATOR), 'title' => sprintf($LNG['sys_mess_head'], $targetPlanet['name'], $targetPlanet['galaxy'], $targetPlanet['system'], $targetPlanet['planet'], _date($LNG['php_tdformat'], $this->_fleet['fleet_end_time'], $targetUser['timezone'], $LNG)))); $template->assign_vars(array('LNG' => $LNG), false); $spyReport = $template->fetch('shared.mission.spyReport.tpl'); PlayerUtil::sendMessage($this->_fleet['fleet_owner'], 0, $LNG['sys_mess_qg'], 0, $LNG['sys_mess_spy_report'], $spyReport, $this->_fleet['fleet_start_time'], NULL, 1, $this->_fleet['fleet_universe']); $LNG = $this->getLanguage($targetUser['lang']); $targetMessage = $LNG['sys_mess_spy_ennemyfleet'] . " " . $senderPlanetName; if ($this->_fleet['fleet_start_type'] == 3) { $targetMessage .= $LNG['sys_mess_spy_report_moon'] . ' '; } $text = '<a href="game.php?page=galaxy&galaxy=%1$s&system=%2$s">[%1$s:%2$s:%3$s]</a> %7$s %8$s <a href="game.php?page=galaxy&galaxy=%4$s&system=%5$s">[%4$s:%5$s:%6$s]</a> %9$s'; $targetMessage .= sprintf($text, $this->_fleet['fleet_start_galaxy'], $this->_fleet['fleet_start_system'], $this->_fleet['fleet_start_planet'], $this->_fleet['fleet_end_galaxy'], $this->_fleet['fleet_end_system'], $this->_fleet['fleet_end_planet'], $LNG['sys_mess_spy_seen_at'], $targetPlanet['name'], $LNG['sys_mess_spy_seen_at2']); PlayerUtil::sendMessage($this->_fleet['fleet_target_owner'], 0, $LNG['sys_mess_spy_control'], 0, $LNG['sys_mess_spy_activity'], $targetMessage, $this->_fleet['fleet_start_time'], NULL, 1, $this->_fleet['fleet_universe']); if ($targetChance >= $spyChance) { $config = Config::get($this->_fleet['fleet_universe']); $whereCol = $this->_fleet['fleet_end_type'] == 3 ? "id_luna" : "id"; $sql = 'UPDATE %%PLANETS%% SET der_metal = der_metal + :metal, der_crystal = der_crystal + :crystal WHERE ' . $whereCol . ' = :planetId;'; $db->update($sql, array(':metal' => $fleetAmount * $pricelist[210]['cost'][901] * $config->Fleet_Cdr / 100, ':crystal' => $fleetAmount * $pricelist[210]['cost'][902] * $config->Fleet_Cdr / 100, ':planetId' => $this->_fleet['fleet_end_id'])); $this->KillFleet(); } else { $this->setState(FLEET_RETURN); $this->SaveFleet(); } }
function accept() { global $USER, $LNG; $id = HTTP::_GP('id', 0); $db = Database::get(); $sql = "DELETE FROM %%BUDDY_REQUEST%% WHERE id = :id;"; $db->delete($sql, array(':id' => $id)); $sql = "SELECT sender, u.username FROM %%BUDDY%% b INNER JOIN %%USERS%% u ON sender = u.id WHERE b.id = :id;"; $sender = $db->selectSingle($sql, array(':id' => $id)); PlayerUtil::sendMessage($sender['sender'], $USER['id'], $USER['username'], 4, $LNG['bu_accepted_request_title'], sprintf($LNG['bu_accepted_request_body'], $sender['username'], $USER['username']), TIMESTAMP); $this->redirectTo("game.php?page=buddyList"); }
function TargetEvent() { $db = Database::get(); $sql = 'SELECT * FROM %%USERS%% WHERE `id` = :userId;'; $senderUser = $db->selectSingle($sql, array(':userId' => $this->_fleet['fleet_owner'])); $senderUser['factor'] = getFactors($senderUser, 'basic', $this->_fleet['fleet_start_time']); $LNG = $this->getLanguage($senderUser['lang']); $checkPosition = PlayerUtil::checkPosition($this->_fleet['fleet_universe'], $this->_fleet['fleet_end_galaxy'], $this->_fleet['fleet_end_system'], $this->_fleet['fleet_end_planet']); $isPositionFree = PlayerUtil::isPositionFree($this->_fleet['fleet_universe'], $this->_fleet['fleet_end_galaxy'], $this->_fleet['fleet_end_system'], $this->_fleet['fleet_end_planet']); if (!$isPositionFree || !$checkPosition) { $message = sprintf($LNG['sys_colo_notfree'], GetTargetAddressLink($this->_fleet, '')); } else { $allowPlanetPosition = PlayerUtil::allowPlanetPosition($this->_fleet['fleet_end_planet'], $senderUser); if (!$allowPlanetPosition) { $message = sprintf($LNG['sys_colo_notech'], GetTargetAddressLink($this->_fleet, '')); } else { $sql = 'SELECT COUNT(*) as state FROM %%PLANETS%% WHERE `id_owner` = :userId AND `planet_type` = :type AND `destruyed` = :destroyed;'; $currentPlanetCount = $db->selectSingle($sql, array(':userId' => $this->_fleet['fleet_owner'], ':type' => 1, ':destroyed' => 0), 'state'); $maxPlanetCount = PlayerUtil::maxPlanetCount($senderUser); if ($currentPlanetCount >= $maxPlanetCount) { $message = sprintf($LNG['sys_colo_maxcolo'], GetTargetAddressLink($this->_fleet, ''), $maxPlanetCount); } else { $NewOwnerPlanet = PlayerUtil::createPlanet($this->_fleet['fleet_end_galaxy'], $this->_fleet['fleet_end_system'], $this->_fleet['fleet_end_planet'], $this->_fleet['fleet_universe'], $this->_fleet['fleet_owner'], $LNG['fcp_colony'], false, $senderUser['authlevel']); if ($NewOwnerPlanet === false) { $message = sprintf($LNG['sys_colo_badpos'], GetTargetAddressLink($this->_fleet, '')); $this->setState(FLEET_RETURN); } else { $this->_fleet['fleet_end_id'] = $NewOwnerPlanet; $message = sprintf($LNG['sys_colo_allisok'], GetTargetAddressLink($this->_fleet, '')); $this->StoreGoodsToPlanet(); if ($this->_fleet['fleet_amount'] == 1) { $this->KillFleet(); } else { $CurrentFleet = explode(";", $this->_fleet['fleet_array']); $NewFleet = ''; foreach ($CurrentFleet as $Group) { if (empty($Group)) { continue; } $Class = explode(",", $Group); if ($Class[0] == 208 && $Class[1] > 1) { $NewFleet .= $Class[0] . "," . ($Class[1] - 1) . ";"; } elseif ($Class[0] != 208 && $Class[1] > 0) { $NewFleet .= $Class[0] . "," . $Class[1] . ";"; } } $this->UpdateFleet('fleet_array', $NewFleet); $this->UpdateFleet('fleet_amount', $this->_fleet['fleet_amount'] - 1); $this->UpdateFleet('fleet_resource_metal', 0); $this->UpdateFleet('fleet_resource_crystal', 0); $this->UpdateFleet('fleet_resource_deuterium', 0); } } } } } PlayerUtil::sendMessage($this->_fleet['fleet_owner'], 0, $LNG['sys_colo_mess_from'], 4, $LNG['sys_colo_mess_report'], $message, $this->_fleet['fleet_start_time'], NULL, 1, $this->_fleet['fleet_universe']); $this->setState(FLEET_RETURN); $this->SaveFleet(); }
function TargetEvent() { global $resource, $reslist; $db = Database::get(); $sqlFields = array(); $elementIDs = array_merge($reslist['defense'], $reslist['missile']); foreach ($elementIDs as $elementID) { $sqlFields[] = '%%PLANETS%%.`' . $resource[$elementID] . '`'; } $sql = 'SELECT lang, shield_tech, %%PLANETS%%.id, name, id_owner, ' . implode(', ', $sqlFields) . ' FROM %%PLANETS%% INNER JOIN %%USERS%% ON id_owner = %%USERS%%.id WHERE %%PLANETS%%.id = :planetId;'; $targetData = $db->selectSingle($sql, array(':planetId' => $this->_fleet['fleet_end_id'])); if ($this->_fleet['fleet_end_type'] == 3) { $sql = 'SELECT ' . $resource[502] . ' FROM %%PLANETS%% WHERE id_luna = :moonId;'; $targetData[$resource[502]] = $db->selectSingle($sql, array(':moonId' => $this->_fleet['fleet_end_id']), $resource[502]); } $sql = 'SELECT lang, military_tech FROM %%USERS%% WHERE id = :userId;'; $senderData = $db->selectSingle($sql, array(':userId' => $this->_fleet['fleet_owner'])); if (!in_array($this->_fleet['fleet_target_obj'], $reslist['defense']) || !in_array($this->_fleet['fleet_target_obj'], $reslist['missile']) || $this->_fleet['fleet_target_obj'] == 502 || $this->_fleet['fleet_target_obj'] == 0) { $primaryTarget = 401; } else { $primaryTarget = $this->_fleet['fleet_target_obj']; } $targetDefensive = array(); foreach ($elementIDs as $elementID) { $targetDefensive[$elementID] = $targetData[$resource[$elementID]]; } unset($targetDefensive[502]); $LNG = $this->getLanguage(Config::get($this->_fleet['fleet_universe'])->lang, array('L18N', 'FLEET', 'TECH')); if ($targetData[$resource[502]] >= $this->_fleet['fleet_amount']) { $message = $LNG['sys_irak_no_att']; $where = $this->_fleet['fleet_end_type'] == 3 ? 'id_luna' : 'id'; $sql = 'UPDATE %%PLANETS%% SET ' . $resource[502] . ' = ' . $resource[502] . ' - :amount WHERE ' . $where . ' = :planetId;'; $db->update($sql, array(':amount' => $this->_fleet['fleet_amount'], ':planetId' => $targetData['id'])); } else { if ($targetData[$resource[502]] > 0) { $where = $this->_fleet['fleet_end_type'] == 3 ? 'id_luna' : 'id'; $sql = 'UPDATE %%PLANETS%% SET ' . $resource[502] . ' = :amount WHERE ' . $where . ' = :planetId;'; $db->update($sql, array(':amount' => 0, ':planetId' => $targetData['id'])); } $targetDefensive = array_filter($targetDefensive); if (!empty($targetDefensive)) { require_once 'includes/classes/missions/functions/calculateMIPAttack.php'; $result = calculateMIPAttack($targetData["shield_tech"], $senderData["military_tech"], $this->_fleet['fleet_amount'], $targetDefensive, $primaryTarget, $targetData[$resource[502]]); $result = array_filter($result); $message = sprintf($LNG['sys_irak_def'], $targetData[$resource[502]]) . '<br><br>'; ksort($result, SORT_NUMERIC); foreach ($result as $Element => $destroy) { $message .= sprintf('%s (- %d)<br>', $LNG['tech'][$Element], $destroy); $sql = 'UPDATE %%PLANETS%% SET ' . $resource[$Element] . ' = ' . $resource[$Element] . ' - :amount WHERE id = :planetId;'; $db->update($sql, array(':planetId' => $targetData['id'], ':amount' => $destroy)); } } else { $message = $LNG['sys_irak_no_def']; } } $sql = 'SELECT name FROM %%PLANETS%% WHERE id = :planetId;'; $planetName = Database::get()->selectSingle($sql, array(':planetId' => $this->_fleet['fleet_start_id']), 'name'); $ownerLink = $planetName . " " . GetStartAddressLink($this->_fleet); $targetLink = $targetData['name'] . " " . GetTargetAddressLink($this->_fleet); $message = sprintf($LNG['sys_irak_mess'], $this->_fleet['fleet_amount'], $ownerLink, $targetLink) . $message; PlayerUtil::sendMessage($this->_fleet['fleet_owner'], 0, $LNG['sys_mess_tower'], 3, $LNG['sys_irak_subject'], $message, $this->_fleet['fleet_start_time'], NULL, 1, $this->_fleet['fleet_universe']); PlayerUtil::sendMessage($this->_fleet['fleet_target_owner'], 0, $LNG['sys_mess_tower'], 3, $LNG['sys_irak_subject'], $message, $this->_fleet['fleet_start_time'], NULL, 1, $this->_fleet['fleet_universe']); $this->KillFleet(); }
protected function adminDiplomacyCreateProcessor() { global $LNG, $USER; if (!$this->rights['DIPLOMATIC']) { $this->redirectToHome(); } $db = Database::get(); $id = HTTP::_GP('ally_id', '', UTF8_SUPPORT); $sql = "SELECT id, ally_name, ally_owner, ally_tag, (SELECT level FROM %%DIPLO%% WHERE (owner_1 = :id AND owner_2 = :allianceId) OR (owner_2 = :id AND owner_1 = :allianceId)) as diplo FROM %%ALLIANCE%% WHERE ally_universe = :universe AND id = :id;"; $targetAlliance = $db->selectSingle($sql, array(':allianceId' => $USER['ally_id'], ':id' => $id, ':universe' => Universe::current())); if (empty($targetAlliance)) { $this->sendJSON(array('error' => true, 'message' => sprintf($LNG['al_diplo_no_alliance'], $targetAlliance['id']))); } if (!empty($targetAlliance['diplo'])) { $this->sendJSON(array('error' => true, 'message' => sprintf($LNG['al_diplo_exists'], $targetAlliance['ally_name']))); } if ($targetAlliance['id'] == $this->allianceData['id']) { $this->sendJSON(array('error' => true, 'message' => $LNG['al_diplo_same_alliance'])); } $this->setWindow('ajax'); $level = HTTP::_GP('level', 0); $text = HTTP::_GP('text', '', true); if ($level == 5) { PlayerUtil::sendMessage($targetAlliance['ally_owner'], $USER['id'], TIMESTAMP, 1, $LNG['al_circular_alliance'] . $this->allianceData['ally_tag'], $LNG['al_diplo_war'], sprintf($LNG['al_diplo_war_mes'], "[" . $this->allianceData['ally_tag'] . "] " . $this->allianceData['ally_name'], "[" . $targetAlliance['ally_tag'] . "] " . $targetAlliance['ally_name'], $LNG['al_diplo_level'][$level], $text)); } else { PlayerUtil::sendMessage($targetAlliance['ally_owner'], $USER['id'], TIMESTAMP, 1, $LNG['al_circular_alliance'] . $this->allianceData['ally_tag'], $LNG['al_diplo_ask'], sprintf($LNG['al_diplo_ask_mes'], $LNG['al_diplo_level'][$level], "[" . $this->allianceData['ally_tag'] . "] " . $this->allianceData['ally_name'], "[" . $targetAlliance['ally_tag'] . "] " . $targetAlliance['ally_name'], $text)); } $sql = "INSERT INTO %%DIPLO%% SET owner_1 = :allianceId, owner_2 = :allianceTargetID, level\t= :level, accept = 0, accept_text = :text, universe\t= :universe"; $db->insert($sql, array(':allianceId' => $USER['ally_id'], ':allianceTargetID' => $targetAlliance['id'], ':level' => $level, ':text' => $text, ':universe' => Universe::current())); $this->sendJSON(array('error' => false, 'message' => $LNG['al_diplo_create_done'])); }
function send() { global $USER, $LNG; $receiverID = HTTP::_GP('id', 0); $subject = HTTP::_GP('subject', $LNG['mg_no_subject'], true); $text = HTTP::_GP('text', '', true); $senderName = $USER['username'] . ' [' . $USER['galaxy'] . ':' . $USER['system'] . ':' . $USER['planet'] . ']'; $text = makebr($text); $session = Session::load(); if (empty($receiverID) || empty($text) || !isset($session->messageToken) || $session->messageToken != md5($USER['id'] . '|' . $receiverID)) { $this->sendJSON($LNG['mg_error']); } $session->messageToken = NULL; PlayerUtil::sendMessage($receiverID, $USER['id'], $senderName, 1, $subject, $text, TIMESTAMP); $this->sendJSON($LNG['mg_message_send']); }