Ejemplo n.º 1
0
function relation_processRelationUpdate($tag, $relationData, $db)
{
    global $relationList;
    if (strcasecmp($tag, $relationData[tag]) == 0) {
        return -7;
    }
    if (!($targetTribeInfo = tribe_getTribeByTag($relationData[tag], $db))) {
        return -6;
    }
    $relationType = $relationData[relationID];
    $relationInfo = $relationList[$relationType];
    if (!($relation = relation_getRelation($tag, $relationData[tag], $db))) {
        return -3;
    }
    $relationTypeActual = $relation[own][relationType];
    if ($relationTypeActual == $relationType) {
        // change to actual relation?
        return -13;
    }
    if (!$relation[own][changeable]) {
        return -4;
    }
    // check if switching to same relation as target or relation is possible
    if ($relation[other][relationType] != $relationType && !relation_isPossible($relationType, $relation[own][relationType])) {
        return -5;
    }
    // check minimum size of target tribe
    // BUT: relation of target tribe to us is always ok!
    if ($relationInfo[targetMinSize] > 0.0 && $relation[other][relationType] != relationType) {
        if (($from_points = tribe_getMight($tag, $db)) < 0) {
            $from_points = 0;
        }
        if (($target_points = tribe_getMight($relationData['tag'], $db)) < 0) {
            $target_points = 0;
        }
        if ($from_points * $relationInfo[targetMinSize] > $target_points) {
            return -12;
        }
    }
    // if switching to the same relation of other clan towards us,
    // use their treaty's end_time!
    if ($relationType == $relation[other][relationType] && $relationType != 0) {
        $end_time = $relation[other][duration];
    } else {
        $duration = $relationList[$relationTypeActual][transitions][$relationType][time];
    }
    if (!relation_setRelation($tag, $targetTribeInfo[tag], $relationType, $duration, $db, $end_time, $relation[own][tribe_rankingPoints], $relation[own][target_rankingPoints])) {
        return -3;
    }
    // insert history message
    if ($message = $relationList[$relationType][historyMessage]) {
        relation_insertIntoHistory($tag, relation_prepareHistoryMessage($tag, $targetTribeInfo[tag], $message), $db);
    }
    $relationName = $relationList[$relationType][name];
    tribe_sendTribeMessage($tag, TRIBE_MESSAGE_RELATION, "Haltung gegen&uuml;ber {$targetTribeInfo['tag']} " . "ge&auml;ndert", "Ihr Clananf&uuml;hrer hat die Haltung Ihres " . "Clans gegen&uuml;ber dem Clan " . "{$targetTribeInfo['tag']} auf {$relationName} " . "ge&auml;ndert.");
    tribe_sendTribeMessage($targetTribeInfo[tag], TRIBE_MESSAGE_RELATION, "Der Clan {$tag} &auml;ndert seine Haltung", "Der Clananf&uuml;hrer des Clans {$tag} " . "hat die Haltung seines " . "Clans ihnen gegen&uuml;ber " . "auf {$relationName} " . "ge&auml;ndert.");
    // switch other side if necessary (and not at this type already)
    if (!$end_time && ($oST = $relationInfo[otherSideTo]) >= 0) {
        if (!relation_setRelation($targetTribeInfo[tag], $tag, $oST, $duration, $db, 0, $relation[other][tribe_rankingPoints], $relation[other][target_rankingPoints])) {
            return -3;
        }
        // insert history
        if ($message = $relationList[$oST][historyMessage]) {
            relation_insertIntoHistory($targetTribeInfo[tag], relation_prepareHistoryMessage($tag, $targetTribeInfo[tag], $message), $db);
        }
        $relationName = $relationList[$oST][name];
        tribe_sendTribeMessage($targetTribeInfo[tag], TRIBE_MESSAGE_RELATION, "Haltung gegen&uuml;ber {$tag} " . "ge&auml;ndert", "Die Haltung Ihres " . "Clans gegen&uuml;ber dem Clan " . "{$tag}  wurde automatisch auf {$relationName} " . "ge&auml;ndert.");
        tribe_sendTribeMessage($tag, TRIBE_MESSAGE_RELATION, "Der Clan {$targetTribeInfo['tag']} &auml;ndert " . "seine " . "Haltung", "Der Clan {$targetTribeInfo['tag']} " . "hat die Haltung ihnen gegen&uuml;ber " . "automatisch auf {$relationName} " . "ge&auml;ndert.");
    }
    return 3;
}
Ejemplo n.º 2
0
function tribe_deleteTribe($tag, $db, $FORCE = 0)
{
    global $relationList;
    if (!$FORCE && !relation_leaveTribeAllowed($tag, $db)) {
        return 0;
    }
    if (!($tribe = tribe_getTribeByTag($tag, $db))) {
        return 0;
    }
    ////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////
    // get relations
    if (!($tribeRelations = relation_getRelationsForTribe($tag, $db))) {
        return 0;
    }
    // end others relations
    foreach ($tribeRelations['other'] as $otherTag => $relation) {
        $relationType = $relationList[$relation['relationType']];
        $oDST = $relationType['onDeletionSwitchTo'];
        if ($oDST >= 0) {
            // die raltion umschalten und zielrelation temporär eintragen; sie wird
            // am ende dieser funktion ohne weiteres umschalten geloescht. Das
            // temporaere umschalten ist aber noetig, um zum beispiel die
            // ruhmberechnung im siegfall oder aehnliche effekte, die an
            // relation_setRelation haengen abzuarbeiten.
            if (!relation_setRelation($otherTag, $tag, $oDST, 0, $db, 0, $relation['tribe_rankingPoints'], $relation['target_rankingPoints'])) {
                return 0;
            }
            // insert history
            if ($message = $relationList[$oDST]['historyMessage']) {
                relation_insertIntoHistory($otherTag, relation_prepareHistoryMessage($tag, $otherTag, $message), $db);
            }
            // insert tribe message
            $relationName = $relationList[$oDST]['name'];
            tribe_sendTribeMessage($otherTag, TRIBE_MESSAGE_RELATION, "Haltung gegen&uuml;ber {$tag} ge&auml;ndert", "Die Haltung Ihres Stammes gegen&uuml;ber dem Stamm {$tag}  wurde " . "automatisch auf {$relationName} ge&auml;ndert.");
        }
    }
    ////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////
    if ($tribe['leaderID'] && !tribe_unmakeLeader($tribe['leaderID'], $tag, $db)) {
        return 0;
    }
    if (($members = tribe_getAllMembers($tag, $db)) < 0) {
        return 0;
    }
    foreach ($members as $playerID => $playerData) {
        if (!tribe_leaveTribe($playerID, $tag, $db)) {
            return 0;
        }
        if (!tribe_setBlockingPeriodPlayerID($playerID, $db)) {
            return 0;
        }
        messages_sendSystemMessage($playerID, 8, "Aufl&ouml;sung des Stammes", "Ihr Stamm {$tag} wurde soeben aufgel&ouml;st. " . "Sollten Sie Probleme mit dem " . "Stammesmen&uuml; haben, loggen Sie sich " . "bitte neu ein.", $db);
        Player::addHistoryEntry($db, $playerID, sprintf(_('verläßt den Stamm \'%s\''), $tag));
    }
    $query = "DELETE FROM Tribe " . "WHERE tag LIKE '{$tag}'";
    if (!$db->query($query)) {
        return 0;
    }
    $query = "DELETE FROM Relation " . "WHERE tribe LIKE '{$tag}' " . "OR tribe_target LIKE '{$tag}'";
    if (!$db->query($query)) {
        return 0;
    }
    $query = "DELETE FROM TribeMessage " . "WHERE tag LIKE '{$tag}'";
    if (!$db->query($query)) {
        return 0;
    }
    $query = "DELETE FROM TribeHistory " . "WHERE tribe LIKE '{$tag}'";
    if (!$db->query($query)) {
        return 0;
    }
    $query = "DELETE FROM Election " . "WHERE tribe LIKE '{$tag}'";
    if (!$db->query($query)) {
        return 0;
    }
    $query = "SELECT rank " . "FROM RankingTribe " . "WHERE tribe LIKE '{$tag}'";
    if (!($result = $db->query($query))) {
        return 0;
    }
    if (!($row = $result->nextRow())) {
        return 0;
    }
    $rank = $row['rank'];
    $query = "DELETE FROM RankingTribe " . "WHERE tribe LIKE '{$tag}'";
    if (!$db->query($query)) {
        return 0;
    }
    $query = "UPDATE RankingTribe SET rank = rank - 1 " . "WHERE rank > '{$rank}'";
    if (!$db->query($query)) {
        return 0;
    }
    Player::addHistoryEntry($db, $tribe['leaderID'], sprintf(_('löst den Stamm \'%s\' auf'), $tag));
    return 1;
}
Ejemplo n.º 3
0
function tribe_deleteTribe($tag, $FORCE = 0)
{
    global $db;
    if (!$FORCE && !relation_leaveTribeAllowed($tag)) {
        return 0;
    }
    if (!($tribe = tribe_getTribeByTag($tag))) {
        return 0;
    }
    ////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////
    // get relations
    if (!($tribeRelations = relation_getRelationsForTribe($tag))) {
        return 0;
    }
    // end others relations
    foreach ($tribeRelations['other'] as $otherTag => $relation) {
        $relationType = $GLOBALS['relationList'][$relation['relationType']];
        $oDST = $relationType['onDeletionSwitchTo'];
        if ($oDST >= 0) {
            // die relation umschalten und zielrelation temporaer eintragen; sie wird
            // am ende dieser funktion ohne weiteres umschalten geloescht. Das
            // temporaere umschalten ist aber noetig, um zum beispiel die
            // ruhmberechnung im siegfall oder aehnliche effekte, die an
            // relation_setRelation haengen abzuarbeiten.
            if (!relation_setRelation($otherTag, $tag, $oDST, 0, 0, $relation['tribe_rankingPoints'], $relation['target_rankingPoints'])) {
                return 0;
            }
            // insert history
            if (isset($GLOBALS['relationList'][$oDST]['historyMessage'])) {
                relation_insertIntoHistory($otherTag, relation_prepareHistoryMessage($tag, $otherTag, $GLOBALS['relationList'][$oDST]['historyMessage']));
            }
            // insert tribe message
            $relationName = $GLOBALS['relationList'][$oDST]['name'];
            tribe_sendTribeMessage($otherTag, TRIBE_MESSAGE_RELATION, "Haltung gegenüber {$tag} geändert", "Die Haltung Ihres Stammes gegenüber dem Stamm {$tag}  wurde automatisch auf {$relationName} geändert.");
        }
    }
    ////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////
    if ($tribe['leaderID'] && !tribe_unmakeLeader($tribe['leaderID'], $tag)) {
        return 0;
    }
    if (($members = tribe_getAllMembers($tag)) < 0) {
        return 0;
    }
    foreach ($members as $playerID => $playerData) {
        if (!tribe_leaveTribe($playerID, $tag)) {
            return 0;
        }
        if (!tribe_setBlockingPeriodPlayerID($playerID)) {
            return 0;
        }
        $messagesClass = new Messages();
        $messagesClass->sendSystemMessage($playerID, 8, "Auflösung des Stammes", "Ihr Stamm {$tag} wurde soeben aufgelöst. " . "Sollten Sie Probleme mit dem " . "Stammesmenü haben, loggen Sie sich " . "bitte neu ein.");
        Player::addHistoryEntry($playerID, sprintf(_("verlässt den Stamm '%s'"), $tag));
    }
    $sql = $db->prepare("DELETE FROM " . TRIBE_TABLE . " WHERE tag LIKE :tag");
    $sql->bindValue('tag', $tag, PDO::PARAM_STR);
    if (!$sql->execute()) {
        return 0;
    }
    $sql = $db->prepare("DELETE FROM " . RELATION_TABLE . "\n                       WHERE tribe LIKE :tag\n                         OR tribe_target LIKE :tag");
    $sql->bindValue('tag', $tag, PDO::PARAM_STR);
    if (!$sql->execute()) {
        return 0;
    }
    $sql = $db->prepare("DELETE FROM " . TRIBE_MESSAGE_TABLE . " WHERE tag LIKE :tag");
    $sql->bindValue('tag', $tag, PDO::PARAM_STR);
    if (!$sql->execute()) {
        return 0;
    }
    $sql = $db->prepare("DELETE FROM " . TRIBE_HISTORY_TABLE . " WHERE tribe LIKE :tag");
    $sql->bindValue('tag', $tag, PDO::PARAM_STR);
    if (!$sql->execute()) {
        return 0;
    }
    $sql = $db->prepare("DELETE FROM " . ELECTION_TABLE . " WHERE tribe LIKE :tag");
    $sql->bindValue('tag', $tag, PDO::PARAM_STR);
    if (!$sql->execute()) {
        return 0;
    }
    $sql = $db->prepare("SELECT rank FROM " . RANKING_TRIBE_TABLE . " WHERE tribe LIKE :tag");
    $sql->bindValue('tag', $tag, PDO::PARAM_STR);
    if (!$sql->execute()) {
        return 0;
    }
    if (!($row = $sql->fetch())) {
        return 0;
    }
    $rank = $row['rank'];
    $sql = $db->prepare("DELETE FROM " . RANKING_TRIBE_TABLE . " WHERE tribe LIKE :tag");
    $sql->bindValue('tag', $tag, PDO::PARAM_STR);
    if (!$sql->execute()) {
        return 0;
    }
    $sql = $db->prepare("UPDATE " . RANKING_TRIBE_TABLE . " SET rank = rank - 1 " . "WHERE rank > :rank");
    $sql->bindValue('rank', $rank, PDO::PARAM_STR);
    if (!$sql->execute()) {
        return 0;
    }
    Player::addHistoryEntry($tribe['leaderID'], sprintf(_("löst den Stamm '%s' auf"), $tag));
    return 1;
}