Quellcodeviewer der Dragonslayer-Edition
Quellcodeviewer der Dragonslayer-Edition : 0.9.7+jt ext (GER)


Anmerkung: Dies ist nur ein Auszug aus dem Source. Um das jeweils aktuelle, vollständige Release zu erhalten, ist eine Anfrage mit gültiger Email-Adresse erforderlich. Ebenso sollte darin die Serveradresse bzw. sonstiger Verwendungszweck aufgeführt sein. Was wir uns unbedingt verbitten, ist Diebstahl unserer Arbeit ohne Nennung des Copyrights.

Falls beim Lesen des Source ein Bug entdeckt werden sollte, bitten wir um sofortige Meldung per Anfrage!


./special/riddles.php

zurück

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
<?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("`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"){
        
$session[user][specialmisc]=NULL;
    }
    
$session[user][specialinc]="riddles.php";

}else if(
$_GET[op]=="yes"){
    
//if ($_POST[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("`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($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 $_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:
                    
output("Er schaut dir tief in die Augen, dann zieht er dir kräftig eins über die Rübe.  ");
                    if (
$session[user][specialty]) {
                        
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:
                    
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]="";
        
$session[user][specialmisc]="";
    }
}else if(
$_GET[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]="";
    
$session[user][specialmisc]="";
}
?>
0.9.7+jt ext (GER)