LoGD Standardrelease steht hier zum Download zur Verfügung!
<?php
// 12092004
require_once 'dbwrapper.php';
require_once 'str.functions.php';
//require_once "anticheat.php";
$pagestarttime = getmicrotime();
$nestedtags=array();
$output="";
function pvpwarning($dokill=false) {
global $session;
$days = getsetting("pvpimmunity", 5);
$exp = getsetting("pvpminexp", 1500);
if ($session['user']['age'] <= $days &&
$session['user']['dragonkills'] == 0 &&
$session['user']['user']['pk'] == 0 &&
$session['user']['experience'] <= $exp) {
if ($dokill) {
output("`\$Warnung!`^ Da du selbst noch vor PvP geschützt warst, aber jetzt einen anderen Spieler angreifst, hast du deine Immunität verloren!!`n`n");
$session['user']['pk'] = 1;
} else {
output("`\$Warnung!`^ Innerhalb der ersten $days Tage in dieser Welt, oder bis sie $exp Erfahrungspunkte gesammelt haben, sind alle Spieler vor PvP-Angriffen geschützt. Wenn du einen anderen Spieler angreifst, verfällt diese Immunität für dich!`n`n");
}
}
}
function rawoutput($indata) {
global $output;
$output .= $indata . "\n";
}
function output($indata,$priv=false){
global $nestedtags,$output;
$data = translate($indata);
// Aprilscherz deaktiviert ;)
// if (date("m-d")=="04-01"){
// $out = appoencode($data,$priv);
// if ($priv==false) $out = borkalize($out);
// $output.=$out;
// }else{
$output.=appoencode($data,$priv);
// }
$output.="\n";
return 0;
}
function compress_out ($input) {
//Based on old YaBBSE code (c)
//Open-Source Project by Zef Hemel (zef@zefnet.com <mailto:zef@zefnet.com>)
//Copyright (c) 2001-2002 The YaBB Development Team
if((function_exists("gzcompress")) && (function_exists("crc32"))){
if(strpos_c(" " . $_SERVER['HTTP_ACCEPT_ENCODING'], "x-gzip")){
$encode = "x-gzip";
}
elseif(strpos_c(" " . $_SERVER['HTTP_ACCEPT_ENCODING'], "gzip")){
$encode = "gzip";
}
if (isset($encode)){
header("Content-Encoding: $encode");
$encode_size = strlen_c($input);
$encode_crc = crc32($input);
$out = "\x1f\x8b\x08\x00\x00\x00\x00\x00";
$out .= substr_c(gzcompress($input, 1), 0, -4);
$out .= pack("V", $encode_crc);
$out .= pack("V", $encode_size);
}
else{
$out = $input;
}
}
else{
$out = $input;
}
return ($out);
}
function safeescape($input){
return preg_replace('/([^\\\\])(["\'])/s',"\\1\\\\\\2",$input);
}
//by Chaosmaker
function petitionmail($subject,$body,$petition,$from,$seen=0,$to=0,$messageid=0) {
$subject = safeescape($subject);
$subject=str_replace_c("\n","",$subject);
$subject=str_replace_c("`n","",$subject);
$body = safeescape($body);
$sql = "INSERT INTO petitionmail (petitionid,messageid,msgfrom,msgto,subject,body,sent,seen) VALUES ('".(int)$petition."','".(int)$messageid."','".(int)$from."','".(int)$to."','$subject','$body',now(),'$seen')";
db_query($sql);
$sql = 'UPDATE petitions SET lastact=NOW() WHERE petitionid="'.(int)$petition.'"';
db_query($sql);
}
//end petitionmail
function systemmail($to,$subject,$body,$from=0,$noemail=false){
$subject = safeescape($subject);
$subject=str_replace_c("\n","",$subject);
$subject=str_replace_c("`n","",$subject);
$body = safeescape($body);
//echo $subject."<br>".$body;
$sql = "SELECT prefs,emailaddress FROM accounts WHERE acctid='$to'";
$result = db_query($sql);
$row = db_fetch_assoc($result);
db_free_result($result);
$prefs = unserialize($row['prefs']);
if ($prefs['dirtyemail']){
//output("Not cleaning: $prefs[dirtyemail]");
}else{
//output("Cleaning: $prefs[dirtyemail]");
$subject=soap($subject);
$body=soap($body);
}
$sql = "INSERT INTO mail (msgfrom,msgto,subject,body,sent) VALUES ('".(int)$from."','".(int)$to."','$subject','$body',now())";
db_query($sql);
$email=false;
if ($prefs['emailonmail'] && $from>0){
$email=true;
}elseif($prefs[emailonmail] && $from==0 && $prefs[systemmail]){
$email=true;
}
if (!is_email($row['emailaddress'])) $email=false;
if ($email && !$noemail){
$sql = "SELECT name FROM accounts WHERE acctid='$from'";
$result = db_query($sql);
$row1=db_fetch_assoc($result);
db_free_result($result);
if ($row1['name']!="") $fromline="From: ".preg_replace("'[`].'","",$row1['name'])."\n";
// We've inserted it into the database, so.. strip out any formatting
// codes from the actual email we send out... they make things
// unreadable
$body = preg_replace("'[`]n'", "\n", $body);
$body = preg_replace("'[`].'", "", $body);
mail($row['emailaddress'],"Neue LoGD Mail","Du hast eine neue Nachricht von LoGD @ http://".$_SERVER[HTTP_HOST].dirname($_SERVER[SCRIPT_NAME])." empfangen.\n\n$fromline"
."Betreff: ".preg_replace("'[`].'","",stripslashes($subject))."\n"
."Body: ".stripslashes($body)."\n"
."\nDu kannst diese Meldungen in deinen Einstellungen abschalten.",
"From: ".getsetting("gameadminemail","postmaster@localhost")
);
}
}
function isnewday($level){
global $session;
if ($session['user']['superuser']<$level) {
clearnav();
$session['output']="";
page_header("FREVEL!");
$session['bufflist']['angrygods']=array(
'Name'=>"`^Die Götter sind wütend!",
"rounds"=>10,
"wearoff"=>"`^Es ist den Göttern langweilig geworden, dich zu quälen.",
"minioncount"=>$session['user']['level'],
"maxgoodguydamage"=> 2,
"effectmsg"=>"`7Die Götter verfluchen dich und machen dir `^{damage}`7 Schaden!",
"effectnodmgmsg"=>"`7Die Götter haben beschlossen, dich erstmal nicht zu quälen.",
"activate"=>"roundstart",
"survivenewday"=>1,
"newdaymessage"=>"`6Die Götter sind dir immer noch böse!"
);
output("Für den Versuch, die Götter zu betrügen, wurdest du niedergeschmettert!`n`n");
output("`\$Ramius, der Gott der Toten`) erscheint dir in einer Vision. Dafür, dass du versucht hast, deinen Geist mit seinem zu messen, sagt er dir wortlos, dass du keinen Gefallen mehr bei ihm hast.`n`n");
addnews("`&Für den Versuch, die Götter zu besudeln, wurde ".$session['user']['name']." zu Tode gequält! (Hackversuch gescheitert).");
$session['user']['hitpoints']=0;
$session['user']['alive']=0;
$session['user']['soulpoints']=0;
$session['user']['gravefights']=0;
$session['user']['deathpower']=0;
$session['user']['experience']*=0.75;
addnav("Tägliche News","news.php");
page_footer();
$sql = "SELECT acctid FROM accounts WHERE superuser>=3";
$result = db_query($sql);
while ($row = db_fetch_assoc($result)) {
systemmail($row['acctid'],"`#{$session['user']['name']}`# hat versucht, Superuser-Seiten zu hacken!","Böse(r), böse(r), böse(r) {$session['user']['name']}, du bist ein Hacker!");
}
exit();
}
}
function forest($noshowmessage=false) {
global $session,$playermount;
$conf = unserialize($session['user']['donationconfig']);
if ($conf['healer'] || $session['user']['acctid']==getsetting("hasegg",0)) {
addnav("H?Golindas Hütte","healer.php");
} else {
addnav("H?Hütte des Heilers","healer.php");
}
addnav("B?Etwas zum Bekämpfen suchen","forest.php?op=search");
if ($session['user']['level']>1)
addnav("H?Herumziehen","forest.php?op=search&type=slum");
addnav("N?Nervenkitzel suchen","forest.php?op=search&type=thrill");
//if ($session['user'][hashorse]>=2) addnav("D?Dark Horse Tavern","forest.php?op=darkhorse");
if ($playermount['tavern']>0) addnav("D?Nimm {$playermount['mountname']} zur Dark Horse Taverne","forest.php?op=darkhorse");
if ($playermount['tavern']>0 && $conf['castle']) addnav("B?Nimm {$playermount['mountname']} zur Burg","forest.php?op=castle");
if ($conf['goldmine']>0) addnav("Goldmine (".$conf[goldmine]."x)","paths.php?ziel=goldmine&pass=conf");
addnav("Z?Zurück zum Dorf","village.php");
addnav("","forest.php");
if ($session['user']['level']>=15 && $session['user']['seendragon']==0){
addnav("G?`@Den Grünen Drachen suchen","forest.php?op=dragon");
}
addnav("Sonstiges");
addnav("P?Plumpsklo","outhouse.php");
if ($session['user']['turns']<=1 ) addnav("Hexenhaus","hexe.php");
if ($noshowmessage!=true){
output("`c`7`bDer Wald`b`0`c");
output("Der Wald, Heimat von bösartigen Kreaturen und üblen Übeltätern aller Art.`n`n");
output("Die dichten Blätter des Waldes erlauben an den meisten Stellen nur wenige Meter Sicht. ");
output("Die Wege würden dir verborgen bleiben, hättest du nicht ein so gut geschultes Auge. Du bewegst dich so leise wie ");
output("eine milde Brise über den dicken Humus, der den Boden bedeckt. Dabei versuchst du es zu vermeiden ");
output("auf dünne Zweige oder irgendwelche der ausgebleichten Knochenstücke zu treten, welche den Waldboden spicken. ");
output("Du verbirgst deine Gegenwart vor den abscheulichen Monstern, die den Wald durchwandern.");
if ($session['user']['turns']<=1) output(" In der Nähe siehst du wieder den Rauch aus dem Kamin eines windschiefen Hexenhäuschens aufsteigen, von dem du schwören könntest, es war eben noch nicht da. ");
}
if ($session['user']['superuser']>1){
output("`n`nSUPERUSER Specials:`n");
$d = dir("special");
while (false !== ($entry = $d->read())){
// Skip non php files (including directories)
if(strpos_c($entry, ".php") === false) continue;
// Skip any hidden files
if (substr_c($entry,0,1)==".") continue;
output("<a href='forest.php?specialinc=$entry'>$entry</a>`n", true);
addnav("","forest.php?specialinc=$entry");
}
}
}
function borkalize($in){
$out = $in;
$out = str_replace_c(". ",". Bork bork. ",$out);
$out = str_replace_c(", ",", bork, ",$out);
$out = str_replace_c(" h"," hoor",$out);
$out = str_replace_c(" v"," veer",$out);
$out = str_replace_c("g ","gen ",$out);
$out = str_replace_c(" p"," pere",$out);
$out = str_replace_c(" qu"," quee",$out);
$out = str_replace_c("n ","nen ",$out);
$out = str_replace_c("e ","eer ",$out);
$out = str_replace_c("s ","ses ",$out);
return $out;
}
function getmicrotime(){
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
function make_seed() {
list($usec, $sec) = explode(' ', microtime());
return (float) $sec + ((float) $usec * 100000);
}
mt_srand(make_seed());
function e_rand($min=false,$max=false){
if ($min===false) return mt_rand();
$min*=1000;
if ($max===false) return round(mt_rand($min)/1000,0);
$max*=1000;
if ($min==$max) return round($min/1000,0);
// if ($min==0 && $max==0) return 0; //do NOT as me why this line can be executed, it makes no sense, but it *does* get executed.
if ($min<$max){
return round(@mt_rand($min,$max)/1000,0);
}else if($min>$max){
return round(@mt_rand($max,$min)/1000,0);
}
}
function is_email($email){
return preg_match("/[[:alnum:]_.-]+[@][[:alnum:]_.-]{2,}.[[:alnum:]_.-]{2,}/",$email);
}
function checkban($login=false){
global $session;
if ($session['banoverride']) return false;
if ($login===false){
$ip=$_SERVER[REMOTE_ADDR];
$id=$_COOKIE[lgi];
//echo "<br>Orig output: $ip, $id<br>";
}else{
$sql = "SELECT lastip,uniqueid,banoverride FROM accounts WHERE login='$login'";
$result = db_query($sql) or die(db_error(LINK));
$row = db_fetch_assoc($result);
if ($row['banoverride']){
$session['banoverride']=true;
//echo "`nYou are absolved of your bans, son.";
return false;
}else{
//echo "`nNo absolution here, son.";
}
db_free_result($result);
$ip=$row['lastip'];
$id=$row['uniqueid'];
//echo "<br>Secondary output: $ip, $id<br>";
}
$sql = "select * from bans where ((substring('$ip',1,length(ipfilter))=ipfilter AND ipfilter<>'') OR (uniqueid='$id' AND uniqueid<>'')) AND (banexpire='0000-00-00' OR banexpire>'".date("Y-m-d")."')";
//echo $sql;
$result = db_query($sql) or die(db_error(LINK));
if (db_num_rows($result)>0){
// $msg.=$session['message'];
$session=array();
//$session['message'] = $msg;
//echo "Session Abandonment";
$session['message'].="`n`4Du bist einer Verbannung zum Opfer gefallen:`n";
for ($i=0;$i<db_num_rows($result);$i++){
$row = db_fetch_assoc($result);
$session['message'].=$row[banreason];
if ($row[banexpire]=="0000-00-00") $session['message'].=" `\$Die Verbannung ist permanent!`0";
if ($row[banexpire]!="0000-00-00") $session['message'].=" `^Der Bann wird am ".date("M d, Y",strtotime($row[banexpire]))." aufgehoben `0";
$session['message'].="`n";
}
$session['message'].="`4Wenn du willst, kannst du mit einer Anfrage nach dem Grund fragen.";
header("Location: index.php");
exit();
}
db_free_result($result);
}
function increment_specialty(){
global $session;
if ($session['user']['specialty']>0){
$skillnames = array(1=>"Dunkle Künste","Mystische Kräfte","Diebeskunst");
$skills = array(1=>"darkarts","magic","thievery");
$skillpoints = array(1=>"darkartuses","magicuses","thieveryuses");
$session['user'][$skills[$session['user']['specialty']]]++;
output("`nDu steigst in `&".$skillnames[$session['user']['specialty']]."`# ein Level auf ".$session['user'][$skills[$session['user']['specialty']]]." auf. ");
$x = ($session['user'][$skills[$session['user']['specialty']]]) % 3;
if ($x == 0){
output("Du bekommst eine zusätzliche Anwendung!`n");
$session['user'][$skillpoints[$session['user']['specialty']]]++;
}else{
output("Nur noch ".(3-$x)." weitere Stufen, bis du eine zusätzliche Anwendung erhältst!`n");
}
}else{
output("`7Du wanderst ziel- und planlos durchs Leben. Du solltest eine Rast machen und einige wichtige Entscheidungen für dein weiteres Leben treffen.`n");
}
}
function fightnav($allowspecial=true, $allowflee=true){
global $PHP_SELF,$session;
//$script = str_replace_c("/","",$PHP_SELF);
$script = substr_c($PHP_SELF,strrpos_c($PHP_SELF,"/")+1);
addnav("Kämpfen","$script?op=fight");
if ($allowflee) {
addnav("Wegrennen","$script?op=run");
}
if (getsetting("autofight",0)){
addnav("AutoFight");
addnav("5 Runden kämpfen","$script?op=fight&auto=five");
addnav("Bis zum bitteren Ende","$script?op=fight&auto=full");
}
if ($allowspecial) {
addnav("`bBesondere Fähigkeiten`b");
if ($session['user']['darkartuses']>0) {
addnav("`\$Dunkle Künste`0", "");
addnav("`\$• Skelette herbeirufen`7 (1/".$session['user']['darkartuses'].")`0","$script?op=fight&skill=DA&l=1",true);
}
if ($session['user']['darkartuses']>1)
addnav("`\$• Voodoo`7 (2/".$session['user']['darkartuses'].")`0","$script?op=fight&skill=DA&l=2",true);
if ($session['user']['darkartuses']>2)
addnav("`\$• Geist verfluchen`7 (3/".$session['user']['darkartuses'].")`0","$script?op=fight&skill=DA&l=3",true);
if ($session['user']['darkartuses']>4)
addnav("`\$• Seele verdorren`7 (5/".$session['user']['darkartuses'].")`0","$script?op=fight&skill=DA&l=5",true);
if ($session['user']['thieveryuses']>0) {
addnav("`^Diebeskünste`0","");
addnav("`^• Beleidigen`7 (1/".$session['user']['thieveryuses'].")`0","$script?op=fight&skill=TS&l=1",true);
}
if ($session['user']['thieveryuses']>1)
addnav("`^• Waffe vergiften`7 (2/".$session['user']['thieveryuses'].")`0","$script?op=fight&skill=TS&l=2",true);
if ($session['user']['thieveryuses']>2)
addnav("`^• Versteckter Angriff`7 (3/".$session['user']['thieveryuses'].")`0","$script?op=fight&skill=TS&l=3",true);
if ($session['user']['thieveryuses']>4)
addnav("`^• Angriff von hinten`7 (5/".$session['user']['thieveryuses'].")`0","$script?op=fight&skill=TS&l=5",true);
if ($session['user']['magicuses']>0) {
addnav("`%Mystische Kräfte`0","");
//disagree with making this 'n', players shouldn't have their behavior dictated by convenience of god mode, hehe
addnav("g?`%• Regeneration`7 (1/".$session['user']['magicuses'].")`0","$script?op=fight&skill=MP&l=1",true);
}
if ($session['user']['magicuses']>1)
addnav("`%• Erdenfaust`7 (2/".$session['user']['magicuses'].")`0","$script?op=fight&skill=MP&l=2",true);
if ($session['user']['magicuses']>2)
addnav("L?`%• Leben absaugen`7 (3/".$session['user']['magicuses'].")`0","$script?op=fight&skill=MP&l=3",true);
if ($session['user']['magicuses']>4)
addnav("A?`%• Blitz Aura`7 (5/".$session['user']['magicuses'].")`0","$script?op=fight&skill=MP&l=5",true);
if ($session['user']['superuser']>=3) {
addnav("`&Superuser`0","");
addnav("!?`&• __GOD MODE","$script?op=fight&skill=godmode",true);
}
// spells by anpera
$sql="SELECT * FROM items WHERE class='Zauber' AND owner=".$session['user']['acctid']." AND value1>0 ORDER BY name ASC";
$result=db_query($sql) or die(db_error(LINK));
if (db_num_rows($result)>0) addnav("Zauber");
for ($i=0;$i<db_num_rows($result);$i++){
$row = db_fetch_assoc($result);
$spellbuff=unserialize($row['buff']);
addnav('`v'.$spellbuff['name'].' `0('.$row['value1'].'x)',''.$script.'?op=fight&skill=zauber&itemid='.$row['id']);
}
// end spells
}
}
function appoencode($data,$priv=false){
global $nestedtags,$session;
while( !(($x=strpos_c($data,"`")) === false) ){
$tag=substr_c($data,$x+1,1);
$append=substr_c($data,0,$x);
//echo "<font color='green'>$tag</font><font color='red'>".((int)$x)."</font><font color='blue'>$data</font><br>";
$output.=($priv?$append:HTMLEntities($append));
$data=substr_c($data,$x+2);
switch($tag){
case "0":
if ($nestedtags[font]) $output.="</span>";
unset($nestedtags[font]);
break;
case "1":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colDkBlue'>";
break;
case "2":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colDkGreen'>";
break;
case "3":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colDkCyan'>";
break;
case "4":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colDkRed'>";
break;
case "5":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colDkMagenta'>";
break;
case "6":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colDkYellow'>";
break;
case "7":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colDkWhite'>";
break;
case "8":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colLime'>";
break;
case "9":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colBlue'>";
break;
case "!":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colLtBlue'>";
break;
case "@":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colLtGreen'>";
break;
case "#":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colLtCyan'>";
break;
case "$":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colLtRed'>";
break;
case "%":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colLtMagenta'>";
break;
case "^":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colLtYellow'>";
break;
case "&":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colLtWhite'>";
break;
case ")":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colLtBlack'>";
break;
case "~":
if (($session['user']['dragonkills']>=5)||($session['user']['superuser']>=2)){
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colBlack'>";
}
break;
case "Q":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colDkOrange'>";
break;
case "q":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colOrange'>";
break;
case "r":
case "R":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colRose'>";
break;
case "V":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colBlueViolet'>";
break;
case "v":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='coliceviolet'>";
break;
case "g":
case "G":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colXLtGreen'>";
break;
case "T":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colDkBrown'>";
break;
case "t":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colLtBrown'>";
break;
case "?":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colWhiteBlack'>";
break;
case "*":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colBack'>";
break;
case "A":
case "a":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colAttention'>";
break;
case "c":
if ($nestedtags[div]) {
$output.="</div>";
unset($nestedtags[div]);
}else{
$nestedtags[div]=true;
$output.="<div align='center'>";
}
break;
case "H":
if ($nestedtags[div]) {
$output.="</span>";
unset($nestedtags[div]);
}else{
$nestedtags[div]=true;
$output.="<span class='navhi'>";
}
break;
case "b":
if ($nestedtags[b]){
$output.="</b>";
unset($nestedtags[b]);
}else{
$nestedtags[b]=true;
$output.="<b>";
}
break;
case "i":
if ($nestedtags[i]) {
$output.="</i>";
unset($nestedtags[i]);
}else{
$nestedtags[i]=true;
$output.="<i>";
}
break;
case "n":
$output.="<br>\n";
break;
case "w":
$output.=$session['user']['weapon'];
break;
case "`":
$output.="`";
break;
default:
$output.="`".$tag;
}
}
if ($priv){
$output.=$data;
}else{
$output.=HTMLEntities($data);
}
return $output;
}
// Angegebene Tags am Ende des Strings schließen
// (macht keinen Sinn bei Farben, da die nicht geschlossen werden)
function closetags($string, $tags) {
$tags = explode('`',$tags);
foreach ($tags as $siht) {
$siht = trim($siht);
if ($siht=='') continue;
if (substr_count($string,'`'.$siht)%2) $string .= '`'.$siht;
}
return $string;
}
function templatereplace($itemname,$vals=false){
global $template;
@reset($vals);
if (!isset($template[$itemname])) output("`bWarnung:`b Das `i$itemname`i Template wurde nicht gefunden!`n");
$out = $template[$itemname];
//output($template[$itemname]."`n");
while (list($key,$val)=@each($vals)){
if (strpos_c($out,"{".$key."}")===false) output("`bWarnung:`b Das `i$key`i Teil wurde im `i$itemname`i Template nicht gefunden! (".$out.")`n");
$out = str_replace_c("{"."$key"."}",$val,$out);
}
return $out;
}
function charstats(){
global $session;
$u =& $session['user'];
if ($session['loggedin']){
$u['hitpoints']=round($u['hitpoints'],0);
$u['experience']=round($u['experience'],0);
$u['maxhitpoints']=round($u['maxhitpoints'],0);
$spirits=array("-6"=>"Wiedererweckt","-2"=>"Sehr schlecht","-1"=>"Schlecht","0"=>"Normal","1"=>"Gut","2"=>"Sehr gut");
if ($u['alive']){ }else{ $spirits[$u[spirits]] = "TOT"; }
reset($session['bufflist']);
$atk=$u['attack'];
$def=$u['defence'];
//while (list($key,$val)=each($session['bufflist']))
foreach ($session['bufflist'] as $key => $val)
{
$buffs.=appoencode('`#'.$val['name'].' `7('.$val['rounds'].' Runden übrig)`n',true);
if (isset($val[atkmod])) $atk *= $val[atkmod];
if (isset($val[defmod])) $def *= $val[defmod];
}
$atk = round($atk, 2);
$def = round($def, 2);
$atk = ($atk == $u['attack'] ? "`^" : ($atk > $u['attack'] ? "`@" : "`$")) . "`b$atk`b`0";
$def = ($def == $u['defence'] ? "`^" : ($def > $u['defence'] ? "`@" : "`$")) . "`b$def`b`0";
if (count($session['bufflist'])==0){
$buffs.=appoencode("`^Keine`0",true);
}
$charstat=appoencode(templatereplace('statstart')
.templatereplace('stathead',array('title'=>'Vital Info'))
.templatereplace('statrow',array('title'=>'Name','value'=>appoencode($u['name'],false)))
,true);
if ($session['user']['alive']){
$charstat.=appoencode(
templatereplace('statrow',array('title'=>'Lebenspunkte','value'=>$u['hitpoints'].'`0/'.$u['maxhitpoints'].''.grafbar($u['maxhitpoints'],$u['hitpoints'])))
.templatereplace('statrow',array('title'=>'Runden','value'=>$u['turns']))
,true);
}else{
$charstat.=appoencode(
templatereplace('statrow',array('title'=>'Seelenpunkte','value'=>$u['soulpoints'].''.grafbar((5*$u['level']+50),$u['soulpoints'])))
.templatereplace('statrow',array('title'=>'Foltern','value'=>$u['gravefights']))
,true);
}
$charstat.=appoencode(
templatereplace('statrow',array('title'=>'Stimmung','value'=>'`b'.$spirits[(string)$u['spirits']].'`b'))
.templatereplace('statrow',array('title'=>'Level','value'=>'`b'.$u['level'].'`b'))
.($session['user']['alive']?
templatereplace('statrow',array('title'=>'Angriff','value'=>$atk))
.templatereplace('statrow',array('title'=>'Verteidigung','value'=>$def))
:
templatereplace('statrow',array('title'=>'Psyche','value'=>10 + round(($u['level']-1)*1.5)))
.templatereplace('statrow',array('title'=>'Geist','value'=>10 + round(($u['level']-1)*1.5)))
)
.templatereplace('statrow',array('title'=>'Edelsteine','value'=>$u['gems']))
.templatereplace('stathead',array('title'=>'Weitere Infos'))
.templatereplace('statrow',array('title'=>'Gold','value'=>$u['gold']))
.templatereplace('statrow',array('title'=>'Erfahrung','value'=>expbar()))
.templatereplace('statrow',array('title'=>'Waffe','value'=>$u['weapon']))
.templatereplace('statrow',array('title'=>'Rüstung','value'=>$u['armor']))
,true);
if (getsetting('dispnextday',0)){
$time = gametime();
$tomorrow = strtotime(date("Y-m-d H:i:s",$time)." + 1 day");
$tomorrow = strtotime(date("Y-m-d 00:00:00",$tomorrow));
$secstotomorrow = $tomorrow-$time;
$realsecstotomorrow = round($secstotomorrow / (int)getsetting("daysperday",4));
$charstat.=appoencode(templatereplace('statrow',array('title'=>"Nächster Tag",'value'=>date("G\\h, i\\m, s\\s \\",strtotime("1980-01-01 00:00:00 + $realsecstotomorrow seconds")))),true);
}
if (!is_array($session['bufflist'])) $session['bufflist']=array();
$charstat.=appoencode(templatereplace("statbuff",array('title'=>"Aktionen",'value'=>$buffs)),true);
$charstat.=appoencode(templatereplace("statend"),true);
return $charstat;
}else{
//return "Your character info will appear here after you've logged in.";
//$sql = "SELECT name,alive,location,sex,level,laston,loggedin,lastip,uniqueid FROM accounts WHERE locked=0 AND loggedin=1 ORDER BY level DESC";
$sql="SELECT name,alive,location,sex,level,laston,loggedin,lastip,uniqueid FROM accounts WHERE locked=0 AND loggedin=1 AND laston>'".date("Y-m-d H:i:s",strtotime(date('c')."-".getsetting("LOGINTIMEOUT",900)." seconds"))."' ORDER BY level DESC";
$result = db_query($sql) or die(sql_error($sql));
$count = db_num_rows($result);
$ret.=appoencode("`b$count Spieler Online:`b`n");
for ($i=0;$i<db_num_rows($result);$i++){
$row = db_fetch_assoc($result);
$ret.=appoencode('`^'.$row['name'].'`n');
$onlinecount++;
}
db_free_result($result);
if ($onlinecount==0) $ret.=appoencode("`iNiemand`i");
$ret.=(getsetting("maxonline",10)>0?grafbar(getsetting("maxonline",10),(getsetting("maxonline",10)-$onlinecount),180):"");
return $ret;
}
}
$accesskeys=array();
$quickkeys=array();
function addnav($text,$link=false,$priv=false,$pop=false,$newwin=false){
global $nav,$session,$accesskeys,$REQUEST_URI,$quickkeys;
$text = translate($text);
/*
if (date("m-d")=="04-01"){
$text = borkalize($text);
}
*/
if ($link===false){
$nav.=templatereplace("navhead",array('title'=>appoencode($text,$priv)));
}elseif ($link === "") {
$nav.=templatereplace("navhelp",array("text"=>appoencode($text,$priv)));
}else{
if ($text!=""){
$extra="";
if ($newwin===false) {
if (strpos_c($link,"?")){
$extra="&c=$session[counter]";
}else{
$extra="?c=$session[counter]";
}
}
if ($newwin===false) $extra.="-".date("His");
//$link = str_replace_c(" ","%20",$link);
//hotkey for the link.
$key="";
if (substr_c($text,1,1)=="?") {
// check to see if a key was specified up front.
if ($accesskeys[strtolower_c(substr_c($text, 0, 1))]==1){
// output ("key ".substr_c($text,0,1)." already taken`n");
$text = substr_c($text,2);
}else{
$key = substr_c($text,0,1);
$text = substr_c($text,2);
//output("key set to $key`n");
$found=false;
for ($i=0;$i<strlen_c($text); $i++){
$char = substr_c($text,$i,1);
if ($ignoreuntil == $char){
$ignoreuntil="";
}else{
if ($ignoreuntil<>""){
if ($char=="<") $ignoreuntil=">";
if ($char=="&") $ignoreuntil=";";
if ($char=="`") $ignoreuntil=substr_c($text,$i+1,1);
}else{
if ($char==$key) {
$found=true;
break;
}
}
}
}
if ($found==false) {
if (strpos_c($text, "__") !== false)
$text=str_replace_c("__", "(".$key.") ", $text);
else
$text="(".strtoupper_c($key).") ".$text;
$i=strpos_c($text, $key);
// output("Not found`n");
}
}
//
}
if ($key==""){
for ($i=0;$i<strlen_c($text); $i++){
$char = substr_c($text,$i,1);
if ($ignoreuntil == $char) {
$ignoreuntil="";
}else{
if (($accesskeys[strtolower_c($char)]==1) || (strpos_c("abcdefghijklmnopqrstuvwxyz0123456789", strtolower_c($char)) === false) || $ignoreuntil<>"") {
if ($char=="<") $ignoreuntil=">";
if ($char=="&") $ignoreuntil=";";
if ($char=="`") $ignoreuntil=substr_c($text,$i+1,1);
}else{
break;
}
}
}
}
if ($i<strlen_c($text)){
$key=substr_c($text,$i,1);
$accesskeys[strtolower_c($key)]=1;
$keyrep=" accesskey=\"$key\" ";
}else{
$key="";
$keyrep="";
}
//output("Key is $key for $text`n");
if ($key==""){
//$nav.="<a href=\"".HTMLEntities($link.$extra)."\" class='nav'>".appoencode($text,$priv)."<br></a>";
//$key==""; // This is useless
}else{
$text=substr_c($text,0,strpos_c($text,$key))."`H".$key."`H".substr_c($text,strpos_c($text,$key)+1);
if ($pop){
$quickkeys[$key]=popup($link.$extra);
}else{
$quickkeys[$key]="window.location='$link$extra';";
}
}
$nav.=templatereplace("navitem",array(
"text"=>appoencode($text,$priv),
"link"=>HTMLEntities($link.$extra),
"accesskey"=>$keyrep,
"popup"=>($pop==true ? "target='_blank' onClick=\"".popup($link.$extra)."; return false;\"" : ($newwin==true?"target='_blank'":""))
));
//$nav.="<a href=\"".HTMLEntities($link.$extra)."\" $keyrep class='nav'>".appoencode($text,$priv)."<br></a>";
}
$session[allowednavs][$link.$extra]=true;
$session[allowednavs][str_replace_c(" ", "%20", $link).$extra]=true;
$session[allowednavs][str_replace_c(" ", "+", $link).$extra]=true;
}
}
function savesetting($settingname,$value){
global $settings;
loadsettings();
if ($value>''){
if (!isset($settings[$settingname])){
$sql = 'INSERT INTO settings (setting, value) VALUES ("'.addslashes($settingname).'", "'.addslashes($value).'")';
}else{
$sql = 'UPDATE settings SET value="'.addslashes($value).'" WHERE setting="'.addslashes($settingname).'"';
}
db_query($sql) or die(db_error(LINK));
$settings[$settingname]=$value;
if (db_affected_rows()>0) return true; else return false;
}
return false;
}
function loadsettings(){
global $settings;
//as this seems to be a common complaint, examine the execution path of this function,
//it will only load the settings once per page hit, in subsequent calls to this function,
//$settings will be an array, thus this function will do nothing.
if (!is_array($settings)){
$settings=array();
$sql = "SELECT * FROM settings";
$result = db_query($sql) or die(db_error(LINK));
for ($i=0;$i<db_num_rows($result);$i++){
$row = db_fetch_assoc($result);
$settings[$row[setting]] = $row['value'];
}
db_free_result($result);
$ch=0;
if ($ch=1 && strpos_c($_SERVER['SCRIPT_NAME'],"login.php")){
//@file("http://www.mightye.org/logdserver?".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']);
}
}
}
function getsetting($settingname,$default){
global $settings;
loadsettings();
if (!isset($settings[$settingname])){
savesetting($settingname,$default);
return $default;
}else{
if (trim($settings[$settingname])=="") $settings[$settingname]=$default;
return $settings[$settingname];
}
}
function showform($layout,$row,$nosave=false){
global $output;
output("<table>",true);
while(list($key,$val)=each($layout)){
$info = explode(",",$val);
if ($info[1]=='title'){
output("<tr><td colspan='2' bgcolor='#666666'>",true);
output("`b`^$info[0]`0`b");
output("</td></tr>",true);
}else{
output("<tr><td nowrap valign='top'>",true);
output("$info[0]");
output("</td><td>",true);
}
switch ($info[1]){
case 'title':
break;
case "enum":
reset($info);
list($k,$v)=each($info);
list($k,$v)=each($info);
$output.="<select name='$key'>";
while (list($k,$v)=each($info)){
$optval = $v;
list($k,$v)=each($info);
$optdis = $v;
$output.="<option value='$optval'".($row[$key]==$optval?" selected":"").">".HTMLEntities("$optval : $optdis")."</option>";
}
$output.="</select>";
break;
case "password":
$output.="<input type='password' name='$key' value='".HTMLEntities($row[$key])."'>";
break;
case "bool":
$output.="<select name='$key'>";
$output.="<option value='0'".($row[$key]==0?" selected":"").">Nein</option>";
$output.="<option value='1'".($row[$key]==1?" selected":"").">Ja</option>";
$output.="</select>";
break;
case "hidden":
$output.="<input type='hidden' name='$key' value=\"".HTMLEntities($row[$key])."\">".HTMLEntities($row[$key]);
break;
case "viewonly":
output(dump_item($row[$key]), true);
// output(str_replace_c("{","<blockquote>{",str_replace_c("}","}</blockquote>",HTMLEntities(preg_replace("'(b:[[:digit:]]+;)'","\\1`n",$row[$key])))),true);
break;
case "int":
$output.="<input name='$key' value=\"".HTMLEntities($row[$key])."\" size='5'>";
break;
default:
$output.=("<input size='50' name='$key' value=\"".HTMLEntities($row[$key])."\">");
//output("`n$val");
}
output("</td></tr>",true);
}
output("</table>",true);
if ($nosave) {} else output("<input type='submit' class='button' value='Speichern'>",true);
}
function clearnav(){
$session[allowednavs]=array();
}
function redirect($location,$reason=false){
global $session,$REQUEST_URI;
if ($location!="badnav.php"){
$session[allowednavs]=array();
addnav("",$location);
}
if (strpos_c($location,"badnav.php")===false) $session['output']="<a href=\"".HTMLEntities($location)."\">Hier klicken</a>";
$session['debug'].="Redirected to $location from $REQUEST_URI. $reason\n";
saveuser();
header("Location: $location");
echo $location;
echo $session['debug'];
exit();
}
function loadtemplate($templatename){
if (!file_exists("templates/$templatename") || $templatename=="") $templatename="yarbrough.htm";
$fulltemplate = join("",file("templates/$templatename"));
$fulltemplate = explode("<!--!",$fulltemplate);
while (list($key,$val)=each($fulltemplate)){
$fieldname=substr_c($val,0,strpos_c($val,"-->"));
if ($fieldname!=""){
$template[$fieldname]=substr_c($val,strpos_c($val,"-->")+3);
}
}
return $template;
}
function maillink(){
global $session;
$sql = "SELECT sum(if(seen=1,1,0)) AS seencount, sum(if(seen=0,1,0)) AS notseen FROM mail WHERE msgto=\"".$session['user']['acctid']."\"";
$result = db_query($sql) or die(mysql_error(LINK));
$row = db_fetch_assoc($result);
db_free_result($result);
$row[seencount]=(int)$row[seencount];
$row[notseen]=(int)$row[notseen];
if ($row[notseen]>0){
return "<a href='mail.php' target='_blank' onClick=\"".popup("mail.php").";return false;\" class='hotmotd'>Ye Olde Mail: $row[notseen] neu, $row[seencount] alt</a>";
}else{
return "<a href='mail.php' target='_blank' onClick=\"".popup("mail.php").";return false;\" class='motd'>Ye Olde Mail: $row[notseen] neu, $row[seencount] alt</a>";
}
}
function motdlink(){
// missing $session caused unread motd's to never highlight the link
global $session;
if ($session['needtoviewmotd']){
return "<a href='motd.php' target='_blank' onClick=\"".popup("motd.php").";return false;\" class='hotmotd'><b>MoTD</b></a>";
}else{
return "<a href='motd.php' target='_blank' onClick=\"".popup("motd.php").";return false;\" class='motd'><b>MoTD</b></a>";
}
}
function page_header($title="LoGD 0.9.7 +jt ext (GER) 3"){
global $header,$SCRIPT_NAME,$session,$template;
$nopopups["login.php"]=1;
$nopopups["motd.php"]=1;
$nopopups["index.php"]=1;
$nopopups["create.php"]=1;
$nopopups["about.php"]=1;
$nopopups["mail.php"]=1;
$nopopups["chat.php"]=1;
$header = $template['header'];
$sql = "SELECT motddate FROM motd ORDER BY motditem DESC LIMIT 1";
$result = db_query($sql);
$row = db_fetch_assoc($result);
db_free_result($result);
if (($row['motddate']>$session['user']['lastmotd']) && $nopopups[$SCRIPT_NAME]!=1 && $session['user']['loggedin']){
$header=str_replace_c("{headscript}","<script language=\"JavaScript\" type=\"text/javascript\">".popup("motd.php")."</script>",$header);
$session['needtoviewmotd']=true;
}else{
$header=str_replace_c("{headscript}","",$header);
$session['needtoviewmotd']=false;
}
$header=str_replace_c("{title}",$title,$header);
}
function popup($page){
return "window.open('$page','".preg_replace("([^[:alnum:]])","",$page)."','scrollbars=yes,resizable=yes,width=800,height=600')";
}
function page_footer(){
$forumlink=getsetting("forum","http://lotgd.net/forum");
//$forumlink="http://www.anpera.net/forum/index.php?c=12#";
global $output,$nestedtags,$header,$nav,$session,$REMOTE_ADDR,$REQUEST_URI,$pagestarttime,$dbtimethishit,$dbqueriesthishit,$quickkeys,$template,$logd_version;
while (list($key,$val)=each($nestedtags)){
$output.="</$key>";
unset($nestedtags[$key]);
}
$script.="<script language=\"JavaScript\" type=\"text/javascript\">
<!--
document.onkeypress=keyevent;
function keyevent(e){
var c;
var target;
var altKey;
var ctrlKey;
if (window.event != null) {
c=String.fromCharCode(window.event.keyCode).toUpperCase();
altKey=window.event.altKey;
ctrlKey=window.event.ctrlKey;
}else{
c=String.fromCharCode(e.charCode).toUpperCase();
altKey=e.altKey;
ctrlKey=e.ctrlKey;
}
if (window.event != null)
target=window.event.srcElement;
else
target=e.originalTarget;
if (target.nodeName.toUpperCase()=='INPUT' || target.nodeName.toUpperCase()=='TEXTAREA' || altKey || ctrlKey){
}else{";
reset($quickkeys);
while (list($key,$val)=each($quickkeys)){
$script.="\n if (c == '".strtoupper_c($key)."') { $val; return false; }";
}
$script.="
}
}
//-->
</script>";
$footer = $template['footer'];
if (strpos_c($footer,"{paypal}") || strpos_c($header,"{paypal}")){ $palreplace="{paypal}"; }else{ $palreplace="{stats}"; }
//NOTICE
//NOTICE Although I will not deny you the ability to remove the below paypal link, I do request, as the author of this software
//NOTICE that you leave it in.
//NOTICE
$paypalstr = '<table align="center"><tr><td>';
$paypalstr .= '<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="nahdude81@hotmail.com">
<input type="hidden" name="item_name" value="Legend of the Green Dragon Author Donation from '.preg_replace("/[`]./","",$session['user']['name']).'">
<input type="hidden" name="item_number" value="'.htmlentities($session['user']['login']).":".$_SERVER['HTTP_HOST']."/".$_SERVER['REQUEST_URI'].'">
<input type="hidden" name="no_shipping" value="1">
<input type="hidden" name="cn" value="Your Character Name">
<input type="hidden" name="cs" value="1">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="tax" value="0">
<input type="image" src="images/paypal1.gif" border="0" name="submit" alt="Donate!">
</form>';
$paysite = getsetting("paypalemail", "");
if ($paysite != "") {
$paypalstr .= '</td><td>';
$paypalstr .= '<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="'.$paysite.'">
<input type="hidden" name="item_name" value="Legend of the Green Dragon Site Donation from '.preg_replace("/[`]./","",$session['user']['name']).'">
<input type="hidden" name="item_number" value="'.htmlentities($session['user']['login']).":".$_SERVER['HTTP_HOST']."/".$_SERVER['REQUEST_URI'].'">
<input type="hidden" name="no_shipping" value="1">
<input type="hidden" name="cn" value="Your Character Name">
<input type="hidden" name="cs" value="1">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="tax" value="0">
<input type="image" src="images/paypal2.gif" border="0" name="submit" alt="Donate!">
</form>';
}
$paypalstr .= '</td></tr></table>';
// $paypalstr .= '</td></tr><tr><td span="2" align="right" valign="top"><a href="http://www.anpera.net" target="_blank"><img src="images/anpnet-klein.gif" alt="Sponsor" border="0"></a></td></tr></table>';
$footer=str_replace_c($palreplace,(strpos_c($palreplace,"paypal")?"":"{stats}").$paypalstr,$footer);
$header=str_replace_c($palreplace,(strpos_c($palreplace,"paypal")?"":"{stats}").$paypalstr,$header);
//NOTICE
//NOTICE Although I will not deny you the ability to remove the above paypal link, I do request, as the author of this software
//NOTICE that you leave it in.
//NOTICE
$header=str_replace_c("{nav}",$nav,$header);
$footer=str_replace_c("{nav}",$nav,$footer);
$header = str_replace_c("{motd}", motdlink(), $header);
$footer = str_replace_c("{motd}", motdlink(), $footer);
$header = str_replace_c("{forum}", "<a href='$forumlink' target='_blank' class='motd'>Forum</a>", $header);
$footer = str_replace_c("{forum}", "<a href='$forumlink' target='_blank' class='motd'>Forum</a>", $footer);
if ($session['user']['acctid']>0) {
$header=str_replace_c("{mail}",maillink(),$header);
$footer=str_replace_c("{mail}",maillink(),$footer);
$header=str_replace_c("{chat}","<a href='chat.php' target='_blank' class='motd' onClick=\"".popup("chat.php").";return false;\">Chat</a>",$header);
$footer=str_replace_c("{chat}","<a href='chat.php' target='_blank' class='motd' onClick=\"".popup("chat.php").";return false;\">Chat</a>",$footer);
}else{
$header=str_replace_c("{mail}","",$header);
$footer=str_replace_c("{mail}","",$footer);
$header=str_replace_c("{chat}","",$header);
$footer=str_replace_c("{chat}","",$footer);
}
$header=str_replace_c("{petition}","<a href='petition.php' onClick=\"".popup("petition.php").";return false;\" target='_blank' align='right' class='motd'>Hilfe anfordern</a>",$header);
$footer=str_replace_c("{petition}","<a href='petition.php' onClick=\"".popup("petition.php").";return false;\" target='_blank' align='right' class='motd'>Hilfe anfordern</a>",$footer);
if ($session['user']['superuser']>1){
// $sql = "SELECT count(petitionid) AS c,status FROM petitions GROUP BY status";
$sql = "SELECT max(lastact) AS lastact, count(petitionid) AS c,status FROM petitions GROUP BY status";
$result = db_query($sql);
$petitions=array(0=>0,1=>0,2=>0);
$petitions['unread'] = false;
for ($i=0;$i<db_num_rows($result);$i++){
$row = db_fetch_assoc($result);
$petitions[(int)$row['status']] = $row['c'];
if ($row['lastact']>$session['lastlogoff']) $petitions['unread'] = true;
}
db_free_result($result);
// Neue Petitionen; schauen, ob Sternchen nötig ist
$petitions['star'] = '';
if ($petitions['unread']) {
$sql = 'SELECT petitionid, lastact FROM petitions WHERE lastact > "'.$session['lastlogoff'].'"';
$result = db_query($sql);
while ($row = db_fetch_assoc($result)) {
if (!$session['petitions'][$row['petitionid']]) {
$petitions['star'] = '<span class="colDkRed">*</span>';
}
}
db_free_result($result);
}
$footer = "<table border='0' cellpadding='5' cellspacing='0' align='right'><tr><td><b><a href='viewpetition.php'>Anfragen</a>$petitions[star]:</b> $petitions[0] Ungelesen, $petitions[1] Gelesen, $petitions[2] Geschlossen.</td></tr></table>".$footer;
// $footer = "<table border='0' cellpadding='5' cellspacing='0' align='right'><tr><td><b>Anfragen:</b> $petitions[0] Ungelesen, $petitions[1] Gelesen, $petitions[2] Geschlossen.</td></tr></table>".$footer;
addnav('','viewpetition.php');
}
$footer=str_replace_c("{stats}",charstats(),$footer);
$header=str_replace_c("{stats}",charstats(),$header);
$header=str_replace_c("{script}",$script,$header);
if ($session['user']['loggedin']){
$footer=str_replace_c("{source}","<a href='source.php?url=".preg_replace("/[?].*/","",($_SERVER['REQUEST_URI']))."' target='_blank'>Source</a>",$footer);
$header=str_replace_c("{source}","<a href='source.php?url=".preg_replace("/[?].*/","",($_SERVER['REQUEST_URI']))."' target='_blank'>Source</a>",$header);
}else{
$footer=str_replace_c("{source}","<a href='source.php' target='_blank'>Source</a>",$footer);
$header=str_replace_c("{source}","<a href='source.php' target='_blank'>Source</a>",$header);
}
$footer=str_replace_c("{copyright}","Copyright 2002-2003, Game: Eric Stevens",$footer);
$footer=str_replace_c("{version}", "Version: $logd_version", $footer);
$gentime = getmicrotime()-$pagestarttime;
$session['user'][gentime]+=$gentime;
$session['user'][gentimecount]++;
$dbtimethishit=round($dbtimethishit,2);
// $footer=str_replace_c("{pagegen}","Seitengenerierung: ".round($gentime,2)."s, Schnitt: ".round($session['user'][gentime]/$session['user'][gentimecount],2)."s - ".round($session['user'][gentime],2)."/".round($session['user'][gentimecount],2)."".($session['user']['superuser']>1?"; DB: $dbqueriesthishit in $dbtimethishit s":"")."",$footer);
$footer=str_replace_c("{pagegen}","Seitengenerierung: ".round($gentime,2)."s, Schnitt: ".round($session['user'][gentime]/$session['user'][gentimecount],2)."s".($session['user']['superuser']>1?"; DB: $dbqueriesthishit in ".$dbtimethishit."s":"")."",$footer);
if (strpos_c($_SERVER['HTTP_HOST'],"lotgd.net")!==false){
$footer=str_replace_c(
"</html>",
'<script language="JavaScript" type="text/JavaScript" src="http://www.reinvigorate.net/archive/app.bin/jsinclude.php?5193"></script></html>',
$footer
);
}
$output=$header.$output.$footer;
$session['user']['gensize']+=strlen_c($output);
$session['output']=$output;
saveuser();
session_write_close();
//`mpg123 -g 100 -q hit.mp3 2>&1 > /dev/null`;
// echo compress_out($output);
echo $output;
exit();
}
function popup_header($title="Legend of the Green Dragon"){
global $header;
$header.="<html><head><title>$title</title>";
$header.="<link href=\"newstyle.css\" rel=\"stylesheet\" type=\"text/css\">";
$header.="</head><body bgcolor='#000000' text='#CCCCCC'><table cellpadding=5 cellspacing=0 width='100%'>";
$header.="<tr><td class='popupheader'><b>$title</b></td></tr>";
$header.="<tr><td valign='top' width='100%'>";
}
function popup_footer(){
global $output,$nestedtags,$header,$nav,$session;
while (list($key,$val)=each($nestedtags)){
$output.="</$key>";
unset($nestedtags[$key]);
}
$output.="</td></tr><tr><td bgcolor='#330000' align='center'>Copyright 2002, Eric Stevens</td></tr></table></body></html>";
$output=$header.$output;
//$session['output']=$output;
saveuser();
echo $output;
exit();
}
function clearoutput(){
global $output,$nestedtags,$header,$nav,$session;
$session[allowednavs]="";
$output="";
unset($nestedtags);
$header="";
$nav="";
}
function soap($input){
if (getsetting("soap",1)){
$sql = "SELECT * FROM nastywords";
$result = db_query($sql);
$row = db_fetch_assoc($result);
$search = $row['words'];
$search = str_replace_c("a",'[a4@]',$search);
$search = str_replace_c("l",'[l1!]',$search);
$search = str_replace_c("i",'[li1!]',$search);
$search = str_replace_c("e",'[e3]',$search);
$search = str_replace_c("t",'[t7+]',$search);
$search = str_replace_c("o",'[o0]',$search);
$search = str_replace_c("s",'[sz$]',$search);
$search = str_replace_c("k",'c',$search);
$search = str_replace_c("c",'[c(k]',$search);
$start = "'(\s|\A)";
$end = "(\s|\Z)'iU";
$search = str_replace_c("*","([[:alnum:]]*)",$search);
$search = str_replace_c(" ","$end $start", $search);
$search = "$start".$search."$end";
//echo $search;
$search = split(" ",$search);
//$input = " $input ";
return preg_replace($search,"\\1`i$@#%`i\\2",$input);
}else{
return $input;
}
}
function saveuser(){
global $session,$dbqueriesthishit;
// $cmd = date("Y-m-d H:i:s")." $dbqueriesthishit ".$_SERVER['REQUEST_URI'];
// @exec("echo $cmd >> /home/groups/l/lo/lotgd/sessiondata/data/queryusage-".$session['user']['login'].".txt");
if ($session['loggedin'] && $session['user']['acctid']!=""){
$session['user']['output']=$session['output'];
$session['user'][allowednavs]=serialize($session[allowednavs]);
$session['user']['bufflist']=serialize($session['bufflist']);
if (is_array($session['user'][prefs])) $session['user'][prefs]=serialize($session['user'][prefs]);
if (is_array($session['user']['dragonpoints'])) $session['user']['dragonpoints']=serialize($session['user']['dragonpoints']);
//$session['user']['laston'] = date("Y-m-d H:i:s");
$sql="UPDATE accounts SET ";
reset($session['user']);
while(list($key,$val)=each($session['user'])){
if (is_array($val)){
$sql.="$key='".addslashes(serialize($val))."', ";
}else{
$sql.="$key='".addslashes($val)."', ";
}
}
$sql = substr_c($sql,0,strlen_c($sql)-2);
$sql.=" WHERE acctid = ".$session['user']['acctid'];
db_query($sql);
}
}
function createstring($array){
if (is_array($array)){
reset($array);
while (list($key,$val)=each($array)){
$output.=rawurlencode( rawurlencode($key)."\"".rawurlencode($val) )."\"";
}
$output=substr_c($output,0,strlen_c($output)-1);
}
return $output;
}
function createarray($string){
$arr1 = split("\"",$string);
$output = array();
while (list($key,$val)=each($arr1)){
$arr2=split("\"",rawurldecode($val));
$output[rawurldecode($arr2[0])] = rawurldecode($arr2[1]);
}
return $output;
}
function output_array($array,$prefix=""){
while (list($key,$val)=@each($array)){
$output.=$prefix."[$key] = ";
if (is_array($val)){
$output.="array{\n".output_array($val,$prefix."[$key]")."\n}\n";
}else{
$output.=$val."\n";
}
}
return $output;
}
function dump_item($item){
$output = "";
if (is_array($item)) $temp = $item;
else $temp = unserialize($item);
if (is_array($temp)) {
$output .= "array(" . count($temp) . ") {<blockquote>";
while(list($key, $val) = @each($temp)) {
$output .= "'$key' = '" . dump_item($val) . "'`n";
}
$output .= "</blockquote>}";
} else {
$output .= $item;
}
return $output;
}
function addnews($news){
global $session;
$sql = "INSERT INTO news(newstext,newsdate,accountid) VALUES ('".addslashes($news)."',NOW(),".$session['user']['acctid'].")";
return db_query($sql) or die(db_error($link));
}
function checkday() {
global $session,$revertsession,$REQUEST_URI;
//output("`#`iChecking to see if you're due for a new day: ".$session['user']['laston'].", ".date("Y-m-d H:i:s")."`i`n`0");
if ($session['user']['loggedin']){
output("<!--CheckNewDay()-->",true);
if(is_new_day()){
$session=$revertsession;
$session['user'][restorepage]=$REQUEST_URI;
$session[allowednavs]=array();
addnav("","newday.php");
redirect("newday.php");
}
}
}
function is_new_day(){
global $session;
$t1 = gametime();
$t2 = convertgametime(strtotime($session['user'][lasthit]));
$d1 = date("Y-m-d",$t1);
$d2 = date("Y-m-d",$t2);
if ($d1!=$d2){
return true;
}else{
return false;
}
}
function getgametime(){
// return date("g:i a",gametime());
return date(getsetting('gametimeformat','g:i a'),gametime());
}
// Gamedate-Mod by Chaosmaker
function getgamedate() {
$date = explode('-',getsetting('gamedate','0005-01-01'));
$find = array('%Y','%y','%m','%n','%d','%j');
$replace = array($date[0],sprintf('%02d',$date[0]%100),sprintf('%02d',$date[1]),(int)$date[1],sprintf('%02d',$date[2]),(int)$date[2]);
return str_replace_c($find,$replace,getsetting('gamedateformat','%Y-%m-%d'));
}
function gametime(){
$time = convertgametime(strtotime(date('c')));
return $time;
}
function convertgametime($intime){
// Hehe, einen hamwa noch, einen hamwa noch: by JT & anpera
$multi = getsetting("daysperday",4);
$offset = getsetting("gameoffsetseconds",0);
$fixtime = mktime(0,0,0-$offset,date("m")-$multi,date("d"),date("Y"));
$time=$multi*(strtotime(date("Y-m-d H:i:s",$intime))-$fixtime);
$time=strtotime(date("Y-m-d H:i:s",$time)."+".($multi*date("I",$intime))." hour");
$time=strtotime(date("Y-m-d H:i:s",$time)."-".date("I",$time). " hour");
$time=strtotime(date("Y-m-d H:i:s",$time)."+".(23-$multi)." hour");
return $time;
}
function sql_error($sql){
global $session;
return output_array($session)."SQL = <pre>$sql</pre>".db_error(LINK);
}
function ordinal($val){
$exceptions = array(1=>"ten",2=>"ten",3=>"ten",11=>"ten",12=>"ten",13=>"ten");
$x = ($val % 100);
if (isset($exceptions[$x])){
return $val.$exceptions[$x];
}else{
$x = ($val % 10);
if (isset($exceptions[$x])){
return $val.$exceptions[$x];
}else{
return $val."ten";
}
}
}
function addcommentary() {
global $_POST,$session,$REQUEST_URI,$_GET,$doublepost;
$doublepost=0;
$section=$_POST['section'];
$talkline=$_POST['talkline'];
if ($_POST[insertcommentary][$section]!==NULL &&
trim($_POST[insertcommentary][$section])!="") {
$commentary = str_replace_c("`n","",soap($_POST[insertcommentary][$section]));
$y = strlen_c($commentary);
for ($x=0;$x<$y;$x++){
if (substr_c($commentary,$x,1)=="`"){
$colorcount++;
if ($colorcount>=getsetting("maxcolors",10)){
$commentary = substr_c($commentary,0,$x).preg_replace("'[`].'","",substr_c($commentary,$x));
$x=$y;
}
$x++;
}
}
if (substr_c($commentary,0,1)!=":" &&
substr_c($commentary,0,2)!="::" &&
substr_c($commentary,0,3)!="/me" &&
$session['user']['drunkenness']>0) {
//drunk people shouldn't talk very straight.
$straight = $commentary;
$replacements=0;
while ($replacements/strlen_c($straight) < ($session['user']['drunkenness'])/500 ){
$slurs = array("a"=>"aa","e"=>"ee","f"=>"ff","h"=>"hh","i"=>"ij","l"=>"ll","m"=>"mm","n"=>"nn","o"=>"oo","r"=>"rr","s"=>"sh","u"=>"uu","v"=>"vv","w"=>"ww","y"=>"yy","z"=>"zz");
if (e_rand(0,9)) {
srand(e_rand());
$letter = array_rand($slurs);
$x = strpos_c(strtolower_c($commentary),$letter);
if ($x!==false &&
substr_c($comentary,$x,5)!="*hic*" &&
substr_c($commentary,max($x-1,0),5)!="*hic*" &&
substr_c($commentary,max($x-2,0),5)!="*hic*" &&
substr_c($commentary,max($x-3,0),5)!="*hic*" &&
substr_c($commentary,max($x-4,0),5)!="*hic*"
){
if (substr_c($commentary,$x,1)<>strtolower_c($letter)) $slurs[$letter] = strtoupper_c($slurs[$letter]); else $slurs[$letter] = strtolower_c($slurs[$letter]);
$commentary = substr_c($commentary,0,$x).$slurs[$letter].substr_c($commentary,$x+1);
$replacements++;
}
}else{
$x = e_rand(0,strlen_c($commentary));
if (substr_c($commentary,$x,5)=="*hic*") {$x+=5; } //output("moved 5 to $x ");
if (substr_c($commentary,max($x-1,0),5)=="*hic*") {$x+=4; } //output("moved 4 to $x ");
if (substr_c($commentary,max($x-2,0),5)=="*hic*") {$x+=3; } //output("moved 3 to $x ");
if (substr_c($commentary,max($x-3,0),5)=="*hic*") {$x+=2; } //output("moved 2 to $x ");
if (substr_c($commentary,max($x-4,0),5)=="*hic*") {$x+=1; } //output("moved 1 to $x ");
$commentary = substr_c($commentary,0,$x)."*hic*".substr_c($commentary,$x);
//output($commentary."`n");
$replacements++;
}//end if
}//end while
//output("$replacements replacements (".($replacements/strlen_c($straight)).")`n");
while (strpos_c($commentary,"*hic**hic*"))
$commentary = str_replace_c("*hic**hic*","*hic*hic*",$commentary);
}//end if
$commentary = preg_replace("'([^[:space:]]{45,45})([^[:space:]])'","\\1 \\2",$commentary);
if ($session['user']['drunkenness']>50) $talkline = "lallt";
$talkline = translate($talkline);
if ($talkline!="sagt" // do an emote if the area has a custom talkline and the user isn't trying to emote already.
&& substr_c($commentary,0,1)!=":"
&& substr_c($commentary,0,2)!="::"
&& substr_c($commentary,0,3)!="/me")
$commentary = ":`3$talkline: \\\"`#$commentary`3\\\"";
$sql = "SELECT commentary.comment,commentary.author FROM commentary WHERE section='$section' ORDER BY commentid DESC LIMIT 1";
$result = db_query($sql) or die(db_error(LINK));
$row = db_fetch_assoc($result);
db_free_result($result);
if ($row[comment]!=stripslashes($commentary) || $row[author]!=$session['user']['acctid']){
// if ($row[comment]!=$commentary || $row[author]!=$session['user']['acctid']){
$sql = "INSERT INTO commentary (postdate,section,author,comment) VALUES (now(),'$section',".$session['user']['acctid'].",\"$commentary\")";
db_query($sql) or die(db_error(LINK));
return true;
} else {
$doublepost = 1;
}
}
return false;
}
function viewcommentary($section,$message="Kommentar hinzufügen?",$limit=10,$talkline="sagt") {
global $_POST,$session,$REQUEST_URI,$_GET, $doublepost;
$nobios = array("motd.php"=>true);
if ($nobios[basename($_SERVER['SCRIPT_NAME'])]) $linkbios=false; else $linkbios=true;
//output("`b".basename($_SERVER['SCRIPT_NAME'])."`b`n");
if ($doublepost) output("`\$`bDoppelpost?`b`0`n");
$message = translate($message);
$com=(int)$_GET[comscroll];
$sql = "SELECT commentary.*,
accounts.name,
accounts.login,
accounts.loggedin,
accounts.location,
accounts.laston
FROM commentary
INNER JOIN accounts
ON accounts.acctid = commentary.author
WHERE section = '$section'
AND accounts.locked=0
ORDER BY commentid DESC
LIMIT ".($com*$limit).",$limit";
$result = db_query($sql) or die(db_error(LINK));
$counttoday=0;
for ($i=0;$i < db_num_rows($result);$i++){
$row = db_fetch_assoc($result);
$row[comment]=preg_replace("'[`][^123456789!@#$%&QqRr*~^?VvGgTtAa]'","",$row[comment]);
$commentids[$i] = $row[commentid];
/* limit posts
if (date("Y-m-d",strtotime($row[postdate]))==date("Y-m-d")){
// if ($row['name']==$session['user']['name'] && substr_c($section,0,5)!="house") $counttoday++;
}
*/
$x=0;
$ft="";
for ($x=0;strlen_c($ft)<3 && $x<strlen_c($row[comment]);$x++){
if (substr_c($row[comment],$x,1)=="`" && strlen_c($ft)==0) {
$x++;
}else{
$ft.=substr_c($row[comment],$x,1);
}
}
$link = "bio.php?char=".rawurlencode($row['login']) . "&ret=".URLEncode($_SERVER['REQUEST_URI']);
if (substr_c($ft,0,2)=="::") $ft = substr_c($ft,0,2);
else
if (substr_c($ft,0,1)==":") $ft = substr_c($ft,0,1);
if ($ft=="::" || $ft=="/me" || $ft==":"){
$x = strpos_c($row[comment],$ft);
if ($x!==false){
if ($linkbios)
$op[$i] = str_replace_c("&","&",HTMLEntities(substr_c($row[comment],0,$x)))
.'`0<a href="'.$link.'" style="text-decoration: none">\n`&'.$row['name'].'`0</a>\n`& '
.str_replace_c("&","&",HTMLEntities(substr_c($row[comment],$x+strlen_c($ft))))
."`0`n";
else
$op[$i] = str_replace_c("&","&",HTMLEntities(substr_c($row[comment],0,$x)))
.'`0\n`&'.$row['name'].'`0\n`& '
.str_replace_c("&","&",HTMLEntities(substr_c($row[comment],$x+strlen_c($ft))))
."`0`n";
}
}
if ($op[$i]=="")
if ($linkbios)
$op[$i] = '`0<a href="'.$link.'" style="text-decoration: none">`&'.$row['name'].'`0</a>`3 sagt: "`#'
.str_replace_c("&","&",HTMLEntities($row['comment']))."`3\"`0`n";
else
$op[$i] = '`0`&'.$row['name'].'`0`3 sagt: "`#'
.str_replace_c("&","&",HTMLEntities($row['comment']))."`3\"`0`n";
if ($message=="X") $op[$i]="`0($row[section]) ".$op[$i];
$loggedin=(date("U") - strtotime($row['laston']) < getsetting("LOGINTIMEOUT",900) && $row['loggedin'] && $row['location']==0);
if ($row['postdate']>=$session['user']['recentcomments']) $op[$i]=($loggedin?"<img src='images/new-online.gif' alt='>' width='3' height='5' align='absmiddle'> ":"<img src='images/new.gif' alt='>' width='3' height='5' align='absmiddle'> ").$op[$i];
addnav("",$link);
}
$i--;
$outputcomments=array();
$sect="x";
for (;$i>=0;$i--){
$out="";
if ($session['user']['superuser']>=3 && $message=="X"){
$out.="`0[ <a href='superuser.php?op=commentdelete&commentid=$commentids[$i]&return=".URLEncode($_SERVER['REQUEST_URI'])."'>Löschen</a> ] ";
addnav("","superuser.php?op=commentdelete&commentid=$commentids[$i]&return=".URLEncode($_SERVER['REQUEST_URI']));
$matches=array();
preg_match("/[(][^)]*[)]/",$op[$i],$matches);
$sect=$matches[0];
}
//output($op[$i],true);
$out.=$op[$i];
if (!is_array($outputcomments[$sect])) $outputcomments[$sect]=array();
array_push($outputcomments[$sect],$out);
}
ksort($outputcomments);
reset($outputcomments);
while (list($sec,$v)=each($outputcomments)){
if ($sec!="x") output("`n`b$sec`b`n");
output(implode('',$v),true);
}
if ($session['user']['loggedin']) {
//if ($counttoday<($limit/2) || $session['user']['superuser']>=2){
if ($message!="X"){
if ($talkline!="says") $tll = strlen_c($talkline)+11; else $tll=0;
output("<form action=\"$REQUEST_URI\" method='POST'>`@$message`n<input name='insertcommentary[$section]' size='40' maxlength='".(200-$tll)."'><input type='hidden' name='talkline' value='$talkline'><input type='hidden' name='section' value='$section'><input type='submit' class='button' value='Hinzufügen'>`n".(round($limit/2,0)-$counttoday<3?"`)(Du hast noch ".(round($limit/2,0)-$counttoday)." Beiträge für heute übrig)":"")."`0`n</form>",true);
addnav("",$REQUEST_URI);
}
// }else{
// output("`@$message`nSorry, du hast deine Beiträge in dieser Region für heute aufgebraucht.`0`n");
// }
}
if (db_num_rows($result)>=$limit){
$req = preg_replace("'[&]?c(omscroll)?=([[:digit:]-])*'","",$REQUEST_URI)."&comscroll=".($com+1);
//$req = substr_c($REQUEST_URI,0,strpos_c($REQUEST_URI,"c="))."&c=$_GET[c]"."&comscroll=".($com+1);
$req = str_replace_c("?&","?",$req);
if (!strpos_c($req,"?")) $req = str_replace_c("&","?",$req);
output("<a href=\"$req\"><< Vorherige</a>",true);
addnav("",$req);
}
$req = preg_replace("'[&]?c(omscroll)?=([[:digit:]]|-)*'","",$REQUEST_URI)."&comscroll=0";
//$req = substr_c($REQUEST_URI,0,strpos_c($REQUEST_URI,"c="))."&c=$_GET[c]"."&comscroll=".($com-1);
$req = str_replace_c("?&","?",$req);
if (!strpos_c($req,"?")) $req = str_replace_c("&","?",$req);
output(" <a href=\"$req\">Aktualisieren</a> ",true);
addnav("",$req);
if ($com>0){
$req = preg_replace("'[&]?c(omscroll)?=([[:digit:]]|-)*'","",$REQUEST_URI)."&comscroll=".($com-1);
//$req = substr_c($REQUEST_URI,0,strpos_c($REQUEST_URI,"c="))."&c=$_GET[c]"."&comscroll=".($com-1);
$req = str_replace_c("?&","?",$req);
if (!strpos_c($req,"?")) $req = str_replace_c("&","?",$req);
output(" <a href=\"$req\">Nächste >></a>",true);
addnav("",$req);
}
db_free_result($result);
}
function dhms($secs,$dec=false){
if ($dec===false) $secs=round($secs,0);
return (int)($secs/86400)."d".(int)($secs/3600%24)."h".(int)($secs/60%60)."m".($secs%60).($dec?substr_c($secs-(int)$secs,1):"")."s";
}
function getmount($horse=0) {
$sql = "SELECT * FROM mounts WHERE mountid='$horse'";
$result = db_query($sql);
if (db_num_rows($result)>0){
return db_fetch_assoc($result);
}else{
return array();
}
}
function debuglog($message,$target=0){
global $session;
//$sql = "DELETE from debuglog WHERE date <'".date("Y-m-d H:i:s",strtotime(date('c')."-".(getsetting("expirecontent",180)/10)." days"))."'";
//db_query($sql);
$sql = "INSERT INTO debuglog VALUES(0,now(),{$session['user']['acctid']},$target,'".addslashes($message)."')";
db_query($sql);
}
//für Adminrelevante Sachen
function a_debuglog($message,$target=0){
global $session;
//$sql = "DELETE from a_debuglog WHERE date <'".date("Y-m-d H:i:s",strtotime(date('c')."-".(getsetting("expirecontent",180)/10)." days"))."'";
//db_query($sql);
$sql = "INSERT INTO a_debuglog VALUES(0,now(),{$session['user']['acctid']},$target,'".addslashes($message)."')";
db_query($sql);
}
// exp bar mod coded by: dvd871 with modifications by: anpera
function expbar() {
global $session;
$exparray=array(1=>100,400,1002,1912,3140,4707,6641,8985,11795,15143,19121,23840,29437,36071,43930,55000);
while (list($key,$val)=each($exparray)){
$exparray[$key]= round($val + ($session['user']['dragonkills']/4) * $key * 100,0);
}
$exp = $session['user']['experience']-$exparray[$session['user']['level']-1];
$req=$exparray[$session['user']['level']]-$exparray[$session['user']['level']-1];
$u="<font face=\"verdana\" size=1>".$session['user']['experience']."<br>".grafbar($req,$exp)."</font>";
return($u);
}
// end exp bar mod
function grafbar($full,$left,$width=70,$height=5) {
$col2="#000000";
if ($left<=0){
$col="#000000";
}else if ($left<$full/4){
$col="#FF0000";
}else if ($left<$full/2){
$col="yellow";
}else if ($left>=$full){
$col="#00AA00";
$col2="#00AA00";
}else{
$col="#00FF00";
}
if ($full==0) $full=1;
$u = "<table cellspacing=\"0\" style=\"border: solid 1px #000000\" width=\"$width\" height=\"$height\"><tr><td width=\"" . ($left / $full * 100) . "%\" bgcolor=\"$col\"></td><td width=\"".(100-($left / $full * 100)) ."%\" bgcolor=\"$col2\"></td></tr></table>";
return($u);
}
if (file_exists("dbconnect.php")){
require_once "dbconnect.php";
}else{
echo "Du must die benötigten Informationen in die Datei \"dbconnect.php.dist\" eintragen und sie unter dem Namen \"dbconnect.php\" speichern.".
exit();
}
$link = db_pconnect($DB_HOST, $DB_USER, $DB_PASS) or die (db_error($link));
db_select_db ($DB_NAME) or die (db_error($link));
define("LINK",$link);
db_query("SET NAMES 'utf8'");
db_query("SET CHARACTER SET 'utf8'");
require_once "translator.php";
//session_register("session");
// Session einstellen & starten
session_name('Planetenchaos');
session_set_cookie_params(0, dirname($_SERVER['PHP_SELF']), $_SERVER['HTTP_HOST']);
session_start();
function register_global(&$var){
@reset($var);
while (list($key,$val)=@each($var)){
global $$key;
$$key = $val;
}
@reset($var);
}
$session =& $_SESSION['session'];
//echo nl2br(htmlentities(output_array($session)));
//register_global($_SESSION);
register_global($_SERVER);
if (strtotime(date('c')."-".getsetting("LOGINTIMEOUT",900)." seconds") > $session['lasthit'] && $session['lasthit']>0 && $session['loggedin']){
//force the abandoning of the session when the user should have been sent to the fields.
//echo "Session abandon:".(strtotime("now")-$session[lasthit]);
$session=array();
$session['message'].="`nDeine Session ist abgelaufen!`n";
}
$session[lasthit]=strtotime(date('c'));
$revertsession=$session;
if ($PATH_INFO != "") {
$SCRIPT_NAME=$PATH_INFO;
$REQUEST_URI="";
}
if ($REQUEST_URI==""){
//necessary for some IIS installations (CGI in particular)
if (is_array($_GET) && count($_GET)>0){
$REQUEST_URI=$SCRIPT_NAME."?";
reset($_GET);
$i=0;
while (list($key,$val)=each($_GET)){
if ($i>0) $REQUEST_URI.="&";
$REQUEST_URI.="$key=".URLEncode($val);
$i++;
}
}else{
$REQUEST_URI=$SCRIPT_NAME;
}
$_SERVER['REQUEST_URI'] = $REQUEST_URI;
}
$SCRIPT_NAME=substr_c($SCRIPT_NAME,strrpos_c($SCRIPT_NAME,"/")+1);
// Notfall-Fix gegen Cheaterei
if (substr_c($SCRIPT_NAME,strrpos_c($SCRIPT_NAME,".php"))!=".php" || strpos_c($PATH_INFO,".php")){
echo "Verarbeitung abgebrochen. Das Script ist ungueltig.";
exit();
}
if (strpos_c($REQUEST_URI,"?")){
$REQUEST_URI=$SCRIPT_NAME.substr_c($REQUEST_URI,strpos_c($REQUEST_URI,"?"));
}else{
$REQUEST_URI=$SCRIPT_NAME;
}
$allowanonymous=array("index.php"=>true,"login.php"=>true,"create.php"=>true,"about.php"=>true,"list.php"=>true,"petition.php"=>true,"connector.php"=>true,"logdnet.php"=>true,"referral.php"=>true,"news.php"=>true,"motd.php"=>true,"topwebvote.php"=>true,"source.php"=>true);
$allownonnav = array("badnav.php"=>true,"motd.php"=>true,"petition.php"=>true,"mail.php"=>true,"topwebvote.php"=>true,"chat.php"=>true,"source.php"=>true);
if ($session['loggedin']){
$sql = "SELECT * FROM accounts WHERE acctid = '".$session['user']['acctid']."'";
$result = db_query($sql);
if (db_num_rows($result)==1){
$session['user']=db_fetch_assoc($result);
$session['output']=$session['user']['output'];
$session['user']['dragonpoints']=unserialize($session['user']['dragonpoints']);
$session['user'][prefs]=unserialize($session['user'][prefs]);
if (!is_array($session['user']['dragonpoints'])) $session['user']['dragonpoints']=array();
if (is_array(unserialize($session['user'][allowednavs]))){
$session[allowednavs]=unserialize($session['user'][allowednavs]);
}else{
//depreciated, left only for legacy support.
$session[allowednavs]=createarray($session['user'][allowednavs]);
}
if (!$session['user']['loggedin'] || (0 && (date("U") - strtotime($session['user']['laston'])) > getsetting("LOGINTIMEOUT",900)) ){
$session=array();
redirect("index.php?op=timeout","Account ist nicht eingeloggt, aber die Session denkt, er ist es.");
}
}else{
$session=array();
$session['message']="`4Fehler! Dein Login war falsch.`0";
redirect("index.php","Account verschwunden!");
}
db_free_result($result);
if ($session[allowednavs][$REQUEST_URI] && !$allownonnav[$SCRIPT_NAME]){
$session[allowednavs]=array();
}else{
if (!$allownonnav[$SCRIPT_NAME]){
redirect("badnav.php","Navigation auf $REQUEST_URI nicht erlaubt");
}
}
}else{
//if ($SCRIPT_NAME!="index.php" && $SCRIPT_NAME!="login.php" && $SCRIPT_NAME!="create.php" && $SCRIPT_NAME!="about.php"){
if (!$allowanonymous[$SCRIPT_NAME]){
$session['message']="Du bist nicht eingeloggt. Wahrscheinlich ist deine Sessionzeit abgelaufen.";
redirect("index.php?op=timeout","Not logged in: $REQUEST_URI");
}
}
//if ($session['user']['loggedin']!=true && $SCRIPT_NAME!="index.php" && $SCRIPT_NAME!="login.php" && $SCRIPT_NAME!="create.php" && $SCRIPT_NAME!="about.php"){
if ($session['user']['loggedin']!=true && !$allowanonymous[$SCRIPT_NAME]){
redirect("login.php?op=logout");
}
$session[counter]++;
$nokeeprestore=array("newday.php"=>1,"badnav.php"=>1,"motd.php"=>1,"mail.php"=>1,"petition.php"=>1,"chat.php"=>1);
if (!$nokeeprestore[$SCRIPT_NAME]) { //strpos_c($REQUEST_URI,"newday.php")===false && strpos_c($REQUEST_URI,"badnav.php")===false && strpos_c($REQUEST_URI,"motd.php")===false && strpos_c($REQUEST_URI,"mail.php")===false
$session['user'][restorepage]=$REQUEST_URI;
}else{
}
if ($session['user']['hitpoints']>0){
$session['user']['alive']=true;
}else{
$session['user']['alive']=false;
}
$session['bufflist']=unserialize($session['user']['bufflist']);
if (!is_array($session['bufflist'])) $session['bufflist']=array();
$session['user'][lastip]=$REMOTE_ADDR;
if (strlen_c($_COOKIE[lgi])<32){
if (strlen_c($session['user'][uniqueid])<32){
$u=md5(microtime());
setcookie("lgi",$u,strtotime(date('c')."+365 days"));
$_COOKIE['lgi']=$u;
$session['user'][uniqueid]=$u;
}else{
setcookie("lgi",$session['user'][uniqueid],strtotime(date('c')."+365 days"));
}
}else{
$session['user'][uniqueid]=$_COOKIE[lgi];
}
$url = "http://".$_SERVER['SERVER_NAME'].dirname($_SERVER['REQUEST_URI']);
$url = substr_c($url,0,strlen_c($url)-1);
if (substr_c($_SERVER['HTTP_REFERER'],0,strlen_c($url))==$url || $_SERVER['HTTP_REFERER']==""){
}else{
$sql = "SELECT * FROM referers WHERE uri='{$_SERVER['HTTP_REFERER']}'";
$result = db_query($sql);
$row = db_fetch_assoc($result);
db_free_result($result);
$site = str_replace_c("http://","",$_SERVER['HTTP_REFERER']);
if (strpos_c($site,"/"))
$site = substr_c($site,0,strpos_c($site,"/"));
if ($row['refererid']>""){
$sql = "UPDATE referers SET count=count+1,last=now(),site='".addslashes($site)."' WHERE refererid='{$row['refererid']}'";
}else{
$sql = "INSERT INTO referers (uri,count,last,site) VALUES ('{$_SERVER['HTTP_REFERER']}',1,now(),'".addslashes($site)."')";
}
db_query($sql);
}
if ($_COOKIE['template']!="") $templatename=$_COOKIE['template'];
if ($templatename=="" || !file_exists("templates/$templatename")) $templatename="yarbrough.htm";
$template = loadtemplate($templatename);
//tags that must appear in the header
$templatetags=array('title',"headscript","script");
foreach ($templatetags AS $val) {
if (strpos_c($template['header'],"{".$val."}")===false) $templatemessage.="You do not have {".$val."} defined in your header\n";
}
//tags that must appear in the footer
$templatetags=array();
foreach ($templatetags AS $val) {
if (strpos_c($template['footer'],"{".$val."}")===false) $templatemessage.="You do not have {".$val."} defined in your footer\n";
}
//tags that may appear anywhere but must appear
//touch the copyright and we will force your server to be shut down
$templatetags=array("nav","stats","petition","motd","mail","paypal","copyright","source");
foreach ($templatetags AS $val) {
if (strpos_c($template['header'],"{".$val."}")===false && strpos_c($template['footer'],"{".$val."}")===false) $templatemessage.="You do not have {".$val."} defined in either your header or footer\n";
}
if ($templatemessage!=""){
echo "<b>Du hast einen oder mehrere Fehler in deinem Template!</b><br>".nl2br($templatemessage);
$template=loadtemplate("yarbrough.htm");
}
$races=array(1=>"Troll",2=>"Elf",3=>"Mensch",4=>"Zwerg",5=>"Echse",0=>"Unbekannt",50=>"Hoverschaf");
$colraces=array(1=>"`2Troll`0",2=>"`^Elf`0",3=>"`0Mensch",4=>"`#Zwerg`0",5=>"`5Echse`0",0=>"`)Unbekannt`0",50=>"Hoverschaf");
$logd_version = "0.9.7+jt ext (GER)";
$session['user']['laston']=date("Y-m-d H:i:s");
$playermount = getmount($session['user']['hashorse']);
$titles = array(
0=>array("Bauernjunge","Bauernmädchen"),
1=>array("Knecht", "Magd"),
2=>array("Bauer", "Bäuerin"),
3=>array("Grossbauer", "Grossbäuerin"),
4=>array("Spurenleser","Spurenleserin"),
5=>array("Jäger","Jägerin"),
6=>array("Gutshofverwalter","Gutshofverwalterin"),
7=>array("Gutsherr","Gutsherrin"),
8=>array("Bürger","Bürgerin"),
9=>array("Gladiator","Gladiatorin"),
10=>array("Legionär","Legionärin"),
11=>array("Centurio","Centurioness"),
12=>array("Meister","Meisterin"),
13=>array("Ratsherr", "Ratsfrau"),
14=>array("Verwalter","Verwalterin"),
15=>array("Bürgermeister", "Bürgermeisterin"),
16=>array("Major", "Major"),
17=>array("General", "General"),
18=>array("Edler", "Edle"),
19=>array("Ritter", "Ritterin"),
20=>array("Junker", "Junkerin"),
21=>array("Freiherr", "Freifrau"),
22=>array("Baron", "Baronin"),
23=>array("Fürst", "Fürstin"),
24=>array("Grossfürst", "Grossfürstin"),
25=>array("Herzog", "Herzogin"),
26=>array("Graf", "Gräfin"),
27=>array("Prinz", "Prinzessin"),
28=>array("Kronprinz", "Kronprinzessin"),
29=>array("König", "Königin"),
30=>array("Kaiser", "Kaiserin"),
31=>array("Drachentöter","Drachentöterin"),
32=>array("Bischof","Bischöfin"),
33=>array("Papst", "Päpstin"),
34=>array("Seele", "Seele"),
35=>array("Seliger", "Selige"),
36=>array("Heiliger", "Heilige"),
37=>array("Engel", "Engel"),
38=>array("Erzengel", "Erzengel"),
39=>array("Kraft", "Kraft"),
40=>array("Macht", "Macht"),
41=>array("Herrschaft", "Herrschaft"),
42=>array("Thron", "Thron"),
43=>array("Seraphim", "Seraphim"),
44=>array("Cherubim", "Cherubim"),
45=>array("Titan","Titanin"),
46=>array("Erztitan","Erztitanin"),
47=>array("Halbgott", "Halbgöttin"),
48=>array("Untergott","Untergöttin")
);
$beta = (getsetting("beta",0) == 1 || $session['user']['beta']==1);
?>