Exemplo n.º 1
0
function questionnaire_getPresent($caveID, &$meineHoehlen, $presentID)
{
    global $config, $db, $params, $defenseSystemTypeList, $resourceTypeList, $unitTypeList;
    $query = "SELECT * FROM `Questionnaire_presents` WHERE presentID = " . intval($presentID);
    if (!($result = $db->query($query))) {
        return "Datenbankfehler: " . mysql_error();
    }
    $row = $result->nextRow(MYSQL_ASSOC);
    if (!questionnaire_timeIsRight($row)) {
        return ""Dieses Geschenk kann ich euch nicht anbieten, Häuptling!"";
    }
    // genügend Schnecken?
    $myaccount = questionnaire_getCredits($params->SESSION->user['questionCredits']);
    $price = questionnaire_getCredits($row['credits']);
    /*
      if ($myaccount['credits']          < $price['credits'] ||
          $myaccount['COPPER']['copper'] < $price['COPPER']['copper'] ||
          $myaccount['SILVER']['silver'] < $price['SILVER']['silver'] ||
          $myaccount['GOLD']['gold']     < $price['GOLD']['gold'])
        return "&quot;Ihr habt nicht die passenden Schnecken, H&auml;uptling!&quot;";
    */
    if ($myaccount['credits'] < $price['credits']) {
        return "&quot;Ihr habt nicht die passenden Schnecken, H&auml;uptling!&quot;";
    }
    // Preis abziehen
    if (!questionnaire_addCredits(-$row['credits'])) {
        return "&quot;Ich bin mit dem Schnecken abz&auml;hlen durcheinander " . "gekommen, H&auml;uptling! Versucht es noch einmal!&quot;";
    }
    // Geschenk überreichen
    $presents = array();
    $caveData = $meineHoehlen[$caveID];
    foreach ($defenseSystemTypeList as $external) {
        if ($row[$external->dbFieldName] > 0) {
            $dbField = $external->dbFieldName;
            $maxLevel = round(eval('return ' . formula_parseToPHP("{$external->maxLevel};", '$caveData')));
            $presents[] = "{$dbField} = LEAST(GREATEST({$maxLevel}, {$dbField}), {$dbField} + " . $row[$external->dbFieldName] . ")";
        }
    }
    foreach ($resourceTypeList as $resource) {
        if ($row[$resource->dbFieldName] > 0) {
            $dbField = $resource->dbFieldName;
            $maxLevel = round(eval('return ' . formula_parseToPHP("{$resource->maxLevel};", '$caveData')));
            $presents[] = "{$dbField} = LEAST({$maxLevel}, {$dbField} + " . $row[$resource->dbFieldName] . ")";
        }
    }
    foreach ($unitTypeList as $unit) {
        if ($row[$unit->dbFieldName] > 0) {
            $dbField = $unit->dbFieldName;
            $presents[] = "{$dbField} = {$dbField} + " . $row[$unit->dbFieldName];
        }
    }
    if (sizeof($presents)) {
        // UPDATE Cave
        $query = "UPDATE Cave SET " . implode(", ", $presents) . " WHERE caveID = {$caveID} AND playerID = " . $params->SESSION->user['playerID'];
        $update_result = $db->query($query);
        if (!$update_result) {
            return "Datenbankfehler: " . mysql_error();
        }
        // UPDATE Questionnaire_presents
        $query = "UPDATE Questionnaire_presents SET use_count = use_count + 1 " . "WHERE presentID = " . $presentID;
        $update_result = $db->query($query);
        if (!$update_result) {
            return "Datenbankfehler: " . mysql_error();
        }
        if ($db->affected_rows() != 1) {
            return "Probleme beim UPDATE des Geschenks";
        }
        // Höhle auffrischen
        $r = getCaveSecure($caveID, $params->SESSION->user['playerID']);
        if ($r->isEmpty()) {
            page_dberror();
        }
        $meineHoehlen[$caveID] = $r->nextRow();
        return "Eure Geschenke sind nun in eurer Siedlung!";
    }
    return "Danke f&uuml;r die Schnecken!";
}
Exemplo n.º 2
0
function questionnaire_getPresent($caveID, &$ownCaves, $presentID)
{
    global $db;
    if (empty($presentID)) {
        return -1;
    }
    $sql = $db->prepare("SELECT * FROM " . QUESTIONNAIRE_PRESENTS_TABLE . " WHERE presentID = :presentID");
    $sql->bindValue('presentID', $presentID, PDO::PARAM_INT);
    if (!$sql->execute()) {
        return -2;
    }
    $row = $sql->fetch(PDO::FETCH_ASSOC);
    $sql->closeCursor();
    if (!questionnaire_timeIsRight($row)) {
        return -3;
    }
    // genügend Schnecken?
    $myaccount = questionnaire_getCredits($_SESSION['player']->questionCredits);
    $price = questionnaire_getCredits($row['credits']);
    if ($myaccount['credits'] < $price['credits']) {
        return -4;
    }
    // Preis abziehen
    if (!questionnaire_addCredits(-$row['credits'])) {
        return -5;
    }
    // Geschenk überreichen
    $presents = array();
    $caveData = $ownCaves[$caveID];
    foreach ($GLOBALS['defenseSystemTypeList'] as $external) {
        if ($row[$external->dbFieldName] > 0) {
            $dbField = $external->dbFieldName;
            $maxLevel = round(eval('return ' . formula_parseToPHP("{$external->maxLevel};", '$caveData')));
            $presents[] = "{$dbField} = LEAST(GREATEST({$maxLevel}, {$dbField}), {$dbField} + " . $row[$external->dbFieldName] . ")";
        }
    }
    foreach ($GLOBALS['resourceTypeList'] as $resource) {
        if ($row[$resource->dbFieldName] > 0) {
            $dbField = $resource->dbFieldName;
            $maxLevel = round(eval('return ' . formula_parseToPHP("{$resource->maxLevel};", '$caveData')));
            $presents[] = "{$dbField} = LEAST({$maxLevel}, {$dbField} + " . $row[$resource->dbFieldName] . ")";
        }
    }
    foreach ($GLOBALS['unitTypeList'] as $unit) {
        if ($row[$unit->dbFieldName] > 0) {
            $dbField = $unit->dbFieldName;
            $presents[] = "{$dbField} = {$dbField} + " . $row[$unit->dbFieldName];
        }
    }
    if (sizeof($presents)) {
        // UPDATE Cave
        $sql = $db->prepare("UPDATE " . CAVE_TABLE . "\n                         SET " . implode(", ", $presents) . "\n                         WHERE caveID = :caveID\n                           AND playerID = :playerID");
        $sql->bindValue('caveID', $caveID, PDO::PARAM_INT);
        $sql->bindValue('playerID', $_SESSION['player']->playerID, PDO::PARAM_INT);
        if (!$sql->execute()) {
            return -2;
        }
        // UPDATE Questionnaire_presents
        $sql = $db->prepare("UPDATE " . QUESTIONNAIRE_PRESENTS_TABLE . "\n                         SET use_count = use_count + 1\n                         WHERE presentID = :presentID");
        $sql->bindValue('presentID', $presentID, PDO::PARAM_INT);
        if (!$sql->execute() || $sql->rowCount() == 0) {
            return -2;
        }
        // Höhle auffrischen
        $ownCaves[$caveID] = getCaveSecure($caveID, $_SESSION['player']->playerID);
        return 1;
    }
    return 2;
}