[Demande] Comment faire fonctioner le 'furniture' ExecutionerChoppingBlock ?

C'est ici que vous pouvez poser vos questions techniques.
Répondre
Plamplop
Moddeur aspirant
Moddeur aspirant
Messages : 24

[Demande] Comment faire fonctioner le 'furniture' ExecutionerChoppingBlock ?

Message par Plamplop »

Bonjour,

C'est suite à de nombreux essais, en vain, afin de faire fonctionner ExecutionerChoppingBlock que je poste cette demande sur ce forum.

Je souhaiterais donc qu'un prisonnier se fasse couper la tête au moment où j'entre dans la pièce ou au moment où j'active un objet (porte/levier).

J'ai créé 3 personnages, le bourreau qui est 'linked ref' sur l'ExecutionerChoppingBlock avec le 'keyword' IsExecutioner ; le garde qui est 'linked ref' sur l'ExecutionerChoppingBlock avec le 'keyword' IsExecutionerGard et le prisonnier qui est 'linked ref' sur l'ExecutionerChoppingBlock avec le 'keyword' NONE.

J'ai remarqué que l'ExecutionerChoppingBlock possédait un Script mais je ne sais pas s'il faut le modifier :
scriptName HeadChopBlockHookupSCRIPT extends ObjectReference
{
- This script hooks up the two people in the head chop block furniture and makes them play the chop animation together.

}

import utility
import Debug

ObjectReference executionerActor

ObjectReference executioneeActor

ObjectReference executionGuardActor

Idle property animIdle auto
{This is the idle that the executionee will play when everything is ready.}

Idle property playerAnimIdle auto
{This is the idle that the player will play when everything is ready.}

Keyword property executionerKeyword auto
{The keyword that designates the executioner from the soon to be dead.}

Keyword property executionGuardKeyword auto
{The keyword that designates the executioner from the soon to be dead.}

Quest Property MQ101 Auto

;*****************************************

auto STATE readyToChop

Event OnActivate( ObjectReference akActionRef )
; debug.trace(self + " OnActivate: " + akActionRef)
if ( akActionRef.HasKeyword( executionerKeyword ) )
; debug.trace(self+ "The executioner is in place: " + akActionRef )
executionerActor = akActionRef
elseif ( akActionRef.HasKeyword( executionGuardKeyword ) )
; debug.trace(self+ "The execution guard is in place: " + akActionRef )
executionGuardActor = akActionRef
elseif (akActionRef == Game.GetPlayer())
;Make sure the player can't look around during the execution
; debug.trace(self+ "The victim is in place: " + akActionRef )
executioneeActor = akActionRef
else
; debug.trace(self+ "The victim is in place: " + akActionRef )
executioneeActor = akActionRef
endif


;if it's ready, then do the chop!
if ( executioneeActor != none && executionGuardActor != none && executionerActor != none )
gotoState("chopping")
; debug.trace(self+ "Both in place, ready to chop" )
RegisterForSingleUpdate(0.5)
endif
endEvent

endState

STATE chopping
; do nothing for now
endState

Event OnUpdate()
; debug.trace(self + " OnUpdate")
;if it's ready, then do the chop!
if ( executioneeActor != none && executionerActor != none )
; debug.trace(self+ "CHOPPING START" )
wait(0.5)

;set up the relationship
if ( !executioneeActor.AddDependentAnimatedObjectReference( executionerActor ) || !executioneeActor.AddDependentAnimatedObjectReference( executionGuardActor ) )
Notification( "dependence broken." )
endif

;play the idle and wait..
Actor myExecutionee = executioneeActor as Actor
Actor myExecutioner = executionerActor as Actor
; do NOT kill the player!
if myExecutionee == Game.GetPlayer()
If (!myExecutioner.PlayIdle( playerAnimIdle) )
; debug.trace(self+ "executioner play idle failed" )
EndIf

if ( !myExecutionee.PlayIdle( playerAnimIdle ) )
; debug.trace(self+ "player play idle failed" )
endif
wait(5)
MQ101.SetStage(98)
else
if ( !myExecutionee.PlayIdle( animIdle ) )
; debug.trace(self+ " play idle failed" )
endif
wait(2)
endif

;Now clean up. Set the executionee to NULL, since he's no longer needed...
executioneeActor.RemoveDependentAnimatedObjectReference( executionerActor )
executioneeActor.RemoveDependentAnimatedObjectReference( executionGuardActor )
executioneeActor = none
gotoState("readyToChop")
; debug.trace(self+ "CHOPPING END" )
endif
Image des propriétés du script :
Image

Donc je souhaiterais savoir comment faire en sorte que mon prisonnier se face bien couper la tête plutôt que d'attendre les mains liées devant le billot. Si possible il faudrait que l'évènement soit "activable/programmable".

Merci d'avance pour votre aide et bonne journée !

~~Plamplop

PS: je suis sur le point de partir en vacances et pourrais sans doute répondre à ce post dans environ 10 jours.
Répondre

Retourner vers « Entraide sur le Creation Kit »