GetWornItem - Actor
F4SE Member of: Actor Script
Requires F4SE version 0.2.0 or higher.
Obtains WornItem information about an actors Biped Slot.
SyntaxEdit
WornItem Function GetWornItem(int slotIndex, bool firstPerson = false) Native
ParametersEdit
- slotIndex: The Biped Slot index to check.
- firstPerson: Specifies whether first or third person information for the Biped Slot should be returned.
Return ValueEdit
The WornItem for the given Biped Slot index.
ExamplesEdit
Actor:WornItem wornItem= Game.GetPlayer().GetWornItem(34)
Debug.Trace("Item: " + wornItem.Item)
Debug.Trace("Model: " + wornItem.Model)
Debug.Trace("ModelName: " + wornItem.ModelName)
Debug.Trace("MaterialSwap: " + wornItem.MaterialSwap)
Debug.Trace("Texture: " + wornItem.Texture)
{For each biped slot}
Actor Player = Game.GetPlayer()
int index = 0
int end = 43 const
while (index < end)
Actor:WornItem wornItem = Player.GetWornItem(index)
Debug.Trace("Slot Index: " + index + ", " + wornItem)
index += 1
EndWhile
Armor Slot PrecedenceEdit
There is a precedence to Armor slot ordering which is from head-to-toe. An Armor form only properly exists on the highest slot it covers, lower slots will return none. Armors will superfically flag the cover slots it covers as occupied.
For example a helmet with goggles that covers the HEAD + EYE slots will have to be accessed via the HEAD slot. On the other hand, a gas mask that covers the EYE + MOUTH slots will need to be accessed via the EYE slot. If for some reason there is a mask that covers the HEAD + EYES + MOUTH then it will need to be accessed via the HEAD slot because its the highest one.
Scriptname WornExample extends Quest
Actor Player
int BipedEyes = 17 const
bool ThirdPerson = false const
Event OnQuestInit()
Player = Game.GetPlayer()
Actor:WornItem worn = GetWorn()
Debug.TraceSelf(self, "OnQuestInit", "Worn:"+worn)
EndEvent
Actor:WornItem Function GetWorn()
{Scans down the highest slot of an eye slot armor.}
int slot = 0
While (slot <= BipedEyes)
Actor:WornItem worn = Player.GetWornItem(slot, ThirdPerson)
If (ItemFilter(worn.Item))
return worn
EndIf
slot += 1
EndWhile
Debug.TraceSelf(self, "GetWorn", "No biped slot has a valid eyes armor.")
return none
EndFunction
bool Function ItemFilter(Form item)
Armor armo = item as Armor
return armo && HasSlotMask(armo, kSlotMask47)
EndFunction
bool Function HasSlotMask(Armor armo, int value) Global
return Math.LogicalAnd(armo.GetSlotMask(), value) == value
EndFunction
NotesEdit
- Returns a none struct beyond index 43 as those are actually invalid.
- Slots with empty forms are just empty slots.