Ergebnis 1 bis 16 von 16

Thema: Wiederbelebungsskript

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  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)

Berechtigungen

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