Ausbaustufen: Weitere Zimmer und mehr Platz durch Ausbauten # -> Klassenbasiertes Modulsystem: Zusätzliche Zimmer als Add-Ons # -> Frei wählbare Hauskonfiguration ############################################################################*/ /** * @todo Houselocation noch dynamisch bestimmen! */ $houselocation = 1; require_once "common.php"; require_once "lib/houseclasses.php"; addcommentary(); checkday(); page_header("Das Wohnviertel"); switch($_GET['op']) { case "newday": output("`2Gut erholt wachst du im Haus auf und bist bereit für neue Abenteuer."); $session['user']['location']=0; $sql = "UPDATE items SET hvalue=0 WHERE hvalue>0 AND owner=".$session['user']['acctid']." AND class='Schlüssel'"; db_query($sql) or die(sql_error($sql)); addnav("Tägliche News","news.php"); addnav("Wohnviertel","nhouses.php?op=betreten"); addnav("Zurück ins Dorf","village.php"); break; case "bio": if(!$_GET['id']) redirect("nhouses.php"); $haus = new haus($_GET['id']); $haus->bio(); break; case "bauen": switch($_GET['act']) { case "start": // Begin des Hausbaus $zahl = haus::getNewHausId(); if($zahl == 0) { $sql = "INSERT INTO houses (owner,status,gold,gems,housename,location) VALUES (".$session['user']['acctid'].",0,0,0,'".$session['user']['login']."s Haus',".$houselocation.")"; } else { $sql = "INSERT INTO houses (houseid,owner,status,gold,gems,housename,location) VALUES (".$zahl.",".$session['user']['acctid'].",0,0,0,'".$session['user']['login']."s Haus',".$session['houselocation'].")"; } db_query($sql) or die(db_error(LINK)); $haus = new haus($session['user']['acctid'],true); $session['user']['house']=$haus->id; output("`@Du erklärst das Fleckchen Erde zu deinem Besitz und kannst mit dem Bau von Hausnummer `^".$haus->id."`@ beginnen.`n`n"); output("`0
",true); output("`nGebe einen Namen für dein Haus ein: `n",true); output("`nWieviel Gold anzahlen? `n",true); output("`nWieviele Edelsteine? `n",true); output("",true); addnav("","nhouses.php?op=bauen&act=weiterbau"); break; case "weiterbau": // Weiterführender Hausbau $haus = new haus($session['user']['acctid'],true); $gezahltesgold = (int)$_POST['gold']; $gezahltegems = (int)$_POST['gems']; // Eventuelle Namensänderung: if ($_POST['hausname']>"") $haus->name = stripslashes($_POST['hausname']); if ($session['user']['gold'] < $gezahltesgold || $session['user']['gems'] < $gezahltegems) { output("`@Du hast nicht genug dabei!"); addnav("Nochmal","nhouses.php?op=bauen"); } else if ($session['user']['turns'] < 1) { output("`@Du bist zu müde, um heute noch an deinem Haus zu arbeiten!"); } else if ($gezahltesgold < 0 || $gezahltegems < 0) { output("`@Versuch hier besser nicht zu beschummeln."); } else { output("`@Du baust für `^".$gezahltesgold."`@ Gold und `#".$gezahltegems."`@ Edelsteine an deinem Haus \"`&".$haus->name."`@\"...`n"); // Abrechnung Gold: $haus->gold += $gezahltesgold; $session['user']['gold'] -= $gezahltesgold; output("`nDu verlierst einen Waldkampf durch die aufwändige Arbeit."); $session['user']['turns']--; if ($haus->gold > $haus->goldkosten) { output("`nDu hast die kompletten Goldkosten bezahlt und bekommst das überschüssige Gold zurück."); $session['user']['gold'] += $haus->gold - $haus->goldkosten; $haus->gold=$haus->goldkosten; } // Abrechnung Gems: $haus->gems+=$gezahltegems; $session['user']['gems']-=$gezahltegems; if ($haus->gems > $haus->gemskosten) { output("`nDu hast die kompletten Edelsteinkosten bezahlt und bekommst überschüssige Edelsteine zurück."); $session['user']['gems']+=$haus->gems - $haus->gemskosten; $haus->gems=$haus->gemskosten; } $haus->eintragen(); // Übersicht: $done=round(100-((100 * $gezahltesgold / $haus->goldkosten) + (100 * $gezahltegems / $haus->gemskosten))/2); if ($haus->gems >= $haus->gemskosten && $haus->gold >= $haus->goldkosten) $done = 100; output("`n`n".grafbar(100,$done,"100%",20)."`n",true); output("`nDein Haus ist damit zu `\$".$done."%`@ fertig. Du musst noch `^".($haus->goldkosten - $haus->gold)."`@ Gold und `#".($haus->gemskosten - $haus->gems)." `@Edelsteine bezahlen, bis du einziehen kannst."); if ($haus->gems >= $haus->gemskosten && $haus->gold >= $haus->goldkosten) $haus->hausbauen(); } addnav("Zurück zum Wohnviertel","nhouses.php"); addnav("Zurück zum Dorf","village.php"); break; default: if ($session['user']['housekey'] > 0) { output("`@Du hast bereits Zugang zu einem fertigen Haus und brauchst kein zweites. Wenn du ein neues oder ein eigenes Haus bauen willst, musst du erst aus deinem jetzigen Zuhause ausziehen."); } else if ($session['user']['dragonkills'] < getsetting("abwannbauen",2)) { output("`@Du hast noch nicht genug Erfahrung, um ein eigenes Haus bauen zu können. Du kannst aber bei einem Freund einziehen, wenn er dir einen Schlüssel für sein Haus gibt."); } else if ($session['user']['turns'] < 1) { output("`@Du bist zu erschöpft, um heute noch irgendetwas zu bauen. Warte bis morgen."); } else if ($session['user']['house'] > 0) { $haus = new haus($session['user']['acctid'],true); output("`@Du besichtigst die Baustelle deines neuen Hauses mit der Hausnummer `3".$haus->id." - ".$haus->name."`@.`n`n"); $goldzuzahlen = $haus->goldkosten - $haus->gold; $gemszuzahlen = $haus->gemskosten - $haus->gems; $done=round(100-((100 * $goldzuzahlen / $haus->goldkosten) + (100 * $gemszuzahlen / $haus->gemskosten))/2); output(grafbar(100,$done,"100%",20),true); output("`nEs ist zu `\$".$done."%`@ fertig. Du musst noch `^$goldzuzahlen`@ Gold und `#$gemszuzahlen `@Edelsteine bezahlen.`nWillst du jetzt weiter bauen?`n`n"); output("`0",true); output("`nWieviel Gold zahlen? `n",true); output("`nWieviele Edelsteine? `n",true); output("",true); addnav("","nhouses.php?op=bauen&act=weiterbau"); } else { output("`@Du siehst ein schönes Fleckchen für ein Haus und überlegst dir, ob du nicht selbst eines bauen solltest, anstatt ein vorhandenes zu kaufen oder noch länger in Kneipe und Feldern zu übernachten."); output(" Ein Haus zu bauen würde dich `^".getsetting("baukostengold",50000)." Gold`@ und `#".getsetting("baukostengems",50000)." Edelsteine`@ kosten. Du mußt das nicht auf einmal bezahlen, sondern könntest immer wieder mal für einen kleineren Betrag ein Stück "); output("weiter bauen. Wie schnell du zu deinem Haus kommst, hängt also davon ab, wie oft und wieviel du bezahlst.`n"); output("Du kannst in deinem zukünftigen Haus alleine wohnen, oder es mit anderen teilen. Es bietet einen sicheren Platz zum Übernachten und einen Lagerplatz für einen Teil deiner Reichtümer."); output(" Ein gestartetes Bauvorhaben kann nicht abgebrochen werden.`n`nWillst du mit dem Hausbau beginnen?"); addnav("Hausbau beginnen","nhouses.php?op=bauen&act=start"); } addnav("Zurück zum Wohnviertel","nhouses.php"); addnav("Zurück zum Dorf","village.php"); break; } // Ende Bauen-Switch break; case "einbrechen": if (!$_GET['id']) { if ($_POST['search']>"" || $_GET['search']>""){ if ($_GET['search']>"") $_POST['search']=$_GET['search']; if (strcspn($_POST['search'],"0123456789")<=1){ $search="houseid=".intval($_POST['search'])." AND "; }else{ $search="%"; for ($x=0;$xNach Hausname oder Nummer ",true); addnav("","nhouses.php?op=einbrechen"); if ($session['user']['pvpflag']=="5013-10-06 00:42:00") output("`n`&(Du hast PvP-Immunität gekauft. Diese verfällt, wenn du jetzt angreifst!)`0`n`n"); output("",true); $result = db_query($sql) or die(db_error(LINK)); if (db_num_rows($result)>$ppp) addnav("Nächste Strasse","nhouses.php?op=einbruch&limit=".($page+1)."&search=$_POST[search]"); if (db_num_rows($result)==0){ output("",true); }else{ for ($i=0;$i",true); output("",true); addnav("","nhouses.php?op=einbrechen&id=".$haus->id); } } output("
`bHausNr.`b`bName`b`bEigentümer`bStufeZimmer
`&`iEs gibt momentan keine bewohnten Häuser`i`0
".$haus->id."".$haus->name."".$haus->besitzer."".$haus->level->name."".count($haus->ausbauten)."
",true); addnav("Umkehren","nhouses.php"); } else { if ($session['user']['turns']<1 || $session['user']['playerfights']<=0) { output("`nDu bist wirklich schon zu müde, um ein Haus zu überfallen."); addnav("Zurück","nhouses.php"); } else { output("`2Du näherst dich vorsichtig Haus Nummer ".$_GET['id']); $session['housekey']=$_GET['id']; // Abfrage, ob Schlüssel vorhanden!! $sql = "SELECT id FROM items WHERE owner=".$session['user']['acctid']." AND class='Schlüssel' AND value1=".(int)$_GET['id']." ORDER BY id DESC"; $result2 = db_query($sql) or die(db_error(LINK)); if (db_num_rows($result2)>0) { db_free_result($result); output(". An der Haustür angekommen suchst du etwas, um die Tür möglichst unauffällig zu öffnen. Am besten dürfte dafür der Hausschlüssel geeignet sein, "); output(" den du einstecken hast.`nWolltest du wirklich gerade in ein Haus einbrechen, für das du einen Schlüssel hast?"); addnav("Haus betreten","nhouses.php?op=drin&id=$_GET[id]"); addnav("Zurück zum Dorf","village.php"); } else { // Wache besiegen output("Deine gebückte Haltung und der schleichende Gang machen eine Stadtwache aufmerksam...`n"); $data = haus::strongest($_GET['id']); if ($data['athome']>0){ $badguy = array("creaturename"=>"Stadtwache","creaturelevel"=>$session['user']['level'],"creatureweapon"=>"Holzknüppel","creatureattack"=>$session['user']['attack'],"creaturedefense"=>$session['user']['defence'],"creaturehealth"=>abs($session['user']['maxhitpoints'] - $date['hp'])+1, "diddamage"=>0); }else{ $badguy = array("creaturename"=>"Stadtwache","creaturelevel"=>$session['user']['level'],"creatureweapon"=>"starker Holzknüppel","creatureattack"=>$session['user']['attack'],"creaturedefense"=>$session['user']['defence'],"creaturehealth"=>abs(max($session['user']['maxhitpoints'], $session['user']['hitpoints'])), "diddamage"=>0); $session['user']['playerfights']--; $session['user']['reputation']-=7; } $session['user']['badguy']=createstring($badguy); $fight=true; } } } break; case "einsteigen": $data = haus::strongest(); addnav("Flüchte","village.php"); if ($data['athome']>0){ output("`n Dir kommen $athome misstrauische Bewohner schwer bewaffnet entgegen. Der wahrscheinlich Stärkste von ihnen wird sich jeden Augenblick auf dich stürzen, "); output(" wenn du die Situation nicht sofort entschärfst."); addnav("Kämpfe","pvp.php?act=attack&bg=2&name=".rawurlencode($data['name'])); } else { output(" Du hast Glück, denn es scheint niemand daheim zu sein. Das wird sicher ein Kinderspiel."); addnav("Einsteigen","nhouses.php?op=klauen&id=$session[housekey]"); } break; case "klauen": if(!isset($session['housekey']) && isset($_GET['id'])) $session['housekey']=$_GET['id']; $haus = new haus($session['housekey']); $haus->klauen(); break; case "run": output("`%Die Wache lässt dich nicht entkommen!`n"); $session['user']['reputation']--; $fight=true; break; case "fight": $fight=true; break; case "kaufen": if (!$_GET['id']) { $ppp=10; // Player Per Page to display if (!$_GET['limit']){ $page=0; }else{ $page=(int)$_GET[limit]; addnav("Vorherige Seite","nhouses.php?op=kaufen&limit=".($page-1).""); } $limit="".($page*$ppp).",".($ppp+1); $sql = "SELECT houseid FROM houses WHERE (status=2 OR status=3 OR status=4) AND location=".$session['houselocation']." ORDER BY houseid ASC LIMIT $limit"; output("`c`b`^Unbewohnte Häuser`b`c`0`n"); output("",true); $result = db_query($sql) or die(db_error(LINK)); if (db_num_rows($result)>$ppp) addnav("Nächste Seite","nhouses.php?op=kaufen&limit=".($page+1).""); if (db_num_rows($result)==0){ output("",true); }else{ for ($i=0;$i",true); /* if(($haus->status != 3 && $haus->status != 4) && $haus->besitzerid == 0) $kosten = $haus->wert(false); elseif($haus->status == 4) { $kosten = $haus->wert(); $kosten['gold'] = $haus->gold + round($kosten['gold']*0.9); $kosten['gems'] = $haus->gems + round($kosten['gems']*0.9); } else $kosten=array("gold"=>$haus->gold, "gems"=>$haus->gems); if($kosten['gold'] == 0 || $kosten['gems'] == 0) $kosten = $haus->wert(false); */ output("",true); output("",true); addnav("","nhouses.php?op=kaufen&id=".$haus->id); } } output("
`bHausNr.`b`bName`b`bGold`b`bEdelsteine`bStufe`bBemerkung`b
`&`iEs stehen momentan keine Häuser zum Verkauf`i`0
".$haus->id."".$haus->name."".$haus->kosten['gold']."".$haus->kosten['gems']."".$haus->level->name."",true); if($haus->status == 3 || $haus->status == 4) output($haus->baustatus); elseif($haus->besitzerid == 0) output("`^Maklerverkauf`0"); else output("`6Privatverkauf`0"); output("
",true); } else { $haus = new haus($_GET['id']); $haus->kaufen(); } addnav("Zurück zum Wohnviertel","nhouses.php"); break; case "verkaufen": $haus = new haus($session['user']['acctid'],true); switch($_GET['act']) { case "verkauf": $haus->verkauf(); break; case "makler": $haus->maklerverkauf(); break; default: $kosten = $haus->wert(false); output("`@Gib einen Preis für dein Haus ein, oder lass einen Makler den Verkauf übernehmen.`n"); output("`3Der schmierige Makler würde dir sofort `^".round($kosten['basisgold']/3)."`3 Gold und `#".round($kosten['basisgems']/3)."`3 Edelsteine "); output("plus `^".round($haus->kosten['levelgold']/3)." `3Gold und `#".round($kosten['levelgems']/3)." `3Edelsteine für deine Hausausbauten, "); output("`nalso insgesammt: `^".round($kosten['gold']/3)."`3 Gold und `#".round($kosten['gems']/3)."`3 Edelsteine geben.`n"); output("`@Wenn du selbst verkaufst, kannst du vielleicht einen höheren Preis erzielen, musst aber auf dein Geld warten, bis jemand kauft.`nAlles, was sich noch im Haus befindet, wird "); output("gleichmässig unter allen Bewohnern aufgeteilt.`n`n"); output("`0
",true); output("`nWieviel Gold willst du verlangen? `n",true); output("`nWieviele Edelsteine soll das Haus kosten? `n",true); output("",true); addnav("","nhouses.php?op=verkaufen&act=verkauf"); addnav("An den Makler","nhouses.php?op=verkaufen&act=makler"); addnav("W?Zurück zum Wohnviertel","nhouses.php"); addnav("Zurück zum Dorf","village.php"); break; } break; //###################################################################################// //################################ "IM-HAUS" BEREICH ################################// //###################################################################################// case "drin": if ($_GET['id']) $session['housekey']=(int)$_GET['id']; if (!$session['housekey']) redirect("nhouses.php"); $haus = new haus($session['housekey']); switch($_GET['go']) { case "office": $haus->zimmer_laden('office'); break; case "schlafzimmer": $haus->zimmer_laden('schlafzimmer'); break; case "schatz": $haus->zimmer_laden('schatz'); break; default: // Zimmermodule abfragen: $sql = "SELECT * FROM `zimmer` WHERE aktiv=1 AND level < ".$haus->level->level." ORDER BY zimmerid ASC"; //$sql = "SELECT * FROM `zimmer` WHERE aktiv=1 ORDER BY zimmerid ASC"; $result = db_query($sql) or die(db_error(LINK)); $counter = false; for($i=0;$izimmer_laden((string) $row['name']); } } // Ende FOR if($counter == false) $haus->flur(); break; } // Ende Switch $haus->eintragen(); break; //#################################################################################// //################################ Ausgangsbereich ################################// //#################################################################################// case "betreten": output("`@Du hast Zugang zu folgenden Häusern:`n`n"); $sql = "SELECT * FROM items WHERE owner=".$session['user']['acctid']." AND class='Schlüssel' ORDER BY id ASC"; $result = db_query($sql) or die(db_error(LINK)); $bgcolor=($i%2==1?"trlight":"trdark"); output("",true); $ppp=25; // Player Per Page +1 to display if (!$_GET['limit']){ $page=0; }else{ $page=(int)$_GET['limit']; addnav("Vorherige Straße","nhouses.php?op=betreten&limit=".($page-1).""); } $limit="".($page*$ppp).",".($ppp+1); if ($session['user']['house']>0 && $session['user']['housekey']>0){ $haus = new haus($session['user']['acctid'],true); output("",true); addnav("","nhouses.php?op=drin&id=".$haus->id); }else if ($session['user']['house']>0 && $session['user']['housekey']==0){ output("",true); } if (db_num_rows($result)>$ppp) addnav("Nächste Seite","nhouses.php?op=betreten&limit=".($page+1).""); if (db_num_rows($result)==0){ output("",true); }else{ $rebuy=0; for ($i=0;$ibesitzerid!=$session['user']['acctid']){ output("",true); addnav("","nhouses.php?op=drin&id=".$haus->id); } $amt=$item['value1']; } } output("
`bHausNr.`b`bName`b`bStufe`b
".$haus->id."".$haus->name." (dein eigenes)".$haus->level->name."
`&`iDein Haus ist noch im Bau oder steht zum Verkauf`i`0
`&`iDu hast keinen Schlüssel`i`0
".$haus->id."".$haus->name."".$haus->level->name."
",true); if ($rebuy==1) addnav("Verkauf rückgängig","nhouses.php?op=kaufen&id=".$session['user']['house']); addnav("Zurück zum Dorf","village.php"); addnav("W?Zurück zum Wohnviertel","nhouses.php"); break; default: output("`@`b`cDas Wohnviertel`c`b`n`n"); $session['housekey']=0; // Prüfung auf vorhandene Schlüssel: $sql = "SELECT * FROM items WHERE owner=".$session['user']['acctid']." AND class='Schlüssel' ORDER BY id ASC"; $result = db_query($sql) or die(db_error(LINK)); if (db_num_rows($result)>0 || $session['user']['housekey']>0) addnav("Haus betreten","nhouses.php?op=betreten"); output("Du verlässt den Dorfplatz und schlenderst Richtung Wohnviertel. In diesem schön angelegten Teil des Dorfes siehst du einige Baustellen zwischen bewohnten "); output("und unbewohnten Häusern. Hier wohnen also die Helden...`n`n"); /* Suchbereich START */ if ($_POST['search']>""){ if ($_GET['search']>"" || $_GET['search']>"") $_POST['search']=$_GET['search']; if (strcspn($_POST['search'],"0123456789")<=1){ $search="houseid=".intval($_POST[search])." AND "; }else{ $search="%"; for ($x=0;$xNach Hausname oder Nummer ",true); addnav("","nhouses.php"); output("",true); if (db_num_rows($result)>$ppp) addnav("Nächste Straße","nhouses.php?limit=".($page+1)."&search=$_POST[search]"); if (db_num_rows($result)==0){ output("",true); }else{ for ($i=0;$i",true); addnav("","nhouses.php?op=bio&id=".$haus->id); } } output("
`bHausNr.`b`bName`b`bEigentümer`b`bStufe`bZimmer`bStatus`b
`&`iEs gibt noch keine Häuser`i`0
".$haus->id."".$haus->name."",true); output(($haus->besitzer?$haus->besitzer:"Niemand")."".$haus->level->name."".count($haus->ausbauten)."".$haus->baustatus."
",true); if ($session['user']['housekey']) output("`nStolz schwingst du den Schlüssel zu deinem Haus im Gehen hin und her."); if ($session['user']['superuser']>2) addnav("Admin Grotte","superuser.php"); if ($session['user']['house'] && $session['user']['housekey']) { addnav("Haus verkaufen","nhouses.php?op=verkaufen"); } else { if (!$session[user][house]) addnav("Haus kaufen","nhouses.php?op=kaufen"); addnav("Haus bauen","nhouses.php?op=bauen"); } if (getsetting("pvp",1)==1) addnav("Einbrechen","nhouses.php?op=einbrechen"); addnav("Zurück zum Dorf","village.php"); break; } // Ende Switch if ($fight){ if (count($session['bufflist'])>0 && is_array($session['bufflist']) || $_GET['skill']!=""){ $_GET['skill']=""; if ($_GET['skill']=="") $session['user']['buffbackup']=serialize($session['bufflist']); $session['bufflist']=array(); output("`&Die ungewohnte Umgebung verhindert den Einsatz deiner besonderen Fähigkeiten!`0"); } include "battle.php"; if ($victory){ output("`n`#Du hast die Stadtwache besiegt und der Weg zum Haus ist frei!`nDu bekommst ein paar Erfahrungspunkte."); addnav("Weiter zum Haus","nhouses.php?op=einsteigen&id=$session[housekey]"); addnav("Zurück zum Dorf","village.php"); $session['user']['experience']+=$session['user']['level']*10; $session['user']['turns']--; $badguy=array(); }elseif ($defeat){ output("`n`\$Die Stadtwache hat dich besiegt. Du bist tot!`nDu verlierst 10% deiner Erfahrungspunkte, aber kein Gold.`nDu kannst morgen wieder kämpfen."); $session['user']['hitpoints']=0; $session['user']['alive']=false; $session['user']['experience']=round($session['user']['experience']*0.9); $session['user']['badguy']=""; addnews("`%".$session['user']['name']."`3 wurde von der Stadtwache bei einem Einbruch besiegt."); addnav("Tägliche News","news.php"); }else{ fightnav(false,true); } } page_footer(); ?>