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
******************* */

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 (
strlen($filtstr) > strlen($filterpost1)) 
                if (!
strcasecmp(substr($filtstr1, -1*strlen($filterpost1)), $filterpost1)) 
                    
$filtstr[$key] = substr($filtstr10strlen($filterstr)-strlen($filterpost1));

        
//rebuild filtered input
    
$string implode(""$filtstr);

    return 
$string;
}

if (
$_GET[op]==""){
    
output("`BAuf einem umgefallenen Baumstamm sitzt ein Kobold mit sruppigem Haar und grinst dich breit an. `1\"Komm, komm, komm. Ich werde dir einen Gefallen tun, wenn du mein Rätsel lösen kannst.\" `Bspricht er dich
    mit piepsiger Stimme an und so langsam hast du das Gefühl, dass dieser Wald vor Rätselkobolden nur so wimmelt. Er verfällt kurz in ein leicht irre klingendes Kichern, dann sieht er dich mit seinen glitzernden Augen an.`n`n
    Willst du mal wieder Rätselraten spielen oder hast du besseres zu tun?`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"){
        
$session[user][specialmisc]=NULL;
    }
    
$session[user][specialinc]="riddles.php";

}else if(
$_GET[op]=="yes"){
    
//if ($_GET[guess]==NULL){
        
if ($_GET['subop']!="answer"){
        
$session[user][specialinc]="riddles.php";
        
$rid $session[user][specialmisc];
        if (!
strpos($rid"Riddle")) {
            
$sq1 "SELECT * FROM riddles ORDER BY rand(".e_rand().")";
        }else{
            
$rid substr($rid, -1*(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);
        
$session[user][specialmisc]="Riddle" $riddle[id];
        
output("`BVor Freude reibt er sich die Hände und stellt dir dann sein Rätsel:`n`n");
        
output("`&\"$riddle[riddle]\"`n`n");
        
output("`BWas 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($session[user][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 $_GET[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`BDer Kobold blinzelt dich an und flucht dann in einer seltsamen Sprache, die du nicht verstehen kannst.`n
            `1\"Du hast es! Du hast mein Rätsel gelöst.\"`B zischt er dann aufgebracht. `n"
);
            
output("`1\"Hier hast du deinen doofen Preis.\"`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("`uEr gibt dir einen Edelstein!");
                    
$session[user][gems]++;
                    
//debuglog("gained 1 gem from the riddle master");
                    
break;
                case 
5:
                case 
6:
                case 
7:
                    
output("`uEr gibt dir zwei Edelsteine!");
                    
$session[user][gems]+=2;
                    
//debuglog("gained 2 gems from the riddle master");
                    
break;
                case 
8:
                case 
9:
                    
output("`BEr murmelt wieder irgendwelche unverständlichen Worte und ist dann verschwunden.");
                    
output("`n`n`&Du erhältst einen zusätzlichen Waldkampf!");
                    
$session[user][turns]++;
                    break;
                case 
10:
                    
output("`BEr greift in einen Beutel an seinem Gürtel und wirft dir etwas Erde ins Gesicht und murmelt komische Worte.`n`n");
                    if (
$session[user][specialty]) {
                        
output("Als du den Dreck aus deinem Gesicht entfernt hast, fühlst du dich etwas anders.`n");
                        
increment_specialty();
                    }else{
                        
output("Als du den Dreck aus deinem Gesicht entfernt hast, fühlst du dich etwas erfahrener.");
                        
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`BDer merkwürdige Kobold gackert vor Freund und tänzelt dann auf dem Baumstamm herum. `1\"Das war nicht die Lösung!\" `Bruft er lachend immer und immer wieder und so verziehst du dich ganz schnell wieder.");

            
// It would be nice to have some more consequences
            
$rand e_rand(16);
            switch (
$rand){
                case 
1:
                case 
2:
                case 
3:
                    
output("`BAls du den Kobold schon hinter dir gelassen hast, fällt dir auf, dass dir etwas Gold fehlt.");
                    
output("`n`n`GDu 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("`BDas hämische Gekicher hat dich etwas demotiviert.");
                    
output("`n`n`&Du verlierst einen Waldkampf!");
                    if (
$session[user][turns]>0$session[user][turns]--;
                    break;
                case 
6:
                    
output("`BVor Wut, dass du das Rätsel nicht lösen konntest, stampfst du durch den Wald und übersiehst einen tiefhängenden Ast, der dir einen Kratzer auf der Stirn verpasst.");
                    
output("`n`n`uDu verlierst einen Charmepunkt!");
                    if (
$session[user][charm]>0$session[user][charm]--;
                    break;
                }    
        }

        
$session[user][specialinc]="";
        
$session[user][specialmisc]="";
    }
}else if(
$_GET[op]=="no"){
    
output("`n`BDu hast genug von Rätselkobolden und gehst einfach weiter. ");
    
$session[user][specialinc]="";
    
$session[user][specialmisc]="";
}
?>