LoGD Standardrelease steht hier zum Download zur Verfügung!

Zeige Source: /rooms.php

Hier klicken für den Source, ODER
Weitere Dateien, von denen du den Quelltext sehen kannst:
(Das Lesen des Source, um sich spielerische Vorteile zu verschaffen, ist nicht erlaubt. Solltest du Schwachstellen oder Fehler entdecken, bist du als Spieler verpflichtet, diese zu melden.)

Source von: /rooms.php

<?php
/*
 * LotgD - Hinterzimmer (Rooms) Addon
 *
 * Desc: Spieler können in der Schenke ein Hinterzimmer zu RP Zwecken mieten.
 * Version: 0.9.4
 * No public release!
 *
 * Copyright (C) 2009 Lukas Hübner
 *
 * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published
 * by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of  
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along with this program; if not, see <http://www.gnu.org/licenses/>.
 
Installation:

1.    rooms.php in den LotgD root Ordner kopieren.
2.    In die inn.php 
        addnav("Hinterzimmer", "rooms.php");
    einfügen.
3.    DB-Cmd:
        INSERT INTO `settings` (
            `setting` ,
            `value`
        ) VALUES (
            'rooms_cost', 
            '1500'
        );
        
        CREATE TABLE IF NOT EXISTS `rooms` (
            `id` int(10) unsigned NOT NULL auto_increment,
            `owner` int(10) unsigned NOT NULL,
            `allowed` text NOT NULL,
            `rname` varchar(255) NOT NULL,
            `presentc` int(11) NOT NULL default '0',
        PRIMARY KEY  (`id`)
        ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=46 ;
4. hf!
*/

require_once "common.php";
checkday();

page_header("Hinterzimmer");

// Fix badnav (chatdelete.php)
if(isset($_GET['rid']))
    
$rid $_GET['rid'];
else
    
$rid $_SESSION['rid'];

function 
get_room_name($rid)
{
    
$sql "SELECT `rname` FROM `rooms` WHERE `id`=".$rid.";";
    return 
mysql_result(db_query($sql), 0);
}

function 
output_allow_form()
{
    global 
$rid;
    
// Formular ausgeben
    
output("<form action='rooms.php?op=allow2&rid=".$rid."' method='POST'>Wer soll eingeladen werden?`n<input name='to' id='to' accesskey='p'>`n",true);
    
output("<input type='submit' class='button' value='Vorschau'></form>",true);
    
output("<script language='javascript'>document.getElementById('to').focus();</script>",true);
    
addnav("","rooms.php?op=allow2&rid=".$rid);
    
addnav("Zurück ins Zimmer""rooms.php?op=enter&rid=".$rid);
}

function 
output_rname_form()
{
    
// Formular ausgeben
    
output("<form action='rooms.php?op=rent2' method='POST'>Wie soll er Raum heißen?`n<input name='rname' id='to' accesskey='p'>`n",true);
    
output("<input type='submit' class='button' value='Mieten'></form>",true);
    
output("<script language='javascript'>document.getElementById('rname').focus();</script>",true);
    
addnav("","rooms.php?op=rent2");
    
addnav("Zurück zur Schenke""inn.php");
}

if(!isset(
$_GET['op']))
{
    
addnav("Zimmer");
    
addnav("Zimmer mieten""rooms.php?op=rent");
    
    
output("Ein Glas polierend steht Cedrik hinter der Theke und sieht nicht einmal auf, als du hereinkommst.`nAls er dich sieht, murrt er leise und gibt dir zu verstehen, dass du hier nur mit Geld oder einer persönlichen Einladung weiterkommst. 1500 Goldstücke möchte der Wucherer, wenn er dir ein eigenes Zimmer zur Verfügung stellen soll.`nErst nachdem ihr alles geklärt habt, tritt er einen Schritt beiseite und offenbart dir einen bislang hinter seinem dicken Schmärbauch und seiner generell massigen Gestalt verborgenen Durchgang."); 
    
$arooms false;
    
    
$sql "SELECT `id`, `allowed` FROM `rooms`;";
    
$res db_query($sql);
    for(
$i 0$room mysql_fetch_assoc($res); $i++)
        if(
in_array($session[user][acctid], unserialize($room['allowed'])))
            
$arooms[$i] = $room['id'];  
        
    if(
is_array($arooms))
    {
        
addnav("Vermietete Zimmer");
        for(
$i 0$i count($arooms); $i++)
            
addnav("(".($i+1).") ".get_room_name($arooms[$i]), "rooms.php?op=enter&rid=".$arooms[$i]);
    }
    
    
addnav("Sonstiges");
    
addnav("Zurück zu Schenke""inn.php");
}
else
{
    switch(
$_GET['op'])
    {
    case 
"rent":
        if(
$session[user][gold] < getsetting("rooms_cost"1500)) // Genügend Geld?
        
{
            
output("Cedrik starrt dich finster an und fragt dich ob du heute vielleicht gedachtest mit Knöpfen zu bezahlen.");
            
addnav("Zurück zur Schenke""inn.php");
        }
        else 
// Raum mieten
            
output_rname_form();
        break;
    case 
"rent2":
        if(!isset(
$_POST['rname']))
            
output_rname_form();
        else
        {    
            
// Geld abziehen
            
$session[user][gold] -= getsetting("rooms_cost"1500);
            
$allowed[] = $session[user][acctid];
            
            
// Raum mieten
            
$sql "INSERT INTO `rooms` (`id`, `owner`, `allowed`, `rname`) VALUES (NULL, ".$session[user][acctid].", '".serialize($allowed)."', '".$_POST['rname']."');";
            
db_query($sql);
            
            
// Raumid holen
            
$sql "SELECT LAST_INSERT_ID();";
            
$rid mysql_result(db_query($sql), 0);
            
            
// Ausgabe
            
addnav("Auf's Zimmer gehen""rooms.php?op=enter&rid=".$rid);
            
output("Cedrik nickt und händigt dir einen Schlüssel aus.");
        }
        break;
    case 
"enter":
        
// Are we allowed?    
        
$sql "SELECT `id`, `allowed`, `owner` FROM `rooms` WHERE `id`=".$rid.";";
        
$room mysql_fetch_assoc(db_query($sql));
        if(
in_array($session[user][acctid], unserialize($room['allowed'])))
        {
            
// Wenn der User noch in keinem Zimmer ist: Anwesendenzähler erhöhen
            
if(!isset($_SESSION['rid']))
            {
                
$sql "UPDATE `rooms` SET `presentc` = (`presentc`+1) WHERE `id` =".$rid.";";
                
db_query($sql);
                
$_SESSION['rid'] = $rid;
            }
             
            
// Output und Joinmessage hinzufügen
            
addcommentary();
            
output("Der Durchgang den Cedrik dir weist führt in einen düsteren Gang von dem mehrere Türen abzweigen. Dein Schlüssel passt nur zu einer dieser Türen.`nDie Tür quietscht, als du sie öffnest, müsste wohl mal wieder geölt werden. Dahinter findest du ein kleines Zimmer, möbliert mit einem Bett, einem Tisch und einigen Stühlen. Der Raum ist fensterlos, was dir ganz gelegen kommt, da du ja unbeobachtet sein willst. Licht musst dadurch allerdings auch tagsüber mit der kleinen Öllampe erzeugen, die glücklicherweise auf dem Tisch steht.`nDu weißt genau dass wenn alle das Zimmer wieder verlassen haben wird kein Wort von dem Geschehen nach außen dringen, aber auch das Mietrecht auf das Zimmer wird verfallen.`n`n");
            
viewcommentary("rooms_".$rid"Reden:"15);
            
            if(
$session[user][acctid]  == $room['owner'])
                
addnav("Jemanden einladen""rooms.php?op=allow&rid=".$rid);
            
            
addnav("Zimmer verlassen""rooms.php?op=leave&rid=".$rid);
        }
        else
        {
            
output("Leider ist dir der Zutritt zu diesem Raum nicht gestattet.");
            
addnav("Zurück zur Schenke""inn.php");
        }
        break;
    case 
"allow":
        
output_allow_form();
        break;
    case 
"allow2":
        
output("`6`bEinladung bestätigen`b:`n");
        
        
$string="%";
        for(
$x 0$x strlen($_POST['to']); $x++)
            
$string .= substr($_POST['to'], $x1)."%";
        
$sql "SELECT name,`acctid` FROM accounts WHERE name LIKE '".addslashes($string)."'";
        
$result db_query($sql);
        
        if(
db_num_rows($result)==1)
        {
            
$row db_fetch_assoc($result);
            
output("<form action='rooms.php?op=allow3&rid=".$rid."' method='POST'>",true);
            
output("`6Lade `&$row[name]`6 ein.");
            
output("<input type='hidden' name='to' value='".HTMLEntities($row['acctid'])."'><input type='submit' class='button' value='Einladen'></form>",true);
            
addnav("""rooms.php?op=allow3&rid=".$rid);
            
addnav("Zurück ins Zimmer""rooms.php?op=enter&rid=".$rid);
        }
        elseif(
db_num_rows($result) > 100)
        {
            
output("Leider war deine Suche zu ungenau, sei bitte etwas akkurater.`n`n");
            
output_allow_form();
        }
        elseif(
db_num_rows($result) > 1)
        {
            
output("<form action='rooms.php?op=allow3&rid=".$rid."' method='POST'>",true);
            
output("`6Einladen <select name='to' class='input'>",true);
        
            for(
$i=0$i db_num_rows($result); $i++)
            {
                
$row db_fetch_assoc($result);
                
output("<option value=\"".HTMLEntities($row['acctid'])."\">".preg_replace("'[`].'","",$row['name'])."</option>",true);
            }
            
            
output("</select><input type='submit' class='button' value='Einladen'></form>",true);
            
addnav("","rooms.php?op=allow3&rid=".$rid);
            
addnav("Zurück ins Zimmer""rooms.php?op=enter&rid=".$rid);
        }
        else
        {
            
output("`6Es konnte niemand mit diesem Namen gefunden werden. Bitte versuchs nochmal.");
            
addnav("Zurück""rooms.php?op=allow2&rid=".$rid);
            
addnav("Zurück ins Zimmer""rooms.php?op=enter&rid=".$rid);
        }
        break;
    case 
"allow3":
        
$sql "SELECT `allowed` FROM `rooms` WHERE `id`=".$rid.";";
        
$allowed unserialize(mysql_result(db_query($sql), 0));
        
$allowed[count($allowed)] = $_POST['to'];
        
$sql "UPDATE `rooms` SET `allowed` = '".serialize($allowed)."' WHERE `id` =".$rid.";";
        
db_query($sql);
        
        
// Benutzernamen holen
        
$sql "SELECT name FROM accounts WHERE `acctid`=".$_POST['to'].";";
        
$pname mysql_result(db_query($sql), 0);
        
        
// Mail versenden
        
$body " `7Schnell und vollkommen unauffällig drückt dir ein Fremder im vorbeigehen einen Zettel in die Hand.`n
        Etwas irritiert faltest du das Blatt auf und liest die Nachricht.`n
        `4"
.$session['user']['name']." hat dich in eines der verborgenen Zimmer der Schenke eingeladen.`n
        `7Nun verstehst du auch die Heimlichkeit.`n`n
        Wirst du der Einladung folgen?"
;
        
systemmail($_POST['to'], "Einladung" $body);
        
        
// Ausgabe
        
output($pname." wurde eingeladen.`nDie Person hat eine Mail mit der Einladung bekommen.");
        
addnav("Zurück ins Zimmer""rooms.php?op=enter&rid=".$rid);
        break;
    case 
"leave":
        
output("Du verlässt ".get_room_name($rid).".");
        
        
// Anwesendenzähler holen
        
$sql "SELECT `presentc` FROM `rooms` WHERE `id` = ".$rid.";";
        if(
mysql_result(db_query($sql), 0)-<= 0// Raum leer
        
{
            
// Raum löschen
            
$sql "DELETE FROM `rooms` WHERE `id` = ".$rid.";";
            
db_query($sql);
            
            
/*
            // Chat löschen
            $sql = "DELETE FROM `commentary` WHERE `section` = 'rooms_".$rid."';"; 
            db_query($sql);
            */
        
}
        else
        {
            
// Anwesenheitszähler verringern
            
$sql "UPDATE `rooms` SET `presentc` = (`presentc`-1) WHERE `id` =".$rid.";";
            
db_query($sql);
        }
        
        unset(
$_SESSION['rid']);
        
addnav("Zurück zur Schenke""inn.php");
        break;
    }
}
page_footer();
?>