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.
So das ganze aml erfolgreich auch Sternenpaladin Cross getestet, gibt nur ein kleines Problem. Wenn man Sie, nach der Wiederbelebung, anspricht auf Gegenstände tauschen, öffnet sich nicht ihr Inventa. Man muss sie erst feuern und dann wieder einstellen. Aber dann sind alle ihr gegebenen Gegenstände futsch!
Denke irgendwas muss an den TeammateContainer gemacht werden.
Hier mal das Skript :
Zitat
scn StarPaladinCrossSCRIPT
short HasBeenHired
short WeaponOut
short CombatStyleRanged
short CombatStyleMelee
short IsFollowingDefault
short IsFollowingShort
short IsFollowingLong
short Waiting
short DoOnce
short dead
if ( Followers.StarPaladinCrossHired == 1 )
;set Followers.PlayerHasFollower to 0
;set Followers.StarPaladinCrossHired to 0
ShowMessage FollowerMessageDeadCrosstx
set dead to 1
endif
END
BEGIN OnActivate
if dead == 1
if player.GetItemCount Stimpak >= 10
player.removeitem stimpak 10
StarPaladinCrossref.resurrect
Showmessage FollowerMessageDeadCrossResurrect
set dead to 0
elseif player.GetItemCount Stimpak == 0
activate
endif
elseif dead == 0
activate
endif
probier es mal mit
StarPaladinCrossref.resurrect 1
und weiterhin solltest du
elseif player.GetItemCount Stimpak == 0 auf
elseif player.GetItemCount Stimpak <= 9 ändern.
Edit: http://geck.bethsoft.com/index.php/SetPlayerTeammate
Da das Teammateflag, welches Voraussetzung für die Benutzung des TeammateContainers ist, beim Tod automatisch gelöscht wird, wäre es sicher angebracht, dieses nach dem Resurrecten wieder zu aktivieren.
Habe ich zu diesem Zeitpunkt auch nicht gewußt, da der Wiederbelebungsteil bei mir nur auf Dogmeat liegt.
So funzt das ganze, muss nur noch irgendwie reinkriegen, das die wiederbelebung nicht im Kampf funzt.
Befehl ist
isincombat
Zitat
BEGIN OnDeath
if ( Followers.JerichoHired == 1 )
;set Followers.PlayerHasFollower to 0
;set Followers.JerichoHired to 0
ShowMessage FollowerMessageDeadJerichox
set dead to 1
endif
END
BEGIN OnActivate
if player.IsSneaking
if dead == 1
if player.GetItemCount Stimpak >= 10
player.removeitem stimpak 10
Jerichoref.resurrect
Jerichoref.SetPlayerTeammate 1
Showmessage FollowerMessageDeadJerichoResurrect
set dead to 0
elseif player.GetItemCount Stimpak <= 9
activate
endif
elseif player.issneaking 0
activate
endif
elseif activate
endif
elseif dead == 0
activate
endif
END
...
EDIT:
Mod funzt jetzt, daher.....:
UPDATE - DBCO
Folgende Dinge wurden ergänzt:
- DBCO - Begleiter wiederbeleben.esp
Nun ist es ganz einfach möglich, nach Tod eines Begleiters diesen mit 10 Stimpaks wiederzubeleben (bzw. 5 Kernspaltungsbatterien bei RL3)
Dazu einfach im Schleichmodus den toten Begleiter aktivieren.
VORSICHT ! !
Nach der Wiederbelebung hat der Begleiter alle Gegensätnde "verloren", die ihr ihn evtl. gegeben habt. Also vorher alles entwenden bei normaler Aktivierung des Leichnams!
BESONDEREN DANK AN SirTroy & MODIFIED für das exzellente Skript ! ! !
- DBCO - Neue Dienste für die Begleiter.esp
Butch -> Frisur ändern
Jericho -> Gesicht ändern
Sternenpaladin Cross -> Reparatur
RL3 -> Reparatur
Weitere folgen...
-------------------------
OPTIONAL - NEUE BEGLEITER
-------------------------
(Diese neuen Begleiter wurden optimal auf DBCO abestimmt)