Shade1982 Posted July 29, 2012 Share Posted July 29, 2012 Sorry for the TL:DR wall of text :P This is a variation of the original vanilla activator script, combined with what another helpful modder here pointed out to me. This is a script which tells the display case to only accept one weapon type. For example, I have a weapon display for daggers, swords, maces etc... elseif (PlayersEquippedWeaponType == 1) || (PlayersEquippedWeaponType == 3) || (PlayersEquippedWeaponType == 4) || (PlayersEquippedWeaponType == 5) || (PlayersEquippedWeaponType == 6) || (PlayersEquippedWeaponType == 7) || (PlayersEquippedWeaponType == 8) WeaponRackWrongWeaponMESSAGE.Show()This should show a message saying you're trying to put the wrong weapon in. So far, this part works. That is, it shows the message. Unfortunately, after showing the message, it still puts the weapon in the case... Can anyone tell me what I did wrong? Scriptname ShadeDisplayActivatorScriptDagger extends ObjectReferenceimport gameimport debugimport utilityimport quest ;------------------------------------------- Message Property WeaponRackActivateMESSAGE AutoMessage Property WeaponRackNoWeaponMESSAGE AutoMessage Property WeaponRackWrongWeaponMESSAGE AutoInt Property ButtonPressed Auto HiddenBool Property AlreadyInit Auto HiddenBool Property MessageAlreadyShown Auto HiddenGlobalVariable Property WRackGlobal AutoKeyword Property WRackDagger AutoKeyword Property WRackTrigger AutoKeyword Property WeaponTypeDagger AutoObjectReference Property DaggerMarker Auto HiddenObjectReference Property TriggerMarker Auto HiddenKeyword Property WRackStartingWeapon Auto HiddenObjectReference Property StartingWeapon Auto HiddenInt Property ItemType Auto HiddenWeapon Property PlayersEquippedWeapon Auto HiddenObjectReference Property PlayersDroppedWeapon Auto HiddenInt Property PlayersEquippedWeaponType Auto Hidden ;------------------------------------------- EVENT OnCellLoad() Trace("DARYL - " + self + " running OnCellLoad() and AlreadyInit = " + AlreadyInit) TriggerMarker = GetLinkedRef(WRackTrigger) Trace("DARYL - " + self + " The TriggerMarker is " + TriggerMarker) if (TriggerMarker) && (AlreadyInit == FALSE) && (TriggerMarker.IsEnabled()) Trace("DARYL - " + self + " Running the OnLoad EVENT") DaggerMarker = GetLinkedRef(WRackDagger) Trace("DARYL - " + self + " The Dagger Marker is " + DaggerMarker) StartingWeapon = GetLinkedRef() Trace("DARYL - " + self + " The Starting Weapon is " + StartingWeapon) TriggerMarker = GetLinkedRef(WRackTrigger) Trace("DARYL - " + self + " The TriggerMarker is " + TriggerMarker) if (StartingWeapon) if StartingWeapon.Is3DLoaded() if StartingWeapon.GetParentCell() == self.GetParentCell() Trace("DARYL - " + self + " Has a starting weapon") HandleStartingWeapon() endif endif else Trace("DARYL - " + self + " Doesn't have a starting weapon") ;Do nothing endif AlreadyInit = TRUE else ;Do nothing endif Trace("DARYL - " + self + " finishing OnCellLoad() and AlreadyInit = " + AlreadyInit)endEVENT Auto STATE EmptyRack EVENT onActivate(ObjectReference TriggerRef) if (TriggerRef == Game.GetPlayer() as Actor) MessageAlreadyShown = WRackGlobal.GetValue() if (MessageAlreadyShown == FALSE) WeaponRackActivateMESSAGE.Show() WRackGlobal.SetValue(1) else Trace("DARYL - " + self + " Player activated the weapon rack") PlayersEquippedWeaponType = Game.GetPlayer().GetEquippedItemType(1) if (PlayersEquippedWeaponType == 0) || (PlayersEquippedWeaponType == 9) || (PlayersEquippedWeaponType == 10) || (PlayersEquippedWeaponType == 11) WeaponRackNoWeaponMESSAGE.Show() elseif (PlayersEquippedWeaponType == 1) || (PlayersEquippedWeaponType == 3) || (PlayersEquippedWeaponType == 4) || (PlayersEquippedWeaponType == 5) || (PlayersEquippedWeaponType == 6) || (PlayersEquippedWeaponType == 7) || (PlayersEquippedWeaponType == 8) WeaponRackWrongWeaponMESSAGE.Show() elseif (PlayersEquippedWeaponType == 2) HandleWeaponPlacement() endif endif endif endEVENTendSTATE Function HandleWeaponPlacement(bool ForStartingWeapon = FALSE) if (ForStartingWeapon) Trace("DARYL - " + self + " Handling Starting Weapon") else Trace("DARYL - " + self + " Handling Players Weapon") Trace("DARYL - " + self + " Player currently has weapon type " + PlayersEquippedWeaponType + " in his right hand.") PlayersEquippedWeapon = Game.GetPlayer().GetEquippedWeapon() Trace("DARYL - " + self + " Player has " + PlayersEquippedWeapon + " base object equipped") PlayersDroppedWeapon = Game.GetPlayer().DropObject(PlayersEquippedWeapon, 1) Trace("DARYL - " + self + " Dropped " + PlayersEquippedWeapon + " from players inventory as " + PlayersDroppedWeapon) if (PlayersDroppedweapon) int Count = 0 While(!PlayersDroppedweapon.Is3DLoaded()) && (Count < 10) Utility.Wait(0.1) Count += 1 EndWhile endif endif PlayersDroppedWeapon.SetMotionType(Motion_Keyframed, false) Trace("DARYL - " + self + " Disabling physics on " + PlayersDroppedWeapon) PlayersDroppedWeapon.HasKeyword(WeaponTypeDagger) Trace("DARYL - " + self + " Moving players dropped weapon" + PlayersDroppedWeapon + " of type " + PlayersEquippedWeaponType + " to the DaggerMarker") PlayersDroppedWeapon.MoveToNode(TriggerMarker, "DaggerPivot01")EndFunction Function HandleStartingWeapon() PlayersDroppedWeapon = StartingWeapon HandleWeaponPlacement(TRUE)EndFunction Link to comment Share on other sites More sharing options...
Ghaunadaur Posted July 30, 2012 Share Posted July 30, 2012 (edited) Make sure all the properties are set exactly like in the vanilla script, auto-fill works partly. Edited July 30, 2012 by Ghaunadaur Link to comment Share on other sites More sharing options...
Shade1982 Posted July 30, 2012 Author Share Posted July 30, 2012 Checked and double-checked. All properties are set like they should be. Link to comment Share on other sites More sharing options...
Ghaunadaur Posted July 30, 2012 Share Posted July 30, 2012 (edited) Also, there's an 'else' missing in the script you posted else HandleWeaponPlacement() ; Grabs the weapon from the player and places it in the correct place. Edited July 30, 2012 by Ghaunadaur Link to comment Share on other sites More sharing options...
Shade1982 Posted July 30, 2012 Author Share Posted July 30, 2012 The else was actually there, but I changed it toelseif (PlayersEquippedWeaponType == 2) HandleWeaponPlacement()to see if that was the problem. Neither helped... Link to comment Share on other sites More sharing options...
Recommended Posts