Bastle gerade an einen plugIn, mit deren Hilfe man tote Begleiter wiederbeleben kann.
Sobald man den "DBCO Defibrillator" anzieht, soll die Möglichkeit bestehen, wenn man tote Begleiter "aktiviert", diese mit 10 Stimpaks wiederzubeleben. (placeatme)
Dabei soll im Skript geprüft werden, (anhand einer form list etc.) ob das zu aktivierende ein (toter) Begleiter ist, und zudem darf man sich nicht im Kampf befinden.
Das der Gegenstand im Inventar bei Start abgelegt wird, hat schon geklappt..
Hier mal die bereits gemoddete esp für "Skripter" (NICHT SPIELBAR!!!!!)
Ob der Actor tod ist oder nicht prüfst du mit GetDead (0 ist lebend, 1 ist Tod)
Wiederbeleben tut man sie mit Resurrect 1 (ohne 1 würden sie verschwinden und komplett neu erscheinen, ansonsten steht der Begleiter auf)
RemoveItem StimpakID is klar. Da die Begleiter ja in der Welt stehen müsstest du denen ne Reference zuweisen und Persitent Reference aktivieren (Falls net schon ist)
Um zu überprüfen ob der Player den Defibrilator anhat, musst du auf den Gegenstand das Script legen und der Block mit begin OnEquip beginnen.
Wie genau du das machen willst musst du entscheiden.
Achja und das man sich nicht im Kampf befindet, überprüfste mit Player.IsInCombat (0 = nicht im Kampf; 1 = Im Kampf)
Und PlaceAtMe solltest du lieber nicht verwenden, da sonst der Save korrupt werden kann, da er immer voller wird. Is so ein Bug der Funktion, deswegen lieber MoveTo nutzen.
--
If you're not too great at construction - don't worry! You can place a variety of characters in silly positions. Ihr glaubts mir nicht? Klick
Ob der Actor tod ist oder nicht prüfst du mit GetDead (0 ist lebend, 1 ist Tod)
Wiederbeleben tut man sie mit Resurrect 1 (ohne 1 würden sie verschwinden und komplett neu erscheinen, ansonsten steht der Begleiter auf)
RemoveItem StimpakID is klar. Da die Begleiter ja in der Welt stehen müsstest du denen ne Reference zuweisen und Persitent Reference aktivieren (Falls net schon ist)
Um zu überprüfen ob der Player den Defibrilator anhat, musst du auf den Gegenstand das Script legen und der Block mit begin OnEquip beginnen.
Wie genau du das machen willst musst du entscheiden.
Achja und das man sich nicht im Kampf befindet, überprüfste mit Player.IsInCombat (0 = nicht im Kampf; 1 = Im Kampf)
Und PlaceAtMe solltest du lieber nicht verwenden, da sonst der Save korrupt werden kann, da er immer voller wird. Is so ein Bug der Funktion, deswegen lieber MoveTo nutzen.
...
begin onequip ist bereits erledigt....
aber die frage ist:
wie kann ich schreiben im skript:
wenn der spieler folgenden NPC aktiviert (wie aktivieren im skript formulieren?), dann....
- ist der tot, dann...
- ist er einer meiner begleiter, dann...
- wenn ja, dann ressurect....
- usw.
"kurzekleines" beispiel wäre super! hab zwar etwas erfahrung in programmierung, aber andere "sprachen"
Warum so kompliziert und wieder an irgendwelche zusätzlichen Items außer Stimpacks gebunden ?
Erweitere doch einfach die Skripte, welche auf den Begleitern selbst liegen und mache eine neue Message.
Gute Idee! Danke!
Das Sktipt funktioniert aber leider so nicht.
Sobald ich das auf Dogmeat lege, bzw. erweitere lässt sich Dogmeat nicht mehr ansprechen laso keine Dialoge mehr. Und das Script funzt auch beim tot nicht.
Musste was abändern, sieht jetzt so aus:
Zitat
BEGIN OnActivate
if dogmeatref.GetDead 1
Player.IsInCombat 0
if player.GetItemCount Stimpak >= 10
player.removeitem stimpak 10
dogmeatref.resurrect
Showmessage FollowerMessageDeadDogmeatResurrect
set dead to 0
elseif player.GetItemCount Stimpak <= 9
activate
endif
elseif dogmeatref.GetDead 0
activate
endif
END
...
Das sich Doggy nicht ansprechen lässt, hängt wohl mit Begin on Activate zusammen oder?
im Skript von Dogmeat werden bei seinem Tod die FollowerVariablen wieder auf 0 gesetzt deshalb triggern auch die Dialogoptionen nicht mehr. Dies muß natürlich im OnDeath Block bspw. mit einem Semikolon unterbunden werden.
Das komplette Script (nur mit einem Stimpack) und einer anderen OnDeath Message.