ER-Sourceviewer 2007 v2.0

Alle Dateien, die hier eingesehen werden können, sind unter der GNU GPL lizenziert. Wenn du etwas darin findest, das du gerne hättest, so schreibe mir doch bitte eine Anfrage damit ich, wenn ich es rausgeben will, alle Änderungen raussuchen könnte. Denn ich übernehme keine Verantwortung, solltest du was rausnehmen und es geht nicht. Und Support deswegen geb ich schon gar nicht.

Solltest du eine Schwachstelle im Code finden, sei es eine kritische Lücke oder eine Möglichkeit zu cheaten, dann bitte ich dich, mir das mitzuteilen. Solltest du beim cheaten erwischt werden, werde ich deinen Account eigenhändig löschen & bannen; Solltest du meinen Server angreifen, so werde ich meine Rechtsschutzversicherung kontaktieren.

Zur Source springen

Verzeichnisse:


Source anzeigen

Nach Oben


<?php
/*****************************************
 *
 * houseshop.php
 * Author: Chaosmaker <webmaster@chaosonline.de>
 * Version: 1.3
 * Server: biosLoGD http://logd.chaosonline.de
 *
 * Features:
 *    - buy houses
 *    - sell own house
 *    - buy a building lot if required
 *
 *****************************************/

require_once('common.php');
checkday();

require_once(
'housefunctions.php');

page_header('Der Makler');

if (!empty(
$_GET['op'])) $op $_GET['op'];
else 
$op '';

switch (
$op) {
    case 
'listhouses':
        
output('`c`bApartment kaufen/mieten`b`c`n`n');

        
// house selected
        
if (!empty($_GET['buy'])) {
            
// get house data
            
$sql 'SELECT h.status, h.goldprice, h.gemprice, h.housename,
                    hc.defaultgoldprice, hc.defaultgemprice
                    FROM houses h
                    LEFT JOIN houseconfig hc USING(locid)
                    WHERE h.owner=0 AND hc.buy="1" AND h.houseid='
.$_GET['buy'];
            
$result db_query($sql);
            if (
$row db_fetch_assoc($result)) {
                if (
$row['status']=='build') {
                    
$goldprice round(($row['defaultgoldprice'] - $row['goldprice'])*2/3);
                    
$gemprice round(($row['defaultgemprice'] - $row['gemprice'])*2/3);
                }
                else {
                    
$goldprice round(($row['defaultgoldprice'] + $row['goldprice'])*2/3);
                    
$gemprice round(($row['defaultgemprice'] + $row['gemprice'])*2/3);
                }

                if (
$session['user']['gold']<$goldprice || $session['user']['gems']<$gemprice) {
                    
output('`IDer Makler schaut dich skeptisch an und weist noch einmal auf den Preis der Wohnung hin.
                            Vielleicht solltest du ihn dir auch noch einmal genauer ansehen...'
);
                }
                else {
                    
// delete old keys
                    
$sql 'DELETE FROM items WHERE class="Schlüssel" AND value1='.$_GET['buy'];
                    
db_query($sql);
                    
addnews("`}".$session['user']['name']."`Ü hat das Apartment `}{$row['housename']}`Ü gekauft.");
                    
output("`I`bGlückwunsch!`b Du hast das Apartment gekauft.");
                    
$session['user']['house'] = $_GET['buy'];
                    if (
$row['status']!='build') {
                        
$session['user']['housekey'] = $_GET['buy'];
                        
output("Du bekommst `b".getsetting('newhousekeys',10)."`b Schlüssel überreicht, von denen du ".(getsetting('newhousekeys',10)-1)." an andere weitergeben kannst und besitzt nun deine eigene gemütliche Wohnung.");
                        
// add new keys for the house
                        
$sql '';
                        for (
$i=1;$i<getsetting('newhousekeys',10);$i++) {
                            
$sql .= ",('Hausschlüssel',".$session['user']['acctid'].",'Schlüssel',{$_GET['buy']},$i,0,0,'Schlüssel für Apartment Nummer {$_GET['buy']}')";
                        }
                        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)==0output("`ÀFehler`†: Dein Inventar konnte nicht aktualisiert werden! Bitte benachrichtige den Admin.");
                        }
                    }
                    
// update house
                    
if ($row['status']=='sell'$row['status'] = 'ready';
                    
$sql 'UPDATE houses SET owner='.$session['user']['acctid'].',status="'.$row['status'].'" WHERE houseid='.$_GET['buy'];
                    
db_query($sql);
                    
$session['user']['gems'] -= $gemprice;
                    
$session['user']['gold'] -= $goldprice;
                    
// kill possible commentary
                    
$sql 'DELETE FROM commentary WHERE section="house-'.$session['user']['specialmisc']['houseid'].'" OR section="private-'.$session['user']['specialmisc']['houseid'].'"';
                    
db_query($sql);
                }
            }
            else {
                
output('`ISo ein Pech - da war wohl jemand schneller als du!');
            }
        }
        else {
            
// get all abandoned houses
            
$sql 'SELECT h.houseid, h.status, h.goldprice, h.gemprice, h.housename,
                    hc.locname, hc.defaultgoldprice, hc.defaultgemprice
                    FROM houses h
                    LEFT JOIN houseconfig hc USING(locid)
                    WHERE h.owner=0 AND hc.buy="1"
                    ORDER BY h.locid ASC, h.houseid ASC'
;
            
$result db_query($sql);
            if (
db_num_rows($result)==0) {
                
output('`ILeider sind derzeit keine Apartments frei.');
            }
            else {
                
output('`IDu schaust dir die Zettel an, auf denen Apartments angeboten werden. Ob da
                        wohl was für dich dabei ist?`n'
);
                while (
$row db_fetch_assoc($result)) {
                    
output('<table border="0"><tr class="trhead"><td colspan="2">',true);
                    
output($row['housename']);
                    
output('</td></tr><tr class="trlight"><td>',true);
                    
output('Standort:');
                    
output('</td><td>',true);
                    
output($row['locname'],true);
                    
output('</tr><tr class="trdark"><td>',true);
                    
output('Apartmentnummer:');
                    
output('</td><td>',true);
                    
output($row['houseid']);
                    
output('</tr><tr class="trlight"><td>',true);
                    
output('Wohnungsname:');
                    
output('</td><td>',true);
                    
output($row['housename']);
                    
output('</tr><tr class="trdark"><td>',true);
                    
output('Status:');
                    
output('</td><td>',true);
                    if (
$row['status']=='build'$status 'Bauruine';
                    elseif (
$row['status']=='ready'$status 'verlassen';
                    else 
$status 'wie neu';
                    
output($status);
                    
output('</tr><tr class="trlight"><td>',true);
                    
output('Preis:');
                    
output('</td><td>',true);
                    if (
$row['status']=='build') {
                        
$goldprice round(($row['defaultgoldprice'] - $row['goldprice'])*2/3);
                        
$gemprice round(($row['defaultgemprice'] - $row['gemprice'])*2/3);
                    }
                    else {
                        
$goldprice round(($row['defaultgoldprice'] + $row['goldprice'])*2/3);
                        
$gemprice round(($row['defaultgemprice'] + $row['gemprice'])*2/3);
                    }
                    
output('`†'.$goldprice.' ¥en`I, `É'.$gemprice.' Edelsteine`I');
                    
output('</tr><tr class="trdark"><td>',true);
                    
output('');
                    
output('</td><td>',true);
                    
output('<a href="houseshop.php?op=listhouses&buy='.$row['houseid'].'">kaufen</a>',true);
                    
output('</td></tr></table><br>',true);
                    
addnav('','houseshop.php?op=listhouses&buy='.$row['houseid']);
                }
            }
        }
        
addnav('Zurück zum Maklerbüro','houseshop.php');
        break;
    case 
'buylot':
        
output('`c`bBaugenehmigung beantragen`b`c`n`n');
        
// get houses without owner
        
$sql 'SELECT houseconfig.locname, houseconfig.defaultgoldprice, houseconfig.defaultgemprice, houseconfig.buildprice_increase, houses.locid AS hloc, COUNT(*) AS zahl
                    FROM houseconfig
                    LEFT JOIN houses ON houses.locid=houseconfig.locid AND houses.owner=0
                    WHERE houseconfig.locid="'
.$_GET['where'].'"
                    GROUP BY houseconfig.locid'
;
        
$result db_query($sql);
        
$row db_fetch_assoc($result);
        if (
$row['hloc']>0) {
            
$emptyhouses $row['zahl'];
        }
        else {
            
$emptyhouses 0;
        }
        
$faktor $row['buildprice_increase']/100;
        
$goldprice round($row['defaultgoldprice']*(1+$emptyhouses*$faktor));
        
$gemprice round($row['defaultgemprice']*(1+$emptyhouses*$faktor));
        
$sql 'INSERT INTO houses (owner, status, goldprice, gemprice, housename, locid)
                VALUES ('
.$session['user']['acctid'].',"build",'.$goldprice.','.$gemprice.',"'.$session['user']['login'].'s Haus",'.$_GET['where'].')';
        
db_query($sql);
        
$houseid db_insert_id(LINK);
        
$session['user']['house'] = $houseid;
        
output('Der alte Mann händigt dir ein Papier aus, laut dem du von nun an der Besitzer des
                Grundstücks Nummer '
.$houseid.' bist. Dein Haus wird unter dem Namen
                "`b'
.$session['user']['login'].'s Haus`b" eingetragen. Du kannst den Namen allerdings
                später auch noch gegen eine geringe Gebühr ändern.'
);
        
addnav('Zurück zum Bauamt','houseshop.php');
        break;
    case 
'sellhouse':
        
output('`c`bWohnungsverkauf`b`c`n`n');

        
// get worth of own house and installed modules
        
$sql 'SELECT houses.locid, status, housename, goldprice, gemprice, defaultgoldprice, defaultgemprice, buildprice_increase, sell
                    FROM houses
                    LEFT JOIN houseconfig USING(locid)
                    WHERE houseid='
.$session['user']['house'];
        
$result db_query($sql);
        
$row db_fetch_assoc($result);
        
$faktor $row['buildprice_increase']/100;

        
// get houses without owner
        
$sql 'SELECT COUNT(*) AS zahl
                    FROM houses
                    WHERE locid="'
.$row['locid'].'" AND owner=0';
        
$result db_query($sql);
        
$row2 db_fetch_assoc($result);
        
$emptyhouses $row2['zahl'];

        if (
$row['status']!='build') {
            
$sellgoldprice max(1,round(($row['goldprice']+$row['defaultgoldprice'])/* (1-$emptyhouses*$faktor)));
            
$sellgemprice max(1,round(($row['gemprice']+$row['defaultgemprice'])/* (1-$emptyhouses*$faktor)));
            
$status 'sell';
        }
        else {
            
$sellgoldprice max(1,round(($row['defaultgoldprice']-$row['goldprice'])/* (1-$emptyhouses*$faktor)));
            
$sellgemprice max(1,round(($row['defaultgemprice']-$row['gemprice'])/* (1-$emptyhouses*$faktor)));
            
$status 'build';
        }
        
$housename $row['housename'];

        if (
$row['sell']==0) {
            
output('`IDer Makler weist dich darauf hin, dass du nicht berechtigt bist, dein Apartment zu
                    verkaufen. Du kannst deine Enttäuschung kaum verbergen.'
);
            
addnav('Zurück zum Maklerbüro','houseshop.php');
        }
        elseif (!empty(
$_GET['sell'])) {
            
// sell house
            
$houseid $session['user']['house'];
            
$session['user']['house'] = $session['user']['housekey'] = 0;
            
$session['user']['gold'] += $sellgoldprice;
            
$session['user']['gems'] += $sellgemprice;
            
$sql 'UPDATE houses SET owner=0, status="'.$status.'" WHERE houseid='.$houseid;
            
db_query($sql);
            
output('`IDu unterzeichnest den Kaufvertrag und lässt dir die `†'.$sellgoldprice.'
                    ¥en`I sowie `É'
.$sellgemprice.' Edelsteine`I auszahlen.');
            
// if treasury module installed, pay off...
            
if ($mid module_builtin('treasury',$houseid)) {
                
$goldinhouse = (int)getmoduledata($mid,'gold',$houseid);
                
$gemsinhouse = (int)getmoduledata($mid,'gems',$houseid);
                
$sql 'SELECT owner FROM items WHERE value1='.$houseid.' AND class="Schlüssel"
                        AND owner!=0 AND owner!='
.$session['user']['acctid'];
                
$result db_query($sql);
                
$keys db_num_rows($result)+1;
                
$goldgive floor($goldinhouse/$keys);
                
$gemsgive floor($gemsinhouse/$keys);
                
// get own gold
                
$session['user']['gold'] += $goldgive;
                
$session['user']['gems'] += $gemsgive;
                
// pay gold to other players
                
while ($row db_fetch_assoc($result)) {
                    
$sql "UPDATE accounts SET goldinbank=goldinbank+$goldgive,gems=gems+$gemsgive WHERE acctid=".$row['owner'];
                    
db_query($sql);
                    
systemmail($row['owner'],"`}Apartment verkauft!`0","`&{$session['user']['name']}`í hat das Apartment `b$housename`b`í verkauft. Du bekommst `†$goldgive ¥en`í sowie `É$gemsgive Edelsteine`í aus dem gemeinsamen Schatz ausbezahlt!");
                }
                
// delete gold from house
                
setmoduledata($mid,'gold','0',$houseid);
                
setmoduledata($mid,'gems','0',$houseid);

                
output('`nJeder Bewohner bekommt seinen Anteil von `†'.$goldgive.' ¥en`I und `É'.$gemsgive.' Edelsteine`I aus dem
                        gemeinsamen Schatz ausgezahlt.'
);
            }
            else {
                
$sql 'SELECT owner FROM items WHERE value1='.$houseid.' AND class="Schlüssel"
                        AND owner!=0 AND owner!='
.$session['user']['acctid'];
                
$result db_query($sql);
                while (
$row db_fetch_assoc($result)) {
                    
systemmail($row['owner'],"`}Apartment verkauft!`0","`&{$session['user']['name']}`í hat das Apartment `b$housename`b`í verkauft!");
                }
            }
            
$sql 'DELETE FROM items WHERE value1='.$houseid.' AND class="Schlüssel"';
            
db_query($sql);
            
addnav('Zurück zum Maklerbüro','houseshop.php');
        }
        else {
            
output('`IDu fragst den Makler, wieviel er dir für dein Apartment geben würde.`n
                    `¹"Lassen sie mich mal nachsehn... ah, hier hab ichs! Sind harte
                    Zeiten heutzutage... aber weil Sie es sind, geb ich Ihnen `†'
.$sellgoldprice.'
                    ¥en`¹ und `É'
.$sellgemprice.' Edelsteine`¹ für die Wohnung."`I`n
                    Irgendwie hast du das Gefühl, gar kein so gutes Geschäft zu machen - aber
                    wen wundert\'s, wenn es keine Konkurrenz gibt?'
);
            
addnav('Angebot annehmen','houseshop.php?op=sellhouse&sell=1');
            
addnav('Lieber ablehnen','houseshop.php');
        }
        break;
    default:
        
output('`c`bDas Maklerbüro`b`c`n`n');
        
output('`IEin Mann mittleren Alters mit einer Brille sitzt an einem großen Schreibtisch
                aus Eichenholz und schlürft in aller Ruhe seinen Kaffee.`n
                Als du den Raum betrittst, schaut er auf und begrüßt dich mit einem aalglatten `¹"Guten Tag, sie wünschen?"`I.
                Erwartungsvoll schaut er dich danach an, ohne zweifel wittert er ein gutes Geschäft...`n`n'
);
        if (
$session['user']['house']>0) {
            
output('An der Wand hängen einige Angebote, aber da du bereits ein Apartment besitzt,
                    interessierst du dich nicht dafür.'
);
        }
        else {
            
output('An der Wand hängen einige Angebote, die du dir vielleicht mal genauer ansehen
                    solltest.`n'
);
            
addnav('Angebote ansehen','houseshop.php?op=listhouses');
        }

        
output('Außerdem siehst du dort einen Zettel, auf dem in großen Buchstaben steht:`n
                `¹Kaufe jedes Apartment zu einem angemessenen Preis. Bei Interesse einfach unverbindlich nachfragen!`I
                '
);
        if (
$session['user']['house']>0) {
            if (
$session['user']['housekey']==0) {
                
output('`nBevor dein Haus fertig gebaut ist, wird er es aber kaum haben wollen');
            }
            else {
                
addnav('Apartment verkaufen','houseshop.php?op=sellhouse');
            }
        }

        if (
getsetting('startbuild',1)==&& $session['user']['house']==&& ($session['user']['dragonkills']>getsetting('mindkbuild',1) || $session['user']['dragonkills']==getsetting('mindkbuild',1) && $session['user']['level']>=getsetting('minlevelbuild',5))) {
            
// get houses without owner
            
$sql 'SELECT houseconfig.locid, houseconfig.locname, houseconfig.defaultgoldprice, houseconfig.defaultgemprice, houseconfig.buildprice_increase, houses.locid AS hloc, COUNT(*) AS zahl
                        FROM houseconfig
                        LEFT JOIN houses ON houses.locid=houseconfig.locid AND houses.owner=0
                        WHERE houseconfig.build="1"
                        GROUP BY houseconfig.locid
                        ORDER BY houseconfig.locname ASC'
;
            
$result db_query($sql);
            
$empty false;

            
output('Da du den Makler offenbar recht hilflos ansiehst, erklärt er dir: `¹"Wenn sie
                    ein Apartment kaufen wollen, dann sind sie hier vollkommen richtig. Sofern sie das nötige
                    Kleingeld haben, versteht sich..."`I`n'
);
            if (
db_num_rows($result)==1) {
                    
$row db_fetch_assoc($result);
                    if (
$row['hloc']>0) {
                        
$emptyhouses $row['zahl'];
                        if (
$emptyhouses 0$empty true;
                    }
                    else {
                        
$emptyhouses 0;
                    }
                    
$faktor $row['buildprice_increase']/100;
                    
/*output ('Er hält dir ein Formular hin, aus dem hervorgeht, dass du für den Bau
                            nicht weniger als `†'.round($row['defaultgoldprice']*(1+$emptyhouses*$faktor)).'
                        Gold`I sowie `É'.round($row['defaultgemprice']*(1+$emptyhouses*$faktor)).' Edelsteine`I
                            berappen musst. Natürlich nicht auf einmal, sondern in Raten während des Baus.');
                    addnav('Baugenehmigung beantragen','houseshop.php?op=buylot&where='.$row['locid']);*/
            
}
            else {
                    
output('Er hält dir ein Formular hin, aus dem folgende Preise hervorgehen:');
                    
output('<table border="0">',true);
                    while (
$row db_fetch_assoc($result)) {
                        if (
$row['hloc']>0) {
                            
$emptyhouses $row['zahl'];
                            if (
$emptyhouses 0$empty true;
                        }
                        else {
                            
$emptyhouses 0;
                        }
                        
$faktor $row['buildprice_increase']/100;
                        
output('<tr><td>',true);
                        
output($row['locname'],true);
                        
output('</td><td>',true);
                        
output('`†'.round($row['defaultgoldprice']*(1+$emptyhouses*$faktor)).' ¥en`I, `É'.round($row['defaultgemprice']*(1+$emptyhouses*$faktor)).' Edelsteine`I');
                        
output('</td><td>',true);
                        
output('<a href="houseshop.php?op=buylot&where='.$row['locid'].'">Baugenehmigung beantragen</a>',true);
                        
addnav('','houseshop.php?op=buylot&where='.$row['locid']);
                        
output('</td></tr>',true);
                    }
                    
output('</table>',true);
            }
        }
        break;
}

addnav('Zurück zur Stadthalle','stadthalle.php');

output('`n`n');
output('`c`b&copy; by <a href="http://logd.chaosonline.de" target="_blank">Chaosmaker</a>`b`c',true);

page_footer();
?>