Eingliederung einer Scriptsprache
Übersicht

![]() |
GossiBetreff: Eingliederung einer Scriptsprache |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also ich schreibe gerad eins von diesen Kampf-Kartenspielen, bei denen sich mythische Kämpfer auf Karten gegenseitig attackieren und spezielle Spezialfähigkeiten benutzen. Diese Spezialfähigkeiten sind gescriptet. Für jede Karte eine eigene Script-Datei.
Nun muss ich den Script an den verschiedenen Stellen des Quelltextes aufrufen, also die Interpretation starten, wenn es soweit ist. Diese Spezialfähigkeiten können sich jedoch auf die verschiedensten Stellen im Quelltext beziehen. Mal wird die Gesundheit eines Gegners geschwächt, dann darf man eine Karte aufnehmen, dann wiederum muss man seine Runde vorzeitig beenden. Diese Stellen sind nicht schwer zu finden (Gott seis gedankt dass ich, so gut es in BB geht, versuche objektorientiert zu programmieren.) ALLERDINGS: Wenn ich eine solche Stelle gefunden habe, will ich auf keinen Fall ganz hardcoremäßig um diese Stelle herumprogrammieren um den Script dort einzubinden. Meine Frage: Da ihr den Quelltext nicht kennt, könnt ihr mir ganz grobe und allgemeine Vorschläge machen, wie man eine Scriptdatei auswerten kann, die theoretisch sehr viele verschiedenen Stellen des Quelltextes beeinflussen kann? Ich habs mir so vorgestellt, dass ich eine Einheitsfunktion mache, nach dem Motto "If DarfAktionAusführen("ANGREIFEN")". Dieser Funktion kann ich dann alle Aktionen übergeben, die ich in der nächsten Zeile benutzen will. Die Funktion überprüft den Script, ob das zulässig ist. Dann kann ich die Einheits-Funktion vor jeder möglichen Code-Zeile stellen, die eventuell durch den Script beeinflusst werden könnt? Wär das ne Möglichkeit? Weil sowas zu proggen kompliziert ist, will ich nicht einfach am Quelltext rumbasteln und experimentieren. Deshalb hol ich mir erst mal n paar Meinungen. thx im Vorraus Gossi |
||
Alle Wasser laufen ins Meer, doch wird das Meer nicht voller; an den Ort, dahin sie fließen, fließen sie immer wieder. (...) Was geschehen ist, eben das wird hernach sein. Was man getan hat, eben das tut man hernach wieder, und es geschieht nichts neues unter der Sonne. Geschieht etwas, von dem man sagen könnte: "Sieh, das ist neu"? Es ist längst vorher auch geschehen in den Zeiten, die vor uns gewesen sind. |
Kekskiller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Klingt ja recht komplike.Ich würde allgemein alle Zauber und Angriffe oder so als spezielle Tabelleneinträge verwalten , ähnlich wie in den Diablo2-Excel-Files.Somit hat ein Zauber mehrere Eigenschaften , wie zum Beispiel , wer geschädigt wird , Gegner oder Partymitgleid , was für eine Art von Schaden bewirkt wird , Feuer , Magie , Eis , wie viel Schaden gemacht wird , und so weiter.Dies alles müsste eine Funktion auswerten.Oder wenn man die Karten auch anderweitig einsetzen möchte , dann müsste man die Tabelle um ein paar Spalten erweiter n , und reinschreiben , was beispielweise nach der Auswahl im Menu geschieht , oder so ähnlich.Ich mache mir da immer eigentlich nie so viel Arbeit , kurz um baue ich eigentlich sowas in der Art nie.Daher entschuldigt meine hinterbliebene Idee ( falls überhaupt hinterblieben ) . | ||
![]() |
Gossi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die Idee ist wirklich nicht schlecht, aber für den Umfang der Fähigkeiten nicht ausreichend. Denn jede Fähigkeit tut zu einem anderem Zeitpunkt des Spiels etwas anderes. Die Idee mit der Tabelle ist nicht schlecht, aber es bleibt das Problem, wann und wo sollte ich sie auswerten lassen. Bei jeder potenziellen Aktion des Spielers prüfen, ob die Fähigkeit an dieser Stelle etwas tut? Aber ich glaube dass es anders gar nicht geht. Mal sehn, ob noch weitere Varianten kommen.
Es geht konkret darum, wie ich die Interpretation im Quelltext starten könnte. Alles in eine Funktion und diese dann vor jeder möglichen Aktion des Spielers? Mir fällt keine andere Möglichkeit ein! |
||
Alle Wasser laufen ins Meer, doch wird das Meer nicht voller; an den Ort, dahin sie fließen, fließen sie immer wieder. (...) Was geschehen ist, eben das wird hernach sein. Was man getan hat, eben das tut man hernach wieder, und es geschieht nichts neues unter der Sonne. Geschieht etwas, von dem man sagen könnte: "Sieh, das ist neu"? Es ist längst vorher auch geschehen in den Zeiten, die vor uns gewesen sind. |
Kekskiller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Man könnte auch zu jeder Situation passend eine Variable ändern , welche der Tabelle sagt , welche Aktion nun läuft und je nachdem , wie die Variable steht , werden die Werte anders interpretiert.Nur ist das für solch große Vorhaben ziemlich unpraktisch.Doch leider komme ich auf keinen besseren Gedanken , tut mir Leid. | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group