Archiv verlassen und diese Seite im Standarddesign anzeigen : Wiederbelebungsskript
darth bane
15.03.2009, 18:05
BRAUCHE HILFE!
Folgende Sache:
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!!!!!)
DOWNLOAD (http://uploaded.to/?id=f3k21g)
Wäre super wenn jemand vlt. anhand eines Begleiters mir ein Beispielskript machen könnte oder ähnliche Hilfestellungen.
Danke im voraus.
dein postkasten is voll :rolleyes:
naja, ich wolte dir eigentlich per pn schreiben das ichs mir anschaue sobald ich mit meinen Visionenscripts fertig bin
darth bane
15.03.2009, 19:15
dein postkasten is voll :rolleyes:
naja, ich wolte dir eigentlich per pn schreiben das ichs mir anschaue sobald ich mit meinen Visionenscripts fertig bin
ohhh..jetzt nicht mehr :D
bin über jede hilfe dankbar.
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.
darth bane
15.03.2009, 20:28
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"
MODIFIED
16.03.2009, 08:44
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.
Beispiel dogmeat
BEGIN OnActivate
if dead == 1
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 dead == 0
activate
endif
END
darth bane
16.03.2009, 10:15
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:
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?
http://www.globalgameport.com/forumdisplay.php?f=313
eigentlich nicht, wenn ich nen toten Begleiter per Cheat wiederbelebe, kann ich die normal auch nicht wieder ansprechen :/
versuchs mal mit "dogmeatref.resurrect 1" anstelle von "dogmeatref.resurrect"
MODIFIED
16.03.2009, 11:23
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.
scn DogmeatSCRIPT
;Follower Variables
short HasBeenHired
short WeaponOut
short CombatStyleRanged
short CombatStyleMelee
short IsFollowingDefault
short IsFollowingShort
short IsFollowingLong
short Waiting
short dead
short break
;Dogmeat Variables
short Find ;0 = not finding, 1 = searching, 2 = found and should now return
short FindAmmo
short FindChems
short FindWeapons
short FindFood
BEGIN OnStartCombat Player
set Followers.DogmeatHired to 0
set Followers.DogmeatFired to 1
set DogmeatREF.Waiting to 0
DogmeatREF.SetPlayerTeammate 0
DogmeatREF.RemoveFromFaction FollowerFaction
END
BEGIN OnCombatEND
if ( GetPlayerTeammate == 1 )
resethealth
restoreav perceptioncondition 100
restoreav endurancecondition 100
restoreav leftattackcondition 100
restoreav leftmobilitycondition 100
restoreav rightattackcondition 100
restoreav rightmobilitycondition 100
endif
END
BEGIN OnDeath
if ( Followers.DogmeatHired == 1 || Followers.DogmeatFired == 1 )
;set Followers.PlayerHasFollower to 0
;set Followers.DogmeatHired to 0
ShowMessage FollowerMessageDeadDogmeatx
set dead to 1
endif
END
BEGIN OnActivate
if dead == 1
if player.GetItemCount Stimpak >= 1
player.removeitem stimpak 1
dogmeatref.resurrect
Showmessage FollowerMessageDeadDogmeatResurrect
set dead to 0
elseif player.GetItemCount Stimpak == 0
activate
endif
elseif dead == 0
activate
endif
END
darth bane
16.03.2009, 11:50
Funzt immer noch nicht, selbst getestet?
EDIT:
Keine Ahnung warum, aber...
Jetzt funzt es!!!!!
Danke, werde jetzt alle Begleiter daran anpassen, und du wirst in Credits ganz besonders erwähnt!!!!!!
MODIFIED
16.03.2009, 11:52
ja, das script ist bei mir aktiv und funktioniert.
darth bane
16.03.2009, 12:15
ja, das script ist bei mir aktiv und funktioniert.
Jo danke!
Aber die ganze geschichte an einen Gegenstand zu binden wäre zu kompliziert und umständlich oder?
darth bane
16.03.2009, 12:47
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 :
scn StarPaladinCrossSCRIPT
short HasBeenHired
short WeaponOut
short CombatStyleRanged
short CombatStyleMelee
short IsFollowingDefault
short IsFollowingShort
short IsFollowingLong
short Waiting
short DoOnce
short dead
BEGIN OnCombatEND
if ( GetPlayerTeammate == 1 )
resethealth
restoreav perceptioncondition 100
restoreav endurancecondition 100
restoreav leftattackcondition 100
restoreav leftmobilitycondition 100
restoreav rightattackcondition 100
restoreav rightmobilitycondition 100
endif
END
BEGIN OnDeath
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
END
MODIFIED
16.03.2009, 12:53
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.
darth bane
16.03.2009, 16:49
So funzt das ganze, muss nur noch irgendwie reinkriegen, das die wiederbelebung nicht im Kampf funzt.
Befehl ist
isincombat
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)
- DBCO - Walker.esp
- DBCO - L-Prime.esp
Weitere folgen....
....................
DOWNLOAD (http://www.fallout3nexus.com/downloads/file.php?id=4827)
Powered by vBulletin® Version 4.2.3 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.