Ergebnis 1 bis 16 von 16

Thema: Wiederbelebungsskript

  1. #1

    Wiederbelebungsskript

    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


    Wäre super wenn jemand vlt. anhand eines Begleiters mir ein Beispielskript machen könnte oder ähnliche Hilfestellungen.

    Danke im voraus.

    Geändert von darth bane (15.03.2009 um 18:26 Uhr)

  2. #2
    dein postkasten is voll

    naja, ich wolte dir eigentlich per pn schreiben das ichs mir anschaue sobald ich mit meinen Visionenscripts fertig bin

  3. #3
    Zitat Zitat von Boreg77 Beitrag anzeigen
    dein postkasten is voll

    naja, ich wolte dir eigentlich per pn schreiben das ichs mir anschaue sobald ich mit meinen Visionenscripts fertig bin
    ohhh..jetzt nicht mehr

    bin über jede hilfe dankbar.

  4. #4
    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.

  5. #5
    Zitat Zitat von SirTroy Beitrag anzeigen
    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"

  6. #6
    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

    Code:
    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

  7. #7
    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 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?

  8. #8

    Sethx Gast

    Geändert von Sethx (27.05.2009 um 14:05 Uhr)

  9. #9
    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"

  10. #10
    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.

    Code:
    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

    Geändert von MODIFIED (16.03.2009 um 11:26 Uhr)

  11. #11
    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!!!!!!

    Geändert von darth bane (16.03.2009 um 12:05 Uhr)

  12. #12
    ja, das script ist bei mir aktiv und funktioniert.

  13. #13
    Zitat Zitat von MODIFIED Beitrag anzeigen
    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?

  14. #14
    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 Zitat
    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

  15. #15
    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.

    Geändert von MODIFIED (16.03.2009 um 13:22 Uhr)

  16. #16
    So funzt das ganze, muss nur noch irgendwie reinkriegen, das die wiederbelebung nicht im Kampf funzt.

    Befehl ist

    isincombat

    Zitat 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)

    - DBCO - Walker.esp

    - DBCO - L-Prime.esp

    Weitere folgen....
    ....................


    DOWNLOAD

    Geändert von darth bane (16.03.2009 um 18:51 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •