View Source: /source/pvp.php

Click here for the source, OR
Other files that you may wish to view the source of:

Source of: /source/pvp.php

<?
require_once "common.php";
$pvptime getsetting("pvptimeout",600);
$pvptimeout date("Y-m-d H:i:s",strtotime("-$pvptime seconds"));
page_header("PvP Combat!");
if (
$HTTP_GET_VARS[op]=="" && $HTTP_GET_VARS[act]!="attack"){
  
output("`4You head out to the fields, where you know some unwitting warriors are sleeping.`n`nYou have `^".$session[user][playerfights]."`4 PvP fights left for today.");
    
addnav("List Warriors","pvp.php?op=list");
  
addnav("Return to the Village","village.php");
}else if (
$HTTP_GET_VARS[op]=="list"){
  
$sql "SELECT name,alive,location,sex,level,laston,loggedin,login,pvpflag FROM accounts WHERE 
    (locked=0) AND 
    (level >= "
.($session[user][level]-1)." AND level <= ".($session[user][level]+2).") AND 
    (alive=1 AND location=0) AND 
    (laston < '"
.date("Y-m-d H:i:s",strtotime("-".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));
    
output("<table border=0 cellpadding=0><tr><td>Name</td><td>Level</td></tr>",true);
    for (
$i=0;$i<db_num_rows($result);$i++){
      
$row db_fetch_assoc($result);
        if(
$row[pvpflag]>$pvptimeout){
          
output("<tr class='".($i%2?"trlight":"trdark")."'><td>$row[name]</td><td>$row[level]</td><td>`i(Attacked too recently)`i</td></tr>",true);
        }else{
          
output("<tr class='".($i%2?"trlight":"trdark")."'><td><a href='pvp.php?act=attack&name=$row[login]'>$row[name]</a></td><td>$row[level]</td><td>&nbsp;</td></tr>",true);
            
addnav("","pvp.php?act=attack&name=$row[login]");
        }
    }
    
output("</table>",true);
    
addnav("List Warriors","pvp.php?op=list");
  
addnav("Return to the Village","village.php");
} else if (
$HTTP_GET_VARS[act] == "attack") {
  
$sql "SELECT name AS creaturename,
                   level AS creaturelevel,
                                 weapon AS creatureweapon,
                                 gold AS creaturegold,
                                 experience/10 AS creatureexp,
                                 maxhitpoints AS creaturehealth,
                                 attack AS creatureattack,
                                 defence AS creaturedefense,
                                 loggedin,
                                 location,
                                 laston,
                                 alive,
                                 acctid,
                                 pvpflag
                    FROM accounts
                    WHERE login=\"$HTTP_GET_VARS[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])>2){
          
output("`\$Error:`4 That user is out of your level range!");
        }elseif (
$row[pvpflag] > $pvptimeout){
            
output("`\$Oops:`4 That user is currently engaged by someone else, you'll have to wait your turn! $row[pvpflag] : $pvptimeout");
        }else{
          if (
strtotime($row[laston]) > strtotime("-".getsetting("LOGINTIMEOUT",900)." sec") && $row[loggedin]){
              
output("`\$Error:`4 That user is now online.");
            }else{
              if ((int)
$row[location]!=&& 0){
                  
output("`\$Error:`4 That user is not in a location that you can attack them.");
                }else{
                  if((int)
$row[alive]!=1){
                      
output("`\$Error:`4 That user is not alive.");
                    }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);
                            
$session[user][badguy]=createstring($row);
                            
$session[user][playerfights]--;
                        }else{
                          
output("`4Judging by how tired you are, you think you had best not engage in another player battle today.");
                        }
                    }
                }
            }
        }
    }else{
      
output("`\$Error:`4 That user was not found!  How'd you get here anyhow?");
    }
  if (
$battle){
      
    }else{
      
addnav("Return to the village","village.php");
    }
}
if (
$HTTP_GET_VARS[op]=="run"){
  
output("Your honor prevents you from running");
    
$HTTP_GET_VARS[op]="fight";
}
if (
$HTTP_GET_VARS[skill]!=""){
  
output("Your honor prevents you from using a special ability");
    
$HTTP_GET_VARS[skill]="";
}
if (
$HTTP_GET_VARS[op]=="fight" || $HTTP_GET_VARS[op]=="run"){
    
$battle=true;
}
if (
$battle){
  include(
"battle.php");
    if (
$victory){
        
//$badguy[creaturegold]=e_rand(0,$badguy[creaturegold]);
        
$expbonus round(($badguy[creatureexp]* (1+.25*($badguy[creaturelevel]-$session[user][level]))) - $badguy[creatureexp],0);
        
output("`b`&$badguy[creaturelose]`0`b`n"); 
        
output("`b`\$You have slain $badguy[creaturename]!`0`b`n");
        
output("`#You recieve `^$badguy[creaturegold]`# gold!`n");
        if (
$expbonus>0){
          
output("`#***Because of the difficult nature of this fight, you are awarded an additional `^$expbonus`# experience!`n");
        }else if (
$expbonus<0){
          
output("`#***Because of the simplistic nature of this fight, you are penalized `^$expbonus`# experience!`n");
        }
        
output("You receive `^".($badguy[creatureexp]+$expbonus)."`# experience!`n`0");
        
$session['user']['gold']+=$badguy['creaturegold'];
        
$session['user']['experience']+=($badguy['creatureexp']+$expbonus);
        if (
$badguy['location']){
          
addnews("`4".$session['user']['name']."`3 defeated `4{$badguy['creaturename']}`3 by sneaking in to their room in the inn!");
            
$killedin="`6The Inn";
        }else{
          
addnews("`4".$session['user']['name']."`3 defeated `4{$badguy['creaturename']}`3 in fair combat in the fields.");
            
$killedin="`@The Fields";
        }
        
$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
         
$mailmessage "`^".$session['user']['name']."`2 attacked you in $killedin`2 with %p `^".$session['user']['weapon']."`2, and defeated you!"
                
." `n`nYou noticed %o had a maximum hp of `^".$session['user']['maxhitpoints']."`2 and just before you died %o had `^".$session['user']['hitpoints']."`2 remaining."
                
." `n`nAs a result, you lost `\$5%`2 of your experience, and `^".$badguy[creaturegold]."`2 gold."
                
." `n`nDon't you think it's time for some revenge?";
         
$mailmessage str_replace("%p",($session['user']['sex']?"her":"his"),$mailmessage);
         
$mailmessage str_replace("%o",($session['user']['sex']?"she":"he"),$mailmessage);
         
systemmail($badguy['acctid'],"`2You were killed in $killedin`2",$mailmessage); 
// /\- Gunnar Kreitz

// \/- Eric Stevens
        //systemmail($badguy[acctid],"`2You were killed in $killedin`2","`^".$session[user][name]."`2 attacked you in $killedin`2, and defeated you!`n`nAs a result, you lost `\$5%`2 of your experience, and `^".$badguy[creaturegold]."`2 gold. `n`nDon't you think it's time for some revenge?"); 
// /\- Eric Stevens
        
$sql "UPDATE accounts SET alive=0, goldinbank=goldinbank-IF(gold<$badguy[creaturegold],gold-$badguy[creaturegold],0),gold=gold-$badguy[creaturegold], experience=experience*.95 WHERE acctid=".(int)$badguy[acctid]."";        
        
db_query($sql);
        
        
$HTTP_GET_VARS[op]="";
        
addnav("Return to the village","village.php");
        
$badguy=array();
    }else{
        if(
$defeat){
            
addnav("Daily 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]?"her":"him"),$taunt[taunt]);
            
$taunt str_replace("%o",($session[user][sex]?"she":"he"),$taunt);
            
$taunt str_replace("%p",($session[user][sex]?"her":"his"),$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]){
                
$killedin="`6The Inn";
            }else{
                
$killedin="`@The Fields";
            }
            
$badguy[acctid]=(int)$badguy[acctid];
            
$badguy[creaturegold]=(int)$badguy[creaturegold];
            
systemmail($badguy[acctid],"`2You were successful in $killedin`2","`^".$session[user][name]."`2 attacked you in $killedin`2, but you were victorious!`n`nAs a result, you recieved `^".round($session[user][experience]*0.1,0)."`2 experience and `^".$session[user][gold]."`2 gold!"); 
            
addnews("`%".$session[user][name]."`5 has been slain when ".($session[user][sex]?"she":"he")." attacked $badguy[creaturename] in $killedin`5.`n$taunt");
            
$sql "UPDATE accounts SET gold=gold+".(int)$session[user][gold].", experience=experience+".round($session[user][experience]*0.1,0)." WHERE acctid=".(int)$badguy[acctid]."";
            
db_query($sql);
            
$session[user][alive]=false;
            
$session[user][gold]=0;
            
$session[user][hitpoints]=0;
            
$session[user][experience]=round($session[user][experience]*.85,0);
            
$session[user][badguy]="";
            
output("`b`&You have been slain by `%$badguy[creaturename]`&!!!`n");
            
output("`4All gold on hand has been lost!`n");
            
output("`415% of experience has been lost!`n");
            
output("You may begin fighting again tomorrow.");
            
            
page_footer();
        }else{
          
fightnav();
        }
    }
}
page_footer();
?>