[Modding] Scripting Fragen

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
11.616
Hm, sie hat auf jeden Fall die gleiche scriptvariable und die gleiche dlg. Das geht afaik (aber da kann ich mich irren) nur, wenn es dieselbe ist?
Das können trotzdem andere cres sein. Iat ja bei jedem NPC so: da gibt es jeweils mehrere cres mit unterschiedlichem Namen (Nummer) aber alle haben dieselbe DV und dlg. Sobald die cre vespawnt wurde inzeressiert der cre-Name ja nicht mehr. Deshalb muss eine cre jaauch mit dem cre-Namen gespawnt werden.
 

Maus

Senior Member
Registriert
07.08.2002
Beiträge
8.634
Wichtiger Hinweis für alle: Für Variablen-Namen keine $ oder § verwenden. Das geht in die Hose und macht Probleme. Von daher sollte man die Sonderzeichen auch nicht für Autoren-Tags verwenden... Juchhu, mein neuer Tag ist übrigens: M7 (werde ich jetzt noch eine Menge zu ändern haben...)

Ich ergänze mal noch: In Dialogen sind die Sonderzeichen kein Problem, da funktioniert alles. Aber in Area-Skripten und CutScenes in EE games hatte ich da ein Problem bei GLOBAL.
 
Zuletzt bearbeitet:

Maus

Senior Member
Registriert
07.08.2002
Beiträge
8.634
Habe gerade ein kleines Problem:
Ich möchte über den Effekt ModifyProficiencies (233) Waffenfertigkeiten einer Kreatur geben. Aber ich kann dann beim Effekt bei #stars die Anzahl der Waffenpunkte im NI nicht ändern. Ich kann den Value ändern und update value klicken, aber es ändert sich nichts.

Und den Wert über die tp2 setzen dürfte auch nicht funktionieren, weil ich da ja nur auf die cre und ihre Werte Zugriff habe, aber nicht auf den Wert innerhalb des Effekts; und global den Effekt ändern will ich ja mal gar nicht.

Andere Tool suchen, um da was zu ändern? EEKeeper?
Ok, über den EEKeeper ging es.

Aber kennt jemand das Problem bei NI? Sollte ich das melden?
 

Taimon

Infinity Engineer
Registriert
25.11.2001
Beiträge
1.451
Ich möchte über den Effekt ModifyProficiencies (233) Waffenfertigkeiten einer Kreatur geben. Aber ich kann dann beim Effekt bei #stars die Anzahl der Waffenpunkte im NI nicht ändern. Ich kann den Value ändern und update value klicken, aber es ändert sich nichts.
Geht bei mir. Allerdings muss man nach dem Ändern der Zahl erst den Eintrag mit Return bestätigen und dann "Update Value" klicken.
Und den Wert über die tp2 setzen dürfte auch nicht funktionieren, weil ich da ja nur auf die cre und ihre Werte Zugriff habe, aber nicht auf den Wert innerhalb des Effekts; und global den Effekt ändern will ich ja mal gar nicht.
Die Aussage verstehe ich nicht ganz. Du kannst mit WeiDU alles patchen, auch einen Effekt in der CRE.
Und was meinst du mit "global den Effekt ändern"?
 

Maus

Senior Member
Registriert
07.08.2002
Beiträge
8.634
Stimmt. Mit Return bestätigen, dann funktioniert es. Hatte ich wohl vorher nicht gemacht (wenn du mich gefragt hättest, hätte ich behauptet, dass ich das auch probiert habe).

Hm, also der Effekt liegt auf 58c. Wenn ich dann WRITE 58c benutze, dann kann ich doch nur einen anderen Effekt dahin schreiben? Also irgendwas in ~~. Aber ich kann doch nicht auf die Inhalte des Effektes zugreifen und diese verändern?

Einen Effekt selbst ändern ist klar, aber dann gilt das für alle Elemente, die diesen Effekt benutzen (s. den Bug mit dem geänderten Kampfrausch, den das ArtisanKitPack verursacht; im Kit geändert und auch an allen anderen Stellen, an denen der Effekt verwendet wird...).
 

Taimon

Infinity Engineer
Registriert
25.11.2001
Beiträge
1.451
Hm, also der Effekt liegt auf 58c. Wenn ich dann WRITE 58c benutze, dann kann ich doch nur einen anderen Effekt dahin schreiben? Also irgendwas in ~~. Aber ich kann doch nicht auf die Inhalte des Effektes zugreifen und diese verändern?
Das Dateiformat ist so, dass das Offset für die Effekte an der Stelle 0x02c4 steht und die Anzahl an 0x02c8.
Wenn du einen bestehenden Effekt modifizieren willst, iterierst du über alle Effekte und suchst den richtigen raus. (Da gibt es sicher einige Beispiele in bestehenden Mods.)
Solltest du nur einen neuen Effekt hinzufügen wollen, gibt es das Makro ADD_CRE_EFFECT.

Einen Effekt selbst ändern ist klar, aber dann gilt das für alle Elemente, die diesen Effekt benutzen
Ich denke, hier gibt es ein Missverständnis.
Um einen Effekt (Opcode) zu ändern, müsstest du direkt die Engine patchen.
Ich denke du beziehst dich vielleicht auf die EFF-Dateien. Aber die werden vergleichsweise selten genutzt.
Wenn du in deinem Beispiel den Opcode 233 in einem CRE-Effekt referenzierst, ist keine EFF-Datei involviert.
 

Maus

Senior Member
Registriert
07.08.2002
Beiträge
8.634
Das Dateiformat ist so, dass das Offset für die Effekte an der Stelle 0x02c4 steht und die Anzahl an 0x02c8.
hm, und woher weiß ich das, wenn ich nicht konkret dich frage? Kann man das irgendwo nachschauen oder muss man halt wirklich die Struktur inkl. der Hex-Werte des Formats kennen?

Weil IESDP sagt:
0x02c4 2 (word) Saved orientation


Und ich habe Zweifel, dass ich eine Mod finde, die so etwas ändert...
 

Maus

Senior Member
Registriert
07.08.2002
Beiträge
8.634
Ich hatte die Version 9 angeschaut. So nach dem Motto: nimm die aktuellste. Aber korrekt, ich hätte die V1.0 nehmen sollen, weil die steht ja auch in den cre-Files drin.
 

Taimon

Infinity Engineer
Registriert
25.11.2001
Beiträge
1.451
Und ich habe Zweifel, dass ich eine Mod finde, die so etwas ändert...
Ich bin mir relativ sicher, dass sowohl das BG2-Fixpack als auch SCS Effekte in CREs patchen.
Kann natürlich sein, dass das irgendwie gekapselt ist, aber du solltest da schon fündig werden.
 

Maus

Senior Member
Registriert
07.08.2002
Beiträge
8.634
0x40DF BeenInParty(S:Name*)
Returns true if the specified creature has been in the party at any point.

Hat jemand das schon mal ausprobiert? Nach meiner Logik sollte das nur mit cre funktionieren, die in GAM gespeichert sind, oder? Und wenn das funktionieren würde, könnte man das ein oder andere Skript schon einfacher schreiben...
 

Taimon

Infinity Engineer
Registriert
25.11.2001
Beiträge
1.451
Den Trigger gibt es nur in den EEs, oder?
In der ToB-Engine ist der letzte Trigger 0x40DB InWatchersKeep().
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
11.616
BeenInParty() gibt's nur in der EE, und funktioniert (nur) für NPCs, die mal in der Gruppe waren. Soweit ich das verstanden habe, sind NPCs, die mal in der Gruppe waren, auch in der GAM. Jedenfalls muss man (über Skript eingefügte Mod-)NPCs nur über MakeGlobal() global machen, solange sie noch nicht in der Gruppe waren. Danach sind sie es auch so.
 

Genwa

Betrachter
Registriert
08.01.2018
Beiträge
300
Probiert + Funktioniert.
 
Zuletzt bearbeitet:

Genwa

Betrachter
Registriert
08.01.2018
Beiträge
300
Kennt jemand die Bezeichnung der ".bam"s von Schleichen, Fallen stellen und Taschendiebstahl?
 

Maus

Senior Member
Registriert
07.08.2002
Beiträge
8.634
Mal eine Frage: wer genau ist "Player1"? Ist das immer der HC oder der Charakter, der sozusagen im Line-Up oben steht?

Ich dachte der HC, aber nachdem ich ein komisches Skript und seine Auswirkung im Spiel gesehen habe, bin ich mir da nicht mehr so sicher...

Die anderen Player wären ja dann entweder auch nach Line-Up benannt oder nach Zeitpunkt der Aufnahme. Im letzteren Fall würde sich das aber immer mal wieder ändern, wenn man jemanden rauswirft, richtig?
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
11.616
Ist das immer der HC
Ja.
Die PlayerX sind ja vergeben nach der zeitlichen Reihenfolge, in der die NPCs der Grupe beigetreten sind. Wobei das neu gemischt wird, wenn einer entlassen wird (und dann später wieder aufgenommen wird). Daher bleibt der HC immer Player1.
nach Zeitpunkt der Aufnahme. Im letzteren Fall würde sich das aber immer mal wieder ändern, wenn man jemanden rauswirft, richtig?
Genau.
Was für Probleme bzw. seltsames Verhalten hattest Du denn?
 

Maus

Senior Member
Registriert
07.08.2002
Beiträge
8.634
Ninja-Spawn bei Aura. Die Trigger-Variable wird bei Dialogbeginn gesetzt und nicht am Ende. Die Ninjas werden dann off-screen für Player1 gespawnt mit einem 6-Runden-Timer (alle 6 Runden eine neue Gruppe). Dadurch spawnen die Gott weiß wo.

Die Quest geht weiter, wenn der CombatCounter nach den Spawns 0 ist. Aber da laufen immer noch jede Menge Ninjas rum. Manchmal prügeln die sich auch noch mit "innocent" Personen... ist schon strange. Wenn Player1 jetzt der "vordere" Char wäre, dann könnte man überlegen, dass man vielleicht immer wieder in die Gruppen "reinläuft". Aber so ist das ein ziemliches Tohuwabohu und deckt sich mit meiner ingame Erfahrung... Dachte zuerst schon, da wäre was kaputt, weil keine Gegner spawnen (ist ja auch noch ein 10s Wait drin... weil ja Trigger am Dialoganfang...). Vor allem weil halt der Gesprächspartner von neutral zu ally wird und ich dann eigentlich erwarte, dass etwas passiert. Wenn die Gruppe zügig läuft, gibt es dann gar keinen Kampf... (ich hab die Stelle ein paar Mal gespielt).

Ach ja, der neue ally-Partner versucht dann immer Position 7 einzunehmen und kabbelt sich dann mit Grey um den Platz...

An der Stelle ist auch der off-screen Spawn nicht hilfreich, weil die Area eng ist (Unterkeller in BG City). Die Skripte sind auch recht interessant (eines ist das von Husam) und die dlg nicht existent bei den Ninjas...

edit: ich frage mich auch immer, wie man hier sauber schauen kann, wann der Kampf vorbei ist. So funktioniert es halt aber überhaupt nicht... Eigentlich ist vor allem die CreateCreatureObjectOffScreen das Problem. Wurde wohl so gewählt, dass die sich noch unsichtbar machen können (sind wohl Shadowdancer), aber ist nicht hilfreich und ich meine dass Shadowdancer sich ja immer im Schatten Verstecken können, oder? Von daher könnte man die auch direkt in die Gruppe reinspawnen...
 
Zuletzt bearbeitet:

Acifer

Senior Member
Registriert
27.04.2019
Beiträge
1.736
Die anderen Player wären ja dann entweder auch nach Line-Up benannt oder nach Zeitpunkt der Aufnahme. Im letzteren Fall würde sich das aber immer mal wieder ändern, wenn man jemanden rauswirft, richtig?
Wenn Du nach der Reihenfolge des Party-Slots gehen möchtest, kannst Du Player1Fill - Player6Fill nehmen. Ist ganz hilfreich, um Spieler, die ihre schwächsten Gruppenmitglieder in Slot6 stecken, etwas ins Schwitzen zu bringen und die Formation aufzureißen. ;)
 

Maus

Senior Member
Registriert
07.08.2002
Beiträge
8.634
Bei mir ist der schwächste immer in Slot5, weil von hinten kommt ja öfter was. Bei Mods ziele ich eher auf Magier (MAGE_ALL) oder ähnliches... ist witziger :D
 
Oben