Quellcode der Dragonslayer-Edition
Quellcode der Dragonslayer-Edition: 0.9.7(DS V3) Ithil-Edition


Anmerkung: Dies ist nur ein Auszug aus dem Source. Ein etwas älteres, abgespecktes Release der Dragonslayer-Edition ist für jeden Interessenten frei zum Download verfügbar. 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!


./virgator.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:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:
316:
317:
318:
319:
320:
321:
322:
323:
324:
325:
326:
327:
328:
329:
330:
331:
332:
333:
334:
335:
336:
337:
338:
339:
340:
341:
342:
343:
344:
345:
346:
347:
348:
349:
350:
351:
352:
353:
354:
355:
356:
357:
358:
359:
360:
361:
362:
363:
364:
365:
366:
367:
368:
369:
370:
371:
372:
373:
374:
375:
376:
377:
378:
379:
380:
381:
382:
383:
384:
385:
386:
387:
388:
389:
390:
391:
392:
393:
394:
395:
396:
397:
398:
399:
400:
401:
402:
403:
404:
405:
406:
407:
408:
409:
410:
411:
412:
413:
414:
415:
416:
417:
418:
419:
420:
421:
422:
423:
424:
425:
426:
427:
428:
429:
430:
431:
432:
433:
434:
435:
436:
437:
438:
439:
440:
441:
442:
443:
444:
445:
446:
447:
448:
449:
450:
451:
452:
453:
454:
455:
456:
457:
458:
459:
460:
461:
462:
463:
464:
465:
466:
467:
468:
469:
470:
471:
472:
473:
474:
475:
476:
477:
478:
479:
480:
481:
482:
483:
484:
485:
486:
487:
488:
489:
490:
491:
492:
493:
494:
495:
496:
497:
498:
499:
500:
501:
502:
503:
504:
505:
506:
507:
508:
509:
510:
511:
512:
513:
514:
515:
516:
517:
518:
519:
520:
521:
522:
523:
524:
525:
526:
527:
528:
529:
530:
531:
532:
533:
534:
535:
536:
537:
538:
539:
540:
541:
542:
543:
544:
545:
546:
547:
548:
549:
550:
551:
552:
553:
554:
555:
556:
557:
558:
559:
560:
561:
562:
563:
564:
565:
566:
567:
568:
569:
570:
571:
572:
573:
574:
575:
576:
577:
578:
579:
580:
581:
582:
583:
584:
585:
586:
587:
588:
589:
590:
591:
592:
593:
594:
595:
596:
597:
598:
599:
600:
601:
602:
603:
604:
605:
606:
607:
608:
609:
610:
611:
612:
613:
614:
615:
616:
617:
618:
<?php
/*******************************
Programm: Virgator
Version: 0.1
Datum: 25.05.2005
Ersteller: deZent von PD
NUR FÜR 0.97 LogD! Ich möchte ausdrücklich nicht, dass dieses Skript in höheren Versionen implementiert wird.
31.03.2007: Überarbeitet durch Maris (Maraxxus [-[at]-] gmx.de) atrahor.de

Änderungen (u.A.):
- maximale Versuche werden durch Setting "virgator_max" festgelegt. (Einbau in configutation.php nicht vergessen!)
- Mindest-DK gleichermaßen durch "virgator_dks" bestimmt.
- Karten sind nun als serialisierter Array gespeichert, virgator_xypos.php daher überflüssig
- Bewegungung können nun auch durch Klicken ins Spielfeld ausgeführt werden
********************************/

require_once 'common.php';
page_header('Virgator');
$str_filename basename(__FILE__);
$str_backtext 'Zum Trainingslager';
$str_backlink 'train.php';
$arr_virgator user_get_aei('virgator_level,virgator_count',$session['user']['acctid']);

switch (
$_GET['op'])
{
    case 
'eingang':
    {
        
output('
            `c`b`@Virgator`0`b`c`n
            `n
            `7Du betrittst die ehrwürdigen Hallen des Virgators von '
.getsetting('townname','Atrahor').'. 
            Hier wurden vor langer Zeit, weit vor dem Zeitalter des `@grünen Drachen`7, 
            die mächtigen Krieger ausgebildet.`n
            Neben Kampfeskunst und Kraft muss ein wahrhaft großer Krieger ebenso über List und Tücke verfügen.`n
            Hierzu wurde der Virgator erschaffen.`n
            `n
            Ein Tempel mit vielen Prüfungen.`n
        '
);
        if (
$arr_virgator['virgator_level']==0)
        {
            
output('
                `n
                `n 
                Vorsichtig näherst du dich dem Tor welches dich vermutlich zu der Arena führt....`n
                Dummerweise ist das Tor mit einem `4rot leuchtendem Siegel`7 verschlossen...
            '
);
            
addnav('Siegel');
            
addnav('Siegel aufbrechen',$str_filename.'?op=siegel');
        }
        else
        {
            
output('
                `n
                `n
                Offensichtlich kennt dich das Tor... 
                die Schriftzüge, welche beim Zerschlagen des Siegels entstanden sind, 
                erleuchten als du dich dem Tor näherst.
            '
);
            
addnav('Virgator');
            
addnav('Schriftzüge lesen',$str_filename.'?op=hilfe');
            if (
$arr_virgator['virgator_count']<getsetting('virgator_max','3'))
            {
                
addnav('Zu den Prüfungen',$str_filename);
                if(
$session['user']['gems']>0)
                {
                    
addnav('Neu beginnen (1ES)',$str_filename.'?op=cheat&act=reset',false,false,false,false,'Achtung! Für 1 Edelstein Gebühr setzt du hiermit deinen Virgator-Level auf 1 und streicht dich aus der Ruhmeshalle. Du fängst also von vorne an. Willst du das wirklich?');
                }
            }
            else
            {
                
output('
                    `Q`n
                    Als du dich dem Tor erneut näherst, verschließt es seine Pforten wieder. 
                    Vielleicht hast du heute schon zuviel Prügel eingesteckt...`n
                    `7
                '
);
            }
        }
        
/** Haben wir woanders
        addnav("Ruhmeshalle",$str_filename."?op=halle");
        addnav("Zurück");
        **/
        
addnav($str_backtext,$str_backlink);
    }
    break;

    case 
'siegel':
    {
        
output('
            `c`b`@Virgator`0`b`c`n
            `n
            `7Du nimmst deine Waffe '
.$session['user']['weapon'].' und schlägst mit aller Macht auf das Siegel...`n
            Funken spühren, das Tor
        '
);
        if (
$session['user']['dragonkills']<getsetting('virgator_dks','5'))
        {
            
output(' erzittert...`n
                `n
                Und Sekunden später stellst du frustriert fest, dass es wohl eher ein Lachen war als ein zittern.`n
                Nachdem das Siegel wieder wie gewohnt `$rot glüht`7 siehst du ein, 
                dass du wohl noch nicht erfahren genug bist, um dich im Tempel des Virgators zu messen.`n
            '
);
            
addnav("Zurück");
            
addnav($str_backtext,$str_backlink);
        }
        else
        {
            
output(' er`iz`ii`btt`b`ier`it...`n
                `n
                Die blendend hellen Funken formen sich zu zu einem magischen Schriftzug rund um das Tor herum.`n
                Offensichtlich bist du erfahren genug um den Gefahren des Virgators entgegenzutreten.
            '
);
            
// erstes level freischalten
            
$arr_virgator['virgator_level']=1;
            
user_set_aei($arr_virgator,$session['user']['acctid']);
            
addnav('Weiter');
            
addnav('Gehe durchs Tor',$str_filename);
        }
    }
    break;

    case 
'hilfe':
    {
        
output('
            `c`b`@Virgator`0`b`c`n
            `n
            `^Du befindest dich in den heiligen Hallen des Virgators. 
            Hier wurden einst die mächtigsten aller Krieger ausgebildet.`n
            Es wurde die Lehre der tollkühnen `irunandhide`i Kampftechnik unterrichtet.`n
            Der große `@Meister Caldariusum `^war ungeschlagen in dieser edlen Technik. 
            Ihm sei dieser Ort gewidmet.`n
            `n
            Um die Prüfung zu bestehen musst du vor dem schwarzen Krieger das Ausgangstor erreichen.`n
            Der schwarze Krieger geht immer zuerst horizontal, dann vertikal.`n
            Locke ihn in den Treibsand, dann ist er für 4 Züge außer Gefecht!`n
            Du solltest dich jedoch vom Treibsand fern halten...`n
            Erwischt dich der schwarze Krieger, so kassierst du eine Tracht Prügel!`n
            Pro Tag darfst du es '
.getsetting('virgator_max','3').'x versuchen.`n
            `n
            Viel Erfolg!`7`n
            (c) written by `qde`QZ`qent`7 for PD
        '
);
        
// Finger weg vom (c) !
        // - ok, wir sind ja nicht motwd *g*
        
addnav('Virgator');
        
addnav('Zum Eingang',$str_filename.'?op=eingang');
    }
    break;

    case 
'halle':
    {
        
$sql "
            SELECT 
                `name`, 
                `virgator_level` 
            FROM 
                `accounts` 
            JOIN 
                `account_extra_info` 
            USING 
                (`acctid`) 
            WHERE 
                `virgator_level`    > '0'     AND 
                `superuser`            < '3' 
            ORDER BY 
                `virgator_level`     DESC, 
                `dragonkills`         DESC 
            LIMIT 
                50
        "
;
        
$result db_query($sql);
        
$str_output .= '
            `c`b`@Virgator`0`b`c`n
            `n
            `7An der Nordseite der Halle ist eine Steintafel auf der der Virgator die aktuellen Prüfungen 
            der einzelnen Abenteuerer festhält. Du siehst hier die 50 erfahrensten Prüflinge.`n
            
            <center>
                <table>
                    <tr>
                        <td style="background-color:#AFDB02;color:#000000;font-weight:bold;">
                            <center>Platz</center>
                        </td>
                        <td style="background-color:#AFDB02;color:#000000;font-weight:bold;">
                            <center>Name</center>
                        </td>
                        <td style="background-color:#AFDB02;color:#000000;font-weight:bold;">
                            Level
                        </td>
                    </tr>
        '
;
        
        for(
$i $row db_fetch_assoc($result) ; $i++)
        {
            
$str_output .= "
                    <tr>
                        <td>
                            "
.$i.".
                        </td>
                        <td>
                            "
.$row['name']."
                        </td>
                        <td>
                            "
.$row['virgator_level']."
                        </td>
                    </tr>
            "
;
        }
        
$str_output .= "
                </table>
            </center>
        "
;
        
addnav('Virgator');
        
addnav('Zum Eingang',$str_filename.'?op=eingang');
    }
    break;

    case 
'cheat':
    {
        if(
$_GET['act']=='reset')
        {
            
$arr_virgator['virgator_level']=0;
            
$session['user']['gems']--;
            
debuglog('hat Virgator-Level zurückgesetzt');
        }
        
$arr_virgator['virgator_level']++;
        
user_set_aei($arr_virgator,$session['user']['acctid']);
        
output('Dein Virgator-Level ist jetzt '.$arr_virgator['virgator_level']);
        
addnav('Weiter');
        
addnav('Nächste Prüfung',$str_filename);
        
addnav('Zurück');
        
addnav('Zum Eingang',$str_filename.'?op=eingang');
    }
    break;

    default:
    {
        
output("`n`7Dies ist die `@".$arr_virgator['virgator_level'].".`7 Prüfung.`0`n`n`n
        <center><div style='position: relative;top: 0pt;left: 0pt;width: 350px;height: 350px;'>"
,true);
        
$show_nav=true;

        
// Daten holen
        
$sql "
            SELECT 
                * 
            FROM 
                `virgator_table` 
            WHERE 
                `level`    = '"
.$arr_virgator['virgator_level']."'
        "
;
        
$result db_query($sql);
        
$row db_fetch_assoc($result);
        
$data unserialize($row['data']);

        
//Endbild erstellen wenn kein gültiger Datensatz
        
if(!$data[0][0]['bild'])
        {
            
$data=unserialize('a:9:{i:0;a:6:{i:0;a:4:{s:4:"xpos";i:0;s:4:"ypos";i:0;s:4:"bild";s:9:"g_o_l.gif";s:3:"nav";s:5:";o;s;";}i:1;a:4:{s:4:"xpos";i:48;s:4:"ypos";i:0;s:4:"bild";s:7:"g_o.gif";s:3:"nav";s:7:";o;s;w;";}i:2;a:4:{s:4:"xpos";i:96;s:4:"ypos";i:0;s:4:"bild";s:7:"g_o.gif";s:3:"nav";s:7:";o;s;w;";}i:3;a:4:{s:4:"xpos";i:144;s:4:"ypos";i:0;s:4:"bild";s:7:"g_o.gif";s:3:"nav";s:7:";o;s;w;";}i:4;a:4:{s:4:"xpos";i:192;s:4:"ypos";i:0;s:4:"bild";s:7:"g_o.gif";s:3:"nav";s:7:";o;s;w;";}i:5;a:4:{s:4:"xpos";i:240;s:4:"ypos";i:0;s:4:"bild";s:9:"g_o_r.gif";s:3:"nav";s:5:";s;w;";}}i:1;a:6:{i:0;a:4:{s:4:"xpos";i:0;s:4:"ypos";i:48;s:4:"bild";s:7:"g_l.gif";s:3:"nav";s:7:";n;o;s;";}i:1;a:4:{s:4:"xpos";i:48;s:4:"ypos";i:48;s:4:"bild";s:5:"g.gif";s:3:"nav";s:9:";n;o;s;w;";}i:2;a:4:{s:4:"xpos";i:96;s:4:"ypos";i:48;s:4:"bild";s:5:"g.gif";s:3:"nav";s:9:";n;o;s;w;";}i:3;a:4:{s:4:"xpos";i:144;s:4:"ypos";i:48;s:4:"bild";s:5:"g.gif";s:3:"nav";s:9:";n;o;s;w;";}i:4;a:4:{s:4:"xpos";i:192;s:4:"ypos";i:48;s:4:"bild";s:5:"g.gif";s:3:"nav";s:9:";n;o;s;w;";}i:5;a:4:{s:4:"xpos";i:240;s:4:"ypos";i:48;s:4:"bild";s:7:"g_r.gif";s:3:"nav";s:7:";n;s;w;";}}i:2;a:6:{i:0;a:4:{s:4:"xpos";i:0;s:4:"ypos";i:96;s:4:"bild";s:7:"g_l.gif";s:3:"nav";s:7:";n;o;s;";}i:1;a:4:{s:4:"xpos";i:48;s:4:"ypos";i:96;s:4:"bild";s:5:"g.gif";s:3:"nav";s:9:";n;o;s;w;";}i:2;a:4:{s:4:"xpos";i:96;s:4:"ypos";i:96;s:4:"bild";s:5:"s.gif";s:3:"nav";s:9:";n;o;s;w;";}i:3;a:4:{s:4:"xpos";i:144;s:4:"ypos";i:96;s:4:"bild";s:5:"g.gif";s:3:"nav";s:9:";n;o;s;w;";}i:4;a:4:{s:4:"xpos";i:192;s:4:"ypos";i:96;s:4:"bild";s:5:"g.gif";s:3:"nav";s:9:";n;o;s;w;";}i:5;a:4:{s:4:"xpos";i:240;s:4:"ypos";i:96;s:4:"bild";s:7:"g_r.gif";s:3:"nav";s:7:";n;s;w;";}}i:3;a:6:{i:0;a:4:{s:4:"xpos";i:0;s:4:"ypos";i:144;s:4:"bild";s:7:"g_l.gif";s:3:"nav";s:7:";n;o;s;";}i:1;a:4:{s:4:"xpos";i:48;s:4:"ypos";i:144;s:4:"bild";s:5:"g.gif";s:3:"nav";s:9:";n;o;s;w;";}i:2;a:4:{s:4:"xpos";i:96;s:4:"ypos";i:144;s:4:"bild";s:5:"g.gif";s:3:"nav";s:9:";n;o;s;w;";}i:3;a:4:{s:4:"xpos";i:144;s:4:"ypos";i:144;s:4:"bild";s:5:"g.gif";s:3:"nav";s:9:";n;o;s;w;";}i:4;a:4:{s:4:"xpos";i:192;s:4:"ypos";i:144;s:4:"bild";s:5:"g.gif";s:3:"nav";s:9:";n;o;s;w;";}i:5;a:4:{s:4:"xpos";i:240;s:4:"ypos";i:144;s:4:"bild";s:7:"g_r.gif";s:3:"nav";s:7:";n;s;w;";}}i:4;a:6:{i:0;a:4:{s:4:"xpos";i:0;s:4:"ypos";i:192;s:4:"bild";s:7:"g_l.gif";s:3:"nav";s:7:";n;o;s;";}i:1;a:4:{s:4:"xpos";i:48;s:4:"ypos";i:192;s:4:"bild";s:5:"g.gif";s:3:"nav";s:9:";n;o;s;w;";}i:2;a:4:{s:4:"xpos";i:96;s:4:"ypos";i:192;s:4:"bild";s:5:"g.gif";s:3:"nav";s:9:";n;o;s;w;";}i:3;a:4:{s:4:"xpos";i:144;s:4:"ypos";i:192;s:4:"bild";s:5:"g.gif";s:3:"nav";s:9:";n;o;s;w;";}i:4;a:4:{s:4:"xpos";i:192;s:4:"ypos";i:192;s:4:"bild";s:5:"g.gif";s:3:"nav";s:9:";n;o;s;w;";}i:5;a:4:{s:4:"xpos";i:240;s:4:"ypos";i:192;s:4:"bild";s:7:"g_r.gif";s:3:"nav";s:7:";n;s;w;";}}i:5;a:6:{i:0;a:4:{s:4:"xpos";i:0;s:4:"ypos";i:240;s:4:"bild";s:9:"g_u_l.gif";s:3:"nav";s:5:";n;o;";}i:1;a:4:{s:4:"xpos";i:48;s:4:"ypos";i:240;s:4:"bild";s:7:"g_u.gif";s:3:"nav";s:7:";n;o;w;";}i:2;a:4:{s:4:"xpos";i:96;s:4:"ypos";i:240;s:4:"bild";s:7:"g_u.gif";s:3:"nav";s:7:";n;o;w;";}i:3;a:4:{s:4:"xpos";i:144;s:4:"ypos";i:240;s:4:"bild";s:7:"g_u.gif";s:3:"nav";s:7:";n;o;w;";}i:4;a:4:{s:4:"xpos";i:192;s:4:"ypos";i:240;s:4:"bild";s:7:"g_u.gif";s:3:"nav";s:7:";n;o;w;";}i:5;a:4:{s:4:"xpos";i:240;s:4:"ypos";i:240;s:4:"bild";s:9:"g_u_r.gif";s:3:"nav";s:7:";n;w;s;";}}s:4:"exit";a:2:{s:1:"x";i:5;s:1:"y";i:6;}s:9:"opp_start";a:2:{s:1:"x";i:5;s:1:"y";i:5;}s:7:"p_start";a:2:{s:1:"x";i:0;s:1:"y";i:0;}}');
        }

        
// Sperren
        
if(is_array($data['lock']))
        {
            foreach (
$data['lock'] as $key => $val)
            {
                
$vonx $val['vonx'];
                
$vony $val['vony'];
                
$nachx $val['nachx'];
                
$nachy $val['nachy'];

                if (
$vony == $nachy)
                {
                    
// horizontale Sperre
                    
$ausgabe.='<div style="position: absolute; top: '.($data[$vony-1][$vonx-1]['ypos'] -1).'px; left:'.($data[$vony-1][$vonx-1]['xpos'] -+48).'px; z-index:2"><img src="./images/virgator/sperre_v.gif"></div>';
                }
                elseif (
$vonx == $nachx)
                {
                    
// vertikale Sperre
                    
$ausgabe.='<div style="position: absolute; top: '.($data[$vony-1][$vonx-1]['ypos'] -+48).'px; left:'.($data[$vony-1][$vonx-1]['xpos'] - 1).'px; z-index:2"><img src="./images/virgator/sperre_h.gif"></div>';
                }
            }
        }

        
//Spieler- und Gegnerposition
        
if ($_GET['x']=='' && $_GET['y']=='')
        {
            
$_GET['x']=$data['p_start']['x'];
            
$_GET['y']=$data['p_start']['y'];
        }
        if (
$_GET['g1x']=='' && $_GET['g1y']=='')
        {
            
$_GET['g1x']=$data['opp_start']['x'];
            
$_GET['g1y']=$data['opp_start']['y'];
        }

        
// Zieldaten
        
$zx=$data['exit']['x']; $zy=$data['exit']['y'];

        if (
$_GET['x']== $zx && $_GET['y']==$zy)
        {
            
$gewonnen=true;
            
$ausgabe2.='`@<h2>Du hast die Prüfung bestanden</h2>`7';
            
// schauen ob es eine Belohnung gibt
            // das solltest du anpassen! auf unserem Server gibt es besondere Items, die jedoch auf unserem Itemsystem basieren.
            //darum hier immer 100gold.
            
if(($arr_virgator['virgator_level'] % 5) == 0)
            {
                switch (
$arr_virgator['virgator_level'])
                {
                    case 
5:
                        
$session['user']['gold']+=100;
                        
$ausgabe2.='<h2>Als Anerkennung deiner Leistung bekommst du 100 Gold.</h2>';
                        break;
                    case 
10:
                        
$session['user']['gold']+=100;
                        
$ausgabe2.='<h2>Als Anerkennung deiner Leistung bekommst du 100 Gold.</h2>';
                        break;
                    case 
15:
                        
$session['user']['gold']+=100;
                        
$ausgabe2.='<h2>Als Anerkennung deiner Leistung bekommst du 100 Gold.</h2>';
                        break;
                    case 
20:
                        
$session['user']['gold']+=100;
                        
$ausgabe2.='<h2>Als Anerkennung deiner Leistung bekommst du 100 Gold.</h2>';
                        break;
                    case 
25:
                        
$session['user']['gems']++;
                        
$ausgabe2.='<h2>Als Anerkennung deiner Leistung bekommst du einen Edelstein.</h2>';
                        break;
                    case 
50:
                        
$session['user']['gems']+=2;
                        
$ausgabe2.='<h2>Als Anerkennung deiner Leistung bekommst du ZWEI Edelsteine.</h2>';
                        break;
                    case 
75:
                        
$session['user']['gems']+=3;
                        
$ausgabe2.='<h2>Als Anerkennung deiner Leistung bekommst du DREI Edelsteine.</h2>';
                        break;
                    default:
                        
$session['user']['gold']+=100;
                        
$ausgabe2.='<h2>Als Anerkennung deiner Leistung bekommst du 100 Gold.</h2>';
                        break;
                }
            }

            
$arr_virgator['virgator_level']++;
            
user_set_aei($arr_virgator,$session['user']['acctid']);
            
// nächstes Level

            
addnav('Weiter');
            
addnav('Nächste Prüfung',$str_filename);
            
addnav('Zurück');
            
addnav('Zum Eingang',$str_filename.'?op=eingang');
        }


        
// ###########################################################
        // gegner Positionieren
        //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        // REGEL: Gegner läuft solange horizontal bis er auf höhe des Players ist.
        // aktueller Stand einzeichen
        
if ($_GET['sperre']=='')
        {
            
$_GET['sperre']=1;
        }
        
// damit der Gegner beim Start nicht gleich losläuft
        
$j=1;
        
$ausgabe.='<div style="position: absolute; top: '.($data[$_GET['g1y']][$_GET['g1x']]['ypos']).'px; left:'.($data[$_GET['g1y']][$_GET['g1x']]['xpos']+3).'px; z-index:3"><img src="./images/virgator/geg'.$j.'.gif"></div>';

        
// Schritte berechnen
        
for ($i=0$i<2$i++)
        {
            
$move_check=true;
            if (
$_GET['x']!=$_GET['g1x'])
            {
                
$check=$data[$_GET['g1y']][$_GET['g1x']]['nav'];
                
// links oder rechts?
                
if ($_GET['x']<$_GET['g1x'])
                {
                    
// Player westlich vom gegner
                    
$move=substr_count($check,";w");
                    
// darf der Gegner nach westen?
                    
if ($move)
                    {
                        if (
$_GET['sperre']==0)
                        {
                            
// Gegner ist im Sand, wenn Sperre >0
                            
$_GET['g1x']-=1;
                            
// ein Schritt nach Westen
                            
$move_check=false;
                            if (
$data[$_GET['g1y']][$_GET['g1x']]['bild']=='s.gif')
                            {
                                
// Gengner ist in Sand getappt
                                
$i=2;
                                
$_GET['sperre']=4;
                            }
                        }
                    }
                }
                else
                {
                    
// Player östlich vom Gegner
                    
$move=substr_count($check,";o");
                    
// darf der Gegner nach Osten?
                    
if ($move)
                    {
                        if (
$_GET['sperre']==0)
                        {
                            
// Gegner ist im Sand, wenn Sperre >0
                            
$_GET['g1x']+=1;
                            
// ein Schritt nach Osten
                            
$move_check=false;
                            if (
$data[$_GET['g1y']][$_GET['g1x']]['bild']=='s.gif')
                            {
                                
// Gegner ist in Sand getappt
                                
$i=2;
                                
$_GET['sperre']=4;
                            }
                        }
                    }
                }
                
// Schritt vom Gegner einzeichen
                
if (!$move_check)
                {
                    
$j++;
                    
$ausgabe.='<div style="position: absolute; top: '.($data[$_GET['g1y']][$_GET['g1x']]['ypos']).'px; left:'.($data[$_GET['g1y']][$_GET['g1x']]['xpos']+3).'px; z-index:3"><img src="./images/virgator/geg'.$j.'.gif"></div>';
                }
            }
            if (
$_GET['y']!=$_GET['g1y'] && $move_check)
            {
                
$check=$data[$_GET['g1y']][$_GET['g1x']]['nav'];
                
// hoch oder runter?
                
if ($_GET['y']<$_GET['g1y'])
                {
                    
// Player nördlich vom gegner
                    
$move=substr_count($check,";n");
                    
// darf der Gegner nach Norden?
                    
if ($move)
                    {
                        if (
$_GET['sperre']==0)
                        {
                            
// Gegner ist im Sand, wenn Sperre >0
                            
$_GET['g1y']-=1;
                            
// ein Schritt nach Norden
                            
if ($data[$_GET['g1y']][$_GET['g1x']]['bild']=='s.gif')
                            {
                                
// Gengner ist in Sand getappt
                                
$i=2;
                                
$_GET['sperre']=4;
                            }
                        }
                    }
                }
                else
                {
                    
// Player südlich vom Gegner
                    
$move=substr_count($check,";s");
                    
// darf der Gegner nach Süden??
                    
if ($move)
                    {
                        if (
$_GET['sperre']==0)
                        {
                            
// Gegner ist im Sand, wenn Sperre >0
                            
$_GET['g1y']+=1;
                            
// ein Schritt nach Süden
                            
if ($data[$_GET['g1y']][$_GET['g1x']]['bild']=='s.gif')
                            {
                                
// Gengner ist in Sand getappt
                                
$i=2;
                                
$_GET['sperre']=4;
                            }
                        }
                    }
                }
                
// Schritt vom Gegner einzeichen
                
$move_check=false;
                
$j++;
                
$ausgabe.='<div style="position: absolute; top: '.($data[$_GET['g1y']][$_GET['g1x']]['ypos']).'px; left:'.($data[$_GET['g1y']][$_GET['g1x']]['xpos']+3).'px; z-index:3"><img src="./images/virgator/geg'.$j.'.gif"></div>';
            }
            if (
$_GET['y']==$_GET['g1y']  && $_GET['x']==$_GET['g1x'] && $gewonnen!=true)
            {
                
// Gegner hat Player gefangen
                
if ($nicht_doppelt!=true)
                {
                    
$ausgabe2.="<h1>Der Virgator hat dich erwischt!</h1>";
                    
$show_nav=false;
                    
$arr_virgator['virgator_count']++;
                    
user_set_aei($arr_virgator,$session['user']['acctid']);
                    
addnav("Zurück");
                    
addnav("Zum Eingang",$str_filename."?op=eingang");
                    
$nicht_doppelt=true;
                    
// Pfusch-- Prüfungszeit, was soll man sagen?!?
                
}
            }
        }
        
// ende for schleife
        // letzte Position immer einzeichen
        
$ausgabe.='<div style="position: absolute; top: '.($data[$_GET['g1y']][$_GET['g1x']]['ypos']).'px; left:'.($data[$_GET['g1y']][$_GET['g1x']]['xpos']+3).'px; z-index:3"><img src="./images/virgator/geg3.gif"></div>';

        
// check wielange der Gegner noch im Sand ist
        
if ($_GET['sperre']>0)
        {
            
$_GET['sperre']-=1;
        }

        
// schauen ob der Player im Sand , und somit tot ist!
        
if ($data[$_GET['y']][$_GET['x']]['bild']=='s.gif')
        {
            
$ausgabe2.="<h1>Du bist im Sand gefangen!</h1>";
            
$show_nav=false;
            
addnav("Zurück");
            
addnav("Zum Eingang",$str_filename."?op=eingang");
        }

        
// Navs des Players bestimmen:
        
if ($show_nav)
        {
            
// player nicht gefangen, oder nicht im Sand!
            
$allnav=explode(";",$data[$_GET['y']][$_GET['x']]['nav']);
            
$int_count count($allnav);
            for (
$i=1$i<$int_count-1$i++)
            {
                switch (
$allnav[$i])
                {
                    case 
'n':
                        
$str_lnk addnav("W? (W) Norden",$str_filename."?x=".($_GET['x'])."&y=".($_GET['y']-1)."&g1x=".$_GET['g1x']."&g1y=".$_GET['g1y']."&sperre=".$_GET['sperre']);
                        
$goto[$_GET[x].($_GET[y]-1)]=true;
                        
$quickkeys['arrowup'] = "window.location='".$str_lnk."'";
                        break;
                    case 
'o':
                        
$str_lnk addnav("D? (D) Osten",$str_filename."?x=".($_GET['x']+1)."&y=".($_GET['y'])."&g1x=".$_GET['g1x']."&g1y=".$_GET['g1y']."&sperre=".$_GET['sperre']);
                        
$goto[($_GET[x]+1).$_GET[y]]=true;
                        
$quickkeys['arrowright'] = "window.location='".$str_lnk."'";
                        break;
                    case 
's':
                        
$str_lnk addnav("S? (S) Süden",$str_filename."?x=".($_GET['x'])."&y=".($_GET['y']+1)."&g1x=".$_GET['g1x']."&g1y=".$_GET['g1y']."&sperre=".$_GET['sperre']);
                        
$goto[$_GET[x].($_GET[y]+1)]=true;
                        
$quickkeys['arrowdown'] = "window.location='".$str_lnk."'";
                        break;
                    case 
'w':
                        
$str_lnk addnav("A? (A) Westen",$str_filename."?x=".($_GET['x']-1)."&y=".($_GET['y'])."&g1x=".$_GET['g1x']."&g1y=".$_GET['g1y']."&sperre=".$_GET['sperre']);
                        
$goto[($_GET[x]-1).$_GET[y]]=true;
                        
$quickkeys['arrowleft'] = "window.location='".$str_lnk."'";
                        break;
                }
            }
            if(
$access_control->su_check(access_control::SU_RIGHT_DEBUG))
            {
                
addnav('Cheaten',$str_filename.'?op=cheat');
                
addnav('Raus hier',$str_backlink);
            }
        }

        
// Player Position einzeichen, wenn nicht im Ziel
        
if ($_GET['x']!= $zx || $_GET['y']!=$zy$ausgabe.='<div style="position: absolute; top: '.($data[$_GET['y']][$_GET['x']]['ypos']).'px; left:'.($data[$_GET['y']][$_GET['x']]['xpos']).'px; z-index:2"><img src="./images/virgator/player.gif"></div>';

        
// Ziel einzeichnen
        
if ($zx==-1)
        {
            
// ganz links
            
$top_px $data[$zy][$zx+1]['ypos'];
            
$left_px $data[$zy][$zx+1]['xpos'] -48;
            
$z_index 1;
        }
        elseif (
$zx==6)
        {
            
// ganz rechts
            
$top_px $data[$zy][$zx-1]['ypos'];
            
$left_px $data[$zy][$zx-1]['xpos'] +48;
            
$z_index 1;
        }
        elseif (
$zy==-1)
        {
            
// ganz oben
            
$top_px $data[$zy+1][$zx]['ypos'] -48;
            
$left_px $data[$zy+1][$zx]['xpos'];
            
$z_index 10;
        }
        elseif (
$zy==6)
        {
            
// ganz unten
            
$top_px $data[$zy-1][$zx]['ypos'] +48;
            
$left_px $data[$zy-1][$zx]['xpos'];
            
$z_index 10;
        }
        
$ausgabe.='<div style="position: absolute; top: '.$top_px.'px; left:'.$left_px.'px; z-index:'.$z_index.'"><img src="./images/virgator/ziel.gif"></div>';
        
// Ziel eingezeichnet

        // Karte ausgeben:
        
for ($i=0$i<6$i++) //Wieso fangen die beiden Schleifen bei -1 an? Geändert auf 0 von Salator, Werbung dürfte nun nicht mehr im Bild sein.
        
{
            for (
$j=0$j<6$j++)
            {
                
$ausgabe.='
                <div style="position: absolute; top: 0'
.($data[$i][$j]['ypos']).'px; left: 0'.($data[$i][$j]['xpos']).'px; z-index:1">';

                if(((
$j==$_GET['x'] && ($i==$_GET['y']-|| $i==$_GET['y']+1)) || ($i==$_GET['y'] && ($j==$_GET['x']-|| $j==$_GET['x']+1))) && $goto[$j.$i] && $show_nav)
                {
                    
$ausgabe.='<a href='.$str_filename.'?x='.$j.'&y='.$i.'&g1x='.$_GET[g1x].'&g1y='.$_GET[g1y].'&sperre='.$_GET[sperre].'>';
                    if (
$j==$zx && $i==$zy)
                    {
                        
$ausgabe.='<div style="position: absolute; top: '.$top_px.'px; left:'.$left_px.'px; z-index:'.$z_index.'"><img border="0" src="./images/virgator/ziel.gif"></a></div>';
                    }
                    else 
$ausgabe.='<img border="0" src="./images/virgator/'.$data[$i][$j]['bild'].'"></a></div>';
                    
addnav("",$str_filename.'?x='.$j.'&y='.$i.'&g1x='.$_GET[g1x].'&g1y='.$_GET[g1y].'&sperre='.$_GET[sperre]);
                }
                elseif(
$data[$i][$j]['bild']!=''$ausgabe.='<img src="./images/virgator/'.$data[$i][$j]['bild'].'"></div>';
            }
        }
        
output($ausgabe,true);
        
output("</div></center><br>",true);
        
output($ausgabe2,true);
    }
    break;
}

page_footer();
?>
0.9.7(DS V3) Ithil-Edition