コード例 #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!";
}
コード例 #2
0
ファイル: questionnaire.html.php プロジェクト: norter/Game
function questionnaire_giveAnswers($answers)
{
    global $db;
    // filter given answers
    foreach ($answers as $questionID => $choiceID) {
        if ($choiceID < 0) {
            unset($answers[$questionID]);
        }
    }
    // get valid answers
    $sql = $db->prepare("SELECT * \n                       FROM " . QUESTIONNAIRE_CHOISES_TABLE . "\n                       WHERE questionID IN (" . implode(", ", array_map(array($db, 'quote'), array_keys($answers))) . ")");
    if ($sql->rowCountSelect() == 0) {
        return -2;
    }
    if (!$sql->execute()) {
        return -3;
    }
    $choises = array();
    while ($row = $sql->fetch(PDO::FETCH_ASSOC)) {
        if (!isset($choises[$row['questionID']])) {
            $choises[$row['questionID']] = array();
        }
        $choises[$row['questionID']][$row['choiceID']] = $row;
    }
    $sql->closeCursor();
    // validate given answers
    foreach ($answers as $questionID => $choiceID) {
        if (!isset($choises[$questionID][$choiceID])) {
            unset($answers[$questionID]);
        }
    }
    // answers now contains valid answers
    // get questions
    $questions = array();
    $sql = $db->prepare("SELECT * \n                       FROM " . QUESTIONNAIRE_QUESTIONS_TABLE . "\n                       WHERE questionID IN (" . implode(",", array_keys($answers)) . ")");
    if ($sql->rowCountSelect() == 0) {
        return -2;
    }
    if (!$sql->execute()) {
        return -3;
    }
    while ($row = $sql->fetch(PDO::FETCH_ASSOC)) {
        $questions[$row['questionID']] = $row;
    }
    $sql->closeCursor();
    // insert into db and reward afterwards
    $rewards = 0;
    foreach ($answers as $questionID => $choiceID) {
        $sql = $db->prepare("INSERT INTO " . QUESTIONNAIRE_ANSWERS_TABLE . "\n                           (playerID, questionID, choiceID)\n                         VALUES\n                          (:playerID, :questionID, :choiceID)");
        $sql->bindValue('playerID', $_SESSION['player']->playerID, PDO::PARAM_INT);
        $sql->bindValue('questionID', $questionID, PDO::PARAM_INT);
        $sql->bindValue('choiceID', $choiceID, PDO::PARAM_INT);
        if (!$sql->execute()) {
            return -4;
        }
        if ($sql->rowCount() != 1) {
            continue;
        }
        $sql->closeCursor();
        //$rewards += $questions[$questionID]['credits'];
        $rewards += $choises[$questionID][$choiceID]['credits'];
    }
    // now update playerstats
    if (!questionnaire_addCredits($rewards)) {
        return -5;
    }
    return 1;
}