LoGD Standardrelease steht hier zum Download zur Verfügung!

Zeige Source: /special/riddles.php

Hier klicken für den Source, ODER
Weitere Dateien, von denen du den Quelltext sehen kannst:
(Das Lesen des Source, um sich spielerische Vorteile zu verschaffen, ist nicht erlaubt. Solltest du Schwachstellen oder Fehler entdecken, bist du als Spieler verpflichtet, diese zu melden.)

Source von: /special/riddles.php

<?php
/* *******************
The riddling gnome was written by Joe Naylor
Feel free to use this any way you want to, but please give credit where due.
Version 1.1ger
******************* */
/*
2024-04-23  aragon  php8 fix, code style
*/

$op $_GET['op'] ?? '';
$subop $_GET['subop'] ?? '';

if (!isset(
$session)) {
  exit();
}

//** Used to remove extra words from the beginning and end of a string
// Note that string will be converted to lowercase
function filterwords($string)
{
  
$string strtolower($string);

  
//Words to remove
  
$filterpre = array(
    
"a",
    
"an",
    
"and",
    
"the",
    
"my",
    
"your",
    
"someones",
    
"someone's",
    
"someone",
    
"his",
    
"her",
    
"ein",
    
"eine",
    
"der",
    
"die",
    
"das",
    
"s"
  
);
  
//Letters to take off the end
  
$filterpost = array(
    
"s",
    
"ing",
    
"ed"
  
);

  
//split in to array of words
  
$filtstr explode(" "trim($string));
  foreach (
$filtstr as $key => $filtstr1) {
    
$filtstr[$key] = trim($filtstr1);
  }

  
//pop off word if found in $filterpre
  
foreach ($filtstr as $key => $filtstr1) {
    foreach (
$filterpre as $filterpre1) {
      if (!
strcasecmp($filtstr1$filterpre1)) {
        
$filtstr[$key] = "";
      }
    }
  }
  
//trim off common word endings
  
foreach ($filtstr as $key => $filtstr1) {
    foreach (
$filterpost as $filterpost1) {
      if (
        
count($filtstr) > strlen($filterpost1) &&
        !
strcasecmp(substr($filtstr1, -strlen($filterpost1)), $filterpost1)
      ) {
        
$filtstr[$key] = substr($filtstr10count($filtstr) - strlen($filterpost1));
      }
    }
  }
  
//rebuild filtered input
  
$string implode(""$filtstr);

  return 
$string;
}

if (
$op == "") {
  
output("`6`nEin kurzer kleiner Gnom mit Blättern in den Haaren hockt neben einem kleinen Baum. Er grinst und kichert hinter einer seiner fettigen Hände.");
  
output("Für einen Moment sieht es so aus, als ob er in den Wald wegkrabbeln will, aber dann grinst er dich an.`n`n");
  
output("`6\"`@Ich werde dir einen Gefallen tun,`6\" sagt er, \"`@wenn du mein Rätsel lösen kannst!`6\"`n`n");
  
output("`6Vorübergehend verfällt er in unkontrolliertes Kichern, fasst sich wieder für einen Moment und fährt fort.`n`n");

  
output("`6\"`@Aber wenn du falsch liegen solltest, mein Gefallen es wird sein!`6\"`n");
  
output("`6`nNimmst du die Herausforderung an?`n`n");
  
output("<a href=forest.php?op=yes>Ja</a>`n"true);
  
output("<a href=forest.php?op=no>Nein</a>`n"true);

  
addnav("Ja""forest.php?op=yes");
  
addnav("Nein""forest.php?op=no");
  
addnav("""forest.php?op=yes");
  
addnav("""forest.php?op=no");
  if (
$session['user']['specialinc'] != "riddles.php") {
    
updatetexts('specialmisc''');
  }
  
$session['user']['specialinc'] = "riddles.php";
} elseif (
$op == "yes") {
  
//if ($_POST['guess']==NULL){
  
if ($subop != "answer") {
    
$session['user']['specialinc'] = "riddles.php";
    
$rid gettexts('specialmisc');
    if (!
strpos($rid"Riddle")) {
      
$sq1 "SELECT * FROM riddles ORDER BY rand(" e_rand() . ")";
    } else {
      
$rid substr($rid, -* (strlen($rid) - 6));    // 6 letters in "Riddle"
      
$sq1 "SELECT * FROM riddles WHERE id=$rid";
    }
    
$result db_query($sq1) or die(db_error(LINK));
    
$riddle db_fetch_assoc($result);
    
updatetexts('specialmisc'"Riddle" $riddle['id']);
    
output("`6Vor Freude kichernd stellt er sein Rätsel:`n`n");
    
output("`6\"`@" $riddle['riddle'] . "`6\"`n`n");
    
output("`6Was meinst du?");
    
output("<form action='forest.php?op=yes&subop=answer' method='POST'><input name='guess'><input type='submit' class='button' value='Rate'></form>"true);
    
addnav("""forest.php?op=yes&subop=answer");
  } else {
    
$rid substr(gettexts('specialmisc'), 6);
    
$sq1 "SELECT * FROM riddles WHERE id=$rid";
    
$result db_query($sq1) or die(db_error(LINK));
    
$riddle db_fetch_assoc($result);


    
//*** Get and filter correct answer
    
$answer explode(";"$riddle['answer']); //there can be more than one answer in the database, seperated by semicolons (;)
    
foreach ($answer as $key => $answer1) {
      
//changed "" to " " below, I believe this is the correct implementation.
      
$answer[$key] = preg_replace("/[^[:alpha:]]/"" "$answer1);
      
$answer[$key] = filterwords($answer1);
    }

    
//*** Get and filter players guess
    
$guess $_POST['guess'];
    
// $guessdebug = $guess; // This is only for debugging, see below when the answer is wrong.
    
$guess preg_replace("/[^[:alpha:]]/"" "$guess);
    
$guess filterwords($guess);

    
$correct 0;
    
//changed to 2 on the levenshtein just for compassion's sake :-)  --MightyE
    
foreach ($answer as $answer1) {
      if (
levenshtein($guess$answer1) <= 2//Allow one letter to be off to compensate for silly spelling mistakes
      
{
        
$correct 1;
      }
    }

    if (
$correct) {
      
output("`n`6\"`@Eidechsen und Kaulquappen!! Du hast es!`6\", tobt er, `n");
      
output("`6\"`@Oh na gut. Hier hast du deinen dämlichen Preis.`6\"`n`n");

      
// It would be nice to have some more consequences
      
$rand e_rand(110);
      switch (
$rand) {
        case 
1:
        case 
2:
        case 
3:
        case 
4:
          
output("`^Er gibt dir einen Edelstein!");
          
$session['user']['gems']++;
          
//debuglog("gained 1 gem from the riddle master");
          
break;
        case 
5:
        case 
6:
        case 
7:
          
output("`^Er gibt dir zwei Edelsteine!");
          
$session['user']['gems'] += 2;
          
//debuglog("gained 2 gems from the riddle master");
          
break;
        case 
8:
        case 
9:
          
output("Er macht ein Hokus Pokus und dreht sich um. Nach diesem Schauspiel fühlst du dich bereit für den Kampf!");
          
output("`n`n`^Du erhältst einen zusätzlichen Waldkampf!");
          
$session['user']['turns']++;
          break;
        case 
10:
        default:
          
output("Er schaut dir tief in die Augen, dann zieht er dir kräftig eins über die Rübe.  ");
          
// FÄHIGKEITENMOD BY ANGEL if ($session['user']['specialty']) {
          
if ($session['user']['skill']) {
            
output("Als du wieder zu dir kommst, fühlst du dich ein klein wenig geschickter.`n`#");
            
increment_specialty();
          } else {
            
output("Das war eine Lektion in Spaß.");
            
output("`n`n`^Du erhältst ein paar Erfahrungspunkte!");
            
$session['user']['experience'] += $session['user']['level'] * 10;
          }
          break;
      }
    } else {
      
/* ************
This saves the wrong answers in a database table, so I can review them
from time to time and debug my answer interpretation code.  You
don't need to run this unless you're doing something like that. */
      // $answer1 = implode (" ", $answer);
      // $sq1 = "INSERT INTO riddledebug (id,answer,guess,date,player) VALUES ($rid,'$riddle['answer']','$guessdebug',NOW(),{$session['user']['acctid']})";
      // $result = db_query($sq1);
      /***************/

      
output("`n`6Der merkwürdige Gnom gackert vor Freude und tanzt um dich herum. Du fühlst dich ziemlich albern dabei, als dieser verrückte Gnom um dich herum tänzelt wie eine Fee,");
      
output("deswegen machst du dich leise aus dem Staub, solange der Gnom abgelenkt ist. Irgendwie fühlst du dich jetzt weniger als ein Held - mit diesem spöttischen Gelächter in den Ohren. ");

      
// It would be nice to have some more consequences
      
$rand e_rand(16);
      switch (
$rand) {
        case 
1:
        case 
2:
        case 
3:
          
output("Nicht viel später stellst du fest, dass dir auch etwas Gold fehlt...");
          
output("`n`n`^Du hast Gold verloren!");
          
$gold e_rand(1$session['user']['level'] * 10);
          if (
$gold $session['user']['gold']) {
            
$gold $session['user']['gold'];
          }
          
$session['user']['gold'] -= $gold;
          
//debuglog("lost $gold gold to the riddlemaster");
        
case 4:
        case 
5:
          
output("Du glaubst nicht, dass du sofort wieder einem Gegner gegenüber treten kannst.");
          
output("`n`n`^Du verlierst einen Waldkampf!");
          if (
$session['user']['turns'] > 0) {
            
$session['user']['turns']--;
          }
          break;
        case 
6:
        default:
          
output("Was wird wohl " . ($session['user']['sex'] ? "Seth" "Violet") . " davon halten?");
          
output("`n`n`^Du verlierst einen Charmepunkt!");
          if (
$session['user']['charm'] > 0) {
            
$session['user']['charm']--;
          }
          break;
      }
    }

    
$session['user']['specialinc'] = "";
    
updatetexts('specialmisc''');
  }
} elseif (
$op == "no") {
  
output("`n`6Du fürchtest dich lächerlich zu machen und lehnst seine Herausforderung ab. Er war sowieso etwas gruselig.");
  
output("`n`6Der merkwürdige Gnom kichert hysterisch und verschwindet im Wald.");
  
$session['user']['specialinc'] = "";
  
updatetexts('specialmisc''');
}