Pronam Posted February 18, 2010 Share Posted February 18, 2010 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 More sharing options...
angelwraith Posted February 18, 2010 Author Share Posted February 18, 2010 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 equippedand 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 More sharing options...
angelwraith Posted February 18, 2010 Author Share Posted February 18, 2010 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 More sharing options...
angelwraith Posted February 18, 2010 Author Share Posted February 18, 2010 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 More sharing options...
Cipscis Posted February 18, 2010 Share Posted February 18, 2010 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 More sharing options...
angelwraith Posted February 19, 2010 Author Share Posted February 19, 2010 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 ref2. move it to current cell3. activate it4. reset original container location5. 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 More sharing options...
angelwraith Posted February 19, 2010 Author Share Posted February 19, 2010 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 ref2. move it to current cell3. activate it4. reset original container location5. 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 More sharing options...
angelwraith Posted March 1, 2010 Author Share Posted March 1, 2010 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 More sharing options...
angelwraith Posted March 2, 2010 Author Share Posted March 2, 2010 http://www.fallout3nexus.com/downloads/file.php?id=11493 Link to comment Share on other sites More sharing options...
angelwraith Posted March 2, 2010 Author Share Posted March 2, 2010 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 More sharing options...
Recommended Posts