Its really not a script problem.
The trigger zone will work, I have used it many times in my own mod. But there are a few things you must know to get it to work.
1. Make an new activate object with no mesh. Attach your activate script to this new object.
Here is an example of a trigger zone I place around my static display weapons. It must be an 'onActivate' script.
<code>Scriptname LevelersDisplayDaedricWpnScript extends ObjectReference
{Display for Daedric Weapons}
message property LevelersLackTheItemMSG auto
WEAPON Property DaedricWeapon Auto
WEAPON Property Daedric2Weapon Auto
ObjectReference Property StaticWeapon Auto
ObjectReference Property LevDisplayContREF Auto
Sound Property ITMGenericWeaponUp Auto
bool placed = FALSE
Event OnActivate(ObjectReference akActionRef)
If akActionRef == Game.GetPlayer()
if placed == FALSE
if akActionRef.getItemCount(DaedricWeapon) >= 1 || akActionRef.getItemCount(Daedric2Weapon) >= 1
placed = TRUE
StaticWeapon.Enable()
akActionRef.RemoveItem(DaedricWeapon, 1, false, LevDisplayContREF)
akActionRef.RemoveItem(Daedric2Weapon, 1, false, LevDisplayContREF)
; akActionRef.removeItem(DaedricWeapon, 1)
else
LevelersLackTheItemMSG.show()
endif
elseif placed == TRUE
placed = FALSE
StaticWeapon.Disable()
LevDisplayContREF.RemoveItem(DaedricWeapon, 1, false, akActionRef)
LevDisplayContREF.RemoveItem(Daedric2Weapon, 1, false, akActionRef)
; akActionRef.addItem(DaedricWeapon, 1)
ITMGenericWeaponUp.Play(Self)
endif
endif
endEVENT</code>
2. Make sure the check box for 'Player Activation' is checked on the properties of the placed trigger zone.
3. Change the Z rotation of the object so its 1, or 91, or 181 or 271. Make sure the angle is off by at least one from the 90 degree angles.