Ich habe das Wohnsystem nun schon recht lange und hatte bisher eigentlich nie wirkliche Probleme, bis garkeine damit.
Hab den Thread jetzt auch nur grob überflogen, also sorry wenns schon iwo steht, ist heute einfach nicht mein Tag ...
Jedenfalls kommt man bei mir nicht mehr auf in die Schatzkammer, also wenn ich einem Spieler einen Schlüssel zu meiner Kammer gebe, kriegt er nur die Meldung er hätte da nix zu suchen, aber auf meinem Testserver (XAMPP hat ja bei mir den Geist aufgegeben -.-) läuft das allen Anschein nach noch, was mich wundert da auf beiden die gleichen Dateien liegen, vielleicht kann mir ja trotzdem einer helfen, finde das äußerst merkwürdig, hier mal der ganze Code meiner chamber.php:
PHP:
<?php
Function module_getinfo_chamber ()
{
$chamberinfo = array (
'modulename' => 'chamber',
'modulefile' => basename(__FILE__),
'moduleauthor' => 'MySql',
'moduleversion' => '1.0',
'built_in' => '1',
'linkcategory' => 'Schatzkammer',
'linktitle' => 'Die Schatzkammer',
'showto' => 'owner,guest'
);
return $chamberinfo;
}
Function module_install_chamber ()
{
$info = module_getinfo_chamber();
$insert = 'INSERT INTO housemodules (modulefile,modulename,moduleversion,moduleauthor,built_in,linkcategory,linktitle,showto)
VALUES ("'.$info['modulefile'].'","'.$info['modulename'].'","'.$info['moduleversion'].'","'.$info['moduleauthor'].'",
"'.$info['built_in'].'","'.$info['linkcategory'].'","'.$info['linktitle'].'","'.$info['showto'].'")';
db_query($insert);
$moduleid = db_insert_id(LINK);
}
Function module_uninstall_chamber ()
{
$info = module_getinfo_chamber();
$moduleid = getmoduleid($info['modulename']);
$delete = 'DELETE FROM housemodules WHERE moduleid='.$moduleid;
db_query($delete);
$delete = 'DELETE FROM housemoduledata WHERE moduleid='.$moduleid;
db_query($delete);
}
Function module_build_chamber ($houseid)
{
$info = module_getinfo_chamber();
$moduleid = getmoduleid($info['modulename']);
$insert = 'INSERT INTO housemoduledata (moduleid, name, houseid, value)
VALUES ('.$moduleid.',"#activated#",'.$houseid.',"1")';
db_query($insert);
}
Function module_destroy_chamber ($houseid)
{
$info = module_getinfo_chamber();
$moduleid = getmoduleid($info['modulename']);
$delete = 'DELETE FROM housemoduledata WHERE moduleid='.$moduleid.' AND houseid='.$houseid;
db_query($sql);
}
Function module_show_chamber ()
{
global $session;
$select = 'SELECT * FROM items WHERE value1='.$session['user']['specialmisc']['houseid'].' AND class="Treasure"';
$result = db_query($select) or die(db_error(LINK));
$access = db_fetch_assoc($result);
if ($session['user']['acctid'] == $access['owner'] OR $session['user']['house'] == $session['user']['specialmisc']['houseid'])
{
switch ($_GET['act'])
{
case '':
$link = "houses.php?op=drin";
$select = 'SELECT gold,maxgold,gems,maxgems,housename,houseid,owner FROM houses WHERE houseid = '.$session['user']['specialmisc']['houseid'];
$result = db_query($select);
$gebaus = db_fetch_assoc($result);
output('`c`b'.$gebaus['housename'].' `D(In der Schatzkammer)`c`b`n`n'.
'`@Du befindest dich in der Schatzkammer des Hauses Nr. '.$gebaus['houseid'].
'. `@`nHier kannst du deine Dublonen und Edelsteine sparen, oder mit anderen deine '.
'Schätze teilen. `nEs ist jetzt `^'.getgametime().'`@ Uhr.`n`n');
output('<form action="houses.php?op=drin&trans=trans" method="post">'.
'<table align="center">'.
'<tr class="trhead">'.
'<td colspan=2>`b`^Dublonen verfügbar: `i'.$gebaus['gold'].'`0`i/`i`^'.$gebaus['maxgold'].'`i`b</td>'.
'<td colspan=2>`b`#Edelsteine verfügbar: `i'.$gebaus['gems'].'`0`i/`i`#'.$gebaus['maxgems'].'`i`b</td>'.
'</tr>'.
'<tr>'.
'<td>`^Herein legen:</td><td><input name="givegold" value="0"></td>'.
'<td>`#Herein legen:</td><td><input name="givegems" value="0"></td>'.
'</tr>'.
'<tr>'.
'<td>`^Heraus nehmen:</td><td><input name="takegold" value="0"></td>'.
'<td>`#Heraus nehmen:</td><td><input name="takegems" value="0"></td>'.
'</tr>'.
'</table>'.
'<div align="center"><input type="submit" class="button" value="Bestätigen"></div>'.
'</form><br /><br />',true);
addnav('Optionen');
addnav('Zum Flur','houses.php?op=drin&module=');
addnav('','houses.php?op=drin&trans=trans');
if ($session['user']['house'] == $session['user']['specialmisc']['houseid'])
{
addnav('Schlüssel');
addnav('Schlüssel vergeben','houses.php?op=drin&act=givekey');
addnav('Schlüssel nehmen','houses.php?op=drin&act=takekey');
}
if ($_GET['trans'] == 'trans')
{
if ($_POST['givegold'] > 0)
{
if ($_POST['givegold'] > $session['user']['gold'])
{
$session['user']['specialmisc']['message'] .= '`c`b`$Soviele Dublonen hast du doch gar nicht bei dir!`c`b`0`n';
redirect($link);
}
elseif (abs((int)$_POST[givegold]) > (round($gebaus[maxgold])-$gebaus[gold]))
{
$session['user']['specialmisc']['message'] .= '`c`b`$Soviele Dublonen passen nicht mehr in die Schatztruhe!`c`b`0`n';
}
else {
$gebaus['gold']+=$_POST['givegold'];
$session['user']['gold']-=$_POST['givegold'];
$section = 'chamber-'.$session['user']['specialmisc']['houseid'];
db_query('UPDATE houses SET gold = '.$gebaus['gold'].' WHERE houseid='.$gebaus['houseid']);
db_query('INSERT INTO commentary (postdate,section,author,comment,emote) VALUES (now(),"'.$section.'",'.$session[user][acctid].',"`\&packt `^'.$_POST['givegold'].' Goldstücke`& in den gemeinsamen Schatz.",1)');
redirect($link);
}
}
if ($_POST['takegold'] > 0)
{
if ($gebaus[gold] < abs((int)$_POST[takegold]))
{
$session['user']['specialmisc']['message'] .= '`c`b`$Soviele Dublonen sind doch gar nicht mehr in die Schatztruhe!`c`b`0`n';
redirect($link);
}
else {
$gebaus['gold']-=$_POST['takegold'];
$session['user']['gold']+=$_POST['takegold'];
$section = 'chamber-'.$session['user']['specialmisc']['houseid'];
db_query('UPDATE houses SET gold = '.$gebaus['gold'].' WHERE houseid='.$gebaus['houseid']);
db_query('INSERT INTO commentary (postdate,section,author,comment,emote) VALUES (now(),"'.$section.'",'.$session[user][acctid].',"`\&nimmt `^'.$_POST['takegold'].' Goldstücke`& aus dem gemeinsamen Schatz.",1)');
redirect($link);
}
}
if ($_POST['givegems'] > 0)
{
if ($_POST['givegems'] > $session['user']['gems'])
{
$session['user']['specialmisc']['message'] .= '`c`b`$Soviele Saphire hast du doch gar nicht bei dir!`c`b`0`n';
redirect($link);
}
elseif (abs((int)$_POST[givegems]) > (round($gebaus[maxgems])-$gebaus[gems]))
{
$session['user']['specialmisc']['message'] .='`c`b`$Soviele Saphire passen nicht mehr in die Schatztruhe!`c`b`0`n';
}
else {
$gebaus['gems']+=$_POST['givegems'];
$session['user']['gems']-=$_POST['givegems'];
$section = 'chamber-'.$session['user']['specialmisc']['houseid'];
db_query('UPDATE houses SET gems = '.$gebaus['gems'].' WHERE houseid='.$gebaus['houseid']);
db_query('INSERT INTO commentary (postdate,section,author,comment,emote) VALUES (now(),"'.$section.'",'.$session[user][acctid].',"`\&packt `#'.$_POST['givegems'].' Edelsteine`& in den gemeinsamen Schatz.",1)');
redirect($link);
}
}
if ($_POST['takegems'] > 0)
{
if ($gebaus[gems] < abs((int)$_POST[takegems]))
{
$session['user']['specialmisc']['message'] .= '`c`b`$Soviele Saphire sind doch gar nicht mehr in die Schatztruhe!`c`b`0`n';
redirect($link);
}
else {
$gebaus['gems']-=$_POST['takegems'];
$session['user']['gems']+=$_POST['takegems'];
$section = 'chamber-'.$session['user']['specialmisc']['houseid'];
db_query('UPDATE houses SET gems = '.$gebaus['gems'].' WHERE houseid='.$gebaus['houseid']);
db_query('INSERT INTO commentary (postdate,section,author,comment,emote) VALUES (now(),"'.$section.'",'.$session[user][acctid].',"`\&nimmt `#'.$_POST['takegems'].' Edelsteine`& aus dem gemeinsamen Schatz.",1)');
redirect($link);
}
}
}
output($session['user']['specialmisc']['message']);
$session['user']['specialmisc']['message'] = '';
viewcommentary('chamber-'.$session['user']['specialmisc']['houseid'],'Hier reden:',25,'sagt');
output('`n`n`n<table border="0">'.
'<tr>'.
'<td>`2`bEinen Schatzkammerschlüssel haben:`b `0</td>'.
'</tr>'.
'<tr>'.
'<td valign="top">'
,true);
$sql1 = "SELECT items.*,accounts.acctid AS aid,accounts.name AS besitzer FROM items LEFT JOIN accounts ON accounts.acctid=items.owner WHERE value1=".$session['user']['specialmisc']['houseid']." AND class='Treasure' ORDER BY id ASC";
$res = db_query($sql1) or die(db_error(LINK));
for ($i=1;$i<=db_num_rows($res);$i++)
{
$item = db_fetch_assoc($res);
if ($item[besitzer] == '')
{
output('`n`2'.$i.': `4`iVerloren`i`0');
}
else {
output('`n`2'.$i.': `&'.$item[besitzer].'`0');
}
if ($item[aid]==$gebaus[owner]) output(' (der Eigentümer) ');
}
output('</table>',true);
break;
case 'givekey':
addnav('Optionen');
addnav('Zur Schatzkammer','houses.php?op=drin');
if (empty($_POST['ziel']))
{
output('`2Einen Schlüssel für die Schatzkammer haben:`n`n');
$select = 'SELECT items.*,accounts.name AS besitzer FROM items LEFT JOIN accounts ON accounts.acctid=items.owner WHERE value1='.$session['user']['specialmisc']['houseid'].' AND class="Treasure" AND owner!='.$session['user']['acctid'].' ORDER BY value2 ASC';
$result = db_query($select) or die(db_error(LINK));
while ($item = db_fetch_assoc($result))
{
output('`c`& '.$item[besitzer].'`0`c');
}
$select = 'SELECT COUNT(id) AS num FROM items WHERE value1='.$session['user']['specialmisc']['houseid'].' AND class="Treasure" AND owner='.$session['user']['acctid'];
$result = db_query($select) or die(db_error(LINK));
$keynum = db_fetch_assoc($result);
if ($keynum['num']>0)
{
output('`n`2Du kannst noch `b'.$keynum['num'].'`b Schlüssel vergeben.'.
'<form action="houses.php?op=drin&act=givekey" method="post">'.
'An wen willst du einen Schlüssel übergeben? <input name="ziel">`n'.
'<input type="submit" class="button" value="Übergeben"></form>'.
'`n`nWenn du einen Schlüssel vergibst, wird der Schatz des Hauses '.
'gemeinsam genutzt. Du kannst einem Mitbewohner zwar jederzeit den '.
'Schlüssel wieder wegnehmen, '.
'aber er wird dann einen gerechten Anteil aus dem gemeinsamen Schatz bekommen.'
,true);
addnav('','houses.php?op=drin&act=givekey');
}
else {
output('`n`2Du hast keine Schlüssel mehr übrig. Vielleicht kannst du in der '.
'Jägerhütte noch einen nachmachen lassen?');
}
}
else {
if ($_GET['subfinal']==1)
{
$sql = 'SELECT acctid,name,login,lastip,emailaddress FROM accounts WHERE name="'.addslashes(rawurldecode(stripslashes($_POST['ziel']))).'" AND locked=0 AND dragonkills >= '.getsetting('housekeymindk',0);
}
else {
$ziel = stripslashes(rawurldecode($_POST['ziel']));
$name="%";
for ($x=0;$x<strlen($ziel);$x++)
{
$name.=substr($ziel,$x,1)."%";
}
$sql = 'SELECT acctid,name,login,lastip FROM accounts WHERE name LIKE "'.addslashes($name).'" AND locked=0 AND dragonkills >= '.getsetting('housekeymindk',0).' AND acctid!='.$session['user']['acctid'];
}
$result2 = db_query($sql);
if (db_num_rows($result2) == 0)
{
output('`2Es gibt niemanden mit einem solchen Namen. Versuchs nochmal.');
}
elseif (db_num_rows($result2) > 100)
{
output('`2Es gibt über 100 Krieger mit einem ähnlichen Namen. Bitte sei etwas genauer.');
}
elseif (db_num_rows($result2) > 1)
{
output('`2Es gibt mehrere mögliche Krieger, denen du einen Schlüssel übergeben kannst.`n'.
'<form action="houses.php?op=drin&act=givekey&subfinal=1" method="post">'.
'`2Wen genau meinst du? <select name="ziel">'
,true);
while ($row2 = db_fetch_assoc($result2))
{
output('<option value="'.rawurlencode($row2['name']).'">'.preg_replace('"[`]."','',$row2['name']).'</option>',true);
}
output('</select>`n`n'.
'<input type="submit" class="button" value="Schlüssel übergeben"></form>'
,true);
addnav('','houses.php?op=drin&act=givekey&subfinal=1');
}
else {
$row2 = db_fetch_assoc($result2);
$sql = 'SELECT COUNT(owner) AS zahl FROM items WHERE owner='.$row2[acctid].' AND value1='.$session['user']['specialmisc']['houseid'].' AND class="Treasure" ORDER BY id ASC';
$result = db_query($sql) or die(db_error(LINK));
$item = db_fetch_assoc($result);
if ($row2['login'] == $session['user']['login'])
{
output('`2Du kannst dir nicht selbst einen Schlüssel geben.');
}
elseif ($item['zahl']>0)
{
output('`2'.$row2[name].'`2 hat bereits einen Schlüssel!');
}
elseif (ac_check($row2))
{
output('`2Deine Charaktere dürfen leider nicht miteinander interagieren!');
}
else {
$sql = 'SELECT value2 FROM items WHERE value1='.$session['user']['specialmisc']['houseid'].' AND class="Treasure" AND owner='.$session['user']['acctid'].' ORDER BY id ASC LIMIT 1';
$result = db_query($sql) or die(db_error(LINK));
$knr = db_fetch_assoc($result);
$knr=$knr['value2'];
$sql = 'SELECT housename FROM houses WHERE houseid='.$session['user']['specialmisc']['houseid'];
$result = db_query($sql);
$row = db_fetch_assoc($result);
output('`2Du übergibst `&'.$row2[name].'`2 einen Schlüssel für dein Haus. Du '.
'kannst den Schlüssel zum Haus jederzeit wieder wegnehmen, aber '.
$row2[name].'`2 wird dann '.
'einen gerechten Anteil aus dem gemeinsamen Schatz des Hauses bekommen.`n');
$message = '`@Seid gegrüßt '.$row2[name].'`n`n'.
$session['user']['name'].' `@lässt Euch einen Schlüssel zur '.
'Schatzkammer des Hauses überbringen!`n'.
'Gratulation!`n`n'.
'Mit freundlichen Grüßen,`n'.
'Bote Balboa';
$title = '`@Schlüssel erhalten!`0';
systemmail($row2['acctid'],$title,$message);
$sql = 'UPDATE items SET owner='.$row2[acctid].',hvalue=0 WHERE owner='.$session['user']['acctid'].' AND class="Treasure" AND value1='.$session['user']['specialmisc']['houseid'].' AND value2='.$knr;
db_query($sql);
}
}
}
break;
case 'takekey':
addnav('Optionen');
addnav('Zur Schatzkammer','houses.php?op=drin');
if (empty($_POST['ziel']))
{
$sql = "SELECT items.owner, accounts.name FROM items LEFT JOIN accounts ON items.owner=accounts.acctid WHERE items.value1={$session['user']['specialmisc']['houseid']} AND items.class='Treasure' AND accounts.acctid > 0 AND items.owner!='{$session['user']['acctid']}' ORDER BY items.value2 ASC";
$result = db_query($sql) or die(db_error(LINK));
output("<form action='houses.php?op=drin&act=takekey' method='POST'>",true);
output("`2Wem willst du den Schlüssel wegnehmen? <select name='ziel'>",true);
while ($item = db_fetch_assoc($result))
{
output("<option value=\"".rawurlencode($item['name'])."\">".preg_replace("'[`].'","",$item['name'])."</option>",true);
}
output("</select>`n`n",true);
output("<input type='submit' class='button' value='Schlüssel abnehmen'></form>",true);
addnav("","houses.php?op=drin&act=takekey");
}
else {
$sql = "SELECT acctid,name,login,gold,gems FROM accounts WHERE name='".addslashes(rawurldecode(stripslashes($_POST['ziel'])))."'";
$result2 = db_query($sql);
$row2 = db_fetch_assoc($result2);
output("`2Du verlangst den Schlüssel von `&$row2[name]`2 zurück.`n");
$sql = "SELECT COUNT(id) AS num FROM items WHERE value1={$session['user']['specialmisc']['houseid']} AND class='Treasure' AND owner!=0 AND owner!=".$session['user']['acctid'];
$result = db_query($sql) or die(db_error(LINK));
$keynum = db_fetch_assoc($result);
$sql = 'SELECT housename FROM houses WHERE houseid='.$session['user']['specialmisc']['houseid'];
$result = db_query($sql);
$row = db_fetch_assoc($result);
$select = 'SELECT gold,gems FROM houses WHERE houseid='.$session['user']['specialmisc']['houseid'];
$result = db_query($select);
$gebaus = db_fetch_assoc($result);
$goldinhouse = $gebaus['gold'];
$gemsinhouse = $gebaus['gems'];
$goldgive = round($goldinhouse / ($keynum['num']+1));
$gemsgive = round($gemsinhouse / ($keynum['num']+1));
if ($gemsgive > 0) $getstr = "`%$gemsgive Edelsteine`2";
else $getstr = '';
if ($goldgive > 0)
{
if ($getstr!='') $getstr .= ' und ';
$getstr .= "`^$goldgive Gold`2 auf die Bank";
}
$message = '`@Seid gegrüßt '.$row2[name].'`@,`n'.
$session['user']['name'].'`@ hat Euch den Schatzkammerschlüssel,`n'.
'zu seinem Haus wieder abgenommen!`n`n'.
'Du bekommst `^'.$givegold.' Goldstücke`@ und `#'.$givegems.' Edelsteine`@ aus der Schatztruhe!'.
'Mit freundlichen Grüßen,`n'.
'Bote Balboa.';
$title = '`@Schlüssel zurückverlangt!`0';
systemmail($row2['acctid'],$title,$message);
output("$row2[name]`2 bekommt `Y$goldgive Gold`2 und `%$gemsgive Edelsteine`2 aus dem gemeinsamen Schatz.");
$sql = "UPDATE items SET owner={$session['user']['acctid']},hvalue=0 WHERE owner=$row2[acctid] AND class='Treasure' AND value1=".$session['user']['specialmisc']['houseid'];
db_query($sql);
$sql = "UPDATE accounts SET goldinbank=goldinbank+$goldgive,gems=gems+$gemsgive WHERE acctid=".$row2['acctid'];
db_query($sql);
$gebaus['gold']-=$goldgive;
$gebaus['gems']-=$gemsgive;
db_query('UPDATE houses SET gold='.$gebaus['gold'].', gems='.$gebaus['gems'].' WHERE houseid='.$session['user']['specialmisc']['houseid']);
}
break;
}
}
else {
output('Du hast hier nichts zu suchen!');
addnav('Optionen');
addnav('Zum Flur','houses.php?op=drin&module=');
}
}
?>