Beschreibung:
Mit diesem Addon können die Spieler Häuser mit vielen Funktionen nutzen:
- Häuser bauen, verkaufen und kaufen: Jeder Spieler kann genau ein Haus besitzen, aber Zugang zu beliebig vielen haben. Ein Hausbau wird auf Raten bezahlt, ein Haus zu kaufen muss sofort bezahlt werden. Der Verkauf kann von Spieler zu Spieler oder von Spieler zu Makler geschehen.
- Schlüssel für das Haus an Freunde verteilen oder zurückziehen: Hausbesitzer können durch Hausschlüssel bis zu 9 weiteren Spielern Zugang zum Haus geben. Diese Schlüssel können nur vom Hauseigentümer wieder zurückgenommen werden. Nur der Bau eines neuen Hauses garantiert, dass der Schlüsselsatz noch vollständig ist, denn löscht sich ein Spieler mit einem Schlüssel, (oder wird gelöscht), ist sein Schlüssel verloren.
- Private Chat-Area: Alle Einwohner des Hauses können die Kommentar-Area des Hauses für private Gespräche nutzen. Nur Spieler mit Schlüssel haben Zugang dazu. Ideal für Ehepartner aus dem Gartenflirt. Wird ein Haus verkauft, hat der nachfolgende Besitzer Zugang zu diesen Gesprächen!
- Gold und Edelsteine im Haus lagern und mit Freunden teilen: Alle Bewohner teilen sich den gemeinsamen Schatz des Hauses. Wieviel jeder Spieler pro Tag einzahlen oder mitnehmen kann, wird von den Bankeinstellungen geregelt. Wird einem Spieler der Schlüssel vom Hauseigentümer abgenommen, bekommt er einen gerechten Anteil aus dem Schatz des Hauses.
- Platz zum Schlafen für alle Bewohner (Logout): Häuser bieten einen sicheren Platz zum schlafen. Im Gegensatz zur Kneipe kostet die Übernachtung im Haus nichts und der Spieler wird von einer Stadtwache beschützt, deren Lebensenergie dem Unterschied zwischen Bewohner und Einbrecher entspricht. Je mehr und je stärkere Spieler sich ein Haus teilen, umso sicherer wird es auch für den eingelagerten Schatz.
- Einbruch (erweitertes PvP mit Diebstahl): Spieler, die in Häusern schlafen, werden in der PvP-Liste nicht aufgeführt. Mit der Einbruch-Funktion können sie trotzdem angegriffen werden. Bei einem Einbruch muss der Einbrecher immer erst eine Stadtwache und dann vom Stärksten bis zum Schwächsten alle Bewohner besiegen, bevor er an den Schatz kommt. Er kann dabei nie wissen, wem er begenen wird - denn auch der Eigentümer könnte gerade woanders schlafen. Gelingt der Einbruch, kann er einen Teil des eingelagerten Schatzes mitnehmen. Ist niemand im Haus, muss nur eine Wache besiegt werden.
Ein Einbruch in ein Haus stellt die einzige Möglichkeit dar, auch gegen wesentich schwächere Gegner zu kämpfen. Der Heimvorteil und die jeweils davor zu besiegende Wache gleichen den Nachteil aus. Erfolgreiche Verteidigung kann so enorm viele Erfahrungspunkte geben.
Ist PvP auf einem Server deaktiviert, ist der Einbruch in Häuser nicht verfügbar. Wie oft in ein Haus eingebrochen werden kann, bestimmt die entsprechende PvP-Einstellung.
- Optional: In der Jägerhütte können verlorene Schlüssel für 10 Punkte und zusätzliche Schlüssel für 50 Punkte gekauft werden.
Jedes Haus hat einen Namen, der vom Eigentümer geändert werden kann.
Ausserdem führt dieses Häuser-Addon mein Inventarsystem ein, für das viele weitere Anwendungen möglich sind.
Autor: anpera (
logd@anpera.de )
Version: April 2004
Für LoGD Version: 0.9.7+jt
Einbauanleitung:$this->bbcode_second_pass_code('', '----- SQL:
ALTER TABLE `accounts` ADD `house` INT UNSIGNED DEFAULT '0' NOT NULL , ADD `housekey` INT UNSIGNED DEFAULT '0' NOT NULL ;
CREATE TABLE houses ( houseid int(11) unsigned NOT NULL auto_increment, owner int(11) unsigned NOT NULL default '0', status int(10) unsigned NOT NULL default '0', gold int(10) unsigned NOT NULL default '0', gems int(10) unsigned NOT NULL default '0', housename varchar(20) default NULL, description text NOT NULL, PRIMARY KEY (houseid) ) TYPE=MyISAM;
CREATE TABLE items ( id int(11) unsigned NOT NULL auto_increment, name varchar(25) NOT NULL default '', class varchar(10) NOT NULL default '', owner int(11) unsigned NOT NULL default '0', value1 int(11) NOT NULL default '0', value2 int(11) NOT NULL default '0', gold int(11) unsigned NOT NULL default '0', gems int(11) unsigned NOT NULL default '0', description varchar(250) default NULL, hvalue int(11) NOT NULL defaul '0', buff TEXT, PRIMARY KEY (id)) TYPE=MyISAM;
----- Öffne:
battle.php
----- Finde:
if ($_GET['bg']==1){
----- Füge davor ein:
if ($_GET['bg']==2){
$session['bufflist']['heimvorteil'] = array(
"startmsg"=>"`n`\${$badguy['creaturename']} `\$hat einen gewaltigen Heimvorteil!`n`n",
"name"=>"`\$Nachteil",
"rounds"=>20,
"wearoff"=>"Der Heimvorteil ist deinem Gegner nicht mehr von Vorteil.",
"minioncount"=>1,
"maxgoodguydamage"=> round($session['user']['level']+5),
"effectmsg"=>"`7Durch {badguy}`7's Heimvorteil bekommst du zusätzlich `\${damage}`7 Schadenspunkte.",
"effectnodmgmsg"=>"",
"activate"=>"roundstart"
);
}
----- Finde:
unset($session['bufflist']['bodyguard']);
----- Füge danach ein:
if (isset($session['bufflist']['heimvorteil'])) unset($session['bufflist']['heimvorteil']);
----- Öffne:
bio.php
----- Finde:
if ($row['dragonkills']>0) output("`^Drachenkills: `@{$row['dragonkills']}`n");
----- Füge danach ein:
if ($row[housekey]) output("`^Hausnummer: `@$row[housekey]`n");
----- Öffne:
dag.php
----- Finde:
output($row['location']
?"`3Boar's Head Inn`0"
:(
$loggedin
?"`#Online`0"
:"`3The Fields`0"
)
);
----- Ersetze es mit:
if ($row[location]==0) output($loggedin?"`#Online`0":"`3Die Felder`0");
if ($row[location]==1) output("`3Zimmer in Kneipe`0");
if ($row[location]==2) output("`3Im Haus`0");
----- Öffne:
dragon.php
----- Finde:
$nochange=array("acctid"=>1
----- Füge danach ein:
,"house"=>1
,"housekey"=>1
----- Öffne:
index.php
----- Finde:
$sql = "UPDATE accounts SET sentnotice=1 WHERE acctid='$row[acctid]'";
----- Ersetze es durch:
$sql = "UPDATE accounts SET sentnotice=1,house=0,housekey=0 WHERE acctid='$row[acctid]'";
db_query($sql);
$sql = "UPDATE houses SET owner=0,status=3 WHERE owner=$row[acctid] AND status=1";
db_query($sql);
$sql = "UPDATE houses SET owner=0,status=4 WHERE owner=$row[acctid] AND status=0";
db_query($sql);
$sql = "UPDATE items SET owner=0 WHERE owner=$row[acctid]";
----- Öffne:
list.php
----- Finde:
output($row[location]
?"`3Zimmer in Kneipe`0"
:(
$loggedin
?"`#Online`0"
:"`3Die Felder`0"
)
);
----- Ersetze es durch:
if ($row[location]==0) output($loggedin?"`#Online`0":"`3Die Felder`0");
if ($row[location]==1) output("`3Zimmer in Kneipe`0");
if ($row[location]==2) output("`3Im Haus`0");
----- Öffne:
login.php
----- Finde:
}else if($location==1){
redirect("inn.php?op=strolldown");
----- Füge danach ein:
}else if($location==2){
redirect("houses.php?op=newday");
----- Öffne:
prefs.php
----- Finde:
$sql = "DELETE FROM accounts WHERE acctid='$HTTP_GET_VARS[userid]'";
----- Füge davor ein:
$sql = "UPDATE items SET owner=0 WHERE owner=$HTTP_GET_VARS[userid]";
db_query($sql);
$sql = "UPDATE houses SET owner=0,status=3 WHERE owner=$HTTP_GET_VARS[userid] AND status=1";
db_query($sql);
$sql = "UPDATE houses SET owner=0,status=4 WHERE owner=$HTTP_GET_VARS[userid] AND status=0";
db_query($sql);
----- (optional: Inventar anzeigen) Finde:
$session[user][loggedin] = false;
----- (optional: Inventar anzeigen) Füge danach ein:
}else if ($HTTP_GET_VARS[op]=="inventory") {
output("`c`bDie Besitztümer von ".$session[user][name]."`b`c`n`n");
output("<table cellspacing=0 cellpadding=2 align='center'><tr><td>`bItem`b</td><td>`bKlasse`b</td><td>`bWert 1`b</td><td>`bWert 2`b</td><td>`bVerkaufswert`b</td></tr>",true);
$sql = "SELECT * FROM items WHERE owner=".$session[user][acctid]." ORDER BY class ASC";
$result = db_query($sql) or die(db_error(LINK));
if (db_num_rows($result)==0){
output("<tr><td colspan=4 align='center'>`&`iDu hast nichts im Inventar`i`0</td></tr>",true);
}else{
for ($i=0;$i<db_num_rows($result);$i++){
$item = db_fetch_assoc($result);
$bgcolor=($i%2==1?"trlight":"trdark");
output("<tr class='$bgcolor'><td>`&$item[name]`0</td><td>`!$item[class]`0</td><td align='right'>$item[value1]</td><td align='right'>$item[value2]</td><td>",true);
if ($item[gold]==0 && $item[gems]==0){
output("`4Unverkäuflich`0");
}else{
output("`^$item[gold]`0 Gold, `#$item[gems]`0 Edelsteine");
}
output("</td></tr><tr class='$bgcolor'><td align='right'>Beschreibung:</td><td colspan=4>$item[description]</td></tr>",true);
}
}
output("</table>",true);
addnav("Zurück","prefs.php");
----- (optional: Inventar anzeigen) Finde:
addnav("","prefs.php?op=save");
----- (optional: Inventar anzeigen) Füge danach ein:
addnav("Inventar anzeigen","prefs.php?op=inventory");
----- Öffne:
pvp.php
----- Finde:
if (abs($session[user][level]-$row[creaturelevel])>2){
----- Ersetze es durch:
if (abs($session[user][level]-$row[creaturelevel])>2 && $row[location]!=2){
----- Finde:
}elseif ($session[user][dragonkills] >( $row[dragonkills]+5)){
----- Ersetze es durch:
}elseif ($session[user][dragonkills] >( $row[dragonkills]+5) && $row[location]!=2){
----- Finde:
if ((int)$row[location]!=0 && 0){
----- Ersetze es durch:
if ((int)$row[location]!=0 && 0 && $row[location]!=2){
----- Finde:
if ($badguy['location']){
addnews("`4".$session['user']['name']."`3 besiegt `4{$badguy['creaturename']}`3 brutal in einem Zimmer in der Kneipe!");
$killedin="`6der Kneipe";
----- Ersetze es durch:
if ($badguy['location']==1){
addnews("`4".$session['user']['name']."`3 besiegt `4{$badguy['creaturename']}`3 brutal in einem Zimmer in der Kneipe!");
$killedin="`6der Kneipe";
} else if ($badguy['location']==2){
addnews("`4".$session['user']['name']."`3 besiegt `4{$badguy['creaturename']}`3 bei einem Einbruch ins Haus!");
$killedin="`6`2einem Haus";
----- Finde:
if ($badguy['location']){
addnav("Zurück zur Kneipe","inn.php");
----- Ersetze es durch:
if ($badguy['location']==1){
addnav("Zurück zur Kneipe","inn.php");
} else if ($badguy['location']==2){
addnav("Zurück zum Wohnviertel","houses.php");
----- Finde:
if ($badguy[location]){
$killedin="`6der Kneipe";
----- Ersetze es durch:
if ($badguy[location]==1){
$killedin="`6der Kneipe";
} else if ($badguy[location]==2){
$killedin="`2einem Haus";
----- Öffne:
superuser.php
----- Finde:
addnav("Wortfilter","badword.php");
----- Füge danach ein:
addnav("Hausmeister","suhouses.php");
----- Öffne:
user.php
----- Finde:
"charm"=>"Charme,int",
----- Füge danach ein:
"house"=>"Haus-ID,int",
"housekey"=>"Hausschlüssel?,int",
----- Finde:
$sql = "DELETE FROM accounts WHERE acctid='$_GET[userid]'";
----- Füge davor ein:
$sql = "UPDATE items SET owner=0 WHERE owner=$_GET[userid]";
db_query($sql);
$sql = "UPDATE houses SET owner=0,status=3 WHERE owner=$_GET[userid] AND status=1";
db_query($sql);
$sql = "UPDATE houses SET owner=0,status=4 WHERE owner=$_GET[userid] AND status=0";
db_query($sql);
----- Öffne:
village.php
----- Finde:
addnav("....","....");
----- Füge irgendwo ein:
addnav("Wohnviertel","houses.php");
----- Alle Dateien speichern und schliessen
----- Hochladen:
houses.php
suhouses.php')
Bemerkung:
Die hier verlinkten Dateien (ausser houses.php) können auch Änderungen aus anderen Hacks enthalten. Es empfiehlt sich dringend, die Installation manuell durchzuführen und nicht einfach die veränderten Dateien von hier zu verwenden.
Dateien:
modifizierte battle.php (Source)
modifizierte bio.php (Source)
modifizierte dag.php (Source)
modifizierte dragon.php hier nicht verfügbar
houses.php (Source)
modifizierte index.php (Source)
modifizierte list.php (Source)
modifizierte login.php (Source)
modifizierte prefs.php (Source)
modifizierte pvp.php (Source)
suhouses.php (Source)
modifizierte superuser.php (Source)
modifizierte user.php (Source)
modifizierte village.php (Source)