LoGD Standardrelease steht hier zum Download zur Verfügung!
<?php
//20050708
/*
* Local changes:
*
# gold transfer:
INSERT INTO housemoduledata (moduleid, name, houseid, value)
SELECT {id-of-treasury}, 'gold', houseid, gold FROM houses WHERE status=1;
INSERT INTO housemoduledata (moduleid, name, houseid, value)
SELECT {id-of-treasury}, 'gems', houseid, gems FROM houses WHERE status=1;
INSERT INTO `houseconfig` ( `locid` , `location` , `locname` , `buy` , `sell` , `build` , `rob` , `defaultgoldprice` , `defaultgemprice` , `buildprice_increase` )
VALUES (
'', 'village.php', 'Wohnviertel', '1', '1', '1', '1', '30000', '50', '5'
);
ALTER TABLE `houses` CHANGE `status` `status` ENUM( 'build', 'ready', 'sell' ) DEFAULT 'build' NOT NULL,
CHANGE `gold` `goldprice` INT( 10 ) UNSIGNED DEFAULT '0' NOT NULL ,
CHANGE `gems` `gemprice` INT( 10 ) UNSIGNED DEFAULT '0' NOT NULL,
CHANGE `location` `locid` INT( 10 ) UNSIGNED DEFAULT '1' NOT NULL;
UPDATE `houses` SET `locid`=1;
# this will delete all stored gold; warn the people! ;)
UPDATE `houses` SET `status`='ready' WHERE `status`='build';
UPDATE `houses` SET `status`='build' WHERE `status`='' OR owner=0;
UPDATE `houses` SET `goldprice`=0,`gemprice`=0 WHERE `status`!='build';
UPDATE `houses` SET `goldprice`=30000-`goldprice`, `gemprice`=50-`gemprice` WHERE `status`='build';
*
*
*/
/******************************************
*
* Author: Daniel Rathjen <webmaster@chaosonline.de>
* Version: 1.0
* Server: biosLoGD Experimental Server
* URL: http://logd.chaosonline.de
*
* This is a rewrite of anpera's houses script:
* Author: anpera
* Email:logd@anpera.de
* URL: http://www.anpera.net/forum/viewtopic.php?t=323
* This script still consists of his ideas and parts of his code, so all homages to him please ;)
*
* Purpose: Same as the old houses script...
*
* Features:
* - Build house (if allowed)
* - Buy house (if allowed)
* - Sell house (if allowed)
* - Sleeping in a house
* - Storing gold in a house (module 'treasury')
* - Adding useful modules (rooms)
*
* Some important information:
*
#
# Tabellenstruktur für Tabelle `houseconfig`
#
DROP TABLE IF EXISTS `houseconfig`;
CREATE TABLE `houseconfig` (
`locid` int(10) unsigned NOT NULL auto_increment,
`location` varchar(255) NOT NULL default 'village.php',
`locname` varchar(50) NOT NULL default 'Wohnviertel',
`buy` enum('0','1') NOT NULL default '0',
`sell` enum('0','1') NOT NULL default '0',
`build` enum('0','1') NOT NULL default '0',
`rob` enum('0','1') NOT NULL default '0',
`defaultgoldprice` int(10) unsigned NOT NULL default '30000',
`defaultgemprice` int(10) unsigned NOT NULL default '50',
`buildprice_increase` tinyint(3) unsigned NOT NULL default '0',
PRIMARY KEY (`locid`)
) TYPE=MyISAM COMMENT='Konfiguration der Wohnanlagen - was ist erlaubt?';
#
# Tabellenstruktur für Tabelle `housemodules`
#
CREATE TABLE `housemodules` (
`moduleid` int(10) unsigned NOT NULL auto_increment,
`modulefile` varchar(50) NOT NULL default 'default.php',
`modulename` varchar(50) NOT NULL default 'living_room',
`moduleauthor` varchar(50) NOT NULL default '',
`moduleversion` varchar(20) NOT NULL default '',
`built_in` enum('0','1') NOT NULL default '1',
`linkcategory` varchar(50) NOT NULL default 'Räume',
`linktitle` varchar(50) NOT NULL default '',
`linkorder` smallint(3) unsigned NOT NULL default '1',
`showto` SET( 'owner', 'guest' ) DEFAULT 'owner,guest' NOT NULL,
PRIMARY KEY (`moduleid`),
UNIQUE `modulename` (`modulename`),
KEY `built_in` (`built_in`),
KEY `linkorder` (`linkorder`),
KEY `showto` (`showto`)
) TYPE=MyISAM COMMENT='Module der Häuser';
#
# Tabellenstruktur für Tabelle `housemoduledata`
#
# Predefined names:
# - #activated# (together with houseid: value=1 if module is built-in in the house
#
CREATE TABLE `housemoduledata` (
`moduleid` int(10) unsigned NOT NULL,
`name` varchar(50) NOT NULL default '',
`houseid` int(10) unsigned NOT NULL default '0',
`value` varchar(255) NULL,
PRIMARY KEY (`moduleid`,`name`,`houseid`)
) TYPE=MyISAM COMMENT='Moduldaten für die Häuser';
#
# Tabellenstruktur für Tabelle `houses`
#
DROP TABLE IF EXISTS `houses`;
CREATE TABLE `houses` (
`houseid` int(10) unsigned NOT NULL auto_increment,
`owner` int(10) unsigned NOT NULL default '0',
`status` enum('build','sell','ready') NOT NULL default 'build',
`goldprice` int(10) unsigned NOT NULL default '30000',
`gemprice` int(10) unsigned NOT NULL default '50',
`housename` varchar(25) default NULL,
`description` text NOT NULL default '',
`locid` int(10) UNSIGNED NOT NULL default '1',
PRIMARY KEY (`houseid`),
KEY `locid` (`locid`),
KEY `owner` (`owner`)
) TYPE=MyISAM;
#
# Daten für Tabelle `settings`
#
INSERT INTO `settings` VALUES
('startbuild','0'),
('mindkbuild','1'),
('minlevelbuild','5'),
('defaulthousemodule','1');
*
*
* pet-update 20041212:
*
ALTER TABLE `accounts`
ADD `petid` INT UNSIGNED NOT NULL AFTER `hashorse`,
ADD `petfeed` DATETIME NOT NULL AFTER `petid` ;
INSERT INTO `items` (`id`, `name`, `class`, `owner`, `value1`, `value2`, `gold`, `gems`, `description`, `hvalue`, `buff`) VALUES (241, 'Kleiner Wachdackel', 'Haust.Prot', 0, 100, 0, 5000, 15, 'Ein niedlicher kleiner Dackel, der Einbrecher erschreckt.', 0, 'a:4:{s:4:"name";s:14:"Lautes Kläffen";s:6:"atkmod";s:2:"20";s:6:"defmod";s:2:"20";s:5:"regen";s:3:"100";}');
INSERT INTO `items` (`id`, `name`, `class`, `owner`, `value1`, `value2`, `gold`, `gems`, `description`, `hvalue`, `buff`) VALUES (242, 'Großer Haushund', 'Haust.Prot', 0, 0, 1, 15000, 30, 'Ein großer Wachhund, der Haus und Herrchen zu schützen weiß.', 0, 'a:4:{s:4:"name";s:11:"Bissattacke";s:6:"atkmod";s:2:"30";s:6:"defmod";s:2:"30";s:5:"regen";s:3:"150";}');
INSERT INTO `items` (`id`, `name`, `class`, `owner`, `value1`, `value2`, `gold`, `gems`, `description`, `hvalue`, `buff`) VALUES (243, 'Ausgewachsener Kampfhund', 'Haust.Prot', 0, 100, 1, 25000, 45, 'Ein riesiger Kampfhund, der bereit ist, jeden Eindringling sofort zu zerfleischen.', 0, 'a:4:{s:4:"name";s:21:"Wütendes Zerfleischen";s:6:"atkmod";s:2:"40";s:6:"defmod";s:2:"40";s:5:"regen";s:3:"200";}');
*
******************************************/
require_once('common.php');
require_once('include/housefunctions.php');
//output("<script type=\"text/javascript\" src=\"templates/common/wz_tooltip.js\"></script>",true);
if (isset($_GET['location'])) {
$sql = 'SELECT * FROM houseconfig WHERE locid="'.(int)$_GET['location'].'"';
$result = db_query($sql);
$session['user']['specialmisc'] = db_fetch_assoc($result);
}
elseif (!is_array($session['user']['specialmisc'])) {
$session['user']['specialmisc'] = unserialize($session['user']['specialmisc']);
}
page_header($session['user']['specialmisc']['locname']);
$session['user']['standort'] = "Wohnviertel";
// ok, now show the page...
switch ($_GET['op']) {
// leave
case 'leave':
$location = $session['user']['specialmisc']['location'];
$session['user']['specialmisc'] = '';
redirect($location);
// log in
case 'newday':
output("`n`n`c`MGut erholt wachst du im Haus auf und bist bereit für neue Abenteuer.`c`n`n`0");
$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");
if ($session['user']['housekey']==$session['user']['specialmisc']['houseid']) {
// stay in house...
addnav('Zum Haus','houses.php?op=drin&module=');
}
else {
// check for housekey
$sql = 'SELECT COUNT(*) AS zahl FROM items WHERE class="Schlüssel" AND owner='.$session['user']['acctid'].' AND value1="'.$session['user']['specialmisc']['houseid'].'"';
$result = db_query($sql);
$row = db_fetch_assoc($result);
if ($row['zahl']>0) {
// stay in house...
addnav('Zum Haus','houses.php?op=drin&module=');
}
else output('`n`ÄDir wurde inzwischen der Schlüssel für das Haus abgenommen, daher kannst du nicht dorthin zurückkehren!`n`n`0');
}
addnav("v?Wohnviertel verlassen",'houses.php?op=leave');
break;
// look at the house from outdoor
case 'bio':
$sql = "SELECT houseid, housename, description_out FROM houses WHERE houseid='{$_GET['id']}'";
$result = db_query($sql) or die(db_error(LINK));
if (!($row=db_fetch_assoc($result))) redirect("houses.php");
output("`c`b`&Haus Nummer {$row['houseid']}, {$row['housename']}`b`c`n`n`0");
if($row['description_out']!='') {
output("`c {$row['description_out']}`c`n`n`0");
}
else {
output("`c`1Dir fällt nichts besonders an diesem Haus auf.`c`n`n`0");
}
$sql = "SELECT * FROM items WHERE class='Möbel' AND value1={$_GET['id']} ORDER BY id ASC";
$result = db_query($sql);
output("`1Du riskierst einen Blick durch eines der`0");
if (db_num_rows($result)>0){
$comma = false;
output("`1Fenster und erkennst`0");
while ($row2 = db_fetch_assoc($result)) {
if($comma) output(", ");
else $comma = true;
output("`c`7{$row2['name']}`G`c`0");
}
output("`G`c.`c`n`n`0");
}else{
output("`1Fenster, aber das Haus hat sonst nichts weiter zu bieten.`0`n`n");
}
$sql_check_key = "SELECT value1 FROM items WHERE owner=".$session['user']['acctid']." AND class='Schlüssel' AND value1=".$_GET['id']." LIMIT 1";
$result_check_key = db_query($sql_check_key) or die(db_error(LINK));
$item_check_key = db_fetch_assoc($result_check_key);
if ($_GET['id'] == $session['user']['housekey']){
addnav("Haus betreten","houses.php?op=drin&id={$_GET['id']}");
}else if($item_check_key){
addnav("Haus betreten","houses.php?op=drin&id={$_GET['id']}");
}
addnav("Zurück");
addnav("zum Wohnviertel","houses.php");
break;
// build a house
case 'build':
// show build startpage
if (empty($_GET['act'])) {
if ($session['user']['housekey'] > 0) {
output("`n`n`2Du 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.`n`n`0");
}
elseif ($session['user']['rp_char'] != 1 && ($session['user']['dragonkills'] < getsetting('mindkbuild','1') || ($session['user']['dragonkills'] == getsetting('mindkbuild','1') && $session['user']['level'] < getsetting('minlevelbuild','5')))) {
output("`n`n`2Du hast noch nicht genug Erfahrung, um ein eigenes Haus bauen zu können. Du kannst aber eventuell bei einem Freund einziehen, wenn er dir einen Schlüssel für sein Haus gibt.`n`n`0");
}
elseif ($session['user']['turns'] < 1) {
output("`n`n`2Du bist zu erschöpft, um heute noch irgendetwas zu bauen. Warte bis morgen.`n`n`0");
}
elseif ($session['user']['house'] > 0) {
$sql = "SELECT houseid, gemprice, goldprice FROM houses WHERE status='build' AND owner=".$session['user']['acctid']." AND locid='{$session['user']['specialmisc']['locid']}'";
$result = db_query($sql) or die(db_error(LINK));
if ($row = db_fetch_assoc($result)) {
output("`1Du besichtigst die Baustelle deines neuen Hauses mit der Hausnummer `3{$row['houseid']}`1.`n`n");
output("Du musst noch `G{$row['goldprice']}`1 Gold und `q{$row['gemprice']}`1 Edelsteine bezahlen.`nWillst du jetzt weiter bauen?`n`n");
output("`0<form action=\"houses.php?op=build&act=build2\" method='POST'>",true);
output("`nWieviel Gold zahlen? <input type='gold' name='gold'>`n",true);
output("`nWieviele Edelsteine? <input type='gems' name='gems'>`n",true);
output("<input type='submit' class='button' value='Bauen'>",true);
addnav("","houses.php?op=build&act=build2");
}
else {
output("`2`n`nDir fällt ein, dass die Baustelle deines neuen Hauses ja ganz woanders ist. Hier gibt es leider nichts zu tun.`n`n`0");
}
}
elseif (!checkbuild()) {
output('`G`n`n`cDu bist nicht berechtigt, hier zu bauen. Besorg dir erstmal eine Baugenehmigung!`c`n`n`0');
}
else {
$goldcost = $session['user']['specialmisc']['defaultgoldprice'];
$gemcost = $session['user']['specialmisc']['defaultgemprice'];
output("`n`n`1Du möchtest dich also längerfristig in Duskryn niederlassen und hast dir vorgenommen dir ein eigenes Zuhause zu bauen. `n
Der Bau eines Hauses hier würde dich `g$goldcost Gold`G `1und `g$gemcost Edelsteine`1 kosten.`n
Die Kosten musst du nicht auf einmal bezahlen, sondern kannst immer wieder kleinere Beträge investieren. Wie schnell du deine eigenen vier Wände fertigstellst, hängt davon ab, wieviel du auf einmal bezahlen kannst.`n`n
`3Ein gestartetes Bauvorhaben kann nicht mehr abgebrochen werden, deshalb solltest du gut überlegen, ob du wirklich hier wohnen willst.`n`n`0");
addnav("Hausbau beginnen");
addnav("Ja!","houses.php?op=build&act=start");
}
}
// start building a house
elseif ($_GET['act']=="start") {
$sql = "INSERT INTO houses (owner,status,goldprice,gemprice,housename,locid) VALUES ('{$session['user']['acctid']}','build','{$session['user']['specialmisc']['defaultgoldprice']}','{$session['user']['specialmisc']['defaultgemprice']}','{$session['user']['login']}s Haus','{$session['user']['specialmisc']['locid']}')";
db_query($sql) or die(db_error(LINK));
if (db_affected_rows(LINK)==0) redirect("houses.php");
$session['user']['house'] = db_insert_id(LINK);
output("`n`n`1Du hast dich dazu entschieden hier sesshaft zu werden und beginnst mit dem Bau von Hausnummer `3{$session['user']['house']}`1.`n`n`0");
output("`0<form action=\"houses.php?op=build&act=build2\" method='POST'>",true);
output("`n`1Gib einen Namen für dein Haus ein: <input name='housename' maxlength='25'>`n`0",true);
output("`1Wieviel Gold anzahlen? <input type='gold' name='gold'>`n`0",true);
output("`1Wieviele Edelsteine? <input type='gems' name='gems'>`n`n`0",true);
output("<input type='submit' class='button' value='Bauen'>",true);
addnav("","houses.php?op=build&act=build2");
}
// continue building a house
elseif ($_GET[act]=="build2") {
$sql = "SELECT houseid, housename, goldprice, gemprice, status FROM houses WHERE status='build' AND owner=".$session['user']['acctid'];
$result = db_query($sql) or die(db_error(LINK));
$row = db_fetch_assoc($result);
$paidgold=(int)$_POST['gold'];
$paidgems=(int)$_POST['gems'];
if (!empty($_POST['housename'])){
$housename=stripslashes($_POST['housename']);
}
else{
$housename=stripslashes($row['housename']);
}
if ($session['user']['gold']<$paidgold || $session['user']['gems']<$paidgems) {
output("`n`n`c`ÄDu hast nicht genug dabei!`c`n`n`0");
addnav("Nochmal","houses.php?op=build");
}
elseif ($session['user']['turns']<1) {
output("`n`n`c`ÄDu bist zu müde, um heute noch an deinem Haus zu arbeiten!`c`n`n`0");
}
elseif ($paidgold<0 || $paidgems<0) {
output("`n`n`c`ÄVersuch hier besser nicht zu schummeln!`c`n`n`0");
}
else {
output("`n`n`1Du baust für `&$paidgold`1 Gold und `&$paidgems`1 Edelsteine an deinem Haus \"`&$housename`1\"...`n`n`0");
output("`c`3Du verlierst einen Waldkampf.`c`n`n`0");
$row['goldprice'] -= $paidgold;
$session['user']['gold'] -= $paidgold;
$session['user']['turns']--;
if ($row['goldprice'] < 0) {
output("`n`n`1Du hast die kompletten Goldkosten bezahlt und bekommst das überschüssige Gold zurück.`n`n`0");
// subtract negative value - so ist an addition ;)
$session['user']['gold'] -= $row['goldprice'];
$row['goldprice'] = 0;
}
$row['gemprice'] -= $paidgems;
$session['user']['gems'] -= $paidgems;
if ($row['gemprice'] < 0) {
output("`n`n`1Du hast die kompletten Edelsteinkosten bezahlt und bekommst überschüssige Edelsteine zurück.`n`n`0");
// subtract negative value - so ist an addition ;)
$session['user']['gems'] -= $row['gemprice'];
$row['gemprice'] = 0;
}
// finished building house
if ($row['gemprice']==0 && $row['goldprice']==0) {
output("`c`n`n`b`1Glückwunsch!`b `n`1Dein Haus ist fertig. Du bekommst `b`&".getsetting('newhousekeys',10)."`b`1 Schlüssel überreicht, von denen du `&".(getsetting('newhousekeys',10)-1)." `1an andere weitergeben kannst.`0`n`n`c");
$session['user']['housekey']=$row['houseid'];
$row['status'] = 'ready';
// addnews("`&".$session['user']['name']."`9 hat das Haus `&{$row['housename']}`9 fertiggestellt.`0");
// add keys for the new house
$sql = '';
for ($i=1;$i<getsetting('newhousekeys',10);$i++) {
$sql .= ",('Hausschlüssel',".$session['user']['acctid'].",'Schlüssel',{$row['houseid']},$i,0,0,'Schlüssel für Haus Nummer {$row['houseid']}')";
}
if ($sql!='') {
$sql = 'INSERT INTO items (name,owner,class,value1,value2,gold,gems,description) VALUES '.substr($sql,1);
db_query($sql);
if (db_affected_rows(LINK)==0) output("`c`n`n`ÄFehler: Dein Inventar konnte nicht aktualisiert werden! Bitte benachrichtige den Admin.`c`n`n`0");
}
}
// still some payment left
else {
output("`n`n`1Du musst noch `&{$row['goldprice']}`1 Gold und `&{$row['gemprice']}`1 Edelsteine bezahlen, bis du einziehen kannst.`0`n`n`c");
}
$sql = "UPDATE houses SET goldprice={$row['goldprice']},gemprice={$row['gemprice']},housename='".addslashes($housename)."',status='{$row['status']}' WHERE houseid={$row['houseid']}";
db_query($sql);
}
}
addnav("Gehen");
addnav('Wohnviertel','houses.php');
addnav('v?Wohnviertel verlassen','houses.php?op=leave');
break;
// end of building house
// burgling houses part 1
case 'einbruch':
// player did not choose a house yet
if (empty($_GET['id'])) {
if (!empty($_POST['search'])) {
// search for house number...
if (strcspn($_POST['search'],"0123456789")<=1) {
$search = "houses.houseid='".(int)$_POST['search']."' AND ";
}
// search for house name
else {
$search = "%";
for ($x=0; $x<strlen($_POST['search']); $x++) {
$search .= $_POST['search']{$x}."%";
}
$search = "houses.housename LIKE '".$search."' AND ";
}
}else{
$search = '';
}
$ppp=25; // Player Per Page to display
if (empty($_GET['limit'])){
$page = 0;
}else{
$page = (int)$_GET['limit'];
addnav("Vorherige Seite","houses.php?op=einbruch&limit=".($page-1));
}
$limit = ($page*$ppp).",".($ppp+1);
output("`n`n`cEinbruch
`c`0`n`n");
output("`n`n`1Du hast dich dazu entschlossen dein Glück bei einem Einbruch zu versuchen und so streunst du durch die Straßen und besiehst dir die Häuser. Allerdings ist es fast unmöglich zu sagen, wo dich die große Beute erwarten würde, genauso wenig kannst du bestimmen, ob jemand zuhause ist oder nicht. Was willst du also tun? Noch kannst du einfach umkehren.?`n`n`0");
output("`n`n`c<form action='houses.php?op=einbruch' method='POST'>Nach Hausname oder Nummer`0<input name='search' value='{$_POST['search']}'> <input type='submit' class='button' value='Suchen'></form>`c`n`n",true);
addnav("","houses.php?op=einbruch");
if ($session['user']['pvpflag']=="5013-10-06 00:42:00") output("`n`n`c`Ä(Du hast PvP-Immunität gekauft. Diese verfällt, wenn du jetzt angreifst!)`c`0`n`n");
output("<table cellspacing=0 cellpadding=2 align='center'><tr><td>`bHausNr.`b</td><td>`bName`b</td><td>`bEigentümer`b</td></tr>",true);
// get possible targets
$sql = "SELECT houses.houseid, houses.housename,accounts.name FROM houses LEFT JOIN accounts ON accounts.acctid=houses.owner WHERE $search houses.status='ready' AND houses.owner!=".$session['user']['acctid']." AND houses.locid='{$session['user']['specialmisc']['locid']}' ORDER BY houses.houseid ASC LIMIT $limit";
$result = db_query($sql) or die(db_error(LINK));
// no houses found
if (db_num_rows($result)==0) {
output("<tr><td colspan=4 align='center'>`n`n`c`&`iEs gibt momentan keine bewohnten Häuser!`i`c`n`n`0</td></tr>",true);
}
else {
// more than one page to display
if (db_num_rows($result)>$ppp) addnav("Nächste Seite","houses.php?op=einbruch&limit=".($page+1));
for ($i=0; $i<db_num_rows($result); $i++) {
$row = db_fetch_assoc($result);
$bgcolor = ($i%2==1?"trlight":"trdark");
output("<tr class='$bgcolor'><td align='right'>{$row['houseid']}</td><td><a href='houses.php?op=einbruch&id={$row['houseid']}'>{$row['housename']}</a></td><td>",true);
output("{$row['name']}</td></tr>",true);
addnav("","houses.php?op=einbruch&id={$row['houseid']}");
}
}
output("</table>",true);
addnav("Lieber doch nicht");
addnav("Umkehren","houses.php");
}
// a house has already been chosen
else {
if ($session['user']['turns']==0 || $session['user']['playerfights']==0){
output("`n`n`cDu bist wirklich schon zu müde, um ein Haus zu überfallen.`c`n`n`0");
addnav("Zurück","houses.php");
}else{
output("`n`n`cDu näherst dich vorsichtig Haus Nummer {$_GET['id']}.`c`0`n`n");
$session['user']['specialmisc']['houseid'] = $_GET['id'];
// check if user has a key of this house
$sql = "SELECT COUNT(id) AS zahl FROM items WHERE owner=".$session['user']['acctid']." AND class='Schlüssel' AND value1=".(int)$_GET['id'];
$result = db_query($sql) or die(db_error(LINK));
$row = db_fetch_assoc($result);
if ($row['zahl']>0) {
// use key to enter house
output("`n`n`cAn 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, den du dabei hast.`n
Wolltest du wirklich gerade in ein Haus einbrechen, für das du einen Schlüssel hast?`n`n`c`0");
addnav("Haus betreten","houses.php?op=drin&id={$_GET['id']}");
addnav("Zurück",'houses.php?op=leave');
} else {
// fight against guard
output("`n`n`cDeine gebückte Haltung und der schleichende Gang machen eine Stadtwache aufmerksam...`n`n`c`0");
$result = getpvpdata('a.maxhitpoints','a.maxhitpoints DESC',1);
if (db_num_rows($result)>0) {
// somebody is in the house so let's weaken the guard
$row = db_fetch_assoc($result);
$badguy = array("creaturename"=>"Stadtwache","creaturelevel"=>$session['user']['level'],"creatureweapon"=>"Holzknüppel","creatureattack"=>$session['user']['attack'],"creaturedefense"=>$session['user']['defence'],"creaturehealth"=>abs($session['user']['maxhitpoints']-$row['maxhitpoints'])+1, "diddamage"=>0);
}else{
// nobody in the house - full power to the guard!
$badguy = array("creaturename"=>"Stadtwache","creaturelevel"=>$session['user']['level'],"creatureweapon"=>"starker Holzknüppel","creatureattack"=>$session['user']['attack'],"creaturedefense"=>$session['user']['defence'],"creaturehealth"=>abs($session['user']['maxhitpoints']), "diddamage"=>0);
$session['user']['playerfights']--;
}
$session['user']['badguy'] = createstring($badguy);
$fight=true;
}
}
} // end of house chosen
break;
// end of burgling houses part 1
// player wants (or is made wanting ;)) to fight
case 'fight':
$fight = true;
break;
// player tries to run away during fight
case 'run':
$badguy = createarray($session['user']['badguy']);
// fight against guard
if ($badguy['creaturename']=='Stadtwache') {
output("`n`n`cDie Wache lässt dich nicht entkommen!`n`n`c`0");
}
// fight against pet
else {
output("`n`n`c".$badguy['creaturename']." lässt dich nicht entkommen!`c`n`n`0");
}
$fight=true;
break;
// burgling house part 2
case 'einbruch2':
$badguy = createarray($session['user']['badguy']);
$fightpet = false;
// check for pet
if ($badguy['creaturename']=='Stadtwache') {
$sql = 'SELECT accounts.petid AS pet, items.name, items.buff FROM accounts LEFT JOIN items ON accounts.petid=items.id WHERE accounts.house='.$session['user']['specialmisc']['houseid'].' AND accounts.petfeed > NOW()';
$result = db_query($sql);
if ($row = db_fetch_assoc($result)) {
if ($row['pet']>0) {
$petbuff = unserialize($row['buff']);
$badguy = array('creaturename'=>$row['name'],
'creaturelevel'=>$session['user']['level'],
'creatureweapon'=>$petbuff['name'],
'creatureattack'=>$petbuff['atkmod'],
'creaturedefense'=>$petbuff['defmod'],
'creaturehealth'=>$petbuff['regen'],
'diddamage'=>0);
$session['user']['badguy'] = createstring($badguy);
$fight = $fightpet = true;
output('`n`n`cGerade willst du ins Haus schleichen, als du hinter dir plötzlich ein Knurren vernimmst.`0`n`n`c');
}
}
}
if (!$fightpet) {
// run, forrest, run! ;)
addnav("Flüchte",'houses.php?op=leave');
// fight against player
$result = getpvpdata('COUNT(*) AS athome','',0);
$row = db_fetch_assoc($result);
// somebody at home, so lets fight...
if ($row['athome']>0) {
if ($row['athome']==1) output("`n`n`cDir kommt ein misstrauischer Bewohner schwer bewaffnet entgegen. Er wird sich jeden Augenblick auf dich stürzen,`c`n ");
else output("`n`n`cDir kommen {$row['athome']} misstrauische Bewohner schwer bewaffnet entgegen. Der wahrscheinlich Stärkste von ihnen wird sich jeden Augenblick auf dich stürzen,`c`n");
output("`cwenn du die Situation nicht sofort entschärfst.`c`0`n`n");
addnav('Kämpfe',"houses.php?op=einbruch3&id={$session['user']['specialmisc']['houseid']}");
}
// yeah, lets take away everything valuable
else {
output("`n`n`cDu hast Glück, denn es scheint niemand daheim zu sein. Das wird sicher ein Kinderspiel.`c`n`n`0");
addnav("Einsteigen","houses.php?op=klauen&id={$session['user']['specialmisc']['houseid']}");
}
}
break;
// burgling house part 3
case 'einbruch3':
// finally go to heldengasse_pvp.php for fighting
$result = getpvpdata('a.login','a.maxhitpoints',1);
$row = db_fetch_assoc($result);
redirect("heldengasse_pvp.php?act=attack&bg=2&name=".rawurlencode($row['login']));
break;
// robbing something
case 'klauen':
if (empty($_GET['id'])) {
output("`n`n`cUnd jetzt? Bitte benachrichtige den Admin. Ich weiß nicht, was ich jetzt tun soll...`c`n`n`0");
addnav("Zurück","houses.php?op=leave");
break;
}
$sql = "SELECT owner FROM houses WHERE houseid=".$session['user']['specialmisc']['houseid']." ORDER BY houseid ASC";
$result = db_query($sql) or die(db_error(LINK));
$hdata = db_fetch_assoc($result);
addnav("Zurück",'houses.php?op=leave');
// if treasury-module is installed, gimme some money...
if ($mid = module_builtin('treasury',$session['user']['specialmisc']['houseid'])) {
$goldinhouse = getmoduledata($mid,'gold',$session['user']['specialmisc']['houseid']);
$gemsinhouse = getmoduledata($mid,'gems',$session['user']['specialmisc']['houseid']);
// found money, so take 5-15% of it
if ($goldinhouse > 0 || $gemsinhouse > 0) {
$getgold = e_rand($goldinhouse*0.05,$goldinhouse*0.15);
$getgems = e_rand($gemsinhouse*0.05,$gemsinhouse*0.15);
// bugfix for 1 gold-exploit (user deposits 1 gold, bad guy always gets 0)
if ($getgold==0) $getgold = $goldinhouse;
if ($getgems==0) $getgems = $gemsinhouse;
$session['user']['gold'] += $getgold;
$session['user']['gems'] += $getgems;
// take the money away from house
setmoduledata($mid,'gold',$goldinhouse-$getgold,$session['user']['specialmisc']['houseid']);
setmoduledata($mid,'gems',$gemsinhouse-$getgems,$session['user']['specialmisc']['houseid']);
// inform both affected players
if ($getgold > 0 && $getgems > 0) $str = "`&$getgold Gold`1 und `&$getgems Edelsteine`1";
elseif ($getgold > 0) $str = "`^$getgold Gold`@";
else $str = "`%$getgems Edelsteine`@";
output("`n`n`c`1Es gelingt dir, $str aus dem Schatz zu klauen!");
$mailadd = $newsadd = '';
// if user got too less money, destroy furniture
if ($getgold < $session['user']['level']*10 && $goldinhouse < 2500) {
// chance of 5%+X to destroy furniture...
$chance = e_rand(1,21);
$left500 = floor((2500-$goldinhouse)/500);
if ($chance <= $left500) {
// check if there's furniture to destroy
$sql = 'SELECT id,name FROM items WHERE class="Möbel" AND value1="'.$session['user']['specialmisc']['houseid'].'" ORDER BY RAND('.e_rand().') LIMIT 1';
$result = db_query($sql) or die(db_error(LINK));
if ($row = db_fetch_assoc($result)) {
output('`n`n`cDu lässt deiner Enttäuschung über die miese Beute freien Lauf und zerstörst dabei '.$row['name'].'.`0`c`n`n');
$sql = 'DELETE FROM items WHERE id="'.$row['id'].'"';
db_query($sql);
$mailadd = " sowie {$row['name']} zerstört";
$newsadd = " und zerstört dabei Möbel";
}
}
}
// addnews("".$session['user']['name']." erbeutet Gold bei einem Einbruch$newsadd!");
if ($getgold > 0 && $getgems > 0) $str = "$getgold Gold und $getgems Edelsteine";
elseif ($getgold > 0) $str = "$getgold Gold";
else $str = "$getgems Edelsteine";
systemmail($hdata['owner'],"`ÄEinbruch!`0","Jemand ist in dein Haus eingebrochen und hat $str erbeutet$mailadd!`0");
$sql="INSERT INTO commentary (postdate,section,author,comment) VALUES (now(),'house-".$session['user']['specialmisc']['houseid']."',".$hdata['owner'].",'/me `1entdeckt, dass bei einem Einbruch $str gestohlen$mailadd wurden.')";
db_query($sql) or die(db_error(LINK));
break;
}
}
// got no money... damn!
output('`n`n`cLeider findest du nichts, das du stehlen könntest.`c`n`n`0');
// chance of 5% to destroy furniture...
if (e_rand(1,21)<=5) {
// check if there's furniture to destroy
$sql = 'SELECT id,name FROM items WHERE class="Möbel" AND value1="'.$session['user']['specialmisc']['houseid'].'" ORDER BY RAND('.e_rand().') LIMIT 1';
$result = db_query($sql) or die(db_error(LINK));
if ($row = db_fetch_assoc($result)) {
output('`n`n`cDu lässt deiner Enttäuschung freien Lauf und zerstörst dabei '.$row['name'].'.');
// addnews("".$session['user']['name']." zerstört Möbel bei einem Einbruch!`0");
systemmail($hdata['owner'],"`\$Einbruch!`0","Jemand ist in dein Haus eingebrochen und hat {$row['name']} zerstört!`0");
$sql = 'DELETE FROM items WHERE id="'.$row['id'].'"';
db_query($sql);
$sql="INSERT INTO commentary (postdate,section,author,comment) VALUES (now(),'house-".$session['user']['specialmisc']['houseid']."',".$hdata['owner'].",'/me `6entdeckt, dass bei einem Einbruch `^{$row['name']} `2zerstört`6 wurde.')";
db_query($sql) or die(db_error(LINK));
}
}
break;
// end of robbing something
// buy a house - we don't do it here anymore, so it's useless...
case 'buy':
// sell a house - same as buy...
case 'sell':
// player wants to enter a house
case 'enter':
output("`n`nDu hast Zugang zu folgenden Häusern:`n`n`0");
// delete possible user-in-house-flags
$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));
// search houses the player can enter
//Eigenes Haus
output("<table border='0' align='center' cellspacing='1' cellpadding='2' bgcolor='#444455'>",true);
output("<tr class='trhead'><td colspan='2'>`c`b`&Dein Haus:`b`c</td><tr>",true);
output("<tr class='trhead'><td>`c`b`&HausNr.`b`c</td><td>`c`b`&Name`b`c</td></tr>",true);
if ($session['user']['house'] > 0 && $session['user']['housekey'] > 0) {
$sql = "SELECT houseid,housename FROM houses WHERE houseid=".$session['user']['house']." AND locid='{$session['user']['specialmisc']['locid']}' ORDER BY houseid DESC LIMIT 25";
$result2 = db_query($sql) or die(db_error(LINK));
if ($row2 = db_fetch_assoc($result2)) {
output("<tr class='trdark'><td align='center'>{$row2['houseid']}</td><td><a href='houses.php?op=drin&id={$row2['houseid']}'>{$row2['housename']}</a></td></tr>",true);
addnav("","houses.php?op=drin&id={$row2['houseid']}");
}
}
// house is not ready yet
elseif ($session['user']['house'] > 0) {
output("<tr><td colspan=3 align='center'>`&`iDein Haus ist noch im Bau oder steht zum Verkauf`i`0</td></tr>",true);
}
output("</table>",true);
//Schlüssel für andere Häuser
$sql = "SELECT i.value1,h.housename,a.name AS ownername FROM items i LEFT JOIN houses h ON i.value1=h.houseid LEFT JOIN accounts a ON a.acctid=h.owner WHERE i.owner=".$session['user']['acctid']." AND (i.class='Schlüssel') AND h.locid='{$session['user']['specialmisc']['locid']}' AND h.owner!=".$session['user']['acctid']." GROUP BY i.value1 ORDER BY i.id ASC";
$result = db_query($sql) or die(db_error(LINK));
output("`n`n");
output("<table border='0' align='center' cellspacing='1' cellpadding='2' bgcolor='#444455'>",true);
output("<tr class='trhead'><td colspan='3'>`c`b`&Schlüssel für andere Häuser:`c`b</td><tr>",true);
output("<tr class='trhead'><td>`c`b`&HausNr.`b`c</td><td>`c`b`&Name`b`c</td><td>`c`b`&Besitzer`b`c</td></tr>",true);
$ppp = 25; // Player Per Page +1 to display
if (empty($_GET['limit'])) {
$page = 0;
}else{
$page = (int)$_GET['limit'];
addnav("Vorherige Straße","houses.php?limit=".($page-1)."&location=".$session['user']['specialmisc']['locid']);
}
$limit = ($page*$ppp).",".($ppp+1);
if (db_num_rows($result)>$ppp) addnav("Nächste Seite","houses.php?op=enter&limit=".($page+1));
if (db_num_rows($result) == 0) {
output("<tr class='trdark'><td colspan=3 align='center'>`&`iDu hast keinen Schlüssel`i`0</td></tr>",true);
}else{ // show houses
for ($i=0;$i<db_num_rows($result);$i++){
$item = db_fetch_assoc($result);
$bgcolor=($i%2==1?"trlight":"trdark");
// don't show own house - we did this before ;)
if ($item['value1']!=$session['user']['house']){
output("<tr class='$bgcolor'><td align='center'>{$item['value1']}</td><td><a href='houses.php?op=drin&id={$item['value1']}'>{$item['housename']}</a></td><td>",true);
if ($item['ownername']!='') output($item['ownername'].'`0');
else output('`iverlassen`i');
output("</td></tr>",true);
addnav("","houses.php?op=drin&id={$item['value1']}");
}
}
}
output("</table>",true);
//Einladungen
$sql3 = "SELECT i.value1,h.housename,a.name AS ownername FROM items i LEFT JOIN houses h ON i.value1=h.houseid LEFT JOIN accounts a ON a.acctid=h.owner WHERE i.owner=".$session['user']['acctid']." AND (i.class='Einladung') AND h.locid='{$session['user']['specialmisc']['locid']}' GROUP BY i.value1 ORDER BY i.id ASC";
$result3 = db_query($sql3) or die(db_error(LINK));
output("`n`n");
output("<table border='0' align='center' cellspacing='1' cellpadding='2' bgcolor='#444455'>",true);
output("<tr class='trhead'><td colspan='3'>`c`b`&Einladungen für andere Häuser:`b`c</td><tr>",true);
output("<tr class='trhead'><td>`c`b`&HausNr.`b`c</td><td>`c`b`&Name`b`c</td><td>`c`b`&Besitzer`b`c</td></tr>",true);
$ppp2 = 25; // Player Per Page +1 to display
if (empty($_GET['limit'])) {
$page2 = 0;
}else{
$page2 = (int)$_GET['limit'];
addnav("Vorherige Straße","houses.php?limit=".($page2-1)."&location=".$session['user']['specialmisc']['locid']);
}
$limit2 = ($page2*$ppp2).",".($ppp2+1);
// show houses
if (db_num_rows($result3)>$ppp) addnav("Nächste Seite","houses.php?op=enter&limit=".($page+1));
if (db_num_rows($result3) == 0) {
output("<tr class='trdark'><td colspan=3 align='center'>`&`iDu hast keine Einladungen`i`0</td></tr>",true);
}else{
for ($i=0;$i<db_num_rows($result3);$i++){
$item2 = db_fetch_assoc($result3);
$bgcolor=($i%2==1?"trlight":"trdark");
// don't show own house - we did this before ;)
if ($item2['value1']!=$session['user']['house']){
output("<tr class='$bgcolor'><td align='center'>{$item2['value1']}</td><td><a href='houses.php?op=drin&id={$item2['value1']}&module=13'>{$item2['housename']}</a></td><td>",true);
if ($item2['ownername']!='') output($item2['ownername'].'`0');
else output('`iverlassen`i');
output("</td></tr>",true);
addnav("","houses.php?op=drin&id={$item2['value1']}&module=13");
}
}
}
output("</table>`n`n`n`n",true);
addnav("Orte");
addnav('Im Wohnviertel',"houses.php");
addnav('v?Wohnviertel verlassen','houses.php?op=leave');
break;
// main part: player has entered a house. let's start with modules...
case 'drin':
if (empty($session['user']['specialmisc']['houseid'])) {
$session['user']['specialmisc']['houseid'] = $_GET['id'];
}
// flag if default navs should be shown or not
$shownavs = false;
// any module selected? then show it...
if (!empty($_GET['module'])) {
$sql = 'SELECT modulefile, modulename FROM housemodules WHERE moduleid="'.$_GET['module'].'"';
$result = db_query($sql);
if ($row = db_fetch_assoc($result)) {
if ($_GET['module']==getsetting('defaulthousemodule','1')) $shownavs = true;
$session['user']['specialmisc']['modulefile'] = $row['modulefile'];
$session['user']['specialmisc']['modulename'] = $row['modulename'];
}
else redirect('houses.php?op=drin');
}
// no module selected - get the default module
elseif (empty($session['user']['specialmisc']['modulefile']) || isset($_GET['module'])) {
$sql = 'SELECT modulefile, modulename FROM housemodules WHERE moduleid="'.getsetting('defaulthousemodule','1').'"';
$result = db_query($sql);
if ($row = db_fetch_assoc($result)) {
$shownavs = true;
$session['user']['specialmisc']['modulefile'] = $row['modulefile'];
$session['user']['specialmisc']['modulename'] = $row['modulename'];
}
else redirect('houses.php');
}
elseif (getmoduleid($session['user']['specialmisc']['modulename'])==getsetting('defaulthousemodule','1')) {
$shownavs = true;
}
// so for now, show module!
require_once('housemodules/'.$session['user']['specialmisc']['modulefile']);
$function = 'module_show_'.$session['user']['specialmisc']['modulename'];
$function();
/*
-----
I see no use for this in Omar.
So I changed it to fit better in my own system, which allows you to create your own rooms.
Negative aspect: the bigger part of the module System will disappear. But I think it's worth doing it :)
-----
// if module doesn't set any navs, it's the default module - so set navs now!
if ($shownavs || !is_array($session['allowednavs']) || count($session['allowednavs'])==0) {
// get modulenavs now
if ($session['user']['specialmisc']['houseid']==$session['user']['house']) {
$for = 'owner';
}
else $for = 'guest';
$modules = array();
$lastcategory = '';
$sql = 'SELECT hm.moduleid, hm.linkcategory, hm.linktitle
FROM housemodules hm
LEFT JOIN housemoduledata hmd
ON hmd.moduleid=hm.moduleid
AND hmd.houseid="'.$session['user']['specialmisc']['houseid'].'"
AND hmd.name="#activated#"
WHERE (hm.built_in="1" OR hmd.value="1")
AND hm.moduleid!="'.getsetting('defaulthousemodule','1').'"
AND FIND_IN_SET("'.$for.'",hm.showto)>0
ORDER BY hm.linkorder ASC';
$result = db_query($sql);
while ($row = db_fetch_assoc($result)) {
if ($lastcategory!=$row['linkcategory'] && $row['linkcategory']!='') {
addnav($row['linkcategory']);
$lastcategory = $row['linkcategory'];
}
addnav($row['linktitle'],'houses.php?op=drin&module='.$row['moduleid']);
}
if ($lastcategory!='Sonstiges') addnav('Sonstiges');
addnav('Wohnviertel','houses.php');
addnav('v?Wohnviertel verlassen','houses.php?op=leave');
}*/
if($shownavs || !is_array($session['allowednavs']) || count($session['allowednavs'])==0) {
$room_sql = 'SELECT
roomid,
is_category,
linkname,
open
FROM
houserooms
WHERE
house = '.$session['user']['specialmisc']['houseid'].'
ORDER BY
sort ASC';
$room_result = db_query($room_sql);
$n = db_num_rows($room_result);
if($n > 0) {
while($room = db_fetch_assoc($room_result)) {
if($session['user']['specialmisc']['houseid'] != $session['user']['house'] && !$room['open'])
continue;
if($room['is_category'])
addnav(stripslashes($room['linkname']));
else
addnav(stripslashes($room['linkname']), 'houses.php?op=drin&module=19&roomid='.$room['roomid']);
}
}
if($session['user']['specialmisc']['houseid']==$session['user']['house'])
$for = 'owner';
else
$for = 'guest';
$modules = array();
$lastcategory = '';
$sql = 'SELECT
hm.moduleid,
hm.linkcategory,
hm.linktitle
FROM
housemodules hm
LEFT JOIN
housemoduledata hmd
ON
hmd.moduleid=hm.moduleid
AND
hmd.houseid="'.$session['user']['specialmisc']['houseid'].'"
AND
hmd.name="#activated#"
WHERE
(hm.built_in="1" OR hmd.value="1")
AND
hm.moduleid!="'.getsetting('defaulthousemodule','1').'"
AND
FIND_IN_SET("'.$for.'",hm.showto)>0
ORDER BY
hm.linkorder ASC';
$result = db_query($sql);
while($row = db_fetch_assoc($result)) {
if($lastcategory!=$row['linkcategory'] && $row['linkcategory']!='') {
if($row['moduleid'] != 19) {
addnav($row['linkcategory']);
$lastcategory = $row['linkcategory'];
}
}
if($row['moduleid'] != 19)
addnav($row['linktitle'], 'houses.php?op=drin&module='.$row['moduleid']);
}
addnav('Wohnviertel','houses.php');
addnav('v?Wohnviertel verlassen','houses.php?op=leave');
}
break;
// show the start page of houses script
default:
if (!empty($session['user']['specialmisc']['houseid'])) {
$session['user']['specialmisc']['houseid'] = 0;
$session['user']['specialmisc']['modulefile'] = '';
$session['user']['specialmisc']['modulename'] = '';
}
// check if you have a key for a house located here
$sql = "SELECT COUNT(i.id) AS keycount FROM items i LEFT JOIN houses h ON h.houseid=i.value1 WHERE i.owner=".$session['user']['acctid']." AND (i.class='Schlüssel' OR i.class='Einladung') AND h.locid='{$session['user']['specialmisc']['locid']}'";
$result = db_query($sql) or die(db_error(LINK));
$row = db_fetch_assoc($result);
// search own house
if ($session['user']['house']) {
$sql = 'SELECT locid FROM houses WHERE houseid='.$session['user']['house'];
$result = db_query($sql);
$ownhouse = db_fetch_assoc($result);
}
// add link to enter house if found any (and if player has a key naturally)
if ($row['keycount']>0 || ($ownhouse['locid']==$session['user']['specialmisc']['locid'] && $session['user']['housekey']>0)) addnav("Haus betreten","houses.php?op=enter");
//output('`c'.$session['user']['specialmisc']['locname'].'`0`c');
if ($_GET['location'] == 1) {
output("`n`i`1Vorrangig finden sich hier groß angelegte Häuser, die sich teilweise in ihrem Prunk zu übertreffen scheinen. Hier wohnt nur, wer genügend Gold in den Taschen hat, sondern auch einen gewissen gesellschaftlichen Stand. Bettler und Halunken sind hier nicht gern gesehen und werden von der Stadtwache auch wieder schnell verscheucht. Vor den Türen einiger kannst du auch ein oder mehrere Wachmänner entdecken.`i`n`n`n");
}else if($_GET['location'] == 2) {
output("`c<table width='700'><tr>
<td> <img src='images/haus.jpg' width='700' hight='150'>
</td></tr>
</table>`c`n`0",true);
output("`c<table width='700'><tr><td align='justify'>`i`1Abseits des turbulenten Marktplatzes aber immer noch im Zentrum des Geschehens liegen die Wohnhäuser. Mehrstöckige Gebäude drängen sich dicht an dicht und die Straßen sind schmal und verwinkelt. Doch auch einige Geschäfte haben hier ihr Zuhause, wie Bäckereien, Tuchhändler, Goldschmiede oder kleinere Tavernen.
`i`n`n</td></tr></table>`c",true);
}else if($_GET['location'] == 3) {
output("`c<table width='700'><tr>
<td> <img src='images/unterkunft.jpg' width='700' hight='150'>
</td></tr>
</table>`c`n`0",true);
output("`c<table width='700'><tr><td align='justify'>`i`1Die besten Tage des Hafenviertels sind schon lange her und seitdem hat sich keiner groß darum gekümmert die Gegend zu pflegen. Windschiefe Häuser reihen sich aneinander, größtenteils sind die Häuser heruntergekommen und manche auch schon baufällig. Aber wenn man sich nichts leisten kann, sind selbst die schäbigsten vier Wände und ein löchriges Dach über dem Kopf besser, als auf der Straße zu schlafen. Die Hafengegend ist eine raue Gegend und hier ist man für seine Sicherheit selbst verantwortlich, ob hier ein Bewohner verschwindet oder nicht, schert hier niemanden. `i`n`n</td></tr></table>`c",true);
}
// search house
if (!empty($_POST['search'])) {
if (strcspn($_POST['search'],"0123456789")<=1){
$search = "houseid=".(int)$_POST['search']." AND ";
}
else {
$search="%";
for ($x=0; $x<strlen($_POST['search']); $x++) {
$search .= substr($_POST['search'],$x,1)."%";
}
$search = "housename LIKE '".$search."' AND ";
}
}
else {
$search = "";
}
// show pages (streets)
$ppp=30; // Player Per Page +1 to display
if (empty($_GET['limit'])) {
$page = 0;
}
else {
$page = (int)$_GET['limit'];
addnav("Vorherige Straße","houses.php?limit=".($page-1));
}
$limit = ($page*$ppp).",".($ppp+1);
$sql = "SELECT houses.houseid,houses.status,houses.owner,houses.housename,houses.description_out,accounts.name AS schluesselinhaber
FROM houses
LEFT JOIN accounts ON accounts.acctid=houses.owner
WHERE $search houses.locid='{$session['user']['specialmisc']['locid']}'
ORDER BY houseid ASC LIMIT $limit";
output("`c<form action='houses.php' method='POST'>Nach Hausname oder Nummer <input name='search' value='{$_POST['search']}'> <input type='submit' class='button' value='Suchen'></form>`c`n`n",true);
addnav("",'houses.php');
output("<table cellpadding=2 cellspacing=1 bgcolor='#999999' align='center'><tr class='trhead'><td>`b`&HausNr.`b</td><td>`b`&Name`b</td><td>`b`&Eigentümer`b</td><td>`b`&Status`b</td></tr>",true);
$result = db_query($sql) or die(db_error(LINK));
if (db_num_rows($result)>$ppp) addnav("Nächste Straße","houses.php?limit=".($page+1)."&location=".$session['user']['specialmisc']['locid']);
// no houses found
if (db_num_rows($result)==0) {
output("<tr><td colspan=4 align='center'>`&`iEs gibt noch keine Häuser`i`0</td></tr>",true);
}
// list houses
else {
for ($i=0; $i<db_num_rows($result); $i++) {
$row = db_fetch_assoc($result);
$bgcolor=($i%2==1?"trlight":"trdark");
output("<tr class='$bgcolor'><td align='right'>{$row['houseid']}</td><td><a href='houses.php?op=bio&id={$row['houseid']}' onmouseover=\"TagToTip('".$row['houseid']."',TITLEBGCOLOR,'#550000' , BGCOLOR, '#050505',FONTCOLOR, '#EEEEEE' ,BORDERWIDTH, 2,BORDERCOLOR,'#880000', TITLE, 'Kurzinformationen über ".preg_replace("/[`]./","",$row['housename'])."`0')\" onmouseout=\"UnTip()\">{$row['housename']}</a></td><td>",true);
addnav("","houses.php?op=bio&id={$row['houseid']}");
output("{$row['schluesselinhaber']}");
output("</td><td>",true);
if ($row['status']=='build') {
if ($row['owner']>0) output("`&im Bau`0");
else output("`&Bauruine`0");
}
elseif ($row['status']=='ready') {
if ($row['owner']>0) output("`&bewohnt`0");
else output("`&verlassen`0");
}
elseif ($row['status']=='sell') output("`&zum Verkauf`0");
output("</tr>",true);
}
}
output("</table>",true);
// player owns a house
if ($session['user']['housekey']>0) {
output("`nStolz schwingst du den Schlüssel zu deinem Haus im Gehen hin und her.`n`n");
}
addnav("Wohnviertel");
// show link for building a house
if ($session['user']['housekey']==0) {
if (($session['user']['house']==0 || $ownhouse['locid']==$session['user']['specialmisc']['locid']) && $session['user']['specialmisc']['build']==1) addnav("Haus bauen","houses.php?op=build");
}
// show link for pvp
if (getsetting("pvp",1)==1) addnav("Einbrechen","houses.php?op=einbruch");
addnav("Bauamt","houseshop.php");
if($session['user']['specialmisc']['locid'] == 1){
//addnav("Weitere Orte");
//addnav("auf´s Land","houses_land.php");
}
addnav("Zurück");
addnav('v?Wohnviertel verlassen','houses.php?op=leave');
break; // we really don't need it, but... why not? :D
}
// let's fight, boy!
if ($fight) {
if (count($session['bufflist'])>0 && is_array($session['bufflist']) || $_GET['skill']!="") {
$_GET['skill'] = "";
$session['user']['buffbackup'] = serialize($session['bufflist']);
$session['bufflist']=array();
output("`c`n`n`&Die ungewohnte Umgebung verhindert den Einsatz deiner besonderen Fähigkeiten!`0`n`n`c");
}
include "battle.php";
if ($victory) {
addnav("H?Weiter zum Haus","houses.php?op=einbruch2&id={$session['user']['specialmisc']['houseid']}");
addnav('Wohnviertel',"houses.php");
addnav('v?Wohnviertel verlassen',"houses.php?op=leave");
// check for pet
if ($badguy['creaturename']=='Stadtwache') {
output("`n`n`c`&Du hast die Stadtwache besiegt und der Weg zum Haus ist frei!`nDu bekommst ein paar Erfahrungspunkte.`c`0`n`n");
$session['user']['experience'] += $session['user']['level']*10;
$session['user']['turns']--;
}
else {
output('`c`n`n`9'.$badguy['creaturename'].'`& zieht sich jaulend zurück und gibt den Weg zum Haus frei!`c`0`n`n');
}
$badguy=array();
}
elseif ($defeat) {
// check for pet
if ($badguy['creaturename']=='Stadtwache') {
output("`n`n`c`&Die Stadtwache hat dich besiegt. Du bist tot!`nDu verlierst 10% deiner Erfahrungspunkte, aber kein Gold.`nDu kannst morgen wieder kämpfen.`c`n`n`0");
$session['user']['hitpoints'] = 0;
$session['user']['alive'] = false;
$session['user']['experience'] = round($session['user']['experience']*0.9);
// addnews("`%".$session['user']['name']."`9 wurde von der Stadtwache bei einem Einbruch besiegt.`0");
addnav('Tägliche News','news.php');
}
else {
output('`n`n`c`&'.$badguy['creaturename'].'`r hat dich besiegt. Du liegst schwer verletzt am Boden!`nDu verlierst 3 Charmepunkte und fast alle Lebenspunkte.`0`n`n`c');
$session['user']['hitpoints'] = 1;
$session['user']['charm'] -= 3;
// addnews("`&".$session['user']['name']."`9 stieß bei einem Einbruch auf unerwartete Gegenwehr und verletzte sich schwer.`0");
addnav('Davonkriechen',"houses.php?op=leave");
}
$session['user']['badguy'] = '';
}
else {
fightnav(false,true);
}
}
output('`n`n');
output('`c`b© by <a href="http://logd.chaosonline.de" target="_blank">Chaosmaker</a>`b`c',true);
checkday();
page_footer();
?>