GetItemCount and Base Object

Post » Mon Nov 19, 2012 5:11 pm

Ah... It's much like filling any other property (from within the form's "Scripts" window), but you have to first add empty elements, then set each element manually (from the elements' dropdown boxes).
User avatar
Victoria Bartel
 
Posts: 3325
Joined: Tue Apr 10, 2007 10:20 am

Post » Mon Nov 19, 2012 1:55 pm

I've created a second container and trialled the new script on that.

Spoiler

Scriptname MDHClawScriptCONTAINER02 extends ObjectReference {test}Message Property MessageWarning  AutoFormList Property ClawList AutoMiscObject[] Property kClawArray AutoObjectReference[] Property kClawReference AutoEvent OnItemAdded(Form akBaseItem, Int aiItemCount, ObjectReference akItemReference, ObjectReference akSourceContainer)	    If ClawList.HasForm(akBaseItem)			    Check()	    Else			    RemoveItem(akBaseItem, aiItemCount, False, akSourceContainer)			    MessageWarning.Show()EndifEndEventEvent OnItemRemoved(Form akBaseItem, Int aiItemCount, ObjectReference akItemReference, ObjectReference akDestContainer)	    If ClawList.HasForm(akBaseItem)			    Check()	    EndIfEndEventFunction Check()	    Int iIndex = kClawArray.Length	    While iIndex > 0			    If GetItemCount(kClawArray[iIndex])					    kClawReference[iIndex].Enable()			    Else					    kClawReference[iIndex].Disable()			    EndIf	    EndWhileEndFunction

I've filled the arrays like so:
http://i101.photobucket.com/albums/m57/will_cuthill/Array.png?t=1349424147

Nothing is getting enabled or disable in-game.
User avatar
Eileen Müller
 
Posts: 3366
Joined: Fri Apr 13, 2007 9:06 am

Post » Mon Nov 19, 2012 9:49 am

All should be working as the arrays look fine. If you upload/link everything, I can have a look, but I don't see anything off in that pic.


Oh!
Spoiler
FormList Property ClawList AutoMiscObject[] Property kClawArray AutoMessage Property MessageWarning AutoObjectReference[] Property kClawReference AutoEvent OnItemAdded(Form akBaseItem, Int aiItemCount, ObjectReference akItemReference, ObjectReference akSourceContainer)	If ClawList.HasForm(akBaseItem)		Check()	Else		RemoveItem(akBaseItem, aiItemCount, False, akSourceContainer)		MessageWarning.Show()	EndIfEndEventEvent OnItemRemoved(Form akBaseItem, Int aiItemCount, ObjectReference akItemReference, ObjectReference akDestContainer)	If ClawList.HasForm(akBaseItem)		Check()	EndIfEndEventFunction Check()	Int iIndex = kClawArray.Length	While iIndex > 0		iIndex -= 1		If GetItemCount(kClawArray[iIndex])			kClawReference[iIndex].Enable()		Else			kClawReference[iIndex].Disable()		EndIf	EndWhileEndFunction
*fix'd
User avatar
Angela
 
Posts: 3492
Joined: Mon Mar 05, 2007 8:33 am

Post » Mon Nov 19, 2012 12:49 pm

Works flawlessly. :biggrin:

I appreciate the help JustinOther! Thank you very much!!
User avatar
Lalla Vu
 
Posts: 3411
Joined: Wed Jul 19, 2006 9:40 am

Post » Mon Nov 19, 2012 7:24 am

Even better/faster:
Spoiler
Int iClawMiscObject[] Property kClawArray AutoMessage Property MessageWarning AutoObjectReference[] Property kClawReference AutoString[] Property sStringArray AutoEvent OnItemAdded(Form akBaseItem, Int aiItemCount, ObjectReference akItemReference, ObjectReference akSourceContainer)	iClaw = kClawArray.Find(akBaseItem As MiscObject)	If iClaw < 0		RemoveItem(akBaseItem, aiItemCount, False, akSourceContainer)		MessageWarning.Show()		Else		ToggleEnabled()	EndIfEndEventEvent OnItemRemoved(Form akBaseItem, Int aiItemCount, ObjectReference akItemReference, ObjectReference akDestContainer)	iClaw = kClawArray.Find(akBaseItem As MiscObject)	If iClaw >= 0		ToggleEnabled(False)	EndIfEndEventFunction ToggleEnabled(Bool abEnable = True)	If abEnable		kClawReference[iClaw].Enable()	Else		kClawReference[iClaw].Disable()	EndIfEndFunction
...in which case you could kill the FLST.

Edit:
Edit: Fixed
User avatar
ashleigh bryden
 
Posts: 3446
Joined: Thu Jun 29, 2006 5:43 am

Previous

Return to V - Skyrim