anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Fr 13 Jun, 2025 15:15

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Mi 22 Aug, 2007 22:03 
Offline
Profi
Profi

Registriert: Mi 16 Mai, 2007 11:50
Beiträge: 110
Wohnort: Kaufungen
Geschlecht: Männlich
Skype: Skywalker310867
Hallo alle mit einander.

Ich habe nun angefangen in Chaosmakers Haussystem, ein eigenes Zimmer zu erstellen. Habe dazu die Vorlage verwendet und mich ein wenig an den bereits vorhandenen orientiert.

Da ich jedoch innerhalb des Raumes das Tier, bei mir sinds Droiden, füttern (aufladen) lassen möchte und das zu einem günstigeren Preis als in den Ställen, habe ich Codeschnipsel aus der stall-datei übernommen und versucht diese entsprechend umzuschreiben.

Guckt man hier:

[php]<?php
// default module template
// use this to create modules for houses
// Author: Chaosmaker <webmaster@chaosonline.de>

// all function names MUST end with the module's name (as in $info['modulename'])!!!
// hint: use search&replace ;) replace 'Droidenkammer' with your module's (internal) name.
function module_getinfo_Droidenkammer() {
$info = array(
'modulename'=>'droidenkammer', // internal name; use letters, numbers and underscores only!
'modulefile'=>basename(__FILE__), // filename of the module; if you allow to rename the script, do NOT change this!
'moduleauthor'=>'Skywalker031', // the author's name
'moduleversion'=>'0.1', // the module's version number
'built_in'=>'1', // '1', if each house should have this module built-in; otherwise '0'
'linkcategory'=>'Weitere Räume', // the category (in houses.php's menu) under which the link to this module should be shown
'linktitle'=>'Droidenkammer', // the link title of the module
'showto'=>'owner,guest' // who should use this module? possible options: 'owner', 'guest' and 'owner,guest'
);
return $info;
}

function module_install_Droidenkammer() {
// insert data into module table - do NOT change this (well... just change the function name ;))!
$info = module_getinfo_Droidenkammer();
$sql = "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($sql);
$moduleid = db_insert_id(LINK);

// insert global module data (you can add several entries - but do NOT
// change anything else than "FieldName" and "FieldValue"!)
/*
$sql = 'INSERT INTO housemoduledata (moduleid, name, houseid, value)
VALUES ('.$moduleid.',"FieldName",0,"FieldValue")';
db_query($sql);
*/
/* install_moduledata begin */

/* install_moduledata end */

// here you can change everything else needed (e.g. adding settings)
// be careful: these changes must be global; per-house-changes will be done
// in module_build()!
/* install_other begin */

/* install_other end */
}

function module_uninstall_Droidenkammer() {
// uninstalling the module
// this function should also contain all module_destroy contents

// getting moduleid - do NOT change this (same as above... the function name should be changed)!
$info = module_getinfo_Droidenkammer();
$moduleid = getmoduleid($info['modulename']);

// deleting module from db - do NOT change this!
$sql = 'DELETE FROM housemodules WHERE moduleid='.$moduleid;
db_query($sql);

// deleting internal module data - do NOT change this!
$sql = 'DELETE FROM housemoduledata WHERE moduleid='.$moduleid;
db_query($sql);

// here you should delete all other added things (e.g. settings) of this module
/* delete_other begin */

/* delete_other end */
}

function module_build_Droidenkammer($houseid) {
// this is only needed if 'built_in' in module_info() is set to 0

// getting moduleid - do NOT change this (function name... blablabla)!
$info = module_getinfo_Droidenkammer();
$moduleid = getmoduleid($info['modulename']);

// setting flag for house - do NOT change this!
$sql = 'INSERT INTO housemoduledata (moduleid, name, houseid, value)
VALUES ('.$moduleid.',"#activated#",'.$houseid.',"1")';
db_query($sql);

// here you can change everything else needed (e.g. changing user settings)
// be careful: these changes must be for this house only; global changes will be done
// in module_install()!
/* build_other begin */

/* build_other end */
}

function module_destroy_Droidenkammer($houseid) {
// this is only needed if 'built_in' in module_info() is set to 0

// getting moduleid - do NOT change this (function name... moooooooooh!)!
$info = module_getinfo_Droidenkammer();
$moduleid = getmoduleid($info['modulename']);

// deleting module data of this house - do NOT change this!
$sql = 'DELETE FROM housemoduledata WHERE moduleid='.$moduleid.' AND houseid='.$houseid;
db_query($sql);

// here you should delete all other added things (e.g. user settings) of this module and house
/* destroy_other begin */

/* destroy_other end */
}

function module_show_Droidenkammer() {
// this is the main part of the module where all output is done ;)
// don't forget the navs; only the default module does not need them (but may add some)
// to return to the main module, use this link: houses.php?op=drin&module (without id!)
// don't forget 'global $session;' if you need the player's data (and you WILL need them!)

/* content_show begin */
global $session;

addcommentary();

$sql = 'SELECT houses.housename, houses.owner FROM houses LEFT JOIN accounts ON accounts.acctid=houses.owner WHERE houses.houseid='.$session['user']['specialmisc']['houseid'];
$result = db_query($sql) or die(db_error(LINK));
$row = db_fetch_assoc($result);

output("`2`b`c$row[housename] `2 (Droidenkammer)`c`b`n`n");

$futtercost = $session[user][level]*10;


viewcommentary("house-".$session['user']['specialmisc']['houseid'],"Mit anderen reden:",20,"sagt");

// show furniture
output("`n`n`n<table border='0'><tr><td>`2`bExtra Ausstattung`b</td></tr><tr>",true);
output("</td><td>",true);

$sql = "SELECT name,description FROM items WHERE value1={$session['user']['specialmisc']['houseid']} AND class='Möbel' ORDER BY class,id ASC";
$result = db_query($sql) or die(db_error(LINK));
while ($item = db_fetch_assoc($result)) {
output("`n`&$item[name]`0 (`i$item[description]`i)");
}

output("</td></tr></table>",true);

if ($session['user']['hashorse']=0) {
output("`2Es ist jetzt `^".getgametime()."`2 Uhr, und du befindest dich in der Droidenkammer.`n`n`n");
output("`2Auf einer Steinbank an der einen Wand, siehst du diverses Werkzeug zum montieren von Droiden.`n");
output("`2An der anderen Seite steht eine Droiden-Ladestation und ein Com-Terminal.`n");
addnav("Droidenkammer");
addnav("Werkzeug benutzen","houses.php?op=drin&act=werkzeug");
addnav("Ladestation ansehen","houses.php?op=drin&act=laden");
addnav("Com-Terminal","houses.php?op=drin&act=terminal");
addnav("Zurück");
addnav("Zurück zum Wohnblock","houses.php?op=drin&module=");
}
addnav("Zurück");
addnav("Zurück zum Wohnblock","houses.php?op=drin&module=");

if($_GET[act]==""){

output("`2Es ist jetzt `^".getgametime()."`2 Uhr, und du befindest dich in der Droidenkammer.`n`n`n");

} elseif ($_GET[act]=="werkzeug"){

output("`2Mit dem Werkzeug ziehst du einige Schrauben und Muttern an deinem Droiden fest. Nun klappert auch nichts mehr. Freudig gehst du zurück.");
addnav("Zurück");
addnav("Zurück zum Wohnblock","houses.php?op=drin&module=");

} elseif ($_GET[act]=="laden") {

output("`2Die Ladestation gibt deinem Droiden, gegen 50% der Kosten bei Watto, wieder neue Kraft, sobald er sich an der Station angeschlossen hat.`n");
addnav("{$playermount['mountname']} laden (`^$futtercost`0 Credits)","houses.php?op=drin&act=futter");
addnav("Zurück");
addnav("Zurück zum Wohnblock","houses.php?op=drin&module=");

} elseif ($_GET[act]=="terminal") {

output("`2Dein Droide schliesst sich an das Com-Terminal an und bekommt somit die neusten Informationen, die er sogleich an dich weitergibt");
addnav("Holo News","news.php",false,true);
addnav("Zurück");
addnav("Zurück zum Wohnblock","houses.php?op=drin&module=");

}


if($_GET[act]=='futter'){
if ($session[user][gold]>=$futtercost) {
$buff = unserialize($playermount['mountbuff']);
if ($session['bufflist']['mount']['rounds'] == $buff['rounds']) {
output("Dein {$playermount['mountname']} ist geladen. Darum brauchst du nichts zu bezahlen.");
}else if ($session['bufflist']['mount']['rounds'] > $buff['rounds']*.5) {
$futtercost=$futtercost/2;
output("Dein {$playermount['mountname']} lädt sich nur etwas auf. {$playermount['mountname']} ist voll geladen. ");
output("Da aber noch über die Hälfte der Aufladung übrig ist, bekommst du nochmal 50% Preisnachlass.`nDu bezahlst nur $futtercost Credits.");
$session[user][gold]-=$futtercost;
$session[user][reputation]--;
}else{
$session[user][gold]-=$futtercost;
output("Dein {$playermount['mountname']} lädt sich voll auf.`n");
output("Dein {$playermount['mountname']} ist vollständig geladen und du legst $futtercost Creditstreifen in die Zahlluke der Ladestation.");
$session[user][reputation]--;
}
$session['bufflist']['mount']=$buff;
$session[user][fedmount]=1;
} else {
output("`7Du hast nicht genug Credits dabei, um die Aufladung deines Droiden zu bezahlen.");
}





// uncomment these lines if you want to show the default navs even if this is not the default module
// global $shownavs;
// $shownavs = true;

// uncomment these lines if you want to hide the default navs even if this is the default module
// global $shownavs;
// $shownavs = false;
/* content_show end */
}
?>[/php]

Leider bekomme ich nun eine Fehlermeldung, wenn ich auf Module beim Hausmeister gehe. Ich kann diesen Raum also nicht installieren.

Die Fehlermeldung lautet
Zitat:
Parse error: syntax error, unexpected $end in /www/htdocs/theleg/freihagen/logd/housemodules/droidenkammer.php on line 220


ich habe nun schon einige ";" gefunden, die fehlten aber leider finde ich nicht den Grund, dieser Fehlermeldung.
Auch in Selfphp hab ich dazu nichts gefunden. Auch habe ich hier im Forum gesucht, aber nicht wirklich etwas gefunden, was mir eine 100%ige Antwort gegeben hätte.

Über eine Antwort zur Lösung dieses Problems würde ich mich sehr freuen.

_________________
so long
Stefan

---------

Source im Profil


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 22 Aug, 2007 22:41 
Offline
Held
Held
Benutzeravatar

Registriert: Di 21 Aug, 2007 23:04
Beiträge: 290
Wohnort: Darmstadt
Geschlecht: Männlich
Guck dir mal die Fehlermeldung genau an
$this->bbcode_second_pass_code('', 'unexpected $end') heißt da is irgendne Klammer offen oder ein ; oder irgendwie sowas fehlt

nach

[php] output("`7Du hast nicht genug Credits dabei, um die Aufladung deines Droiden zu bezahlen.");
}[/php]

einfach noch ein }

und dann hat mir mein Zend ausgeworfen
$this->bbcode_second_pass_code('', 'Zuweisung in Bedingung (Zeile 143)')

[php]if ($session['user']['hashorse']=0) {[/php]

ich glaub es sollte so sein, da ich vermute das man diesen Teil nur sehen kann wenn man kein Tier hat, also brauchst du nen Gleichheitsoperator und keinen Zuweisungsoperator, also einfach ändern in:
[php]if ($session['user']['hashorse']==0) {[/php]

Ich hoff mal ich hab dir vllt. irgendwie geholfen.

_________________
Legend of the Green Dragon - Die Mysterien um Ched Nasad


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 22 Aug, 2007 23:09 
Offline
Eingeweihter
Eingeweihter
Benutzeravatar

Registriert: Sa 04 Aug, 2007 20:46
Beiträge: 65
@Arath: Du weist schon das die Zendanalyse auch so einiges verunstallten kann? z.B. würde er bei
[php]
while ($file = $directory->read())
{
/**
* Weitere Anweisungen
*/
}
[/php]
genau so "zuweisung in Bedingung" auswerfen obwohl es syntaktisch korrekt ist! Nur als kleiner Hinweis :P

_________________
Niveau ist noch immer keine Hautcreme
[php]$my = &new Brain;
$infos = $my->execute_command('Load PHP,SQL,XHTML,CSS,XML,JS Informations');
$my->convert('Information to text',$infos);
$my->kill_human_on_error();[/php]


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 22 Aug, 2007 23:21 
Offline
Held
Held
Benutzeravatar

Registriert: Di 21 Aug, 2007 23:04
Beiträge: 290
Wohnort: Darmstadt
Geschlecht: Männlich
Ja hat er bei mir auch ausgeworfen, aber man kann auch an der entsprechenden Zeile erkennen ob die Meldung ernstzunehmend ist ... ;)

und da ich das ganz Professionell auf anhieb erkannt hab das es so richtig ist habe ich es auch nicht in die Verbesserung mit reingenommen.

_________________
Legend of the Green Dragon - Die Mysterien um Ched Nasad


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 22 Aug, 2007 23:45 
Offline
Profi
Profi

Registriert: Mi 16 Mai, 2007 11:50
Beiträge: 110
Wohnort: Kaufungen
Geschlecht: Männlich
Skype: Skywalker310867
Es scheint genau daran gelegen zu haben. Jetzt konnte ich den Raum installen, aber wie ich nun noch feststellen musste, muss in der einen Zeile kein ==0 sondern ein !=0 hin, damit die folgenden outputs auch so kommen, wie sei kommen sollten.

Aber leider ist immer noch ein Fehler drin, der aber schon bearbeitet wird.
Ist kein sichtbarer Fehler, sondern ein ausgabefehler... aber egal, das bekomme ich hin.

Danke erstmal für die Hilfe.

_________________
so long
Stefan

---------

Source im Profil


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 8 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:  
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum