anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Do 28 Mär, 2024 13:54

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 25 Beiträge ]  Gehe zu Seite Vorherige  1, 2

Würde dir ein Questsystem für LoGD gefallen ?
Ja, mal etwas anderes ! 77%  77%  [ 111 ]
Ja, aber nicht von dir (auch nicht vom Konzept her) ! 7%  7%  [ 10 ]
Mir relativ egal -> RPG'ler 10%  10%  [ 14 ]
Nein, zu viel schnick schnack 1%  1%  [ 2 ]
Nein, ich will ein Bauernhof mit Schweinen, das reicht! 5%  5%  [ 7 ]
Abstimmungen insgesamt : 144
Autor Nachricht
 Betreff des Beitrags: Re: Aufgaben der Elite - Quests
BeitragVerfasst: Fr 20 Feb, 2009 23:32 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
Die battle.php wird 2x eingebunden. Das heisst, dass du wohl zwei "Kampf-s -Schlaufen" hast, eventuell aus verschiedenen Quests. Versuche, da eine Lösung zu finden.

Übrigens ist deine Methode nicht wirklich zu empfehlen. Besser wäre eine API, die bestimmte Funktionen aufruft - nach dem Schema quest_run(). Und die Queste in einzelne Dateien gebunden sind und die Funktionsdefinitionen den Dateinamen entsprechen. cedrics_run.quest.php könnte zur Funktion cedrics_run_questrun() führen. Also eine Art Modulsystem.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Aufgaben der Elite - Quests
BeitragVerfasst: Sa 21 Feb, 2009 12:29 
Offline
Profi
Profi

Registriert: Do 23 Nov, 2006 17:59
Beiträge: 140
Wohnort: LübecK
Geschlecht: Männlich
LoGD: momentan kein Server
bitte was?

hab grade mal nach API gegoogelt und nur verwirrendes Zeug rausgefunden.. dann habe ich mir das Hausskript von Chaosmaker angeschaut, welchse ja auch auf Module aufbaut.. heute abend werde ich mal versuchen den Aufbau mit Modulen, bzw Funktionen im LoGD Code umzugehen..

oder haette jmd von euch einen kurzen Rohling, um des besser zu verstehen?

_________________
flup


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Aufgaben der Elite - Quests
BeitragVerfasst: Sa 21 Feb, 2009 13:30 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
Hm. Eine Datenbank. Mit den installierten Questen.

Dann an beliebigen Orten im Dorf sowas wie ein "Hook".

$this->bbcode_second_pass_code('', 'qs_hook('village');')

Jedes Modul registriert ihre "Hacken", wo sie sich einhaken und ihre Ausgabe, Navigation etc. hinklatschen. qs_hook sucht in der Datenbank nach allen Modulen, welche sich dort einhacken und nimmt ihren Namen. Sagen wir, das Modul heisst dagbounty.quest.php, also ist der Name dagbount. Das .quest kann man auch weglassen, ich unterscheide so nur gerne zwischen bestimmten Dateien (.class.php, .lib.php, .mod.php). Der Dateiname selbst steht nicht in der Datenbank - sondern nur "dagbounty".
Er holt also den Datensatz mit dagbounty und ruft die Funktion von dagbounty auf für diesen Haken:

$this->bbcode_second_pass_code('', '$fname = $row['questname'].'_qs_runhook($hook);
$fname(); # dagbounty_qs_runhook('village');')

In der dagbounty.quest.php stehen nun verschiedene Funktionen, deren Namen strengen Richtlinien entsprechen:

$this->bbcode_second_pass_code('', 'function dagbounty_qs_getinfo() {}
function dagbounty_qs_install() {} (Eventuelle Datenbankänderungen oder Einträge in die "Hook"-Tabelle
function dagbounty_qs_runhook($hook) {} (Das Zeugs, was beim Hacken ausgeführt werden soll)
function dagbounty_qs_run() {} (Das, was beim eigentlichen Quest ablaufen soll. Also im Prinzip das, was in einer eigenen Datei stehen könnte. page_header() und _footer() sind hier erforderlich)
')

Der Quest hackt sich also zum Beispiel in der Taverne bei Dag ein und generiert dort einen Link, der ebenfalls einem Bestimmen Muster folgt:
$this->bbcode_second_pass_code('', 'runquest.php?quest=dagbounty&op=askdag')

In der dagbounty wird anhand des übergebenen "quest" die run-Funktion generiert:

$this->bbcode_second_pass_code('', '$fname = $_GET['quest'].'_qs_run';
$fname();')

Und in der dagbounty_qs_run steht halt, was dann gemacht wird. Sprachausgabe, weitere Navigation, einträge ins Questbuch, und so weiter, und so fort. MOdulsysteme sind etwas fortgeschrittener, aber ermöglichen es, ziemlich einfach Erweiterungen an beliebigen Orten auszuführen. Ich hab selbst mal sowas gemacht (Und es läuft perfekt), das Questsystem bei Dragonprime ist auch so aufgebaut (Das für die 097). Das Haussystem - und natürlich die "neue" Version.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Aufgaben der Elite - Quests
BeitragVerfasst: Sa 21 Feb, 2009 13:54 
Offline
Profi
Profi

Registriert: Do 23 Nov, 2006 17:59
Beiträge: 140
Wohnort: LübecK
Geschlecht: Männlich
LoGD: momentan kein Server
ok, dankeschön.. dann könnte man ja theoretisch die Quests so installieren, wie die einzelnen Hausmodule.. und es würde ordentlicher ausschauen.. aber löst es denn auch das oben genannte Problem

"Fatal error: Cannot redeclare activate_buffs() (previously declared in C:\xampp\htdocs\logd\battle.php:18) in C:\xampp\htdocs\logd\battle.php on line 143" ?

Da ja in der jetzigen Quest "Sklavenhändler" mehrmals die "battle.php" aufgerufen wird und das wohl antscheinend nicht wirklich funktioniert..

_________________
flup


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Aufgaben der Elite - Quests
BeitragVerfasst: So 22 Feb, 2009 19:49 
Offline
Profi
Profi
Benutzeravatar

Registriert: Mo 02 Feb, 2009 21:11
Beiträge: 168
Geschlecht: Männlich
LoGD: salator.selfhost.de/lotgd
Die battle.php gehört ja auch nur einmal eingebunden, üblicherweise wird das am Ende der Datei in einem Block if($battle){} gemacht. Im oberen Teil deines Scripts füllst du nur das $badguy-Array und setzt $battle=true
Wenn du mehrere Kämpfe in Folge realisieren willst kommt die Fallunterscheidung bei if($victory) rein und analog dazu bei if($defeat) wenn du unterschiedliche Todesmeldungen ausgeben willst.

_________________
if(date("ymmd")=="10050502") echo("Der alte Sack wird heute 40");


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 25 Beiträge ]  Gehe zu Seite Vorherige  1, 2

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 31 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