LoGD Standardrelease steht hier zum Download zur Verfügung!

Zeige Source: /pvp.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: /pvp.php

<?php

// 15082004

require_once "common.php";
$pvptime getsetting("pvptimeout",600);
$pvptimeout date("Y-m-d H:i:s",strtotime(date("c")."-$pvptime seconds"));
// $pvptimeout = date("Y-m-d H:i:s",strtotime("-$pvptime seconds"));
page_header("Spielerkampf!");
if (
$_GET[op]=="" && $_GET[act]!="attack"){
    
//if ($session['user']['age']<=5 && $session['user']['dragonkills']==0){
    //  output("`\$Warning!`^ Players are immune from Player vs Player (PvP) combat for their first 5 days in the game.  If you choose to attack another player, you will lose this immunity!`n`n");
    //}
    
checkday();
    
pvpwarning();
      
output("`4Du machst dich auf in die Felder, wo einige unwissende Krieger schlafen.`n`nDu hast noch `^".$session[user][playerfights]."`4 PvP Kämpfe übrig für heute.");
    
addnav("Krieger auflisten","pvp.php?op=list");
      
addnav("Zurück zum Dorf","village.php");
}else if (
$_GET[op]=="list"){
    
checkday();
    
pvpwarning();
    
$days getsetting("pvpimmunity"5);
    
$exp getsetting("pvpminexp"1500);
      
$sql "SELECT name,alive,location,sex,level,laston,loggedin,login,pvpflag FROM accounts WHERE 
    (locked=0) AND 
    (age > 
$days OR dragonkills > 0 OR pk > 0 OR experience > $exp) AND
    (level >= "
.($session[user][level]-1)." AND level <= ".($session[user][level]+2).") AND 
    (alive=1 AND location=0) AND
    (race>0 AND specialty>0) AND
    (dragonkills >= "
.($session[user][dragonkills]-5).") AND
    (laston < '"
.date("Y-m-d H:i:s",strtotime(date("c")."-".getsetting("LOGINTIMEOUT",900)." sec"))."' OR loggedin=0) AND
    (acctid <> "
.$session[user][acctid].")
    ORDER BY level DESC"
;
    
//echo ("<pre>$sql</pre>");
      
$result db_query($sql) or die(db_error(LINK));
    if (
$session['user']['pvpflag']=="5013-10-06 00:42:00"){
        
output("`n`&Du hast PvP-Immunität gekauft. Diese verfällt, wenn du jetzt angreifst!`0`n`n");
    }
    
output("<table border='0' cellpadding='3' cellspacing='0'><tr><td>Name</td><td>Level</td><td>Ops</td></tr>",true);
    for (
$i=0;$i<db_num_rows($result);$i++){
        
$row db_fetch_assoc($result);
          
$biolink="bio.php?char=".rawurlencode($row[login])."&ret=".urlencode($_SERVER['REQUEST_URI']);
          
addnav(""$biolink);
        if(
$row[pvpflag]>$pvptimeout){
              
output("<tr class='".($i%2?"trlight":"trdark")."'><td>$row[name]</td><td>$row[level]</td><td>[ <a href='$biolink'>Bio</a> | `iimmun`i ]</td></tr>",true);
        }else{
              
output("<tr class='".($i%2?"trlight":"trdark")."'><td>$row[name]</td><td>$row[level]</td><td>[ <a href='$biolink'>Bio</a> | <a href='pvp.php?act=attack&name=".rawurlencode($row[login])."'>Angriff</a> ]</td></tr>",true);
            
addnav("","pvp.php?act=attack&name=".rawurlencode($row[login]));
        }
    }
    
output("</table>",true);
    
addnav("Krieger auflisten","pvp.php?op=list");
      
addnav("Zurück zum Dorf","village.php");
       if (
getsetting("hasegg",0)>0){
        
$sql "SELECT name FROM accounts WHERE acctid = ".getsetting("hasegg",0);
        
$result db_query($sql) or die(db_error(LINK));
        
$row db_fetch_assoc($result);
        
output("`n`n$row[name] hat das goldene Ei!");
      }
} else if (
$_GET[act] == "attack") {
      
$sql "SELECT name AS creaturename,
     level AS creaturelevel,
     weapon AS creatureweapon,
     gold AS creaturegold,
     experience AS creatureexp,
     maxhitpoints AS creaturehealth,
     attack AS creatureattack,
     defence AS creaturedefense,
     bounty AS creaturebounty,
     loggedin,
     location,
     dragonkills,
     laston,
     alive,
     acctid,
     lastip,
     emailaddress,
     pvpflag,
     uniqueid
     FROM accounts
     WHERE login=\"
$_GET[name]\"";
    
$result db_query($sql) or die(db_error(LINK));
    if (
db_num_rows($result)>0){
        
$row db_fetch_assoc($result);
        if (
abs($session[user][level]-$row[creaturelevel])>&& $row[location]!=2){
              
output("`\$Fehler:`4 Dieser Spieler ist nicht in deinem Levelbereich!");
        }elseif (
$row[pvpflag] > $pvptimeout){
            
output("`\$Uuuups:`4 Dieser Krieger ist gerade anderweitig ... beschäftigt. Du wirst etwas auf deine Chance warten müssen! $row[pvpflag] : $pvptimeout");
        }elseif (
$session[user][dragonkills] >($row[dragonkills]+5) && $row[location]!=2){
            
output("`\$Mööööp:`4 Dieser Gegner ist unter deiner Würde!");
//        } elseif ($session['user']['lastip'] == $row['lastip'] || ($session[user][emailaddress]==$row[emailaddress] && $row[emailaddress])){
        
} elseif (ac_check($row)){
            
output("`\$`bNicht schummeln!!`b Du darfst deinen eigenen Charakter nicht angreifen!"); 
        }else{
              if (
strtotime($row[laston]) > strtotime(date("c")."-".getsetting("LOGINTIMEOUT",900)." sec") && $row[loggedin]){
//              if (strtotime($row[laston]) > strtotime("-".getsetting("LOGINTIMEOUT",900)." sec") && $row[loggedin]){
                  
output("`\$Fehler:`4 Dieser Krieger ist inzwischen online.");
            }else{
                  if ((int)
$row[location]!=&& && $row[location]!=2){
                      
output("`\$ Fehler:`4 Dieser Krieger befindet sich nicht an einem Ort, wo du ihn angreifen kannst.");
                }else{
                      if((int)
$row[alive]!=1){
                          
output("`\$Fehler:`4 Dieser Krieger lebt nicht.");
                    }else{
                          if (
$session[user][playerfights]>0){
                            
$sql "UPDATE accounts SET pvpflag=now() WHERE acctid=$row[acctid]";
                            
db_query($sql);
                            
$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['user']['buffbackup']="";
                            if (
$session['user']['pvpflag']=="5013-10-06 00:42:00"){
                                
$session['user']['pvpflag']="1986-10-06 00:42:00";
                                
output("`n`4`bDeine Immunität ist hiermit verfallen!`b`0`n");
                            }
                            
pvpwarning(true);
                            if (!
$session['user']['prefs']['nosounds']) output("<embed src=\"media/bigbong.wav\" width=10 height=10 autostart=true loop=false hidden=true volume=100>",true);
                        }else{
                              
output("`4Du bist zu müde, um heute einen weiteren Kampf mit einem Krieger zu riskieren.");
                        }
                    }
                }
            }
        }
    }else{
          
output("`\$Fehler:`4 Dieser Krieger wurde nicht gefunden. Darf ich fragen, wie du überhaupt hier her gekommen bist?");
    }
      if (
$battle){
      
    }else{
          
addnav("Zurück zum Dorf","village.php");
    }
}
if (
$_GET[op]=="run"){
      
output("Deine Ehre verbietet es dir wegzulaufen.");
    
$_GET[op]="fight";
}
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){
        
//$badguy[creaturegold]=e_rand(0,$badguy[creaturegold]);
        
$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");
        
// Bounty Check - Darrell Morrone
        
if ($badguy[creaturebounty]>0){
                
output("`#Außerdem erhältst du das Kopfgeld in Höhe von `^$badguy[creaturebounty]`# Gold!`n");
            
$session['user']['donation']+=1;
            
$session[user][reputation]+=2;
        }
            
// End Bounty Check - Darrell Morrone
        
if ($expbonus>0){
              
output("`#*** Durch die hohe Schwierigkeit des Kampfes erhältst du zusätzlich `^$expbonus`# Erfahrungspunkte!`n");
            
$session[user][reputation]++;
        }else if (
$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']));
            
$session[user][reputation]--;
            
$loss round(($exp+$expbonus) * $xplossfactor);
            
output("`#Davon werden dir `\$$loss `#Erfahrungspunkte abgezogen, weil dein Gegner $dksdiff Drachenkills weniger als du hat.");
        }
        
// end: xp-loss for killing lowdk players
        
$session['user']['gold']+=$badguy['creaturegold'];
        if (
$badguy['creaturegold']) {
            
debuglog("gained {$badguy['creaturegold']} gold for killing "$badguy['acctid']);
        }
        
// Add Bounty Gold - Darrell Morrone
        
$session['user']['gold']+=$badguy['creaturebounty'];
        if (
$badguy['creaturebounty']) {
            
//debuglog("gained {$badguy['creaturebounty']} gold bounty for killing ", $badguy['acctid']);
        
}
        
$session['user']['experience']+=($exp+$expbonus-$loss);
        if (
$badguy['location']==1){
              
addnews("`4".$session['user']['name']."`3 besiegt `4{$badguy['creaturename']}`3 brutal in einem Zimmer in der Kneipe!");
            
$killedin="`6der Kneipe";
            
$session[user][reputation]-=2;
        } else if (
$badguy['location']==2){
              
addnews("`4".$session['user']['name']."`3 besiegt `4{$badguy['creaturename']}`3 bei einem Einbruch ins Haus!");
            
$killedin="`6`2einem Haus";
            
$session[user][reputation]-=5;
        }else{
              
addnews("`4".$session['user']['name']."`3 besiegt `4{$badguy['creaturename']}`3 in einem fairen Kampf in den Feldern.");
            
$killedin="`@den Feldern";
            
$session[user][reputation]--;
        }
        
// Add Bounty Kill to the News - Darrell Mororne
        
if ($badguy['creaturebounty']>0){
                
addnews("`4".$session['user']['name']."`3 verdient `4{$badguy['creaturebounty']} Gold`3 für den Kopf von `4{$badguy['creaturename']}`3!");
            
$session[user][reputation]++;
        }
        
// Golden Egg - anpera
        
if ($badguy['acctid']==getsetting("hasegg",0)){
            
savesetting("hasegg",stripslashes($session[user][acctid]));
            
output("`n`^Du nimmst $badguy[creaturename] `^das goldene Ei ab!`0`n");
            
addnews("`^".$session['user']['name']."`^ nimmt {$badguy['creaturename']}`^ das goldene Ei ab!");
            
$session[user][reputation]+=2;
        }
        
$sql "SELECT gold FROM accounts WHERE acctid='".(int)$badguy['acctid']."'";
        
$result db_query($sql);
        
$row db_fetch_assoc($result);
        
$badguy[creaturegold]=((int)$row[gold]>(int)$badguy[creaturegold]?(int)$badguy[creaturegold]:(int)$row[gold]);
        
//$sql = "UPDATE accounts SET alive=0, killedin='$killedin', goldinbank=goldinbank-IF(gold<$badguy[creaturegold],gold-$badguy[creaturegold],0),gold=gold-$badguy[creaturegold], experience=experience*.95, slainby=\"".addslashes($session[user][name])."\" WHERE acctid=$badguy[acctid]";
        // \/- Gunnar Kreitz
        
$lostexp round($badguy['creatureexp']*getsetting("pvpdeflose",5)/100,0);
        
// start: xp-loss for killing lowdk players
        
$lostexp -= round($lostexp*$xplossfactor,0);
        
// end: xp-loss for killing lowdk players
         
$mailmessage "`^".$session['user']['name']."`2 hat dich mit %p `^".$session['user']['weapon']."`2 in $killedin`2 angegriffen und gewonnen!"
                
." `n`n%o hatte anfangs `^".$badguy['playerstarthp']."`2 Lebenspunkte und kurz bevor du gestorben bist, hatte %o noch `^".$session['user']['hitpoints']."`2 Lebenspunkte übrig."
                
." `n`nDu hast `\$".(round(getsetting("pvpdeflose",5)-$xplossfactor*getsetting("pvpdeflose",5)))."%`2 deiner Erfahrungspunkte (etwa $lostexp Punkte) und `^".$badguy[creaturegold]."`2 Gold verloren. Dein Angreifer kassierte ausserdem das Kopfgeld in Höhe von `^".$badguy[creaturebounty]." `2Gold ein."
                
." `n`nGlaubst du nicht auch, es ist Zeit dich zu rächen?";
         
$mailmessage str_replace("%p",($session['user']['sex']?"ihre(r/m)":"seine(r/m)"),$mailmessage);
         
$mailmessage str_replace("%o",($session['user']['sex']?"sie":"er"),$mailmessage);
         
systemmail($badguy['acctid'],"`2Du wurdest in $killedin`2 umgebracht",$mailmessage); 
        
// /\- Gunnar Kreitz

        
$sql "UPDATE accounts SET alive=0, bounty=0, goldinbank=goldinbank-IF(gold<$badguy[creaturegold],gold-$badguy[creaturegold],0),gold=gold-$badguy[creaturegold], experience=experience-$lostexp WHERE acctid=".(int)$badguy[acctid]."";        
        
db_query($sql);
        
        
$_GET[op]="";
        if (
$badguy['location']==1){
            
addnav("Zurück zur Kneipe","inn.php");
        } else if (
$badguy['location']==2){
            
addnav("Zurück zum Wohnviertel","houses.php?op=einbruch");
        } else {
            
addnav("Zurück zum Dorf","village.php");
        }
        
$badguy=array();
    }else{
        if(
$defeat){
            
addnav("Tägliche News","news.php");
            
$sql "SELECT taunt FROM taunts ORDER BY rand(".e_rand().") LIMIT 1";
            
$result db_query($sql) or die(db_error(LINK));
            
$taunt db_fetch_assoc($result);
            
$taunt str_replace("%s",($session[user][sex]?"sie":"ihn"),$taunt[taunt]);
            
$taunt str_replace("%o",($session[user][sex]?"sie":"er"),$taunt);
            
$taunt str_replace("%p",($session[user][sex]?"ihr(e/n)":"sein(e/n)"),$taunt);
            
$taunt str_replace("%x",($session[user][weapon]),$taunt);
            
$taunt str_replace("%X",$badguy[creatureweapon],$taunt);
            
$taunt str_replace("%W",$badguy[creaturename],$taunt);
            
$taunt str_replace("%w",$session[user][name],$taunt);
            if (
$badguy[location]==1){
                
$killedin="`6der Kneipe";
            } else if (
$badguy[location]==2){
                
$killedin="`2einem Haus";
            }else{
                
$killedin="`@den Feldern";
            }
            
$badguy[acctid]=(int)$badguy[acctid];
            
$badguy[creaturegold]=(int)$badguy[creaturegold];
            
systemmail($badguy[acctid],"`2Du warst in $killedin`2 erfolgreich! ","`^".$session[user][name]."`2 hat dich in $killedin`2 angegriffen, aber du hast gewonnen!`n`nDafür hast du `^".round($session[user][experience]*getsetting("pvpdefgain",10)/100,0)."`2 Erfahrungspunkte und `^".$session[user][gold]."`2 Gold erhalten!"); 
            
addnews("`%".$session[user][name]."`5 wurde bei ".($session[user][sex]?"ihrem":"seinem")."`5 Angriff auf`% $badguy[creaturename] `5  in $killedin `5getötet.`n$taunt");
            
$sql "UPDATE accounts SET gold=gold+".(int)$session[user][gold].", experience=experience+".round($session[user][experience]*getsetting("pvpdefgain",10)/100,0)." WHERE acctid=".(int)$badguy[acctid]."";
            
db_query($sql);
            
$session[user][alive]=false;
            
debuglog("lost {$session['user']['gold']} gold being slain by "$badguy['acctid']);
            
$session[user][gold]=0;
            
$session[user][hitpoints]=0;
            
$session[user][experience]=round($session[user][experience]*(100-getsetting("pvpattlose",15))/100,0);
            
$session[user][badguy]="";
            
output("`b`&Du wurdest von `%$badguy[creaturename] `&besiegt!!!`n");
            
output("`4Alles Gold, das du bei dir hattest, hast du verloren!`n");
            
output("`4".getsetting("pvpattlose",15)."%  deiner Erfahrung ging verloren!`n");
            
output("Du kannst morgen wieder kämpfen.");
            
$session[user][reputation]--;
            
page_footer();
        }else{
              
fightnav(false,false);
        }
    }
}
page_footer();
?>