Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Einen Lehrmeister erschaffen?
#21
Statements führen ganz allgemein ausgedrückt eine Aktion aus. Das kann z. B. Ein Item übergeben, eine Animation abspielen, einen NPC erscheinen lassen oder auch AP vergeben sein.

Werfen wir zunächst einen Blick auf den Aufbau der Tabelle _Scripts_Statements. Die Tabelle hat vier Spalten. Wir beginnen mit der letzten Spalte, der StatementBlockGUID. Jese Statement besteht aus midestens zwei Zeilen in der Tabelle. Welche Zeilen zu einem Statement gehören, erkennt man an der StatementBlockGUID. Wenn du dir mein Beispiel anschaust siehst du, dass beide Zeilen eine identische StatementBlockGUID haben, nämlich
X'A8F10C0A8F518210F906CB19E8EE5936'.
Grundsätzlich ist die StatementBlockGUID frei wählbar, du musst nur darauf achten, dass sie noch nicht verwendet wird.

Die StatementGUID ist ein eindeutiger BLOB, d. h. Jeder Wert darf nur einmal vorkommen. Auch hier musst du bei neuen Statements darauf achten, dass der BLOB noch nicht vorhanden ist, sonst wird ein bestehender Eintrag überschrieben.

 Kommen wir jetzt zur Spalte StatementType. Bei der ersten Zeile findest du den Wert Action, bei der zweiten den Wert Begin. Da ein Statement immer aus mehreren Zeilen besteht, muss das Spiel/die Engine wissen, mit welcher Zeile das Statement beginnt. Deshalb steht hier der Wert Begin. Bei Zeilen die tatsächliche Aktionen enthalten, steht hier der Wert Action.

Bleibt noch die Spalte StatementContent. Steht in StatementType der Wert Action, dann enthält StatementContent die tatsächlich durchzuführende Aktion. In diesem Fall eben das Öffnen des Lehrmeister Fensters. In der Zeile mit Begin steht immer ein seltsamer Wert wie
15c35ee0-9c87-c6d4-fc92-8ac26f29e1f6,

der auf den ersten Blick keinen Sinn zu ergeben scheint. Nennen wir diesen Wert einfach mal Identifikator. Bei diesem Wert handelt es sich um nichts Anderes als eine andere
Schreibweise des BLOBs aus der ersten Zeile des Statements. D. h. Die Zeile mit Begin ruft die Zeile mit Action auf.

Wie kommt jetzt die andere Schreibweise des BLOBs zustande?
Der BLOB der ersten Zeile meines Statements lautet E05EC315879CD4C6FC928AC26F29E1F6. (Das X und die einfachen Anführungszeichen lasse ich der Verständlichkeit halber jetzt weg). Der Wert in der zweiten Zeile lautet 15c35ee0-9c87-c6d4-fc92-8ac26f29e1f6.

Wenn wir diese beidenWerte mal untereinander notieren, sieht man, dass diese beiden recht ähnlich sind.
E05EC315879CD4C6FC928AC26F29E1F6
15c35ee0-9c87-c6d4-fc92-8ac26f29e1f6

Teilen wir den BLOB mit Bindenstrichen ebenfalls in fünf Gruppen, erhält man

E05EC315-879C-D4C6-FC92-8AC26F29E1F6

Wie du siehst sind die beiden letzten Gruppen identisch mit den beiden letzten Gruppen des Identifikators. Nur werden statt Großbuchstaben Kleinbuchstaben verwendet. Wir haben also FC92-8AC26F29E1F6 und fc92-8ac26f29e1f6.

Auch die ersten drei Gruppen sind im Prinzip identisch, nur werden beim Identifikator diese Gruppen in umgekehrter Reihenfolge notiert. Aus E05EC315 wird 15c35ee0, 
aus 879C wird 9c87 und aus D4C6 wirdc 6d4. Jogs Drakensang BLOB-Tool ist hier eine große Hilfe. Kannst du dir auf seiner Seite herunterladen.

Das ActionScript wird benötigt um das Statement aufzurufen. Dazu musst du die StatementGUID in der Zeile mit Begin bei StatementRef eintragen und die StatementBlockGUID in StatementBlock.

Um eigene BLOBs und die entsprechenden Identifikatoren zu erzeuge, habe ich mir eine BLOB Generator programmiert. Hänge ich einfach mal an, vielleicht kannst du ihn ja gebrauchen.

.exe   blob-gen.exe (Größe: 308,08 KB / Downloads: 3)
Zitieren
#22
Danke für die ausführliche Erklärung. Jetzt ergibt alles einen Sinn.
Zitieren
#23
Sicher das es nur die 3 Einträge sind für den Script? Ich bekomme nämlich eine expression =0 Fehlermeldung


Angehängte Dateien Thumbnail(s)
   
Zitieren
#24
Hast du Buch und Buchständer am gleichen Ort?
Hast du in dem Statement den Namen deines Buch-NPCs eingesetzt?
Hast du das Script beim Buchständer korrekt angegeben?

Ansonsten, ja ich bin mir sicher. Schließlich hat es ja bei mir funktioniert.
Zitieren
#25
Hab beim Statement Script Neues Buch1 stehen


Hier das NPC Buch




Und hier der Buchständer


Zitieren
#26
Da ist ein Leerzeichen im Namen. Das ist nicht erlaubt.
Zitieren
#27
(17.12.2023, 06:49)Lord Demon schrieb: Da ist ein Leerzeichen im Namen. Das ist nicht erlaubt.

Hab das Leerzeichen weggemacht. Immer noch die komplett gleiche Fehlermeldung. Schreib mir mal hier bitte dein Buch und deinen Buchständer
Zitieren
#28
Du hast auch im Feld Id ein Leerzeichen drin. Die fRage, ob du im Statement den Namen deines NPCs eingetragen hast, hast du mir leider nicht beantwortet.

Aber, bitte sehr, hier meine Datensätze. Sind beide für ein Savegame. Wenn du sie in die gamea1.db4 patchen willst, musst du die überzähligen Spalten noch löschen.

Code:
INSERT INTO "_Instance_StateObject" VALUES (X'44070578462D5F28DD4246924B6C754D',"|Level|Objects|StateObject|taverne_skillbook","locr01_nadoret_taverne","",X'31E47FBF000000008B9FEE3C00000000000000800000803F00000000000000008B9FEEBC0000000031E47FBF00000000264F3A40BCFB8F4196FEDCC00000803F',"taverne_skillbook","Buch des Wissens","stateobjects/book_buchstaender_uni","stateobjects/book_buchstaender_uni","Environment","taverne_skillbook","lookat_locr01_magierturm_skillbook","","on:Use:show_skillbook.xml","1","0","closed","","5","1","Nehmen","0","0","","icons/transparent","",NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);

INSERT INTO "_Instance_NPC" VALUES(X'252388D9B16428783340CD1B1D9E4418','|Level|Objects|NPC|taverne_skillbook_01_1','locr01_nadoret_taverne','',X'31E47FBF000000008B9FEE3C00000000000000800000803F00000000000000008B9FEEBC0000000031E47FBF00000000264F3A40BCFB8F4196FEDCC00000803F','taverne_skillbook_01','taverne_skillbook_01','characters/male','dummies/char','buch als trainer fuer magiekunde','stateobjects/petrified_mensch',1,'npc_uni_trainer_magierbuch','male','defaultMale','male','FaAllFriendly','simple_fighter','','','','',1.0800000429153442,3.4000000953674316,4,0,1,15,'','','NPC','','',1,1,10,1,1,10,1,1,10,8,19,19,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,-500,-500,10,10,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,10,-10,0,0,0,0,0,0,10,0,0,5,0,0,5,1,3,0,0,0,0,0,0,0,0,0,'All','Medium','','InSight','','','map/map_marker_blue',0,'characters\\physiks_dummy',2,6,0,1,0,0,0,0.8500000238418579,'leather',30,100,15,'Everything',1,0,1,'','',1,1,-1,'lookat_locr01_magierturm_skillbook','Mittellaender',0,'','','',0.699999988079071,'','',0,'','','',11,1,3,20,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,-500,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-500,1,'','TaStaebe;TaPflanzenkunde;TaMagiekunde;ZaArmatrutz;ZaAttributoMU;ZaAttributoKL;ZaAttributoIN;ZaAttributoCH;ZaAttributoFF;ZaAttributoGE;ZaAttributoKO;ZaAttributoKK;ZaPlumbumbarum;ZaPsychostabilis;ZaSensibar;ZaBlitz;ZaIgnifaxius;ZaBalsam;ZaFulminictus;',1,0.5,'','magierbuch','','Auto','',-500,-500,-500,-1,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
Zitieren
#29
Den Namen hatte ich in die Statement geschrieben

Das wundervolle ist, das ich die Fehlermeldung weiterhin bekomme, auch mit deinem NPC und deinem Buchständer.

Das peinliche ist, das ich mich hier grad immer mehr zum Vollidioten mache. Sicherlich fragst du dich schon, ob ich dass mittlerweile überhaupt noch Ernst meine.

Ja, dass tue ich leider. Ich bin zu unfähig diesen Fehler zu finden. Der sich zu 100% in den 3 Einträgen in der statica Datenbank liegt. Da der Buchständer und das Buch ohne die Einträge in der statica ganz normal im Spiel stehen
Zitieren
#30
Also, ich kann in meinem ActionScript und Statement keinen Fehler sehen. Bei mir funktioniert alles einwandfrei.

Poste doch mal bitte nochmal deinen gesamten Code. Also NPC, Stateobject, Script und Statement.
Zitieren
#31
Code:
INSERT INTO "someTable" VALUES ("show_skillbook.xml","X'E05EC315879CD4C6FC928AC26F29E1F7'","X'A8F10C0A8F518210F906CB19E8EE5936'");


Code:
INSERT INTO "someTable" VALUES ("X'E05EC315879CD4C6FC928AC26F29E1F7'","Begin","15c35ee0-9c87-c6d4-fc92-8ac26f29e1f6","X'A8F10C0A8F518210F906CB19E8EE5936'");


Code:
INSERT INTO "someTable" VALUES ("X'E05EC315879CD4C6FC928AC26F29E1F6'","Action","ShowTrainerUI trainer=""Neues_Magierbuch"" actionSelection=""script,quest,dialog"" seCategory=""all,ui""; ","X'A8F10C0A8F518210F906CB19E8EE5936'");





Code:
INSERT INTO "someTable" VALUES ("X'9BA6F357D2ABE97E1DF1817D42848A27'","|Level|Objects|NPC|Neues_Magierbuch","locr00_boot","","X'AAD97F3D0000000006807FBF00000000000000000000803F000000000000000006807F3F00000000AAD97F3D00000000E88912428146C73F478D4A400000803F'","Neues_Magierbuch","Neues_Magierbuch","characters/male","dummies/char","buch als trainer f?r magiekunde","stateobjects/petrified_mensch","1","npc_uni_trainer_magierbuch","male","defaultMale","male","FaAllFriendly","simple_fighter","","","","","1.0800000429153442","3.4000000953674316","4","0","1","15","","","NPC","","","1","1","10","1","1","10","1","1","10","8","19","19","8","8","8","8","8","0","0","0","0","0","0","0","0","0","0","0","0","-500","-500","10","10","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","10","-10","0","0","0","0","0","0","10","0","0","5","0","0","5","1","3","0","0","0","0","0","0","0","0","0","All","Medium","","InSight","","","map/map_marker_blue","0","characters\\physiks_dummy","2","6","0","1","0","0","0","0.8500000238418579","leather","30","100","15","Everything","1","0","1","","","1","1","-1","lookat_locr01_magierturm_skillbook","Mittellaender","0","","","","0.699999988079071","","","0","","","","11","1","3","20","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","-500","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","-500","1","","TaStaebe;TaPflanzenkunde;TaMagiekunde;ZaArmatrutz;ZaAttributoMU;ZaAttributoKL;ZaAttributoIN;ZaAttributoCH;ZaAttributoFF;ZaAttributoGE;ZaAttributoKO;ZaAttributoKK;ZaPlumbumbarum;ZaPsychostabilis;ZaSensibar;ZaBlitz;ZaIgnifaxius;ZaBalsam;ZaFulminictus;","1","0.5","","magierbuch","","Auto","","-500","-500","-500","-1","0",null,null);








Code:
INSERT INTO "someTable" VALUES ("X'E34344B7CA7AD62BE82F6214E155A1C8'","|Level|Objects|StateObject|Neues_Buch1","locr00_boot","","X'AAD97F3D0000000006807FBF00000000000000000000803F000000000000000006807F3F00000000AAD97F3D00000000E88912428146C73F478D4A400000803F'","Neues_Buch1","Buch des Wissens","stateobjects/book_buchstaender_uni","stateobjects/book_buchstaender_uni","Environment","Neues_Buch1","lookat_locr01_magierturm_skillbook","","on:Use:show_skillbook.xml","1","0","closed","","5","1","Nehmen","0","0","","icons/transparent","");INSERT INTO "someTable" VALUES ("X'E34344B7CA7AD62BE82F6214E155A1C8'","|Level|Objects|StateObject|Neues_Buch1","locr00_boot","","X'AAD97F3D0000000006807FBF00000000000000000000803F000000000000000006807F3F00000000AAD97F3D00000000E88912428146C73F478D4A400000803F'","Neues_Buch1","Buch des Wissens","stateobjects/book_buchstaender_uni","stateobjects/book_buchstaender_uni","Environment","Neues_Buch1","lookat_locr01_magierturm_skillbook","","on:Use:show_skillbook.xml","1","0","closed","","5","1","Nehmen","0","0","","icons/transparent","");
Zitieren
#32
Habe mir das Ganze jetzt mal genau angeschaut. Der Hinweis, dass die Fehlermeldung schon beim Starten eines neuen Spiels kommt, wäre hilfreich gewesen. Ich war die ganze Zeit davon ausgegangen, dass die Meldung kommt, wenn man auf den Buchständer klickt.

Jedenfalls haben meine Tests ergeben, dass der Code einwandfrei funktioniert, allerdings nur wenn man Buch und Buchständer in ein Savegame patcht. Sobald beides in der gamea1 steht kommt es zu der besagten Fehlermeldung. Der Fehler selbst liegt allerdings nicht in Actionscript oder im Statement, sondern beim Aufruf des Scripts im Stateobject. Wo und wie genau kann ich leider nicht sagen.

Noch eine kleine Bitte. Es wäre nett, wenn du Code so postest, dass er direkt eingefügt werden kann und nicht vorher erst noch bearbeitet werden muss.
Zitieren
#33
(18.12.2023, 20:59)Lord Demon schrieb: Habe mir das Ganze jetzt mal genau angeschaut. Der Hinweis, dass die Fehlermeldung schon beim Starten eines neuen Spiels kommt, wäre hilfreich gewesen. Ich war die ganze Zeit davon ausgegangen, dass die Meldung kommt, wenn man auf den Buchständer klickt.

Jedenfalls haben meine Tests ergeben, dass der Code einwandfrei funktioniert, allerdings nur wenn man Buch und Buchständer in ein Savegame patcht. Sobald beides in der gamea1 steht kommt es zu der besagten Fehlermeldung. Der Fehler selbst liegt allerdings nicht in Actionscript oder im Statement, sondern beim Aufruf des Scripts im Stateobject. Wo und wie genau kann ich leider nicht sagen.

Noch eine kleine Bitte. Es wäre nett, wenn du Code so postest, dass er direkt eingefügt werden kann und nicht vorher erst noch bearbeitet werden muss.

Ups, hatte ich vergessen.


Und was nun? Welche Möglichkeit besteht jetzt noch um einen Lehrmeister zu erschaffen? Gibt es überhaupt noch Möglichkeiten dazu? Es ist mir auch egal, obs ein NPC, ein Stein oder sonst was ist den man anklicken muss. Hauptsache bei der Person/den Gegenstand kann man SF bzw. Zaubersprüche erlernen


Was wäre mit ein NPC der beim ansprechen das Lehrfenster öffnet?
Zitieren
#34
Da gibt es noch mehrere Sachen, die man ausprobieren könnte. Ein NPC als Lehrmeister ist sicher eine Option. Allerdings brauchst du dann einen dazugehörigen Dialog. Ansonsten könnte man noch andere Stateobjects ausprobieren, mit dem Transform des Buchs rumspielen, vielleicht muss man auch den Weg über ein Preset gehen. ch weiß es einfach nicht.
Zitieren
#35
Also nachdem ich einen Eintrag unter Preset getan habe verschwand auch die Fehlermeldung.

Leider passierte nichts, als ich versuchte den Buchständer anzuklicken. Das Zahnrad war aber da gewesen




Code:
INSERT INTO "_DSA_Preset" VALUES ("show_on_skillbook.xml","OnAction","Use","show_skillbook.xml");



Hatte ich da vielleicht was falsch eingegeben? Hab dann unter dem Buchständer den Eintrag von show_skillbook.xml zu show_on_skillbook.xml geändert. Fehlermeldung war weg, aber wie gesagt. Beim anklicken passiert nichts
Zitieren
#36
Das Preset sieht für mich soweit okay aus. Hast du bei den Stateobject den Eintrag in ScriptOverride gelöscht?
Zitieren
#37
(19.12.2023, 20:17)Lord Demon schrieb: Das Preset sieht für mich soweit okay aus. Hast du bei den Stateobject den Eintrag in ScriptOverride gelöscht?

*Mir werden beim SQLite Admin bei der Suchfunktion die BLOB Daten nicht angezeigt. Du scheinst laut den Bildern auf Seite 1 ein ganz anderes Interface zu haben. Welches Programm benutzt du? Wahrscheinlich nicht dasselbe wie ich.

Ja, hatte es in das ScripPreset Feld geschrieben und das Feld ScriptOverride leer gemacht. Funktioniert irgendwie nicht beim anklicken. Und das richtige Buch hat 2 Preset Einträge. Einmal ein CanAction und einmal ein OnAction Preset. Das Buch funktioniert wahrscheinlich nicht, weil der andere Eintrag nicht vorhanden ist. Du hattest hier nur den OnAction Script geschrieben. Der CanAction Script fehlt.


Name vom CanAction Script ist

locr01_can_use_magierturm_skillbook.xml


Befindet sich in der Tabelle _Scripts_ConditionScripts


Dafür bräuchte es wohl Einträge in der _Scripts_Conditions? Die Tabelle ist ja nochmal komplett anders aufgebaut. Wäre toll, wenn du die mir auch noch erklären könntest







Um das BLOB Thema nochmal drauf anzusprechen. Ist der Identifikator nur ein "Lückenfüller" weil die Datenbank bzw. das System auf die Zeile StatementContent angewiesen ist? Der Verweis ist ja auf den gleichen Eintrag. Schließlich verbindet nur die StatementBlockGUID die beiden Einträge zusammen. Technisch betrachtet ist das ja Schwachsinn, weil sich das System dadurch teilsweise in eine Schleife versetzt. 


Schließlich braucht man keine 2 Stromkabel um 1 Lampe zum leuchten zu bringen. Wobei im Bild der schwarze Strich mit beiden Einträgen verbunden ist und zusätzlich mit den Eintrag unter _Scripts_ActionScripts

   
Zitieren
#38
Ich verwende, so wie du, das alte Firefox Addon SQLite Admin. Läuft bei mir zusammen mit einem alten Waterfox immer noch einwandfrei. Aber das mag eventuell damit zusammenhängen, dass ich kein Windows habe.

Ein Nachteil des SQLite Admins ist allerdings, dass man dort nicht nach BLOBs suchen kann. Deshalb habe ich die gesamte statica1.db4 als sql Datei exportiert. Wenn ich jetzt irgendwelche BLOBs suchen will, verwende ich dazu diese Datei.

Anscheinend hast du noch nicht ganz verstanden, wie Statements funktionieren. Habe ich dir schon mal erklärt und möchte ich an dieser Stelle nicht nochmal ausführlich wiederholen.
Ein Statement enthält eine Aktion, die ausgeführt werden soll. Du brauchst irgendeine Art von Auslöser für diese Aktion, damit das Spiel weiß wann diese Aktion ausgeführt werden soll. Der Auslöser ist häufig ein ActionScript, in Dialogen kann ich Statements (meistens, nicht immer) aber auch direkt aufrufen.
Wenn die Durchführung einer Aktion von Bedingungen abhängig ist, kommen Conditions ins Spiel. Wenn du z. B. einem NPC einen Gegenstand geben sollst, dass ist die Übergabe davon abhängig, ob du diesen Gegenstand auch im Inventar hast. Etwas, was du nicht besitzt, kannst du ja nicht abgeben. Dein Skillbook, soll sich aber immer öffnen, wenn man es anklickt, insofern brauchst du hier keine Conditions. Beim Skillbook im Magierturm verhält es sich so, dass vier verschiedene Skillbooks in der Datenbank hinterlegt sind. Die Conditions in dem Statement fragen ab, ob bestimmte Questen schon erledigt sind. Wenn eine davon zutrifft, wird das dazugehörige Skillbook geöffnet. wenn nicht wird die nächste Bedingung überprüft. Wir haben hier also nicht anderes als eine IF...THEN...ELSE Anweisung wie in einer Programmiersprache oder wie die WENN Funktion in Excel, falls dir das eher etwas sagt.

Letzendlich ist der Inhalt der Datenbanken nichts anderes als Programmcode einer Programmiersprache, die ich für mich Nebulascript genannt habe, da man damit die Nebula Engine des Spiels prgrammiert. Wie jede andere Programmiersprache hat auch Nebulascript seine ganz eigene Syntax, an die ich mich halten muss, wenn mein Code funktionieren soll. Wenn du diese Syntax für schwachsinning hältst, ist das völlig okay. Leider wirst du nicht darum herumkommen, dich trotzdem an sie zu halten.
Dazu kommt, dass man sich kein Buch zu dieser Sprache zulegen kann und es auch keine Youtubevideos dazu gibt um sie zu lernen. Und selbsterklärend ist der Inhalt der Datenbanken auch nicht, wie du ja selbst schon festgestellt hast. Wie schon erwähnt gab es damals im dtp Forum eine Modding Unterforum, aber da meine erste Frage (bezog sich auf Fallen) nicht beantwortet werden konnte, habe ich dann auch keine Fragen mehr gestellt. Offensichtlich war ich in Bereiche vorgedrungen, mit denen sich noch kein anderer beschäftigt hatte. Welche Möglichkeit bleibt dann noch, wenn ich selbst modden möchte? Ich muss den Code analysieren, versuchen ihn zu verstehen und dann für meine eigenen Bedürfnisse anzupassen. Ein Beispiel dazu. Es gibt an verschiedenen Stellen im Spiel diesen Fadeout/Fadein Effekt, bei dem sich der Bildschirm kurz verdunkelt und nach einer kurzen Pause wieder hell wird. Ich brauchte diesen Effekt um Firutin Bartlenhaus vom Sanften Ochsen zu Yetomold Zornbold zu transferieren, wusste aber nicht, wie er realisiert wird. Das erste Mal taucht dieser Effekt direkt nach dem Dialog mit Piet auf, in dem man den Auftrag erhält mit Jana nach Zunderschwamm zu suchen. Also habe ich zuerst den Dialogtext in der locale.db4 gesucht. Damit bekam ich die GUID der Textzeile. Diese GUID habe ich dann in der Tabelle _Story_DialogTakes gesucht. Hier habe ich dann ein Statement gefunden, das einen Verweis auf ein ActionScript enthält. Ich habe dann in dieser Tabelle nach dem Script gesucht und dann den Verweis auf ein Statement gefunden, dass den vom mir gesuchten Code für die Implementierung des Fadeout/Fadein Effekts enthielt.
Das ist zeitaufwendig, mühselig und langwierig, auf jeden Fall. Ich habe mehrere Jahre gebraucht um an meinen jetzigen Kenntnistand zu kommen. Und wenn ich mir anschaue, was es so an Mods für die Drakensangspiele gibt, dann ist da nicht viel und das meiste davon stammt von meiner Freundin und mir. Es gab zwar über die Jahre hinweg immer mal wieder Fragen zum Modding, aber so wie ich das sehe, haben alle schnell wieder aufgegeben, nachdem sie gemerkt haben, wie umständlich das alles ist.
Dazu kommt dann noch, dass viele Sachen. die man modden möchte, nicht auf Anhieb funktioneren. War bei mir auch so. Ich habe mich aber nicht entmutigen lassen, sondern weitergemacht. Es gibt beim Auge der Göttin diese Stelle, an der die Begleiter in Hühner verwandelt werden. Ich habe eine gefühlte Ewigkeit gebraucht, bis ich das am Laufen hatte. Manchmal stellt man auch fest, dass bestimmte Sachen, die man gerne umsetzen möchte einfach nicht gehen. Dann hat man eben einige Stunden verschwendet. Gehört auch dazu. Entscheidend ist, dass ich immer Spaß am Modden hatte, trotz aller Rückschläge. Jetzt bin ich (außer meiner Freundin) wahrscheinlich so ziemlich der Einzige, der sich mit Drakensang Modding auskennt, aber das war nie mein Ziel. Uns ging es immer nur darum neue Inhalte für die Spiele zu erstellen, weil die Drakensang Spiele einfach toll sind. Und wenn ich mir das Feedback zu unseren Mods anschaue, kann ich nur sagen, die Zeit, die wir investiert haben, hat sich gelohnt.
Jetzt habe ich aber genug geschwafelt. Ich entschuldige mich für die Wall of Text, aber das musst ich jetzt einfach mal loswerden. Zurück zuk eigentlichen Thema.

Man kann bei StateObjects keine Statements hinterlegen, das es kein Feld dafür gibt. Dafür gibt es Felder für ActionScripts, mit denen man dann Statements aufrufen kann. Wäre vielleicht einfacher, wenn das ginge, aber da es nicht vorgesehen ist, muss ich mich an die Vorgehensweise halten, die das Spiel vorsieht. Also brauch ich ein ActionScript, dass mein Statement aufruft.
Ein Statement besteht aus mindestens zwei Zeilen in der Tabellen. (Es gibt auch Statements, die aus 20, 30 oder noch mehr Zeilen bestehen. Im Auge der Göttin habe ich ein Statement, das aus fast 100 Zeilen besteht.) Eine Zeile mit Begin und eine Zeile mit Action. Das ActionScript ruft immer die Zeile mit Begin auf. Die Begin Zeile ruft über den Identifikator dann die Action Zeile auf. In der Action Zeile steht dann die Anweisung, die ausgeführt werden soll. Es handelt sich dabei in keinster Weise um einen Lückenfüller, sondern, wie ich in meinem anderen Beitrag schon geschrieben habe, um eine andere Schreibweise der GUID der Action Zeile. Das wird benötigt, da die Begin Zeile keine Aktion enthält. Vermutlich wäre es einfacher, wenn wir nur eine Zeile mit der Aktion hätten, aber das ist nun mal nicht vorgesehen z
und darum muss ich mich daran halten. Die Entwickler der Nebula Engine haben eben festgelegt, dass ich hier zwei Stromkabel für die Lampe brauche und dann muss ich auch zwei nehmen, auch wenn ich der Meinung bin, das eins ausreicht. Du musst dich beim Modden an die vorgeschriebene Syntax halten und kannst nicht deine eigene verwenden, nur weil sie dir sinnvoller erscheint. Ich gehe davon aus, dass sich die Entwickler etwas dabei gedacht haben, warum das so ist.
Zitieren
#39
Mit was hast du dann die SQL Datei geöffnet? Sag mir jetzt bitte nicht mit einem Editor.


   
Zitieren
#40
Was soll ich denn sonst antworten? Die sql Datei ist eine reine Textdatei, also öffnet man sie mit einem Texteditor. Unter Windows ist Notepad+ eine gute Wahl. Unterstützt auch Syntax Highlighting bei SQL Code. Das mit Windows ausgelieferte Notepad solltest du gleich wieder vergessen. Der kann gar nichts. ich persönliche bevorzuge den Editor Kate.
Zitieren




Benutzer, die gerade dieses Thema anschauen: 3 Gast/Gäste