[php]<?php
// 12092004
require_once "dbwrapper.php";
require_once "anticheat.php";
$pagestarttime = getmicrotime();
$nestedtags=array();
$output="";
function adddbfield($table,$field,$type,$default=0)
{ $found = FALSE;
$sql = "SELECT * FROM ".$table;
$result = db_query($sql) or die(db_error(LINK));
$fields = mysql_num_fields($result);
for ($i=0; $i < $fields; $i++)
{ if (mysql_field_name($result, $i)==$field) { $found=TRUE; } }
if (!$found)
{ $sql = "ALTER TABLE `".$table."` ADD `".$field."` ".$type." NOT NULL DEFAULT ".$default."";
$result = db_query($sql) or die(db_error(LINK));
}
}
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(" " . $_SERVER['HTTP_ACCEPT_ENCODING'], "x-gzip")){
$encode = "x-gzip";
}
elseif(strpos(" " . $_SERVER['HTTP_ACCEPT_ENCODING'], "gzip")){
$encode = "gzip";
}
if (isset($encode)){
header("Content-Encoding: $encode");
$encode_size = strlen($input);
$encode_crc = crc32($input);
$out = "\x1f\x8b\x08\x00\x00\x00\x00\x00";
$out .= substr(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("\n","",$subject);
$subject=str_replace("`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("\n","",$subject);
$subject=str_replace("`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");
}
if ($session['user']['level']==15) {
addnav("Seltsame Lichtung","cruxis.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("","forest.php");
if ($session['user']['level']>=15 && $session['user']['seendragon']==0){
addnav("G?`@Den Grünen Drachen suchen","forest.php?op=dragon");
}
addnav("Wege");
addnav("M?Zurück zum Marktplatz","marktplatz.php");
addnav("Z?Zurück zum Hinterhof","hinterhof.php");
addnav("Z?Zurück zum Dorf","village.php");
addnav("Sonstiges");
addnav("Banküberweisung","schnellbank.php");
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($entry, ".php") === false) continue;
// Skip any hidden files
if (substr($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(". ",". Bork bork. ",$out);
$out = str_replace(", ",", bork, ",$out);
$out = str_replace(" h"," hoor",$out);
$out = str_replace(" v"," veer",$out);
$out = str_replace("g ","gen ",$out);
$out = str_replace(" p"," pere",$out);
$out = str_replace(" qu"," quee",$out);
$out = str_replace("n ","nen ",$out);
$out = str_replace("e ","eer ",$out);
$out = str_replace("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("/","",$PHP_SELF);
$script = substr($PHP_SELF,strrpos($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]>=4) {
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($data,"`")) === false) ){
$tag=substr($data,$x+1,1);
$append=substr($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($data,$x+2);
switch($tag){
case "0":
if ($nestedtags[font]) $output.="</span>";
unset($nestedtags[font]);
break;
//Grau
case "1":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colGrau1'>";
break;
case "2":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colGrau2'>";
break;
case "3":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colGrau3'>";
break;
case "4":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colGrau4'>";
break;
case "5":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colGrau5'>";
break;
case "6":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colGrau6'>";
break;
//Blau
case "!":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colBlau1'>";
break;
case "§":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colBlau2'>";
break;
case "$":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colBlau3'>";
break;
case "%":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colBlau4'>";
break;
case "&":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colBlau5'>";
break;
case ")":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colBlau6'>";
break;
case "?":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colBlau7'>";
break;
//Gruen
case "Q":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colGruen1'>";
break;
case "q":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colGruen2'>";
break;
case "V":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colGruen3'>";
break;
case "E":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colGruen4'>";
break;
case "e":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colGruen5'>";
break;
case "r":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colGruen6'>";
break;
case "R":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colGruen7'>";
break;
//Rot
case "t":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colRot1'>";
break;
case "T":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colRot2'>";
break;
case "z":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colRot3'>";
break;
case "Z":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colRot4'>";
break;
case "u":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colRot5'>";
break;
//Orange
case "7":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colOrange1'>";
break;
case "8":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colOrange2'>";
break;
case "9":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colOrange3'>";
break;
//Gelb
case "o":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colGelb1'>";
break;
case "^":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colGelb2'>";
break;
case "p":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colGelb3'>";
break;
//Braun
case "a":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colBraun1'>";
break;
case "v":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colBraun2'>";
break;
case "A":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colBraun3'>";
break;
case "s":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colBraun4'>";
break;
//Lila
case "#":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colLila1'>";
break;
case "D":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colLila2'>";
break;
case "G":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colLila3'>";
break;
case "g":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colLila4'>";
break;
case "h":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colLila5'>";
break;
case "f":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colLila6'>";
break;
case "@":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colLila7'>";
break;
case "k":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colLila8'>";
break;
case "H":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colLila9'>";
break;
//Grau2
case "I":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colGrau7'>";
break;
case "L":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colGrau8'>";
break;
case "y":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colGrau9'>";
break;
case "Y":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colGrau10'>";
break;
case "x":
if ($nestedtags[font]) $output.="</span>"; else $nestedtags[font]=true;
$output.="<span class='colGrau11'>";
break;
//Hintergründe
case "F":
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'>";
//Special Funktionen
break;
case "c":
if ($nestedtags[div]) {
$output.="</div>";
unset($nestedtags[div]);
}else{
$nestedtags[div]=true;
$output.="<div align='center'>";
}
break;
case "+":
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($out,"{".$key."}")===false) output("`bWarnung:`b Das `i$key`i Teil wurde im `i$itemname`i Template nicht gefunden! (".$out.")`n");
$out = str_replace("{"."$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])){
$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";
$kla=array(0=>"Keine Klamotten",
1=>"Weises Kleid",
2=>"Drachenleder Kleid",
3=>"Schwarzes Jacket",
4=>"Drachenleder Jacket");
$arm=array(0=>"Kein Armband",
1=>"Goldenes Armband",
2=>"Drachen Armband");
$shoes=array(0=>"Keine Schuhe",
1=>"Wanderschuhe",
2=>"Sportschuhe",
3=>"Lederstiefel",
4=>"Drachen Stiefel");
$hair=array(0=>"Glatze",
1=>"Glatze",
2=>"Glatze",
3=>"Glatze",
4=>"Glatze",
5=>"Glatze",
6=>"Glatze",
7=>"Glatze",
8=>"Glatze",
9=>"Glatze",
10=>"Kurze Haare",
11=>"Kurze Haare",
12=>"Kurze Haare",
13=>"Kurze Haare",
14=>"Kurze Haare",
15=>"Kurze Haare",
16=>"Kurze Haare",
17=>"Kurze Haare",
18=>"Kurze Haare",
19=>"Kurze Haare",
20=>"Normale Länge",
21=>"Normale Länge",
22=>"Normale Länge",
23=>"Normale Länge",
24=>"Normale Länge",
25=>"Normale Länge",
26=>"Normale Länge",
27=>"Normale Länge",
28=>"Normale Länge",
29=>"Normale Länge",
30=>"Normale Länge",
31=>"Normale Länge",
32=>"Normale Länge",
33=>"Normale Länge",
34=>"Normale Länge",
35=>"Normale Länge",
36=>"Normale Länge",
37=>"Normale Länge",
38=>"Normale Länge",
39=>"Normale Länge",
40=>"Lange Haare",
41=>"Lange Haare",
42=>"Lange Haare",
43=>"Lange Haare",
44=>"Lange Haare",
45=>"Lange Haare",
46=>"Lange Haare",
47=>"Lange Haare",
48=>"Lange Haare",
49=>"Lange Haare",
50=>"Lange Haare",
51=>"Lange Haare",
52=>"Lange Haare",
53=>"Lange Haare",
54=>"Lange Haare",
55=>"Lange Haare",
56=>"Lange Haare",
57=>"Lange Haare",
58=>"Lange Haare",
59=>"Lange Haare",
60=>"Lang und Ungeflegt",
61=>"Lang und Ungeflegt",
62=>"Lang und Ungeflegt",
63=>"Lang und Ungeflegt",
64=>"Lang und Ungeflegt",
65=>"Lang und Ungeflegt",
66=>"Lang und Ungeflegt",
67=>"Lang und Ungeflegt",
68=>"Lang und Ungeflegt",
69=>"Lang und Ungeflegt",
70=>"Lang und Ungeflegt",
71=>"Lang und Ungeflegt",
72=>"Lang und Ungeflegt",
73=>"Lang und Ungeflegt",
74=>"Lang und Ungeflegt",
75=>"Lang und Ungeflegt",
76=>"Lang und Ungeflegt",
77=>"Lang und Ungeflegt",
78=>"Lang und Ungeflegt",
79=>"Lang und Ungeflegt",
80=>"Lang und Ungeflegt");
$nagel=array(0=>"Kurz",
1=>"Kurz",
2=>"Kurz",
3=>"Kurz",
4=>"Kurz",
5=>"Kurz",
6=>"Kurz",
7=>"Kurz",
8=>"Kurz",
9=>"Kurz",
10=>"Normal",
11=>"Normal",
12=>"Normal",
13=>"Normal",
14=>"Normal",
15=>"Normal",
16=>"Normal",
17=>"Normal",
18=>"Normal",
19=>"Normal",
20=>"Gepflegt",
21=>"Gepflegt",
22=>"Gepflegt",
23=>"Gepflegt",
24=>"Gepflegt",
25=>"Gepflegt",
26=>"Gepflegt",
27=>"Gepflegt",
28=>"Gepflegt",
29=>"Gepflegt",
30=>"French-Maniküre",
31=>"Gepflegt",
32=>"Gepflegt",
33=>"Gepflegt",
34=>"Gepflegt",
35=>"Gepflegt",
36=>"Gepflegt",
37=>"Gepflegt",
38=>"Gepflegt",
39=>"Gepflegt",
40=>"Ungepflegt",
41=>"Ungepflegt",
42=>"Ungepflegt",
43=>"Ungepflegt",
44=>"Ungepflegt",
45=>"Ungepflegt",
46=>"Ungepflegt",
47=>"Ungepflegt",
48=>"Ungepflegt",
49=>"Ungepflegt",
50=>"Ungepflegt",
51=>"Ungepflegt",
52=>"Ungepflegt",
53=>"Ungepflegt",
54=>"Ungepflegt",
55=>"Ungepflegt",
56=>"Ungepflegt",
57=>"Ungepflegt",
58=>"Ungepflegt",
59=>"Ungepflegt",
60=>"Ungepflegt");
$hairco=array(0=>"Braun",
1=>"Schwarz",
2=>"Blond",
3=>"Grün",
4=>"Pink",
5=>"Rot",
6=>"Blau",
7=>"Bunt");
/* $nail=array(0=>"Kurz",
10=>"Normal",
20=>"Gepflegt",
30=>"French-Maniküre");
*/
$nailco=array(0=>"Keine",
1=>"Schwarz",
2=>"Gelb",
3=>"Lila",
4=>"Rot",
5=>"Blau",
6=>"Pink",
7=>"Klarlack");
$orden=array(1=>"Wasserorden",
2=>"Wasserorden `n
Feuerorden",
3=>"Wasserorden `n
Feuerorden `n
Windorden",
4=>"Wasserorden `n
Feuerorden `n
Windorden `n
Erdorden");
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"=>"Ausrüstung"))
.templatereplace("statrow",array("title"=>"Waffe","value"=>$u['weapon']))
.templatereplace("statrow",array("title"=>"Rüstung","value"=>$u['armor']))
.templatereplace("statrow",array("title"=>"Orden","value"=>$orden[$u['orden']]))
.templatereplace("statrow",array("title"=>"Klamotten","value"=>$kla[$u['klamotten']]))
.templatereplace("statrow",array("title"=>"Armband","value"=>$arm[$u['armband']]))
.templatereplace("statrow",array("title"=>"Schuhe","value"=>$shoes[$u['schuhe']]))
.templatereplace("stathead",array("title"=>"Aussehen"))
.templatereplace("statrow",array("title"=>"Haare","value"=>$hair[$u['frisur']]))
.templatereplace("statrow",array("title"=>"Haarfarbe","value"=>$hairco[$u['hairco']]))
.templatereplace("statrow",array("title"=>"Nägel","value"=>$nagel[$u['nagel']]))
.templatereplace("statrow",array("title"=>"Nagelfarbe","value"=>$nailco[$u['nagelco']]))
.templatereplace("stathead",array("title"=>"Weitere Infos"))
.templatereplace("statrow",array("title"=>"Gold","value"=>$u['gold']))
.templatereplace("statrow",array("title"=>"Gold in Bank","value"=>$u['goldinbank']))
.templatereplace("statrow",array("title"=>"Erfahrung","value"=>expbar()))
,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("r")."-".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($link,"?")){
$extra="&c=$session[counter]";
}else{
$extra="?c=$session[counter]";
}
}
if ($newwin===false) $extra.="-".date("His");
//$link = str_replace(" ","%20",$link);
//hotkey for the link.
$key="";
if (substr($text,1,1)=="?") {
// check to see if a key was specified up front.
if ($accesskeys[strtolower(substr($text, 0, 1))]==1){
// output ("key ".substr($text,0,1)." already taken`n");
$text = substr($text,2);
}else{
$key = substr($text,0,1);
$text = substr($text,2);
//output("key set to $key`n");
$found=false;
for ($i=0;$i<strlen($text); $i++){
$char = substr($text,$i,1);
if ($ignoreuntil == $char){
$ignoreuntil="";
}else{
if ($ignoreuntil<>""){
if ($char=="<") $ignoreuntil=">";
if ($char=="&") $ignoreuntil=";";
if ($char=="`") $ignoreuntil=substr($text,$i+1,1);
}else{
if ($char==$key) {
$found=true;
break;
}
}
}
}
if ($found==false) {
if (strpos($text, "__") !== false)
$text=str_replace("__", "(".$key.") ", $text);
else
$text="(".strtoupper($key).") ".$text;
$i=strpos($text, $key);
// output("Not found`n");
}
}
//
}
if ($key==""){
for ($i=0;$i<strlen($text); $i++){
$char = substr($text,$i,1);
if ($ignoreuntil == $char) {
$ignoreuntil="";
}else{
if (($accesskeys[strtolower($char)]==1) || (strpos("abcdefghijklmnopqrstuvwxyz0123456789", strtolower($char)) === false) || $ignoreuntil<>"") {
if ($char=="<") $ignoreuntil=">";
if ($char=="&") $ignoreuntil=";";
if ($char=="`") $ignoreuntil=substr($text,$i+1,1);
}else{
break;
}
}
}
}
if ($i<strlen($text)){
$key=substr($text,$i,1);
$accesskeys[strtolower($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($text,0,strpos($text,$key))."`H".$key."`H".substr($text,strpos($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(" ", "%20", $link).$extra]=true;
$session[allowednavs][str_replace(" ", "+", $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($_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 = split(",",$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("{","<blockquote>{",str_replace("}","}</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;
case "textarea":
$output.="<textarea name='$key' class='input' cols='$info[2]' rows='$info[3]'>".HTMLEntities($row[$key])."</textarea>";
break;
case 'file':
$output .= "<input name='$key' type='file'>";
break;
// default:
// $output.=("<input size='50' name='$key' value=\"".HTMLEntities($row[$key])."\">");
case "text":
$output.=("<input size='50' name='$key' maxlength=\"".$info[2]."\" value=\"".HTMLEntities($row[$key])."\">");
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($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 = split("<!--!",$fulltemplate);
while (list($key,$val)=each($fulltemplate)){
$fieldname=substr($val,0,strpos($val,"-->"));
if ($fieldname!=""){
$template[$fieldname]=substr($val,strpos($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("{headscript}","<script language=\"JavaScript\" type=\"text/javascript\">".popup("motd.php")."</script>",$header);
$session[needtoviewmotd]=true;
}else{
$header=str_replace("{headscript}","",$header);
$session[needtoviewmotd]=false;
}
$header=str_replace("{title}",$title,$header);
}
function popup($page){
return "window.open('$page','".preg_replace("([^[:alnum:]])","",$page)."','scrollbars=yes,resizable=yes,width=550,height=300')";
}
function page_footer(){
$forumlink=getsetting("forum",&qu