Quellcode der Dragonslayer-Edition
Quellcode der Dragonslayer-Edition : 0.9.7(Dragonslayer Edition V/3)


Anmerkung: Dies ist nur ein Auszug aus dem Source. Ein etwas älteres, abgespecktes Release ist für jeden Interessenten frei zum Download verfügbar. Allerdings würden wir uns über eine Anfrage freuen, in der die Serveradresse bzw. sonstiger Verwendungszweck aufgeführt sind, da wir gern wissen würden wohin unsere Version geht. 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!


./bullfight.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:
<?php

// 08082006
/*
Stierkampf für brave Bürger
by Salator (salator [-[at]-] gmx.de)
basierend auf pvp.php und trophy.php
Aktivierung: in pvparena:    addnav('Stierkampf-Stadion','bullfight.php');
*/
require_once "common.php";
require_once(
LIB_PATH.'dg_funcs.lib.php');

$pvptime getsetting("pvptimeout",600);
$pvptimeout date("Y-m-d H:i:s",time()-$pvptime);
$crimedate=date("Y-m-d H:i:s",time()-(21*86400));

page_header('Stierkampf!');
if (
$_GET['op']=='' && $_GET['act']!='attack')
{
    
checkday();
    
output('`4Du machst dich auf ins Stadion, wo einige wilde Stiere warten.`n`n');
    
$row=user_get_aei('last_crime');
    if (
$row['last_crime'] < $crimedate)
//    if ($session['user']['daysinjail']<=$session['user']['dragonkills']/10)
    
{
        if (
$session['user']['age'] > getsetting('maxagepvp',50) )
        {
            
output('`nDu spürst allerdings instinktiv, dass es wohl besser wäre, erst eine richtige Heldentat zu vollbringen.');
        }
        else
        {
            
output('Du hast noch Kraft für `^'.$session['user']['playerfights'].'`4 Stierkämpfe.');
            
addnav('Stiere auflisten','bullfight.php?op=list');
        }
    }
    else
    {
        
output('Stierkampf ist etwas für ehrenwerte Bürger, du mußt dir eingestehen in den letzten Wochen nicht ehrenwert gelebt zu haben.');
    }
    
addnav('Zurück');
    
addnav('Zum Bahnhofsplatz','village.php');
    
addnav('Zum Stadion','pvparena.php');
}
else if (
$_GET['op']=="list")
{
    
checkday();
    
$days getsetting('pvpimmunity'5);
    
$exp getsetting('pvpminexp'1500);
    
$dk round($session['user']['dragonkills']*0.9);
    if (
$dk>130$dk=130//Chance für alte Spieler
    
if ($dk==0$dk=1//Neulingsflut unterbinden
    
    
$sql 'SELECT name,alive,location,profession,sex,level,laston,loggedin,login,pvpflag,acctid,dragonkills FROM accounts WHERE
    (locked=0) AND
    (dragonkills >= '
.$dk.') AND
    (level >= '
.($session['user']['level']-1).' AND level <= '.($session['user']['level']+2).') AND
    (alive=0 AND location='
.USER_LOC_FIELDS.') AND
    (race!=\'\' AND specialty>0) AND
    (pvpflag<>\'5013-10-06 00:42:00\' AND pvpflag<>\'1986-10-06 00:42:00\') AND
    !('
.user_get_online(0,0,true).') AND
    (hitpoints = 0)
    ORDER BY level DESC LIMIT 30'
;

/*test
    $sql = "SELECT accounts.name,alive,location,profession,sex,level,laston,loggedin,login,pvpflag,acctid,dragonkills FROM accounts  WHERE
    locked=0 AND
    (age > $days OR dragonkills > 0 OR pk > 0 OR experience > $exp) AND
    (race!='' AND specialty>0) AND
    loggedin=0 AND
    (acctid <> ".$session['user']['acctid'].")
    ORDER BY level DESC";
//*/
    
$result db_query($sql);
    
    
output("`c<table bgcolor='#999999' border='0' cellpadding='3' cellspacing='0'><tr class='trhead'><td width='200'>Name</td><td width='45'>Level</td><td width='45'>Alter</td><td>Ops</td></tr>");
    
    
$count db_num_rows($result);
    
    if (
$count == 0)
    {
        
output('<tr><td colspan="4" class="trlight">`iLeider ist gerade kein Stier verfügbar, mit dem ein fairer Kampf möglich wäre!`0`i</td></tr>');
    }
    
    for (
$i=0$i<$count$i++)
    {
        
$row db_fetch_assoc($result);
        
$str_out.='<tr class="'.($i%2?'trlight':'trdark').'"><td>'.ucwords(strtolower(strrev($row['login']))).'</td><td>'.$row['level'].'</td><td>'.$row['dragonkills'].'</td><td>[ ';
        if (
$row['pvpflag']>$pvptimeout)
        {
            
$str_out.='`ierschöpft`i ]</td></tr>';
        }
        else
        {
                
$str_out.='<a href="bullfight.php?act=attack&id='.$row['acctid'].'">Kampf</a> ]</td></tr>';
                
addnav('','bullfight.php?act=attack&id='.$row['acctid']);
        }
    }
    
output($str_out.'</table>`c');
    
addnav('Stiere auflisten','bullfight.php?op=list');
    
addnav('Zum Bahnhofsplatz','village.php');
    
addnav('Zum Stadion','pvparena.php');
    
}
else if (
$_GET['act'] == 'attack')
{
    
$sql 'SELECT login AS creaturename,
    level AS creaturelevel,
    gold AS creaturegold,
    experience AS creatureexp,
    maxhitpoints AS creaturehealth,
    attack AS creatureattack,
    defence AS creaturedefense,
    pvpflag,
    dragonkills,
    acctid
    FROM accounts
    WHERE acctid='
.$_GET['id'];
    
    
$result db_query($sql);
    if (
db_num_rows($result)>0)
    {
        
$row db_fetch_assoc($result);
        
$row['creaturename']='Stier '.ucwords(strtolower(strrev($row['creaturename'])));
        
$row['creatureweapon']='Hörner';
        
$row['creaturehealth']=e_rand($row['creaturehealth']*0.8,$row['creaturehealth']*1.1);
        if (
$row['creaturegold']==|| $row['creaturegold']>1000)
        {
            
$row['creaturegold']=e_rand($row['creaturelevel']*10,$row['creaturelevel']*50);
        }
        if (
$session['user']['playerfights']>0)
        {
            
user_update(array('pvpflag'=>array('sql'=>true,'value'=>'now()')),$row['acctid']);
            
            
$battle=true;
            
$row['pvp']=1;
            
$row['creatureexp'] = round($row['creatureexp'],0);
            
$row['playerstarthp'] = $session['user']['hitpoints'];
            
$session['user']['badguy']=createstring($row);
            
$session['user']['playerfights']--;
            
$session['buffbackup']='';
            
$session['user']['buffbackup']='';
            if (!
$session['user']['prefs']['nosounds'])
            {
                
output('<embed src="media/bigbong.wav" width=10 height=10 autostart=true loop=false hidden=true volume=100>');
            }
        }
        else
        {
            
output('`4Du bist zu müde, um heute einen weiteren Stierkampf zu riskieren.');
        }
    }
    if (!
$battle)
    {
        
addnav('Zum Bahnhofsplatz','village.php');
        
addnav('Zum Stadion','pvparena.php');
    }
}
if (
$_GET['op']=='take'//Trophäe mitnehmen
{
    
$name=rawurldecode($_GET['who']);
    
$dks=$_GET['dks'];
    
$id=$_GET['id'];

    
$value=($dks+1)*25;
    if(
$_GET['set']==1)
    {
        
output('`3Du machst dich an deine blutige Arbeit......`nDer Kopf von '.$name.'`3 verschwindet kurze Zeit später in deinem Rucksack.`n`n');
    }
    else
    {
        
output('`3Du zückst deine Mitgliedskarte der Jägerhütte. Während man dir 3 Punkte streicht macht sich ein geübter Präparator an seine blutige Arbeit...`nDer Kopf von '.$name.'`3 verschwindet kurze Zeit später in deinem Rucksack.`n`n');
        
$session['user']['donationspent']+=3;
        
debuglog('gab 3 DP für den Kopf von '.$name);
    }

    
$item['tpl_name'] = addslashes('Der Kopf von '.$name);
    
$item['tpl_gold'] = $value;
    
$item['tpl_value1'] = $dks;
    
$item['tpl_value2'] = 7;
    
$item['tpl_hvalue'] = $id;
    
$item['tpl_description'] = addslashes('Der Kopf von '.$name.'`0. Erworben in einem fairen Kampf.');

    
item_add($session['user']['acctid'],'trph',$item,true);

    
addnav('Zum Bahnhofsplatz','village.php');
    
addnav('Zum Stadion','pvparena.php');

}
if (
$_GET['op']=='run')
{
    
output('Deine Ehre verbietet es dir, wegzulaufen.');
    
$battle=true;
}
if (
$_GET['skill']!='')
{
    
output('Deine Ehre verbietet es dir, deine besonderen Fähigkeiten einzusetzen.');
    
$_GET['skill']='';
}
if (
$_GET['op']=='fight' || $_GET['op']=='run')
{
    
$battle=true;
}
if (
$battle)
{
    include(
'battle.php');
    if (
$victory)
    {
        
$exp round(getsetting('pvpattgain',10)*$badguy['creatureexp']/100,0);
        
$expbonus round(($exp * (1+.1*($badguy['creaturelevel']-$session['user']['level']))) - $exp,0);
        
output('`b`&'.$badguy['creaturelose'].'`0`b`n');
        
output('`b`$Du hast '.$badguy['creaturename'].' besiegt!`0`b`n');
        
output('`#Du erbeutest `^'.$badguy['creaturegold'].'`# Gold!`n');
        
$session['user']['gold']+=$badguy['creaturegold'];

        if (
$expbonus>0)
        {
            
output('`#*** Durch die hohe Schwierigkeit des Kampfes erhältst du zusätzlich `^'.$expbonus.'`# Erfahrungspunkte!`n');
            
$session['user']['reputation']++;
        }
        elseif (
$expbonus<0)
        {
            
output('`#*** Weil dieser Kampf so leicht war, verlierst du `^'.abs($expbonus).'`# Erfahrungspunkte!`n');
            
$session['user']['reputation']--;
        }
        
output('Du bekommst insgesamt `^'.($exp+$expbonus).'`# Erfahrungspunkte!`n`0');
        
// start: xp-loss for killing lowdk players
        
$xplossfactor 0;
        
$mindks getsetting('pvpmindkxploss',10);
        
$dksdiff $session['user']['dragonkills'] - $badguy['dragonkills'];
        if (
$dksdiff>$mindks)
        {
            
$xplossfactor - (($badguy['dragonkills'] + 3) / ($session['user']['dragonkills']));
            
$loss round(($exp+$expbonus) * $xplossfactor);
            
output('`#Davon werden dir `$'.abs($loss).' `#Erfahrungspunkte abgezogen, weil der Stier so jung war.');
        }
        
// end: xp-loss for killing lowdk players
        
$session['user']['experience']+=($exp+$expbonus-$loss);
        
        
addnews('`@'.$session['user']['name'].'`3 gewann einen Stierkampf gegen `4'.$badguy['creaturename'].'`3.');
        
$sql='UPDATE account_extra_info SET bullfightwins=bullfightwins+1 WHERE acctid='.$session['user']['acctid'];
        
db_query($sql);
        
        
addnav('Zum Bahnhofsplatz','village.php');

        
//Trophäensammler, mit Präparierset kostenlos, sonst3DP
        
$id=$badguy['acctid'];
        if ((
$session['user']['donation']-$session['user']['donationspent'])>=&& ( item_count("owner=".$session['user']['acctid']." AND tpl_id='trph' AND value2='7' AND name LIKE '%".addslashes($badguy['creaturename'])."%'") == 0)) //Suche nach Name ist beabsichtigt
        
{
            
output('`n`n`^Du überlegst dir, ob du dir nicht vielleicht ein Andenken an diesen Kampf für deinen Schaukasten mitnehmen solltest...');
            
addnav('Trophäe');
            
$who=rawurlencode($badguy['creaturename']);
            
$rowextra user_get_aei('trophyhunter');
            if (
$rowextra['trophyhunter']==1)
            {
                
addnav('Kopf mitnehmen','bullfight.php?op=take&set=1&who='.$who.'&id='.$id.'&dks='.$badguy['dragonkills']);
            }
            else
            {
                
output('`n`$Die Haltbarmachung kostet dich 3 Donationpoints!');
                
addnav('Kopf mitnehmen `$(3DP)','bullfight.php?op=take&who='.$who.'&id='.$id.'&dks='.$badguy['dragonkills']);
            }
        }

        
$badguy=array();
        
    }
    else if (
$defeat)
    {
        
addnav('Zum Bahnhofsplatz','village.php');
        
addnav('N?Tägliche News','news.php');
        
        
addnews('`%'.$session['user']['name'].'`5 hat einen Stierkampf gegen`% '.$badguy['creaturename'].' `5  verloren.`n'.get_taunt(false));
    
        
$session['user']['gold']=0;
        
$session['user']['hitpoints']=1;
        
$session['user']['experience']=round($session['user']['experience']*(100-getsetting('pvpattlose',15))/100,0);
        
$session['user']['badguy']="";
        
$session['user']['playerfights']=0;
        
$session['user']['turns']=0;
        
        
output('`b`&Du wurdest von `%'.$badguy['creaturename'].' `&besiegt!!!
        `n`4Alles Gold, das du bei dir hattest, hast du verloren!
        `n'
.getsetting('pvpattlose',15).'% deiner Erfahrung ging verloren!
        `nDu bist zu schwach um heute noch zu kämpfen.'
);
        
$session['user']['reputation']--;
        
$badguy=array();
    }
    else
    {
        
fightnav(false,false);
    }
}
page_footer();
?>
0.9.7(Dragonslayer Edition V/3)