Jump to content

script is confusing the !@#$ out of me. HELP!?!


angelwraith

Recommended Posts

This fact has to do that most containers have animations. Animations have to be run before the container will be opened, as that won't process if you're not near/in the same cell it will not execute properly. Yet with the 'house'-container (that doesn't use an animation) it doesn't seem to work either, so it might not be possible to do at all.

I've experienced this as this is possible in Oblivion, yet not in Fallout3 due to this addition.

Perhaps there is a workaround, but I couldn't find it.

Link to comment
Share on other sites

Maybe it would work more reliably in an "onUnEquip" block.

 

idk i dont think that would work for what i need..

i put it on the equip so as soon as you hit the button for the hotkeyed item it would activate this container and unequips it self.

 

if it was on a unequip you would first have to equip the item.. and then unequip it to fire the script..

 

unless i had a GAMEMODE block running looking for that item being equipped

and then firing upon that condition.. but that seems like a really long route to accomplish a simple task..

 

is there really no other way???

Link to comment
Share on other sites

This fact has to do that most containers have animations. Animations have to be run before the container will be opened, as that won't process if you're not near/in the same cell it will not execute properly. Yet with the 'house'-container (that doesn't use an animation) it doesn't seem to work either, so it might not be possible to do at all.

I've experienced this as this is possible in Oblivion, yet not in Fallout3 due to this addition.

Perhaps there is a workaround, but I couldn't find it.

 

 

ok i missed this post somehow and damn.. that is teh suck.. but you gave me an idea...

 

if this is due to the animation.. it is easily fixed..

in one part of my mod i have 3 containers that are somewhat unusual.. the middle part of the zax console is one container.. and the other two are .5 scale electrical boxes.. ya know the ones from the metros that blow up...

 

neither of these items were intended as containers and as such have NO animation associated..

 

so what i am going to do is change the script to point to one of these containers and test several cells away... if it all works out i will create a new container sans animation that fits what i was looking for originally and praise you for fixing this boggle!!

Link to comment
Share on other sites

ok so i tried it and the activator workedall the way from raven rock.. which is pretty much as far as you can get from where i need to be... then i put the old ref back in and it worked too... soo i guess its just being its unpredictable ass self and ill just have to wait for it to break again.. save and then switch the ref

 

which is fine for the moment.. i dont mind it so much when its working..

 

i should try it from one of the DLCs

i even tried pcb to force the cell to unload in hopes of provoking the problem.. but no go.

Link to comment
Share on other sites

If it works when the container is in the cell, why not just use MoveTo to move the container to the player before activating it? As far as I know, you can still activate disabled containers just fine if forced to via the Activate function, so you could just Disable it so that it doesn't get in the way. That should prevent any timing issues due to animations as well.

 

Cipscis

Link to comment
Share on other sites

If it works when the container is in the cell, why not just use MoveTo to move the container to the player before activating it? As far as I know, you can still activate disabled containers just fine if forced to via the Activate function, so you could just Disable it so that it doesn't get in the way. That should prevent any timing issues due to animations as well.

 

Cipscis

 

 

ok so the idea is then to

1. disable the ref

2. move it to current cell

3. activate it

4. reset original container location

5. re-enable the ref

 

im tired.. its almost 3 am so trying to put this together in meh head isnt working too well (beeerr is no help either)

 

in the morning ill try to put together something to do this see if it works

 

seems like a failsafe way to approach the problem though

 

although to be honest.. if its really just the animation issue it seems like it would be easier to make a animation-less container like the other 3 i am using..

and if im really really bothered by the lack of animation while looking at the safe, i think i could bury the actual reference and put up a fake one in its place that gets activated by teh burried containers activation

 

and vice versa of course the fake could activate the burried one when activated by touch rather than by the item

Link to comment
Share on other sites

If it works when the container is in the cell, why not just use MoveTo to move the container to the player before activating it? As far as I know, you can still activate disabled containers just fine if forced to via the Activate function, so you could just Disable it so that it doesn't get in the way. That should prevent any timing issues due to animations as well.

 

Cipscis

 

 

ok so the idea is then to

1. disable the ref

2. move it to current cell

3. activate it

4. reset original container location

5. re-enable the ref

 

im tired.. its almost 3 am so trying to put this together in meh head isnt working too well (beeerr is no help either)

 

in the morning ill try to put together something to do this see if it works

 

seems like a failsafe way to approach the problem though

 

although to be honest.. if its really just the animation issue it seems like it would be easier to make a animation-less container like the other 3 i am using..

and if im really really bothered by the lack of animation while looking at the safe, i think i could bury the actual reference and put up a fake one in its place that gets activated by teh burried containers activation

 

and vice versa of course the fake could activate the burried one when activated by touch rather than by the item

 

 

actually it just hit me..

i can test if removing the animation would help and try your idea about activating a disabled ref all at the same time

 

next time i get the error ill just disable the container from console and try again..

 

thatll answer both questions

 

cause if it starts to work then it confirms the animation culprit and allows me a way to activate the container without moving anything

Link to comment
Share on other sites

  • 2 weeks later...

ok so a new problem now.. this is a different script on a activator

 

ONLY the first option works.. the second click always closes the window like you clicked "none"

outside of the second click not doing what it is supposed to the script runs like i need it to.

 

 

ScriptName WeaponsMenu0Script

int iButton0
int iButton1
int iMenuLevel
int weapACTF

Begin OnActivate player
set iMenuLevel to 5
set iButton0 to -1
set iButton1 to -1
ShowMessage SUBweapmodMENU0
End

Begin GameMode

if iMenuLevel == 5 ; Level 0
	set iButton0 to GetButtonPressed
	if iButton0 == -1
		; No button has been pressed yet
	elseif iButton0 == 0 ; >>NONE<<
		set iMenuLevel to -1
	elseif (iButton0 > 0)  ; FirstLevel1Message
		set iMenuLevel to 1
		ShowMessage SUBweapmodMENU1
	endif
endif

;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXX

if iMenuLevel == 1 ; Level 1
	set iButton1 to GetButtonPressed

	;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXX

	if iButton0 == 1 ; Firstchoice >>>CRICKET(tweeter)<<<
		if iButton1 == -1
			; No button has been pressed yet
		elseif iButton1 == 0 ;  BACK
			set iButton1 to -1
			set iButton0 to -1
			set iMenuLevel to 5
			ShowMessage SUBweapmodMENU0
		elseif iButton1 == 1 ; Option 0-1 >>AIS<<
				set weapACTF to 1
			set iButton0 to 1
			set iButton1 to -1
		set iMenuLevel to 1
			ShowMessage SUBweapmodMENU1
		elseif iButton1 == 2 ; Option 0-2 >>IFR<<
				set weapACTF to 2 
			set iButton0 to 1
			set iButton1 to -1
		set iMenuLevel to 1
			ShowMessage SUBweapmodMENU1
		endif
	endif

	;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXX

	if iButton0 == 2 ; Secondchoice>>>BIGSTICK<<<
		if iButton1 == -1
			; No button has been pressed yet
		elseif iButton1 == 0 ; BACK
			set iButton1 to -1
			set iButton0 to -1
			set iMenuLevel to 5
			ShowMessage SUBweapmodMENU0
		elseif iButton1 == 1 ; Option 1-1  >>AIS<<
			set weapACTF to 3 
			set iButton0 to 2
			set iButton1 to -1
		set iMenuLevel to 1
			ShowMessage SUBweapmodMENU1
		elseif iButton1 == 2 ; Option 1-2 >>IFR<<
			set weapACTF to 4 
			set iButton0 to 2
			set iButton1 to -1
		set iMenuLevel to 1
			ShowMessage SUBweapmodMENU1
		endif
	endif

	;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXX

	if iButton0 == 3 ; Thirdchoice>>>NEWJACK<<<
		if iButton1 == -1 ; No button has been pressed yet
		elseif iButton1 == 0 ; BACK
			set iButton1 to -1
			set iButton0 to -1
			set iMenuLevel to 5
			ShowMessage SUBweapmodMENU0
		elseif iButton1 == 1 ; Option 1-1 >>AIS<<
			set weapACTF to 5 
			set iButton0 to 3
			set iButton1 to -1
		set iMenuLevel to 1
			ShowMessage SUBweapmodMENU1
		elseif iButton1 == 2 ; Option 1-2 >>IFR<<
			set weapACTF to 6 
			set iButton0 to 3
			set iButton1 to -1
		set iMenuLevel to 1
			ShowMessage SUBweapmodMENU1
		endif
	endif
	;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXX
endif
End


Begin MENUMODE
if weapACTF <= 0
	; DO NOTHING
	; <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> 
elseif weapACTF == 1 
			if (SUBTweeterREF.getdisabled == 0) && (SUBreactorstorageREF.getItemCount AmmoMicroFusionCell  >= 200 )
				SUBreactorstorageREF.removeItem AmmoMicroFusionCell 200
				SUBTweeterREF.disable
				SUBTweeterREF1.enable				
			elseif (subtweeterref2.getdisabled == 0) && (SUBreactorstorageREF.getItemCount AmmoMicroFusionCell  >= 200 )
				SUBreactorstorageREF.removeItem AmmoMicroFusionCell 200
				SUBTweeterREF2.disable
				SUBTweeterREF3.enable
			endif
	set weapACTF to -1
	; <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> 
elseif weapACTF == 2 
			if (subtweeterref.getdisabled == 0) && (SUBreactorstorageREF.getItemCount AmmoMicroFusionCell  >= 400 )
				SUBreactorstorageREF.removeItem AmmoMicroFusionCell 400
				subtweeterref.disable
				subtweeterref2.enable
			elseif (subtweeterref1.getdisabled == 0) && (SUBreactorstorageREF.getItemCount AmmoMicroFusionCell  >= 400 )
				SUBreactorstorageREF.removeItem AmmoMicroFusionCell 400
				subtweeterref1.disable
				subtweeterref3.enable
			endif 
	set weapACTF to -1
	; <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> 
elseif weapACTF == 3 
			if (SUBBigStickREF.getdisabled == 0) && (SUBreactorstorageREF.getItemCount AmmoMicroFusionCell  >= 200 )
				SUBreactorstorageREF.removeItem AmmoMicroFusionCell 200
				SUBBigStickREF.disable
				SUBBigStickREF1.enable
			elseif (SUBBigStickREF2.getdisabled == 0) && (SUBreactorstorageREF.getItemCount AmmoMicroFusionCell  >= 200 )
				SUBreactorstorageREF.removeItem AmmoMicroFusionCell 200
				SUBBigStickREF2.disable
				SUBBigStickREF3.enable
			endif 
	set weapACTF to -1
	; <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> 
elseif weapACTF == 4 
			if (SUBBigStickREF.getdisabled == 0) && (SUBreactorstorageREF.getItemCount AmmoMicroFusionCell  >= 400 )
				SUBreactorstorageREF.removeItem AmmoMicroFusionCell 400
				SUBBigStickREF.disable
				SUBBigStickREF2.enable
			elseif (SUBBigStickREF1.getdisabled == 0) && (SUBreactorstorageREF.getItemCount AmmoMicroFusionCell  >= 400 )
				SUBreactorstorageREF.removeItem AmmoMicroFusionCell 400
				SUBBigStickREF1.disable
				SUBBigStickREF3.enable
			endif 
	set weapACTF to -1
	; <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> 
elseif weapACTF == 5 
			if (SUBNewJackREF.getdisabled == 0) && (SUBreactorstorageREF.getItemCount AmmoMicroFusionCell  >= 200 )
				SUBreactorstorageREF.removeItem AmmoMicroFusionCell 200
				SUBNewJackREF.disable
				SUBNewJackREF1.enable
			elseif (SUBNewJackREF2.getdisabled == 0) && (SUBreactorstorageREF.getItemCount AmmoMicroFusionCell  >= 200 )
				SUBreactorstorageREF.removeItem AmmoMicroFusionCell 200
				SUBNewJackREF2.disable
				SUBNewJackREF3.enable
			endif 
	set weapACTF to -1
	; <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> 
elseif weapACTF == 6 
			if (SUBNewJackREF.getdisabled == 0) && (SUBreactorstorageREF.getItemCount AmmoMicroFusionCell  >= 400 )
				SUBreactorstorageREF.removeItem AmmoMicroFusionCell 400
				SUBNewJackREF.disable
				SUBNewJackREF2.enable
			elseif (SUBNewJackREF1.getdisabled == 0) && (SUBreactorstorageREF.getItemCount AmmoMicroFusionCell  >= 400 )
				SUBreactorstorageREF.removeItem AmmoMicroFusionCell 400
				SUBNewJackREF1.disable
				SUBNewJackREF3.enable
			endif
	set weapACTF to -1
	; <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> 
endif
END

Link to comment
Share on other sites

code now working... script was right a long time ago.. just didnt understand how the game worked but all is well and working properly now!!

 

 

ScriptName WeaponsMenu0Script

int iButton0
int iButton1
int iMenuLevel
int weapACTF
int runmenu
float fTimer

Begin OnActivate player
set iMenuLevel to 5
set iButton0 to -1
set iButton1 to -1
ShowMessage SUBweapmodMENU0
End

Begin GameMode





if iMenuLevel == 5 ; Level 0
	set iButton0 to GetButtonPressed
	if iButton0 == -1
		; No button has been pressed yet
	elseif iButton0 == 0 ; >>NONE<<
		set iMenuLevel to -1
	elseif (iButton0 > 0)  ; FirstLevel1Message
		set iMenuLevel to 1
		ShowMessage SUBweapmodMENU1
	endif
endif

;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXX

if iMenuLevel == 1 ; Level 1
	set iButton1 to GetButtonPressed

	;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXX

	if iButton0 == 1 ; Firstchoice >>>CRICKET(tweeter)<<<
		if iButton1 == -1
			; No button has been pressed yet
		elseif iButton1 == 0 ;  BACK
			set iButton1 to -1
			set iButton0 to -1
			set iMenuLevel to 5
			ShowMessage SUBweapmodMENU0
		elseif iButton1 == 1 ; Option 0-1 >>AIS<<
			set weapACTF to 1
			set iButton0 to 1
			set iButton1 to -1
			set iMenuLevel to 1
		elseif iButton1 == 2 ; Option 0-2 >>IFR<<
			set weapACTF to 2
			set iButton0 to 1
			set iButton1 to -1
			set iMenuLevel to 1
		endif
	endif

	;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXX

	if iButton0 == 2 ; Secondchoice>>>BIGSTICK<<<
		if iButton1 == -1
			; No button has been pressed yet
		elseif iButton1 == 0 ; BACK
			set iButton1 to -1
			set iButton0 to -1
			set iMenuLevel to 5
			ShowMessage SUBweapmodMENU0
		elseif iButton1 == 1 ; Option 1-1  >>AIS<<
			set weapACTF to 3
			set iButton0 to 2
			set iButton1 to -1
			set iMenuLevel to 1
		elseif iButton1 == 2 ; Option 1-2 >>IFR<<
			set weapACTF to 4
			set iButton0 to 2
			set iButton1 to -1
			set iMenuLevel to 1
		endif
	endif

	;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXX

	if iButton0 == 3 ; Thirdchoice>>>NEWJACK<<<
		if iButton1 == -1 ; No button has been pressed yet
		elseif iButton1 == 0 ; BACK
			set iButton1 to -1
			set iButton0 to -1
			set iMenuLevel to 5
			ShowMessage SUBweapmodMENU0
		elseif iButton1 == 1 ; Option 1-1 >>AIS<<
			set weapACTF to 5
			set iButton0 to 3
			set iButton1 to -1
			set iMenuLevel to 1
		elseif iButton1 == 2 ; Option 1-2 >>IFR<<
			set weapACTF to 6
			set iButton0 to 3
			set iButton1 to -1
			set iMenuLevel to 1
		endif
	endif
	;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXX
endif

if weapACTF <= 0
	; DO NOTHING
	; <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=>
elseif weapACTF == 1
	if (SUBTweeterREF.getdisabled == 0) && (SUBreactorstorageREF.getItemCount AmmoMicroFusionCell  >= 200 )
		SUBreactorstorageREF.removeItem AmmoMicroFusionCell 200
		SUBTweeterREF.disable
		SUBTweeterREF1.enable
	elseif (subtweeterref2.getdisabled == 0) && (SUBreactorstorageREF.getItemCount AmmoMicroFusionCell  >= 200 )
		SUBreactorstorageREF.removeItem AmmoMicroFusionCell 200
		SUBTweeterREF2.disable
		SUBTweeterREF3.enable
	endif
	set runmenu to 1
	set weapACTF to -1
	; <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=>
elseif weapACTF == 2
	if (subtweeterref.getdisabled == 0) && (SUBreactorstorageREF.getItemCount AmmoMicroFusionCell  >= 400 )
		SUBreactorstorageREF.removeItem AmmoMicroFusionCell 400
		subtweeterref.disable
		subtweeterref2.enable
	elseif (subtweeterref1.getdisabled == 0) && (SUBreactorstorageREF.getItemCount AmmoMicroFusionCell  >= 400 )
		SUBreactorstorageREF.removeItem AmmoMicroFusionCell 400
		subtweeterref1.disable
		subtweeterref3.enable
	endif
	set runmenu to 1
	set weapACTF to -1
	; <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=>
elseif weapACTF == 3
	if (SUBBigStickREF.getdisabled == 0) && (SUBreactorstorageREF.getItemCount AmmoMicroFusionCell  >= 200 )
		SUBreactorstorageREF.removeItem AmmoMicroFusionCell 200
		SUBBigStickREF.disable
		SUBBigStickREF1.enable
	elseif (SUBBigStickREF2.getdisabled == 0) && (SUBreactorstorageREF.getItemCount AmmoMicroFusionCell  >= 200 )
		SUBreactorstorageREF.removeItem AmmoMicroFusionCell 200
		SUBBigStickREF2.disable
		SUBBigStickREF3.enable
	endif
	set runmenu to 1
	set weapACTF to -1
	; <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=>
elseif weapACTF == 4
	if (SUBBigStickREF.getdisabled == 0) && (SUBreactorstorageREF.getItemCount AmmoMicroFusionCell  >= 400 )
		SUBreactorstorageREF.removeItem AmmoMicroFusionCell 400
		SUBBigStickREF.disable
		SUBBigStickREF2.enable
	elseif (SUBBigStickREF1.getdisabled == 0) && (SUBreactorstorageREF.getItemCount AmmoMicroFusionCell  >= 400 )
		SUBreactorstorageREF.removeItem AmmoMicroFusionCell 400
		SUBBigStickREF1.disable
		SUBBigStickREF3.enable
	endif
	set runmenu to 1
	set weapACTF to -1
	; <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=>
elseif weapACTF == 5
	if (SUBNewJackREF.getdisabled == 0) && (SUBreactorstorageREF.getItemCount AmmoMicroFusionCell  >= 200 )
		SUBreactorstorageREF.removeItem AmmoMicroFusionCell 200
		SUBNewJackREF.disable
		SUBNewJackREF1.enable
	elseif (SUBNewJackREF2.getdisabled == 0) && (SUBreactorstorageREF.getItemCount AmmoMicroFusionCell  >= 200 )
		SUBreactorstorageREF.removeItem AmmoMicroFusionCell 200
		SUBNewJackREF2.disable
		SUBNewJackREF3.enable
	endif
	Set runmenu to 1
	set weapACTF to -1
	; <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=>
elseif weapACTF == 6
	if (SUBNewJackREF.getdisabled == 0) && (SUBreactorstorageREF.getItemCount AmmoMicroFusionCell  >= 400 )
		SUBreactorstorageREF.removeItem AmmoMicroFusionCell 400
		SUBNewJackREF.disable
		SUBNewJackREF2.enable
	elseif (SUBNewJackREF1.getdisabled == 0) && (SUBreactorstorageREF.getItemCount AmmoMicroFusionCell  >= 400 )
		SUBreactorstorageREF.removeItem AmmoMicroFusionCell 400
		SUBNewJackREF1.disable
		SUBNewJackREF3.enable
	endif
	set runmenu to 1
	set weapACTF to -1
	; <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=> <=>
endif

if runmenu == 1
	set fTimer to fTimer + getSecondsPassed
	if fTimer >= .1
		ShowMessage SUBweapmodMENU1
		set fTimer to 0
		set runmenu to 0
	endif
endif

END

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...