Вобщем решил сделать мод, но он нуждается в скриптах, а именно управление рычагами,но есть одно Но:
не могу понять взаимосвязь активатора и цели, например секретная дверь и рычаг:
id: BarrelHugeDoor ; scn CastleSecretBarrelScript
scn CastleSecretBarrelScript
; activated by linked child
; activates optionally linked parent after 1 sec delay
short init
short open
short next
short busy
short waiting
float timer
ref mySelf
ref myParent
begin onActivate
if isActionRef mySelf == 0 && busy == 0 && isActionRef player == 0
if open == 0
playgroup forward 0
set open to 1
enableLinkedPathPoints
set waiting to 1
else
playgroup backward 0
set open to 0
disableLinkedPathPoints
set waiting to 0
endif
set next to 1
set timer to 1
set busy to 1
endif
end
begin gameMode
if init == 0 && open == 0
; set up ref vars
set mySelf to getSelf
set myParent to getParentRef
; prepare linked pathsgrid points
disableLinkedPathPoints
set init to 1
endif
; daisy-chain activation
if next == 1 && timer <=0
set next to 0
myParent.activate mySelf 1
endif
if timer > 0
set timer to timer - getSecondsPassed
endif
if isAnimPlaying == 0 && busy == 1
set busy to 0
endif
end
begin onReset
reset3DState
set open to 0
set next to 0
set busy to 0
disableLinkedPathPoints
end
id: RFSwitchLever01; scn RFSwitch03SCRIPT
scn RFSwitch03SCRIPT
; activates parent after a 2 sec delay
short open
short next
short busy
float timer
ref mySelf
ref myParent
begin onActivate
if busy == 0
if open == 0
playgroup forward 1
set open to 1
set next to 1
set timer to 2
else
playgroup backward 1
set open to 0
set next to 1
set timer to 0.5
endif
set busy to 1
endif
end
begin gameMode
if next == 1 && timer <= 0
set mySelf to getSelf
set myParent to getParentRef
myParent.activate mySelf 1
set next to 0
endif
if isAnimPlaying == 0 && busy == 1
set busy to 0
endif
if timer > 0
set timer to timer - getSecondsPassed
endif
end
begin onReset
reset3DState
set next to 0
set open to 0
set busy to 0
end
как они взаимодействуют между собой? как дверь при 1 активации рычага открывается, и закрывается при повторной активации рычага?
что значат и делают
ref mySelf
ref myParent ?
как можно например изменить такой код, чтобы он открывал ту же дверь (BarrelHugeDoor)
scn AAAtestscriptdoor
Short controlvar
Short button
Begin OnActivate
If ( controlvar == 0 )
MessageBox "Чего хочешь старче?", "открыть дверь", "закрыть дверь", "выйти"
Set controlvar to 1
ElseIf ( controlvar > 1 )
Activate
EndIf
End
Begin GameMode
If ( controlvar == 1 )
Set button to GetButtonPressed
If ( button == -1 )
Return
ElseIf ( button == 0)
Message "дверь открыта"
;открывает дверь
Set controlvar to 0
Elseif ( button == 1)
Message "Закрыта"
;закрывает
Set controlvar to 0
Elseif ( button == 2)
Message "вышел"
return
Set controlvar to 0
EndIf
EndIf
EndIf
EndIf
EndIf
End
или вот еще пример, как реализовать чтобы MG10FloorSmasher01 активировался рычагом а не приближением героя?
или например как сделать чтобы 1 рычаг активировал 4 RFTrapDarts01 ?
или 1 рычаг респаунил умершего NPC?
ато перерыл интернет, а учебников об взаимосвязи активаторов и целей нет
и кажется мне это неизведанная область очень нуждается в хорошем учебнике.
если вдруг кто-то возьмется помочь с скриптами я был бы очень благодарен за коментарии к каждой строке
