Registrierung Häufig gestellte Fragen Suche Mitgliederliste Portal - Planet Skyrim.de Kalender Moderatoren und Administratoren Startseite
Morrowind&OblivionForum.de - PMM-Projects Network » The Elder Scrolls III: Morrowind » Morrowind Editor Help » Seelenfang-Event » Hallo Gast [registrieren|anmelden]
« Vorheriges Thema Nächstes Thema » Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Autor
Beitrag
Coxaqha
Bard




Dabei seit: Juli 2005
Geschlecht:
Herkunft: Schilda
Beiträge: 45

Coxaqha ist offline
  Seelenfang-EventAntwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Ich suche seit einigen Tagen verzweifelt nach einer Möglichkeit, den Vorgang des Seelenfangs per globalScript abzufragen. Alles bisher ausprobierte scheitert mehr oder weniger kläglich:

- OnPCSoulGemUse
Hab ich natürlich gleich als erstes probiert, funzt aber NUR bei Azura's Stern. Hm. Was passiert beim Seelenfang? Ein leerer Stein wird entfernt, ein voller Stein wird hinzugefügt.

- if ( player->RemoveItem/SoulGem, "Misc_SoulGem_Grand", 1 ) ; MW crasht
- if ( player->AddItem/Soulgem, "golden saint", Grand ) ; dto., alle Syntaxänderungen ohne Ergebnis (manchmal nölt der Compiler, wenn man gar zu großen Unsinn versucht).

Nächster Ansatz: Event-Sound abfragen. Zu diesem Zweck hab ich 'Soul Trap' von 'Mystik' nach 'Beschwörung' verschoben, was ohnehin sinnvoll ist, weil der PC diese Schule (fast) komplett nicht lernen darf. Nur leider weiß der DJ nichts davon und spielt immer schön 'mysticism hit' beim Seelenfangen...

Nun weiß ich nicht mehr, wonach ich fragen soll, hat vielleicht jemand eine Idee?

16.08.2005, 13:34 Profil von Füge  deiner Freunde-Liste hinzu Email an Coxaqha senden
GreyWanderer
Crusader



Dabei seit: Januar 2004
Geschlecht:
Herkunft: Cuiviénen
Beiträge: 465

GreyWanderer ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

  1. OnPCSoulgemUse wird sowieso nur true, wenn der Spieler den geladenen Seelenstein benutzt (zum Auffüllen oder zum Verzaubern).
  2. Das verwenden einer solcher Funktionen in einer Bedingung lässt das Spiel natürlich abstürzen, sie geben ja keine Werte zurück, sondern nehmen vielmehr welche an.
  3. Das mit dem Sound liegt daran, dass der Sound pro Zauber festgelegt ist, nicht pro Klasse. D.h. du müsstest dem Effekt manuell einen anderen Sound verpassen (der kann dann auch einzigartig sein, würde allerdings mit einigen Mods nicht funktionieren).
Zitat:
Ein leerer Stein wird entfernt, ein voller Stein wird hinzugefügt.
Gute Idee, könnte tatsächlich so sein. Wenn sich die ID des Seelenstein ändern würde, nicht nur die Reference. Aber ich fürchte, dem ist nicht so. Wenn man einem Seelenstein per CS eine Seele zuordnet, dann ändert man auch nur die Reference, nicht die ID. Die Funktion, um zu prüfen, wieviele Items einer ID ein NPC (oder Container) hat ist "GetItemCount" (schau im SfD nach).

Ach ja ... die Idee mit dem Sound funktioniert übrigens (bei einzigartigem Sound), der Sound wird nur wahrscheinlich zu spät kommen für was immer du vorhast.


__________________

Abenteuer Mittel Erde
     Please visit us!

Dieser Beitrag wurde von GreyWanderer am 16.08.2005, 14:14 Uhr editiert.

16.08.2005, 14:06 Profil von Füge  deiner Freunde-Liste hinzu Email an GreyWanderer senden
Coxaqha
Bard




Dabei seit: Juli 2005
Geschlecht:
Herkunft: Schilda
Beiträge: 45

Coxaqha ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Zitat:
2. Das verwenden einer solcher Funktionen in einer Bedingung lässt das Spiel natürlich abstürzen, sie geben ja keine Werte zurück, sondern nehmen vielmehr welche an.

Autsch! Aber Get/Mod/Set-___ sind doch auch Funktionen?? Das KANN gar nicht funzen? (player -> AddItem "Graue Haare", 10)

3. Yeah, danke für die Inspiration!!
Die Sounds und Visuals schienen anfangs geblockt zu sein, aber mit ein wenig Penetranz (und Aufmerksamkeit) ging es dann. Jetzt gehört 'Seelenfalle' mit allen Komponenten zur Schule Beschwörung, sauber! Aber da tut sich was neues auf: Um es wirklich Kugelsicher zu machen, müßte ich den Visual-Effekt abgreifen: 'VFX_SoulTrapHit'. Mal sehen ob 'GetEffect' auch für Visuals gilt...

Um mit geladenen Seelensteinen zu hantieren, hab ich mehrfach diese Syntax gefunden:
( player->AddSoulgem, "golden saint", Grand ) *mglw. noch mit ,1 für die Anzahl
Und ähnliche Syntax gilt beim abfragen, ob leere oder volle Steine vorhanden sind, aber das will ich ja gar nicht.
Gibt's denn wirklich keine Möglichkeit, Remove/AddItem abzufragen? (Frage zurückgezogen, sobald
[ if ( GetEffect, "VFX_SoulTrapHit" ) ]
funktioniert (vielleicht doch noch ein 'player ->' davorsetzen? NPCs benutzen es ja nicht..)

Vielen herzlichen Dank erstmal, seit Tagen das erste Land-in-Sicht.

Cox

16.08.2005, 15:09 Profil von Füge  deiner Freunde-Liste hinzu Email an Coxaqha senden
GreyWanderer
Crusader



Dabei seit: Januar 2004
Geschlecht:
Herkunft: Cuiviénen
Beiträge: 465

GreyWanderer ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Ich schrieb "solche Funktionen". Und Get/Mod/Set sind in der Tat Funktionen, aber versuch mal eine Funktion mit Mod/Set-Präfix in eine Bedingung einzubinden ... dann sollte genau das gleiche wie bei anderen (wie die oben genannten) Funktionen passieren, es sollte crashen.

Die "Get" Funktionen haben den Zweck, einen Wert aus dem Code/Speicher zu lesen ("holen") und diesen als Wert wieder auszugeben. Auch "OnActivate" und andere sind Funktionen, die den gleichen Zweck haben. Wenn man wissen will, welche Funktionen man so verwenden kann oder nicht hilft a) logisches Denken oder wenn das nicht hilft b) Scripting for Dummies.

Generell kann man sagen Funktionen mit Mod/Set/Add/Remove als Präfix kann man nicht abfragen.

Und wie ich schon sagte, du kannst dem Zaubereffekt einen einzigartigen Sound zuweisen, den dann wirklich nur der Soultrap-Effekt benutzt.

"GetEffect" fragt (wie im SfD beschrieben, sagt mal liest das eigentlich keiner?) nur ab, ob der Zaubereffekt auf dem Objekt liegt, und zwar durch eine Nummer. Eine Nummer, die festgelegt ist und nicht geändert werden kann. Dass "GetEffect" auch true wird, wenn der Spieler einen Zauber auf Jemand anderen wirkt, wage ich zu bezweifeln, ausgeschlossen ist es allerdings nicht. Trotzdem würde ich nicht darauf vertrauen.

Und wie ich schon sagte, kann man feststellen, wieviele (leere!?) Seelensteine der Spieler im Inventar hat mit "player->GetItemCount, Soulgem_ID". Dann gibt es noch die Funktion "OnPCAdd", die allerdings nur auf einzelne Objekte angewendet werden kann (also entweder per lokalem Script abgefragt werden muss oder aber das Ziel ist einzigartig und persisted).


__________________

Abenteuer Mittel Erde
     Please visit us!

16.08.2005, 16:17 Profil von Füge  deiner Freunde-Liste hinzu Email an GreyWanderer senden
Coxaqha
Bard




Dabei seit: Juli 2005
Geschlecht:
Herkunft: Schilda
Beiträge: 45

Coxaqha ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Ironie entdeckt...
...vielleicht bin ich ja ein Super-Dummie, aber auch in v8 schreibt GBGhan ziemlich ausführlich über viele Dinge, die mich grad nicht interessieren (dürfen), die meisten meiner spezielleren Interessen werden in Nebensätzen abgehandelt. Dann hab ich noch ständig geöffnet: TESCompendium und die beiden Pages von UESP. Ehrlich gesagt lese ich erst, durchsuche drei Foren und probier auch ziemlich viel erstmal aus, bevor ich eine Frage poste. Für Anfänger sind 'offensichtliche Dinge' nunmal relativ, und es ist ja auch längst nicht alles logisch. Ich finde es jedenfalls ziemlich unlogisch, daß ich nicht abfragen kann, ob mir gerade irgendein Script ein Attribut verändert oder etwas ins Inventar gelegt hat.

Wie auch immer, Deine Zweifel waren berechtigt.
if ( GetEffect, "VFX_SoulTrapHit" )
mit oder ohne 'player ->' wird zwar gespeichert und das Script mault auch nichts wie 'EXPRESSION', aber bewirken tut es letztends nichts. War trotzdem den Versuch wert, jetzt mach ich's mit dem Sound.

16.08.2005, 17:10 Profil von Füge  deiner Freunde-Liste hinzu Email an Coxaqha senden
Garak
Admin




Dabei seit: Juli 2002
Geschlecht:
Herkunft: Cardassia Prime
Beiträge: 9256

Garak ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

das crashproblem war ja erstmal, dass die Dinge, die innerhalb der If- bedingung stehen, am Ende einen Booleschen Wert annehmen müssen (also true oder false), keinen Float, keinen Integer, keinen Long und erst recht nicht void (also Funktionen, die gar keine Meldung zurückgeben)
gültig sind also im endeffekt boolsche variablen und deren logische Verknüpfungen, Vergleichsoperatoren ( ==, !=, >,< <=, >= ) und die gruppe der funktionen/variablen, die Bethesda (leider) mal so mal so implementiert haben: OnPCEquip, OnSoulgemUse, HasSoulgem, UsedOnMe...

was den Sound angeht, musst Du aufpassen, WER den sound abspielt - z.B. player bei den Castsounds, aber das jeweilige ziel bei den hit-sounds. Achtung: es gibt auch sounds, die gar kein adressierbares objekt abspielt - Skillraise zum Beispiel.


__________________
drei mal dürft ihr raten, wer grade seine Signatur geschrottet hat...geht aber wieder - allerdings solltet Ihr noch die Finger von den Avataren lassen

16.08.2005, 18:28 Profil von Füge  deiner Freunde-Liste hinzu Email an Garak senden Homepage von Garak Füge Garak in deine Contact-Liste ein
Coxaqha
Bard




Dabei seit: Juli 2005
Geschlecht:
Herkunft: Schilda
Beiträge: 45

Coxaqha ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Das war perfektes Timing, Garak. Bin gerade genau daran gescheitert: Der Sound war zu hören, aber der Trigger zog nicht an. Also muß ich den Sound auf ...Cast legen, nicht auf ...Hit.

Den oberen Absatz leg ich mir mal unter's Kopfkissen, damit ihn die Leute nicht sehen, die leicht zu entmutigen sind...

Danke


EDIT:
Na DAS ist ja nun blöd: Vom Item gibt's keinen Casting-Sound, aber sehr wohl einen Hit-Sound. Hab's gerade nochmal ausprobiert, ungestraft drei Seelen gefangen. Und nen Bolzen hat der verzauberte Dolch ja wohl genausowenig wie einen Area-Effekt...

Return?

Also gilt wieder die ursprüngliche Fragestellung: Wie frage ich verläßlich den Vorgang des Seelenfangs ab?

Dieser Beitrag wurde von Coxaqha am 16.08.2005, 19:04 Uhr editiert.

16.08.2005, 18:46 Profil von Füge  deiner Freunde-Liste hinzu Email an Coxaqha senden
Garak
Admin




Dabei seit: Juli 2002
Geschlecht:
Herkunft: Cardassia Prime
Beiträge: 9256

Garak ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

nein, Du kannst die Messagebox nicht abfangen, auch wenn Du Dich DemDingens nennst

wenn Du den Effekt auf einem Gegner abfangen wolltest, müsstets Du Voicetopic-Hit Dialoge für alle Kreaturen schreiben und von dort aus ein "halblokales" script starten, das per getteffect und gethealthGetratio das vorhandensein des seelenfallenzaubers zum todeszeitpunkt abfrägt - extrem viel Aufwand für so ne kleinigkeit, und mod-Kompatibel wäre die lösung auch nicht. Die Technik an sich wurde z.B. von GhanBuriGhan für Combat Moves und von Argent für Fists of Fire benutzt.


__________________
drei mal dürft ihr raten, wer grade seine Signatur geschrottet hat...geht aber wieder - allerdings solltet Ihr noch die Finger von den Avataren lassen

17.08.2005, 00:15 Profil von Füge  deiner Freunde-Liste hinzu Email an Garak senden Homepage von Garak Füge Garak in deine Contact-Liste ein
Coxaqha
Bard




Dabei seit: Juli 2005
Geschlecht:
Herkunft: Schilda
Beiträge: 45

Coxaqha ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Den Nick hab ich nur geändert, um nicht wegen 'explicit language' aus dem Mutterforum zu fliegen, Elim. Und jetzt hast Du mich Cocksucker genannt, ts.javascript:smilie('')


Die Idee, die Messagebox abzufragen, finde ich immer noch genial, das wär's doch wirklich gewesen...
Aber einen hab ich noch: Ich ersetze bei Seelenfalle den Hitsound durch meinen unique Sound und frage dann im Script JEDE (wertvolle) Creature ab, ob sie den Sound getriggert hat (wieso kann mein Char nicht einfach die Ohren aufmachen?). Die Frage ist halt, wieviele werden das, und kann ein globalScript das vertragen? Da weiß ich im Moment noch nicht so genau, was da auf mich zu kommt. Die bekannten Seelenträger sind ja nicht so schlimm: Staada, Vivec, die Dagoths etc. Wie sieht's aus mit den gelevelten Kreaturen, haben die jeweils eine feste ID, und die Werte werden dynamisch angepaßt? Oder wird eine spezielle ID errechnet/generiert? Die Arbeit würde ich nicht scheuen, aber als Wahrsager tauge ich nicht soviel.
Jedenfalls bilde ich mir ein, so GBG's 'Combat Moves' nicht in die Quere zu kommen. Selbst wenn jemand anders eine ähnliche Idee umgesetzt hätte, sollte da nichts Ärger machen, weil ja außer dem Sound und dem verschobenen Zauber alles nur in meinem Script stattfindet.

Apropos andere Mods, da gibt's ja einige, die meinem (sofern ich es jemals veröffentliche) ideologisch in die Quere kommen könnten. Bspw. das Teil, mit dem man auch humanoide Seelen fangen kann (brrr). Da hätte ich die Idee, zu überprüfen, ob das Script läuft und es dann in meinem zu stoppen. Wohl eine weitere Rechnung, die ich ohne Murphy gemacht habe...

Hm, wenn's nicht zuviel Mühe macht: *was* hat GBG für das Mod da gemacht? Klingt ja extrem.

+++
Das mit den Smilies hab ich noch nicht drauf...


EDIT:
Das wären dann 261 Creatures und 123 Leveled Creatures die in diese Abfrage hinein müßten. Kann/sollte ein globalScript das bewerkstelligen?

Dieser Beitrag wurde von Coxaqha am 17.08.2005, 11:36 Uhr editiert.

17.08.2005, 10:57 Profil von Füge  deiner Freunde-Liste hinzu Email an Coxaqha senden
Coxaqha
Bard




Dabei seit: Juli 2005
Geschlecht:
Herkunft: Schilda
Beiträge: 45

Coxaqha ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

(Smiley 'geplatzte Seifenblase')
Ich bin mir ja über einige Begrifflichkeiten nicht völlig im Klaren, aber ich fürchte, da besteht ein Zusammenhang zwischen diesem Versuch und der Unmöglichkeit, reservierte Zeichen in Variablen zu benutzen. Zwei Drittel aller leveled Creatures haben ein '+' oder '-' in der ID.

if ( "ex_ascadianisles_lev+0" -> GetSoundPlaying, "Cox_Seelenfang" )
InFixToPostFix Error
Syntax Error ... Miss Mached Quotes (Rechtschreibfehler?)
endif nicht gefunden!!!

Wenn ich die Cr in .._sleep ändere, funzt es allerdings auch nicht. Sieht für mich so aus, als dürfte ich ihn gar nicht nach diesen Viechern fragen.

Ich bin ja SOWAS von offen für alternative Vorschläge...

17.08.2005, 13:04 Profil von Füge  deiner Freunde-Liste hinzu Email an Coxaqha senden
Garak
Admin




Dabei seit: Juli 2002
Geschlecht:
Herkunft: Cardassia Prime
Beiträge: 9256

Garak ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Zitat:
Original von Coxaqha
Den Nick hab ich nur geändert, um nicht wegen 'explicit language' aus dem Mutterforum zu fliegen, Elim. Und jetzt hast Du mich Cocksucker genannt, ts.javascript:smilie('')




und damit willst Du einen stock-schwulen Ingenieur und Forenadmin schocken?? Wollen wir jetzt auszählen, wer damit mehr Erfahrung hat ?

Zitat:
Original von Coxaqha

Aber einen hab ich noch: Ich ersetze bei Seelenfalle den Hitsound durch meinen unique Sound und frage dann im Script JEDE (wertvolle) Creature ab, ob sie den Sound getriggert hat (wieso kann mein Char nicht einfach die Ohren aufmachen?). Die Frage ist halt, wieviele werden das, und kann ein globalScript das vertragen? Da weiß ich im Moment noch nicht so genau, was da auf mich zu kommt. Die bekannten Seelenträger sind ja nicht so schlimm: Staada, Vivec, die Dagoths etc.



so weit würde es noch funktionieren, da die nur ein mal vorkommen.


Zitat:
Original von Coxaqha
Wie sieht's aus mit den gelevelten Kreaturen, haben die jeweils eine feste ID, und die Werte werden dynamisch angepaßt? Oder wird eine spezielle ID errechnet/generiert? Die Arbeit würde ich nicht scheuen, aber als Wahrsager tauge ich nicht soviel.
Jedenfalls bilde ich mir ein, so GBG's 'Combat Moves' nicht in die Quere zu kommen. Selbst wenn jemand anders eine ähnliche Idee umgesetzt hätte, sollte da nichts Ärger machen, weil ja außer dem Sound und dem verschobenen Zauber alles nur in meinem Script stattfindet.


Im gegenteil, ich seh es als einzige möglichkeit für Dich an, den Combat moves in die quere zu kommen - es gibt keinen anderen weg, automatisch gespawnte Gegner mit nicht einzigartiger ID "von aussen" anzusprechen.
Zitat:
Original von Coxaqha
Apropos andere Mods, da gibt's ja einige, die meinem (sofern ich es jemals veröffentliche) ideologisch in die Quere kommen könnten. Bspw. das Teil, mit dem man auch humanoide Seelen fangen kann (brrr). Da hätte ich die Idee, zu überprüfen, ob das Script läuft und es dann in meinem zu stoppen. Wohl eine weitere Rechnung, die ich ohne Murphy gemacht habe...


nicht unbedingt. Du kannst ja ein "leeres" script mit dem selben Namen laufen lassen, das überschreibt das original, falls Dein pi später geladen wird. wenn nicht, ghast Du durch Dein "dummy" immernoch die Chance, einen Stopscript-befehl compiliert zu bekommen.
Zitat:
Original von Coxaqha
Hm, wenn's nicht zuviel Mühe macht: *was* hat GBG für das Mod da gemacht? Klingt ja extrem.


er hat in die Voice-Topics "hit" und "attack" startscriptbefehle gepackt, um damit lokalisierte globale scripte auf aktuellen Gegnern des spielers zu starten - wenn man das prinzip erst mal kapiert hat, ist es nicht schwer, das umzusetzen - in PMM/ ToN-RotSG benutz ich das ziemlich extensiv

Zitat:
Original von Coxaqha
EDIT:
Das wären dann 261 Creatures und 123 Leveled Creatures die in diese Abfrage hinein müßten. Kann/sollte ein globalScript das bewerkstelligen?



nein. Siehe oben. Du musst die einzelnen Referenzen ansprechen, nicht die definitionsID.


__________________
drei mal dürft ihr raten, wer grade seine Signatur geschrottet hat...geht aber wieder - allerdings solltet Ihr noch die Finger von den Avataren lassen

18.08.2005, 22:19 Profil von Füge  deiner Freunde-Liste hinzu Email an Garak senden Homepage von Garak Füge Garak in deine Contact-Liste ein
  « Vorheriges Thema Nächstes Thema »
Neues Thema erstellen Antwort erstellen
Gehe zu:

Design by: Garak - Powered by: Burning Board 1.1.1 © 2001 WoltLab GbR