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 ""Ihr habt nicht die passenden Schnecken, Häuptling!""; */ if ($myaccount['credits'] < $price['credits']) { return ""Ihr habt nicht die passenden Schnecken, Häuptling!""; } // Preis abziehen if (!questionnaire_addCredits(-$row['credits'])) { return ""Ich bin mit dem Schnecken abzählen durcheinander " . "gekommen, Häuptling! Versucht es noch einmal!""; } // 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ür die Schnecken!"; }
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; }