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!


./vacation.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:
<?
/* Urlaubsmodus
* Verhindert das Löschen von accounts nach der in expireoldacct voreingestellten Zeit
* Accounts werden nach der in expirevacationacct einstellbaren Zeit gelöscht (Default 1 Jahr)
* Während der Abwesenheit ist man nicht angreifbar. Man muß jedoch eine Mindestzeit abwesend sein.
* author: Salator

Zu ändernde Dateien:

user.lib.php:
bei den user_loc Konstanten einfügen:
    define('USER_LOC_VACATION',99);

in der Funktion user_show_list bei der Orts-Anzeige einfügen:
    if ($row['location']==USER_LOC_VACATION)
    {
        $str_output .= '`3In Sibirien`0';
    }

-----------------

settings.lib.php:
bei Abgelaufene Accounts: Warnungen verschicken ersetzen:
    $vacation = getsetting('expirevacationacct',365)-getsetting('expire_sendmail_before',5);
    $old = getsetting('expireoldacct',45)-getsetting('expire_sendmail_before',5);
    $new = getsetting('expirenewacct',10);
    $trash = getsetting('expiretrashacct',1);

    $sql = 'SELECT acctid,emailaddress,login FROM accounts WHERE 1=0 '
    .($vacation>0?"OR (laston < \"".date('Y-m-d H:i:s',time()-($vacation*86400))."\")\n":"")
    .($old>0?"OR (laston < \"".date('Y-m-d H:i:s',time()-($old*86400))."\" AND location !=".USER_LOC_VACATION.")\n":"")
    ." AND (emailaddress!='' AND activated!=".USER_ACTIVATED_SENTNOTICE." AND activated!=".USER_ACTIVATED_MUTE.")";

bei Inaktive Accounts löschen ersetzen:
    $vacation+=getsetting('expire_sendmail_before',5);
    $old+=getsetting('expire_sendmail_before',5);

    $sql = 'SELECT acctid,login FROM accounts WHERE superuser=0 AND (1=0 '
    .($vacation>0?"OR (laston < \"".date('Y-m-d H:i:s',time()-($vacation*86400))."\")\n":"")
    .($old>0?"OR (laston < \"".date('Y-m-d H:i:s',time()-($old*86400))."\" AND location !=".USER_LOC_VACATION.")\n":"")
    .($new>0?"OR (laston < \"".date('Y-m-d H:i:s',time()-($new*86400))."\" AND level=1 AND dragonkills=0)\n":'')
    .($trash>0?"OR (laston < \"".date('Y-m-d H:i:s',time()-(($trash+1)*86400))."\" AND level=1 AND experience < 10 AND dragonkills=0)\n":'')
    .')';

-----------------

login.php:
bei den redirects einfügen:
    case USER_LOC_VACATION: // war im Urlaubsmodus
        redirect("vacation.php?op=return");
    break;

-----------------

su_configuration.php:
an passender Stelle die Einstellfelder für expirevacationoldacct und vacation_ban_time anlegen

-----------------

hof.php:
sql-Befehl bei op==abwesend ändern:
    $sql = 'SELECT accounts.acctid,accounts.login,accounts.name, DATEDIFF(NOW(),laston) AS data1,dragonkills AS data2 FROM accounts WHERE locked=0 AND DATEDIFF(NOW(),laston) > 3 AND dragonkills>0 AND location !='.USER_LOC_VACATION.' ORDER BY data1 '.$order.', dragonkills '.$order.', acctid '.$order.' LIMIT '.$limit;

*/
require_once "common.php";

$vacation=getsetting('expirevacationacct',365);
$bantime=getsetting('vacation_ban_time',7);

page_header('Auf Reisen');
$str_out='`c`b`)Auf einer langen Reise`0`b`c`n';

switch (
$_GET['op'])
{
    case 
'check':
    { 
//Bedingungen prüfen
        
$session['user']['specialmisc']='';
        
$str_out.='`)Du erklärst dem Wächter dass du wirklich vor hast, das Dorf für längere Zeit zu verlassen. Gerade willst du deinen Weg fortsetzen, als dich der Wächter daran hindert: `s`i"Stopp! Führt Ihr Dinge mit, welche das Land nicht verlassen dürfen?"`i`)`n';
        if (
$session['user']['acctid']==getsetting('hasegg',0))
        {
            
$invent.='Ein goldenes Ei`n';
        }
        
$res=item_list_get('tpl_id IN("idolrnds", "idolgnie", "idolfish", "idolkmpf", "idoldead", "mapt") AND owner='.$session['user']['acctid']);
        if(
db_num_rows($res)>0)
        {
            while (
$row=db_fetch_assoc($res))
            {
                
$invent.=$row['name'].'`0`n';
                
$session['user']['specialmisc'].=','.$row['id'];
            }
        }

        if(
$invent)
        {
            
$str_out.='Du breitest deine Habseligkeiten aus und darin findet sich`n'.$invent.'
            `n`s`i"So legt diese Dinge hier in den Sack!"`i`) fordert dich der Wächter auf.'
;
            
addnav('Ja wenns denn sein muss...','vacation.php?op=removeitems');
        }
        else
        {
            
$str_out.='`0`i"Nein, ich habe nichts dergleichen."`i`) antwortest du.
            `n`n`qDies ist deine letzte Chance, umzukehren! Wenn du jetzt weiter klickst,wirst du dich für `$'
.$bantime.' Realtage nicht mehr einloggen können!`q';
            
addnav('Auf Wiedersehen!','vacation.php?op=goodbye');

        }
        
addnav('Nö, zurück','village.php');
        break;
    }

    case 
'removeitems':
    { 
//Items freigeben
        
if ($session['user']['acctid']==getsetting('hasegg',0)) {
            
savesetting('hasegg',0);
            
$sql 'UPDATE items SET owner=0 WHERE tpl_id="goldenegg"';
            
db_query($sql);
        }
        if(
$session['user']['specialmisc']>'')
        {
            
item_delete('id IN (0'.$session['user']['specialmisc'].')');
            
$session['user']['specialmisc']='';
        }
        
$str_out.='`)Schweren Herzens legst du die Dinge in den Sack. Vorschrift ist nunmal Vorschrift...
        `n`n`qDies ist nun deine letzte Chance, umzukehren! Wenn du jetzt weiter klickstwirst du dich für `$'
.$bantime.' Realtage nicht mehr einloggen können!`q';
        
addnav('Auf Wiedersehen!','vacation.php?op=goodbye');
        
addnav('Nö, zurück','village.php');
        break;
    }

    case 
'goodbye':
    { 
//auf Abwesend setzen, Selbstbann
        
$str_out.='`)Der Torwächter wünscht dir eine gute Reise und du machst dich, ein Liedchen pfeifend, auf den Weg in dein Abenteuer.';
        
$session['user']['location'] = USER_LOC_VACATION;
        
setban(0,'Automatischer Systembann: User hat sich in den Urlaubsmodus versetzt.',date('Y-m-d H:i:s',time()+($bantime*86400)),false,false,false,$session['user']['login']);
        if(isset(
$session['error']))
        { 
//irgendwas ist schiefgelaufen
            
$str_out.='`n`n`$Fehler: '.$session['error'];
            
addnav('D?Zum Dorf','village.php');
        }
        
$rowe=user_get_aei('incommunity');
        if( 
$rowe['incommunity'] > )
        { 
//setban bannt auch aus Forum, gleich wieder rückgängig machen
            
require_once(LIB_PATH.'communityinterface.lib.php');
            
ci_banuser($rowe['incommunity'], false);
        }
        
addnav('Startseite','login.php?op=logout&loc='.USER_LOC_VACATION,true);
        break;
    }

    case 
'return':
    { 
//Rückkehr, irgendwas zu tun hier?
        
$rowe=user_get_aei('incommunity');
        if( 
$rowe['incommunity'] > )
        { 
//die bereits im Forum gebannten User wieder reinlassen. Kann irgendwann später entfallen.
            
require_once(LIB_PATH.'communityinterface.lib.php');
            
ci_banuser($rowe['incommunity'], false);
        }
        
$str_out.='`)Nach deiner schier endlos langen Reise erklimmst du einen kleinen Hügel und kannst von dort aus in der Ferne die vielen kleinen Dächer
        und rauchenden Schornsteine deines Heimatdorfes '
.getsetting('townname','Atrahor').' erkennen.`n
        Dein Herz macht einen Sprung und deine Gedanken füllen sich mit den süßen Erinnerungen an all deine Freunde und Verwandte.
        Du gehst schnellen Schrittes weiter durch den dir heimatlich bekannt vorkommenden Wald und kannst schon bald das Dorftor von '
.getsetting('townname','Atrahor').' erblicken.
        Wie immer herrscht ein geschäftiges Treiben und die Luft ist erfüllt von vielen wohlbekannten Gerüchen. Ja, hier bist Du zu Hause. Freudig läufst du auf den Torwächter zu.
        Dieser scheint dich zunächst gar nicht zu erkennen, doch schließlich erhellt sich seine Miene und er erinnert sich. `s`i"Willkommen zurück, '
.$session['user']['login'].'`s!"`i`)
        `nDu durchquerst das Tor in freudiger Erwartung auf dein Heim. Was mag sich wohl in deiner Abwesenheit alles verändert haben...'
;
        
addnav('D?Auf ins Dorf!','village.php');
        break;
    }

    default:
    { 
//Info und Einstiegspunkt
        
$str_out.='`)Wiedereinmal gehst du durch das Dorftor und wiedereinmal fragt dich der Wächter `s`i"Wohin des Wegs?"`i`) Doch heute antwortest du ihm nicht mit dem üblichen `0"In den Wald"`) sondern sagst `0"Ich werde für einige Zeit auf Wanderschaft gehen."`)
        `n`s`i"Ah, '
.$session['user']['name'].'`s, Ihr wollt also verreisen? Wisst Ihr, für Reisen die nicht länger als '.getsetting('expireoldacct',50).' Tage dauern müsst Ihr Euch nicht bei mir abmelden. Nur wenn Eure Reise länger dauert solltet Ihr mir das mitteilen. Eine solch lange Abwesenheit ist nämlich auch mit Einschränkungen verbunden."`i`) Er deutet auf die Liste mit den Bedingungen:`0
        `n`n<ul><li> Einige `$Gegenstände`0 (Eier, Schatzkarten, Idole) dürfen `$nicht ausgeführt`0 werden!
        `n(Diese Besitztümer werden zu Gemeinschaftseigentum erklärt)
        `n`n<li> Du wirst '
.getsetting('townname','Atrahor').' `$bis zum '.date('d. m. Y',time()+($bantime*86400)).' nicht betreten`0 können!
        `n(Du bekommst mit diesem Char einen Bann und kannst dich nicht einloggen, bist aber im Ausgleich unangreifbar!)
        `n`n<li> Du giltst nicht als Verschollen und dir wird kein Grabstein gesetzt, sofern du `$innerhalb von '
.$vacation.' Tagen`0 (bis '.date('d. m. Y',time()+($vacation*86400)).') ins Dorf `$zurückkehrst`0.
        `n(Das Verfallsdatum für Accounts wird für diese Zeit ausgesetzt, du fällst also nicht der automatischen Löschung zum Opfer!)
        </ul>
        `n`n`)Nun liegt es an dir: Willst du dich für längere Zeit abmelden?'
;
        
addnav('Ja, Reise antreten','vacation.php?op=check');
        
addnav('Nö, zurück','village.php');
    }
}

output($str_out);
if(
access_control::is_superuser())
{
    
addnav('!?Notausgang!','dorftor.php');
}
page_footer();
?>
0.9.7(DS V3) Ithil-Edition