Jump to content

Weapon Display script


Shade1982

Recommended Posts

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 ObjectReference

import game

import debug

import utility

import quest

 

;-------------------------------------------

 

Message Property WeaponRackActivateMESSAGE Auto

Message Property WeaponRackNoWeaponMESSAGE Auto

Message Property WeaponRackWrongWeaponMESSAGE Auto

Int Property ButtonPressed Auto Hidden

Bool Property AlreadyInit Auto Hidden

Bool Property MessageAlreadyShown Auto Hidden

GlobalVariable Property WRackGlobal Auto

Keyword Property WRackDagger Auto

Keyword Property WRackTrigger Auto

Keyword Property WeaponTypeDagger Auto

ObjectReference Property DaggerMarker Auto Hidden

ObjectReference Property TriggerMarker Auto Hidden

Keyword Property WRackStartingWeapon Auto Hidden

ObjectReference Property StartingWeapon Auto Hidden

Int Property ItemType Auto Hidden

Weapon Property PlayersEquippedWeapon Auto Hidden

ObjectReference Property PlayersDroppedWeapon Auto Hidden

Int 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

endEVENT

endSTATE

 

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

  • Recently Browsing   0 members

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