Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Script zum wechseln des Gebietes
#1
Hat irgendwer Ahnung von SQL? Also hat die Datenbank Sprache gelernt?

Wäre sehr freundlich, falls mir wer sagen kann, durch welchem Script im Spiel der Gebietswechsel durchgeführt werden kann.

So könnte ich mit ein paar Tricks - Gegenstände im Inventar, jederzeit das Gebiet wechseln. 

Genauer gesagt durchs benutzen des Gegenstandes, weil jeder Gegenstand ja in der Datenbank einen Script ausführt bei der Benutzung
Zitieren
#2
Oh, Transversalis Teleport-Artefakte. Da bin ich mal gespannt.
Zitieren
#3
Die Scripts laufen leider über SQL direkt. Deswegen kommt man ohne SQL Programmierer bzw. der die SQL Prammierersprache beherrscht, nicht weit

Die einzige Person die, die SQL Sprache beherrscht scheint hier im Forum Lord Demon zu sein. Aber er/sie scheint ja inaktiv in diesem Forum zu sein.

Also solange er sich dazu nicht meldet, solange wird das auch nichts werden mit dem Teleporter Artefakt/Stein oder wie man es halt nennen möchte.


Ich wäre ihn jedenfalls aus meiner Sicht her sehr dankbar, falls er hier weiter helfen könnte



Natürlich sind in der Datenbank auch alle Scripts hinterlegt. Leider befinden sich ALLE Scripts in EINER EINZIGEN Tabelle. Die Tabelle hat 28.000 Seiten. Und dann müsste man, ohne SQL Kenntnissen, auch noch jede Seite entziffern ob sie vermutlich der Script zum teleportieren ist bzw. zum Gebietswechsel.


Also ohne Lord Demon wird das hier nichts
Zitieren
#4
Um das Gebiet zu wechseln, wird ein Statement mit einer LoadLocation Anweisung benötigt. Außerdem ein EntryPoint in dem Gebiet, das geladen werden soll. Dann wird noch ein ActionScript benötigt, das das Statement aufruft und zum Schluss noch ein Trigger oder auch ein beliebiger Gegenstand, mit dem das ActionScript aufgerufen wird. Wenn ich zum Testen Gebietswechsel brauchte, habe ich dafür immer eine Truhe gewählt.

Das ist jetzt die Kurzfassung wie es funktioniert. Ich kann aber auch gerne mal ein konkretes Beispiel mit den dazugehörigen Anweisungen geben, wenn gewünscht.
Zitieren
#5
Als Ressource fürs Forum hier wäre es ziemlich cool, mal ein konkretes Beispiel zu haben, denke ich.

Vielleicht ja auch für dich selbst als Doku. :)
Zitieren
#6
(05.12.2023, 10:29)Lord Demon schrieb: Um das Gebiet zu wechseln, wird ein Statement mit einer LoadLocation Anweisung benötigt. Außerdem ein EntryPoint in dem Gebiet, das geladen werden soll. Dann wird noch ein ActionScript benötigt, das das Statement aufruft und zum Schluss noch ein Trigger oder auch ein beliebiger Gegenstand, mit dem das ActionScript aufgerufen wird. Wenn ich zum Testen Gebietswechsel brauchte, habe ich dafür immer eine Truhe gewählt.

Das ist jetzt die Kurzfassung wie es funktioniert. Ich kann aber auch gerne mal ein konkretes Beispiel mit den dazugehörigen Anweisungen geben, wenn gewünscht.

Ein Beispiel wäre schon toll. Damit ich mir ein besseres Bild in meinem Gedanken davon machen kann
Zitieren
#7
(05.12.2023, 11:17)aeyol schrieb: Als Ressource fürs Forum hier wäre es ziemlich cool, mal ein konkretes Beispiel zu haben, denke ich.

Ja, denke ich auch.

(05.12.2023, 11:17)aeyol schrieb: Vielleicht ja auch für dich selbst als Doku. :)

Für mich selbst brauche ich das eigentlich nicht als Doku. Ich habe noch alle Dateien, die ich in den letzten 13 jahren im Zusammenhang mit Drakensang Modding angelegt habe. Und das ist eine ganze Menge. :) 

Hier das Beispiel:

Wie schon gesagt wird zunächst ein Auslöser für das Script benötigt. Ich habe hier einfach eine Truhe als StateObject verwendet. Das kann aber auch eine Dialogzeile (wie beim Wechsel zu Nadoret bei Nacht) oder ein Trigger sein.

Code:
INSERT INTO "_Instance_StateObject" VALUES(X'341F072CA919934588FF4F16FCAA0B10','|Level|Objects|StateObject|locr01_eingang_schlucht','locr01_nadoret','',X'458D753F00000000A2C790BE00000000000000000000803F0000000000000000A2C7903E00000000458D753F000000004CC3D7C2345AB13FF45984C20000803F','locr01_eingang_schlucht','Geheimeingang Nadoret tiefer Wald zum Schloss','stateobjects/chest_truhe_01','stateobjects/chest_truhe_01','Environment','locr01_eingang_schlucht','','','on:Use:load_location_example.xml',1,0,'closed','',5,1,'Nehmen',0,0,'','icons/transparent','',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);

In die Spalte ScriptOverride wird das ActionSript mit einem vorangestellten on:Use: eingetragen. Außerdem muss die Spalte CanUse den Wert 1 haben. Das macht einen Gegenstand erst benutzbar.

Die Truhe steht übrigens in Nadoret, links neben dem Eingang zur Kaserne.

Dann das ActionScript.


Code:
INSERT INTO "_Scripts_ActionScripts" VALUES('load_location_example.xml',X'BEC997D5A30D84698CA1C03713DD4F7D',X'574A6B1B70DACE95B9CE4AD774E7D24B');

Der Name für das Script ist frei wählbar. er sollte natürlich so gewählt werden, dass man auch Jahre später noch weiß, was das Script macht. :) Außerdem muss der Name eindeutig sein und darf keine Umlaute enthalten.

Das Script ruft dann das Statement auf, das die Anweisung zum Gebietswechsel enthält.

Code:
INSERT INTO "_Scripts_Statements" VALUES(X'BEC997D5A30D84698CA1C03713DD4F7C','Action','LoadLocation location="locr05_schloss_schlucht" entry="locr05_entry_start" actionSelection="script,quest,dialog" seCategory="all,world,game"; ',X'574A6B1B70DACE95B9CE4AD774E7D24B');

INSERT INTO "_Scripts_Statements" VALUES(X'BEC997D5A30D84698CA1C03713DD4F7D','Begin','d597c9be-0da3-6984-8ca1-c03713dd4f7c',X'574A6B1B70DACE95B9CE4AD774E7D24B');

ActionScript und Statement müssen in die statica1.db4 eingetragen werden, die Truhe in ein beliebiges Savegame.
Zitieren
#8
Hab den Script mal auf ein Item geschrieben. Funktioniert alles, leider verschwindet nach der Teleportation das Item aus dem Inventar. Kann man das verhindern? Bin nicht so der "Truhen Type". Mir ist es lieber die Gegenstände im Inventar zu haben, um jederzeit das Gebiet zu wechseln.


SQL Anweisung für das neue Item

Code:
INSERT INTO "_Template_Book" VALUES ("Teleporter Stein","Teleporter Stein","Teleporter Stein","Teleporter Stein","items_props/item_schriftrolle_standard","items_props/item_schriftrolle_standard","Teleporter Stein","1","5","1","1","1","icons/special_text_brief_spieler","0","0.20000000298023224","Nehmen","preset_book.xml","on:Use:load_location_example.xml","","NONE","");



Text für das neue Item. Damit dort auch "Teleporter Stein" steht

localea1.db4 Datenbank

Code:
INSERT INTO "_Locale" VALUES ("Teleporter Stein","Teleporter Stein");
Zitieren
#9
Keine Ahnung, habe ich noch nie ausprobiert. Schau doch mal im Savegame nach wohin das Buch nach der Benutzung verschwunden ist.
Zitieren
#10
Die Truhen sind schon in Ordnung für mich. Das Buch ging wahrscheinlich dort hin, wo auch zb. ein benutzter Heiltrank hingeht. Wahrscheinlich wird der dabei automatisch gelöscht. Das wäre jetzt wahrscheinlich extrem viel Aufwand. Hauptsache man kommt von Ort zu Ort
Zitieren
#11
Kann schon sein, dass es gelöscht wurde. Ich hätte auch kein Buch sondern ein Item dafür angelegt. Wie schon gesagt, wenn es nicht gelöscht wurde, muss ein eintrag im Svegame dafür vorhanden sein.
Zitieren
#12
Hatte deswegen eigentlich extra ein Buch genommen. Hab noch nie erlebt, dass im Spiel ein Buch aus dem Inventar verschwindet beim benutzen. Items wie bei Tränken und so ist ja normal. War eigentlich gezielt gedacht
Zitieren




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