anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Do 20 Jun, 2019 09:04

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Dieses Thema ist gesperrt. Du kannst keine Beiträge editieren oder weitere Antworten erstellen.  [ 15 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Häuser
BeitragVerfasst: Mi 18 Feb, 2004 04:55 
Offline
Admin
Admin
Benutzeravatar

Registriert: Di 21 Jan, 2003 01:11
Beiträge: 1595
Wohnort: Haßfurt
Geschlecht: Männlich
LoGD: http://www.anpera.net/logd
Skype: anpera-net
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)

_________________
Praxis ist, wenn alles klappt aber keiner weiß warum. Theorie ist, wenn man weiß wie es geht, aber nichts klappt. Wir haben beides erfolgreich vereinigt: Bei uns klappt nichts und keiner weiß warum!

Neues Video: Marios freier Tag in Second Life


Zuletzt geändert von anpera am Sa 24 Apr, 2004 15:41, insgesamt 2-mal geändert.

Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Mi 25 Feb, 2004 21:02 
Offline
Admin
Admin
Benutzeravatar

Registriert: Di 21 Jan, 2003 01:11
Beiträge: 1595
Wohnort: Haßfurt
Geschlecht: Männlich
LoGD: http://www.anpera.net/logd
Skype: anpera-net
Änderungen seit Release (in der Beschreibung oben und in houses.php bereits enthalten):

[25.2.2004]$this->bbcode_second_pass_code('', '----- SQL:
ALTER TABLE `houses` ADD `description` TEXT NOT NULL ;


----- Öffne:
houses.php

----- Finde:
}else if ($_GET[act]=="logout"){

----- Füge davor ein:
}else if ($_GET[act]=="desc"){
if (!$_POST[desc]){
output("`2Hier kannst du die Beschreibung für dein Haus ändern.`n`nDie aktuelle Beschreibung lautet:`0$row[description]`0`n");
output("`0<form action=\"houses.php?op=drin&act=desc\" method='POST'>",true);
output("`nGebe eine Beschreibung für dein Haus ein:`n<input name='desc' maxlength='250' size='50'>`n",true);
output("<input type='submit' class='button' value='Abschicken'>",true);
addnav("","houses.php?op=drin&act=desc");
}else{
output("`2Die Beschreibung wurde geändert.`n`0".stripslashes($_POST[desc])."`2.");
$sql = "UPDATE houses SET description='".$_POST[desc]."' WHERE houseid=$row[houseid]";
db_query($sql);
}
addnav("Zurück zum Haus","houses.php?op=drin");

----- Finde:
output("`2`b`c$row[housename]`c`b`n`n");

----- Füge danach ein:
if ($row[description]) output("`0`c$row[description]`c`n");

----- Finde:
if ($session[user][house]==$session[housekey]) addnav("Haus umbenennen","houses.php?op=drin&act=rename");

----- Ersetze es durch:
if ($session[user][house]==$session[housekey]){
addnav("Haus umbenennen","houses.php?op=drin&act=rename");
addnav("Beschreibug ändern","houses.php?op=drin&act=desc");
}')

_________________
Praxis ist, wenn alles klappt aber keiner weiß warum. Theorie ist, wenn man weiß wie es geht, aber nichts klappt. Wir haben beides erfolgreich vereinigt: Bei uns klappt nichts und keiner weiß warum!

Neues Video: Marios freier Tag in Second Life


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Mo 10 Mai, 2004 19:04 
Offline
Newbie
Benutzeravatar

Registriert: Fr 02 Apr, 2004 11:29
Beiträge: 4
Wohnort: Bacharach
Ich hab für meinen Server dem Skript noch zwei Dinge hinzugefügt:
- Hausbesitzer können, wie bei den Avataren, Links auf Bilder der Häuser hinzufügen
- Wenn ein Spieler im Wohnviertel auf den Namen eines Hauses klickt, bekommt er einige Informationen angezeigt:
Beschreibung, Bild, Eigentümer und Einwohner des Hauses. Damit läßt sich das ewige Ingame-Mail-Verschicken von wegen "Ist bei dir noch ein Schlüssel frei" vermeiden

$this->bbcode_second_pass_code('', '
----- SQL:
ALTER TABLE `houses` ADD `image` TEXT NOT NULL ;


----- Öffne:
houses.php

----- Finde:
}else if ($_GET[act]=="logout"){

----- Füge davor ein:
}else if ($_GET[act]=="url"){
if (!$_POST[image]){
output("`2Hier kannst du eine Bild-URL für dein Haus eingeben.`n`nDas aktuelle Bild ist: <img src=\"$row[image]\">", true);
output("`0<form action=\"houses.php?op=drin&act=url\" method='POST'>",true);
output("`n`2Gib eine URL zum Bild deines Hauses ein:`n <input name='image' value=\"$row[image]\" size='50'>`n",true);
output("<input type='submit' class='button' value='Abschicken'>",true);
addnav("","houses.php?op=drin&act=url");
}else{
output("`2Die Bild-URL wurde geändert.`n`0".stripslashes($_POST[image])."`2.");
$sql = "UPDATE houses SET image='".$_POST[image]."' WHERE houseid=$row[houseid]";
db_query($sql);
}
addnav("Zurück zum Haus","houses.php?op=drin");

----- Finde:
addnav("Haus umbenennen","houses.php?op=drin&act=rename");
addnav("Beschreibung ändern","houses.php?op=drin&act=desc");

----- Füge dahinter ein:
addnav("Bild-URL","houses.php?op=drin&act=url");

----- Finde:
}else if ($_GET[op]=="enter"){

----- Füge davor ein:
}else if ($_GET[op]=="view"){
$sql = "SELECT * FROM houses WHERE houseid=".$_GET[id]." ORDER BY houseid DESC";
$result = db_query($sql) or die(db_error(LINK));
$row = db_fetch_assoc($result);
output("`2`b`c$row[housename]`c`b`n");
if ($row[description]) output("`0`c$row[description]`c`n`n");
if ($row[image]) output("`c`bEin Bild des Hauses:`b`n<img src=\"$row[image]\">`c`n", true);
output("`n`n`n`2`bDie Einwohner:`b `0");
$sql = "SELECT name FROM accounts WHERE acctid=$row[owner] ORDER BY acctid DESC";
$result2 = db_query($sql) or die(db_error(LINK));
$row2 = db_fetch_assoc($result2);
output("`n`2Eigentümer: `&$row2[name]`0");

$sql = "SELECT * FROM items WHERE value1=$id AND class='Schlüssel' ORDER BY id ASC";
$result = db_query($sql) or die(db_error(LINK));
for ($i=1;$i<=db_num_rows($result);$i++){
$item = db_fetch_assoc($result);
$sql = "SELECT acctid,name FROM accounts WHERE acctid=$item[owner] ORDER BY login DESC";
$result2 = db_query($sql) or die(db_error(LINK));
$row2 = db_fetch_assoc($result2);
if ($row2[name]==""){
output("`n`2$i: `4`iSchlüssel verloren`i`0");
}else{
output("`n`2$i: `&$row2[name]`0");
}
if ($row2[acctid]==$row[owner]) output(" (der Eigentümer) ");
}
addnav("Zurück zum Wohnviertel","houses.php");
addnav("Zurück ins Dorf","village.php");

----- Finde:
output("<tr class='$bgcolor'><td align='right'>$row[houseid]</td><td>$row[housename]</td><td>",true);


----- Ersetze es durch:
if ($row[status]==1) {
output("<tr class='$bgcolor'><td align='right'>$row[houseid]</td><td><a href=\"houses.php?op=view&id=$row[houseid]\">$row[housename]</a></td><td>",true);
addnav("","houses.php?op=view&id=".$row[houseid]."");
}
else {
output("<tr class='$bgcolor'><td align='right'>$row[houseid]</td><td>$row[housename]</td><td>",true);
}

----- Öffne:
suhouses.php

----- Finde:
$sql="UPDATE houses SET owner=$_POST[owner],housename='".rawurldecode($_POST[housename])."',gold=$_POST[gold],gems=$_POST[gems],status=$_POST[status],description='".rawurldecode($_POST[description])."' WHERE houseid=$_GET[id]";

----- Finde in dieser Zeile:
description='".rawurldecode($_POST[description])."'

----- Füge danach ein:
,image='$_POST[image]'

----- Finde:
output("<tr><td>Beschreibung </td><td><input type='text' name='description' maxlength='250' value='".(rawurlencode($row[description]))."'></td></tr>",true);

----- Füge danach ein:
output("<tr><td>Bild-URL </td><td><input type='text' name='image' value='$row[image]'> &nbsp; <a target=\"_blank\" href=\"$row[image]\">URL testen</a></td></tr>",true);
')

Die Bild-Eingabe-Geschichte ist nur provisorisch und wird von mir demnächst um einen Größencheck und ein Formatcheck erweitert.


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Di 11 Mai, 2004 13:17 
Offline
Admin
Admin
Benutzeravatar

Registriert: Di 21 Jan, 2003 01:11
Beiträge: 1595
Wohnort: Haßfurt
Geschlecht: Männlich
LoGD: http://www.anpera.net/logd
Skype: anpera-net
Gefällt mir, danke!

Ob ich Bilder für Häuser bei mir zulassen werde, weiss ich noch nicht. Das sollte vielleicht mit den settings, ob Avatare erlaubt sind, gekoppelt werden. Was meinst du?
Für den Grössencheck kannst du mal in die bio.php gucken. Dort ist sowas schon eingebaut. Der funktioniert allerdings nur, wenn das PHP-Modul "GD2" aktiviert ist! Ein Formatcheck und ein Check der Dateigrösse ist dort nicht eingebaut.


Die Anzeige der Einwohner: Da bin ich mir auch noch nicht sicher. Es wird zwar so nicht angezeigt, wer wo schläft, aber es kann doch sehr leicht herausgefunden werden, wer wo schlafen könnte. Dafür sind bei mir aber der Wirt im Dark Horse und eine Echse im Club der Veteranen zuständig. ;)
Naja, sollte aber wohl keinen Ärger machen.

Die Idee mit der Infoseite ist schon deswegen gut, weil demnächst Möbel und Erweiterungen (als "items") für die Häuser zur Verfügung stehen könnten. Die werden sonst kaum eine Bedeutung haben, aber zum Protzen sind sie sehr gut geeignet ;)

_________________
Praxis ist, wenn alles klappt aber keiner weiß warum. Theorie ist, wenn man weiß wie es geht, aber nichts klappt. Wir haben beides erfolgreich vereinigt: Bei uns klappt nichts und keiner weiß warum!

Neues Video: Marios freier Tag in Second Life


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Di 11 Mai, 2004 17:47 
Offline
Freak
Freak
Benutzeravatar

Registriert: Di 02 Mär, 2004 18:16
Beiträge: 1206
Jo die Idee is gut ;)
Vorallem dat mit den Daten der Bewohner!

anpera hat geschrieben:
Die Idee mit der Infoseite ist schon deswegen gut, weil demnächst Möbel und Erweiterungen (als "items") für die Häuser zur Verfügung stehen könnten. Die werden sonst kaum eine Bedeutung haben, aber zum Protzen sind sie sehr gut geeignet ;)


Da werd ich wohl meinen Staubwedel zum Möbelputzen auspacken müssen :(

_________________
R.I.P.
†26.7.2004 - 20.3.2006†
†MeteorA†


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Do 20 Mai, 2004 20:15 
Offline
Newbie

Registriert: Do 20 Mai, 2004 19:08
Beiträge: 7
Ich hab die Häuser mal ein wenig erweitert - um mehrere Räume:
- Gemeinschaftsraum (bisheriger Chat)
- Küche (neuer Chat, Essen & Getränke)
- Schatzkammer (Schlüssel, Gold, Edelsteine, Einladungen)
- Schlafzimmer (Chat nur mit Ehepartner, Logout)
- Badezimmer (Zufallsaktionen wie gut schminken/rasieren oder Unfälle dabei)
- Bibliothek (zur Unterhaltung)
- Veranda (zu diesem Chat haben auch Leute Zutritt, die nur eine Einladung(neu), keinen Schlüssel haben)

Änderungen jetzt zu vielfältig, um sie hier auf einmal zu posten. Datei hier (basiert auf letzter Anpera-Version).

Dabei ist im Betrieb noch ein Fehler (??) in der Ursprungsdatei aufgefallen. Unter "einbruch2" finden sich Bedingungen, welche Gegner einem begegnen, wenn man in ein Haus einbricht.

$this->bbcode_second_pass_code('', 'if (db_num_rows($result2)>0 || $row[housekey]==(int)$session[housekey]){')

Dummerweise bedeutet daß wohl, daß unter den Gegnern auch immer der Hausbesitzer (zweite Zeile) ist, auch wenn der woanders nächtigt.
Beabsichtigt oder Bug? Unrealistisch auf jeden Fall... ich hab's mal als Option gemacht in meiner Version:

$this->bbcode_second_pass_code('', 'if ((db_num_rows($result2)>0) || (($row[housekey]==(int)$session[housekey]) && ($ownerdefendsownhouse))){')

Außerdem wird beim Logout nur bedingt das hvalue-Feld vom Schlüssel gesetzt... dadurch sieht man als Mitbewohner imho nicht, ob der Besitzer schläft. Ist das Absicht oder Bug? Ich hab's in meiner Version jedenfalls auch optional gemacht...

Ansonsten... wie sieht's mit deinen Möbeln aus? Machst Du Dich in näherer Zeit daran, oder soll ich uns lieber ein eigenes Ikea basteln? *g*[/url]


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Fr 21 Mai, 2004 00:52 
Offline
Admin
Admin
Benutzeravatar

Registriert: Di 21 Jan, 2003 01:11
Beiträge: 1595
Wohnort: Haßfurt
Geschlecht: Männlich
LoGD: http://www.anpera.net/logd
Skype: anpera-net
Durandil hat geschrieben:
Dummerweise bedeutet daß wohl, daß unter den Gegnern auch immer der Hausbesitzer (zweite Zeile) ist, auch wenn der woanders nächtigt.
Beabsichtigt oder Bug? Unrealistisch auf jeden Fall... ich hab's mal als Option gemacht in meiner Version:


Das Problem ist leider etwas komplexer.
Es ist nicht beabsichtigt, aber leider auch nicht so leicht zu lösen, wie du es vorgeschlagen hast. Denn in deiner Lösung verteidigt der Hausbesitzer überhaupt nur noch, wenn er mindestens einen Schlüssel selbst behält und diesen in seinem eigenen Haus benutzt.

Für den Besitzer gelten die Schlüsselabfragen aber nicht! Der Besitzer kommt auch ohne Schlüssel in sein eigenes Haus - die Schlüssel sind nur für Untermieter gedacht.
Dadurch, dass du für den Besitzer jetzt auch das Feld hvalue bei allen seinen unvergebenen Schlüssel setzt, ist er ebenfalls von Schlüsseln abhängig. Natürlich wird er sein Haus dann nicht verteidigen, wenn er woanders schläft - aber: Hat er den letzten Schlüssel vergeben und will in seinem Haus ausloggen, wird er es bei einem Angriff trotzdem nicht verteidigen. Schlimmstenfalls bekommst du beim Logout sogar eine SQL-Fehlermeldung und der Char sitzt in einer badnav-Schleife fest.
Eine Abfrage, ob der Hausbesitzer einen Schlüssel benutzt hat (hvalue-Feld), macht keinen Sinn, denn er kommt ohne Schlüssel in sein Haus. Ein Haus bleibt auf diese Weise selbst dann noch brauchbar, wenn alle Schlüssel verloren und der Besitzer gelöscht wurde.

Die brauchbarste Lösung, die ich bisher gefunden hab, ist eine Abfrage, ob der Hausbesitzer einen fremden Schlüssel besitzt, bei dem hvalue gesetzt ist. In diesem Fall schläft er natürlich nicht in seinem Haus, sondern in dem anderen. (Es können ja pro Person immer nur für 1 Haus Schlüssel hvalue>0 haben.)
Bis ich Zeit habe, das einzubauen, lasse ich den Hausbesitzer sein Haus lieber mal zu oft als zu wenig verteidigen. Aus diesem Grund gibt es bisher auch keine Anzeige, ob der Hausbesitzer im Haus schläft. ;)

Wenn dir noch was anderes einfällt, lass es mich bitte wissen. :)

Möbel sind immer noch fest geplant, stehen also auf der To-Do-Liste. Soll dich aber nicht davon abhalten, selbst etwas zu coden - kann nämlich noch ne Weile dauern :)

_________________
Praxis ist, wenn alles klappt aber keiner weiß warum. Theorie ist, wenn man weiß wie es geht, aber nichts klappt. Wir haben beides erfolgreich vereinigt: Bei uns klappt nichts und keiner weiß warum!

Neues Video: Marios freier Tag in Second Life


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Fr 21 Mai, 2004 18:19 
Offline
Newbie

Registriert: Do 20 Mai, 2004 19:08
Beiträge: 7
Nun, da ich sowieso in der accounts-Tabelle ein zusätzliches Feld 'housesleep' eingefügt habe (eben schon vorher wegen der Schlüssel-Situation, auch wenn ich da noch nicht speziell hier dran dachte - das war einfach nur, um auch als Besitzer wieder im eigenen Haus aufwachen zu können, und nicht wie vorher quasi erst ins Wohnviertel und von da aus wieder ins Haus zu müssen), werde ich einfach das benutzen, also: "wenn schlüssel oder in-haus-schläft" daraus machen.

Und was die Möbel angeht... ok, bau ich mir selber was. Möbelhaus steht schon, Möbel können in verschiedenen Zimmern plaziert werden. Fehlt nur noch ein "Umräumen" und "Auf Den Sperrmüll Geben". Und natürlich der schwerste Teil: eine große Möbeldatenbank zu erstellen...


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Mo 24 Mai, 2004 17:26 
Offline
Lehrling
Lehrling

Registriert: Mo 24 Mai, 2004 16:39
Beiträge: 32
Was müsste ich denn in der Datenbank eintragen wenn ich einen Tresor einbauen möchte.

ausser das:
INSERT INTO `furniture` VALUES (10, 'Tresor', 'Sicherheit', 'text text text.', 5000, 2, 12);

muss ich da noch was eintragen in bezug auf den Satz mit dem Gold am Boden.


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Mo 24 Mai, 2004 19:32 
Offline
Newbie

Registriert: Do 20 Mai, 2004 19:08
Beiträge: 7
Eine größere Möbel-Datenbank wird gerade schon erstellt; die im Archiv war mehr ein Test. Das Möbelhaus wächst auch insofern, als daß es dann verschiedene Etagen für verschiedene Bereiche haben wird.
Eine Klasse 'Sicherheit' habe ich noch nicht, aber diese hier:
Bett, Licht, Tisch, Stuhl, Schrank
Alles andere wird in einer Krimskrams-Abteilung des Warenhauses angezeigt. Den Tresor würde ich unter 'Schrank' verpacken.

Der Text bezieht sich nur darauf, ob ein Möbelstück in der Schatzkammer liegt oder nicht, und ist noch nicht auf bestimmte Klassen angepasst.

INSERT INTO `furniture` VALUES (33, 'Kleiner Tresor', 'Schrank', 'Dieser grobgeschmiedete Tresor soll dafür sorgen, daß Dein Gold und Deine Edelsteine nicht einfach auf dem Boden der Schatzkammer herumliegen. Du solltest nur aufpassen, daß Du den Schlüssel nicht verlierst, sonst hast Du ein Problem.', 5000, 2, 10);


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Mo 24 Mai, 2004 21:20 
Offline
Lehrling
Lehrling

Registriert: Mo 24 Mai, 2004 16:39
Beiträge: 32
Ich danke dir.

Ich habe nur noch eine andere kleine frage.

Einige Spieler können im Möbelhaus nix kaufen, obwohl sie ein eigenes haus und genügend gold habe.

da kommt immer die meldung:
"Du bist noch nicht ganz an der Kasse angelangt, da merkst Du, daß Du gar nicht genug Gold .... daß es niemand mitbekommen hat."

Woran liegt das?


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Mo 24 Mai, 2004 21:41 
Offline
Lehrling
Lehrling

Registriert: Mo 24 Mai, 2004 16:39
Beiträge: 32
ach ich weiß warum, die müssen IMMER Edelsteine mithaben, auch wenn keine edelsteine gebraucht werden.

Ich habe deine House-Datei etwas verändert. ich hoffe das ist nicht schlimm. Habe noch ne kleine "Erfrischungskur" aus dem englischen mit eingebaut.

Ausserdem habe ich das "Einbrechen" beschränkt bis einschließlich Level 3.


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Di 25 Mai, 2004 09:38 
Offline
Newbie

Registriert: Do 20 Mai, 2004 19:08
Beiträge: 7
Ups, das mit dem "immer dabeihaben" ist ein Bug... muss an der entsprechenden Stelle <= statt < heißen. Wird korrigiert (kannst auch selber nach jenem Text suchen, die Abfrage ist ca. ein dutzend Zeilen drüber und offensichtlich)!

Und warum sollte es schlimm sein, wenn Du die Datei veränderst? Ich hab ja auch nichts andere gemacht.
Aber was ist denn eine "Erfrischungskur" aus dem englischen?


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Di 25 Mai, 2004 10:32 
Offline
Lehrling
Lehrling

Registriert: Mo 24 Mai, 2004 16:39
Beiträge: 32
Naja, das mit der "Erfrischungskur" :lol: ist nix besonderes. Ich weiß auch garnicht mehr wo ich es herhabe.

Ist nur wenn man schläft, auf das WC geht oder ins Bad, werden von dem Hauseigentümer die Lebenspunkte aufgefrischt.

"Du gewinnst einen Extrawaldkampf und Deine Punkte werden wieder hergestellt...."


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: So 30 Mai, 2004 16:53 
Offline
Admin
Admin
Benutzeravatar

Registriert: Di 21 Jan, 2003 01:11
Beiträge: 1595
Wohnort: Haßfurt
Geschlecht: Männlich
LoGD: http://www.anpera.net/logd
Skype: anpera-net
Die houses.php von hier lässt jetzt Möbel zu.
Möbel müssen als "class='Möbel'" in der items-Tabelle eingetragen werden. Der Händler (vendor.php) erzeugt das beim Kauf von Möbeln automatisch und weist die Möbel dem richtigen Haus und dem richtigen Besitzer zu. Voraussetzung dafür, dass es Möbel zu kaufen gibt, ist, dass es Möbel-Prototypen mit "class='Möbel.Prot'" in der items-Tabelle gibt. Diese können bequem mit dem Item-Editor (itemeditor.php) erstellt werden.

Die Möbel werden im Haus und auf der Infoseite über ein Haus (nach Romulus) angezeigt, haben aber - außer zum Angeben - (noch) keine Bedeutung.

Verschiedene Zimmer gibt es (noch) nicht, wären aber prinzipiell auch mit diesem System denkbar. Es wäre auch denkbar, Zimmer als Erweiterungen anzubieten, aber darüber hab ich mir noch keine Gedanken gemacht.

Das Problem, dass der Hausbesitzer immer im Haus schläft, wurde gelöst.

_________________
Praxis ist, wenn alles klappt aber keiner weiß warum. Theorie ist, wenn man weiß wie es geht, aber nichts klappt. Wir haben beides erfolgreich vereinigt: Bei uns klappt nichts und keiner weiß warum!

Neues Video: Marios freier Tag in Second Life


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Dieses Thema ist gesperrt. Du kannst keine Beiträge editieren oder weitere Antworten erstellen.  [ 15 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 10 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
cron
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum