RPG-'Engine' + Editor
-
Zur zeit arbeite ich an einer RPG-'Engine'
Angefangen hat es als ich mal zum Training ne Klasse schreiben wollte, da es aber auch einen Sinn haben sollte hab ich mich für eine Klasse geschrieben die ein RPG verwaltet, also die Charaktäre,Waffen, Rüstungen,Gegenstände usw.
Nach den Anfängen mit dem BCB hab ich mich entschlossen die BCB-spezifischen Befehle rauszunehmen und auf C++ Standard umzuschreiben.Hinzukamen dann zwischendurch noch Namespaces.Was fertig ist:
- Charaktäre (teilweise,Attribute + Waffe)
- Waffen
- Rüstungen
- LUA-Implementation mithilfe von toLua++
- Kampf (teilweise da noch nicht alles fertig ist)Was fertig ist aber noch nicht hochgeladen:
- Inventar
Was fehlt:
- Gegenstände
- Magie
- Editor Charaktäre,Waffen,Rüstungen,Maps usw. erstellen.
- Einbau einer 3D-Engine für MapsBasis ist die RPG-Verwaltung.Der Rest, also Lua,Editor usw. greift von draußen darauf zu.
Es ist (noch) keine Dokumentation dabei aber wenn man sich das Script "exe\test.lua" anschaut sollte man, als jemand der sich mit programmieren auskennt, eigentlich sehen können wie das funktioniert.
Das Script wird aus dem Programm mit der Eingabe "loadscript test.lua" aufgerufen. Das Script setzt die nötigen Variablen für einen Testkampf. 2 Waffen und 2 Charaktäre mit verschiedenen Rüstungen. Die Werte und Namen können natürlich im Script verändert werden.
Der Befehl für den Kampf lauten :
Fight(ID des Angreifenden Charakters ,ID des Angegriffenen Charakters)
Also z.B.
Fight(char_MenschID,char_GoblinID)Was fertig ist:
- Charaktäre (teilweise,Attribute + Waffe)
- Waffen
- Teilweise LUA-Implementation
- Verwaltung der Waffen und Charaktäre in Vektoren
- Rüstungen(ungetestet)
- Inventar(ungetestet)Was fehlt:
- Gegenstände
- MagieTeilweise fertig:
- Programm mit dem man diese Sachen verwalten und zusammenhängende Levels bauen kann.Scriptsprache: LUA
- Kampf (teilweise da noch nicht alles fertig ist)Beide Dateien enhalten den Quelltext und unter Windwos kompilierte Binaries.
Der Quelltext wird auch unter Linux kompiliert.(enthalten Quellcode)
RPG-Library(131 KB)
Editor(1,91MB)Hinweis (1.12.2005): Diese Version ist noch nicht unter Linux getestet. Falls es nicht unter Linux funktioniert schreibt das bitte, am besten auch eine Lösung wenn ihr wisst was das Problem ist.
Kommentare + Kritik sind willkommen, natürlich auch zum Quelltext.
Wenn jemand etwas vom noch nicht fertigen machen will soll er sich hier melden.Hinweis:
Dies ist kein Spielprojekt. Man kann daraus ein Spiel machen aber da ich zur Zeit alleine dran arbeite wäre das zuviel
-
Keiner Lust/Zeit das Programm zu testen?
Ist immer blöd wenn man das selber testet, da übersieht man meistens was.Ausserdem wäre es Nett wenn ihr sagt ob der Quellcode so auch in Ordnung ist.
Oder wartet ihr auf die neue Version die ich hochladen will?
Dazu kam ich in den letzten Tagen leider nicht, da ich damit beschäftigt war Debian als Zweitbetriebssystem einzurichten.Ausserdem wollte ich den Quellcode nochmal selbst durchgehen, vorher.
Also schaut euch ruhig die Version an.
-
Vielleicht will sich das doch noch jemand ansehen...
Neu hinzugekommen(Updates zwischen dem ersten und diesem Post nicht berücksichtigt):
Ich habe eine Möglichkeit hinzugefügt die Texte zu übersetzen. Sprachdateien für Englisch und Deutsch liegen schon bei(Beim 'Editor').
Die Sprache kann man ändern indem man die Funktion SetLanguage der RPG-Klasse ausführt.
Ausserdem bietet sie jetzt die Möglichkeit alle RPG-Objekte zu löschen und , falls gewünscht, die Standardobjekte zu erstellen(Keine Waffe usw.)
Dazu muss man die Funktion ClearAll ausführen. Wenn man dieser true oder garnix übergibt werden die Standardobekte erstellt. Bei false werden die Listen nur gelöscht.
-
Ich hab die Funktion zum speichern implementiert.
Sie wird folgendermaßen aufgerufem(Im Editor):
Savescript <NamederScriptDatei>Ausserdem hab ich auch die 'Test.lua' angepasst.
Bevor man diese (und andere Scriptdateien die mit der Savescript-Funktion angelegt wurden) aufruft. Sollte man 'RPG:ClearAll(false)' ausführenIch habe auch die Variablen und Funktionsnamen geändert. Das habe ich gemacht weil ich vor kurzem bei Wikipedia was über die ungarische Notation gelesen habe die ich (falsch) verwendet habe. Da wo es geht hab ich es an die richtige angepasst, bei den anderen hab ich keinen Präfix angehängt. Es sollte aber auch meistens klar sein für was die Variablen verwendet werden.
Bei den Klassenmethoden habe ich auch an jedes Argument das übergeben wird das Präfix 'arg' angehängt damit man die Argumente nicht mit den Eigenschaften der Klasse verwechselt.Hier die neuen Dateien(, ich werde auch den ersten Beitrag wieder editieren.
(enthalten Quellcode)
RPG-Library(131 KB)
Editor(1,2 MB)
-
hm findest du nicht du solltest irgendwie n bissl schreiben wie man da irgendwas zu laufen bekommt?
Ich hab da die tolle Konsole und soll da irgendwas eingeben damit was dolles buntes passiert wenn ich das richtig sehe
Aber dazu existiert wenn ich nicht blind bin weder eine Befehlsliste noch sonstwas... und Befehle ausdenken klappt irgendwie auch nicht.
-
Ok.
Zusätzlich zu den normalen Lua-Befehlen(Die ich hier natürlich nicht alle erklären kann ) existieren Folgende Befehle:
loadscript <Dateiname> Führt das angegebene Luascript aus.
savescript <DateiName> Speichert die aktuellen Objekte als Luascript.
addWeaponType(<Name>) Fügt einen Waffentyp mit dem angegebenen Namen hinzu, gibt die ID des Typs zurück
addAmmoType(<Name>) Fügt einen Munitionstype mit dem angegebenen Namen hinzu, gibt die ID des Typs zurück
addDamageType(<Name>) Fügt einen Schadenstyp mit dem angegebenen Namen hinzu, gibt die ID des Typs zurück
addWeapon(<Name>) Fügt eine Waffe mit dem angegebenen Namen hinzu, gibt die ID der Waffe zurück
addCharacter(<Name>) Fügt einen Charakter mit dem angegebenen Namen hinzu, gibt die ID des Charakters zurück
addInventory(<Name>) Fügt ein Inventar mit dem angegebenen Namen hinzu, gibt die ID des Inventars zurück
addArmor(<Name>) Fügt eine Rüstung mit dem angegebenen Namen hinzu, gibt die ID der Rüstung zurück.
Fight(<ID des angreifenden Charakters>,<ID des angegriffenen Charakters>) Der Angreifende Charakter führ einen Angriff gegen den angegriffen Charakter mit der Waffe aus die er in der rechten und/oder linken Hand hält.Dann gibt es noch die Methoden der Klassen die mithilfe von toLua++ hinzugefügt wurden.Welche Methoden das sind kann man in den *.pkg Dateien im Ordner Packages sehen.
Auf die Objekte kann mit ":" zugegriffen werden.
Da die add* Befehle die ID des Objekts zurückgeben muss man die Funktionen des RPG-Objekts benutzen um darauf zuzugreifen.Für eine Waffe z.B. folgendermaßen:
wpn_SchwertID=addWeapon("Schwert") //Eine Waffe mit dem Namen "Schwert" hinzufügen und ID in wpn_SchwertID speichern. RPG:getWeaponByID(wpn_SchwertID):setDescription("") //Beschreibung der Waffe setzen RPG:getWeaponByID(wpn_SchwertID):setTypeID(1) //Typ der Waffe festlegen RPG:getWeaponByID(wpn_SchwertID):setDamageTypeID(1) //Schadenstype der Waffe festlegen RPG:getWeaponByID(wpn_SchwertID):setDamagePerHit(20) //Schaden pro Treffer festlegen RPG:getWeaponByID(wpn_SchwertID):setSpaceUsed(1) //Festlegen wieviel Platz die Waffe im Inventar einnimmt
Die Datei "test.lua" enthält Beispielbefehle.
Ich hoffe das reicht erstmal.
-