예제 #1
0
 public function getContent($msg = null, $failed = false)
 {
     $myself = Neuron_GameServer::getPlayer();
     if (!$this->village->isActive() || $this->village->getOwner()->getId() != $myself->getId()) {
         return false;
     }
     $page = new Neuron_Core_Template();
     $page->setTextSection('formation', 'battle');
     // Load battle slots
     $slots = $this->village->getDefenseSlots();
     // Load your units
     $squads = $this->village->getSquads(false, false, false);
     // See how much rows that is
     $rows = $this->countRows($squads, $slots);
     $page->set('rows', $rows);
     $page->set('slots', $slots);
     if (!empty($msg)) {
         $page->set('message', $msg);
         $page->set('error', $failed);
     }
     foreach ($squads as $v) {
         if ($v->getUnitsAmount() > 0) {
             $page->addListValue('squads', array('sName' => Neuron_Core_Tools::output_varchar($v->getName()), 'oUnits' => $v->getUnits(), 'id' => $v->getId()));
         }
     }
     return $page->parse('battle/formation.phpt');
 }
예제 #2
0
function checkBuildings($buildings, $sQ, $i, $j, $tx, $ty)
{
    global $output;
    // Objects & buildings
    if (isset($buildings[$tx]) && isset($buildings[$tx][$ty])) {
        $loc = array();
        foreach ($buildings[$tx][$ty] as $b) {
            $displayobject = $b->getDisplayObject();
            $offset = $displayobject->getOffset();
            $title = Neuron_Core_Tools::output_varchar($b->getName());
            $location = $b->getLocation();
            if (!isset($loc[$location[0] . 'p' . $location[1]])) {
                if (!isset($output['regions'][$sQ]['objects'][$i])) {
                    $output['regions'][$sQ]['objects'][$i] = array();
                }
                if (!isset($output['regions'][$sQ]['objects'][$i][$j])) {
                    $output['regions'][$sQ]['objects'][$i][$j] = array();
                }
                $id = time();
                $output['regions'][$sQ]['objects'][$i][$j][] = array('tx' => $tx, 'ty' => $ty, 'id' => $id, 'i' => $i - $offset[0], 'j' => $j - $offset[1], 'm' => map_image_cache($displayobject), 'n' => $title, 's' => $b->getMapObjectStatus()->getArray(), 'c' => $b->getEvents('click'), 'z' => 0, 'd' => true);
                $loc[$location[0] . 'p' . $location[1]] = true;
            }
        }
    }
}
예제 #3
0
 protected function getForum()
 {
     $requestData = $this->getRequestData();
     if (isset($requestData['clan'])) {
         $clan = new Dolumar_Players_Clan($requestData['clan']);
         if ($clan) {
             $login = Neuron_Core_Login::__getInstance();
             if ($login->isLogin()) {
                 $me = Neuron_GameServer::getPlayer();
                 $isMember = $clan->isMember($me);
                 $isModerator = $clan->isModerator($me);
                 //__construct ($iForumType, $iForumId, $objUser = false, $bCanSeeAll = false, $bIsModerator = false)
                 $forum = new Neuron_Forum_Forum(1, $clan->getId(), $me, $isMember, $isModerator);
             } else {
                 $forum = new Neuron_Forum_Forum(1, $clan->getId(), false, false, false);
             }
             // Fetch thze title
             $text = Neuron_Core_Text::__getInstance();
             $forum->setTitle(Neuron_Core_Tools::putIntoText($text->get('title', 'forum', 'clan'), array('clan' => Neuron_Core_Tools::output_varchar($clan->getName()))));
             return $forum;
         } else {
             return false;
         }
     } else {
         return false;
     }
 }
예제 #4
0
 public function showRegisterForm($error = false)
 {
     $text = Neuron_Core_Text::__getInstance();
     $text->setFile('account');
     $text->setSection('register');
     $page = new Neuron_Core_Template();
     $page->setTextSection('register', 'account');
     // Get invitation code
     $data = $this->getInputData();
     $page->set('invCode', isset($data['invCode']) ? $data['invCode'] : null);
     // If an error has occured, add that
     if ($error) {
         $page->set('error', $text->get($error, 'errors'));
     }
     // Check for already found data
     if (isset($data['username'])) {
         $page->set('username_value', Neuron_Core_Tools::output_varchar($data['username']));
     }
     if (isset($data['email'])) {
         $page->set('email_value', Neuron_Core_Tools::output_varchar($data['email']));
     }
     $page->set('register', $text->get('register'));
     $page->set('submit', $text->get('submit'));
     $page->set('email', $text->get('email'));
     $page->set('username', $text->get('username'));
     $page->set('password', $text->get('password'));
     $page->set('password2', $text->get('password2'));
     return $page->parse('register/register.tpl');
 }
예제 #5
0
파일: Search.php 프로젝트: Toxicat/dolumar
 private function printResults($page, $query)
 {
     foreach ($query as $v) {
         $displayname = Neuron_URLBuilder::getInstance()->getOpenUrl('PlayerProfile', Neuron_Core_Tools::output_varchar($v['nickname']), array('plid' => $v['plid']));
         $villagename = Neuron_URLBuilder::getInstance()->getOpenUrl('VillageProfile', Neuron_Core_Tools::output_varchar($v['vname']), array('village' => $v['vid']));
         $page->addListValue('results', array('id' => $v['plid'], 'nickname' => $v['nickname'], 'displayname' => $displayname, 'village' => $v['vname'], 'displayvillage' => $villagename, 'distance' => Neuron_Core_Tools::output_distance($v['distance']), 'networth' => $v['networth']));
     }
 }
예제 #6
0
 protected function getTitle()
 {
     $me = Neuron_GameServer::getPlayer();
     if ($me && $this->building->getOwner()->getId() == $me->getId()) {
         return $this->building->getName(false, true) . ' (' . Neuron_Core_Tools::output_varchar($this->building->getVillage()->getName()) . ')';
     } else {
         return $this->building->getName(false) . ' (' . Neuron_Core_Tools::output_varchar($this->building->getVillage()->getName()) . ')';
     }
 }
예제 #7
0
파일: Newsbar.php 프로젝트: Toxicat/dolumar
 public function getContent()
 {
     //return $this->getCurrentResources ();
     $data = $this->getRequestData();
     $page = isset($data['page']) ? intval($data['page']) : 1;
     $myself = Neuron_GameServer::getPlayer();
     // Sort of config ;-)
     $totalPages = 0;
     if ($myself) {
         $villages = $myself->getVillages();
         $totalPages = count($villages);
     }
     $content = $this->getResourcesPage();
     // Next & previous pages
     $nextPage = $page + 1;
     $previousPage = $page - 1;
     if ($previousPage < 1) {
         // Highest page id
         $previousPage = $totalPages;
     }
     if ($nextPage > $totalPages) {
         $nextPage = 1;
     }
     $text = Neuron_Core_Text::__getInstance();
     $page = new Neuron_Core_Template();
     $page->set('nextPage', $nextPage);
     $page->set('previousPage', $previousPage);
     $page->set('minimap', $text->get('minimap', 'menu', 'main'));
     // Check for news messages
     $hasMessages = false;
     if ($myself) {
         $mapper = Neuron_GameServer_Mappers_CachedChatMapper::getInstance();
         $messages = $mapper->countUnreadMessages($myself);
         $hasMessages = $messages > 0;
         //return $messages;
         // Get current village
         $village = $myself->getCurrentVillage();
         if ($village) {
             $page->set('current_village', Neuron_Core_Tools::output_varchar($village->getName()));
             $page->set('current_village_id', Neuron_Core_Tools::output_varchar($village->getId()));
         }
     }
     $page->set('hasMessages', $hasMessages);
     $page->set('inbox', $text->get('inbox', 'menu', 'main'));
     $page->set('home', $text->get('home', 'menu', 'main'));
     $page->set('homecors', $this->getHomeLocation());
     $page->set('content', $content);
     return $page->parse('newsbar.tpl');
 }
예제 #8
0
 protected function setPlayer()
 {
     $o = $this->getRequestData();
     if (!isset($o['village']) && isset($o[0])) {
         $o['village'] = $o[0];
     } elseif (!isset($o['village'])) {
         $o['village'] = null;
     }
     $village = Dolumar_Players_Village::getVillage($o['village']);
     if ($village) {
         $this->player = $village->getOwner();
         $this->thisVillage = $village;
     }
     $this->setTitle(Neuron_Core_Tools::output_varchar($this->player->getNickname()));
 }
예제 #9
0
파일: Build.php 프로젝트: Toxicat/dolumar
 public function setSettings()
 {
     $text = Neuron_Core_Text::__getInstance();
     $login = Neuron_Core_Login::__getInstance();
     // Window settings
     $this->setAllowOnlyOnce();
     $data = $this->getRequestData();
     $this->village = Dolumar_Players_Village::getMyVillage($data['vid']);
     if ($login->isLogin() && $this->village && $this->village->isActive()) {
         $this->setTitle($text->get('build', 'menu', 'main') . ' (' . Neuron_Core_Tools::output_varchar($this->village->getName()) . ')');
         $this->setSize('290px', '300px');
     } else {
         $this->setTitle($text->get('build', 'menu', 'main'));
         $this->setSize('250px', '150px');
     }
 }
예제 #10
0
 public function setSettings()
 {
     $text = Neuron_Core_Text::__getInstance();
     $login = Neuron_Core_Login::__getInstance();
     // Window settings
     $this->setSize('250px', '245px');
     $this->setAllowOnlyOnce();
     $data = $this->getRequestData();
     // Construct village
     $this->village = Dolumar_Players_Village::getVillage($data['vid']);
     if ($login->isLogin() && $this->village->isFound()) {
         $this->setTitle($text->get('technologies', 'menu', 'main') . ' (' . Neuron_Core_Tools::output_varchar($this->village->getName()) . ')');
     } else {
         $this->village = false;
         $this->setTitle($text->get('technologies', 'menu', 'main'));
     }
 }
예제 #11
0
 protected function getChooseUnit($building)
 {
     $building = $this->village->buildings->getBuilding($building);
     if (!$building instanceof $this->buildingType) {
         return '<p>Invalid input: building not found.</p>';
     }
     // Count the thieves in this building
     $allUnits = $building->getUnits();
     $page = new Neuron_Core_Template();
     $page->setTextSection('chooseUnit', 'thievery');
     $units = array();
     foreach ($allUnits as $v) {
         $location = $v->getLocation();
         $units[] = array('id' => $v->getId(), 'name' => $v->getName(false, true), 'location' => Neuron_Core_Tools::output_varchar($location->getName()), 'location_id' => $location->getId(), 'moving' => $v->isMoving() ? Neuron_Core_Tools::getCountdown($v->getArrivalDate()) : null);
     }
     $page->set('units', $units);
     return $page->parse('thieves/chooseThief.phpt');
 }
예제 #12
0
파일: Units.php 프로젝트: Toxicat/dolumar
 private function getCurrentUnits($village)
 {
     $text = Neuron_Core_Text::__getInstance();
     $text->setFile('unit');
     $text->setSection('units');
     //$units = $village->getDefendingUnits ();
     $units = $village->getAllUnits();
     $page = new Neuron_Core_Template();
     // Print stat names
     Dolumar_Units_Unit::printStatNames($page);
     $page->set('noUnits', $text->get('noUnits'));
     $page->set('about', $text->get('about'));
     $page->set('villageId', $this->village->getId());
     $page->set('squads', $text->getClickTo($text->get('toSquads')));
     foreach ($units as $v) {
         $page->addListValue('units', array('name' => Neuron_Core_Tools::output_varchar($v->getName()), 'stats' => $v->getStats($village), 'available' => $v->getAvailableAmount(), 'total' => $v->getTotalAmount(), 'consumption' => $v->getCurrentConsumption_text($village), 'type' => $v->getAttackType_text(), 'image' => $v->getImageUrl()));
     }
     $page->sortList('units');
     return $page->parse('units.tpl');
 }
예제 #13
0
 public function setSettings()
 {
     $text = Neuron_Core_Text::__getInstance();
     $login = Neuron_Core_Login::__getInstance();
     // Window settings
     $this->setSize('250px', '350px');
     $data = $this->getRequestData();
     if (!isset($data['vid'])) {
         $data['vid'] = 0;
     }
     $this->village = Dolumar_Players_Village::getMyVillage($data['vid']);
     // Window settings
     if ($login->isLogin() && $this->village->isFound() && $this->village->getOwner()->getId() == $login->getUserId()) {
         $this->setTitle($text->get('overview', 'menu', 'main') . ' (' . Neuron_Core_Tools::output_varchar($this->village->getName()) . ')');
     } else {
         $this->setTitle($text->get('overview', 'menu', 'main'));
     }
     $this->setAllowOnlyOnce();
     $this->setClassName('overview');
 }
 public function getContent()
 {
     $text = Neuron_Core_Text::getInstance();
     $player = Neuron_GameServer::getPlayer();
     if (!$player) {
         return $this->throwError($text->get('login', 'login', 'account'));
     }
     $page = new Neuron_Core_Template();
     $page->set('nickname', '');
     // Ignore a player.
     $input = $this->getInputData();
     $nickname = isset($input['nickname']) ? $input['nickname'] : null;
     if (!empty($nickname)) {
         $target = Neuron_GameServer_Player::getFromName($nickname);
         if ($target && $target->getId() == $player->getId()) {
             $page->set('error', 'ignore_yourself');
         } else {
             if ($target) {
                 $player->setIgnoring($target);
             } else {
                 $page->set('nickname', $nickname);
                 $page->set('error', 'player_not_found');
             }
         }
     }
     // Unignore a player
     if (isset($input['unignore'])) {
         $target = Neuron_GameServer::getPlayer($input['unignore']);
         if ($target) {
             $player->setIgnoring($target, false);
         }
     }
     foreach ($player->getIgnoredPlayers() as $v) {
         $page->addListValue('players', array('id' => $v->getId(), 'name' => Neuron_Core_Tools::output_varchar($v->getName())));
     }
     return $page->parse('gameserver/account/ignorelist.phpt');
 }
예제 #15
0
 protected function requestClanPassword($race, $objClan)
 {
     $data = $this->getInputData();
     $page = new Neuron_Core_Template();
     $page->set('wrongPass', isset($data['password']));
     $page->set('race', $race);
     $page->set('clan', $objClan->getId());
     $page->set('clanname', Neuron_Core_Tools::output_varchar($objClan->getName()));
     return $page->parse('gameserver/account/clanPassword.phpt');
 }
예제 #16
0
파일: Ranking.php 프로젝트: Toxicat/dolumar
 public function getVillageRanking()
 {
     $text = Neuron_Core_Text::__getInstance();
     $db = Neuron_Core_Database::__getInstance();
     $input = $this->getInputData();
     $page = new Neuron_Core_Template();
     $text->setFile('ranking');
     $text->setSection('ranking');
     $page->set('title', $text->get('villageRating'));
     $page->set('village', $text->get('village'));
     $page->set('value', $text->get('value'));
     $data = $this->getRequestData();
     $perPage = 25;
     $myDefaultPage = 1;
     if (isset($data['village'])) {
         $village = Dolumar_Players_Village::getVillageFromId($data['village']);
         $myVillageId = $data['village'];
         $myRank = $village->getRank();
         $myDefaultPage = floor($myRank[0] / $perPage) + 1;
     } else {
         $myVillageId = 0;
         // Load "main village" from this user
         $myself = Neuron_GameServer::getPlayer();
         if ($myself) {
             $village = $myself->getMainVillage();
             if ($village) {
                 $myVillageId = $village->getId();
                 $myRank = $village->getRank();
                 $myDefaultPage = floor($myRank[0] / $perPage) + 1;
             }
         }
     }
     $currentPage = isset($input['page']) ? $input['page'] : $myDefaultPage;
     $limit = Neuron_Core_Tools::splitInPages($page, Dolumar_Players_Ranking::countRanking(), $currentPage, $perPage, 6);
     $l = Dolumar_Players_Ranking::getRanking($limit['start'], $limit['perpage']);
     // Get my villages
     $myself = Neuron_GameServer::getPlayer();
     if ($myself && $myself->isPremium()) {
         $distances = $myself->getVillages();
     } else {
         $distances = array();
     }
     $i = $limit['start'];
     foreach ($l as $v) {
         $i++;
         // Calcualte the distances
         $w_distances = array();
         foreach ($distances as $k => $vv) {
             $w_distances[$k] = Neuron_Core_Tools::output_distance(Dolumar_Map_Map::getDistanceBetweenVillages($vv, $v), true, true);
         }
         $page->addListValue('ranking', array($i, Neuron_Core_Tools::output_varchar($v->getName()), $v->getId(), $v->getNetworth(), $v->getId() == $myVillageId, $w_distances));
         //$v->__destruct ();
     }
     // Add the footnote
     $t_distances = array();
     foreach ($distances as $k => $v) {
         $t_distances[$k] = Neuron_Core_Tools::output_varchar($v->getName());
     }
     $page->set('distances', $t_distances);
     return $page->parse('ranking/ranking.tpl');
 }
예제 #17
0
파일: Squad.php 프로젝트: Toxicat/dolumar
 public function getDisplayName()
 {
     return Neuron_Core_Tools::output_varchar($this->getName());
 }
예제 #18
0
파일: Logs.php 프로젝트: Toxicat/dolumar
 public function getLogText($log, $showUrl = true, $html = true)
 {
     $text = Neuron_Core_Text::__getInstance();
     // Secondly: old data (but they do have nice names...)
     $data = array();
     foreach ($log as $k => $v) {
         $data[$k] = $v;
     }
     // Define an url for certain actions
     $sUrl = null;
     switch ($log['action']) {
         case 'sendMsg':
         case 'receiveMsg':
             $sUrl = "openWindow('messages');";
             break;
     }
     if (!isset($log['village'])) {
         return 'invalid log';
     }
     if (isset($log['data']) && is_array($log['data'])) {
         foreach ($log['data'] as $v) {
             if ($v instanceof Neuron_GameServer_Interfaces_Logable) {
                 if (isset($sUrl) || $html == false) {
                     $data[] = Neuron_Core_Tools::output_varchar($v->getName());
                 } else {
                     $data[] = $v->getDisplayName();
                 }
             } elseif (is_string($v) || is_int($v) || is_float($v)) {
                 $data[] = $v;
             } else {
                 $data[] = 'invalid data';
             }
         }
     }
     $mylog = isset($this->myvillages[$log['village']]) ? 'mylogs' : 'hislogs';
     $village = Dolumar_Players_Village::getVillage($log['village']);
     $data['village'] = $village->getName();
     $data['player'] = $village->getOwner()->getDisplayName();
     $datafields = array();
     foreach ($data as $k => $v) {
         if (!is_array($v)) {
             $datafields[$k] = $v;
         }
     }
     $txt = Neuron_Core_Tools::putIntoText($text->get($log['action'], $mylog, 'logs', $text->get($log['action'], 'mylogs', 'logs')), $datafields);
     if (isset($sUrl) && $showUrl) {
         return '<a href="javascript:void(0);" onclick="' . $sUrl . '">' . $txt . '</a>';
     } else {
         return $txt;
     }
 }
예제 #19
0
 public function getVillageProfile($objVillage)
 {
     if (!$objVillage || !$objVillage->isFound()) {
         return '<p>Village not found.</p>';
         return null;
     }
     $text = Neuron_Core_Text::__getInstance();
     $text->setFile('village');
     $text->setSection('profile');
     $townCenter = $objVillage->buildings->getTownCenter();
     if ($townCenter) {
         $l = $townCenter->getLocation();
     } else {
         $l = array('?', '?');
     }
     $page = new Neuron_Core_Template();
     $page->set('village', Neuron_Core_Tools::output_varchar($objVillage->getName()));
     $page->set('location', $text->get('location'));
     $page->set('villageProfile', $text->get('villageProfile'));
     $page->set('location_value', '[' . $l[0] . ',' . $l[1] . ']');
     $page->set('locX', $l[0]);
     $page->set('locY', $l[1]);
     // Owner
     $owner = $objVillage->getOwner();
     $page->set('owner', $text->get('owner'));
     $page->set('owner_value', Neuron_Core_Tools::output_varchar($owner->getNickname()));
     $page->set('pid', $owner->getId());
     // Ranking
     $rank = $objVillage->getRank();
     $page->set('rank', $text->get('rank'));
     $page->set('rank_value', Neuron_Core_Tools::putIntoText($text->get('ranking'), array($rank[0], $rank[1])));
     // Race
     $race = $objVillage->getRace();
     $page->set('race', $text->get('race'));
     $page->set('race_value', Neuron_Core_Tools::output_varchar($race->getRaceName()));
     $page->set('score', $objVillage->getNetworth());
     $me = Neuron_GameServer::getPlayer();
     if ($me && $objVillage->isActive()) {
         foreach ($me->getVillages() as $v) {
             if (!$v->equals($objVillage)) {
                 // Register the visit
                 $v->visits->registerVisit($objVillage);
                 $page->addListValue('challenges', array(Neuron_Core_Tools::putIntoText($text->get('challenge'), array(Neuron_Core_Tools::output_varchar($v->getName()))), htmlentities(json_encode(array('vid' => $v->getId(), 'target' => $objVillage->getId())))));
                 $distance = Dolumar_Map_Map::getDistanceBetweenVillages($v, $objVillage);
                 $page->addListValue('distances', array('id' => $v->getId(), 'name' => Neuron_Core_Tools::output_varchar($v->getName()), 'distance' => Neuron_Core_Tools::output_distance($distance, false, false)));
             }
         }
     } elseif (!$objVillage->isActive()) {
         $page->set('notActive', $text->get('notActive'));
     }
     // Set honour
     $page->set('honour_value', $objVillage->honour->getHonour());
     return $page->parse('villageProfile.tpl');
 }
예제 #20
0
파일: Clan.php 프로젝트: Toxicat/dolumar
 private function getOverview($clan)
 {
     $_SESSION['clan_overview_lastrefresh'] = time();
     // Change the title
     $text = Neuron_Core_Text::__getInstance();
     $this->setTitle($text->get('clan', 'menu', 'main') . ': ' . Neuron_Core_Tools::output_varchar($clan->getName()));
     $page = new Neuron_Core_Template();
     // Check for errors
     $error = $clan->getError();
     if (isset($error)) {
         $page->set('error', $text->get($error, 'errors', 'clan'));
     }
     $myself = Neuron_GameServer::getPlayer();
     $canJoin = $myself && !$clan->isMember($myself);
     $canLeave = $myself && $clan->isMember($myself);
     $page->setTextSection('overview', 'clan');
     $page->set('clanname', Neuron_Core_Tools::output_varchar($clan->getName()));
     $page->set('clanid', $clan->getId());
     foreach ($clan->getMembers() as $v) {
         $status = $clan->getMemberStatus($v);
         $page->addListValue('members', array('id' => $v->getId(), 'name' => Neuron_Core_Tools::output_varchar($v->getNickname()), 'status' => $status, 'status_t' => $text->get($status, 'roles', 'clan'), 'online' => $v->isOnline() ? 'online' : 'offline'));
     }
     // Check if it's possible to join
     $page->set('canJoin', $canJoin);
     $page->set('canLeave', $canLeave);
     $page->set('canGovern', $clan->isLeader($myself));
     $desc = $clan->getDescription();
     if (!empty($desc)) {
         $page->set('description', Neuron_Core_Tools::output_text($desc));
     }
     return $page->parse('clan/overview.phpt');
 }
예제 #21
0
파일: Market.php 프로젝트: Toxicat/dolumar
 private function getDonateResources($target, $resources, $runes, $equipment)
 {
     $text = Neuron_Core_Text::__getInstance();
     $msgs = array();
     $premium = $this->isPremium($target);
     // Count transactions
     $t1 = $this->splitInTransactions($resources, self::RESOURCES_PER_TRANSPORTER);
     $t2 = $this->splitInTransactions($runes, self::RUNES_PER_TRANSPORTER);
     //$t3 = $this->splitInTransactions ($equipment, self::EQUIPMENT_PER_TRANSPORTER);
     $t3 = $equipment;
     $total_transactions = count($t1) + count($t2) + count($t3);
     $max_transactions = $this->countTransfersLeft($premium);
     if ($total_transactions > $max_transactions) {
         // No error, just show the confirm button again.
         return $this->getConfirmDonation($target, $resources, $runes, $equipment);
     }
     // Calculate the price
     $costs = $this->calculateCosts($target, $resources, $runes, $premium);
     $amount = 0;
     foreach ($resources as $v) {
         $amount += $v;
     }
     $duration = $this->getTransferDuration($target);
     /*
     	done_res = "You have sent resource to @@target."
     	done_runes = "You have sent runes to @@target."
     */
     // RESOURCES
     foreach ($t1 as $resources) {
         if ($this->getVillage()->resources->transferResources($target, $resources, $costs, $duration)) {
             $msgs[] = array(Neuron_Core_Tools::putIntoText($text->get('done_res', 'market', 'buildings'), array('target' => Neuron_Core_Tools::output_varchar($target->getName()), 'cost' => $this->resourceToText($costs))), true);
         } elseif ($amount > 0) {
             $msgs[] = array(Neuron_Core_Tools::putIntoText($text->get($this->getVillage()->resources->getError(), 'market', 'buildings'), array('target' => Neuron_Core_Tools::output_varchar($target->getName()), 'cost' => $this->resourceToText($costs))), false);
         }
         $costs = array();
     }
     // RUNES
     foreach ($t2 as $runes) {
         if ($this->getVillage()->resources->transferRunes($target, $runes, $duration)) {
             $msgs[] = array(Neuron_Core_Tools::putIntoText($text->get('done_runes', 'market', 'buildings'), array('target' => Neuron_Core_Tools::output_varchar($target->getName()), 'cost' => $this->resourceToText($costs))), true);
         } elseif (count($runes) > 0) {
             $msgs[] = array(Neuron_Core_Tools::putIntoText($text->get($this->getVillage()->resources->getError(), 'market', 'buildings'), array('target' => Neuron_Core_Tools::output_varchar($target->getName()), 'cost' => $this->resourceToText($costs))), false);
         }
     }
     // Time for the equipment stuff
     $equips = 0;
     foreach ($equipment as $v) {
         if ($this->getVillage()->equipment->transferEquipment($target, $v['equipment'], $v['amount'], $duration)) {
             $equips += $v['amount'];
         } else {
             $msgs[] = array(Neuron_Core_Tools::putIntoText($text->get($this->getVillage()->resources->getError(), 'market', 'buildings'), array('target' => Neuron_Core_Tools::output_varchar($target->getName()), 'cost' => $this->resourceToText($costs))), false);
         }
     }
     if ($equips > 0) {
         $msgs[] = array(Neuron_Core_Tools::putIntoText($text->get('done_equipment' . ($equips > 1 ? '2' : '1'), 'market', 'buildings'), array('target' => Neuron_Core_Tools::output_varchar($target->getName()), 'cost' => $this->resourceToText($costs), 'items' => $equips)), true);
     }
     reloadEverything();
     $this->aInput = array('action' => 'donate');
     return $this->getChooseTarget($msgs);
 }
예제 #22
0
파일: Magic.php 프로젝트: Toxicat/dolumar
 protected function getConfirmCast($objUnit, $objSpell, $objTarget, $inputData = null)
 {
     $text = Neuron_Core_Text::__getInstance();
     $page = new Neuron_Core_Template();
     $page->setTextSection('confirm', $this->sTextFile);
     if (isset($objTarget)) {
         $page->set('target', Neuron_Core_Tools::output_varchar($objTarget->getName()));
     }
     $page->set('spell', Neuron_Core_Tools::output_varchar($objSpell->getName()));
     $page->set('cost', Neuron_Core_Tools::resourceToText($objSpell->getCost($objUnit, $objTarget)));
     $page->set('about', Neuron_Core_Tools::output_varchar($objSpell->getDescription()));
     $page->set('duration', $objSpell->getType_text());
     $page->set('difficulty', $objSpell->getDifficulty());
     $page->set('probability', $this->getProbability($objUnit, $objSpell, $objTarget));
     $page->set('toCast', Neuron_Core_Tools::putIntoText($text->get('toCast', 'confirm', $this->sTextFile), array('spell' => Neuron_Core_Tools::output_varchar($objSpell->getName()))));
     // Set hidden values
     $page->set('inputData', $inputData);
     return $page->parse('magic/confirm.phpt');
 }
예제 #23
0
 public function getEmailCertification()
 {
     $me = Neuron_GameServer::getPlayer();
     $text = Neuron_Core_Text::__getInstance();
     $text->setFile('account');
     $text->setSection('choosemail');
     $page = new Neuron_Core_Template();
     $page->set('welcome', Neuron_Core_Tools::putIntoText($text->get('welcome'), array(Neuron_Core_Tools::output_varchar($me->getNickname()))));
     $page->set('return', $text->getClickTo($text->get('toReturn')));
     $input = $this->getInputData();
     // Set e-mail (certification required)
     if (isset($input['email'])) {
         if (!$me->setEmail($input['email'])) {
             $page->set('error', $text->get($me->getError()));
         }
     }
     if ($me->isEmailSet()) {
         if (isset($input['action']) && $input['action'] == 'resend') {
             $me->sendCertificationMail();
             return '<p>Your verification email is sent.</p>';
         }
         $page->set('section', 'notcertified');
         $page->set('email_title', $text->get('email_title'));
         $page->set('email_about', $text->get('certification'));
         $page->set('cert_again', $text->getClickTo($text->get('toCertAgain')));
         return $page->parse('gameserver/account/myAccount_email.tpl');
     } else {
         $page->set('section', 'choosemail');
         $page->set('email_title', $text->get('email_title'));
         $page->set('email', $text->get('email'));
         $page->set('submit', $text->get('submit'));
         $page->set('about', $text->get('about'));
         return $page->parse('gameserver/account/myAccount_email.tpl');
     }
 }
예제 #24
0
 private function getText($sKey, $sSection = null, $sFile = null, $sDefault = null)
 {
     if (!isset($this->objText)) {
         $this->objText = Neuron_Core_Text::__getInstance();
     }
     $txt = Neuron_Core_Tools::output_varchar($this->objText->get($sKey, isset($sSection) ? $sSection : $this->sTextSection, isset($sFile) ? $sFile : $this->sTextFile, false));
     if (!$txt) {
         return $sDefault;
     }
     return $txt;
 }
예제 #25
0
파일: Menu.php 프로젝트: Toxicat/dolumar
 public function getContent()
 {
     $login = Neuron_Core_Login::__getInstance();
     $text = Neuron_Core_Text::__getInstance();
     $text->setFile('main');
     $text->setSection('menu');
     $page = new Neuron_Core_Template();
     // Add text elements
     $page->set('myAccount', Neuron_Core_Tools::output_varchar($text->get('myAccount')));
     $page->set('build', Neuron_Core_Tools::output_varchar($text->get('build')));
     $page->set('bonusbuild', Neuron_Core_Tools::output_varchar($text->get('bonusbuild')));
     $page->set('economy', Neuron_Core_Tools::output_varchar($text->get('economy')));
     $page->set('preferences', Neuron_Core_Tools::output_varchar($text->get('preferences')));
     $page->set('help', Neuron_Core_Tools::output_varchar($text->get('help')));
     $page->set('language', Neuron_Core_Tools::output_varchar($text->get('language')));
     $page->set('ranking', Neuron_Core_Tools::output_varchar($text->get('ranking')));
     $page->set('units', Neuron_Core_Tools::output_varchar($text->get('units')));
     $page->set('chat', Neuron_Core_Tools::output_varchar($text->get('chat')));
     $page->set('battle', Neuron_Core_Tools::output_varchar($text->get('battle')));
     $page->set('battleCalc', Neuron_Core_Tools::output_varchar($text->get('battleCalc')));
     $page->set('forum', Neuron_Core_Tools::output_varchar($text->get('forum')));
     $page->set('ingameForum', Neuron_Core_Tools::output_varchar($text->get('ingameForum')));
     $page->set('contact', Neuron_Core_Tools::output_varchar($text->get('contact')));
     $page->set('equipment', Neuron_Core_Tools::output_varchar($text->get('equipment')));
     $page->set('magic', Neuron_Core_Tools::output_varchar($text->get('magic')));
     $page->set('invite', Neuron_Core_Tools::output_varchar($text->get('friendinvite')));
     if (!defined('HIDE_IMPRINT') || !HIDE_IMPRINT) {
         $page->set('imprint', Neuron_Core_Tools::output_varchar($text->get('imprint')));
     }
     $page->set('simulator', Neuron_Core_Tools::output_varchar($text->get('simulator')));
     $localized_forum = str_replace('{lang}', $text->getCurrentLanguage(), FORUM_URL);
     $page->set('forum_url', $localized_forum);
     $page->set('ignorelist', $text->get('ignorelist'));
     $page->set('flag', $text->getCurrentLanguage());
     $noVillage = true;
     if ($login->isLogin()) {
         $me = Neuron_GameServer::getPlayer();
         $page->set('messages', $text->get('messages'));
         $villages = $me->getVillages();
         if (count($villages) > 0) {
             $noVillage = false;
             if (count($villages) > 1 || $this->SHOW_ONLY_VILLAGE && count($villages) > 0) {
                 foreach ($villages as $v) {
                     // Add the links
                     $page->addListValue('villages', array(Neuron_Core_Tools::output_varchar($v->getName()), $v->getId()));
                 }
                 $page->sortList('villages');
             }
             // Set the current village ID.
             $page->set('vid', $me->getCurrentVillage()->getId());
         }
         // Administration links
         if ($me->isModerator()) {
             $page->set('adminForum', 'Admin Forum');
         }
         // Clans
         foreach ($me->getClans() as $v) {
             $page->addListValue('clans', array('id' => $v->getId(), 'name' => Neuron_Core_Tools::output_varchar($v->getName())));
         }
         $page->set('donation', $text->get('donation'));
     }
     if ($noVillage) {
         $page->set('vid', 0);
     }
     // Premium
     /*
     $player = Neuron_GameServer::getPlayer ();
     
     if ($player)
     {
     	$credits = $player->getCredits ();
     	$page->set ('premium', $credits);
     }
     */
     return $page->parse('menu.tpl');
 }
예제 #26
0
파일: Battle.php 프로젝트: Toxicat/dolumar
 private function getChooseSpecialUnits($target, $squads, $error = null)
 {
     $page = new Neuron_Core_Template();
     $page->setTextSection('specialUnits', 'battle');
     $page->set('error', $error);
     $page->set('target', Neuron_Core_Tools::output_varchar($target->getName()));
     $page->set('targetId', $target->getId());
     $distance = Dolumar_Map_Map::getDistanceBetweenVillages($this->village, $target, false);
     $page->set('distance', Neuron_Core_Tools::output_distance($distance));
     foreach ($this->village->getAttackSlots($target) as $k => $v) {
         if (isset($squads[$k])) {
             $unitId = $squads[$k]->getSquad()->getId() . '_' . $squads[$k]->getUnitId();
             $page->addListValue('slots', array('id' => $k, 'unit' => $unitId));
         }
     }
     $duration = $this->village->battle->getMoveDuration($squads, $distance);
     if ($duration > 60 * 60 * 24) {
         $page->set('duration', $duration);
     }
     $honour = Dolumar_Battle_Battle::getHonourPenalty($this->village, $target);
     if ($honour > 0) {
         //$bigger = round ( ($this->village->getScore () / $target->getScore ()) * 100) - 100;
         $bigger = round(Dolumar_Battle_Battle::getSizeDifference($this->village, $target) * 100 - 100);
         $page->set('honour', $honour);
         $page->set('size', $bigger);
     }
     // Fetch thze special units
     $units = $this->village->getSpecialUnits();
     foreach ($units as $v) {
         $actions = $v->getEffects();
         // Prepare the actions
         $aActions = array();
         foreach ($actions as $action) {
             if ($action instanceof Dolumar_Effects_Battle) {
                 $aActions[] = array('name' => $action->getName(), 'id' => $action->getId(), 'cost' => Neuron_Core_Tools::resourceToText($action->getCost($v, $target), false, false, false, 'rune', false));
             }
         }
         if (count($aActions) > 0) {
             asort($aActions);
             // Add the special unit to the list
             $page->addListValue('specialunits', array('id' => $v->getId(), 'name' => Neuron_Core_Tools::output_varchar($v->getName(false, true)), 'actions' => $aActions));
         }
     }
     return $page->parse('battle/specialUnits.phpt');
 }
 public function getHTML($error = null)
 {
     $page = new Neuron_Core_Template();
     $page->setTextSection('chooseTarget', 'main');
     $page->set('canTargetSelf', $this->bTargetSelf);
     $page->set('vid', $this->objVillage->getId());
     // Return action
     if (isset($this->sReturnAction)) {
         $page->set('returnUrl', $this->sReturnAction);
         $page->set('returnText', $this->sReturnText);
     }
     $sQuery = null;
     if (isset($this->aInput['sVillageName'])) {
         $sQuery = $this->aInput['sVillageName'];
         unset($this->aInput['sVillageName']);
     }
     $page->set('input', $this->aInput);
     $page->set('query', Neuron_Core_Tools::output_varchar($sQuery));
     // Fetch all troops
     if (!empty($sQuery)) {
         $db = Neuron_Core_Database::__getInstance();
         $page->set('hasSearched', true);
         $l = $db->getDataFromQuery($db->customQuery("\n\t\t\t\t\tSELECT\n\t\t\t\t\t\t*\n\t\t\t\t\tFROM\n\t\t\t\t\t\tvillages\n\t\t\t\t\tWHERE\n\t\t\t\t\t\tvname LIKE '%" . $db->escape($sQuery) . "%'\n\t\t\t\t\t\tAND isActive = 1\n\t\t\t\t\tORDER BY\n\t\t\t\t\t\tFIELD(vname, '" . $db->escape($sQuery) . "', vname),\n\t\t\t\t\t\tvname ASC\n\t\t\t\t\tLIMIT 10\n\t\t\t\t"));
         if (count($l) > 0) {
             foreach ($l as $v) {
                 $village = Dolumar_Players_Village::getVillage($v['vid'], false);
                 $village->setData($v);
                 $tc = $village->buildings->getTownCenter();
                 if ($tc) {
                     $loc = $tc->getLocation();
                     $page->addListValue('results', array('id' => $village->getId(), 'name' => Neuron_Core_Tools::output_varchar($village->getName()), 'location' => $loc[0] . ',' . $loc[1]));
                 }
             }
         }
     } elseif ($this->bShowTargets) {
         $db = Neuron_DB_Database::__getInstance();
         // Popular targets
         /*
         $l = $db->getDataFromQuery
         (
         	$db->customQuery
         	("
         		SELECT
         			l_vid,
         			villages.*
         		FROM
         			game_log
         		LEFT JOIN
         			villages ON game_log.l_vid = villages.vid
         		WHERE
         			(l_action = 'attack' OR l_action = 'defend') 
         			AND l_vid != ".$this->objVillage->getId ()."
         			AND l_subId = ".$this->objVillage->getId ()."
         			AND isActive = 1
         		GROUP BY
         			l_vid
         		ORDER BY
         			l_date ASC
         		LIMIT 10
         	")
         );
         */
         $l = $this->objVillage->visits->getLastVisits();
         if (count($l) > 0) {
             foreach ($l as $village) {
                 // Only add active villages
                 if ($village->isActive()) {
                     $tc = $village->buildings->getTownCenter();
                     if ($tc) {
                         $loc = $tc->getLocation();
                         $page->addListValue('results', array('id' => $village->getId(), 'name' => Neuron_Core_Tools::output_varchar($village->getName()), 'location' => $loc[0] . ',' . $loc[1]));
                     }
                 }
             }
         }
     }
     if (isset($error)) {
         $page->set('external_error', $error);
     }
     return $page->parse('neuron/structure/chooseTarget.phpt');
 }
예제 #28
0
파일: Server.php 프로젝트: Toxicat/dolumar
 /**
  * Determine if it's time to take a step forwards
  */
 public function updateStatus()
 {
     $state = $this->getData('gamestate');
     if (!$state) {
         $this->setData('gamestate', self::GAMESTATE_PLAYING);
         return;
     }
     switch ($state) {
         case self::GAMESTATE_PLAYING:
             // If the server has been running for xxx months, go to next step
             $duration = GAME_RUNNING_DURATION;
             $start = $this->getStartDate();
             $timepassed = time() - $start;
             if ($timepassed > $duration) {
                 // Initiate end game
                 $this->setData('gamestate', self::GAMESTATE_ENDGAME_STARTED);
                 // And notify all players
                 Neuron_GameServer_Player_Guide::addPublicMessage('end_scroll', array(), 'guide', 'scared');
             }
             break;
         case self::GAMESTATE_ENDGAME_FINISHED:
             $this->setData('end_date', time());
             $this->setData('gamestate', self::GAMESTATE_WAITINGFORRESET);
             $server = Neuron_GameServer::getServer();
             $out = array();
             $out['winner'] = '';
             $out['members'] = '';
             $out['ranking'] = '';
             $out['members'] = '';
             $out['villages'] = '';
             $out['clans'] = '';
             $out['players'] = '';
             $winner = $server->getData('winner');
             if ($winner) {
                 $clan = Dolumar_Players_Clan::getFromId($winner);
                 if ($clan) {
                     $out['winner'] = Neuron_Core_Tools::output_varchar($clan->getName());
                     foreach ($clan->getMembers() as $v) {
                         $out['members'] .= "- " . Neuron_Core_Tools::output_varchar($v->getName()) . "\n";
                     }
                 }
             }
             // Ranking
             $players = Dolumar_Players_Ranking::getPlayerRanking(0, 5);
             $i = 0;
             foreach ($players as $v) {
                 $i++;
                 $out['players'] .= $i . ". " . $v->getName() . ' (' . $v->getScore() . ')' . "\n";
             }
             $villages = Dolumar_Players_Ranking::getRanking(0, 5);
             $i = 0;
             foreach ($villages as $v) {
                 $i++;
                 $out['villages'] .= $i . ". " . $v->getName() . ' (' . $v->getNetworth() . ')' . "\n";
             }
             $ranking = Dolumar_Players_Ranking::getClanRanking(0, 5);
             $i = 0;
             foreach ($ranking as $v) {
                 $i++;
                 $out['clans'] .= $i . ". " . $v->getName() . ' (' . $v->getNetworth() . ')' . "\n";
             }
             $out['servername'] = $this->getServerName();
             $out['serverurl'] = ABSOLUTE_URL;
             // Send out the bloody newsletter
             if (!defined('IS_TESTSERVER') || !IS_TESTSERVER) {
                 $this->sendNewsletter('serverreset', $out);
             }
             break;
         case self::GAMESTATE_WAITINGFORRESET:
             if ($this->getData('end_date') <= NOW - 60 * 60 * 23) {
                 $this->reset();
             }
             break;
     }
 }
예제 #29
0
     break;
 case 'ranking':
     // Ranking is handling its own output.
     include 'ranking.php';
     exit;
     break;
 case 'rss':
     $text = Neuron_Core_Text::__getInstance();
     $output_type = 'xml';
     $xml_name = 'rss';
     $xml_version = '2.0';
     // Check for login
     if ($login->isLogin()) {
         $myself = Neuron_GameServer::getPlayer();
         $output['content']['channel'] = array();
         $output['content']['title'] = Neuron_Core_Tools::putIntoText($text->get('rss_title', 'main', 'main'), array('username' => Neuron_Core_Tools::output_varchar($myself->getName())));
         $output['content']['link'] = ABSOLUTE_URL;
         $output['content']['description'] = 'Player logs';
         $objLogs = Dolumar_Players_Logs::__getInstance();
         // Only village
         //$village = $myself->getMainVillage ();
         //if ($village) {
         foreach ($objLogs->getLogs($myself, 0, 50, 'DESC', false) as $v) {
             // <pubDate>Sun, 19 May 2002 15:21:36 GMT</pubDate>
             $output['content']['items'][] = array('title' => $objLogs->getLogText($v, false, false), 'link' => ABSOLUTE_URL, 'description' => null, 'pubDate' => gmdate('r', $v['unixtime']));
         }
         //}
     } else {
         header('WWW-Authenticate: Basic realm="Profile Logs"');
         header('HTTP/1.0 401 Unauthorized');
         echo 'Please login to access your profile logs.';
예제 #30
0
 private function getMoveVillage()
 {
     $page = new Neuron_Core_Template();
     $player = Neuron_GameServer::getPlayer();
     $input = $this->getInputData();
     $x = isset($input['x']) ? intval($input['x']) : null;
     $y = isset($input['y']) ? intval($input['y']) : null;
     if (isset($input['village'])) {
         $village = $player->getMyVillage($input['village']);
     }
     if (isset($input['village']) && isset($input['x']) && isset($input['y']) && !isset($input['do'])) {
         $offset = isset($input['offset']) ? $input['offset'] : 0;
         if ($village) {
             if ($this->canMoveVillage($village)) {
                 $location = $village->movevillage->getValidLocation($x, $y, $offset);
                 if ($location) {
                     list($nx, $ny, $new_offset) = $location;
                     // Jump to this location
                     $this->mapJump($nx, $ny);
                     $page->set('proposal', true);
                     $page->set('x', $nx);
                     $page->set('y', $ny);
                     $page->set('offset', $new_offset);
                     $data = array('action' => 'movevillage', 'village' => $village->getId(), 'x' => $nx, 'y' => $ny);
                     // Generate approve URL
                     $page->set('confirm_url', htmlentities($player->getCreditUseUrl(self::COST_MOVEVILLAGE, $data, 'Move village ' . $village->getName() . ' to ' . $nx . ',' . $ny)));
                     //return $page->parse ('dolumar/premium/movevillage_proposal.phpt');
                 } else {
                     $page->set('error', 'no_location_found');
                 }
             } else {
                 $page->set('error', 'village_timeout');
             }
         }
     }
     $page->set('desired_x', isset($x) ? $x : '');
     $page->set('desired_y', isset($y) ? $y : '');
     $page->set('village', isset($village) ? $village->getId() : $player->getCurrentVillage()->getId());
     $page->set('days', self::MIN_MOVEVILLAGE_INTERVAL_DAYS);
     $villages = $player->getVillages();
     foreach ($villages as $v) {
         $page->addListValue('villages', array('id' => $v->getId(), 'name' => Neuron_Core_Tools::output_varchar($v->getName())));
     }
     return $page->parse('dolumar/premium/movevillage.phpt');
 }