Esempio n. 1
0
function tribe_getContent($caveID, $tribeID)
{
    global $db, $template;
    if (!$tribeID) {
        $template->throwError('Der Stamm wurde nicht gefunden.');
        return;
    }
    // open template
    $template->setFile('tribeDetail.tmpl');
    $template->setShowResource(false);
    $tribe = Tribe::getByID($tribeID);
    if ($tribe == null) {
        $template->throwError('Der Stamm wurde nicht gefunden.');
        return;
    }
    // parse tribe message
    $parser = new parser();
    $tribe['description'] = $parser->p($tribe['description']);
    $ranking = Tribe::getRanking($tribeID);
    $tribe['rank'] = $ranking;
    // leader
    if ($tribe['leaderID'] != 0) {
        $leader = Player::getPlayer($tribe['leaderID']);
        $tribe['leader_name'] = $leader->name;
    }
    $template->addVar('tribe_details', $tribe);
    // history
    $template->addVar('tribe_history', Tribe::getHistory($tribeID));
    // player list
    $template->addVar('tribe_player_list', Tribe::getPlayerList($tribeID, true, true));
    // relations
    $relations = TribeRelation::getRelations($tribeID);
    $relationsData = array();
    if (isset($relations['own'])) {
        foreach ($relations['own'] as $target => $relationData) {
            $relationsData[$target] = array('tribe' => $relationData['targetTag'], 'tribeID_target' => $relationData['tribeID_target'], 'relation_to' => $GLOBALS['relationList'][$relationData['relationType']]['name'], 'relation_from' => isset($relations['other'][$target]) && $relations['other'][$target] ? $GLOBALS['relationList'][$relations['other'][$target]['relationType']]['name'] : $GLOBALS['relationList'][0]['name']);
        }
    }
    if (isset($relations['other'])) {
        foreach ($relations['other'] as $target => $relationData) {
            // already printed out this relation
            if (isset($relationsData[$target])) {
                continue;
            }
            $relationsData[$target] = array('tribe' => $relationData['targetTag'], 'tribeID_target' => $relationData['tribeID_target'], 'relation_to' => $GLOBALS['relationList'][0]['name'], 'relation_from' => $GLOBALS['relationList'][$relationData['relationType']]['name']);
        }
    }
    $template->addVar('relations_data', $relationsData);
}
Esempio n. 2
0
 public function __construct($options = array())
 {
     $enableSSH = false;
     if (count($options) > 0) {
         $this->installLocation = $options['installLocation'] . "/ShooterGame/Saved/SavedArks";
         if (isset($options['enableSSH'])) {
             $enableSSH = $options['enableSSH'];
         }
         if ($enableSSH === true) {
             if (!function_exists('ssh2_connect')) {
                 die('You must enable php_ssh2 for your PHP installation to use SSH!');
             }
         }
     }
     if (!isset($this->installLocation)) {
         die('Invalid Settings!');
     }
     $this->Players = array();
     $this->Tribes = array();
     $Rules = array();
     $this->SteamLoaded = false;
     $this->DataLoaded = false;
     if ($enableSSH === false) {
         $this->Timers['App'] = MicroTime(true);
         $this->playerFiles = glob("{$this->installLocation}/*.arkprofile");
         $this->tribeFiles = glob("{$this->installLocation}/*.arktribe");
         if (!$this->playerFiles && !$this->tribeFiles) {
             die('Invalid directory detected, no profiles or tribes found!');
         }
         foreach ($this->playerFiles as $key => $value) {
             $player = new Player();
             $parse = (object) $player->ParsePlayer($value);
             if (!$parse->Id) {
                 continue;
             }
             $this->Players[(string) $parse->Id] = $parse;
         }
         foreach ($this->tribeFiles as $key => $value) {
             $tribe = new Tribe();
             $parse = $tribe->ParseTribe($value);
             if (!$parse->Id) {
                 continue;
             }
             $this->Tribes[$parse->Id] = $parse;
         }
     } else {
         if ($this->setupSSH($options['SSHSettings']['host'], @$options['SSHSettings']['port'], $options['SSHSettings']['known_host'], $options['SSHSettings']['pub_key_location'], $options['SSHSettings']['priv_key_location'], $options['SSHSettings']['key_user'], $options['SSHSettings']['cache_dir'])) {
             $this->Timers['App'] = MicroTime(true);
             $this->playerFiles = glob($options['SSHSettings']['cache_dir'] . '/*.arkprofile');
             $this->tribeFiles = glob($options['SSHSettings']['cache_dir'] . '/*.arktribe');
             if (!$this->playerFiles && !$this->tribeFiles) {
                 die('Invalid directory detected, no profiles or tribes found!');
             }
             foreach ($this->playerFiles as $key => $value) {
                 $player = new Player();
                 $parse = (object) $player->ParsePlayer($value);
                 if (!$parse->Id) {
                     continue;
                 }
                 $this->Players[(string) $parse->Id] = $parse;
             }
             foreach ($this->tribeFiles as $key => $value) {
                 $tribe = new Tribe();
                 $parse = $tribe->ParseTribe($value);
                 if (!$parse->Id) {
                     continue;
                 }
                 $this->Tribes[$parse->Id] = $parse;
             }
         } else {
             die('SSH Failed To Process, please check your logs for any exceptions!');
         }
     }
     // $this->Timer = MicroTime(true);
     $this->LinkPlayerTribe();
     // $this->Timer = MicroTime(true) - $this->Timer;
     // $tribe = new Tribe();
     // $tribe->ParseTribe($installLocation."/1596232110.arktribe");
     $this->Timers['App'] = Number_Format(MicroTime(true) - $this->Timers['App'], 4, '.', '');
 }
Esempio n. 3
0
echo "The following tribes have been set invalid:\n";
for ($i = 0; $i < sizeof($invalidated_tribes); ++$i) {
    echo $tribes[$invalidated_tribes[$i]]['tag'] . "  \n";
}
echo "The following tribes have been set valid:\n";
for ($i = 0; $i < sizeof($validated_tribes); ++$i) {
    echo $tribes[$validated_tribes[$i]]['tag'] . "  \n";
}
echo "The following tribes have been deleted:\n";
for ($i = 0; $i < sizeof($deleted_tribes); ++$i) {
    echo $deleted_tribes[$i] . "  \n";
}
// ----------------------------------------------------------------------------
// Step 2: Recalculate the leaders
echo "-- Checking Tribe Leaders --\n";
$tribes = Tribe::getAllTribes();
if ($tribes < 0) {
    echo "Error retrieving all tribes.\n";
    return -1;
}
foreach ($tribes as $tribeID => $data) {
    if (($r = TribeLeader::recalcLeader($tribeID, $data['leaderID'])) < 0) {
        echo "Error recalcing leader for Tribe {$data['tag']}\n";
        return -1;
    }
    if ($r > 0) {
        echo "Tribe {$data['tag']} has a new leader: {$r}\n";
    }
}
// ----------------------------------------------------------------------------
// Step 3 Check Relations
Esempio n. 4
0
 public static function processWonder($wonderID, $casterTribeData, $targetTribeName)
 {
     global $db;
     if ($wonderID < 0 || empty($casterTribeData) || empty($targetTribeName)) {
         return -30;
     }
     // check if wonder exists and is TribeWonder
     if (isset($GLOBALS['wonderTypeList'][$wonderID]) || !$wonder->isTribeWonder) {
         $wonder = $GLOBALS['wonderTypeList'][$wonderID];
     } else {
         return -33;
     }
     // check if tribes exist
     $targetTribeData = Tribe::getID($targetTribeName, true);
     if (empty($targetTribeData)) {
         return -15;
     }
     $casterTribeID = $casterTribeData['tribeID'];
     $targetTribeID = $targetTribeData['tribeID'];
     // check if tribe is valid
     if (!$targetTribeData['valid']) {
         return -34;
     }
     // check if caster tribe ist valid
     if (!$casterTribeData['valid']) {
         return -35;
     }
     $casterTribeRelations = TribeRelation::getRelations($casterTribeID);
     $targetTribeRelations = TribeRelation::getRelations($targetTribeID);
     $wonderPossible = false;
     foreach ($wonder->targetsPossible as $targetsPossible) {
         // check target
         if ($targetsPossible['target'] == 'own' && $casterTribeID !== $targetTribeID) {
             continue;
         }
         if ($targetsPossible['target'] == 'other' && $casterTribeID === $targetTribeID) {
             continue;
         }
         // check relation
         $check = self::checkRelations($targetsPossible['relation'], $targetTribeID, $casterTribeID, $casterTribeRelations, $targetTribeRelations);
         if ($check == true) {
             $wonderPossible = true;
             break;
         }
     }
     if ($wonderPossible == false) {
         return -37;
     }
     // take wonder Costs from TribeStorage
     $memberNumber = Tribe::getMemberCount($casterTribeID);
     if (!processProductionCost($wonder, 0, NULL, $memberNumber, true)) {
         return -33;
     }
     // does the wonder fail?
     if ((double) rand() / (double) getRandMax() > $wonder->chance) {
         return 11;
         // wonder did fail
     }
     // schedule the wonder's impacts
     // create a random factor between -0.3 and +0.3
     $delayRandFactor = rand(0, getrandmax()) / getrandmax() * 0.6 - 0.3;
     // now calculate the delayDelta depending on the first impact's delay
     $delayDelta = $wonder->impactList[0]['delay'] * $delayRandFactor;
     // get targets
     $targets = Tribe::getPlayerList($targetTribeID, false, true);
     if (sizeof($targets) == 0) {
         return -33;
     }
     $now = time();
     // loop over targets
     foreach ($targets as $playerID => $playerData) {
         foreach ($playerData['caves'] as $caveID => $caveData) {
             // loop over impacts
             foreach ($wonder->impactList as $impactID => $impact) {
                 $delay = (int) (($delayDelta + $impact['delay']) * WONDER_TIME_BASE_FACTOR);
                 $sql = $db->prepare("INSERT INTO " . EVENT_WONDER_TABLE . "\n                                (casterID, sourceID, targetID, wonderID, impactID, start, end)\n                               VALUES\n                                 (:playerID, :caveID, :targetID, :wonderID, :impactID, :start, :end)");
                 $sql->bindValue('playerID', 0, PDO::PARAM_INT);
                 // playerID 0, for not receiving lots of wonder-end-messages
                 $sql->bindValue('caveID', $casterTribeID, PDO::PARAM_INT);
                 $sql->bindValue('targetID', $caveID, PDO::PARAM_INT);
                 $sql->bindValue('wonderID', $wonderID, PDO::PARAM_INT);
                 $sql->bindValue('impactID', $impactID, PDO::PARAM_INT);
                 $sql->bindValue('start', time_toDatetime($now), PDO::PARAM_STR);
                 $sql->bindValue('end', time_toDatetime($now + $delay), PDO::PARAM_STR);
                 $sql->execute();
             }
             // end foreach impactList
         }
     }
     // end foreach target
     // send caster messages
     $messageClass = new Messages();
     $messageClass->sendSystemMessage($_SESSION['player']->playerID, 9, sprintf(_("Stammeswunder erwirkt auf %s"), $targetTribeData['tag']), sprintf(_("Sie haben auf den Stamm %s ein Stammeswunder %s erwirkt."), $targetTribeData['tag'], $wonder->name));
     // send target messages
     $targetPlayersArray = array();
     foreach ($targets as $target) {
         if (!isset($targetPlayersArray[$target['playerID']])) {
             $targetPlayersArray[$target['playerID']] = $target;
         }
     }
     foreach ($targetPlayersArray as $target) {
         $messageClass->sendSystemMessage($target['playerID'], 9, 'Stammeswunder!', sprintf(_("Der Stamm %s hat ein Stammeswunder auf deine Höhlen gewirkt."), $casterTribeData['tag']));
     }
     return 12;
 }
Esempio n. 5
0
function getCaveReport($caveID, $ownCaves, $targetCaveID, $method)
{
    global $template;
    if (!$targetCaveID) {
        $template->throwError('Es wurde keine Höhle ausgewählt.');
        return;
    }
    if ($method == 'ajax') {
        $shortVersion = true;
        $template->setFile('mapDetailAjax.tmpl');
    } else {
        $shortVersion = false;
        $template->setFile('mapDetail.tmpl');
    }
    $cave = getCaveByID($targetCaveID);
    $caveDetails = array();
    $playerDetails = null;
    $showArtePossible = false;
    if ($cave['playerID'] != 0) {
        $caveDetails = getCaves($cave['playerID']);
        $playerDetails = Player::getPlayer($cave['playerID']);
        $showArtePossible = $playerDetails->tribe != GOD_ALLY ? true : false;
    }
    $cave['terrain_name'] = $GLOBALS['terrainList'][$cave['terrain']]['name'];
    $cave['terrain_img'] = $GLOBALS['terrainList'][$cave['terrain']]['img'];
    if ($GLOBALS['terrainList'][$cave['terrain']]['tribeRegion']) {
        $cave['terrain_description'] = $GLOBALS['terrainList'][$cave['terrain']]['description'];
        $cave['terrain_tribe_cave'] = $GLOBALS['terrainList'][$cave['terrain']]['tribeRegion'];
        $attackerTribe = Tribe::getByID($cave['lastAttackingTribeID']);
        $cave['tribe_cave_tag'] = $attackerTribe['tag'];
    }
    $region = getRegionByID($cave['regionID']);
    // Wenn die Höhle ein Artefakt enthält und man berechtigt ist -> anzeigen
    if ($cave['hasArtefact'] && ($showArtePossible || $_SESSION['player']->tribe == GOD_ALLY)) {
        $cave['hasArtefact'] = true;
    } else {
        $cave['hasArtefact'] = false;
    }
    if ($cave['hasPet'] && ($showArtePossible || $_SESSION['player']->tribe == GOD_ALLY)) {
        $cave['hasPet'] = true;
    } else {
        $cave['hasArtefact'] = false;
    }
    $template->addVar('cave_details', $cave);
    if ($cave['playerID'] != 0) {
        $template->addVar('player_details', $playerDetails);
        /****************************************************************************************************
        *
        * Alle Höhlen des Spielers ausgeben
        *
        ****************************************************************************************************/
        $caves = array();
        foreach ($caveDetails as $key => $value) {
            $temp = array('caveName' => $value['name'], 'xCoord' => $value['xCoord'], 'yCoord' => $value['yCoord'], 'terrain' => $GLOBALS['terrainList'][$value['terrain']]['name'], 'caveSize' => floor($value[CAVE_SIZE_DB_FIELD] / 50) + 1, 'secureCave' => $value['secureCave']);
            if ($value['hasArtefact'] && ($playerDetails->tribe != GOD_ALLY || $_SESSION['player']->tribe == GOD_ALLY)) {
                $temp['artefact'] = true;
            }
            if ($value['hasPet'] && ($playerDetails->tribe != GOD_ALLY || $_SESSION['player']->tribe == GOD_ALLY)) {
                $temp['pet'] = true;
            }
            $caves[] = $temp;
        }
        $template->addVar('player_caves', $caves);
    } else {
        if (sizeof($ownCaves) < $_SESSION['player']->takeover_max_caves) {
            if ($cave['starting_position'] == 0 && $cave['takeoverable'] == 0 && $cave['takeover_level'] > 0) {
                $template->addVar('maybe_takeoverable', true);
            } else {
                if ($cave['takeoverable'] == 1) {
                    $template->addVar('takeoverable', true);
                }
            }
        }
    }
}
Esempio n. 6
0
init_buildings();
init_defenseSystems();
init_resources();
init_sciences();
init_units();
///////////////////////////// constant values //////////////////////////////
// playerID => ranking_points
$constant_values = array();
echo "-----------------------------------------------------------------------\n";
echo "- RANKING LOG FILE ----------------------------------------------------\n";
echo "  vom " . date("r") . "\n";
$godTribeID = Tribe::getID(GOD_ALLY);
if ($godTribeID == 0) {
    $godTribeID = -1;
}
$questTribeID = Tribe::getID(QUEST_ALLY);
if ($questTribeID == 0) {
    $questTribeID = -1;
}
// Ranking nach 2-Schritte-Prozess:
// 1. Teilbereiche ranken
// 2. Durchschnitt bilden +++NEU+++ Der Durchschnitt wird nun fuer drei Tage
//    aufbewahrt und daraus ein 3-Tage-Mittel bestimmt
// Die Teilbereiche fuer Schritt 1 lauten:
//  a.) Summe der Groessen der milit. Einheiten + Verteidigungsanlagen
//  ausgeschieden b.) Summe der Hoehlen
//  c.) Summe aller vorhandenen Rohstoffe
//  d.) Summe aller Gebaeude in allen Hoehlen
//  e.) Summe aller Entdeckungen
//  f.) Summe aller Artefakte
// ----------------------------------------------------------------------------
Esempio n. 7
0
function tribe_getContentNoTribe($caveID, &$details)
{
    global $template;
    $messageText = array(-10 => array('type' => 'error', 'message' => _('Die Stammeszugehörigkeit hat sich erst vor kurzem geändert. Warten Sie, bis die Stammeszugehörigkeit geändert werden darf.')), -9 => array('type' => 'error', 'message' => _('Du kannst keinen Stamm gründen während du in einem Stamm bist.')), -8 => array('type' => 'error', 'message' => _('Nicht zulässiges Stammeskürzel oder Passwort.')), -7 => array('type' => 'error', 'message' => _('Der Stamm hat schon die maximale Anzahl an Mitgliedern.')), -6 => array('type' => 'error', 'message' => _('Der Stamm befindet sich gerade im Krieg und darf daher im Moment keine neuen Mitglieder aufnehmen.')), -5 => array('type' => 'error', 'message' => _('Der Stamm konnte nicht angelegt werden.')), -4 => array('type' => 'error', 'message' => _('Es gibt schon einen Stamm mit diesem Kürzel.')), -3 => array('type' => 'error', 'message' => _('Du konntest dem Stamm nicht beitreten. Vermutlich bist du schon bei einem anderen Stamm Mitglied.')), -2 => array('type' => 'error', 'message' => _('Dieser Stammesname ist nicht erlaubt!')), -1 => array('type' => 'error', 'message' => _('Stammeskürzel und Passwort stimmen nicht überein.')), 1 => array('type' => 'success', 'message' => _('Du bist dem Stamm beigetreten.')), 2 => array('type' => 'success', 'message' => _('Der Stamm wurde erfolgreich angelegt.')), 3 => array('type' => 'success', 'message' => _('Der Stamm wurde erfolgreich angelegt. Jedoch konnte das alte Ranking nicht übernommen werden.')));
    if (!empty($_SESSION['player']->tribeID)) {
        tribe_getContent($caveID, $details);
        return;
    }
    // open template
    $template->setFile('tribe.tmpl');
    $template->setShowResource(false);
    // process form data
    $tribeAction = Request::getVar('action', 0);
    switch ($tribeAction) {
        case TRIBE_ACTION_JOIN:
            $tag = Request::getVar('inputTag', '');
            $password = Request::getVar('inputPassword', '');
            if (Tribe::validatePassword($password) && Tribe::validateTag($tag)) {
                $messageID = Tribe::processJoin($_SESSION['player'], $tag, $password);
                if ($messageID == 1) {
                    $auth = new auth();
                    $auth->setPermission('tribe', 0, $_SESSION['player']->playerID);
                    page_refreshUserData();
                    $template->addVar('status_msg', $messageText[$messageID]);
                    tribe_getContent($caveID, $details);
                    return;
                }
            } else {
                $messageID = -8;
            }
            break;
        case TRIBE_ACTION_CREATE:
            $tag = Request::getVar('inputTag', '');
            $password = Request::getVar('inputPassword', '');
            $restoreRang = Request::getVar('inputRestoreRank', 'no') == 'yes' ? true : false;
            if (Tribe::validatePassword($password) && Tribe::validateTag($tag)) {
                $messageID = Tribe::processCreate($_SESSION['player'], $tag, $password, $restoreRang);
            } else {
                $messageID = -8;
            }
            if ($messageID == 2) {
                $auth = new auth();
                $auth->setPermission('tribe', 0, $_SESSION['player']->playerID);
                page_refreshUserData();
                $template->addVar('status_msg', $messageText[$messageID]);
                tribe_getContent($caveID, $details);
                return;
            }
            break;
    }
    /****************************************************************************************************
     *
     * Übergabe ans Template
     *
     ****************************************************************************************************/
    $template->addVars(array('status_msg' => isset($messageID) ? $messageText[$messageID] : '', 'tribe_action_create' => TRIBE_ACTION_CREATE, 'tribe_action_join' => TRIBE_ACTION_JOIN));
}
Esempio n. 8
0
$sqlSelect->closeCursor();
echo "DELETE PLAYER {$playerID}: Delete Login ";
$sqlDelete = $db_login->prepare("DELETE FROM Login WHERE loginID = :playerID");
$sqlDelete->bindValue('playerID', $playerID, PDO::PARAM_INT);
if (!$sqlDelete->execute()) {
    echo "FAILURE\n";
    exit(1);
}
echo "SUCCESS\n";
if (!($db_game = DbConnect())) {
    echo "DELETE PLAYER {$playerID}: Failed to connect to game db.\n";
    exit(1);
}
$db = $db_game;
echo "DELETE PLAYER {$playerID}: Leave Player ";
if (!Tribe::leaveTribe($playerID)) {
    echo "FAILURE\n";
} else {
    echo "SUCCESS\n";
}
echo "DELETE PLAYER {$playerID}: Delete Player ";
$sql = $db_game->prepare("DELETE FROM " . PLAYER_TABLE . " WHERE playerID = :playerID");
$sql->bindValue('playerID', $playerID, PDO::PARAM_INT);
if (!$sql->execute()) {
    echo "FAILURE\n";
} else {
    echo "SUCCESS\n";
}
echo "DELETE PLAYER {$playerID}: Delete Cave_takeover";
$sql = $db_game->prepare("DELETE FROM " . CAVE_TAKEOVER_TABLE . " WHERE playerID = :playerID");
$sql->bindValue('playerID', $playerID, PDO::PARAM_INT);