icecreamassassin Posted October 23, 2014 Share Posted October 23, 2014 here's the script in question with secondary functions commented out to streamline the testing: Scriptname DBM_PrepStationScript extends ObjectReference FormList Property DisplayActivators Auto FormList Property DisplayItems Auto ObjectReference Property DisplaySafe Auto ObjectReference Property TransferBox Auto GlobalVariable Property DBM_DisplayMAX Auto Message Property SortMsg Auto GlobalVariable Property DBM_SortWait Auto objectReference O Form f auto state ready Event OnActivate(ObjectReference akActionRef) if(akActionRef == Game.GetPlayer()) gotostate("busy") int SortBtn = SortMsg.show() if SortBtn == 0 ; Sort all display items int MainCNT = 0 DBM_DisplayMax.value = (0) Int index = DisplayActivators.GetSize() Debug.Notification("All items being displayed, this will take a moment") While index index -= 1 F = DisplayItems.GetAt(index) as form O = DisplayActivators.GetAt(index) as ObjectReference if(akActionRef.GetItemCount(F)) akActionRef.Removeitem(F, 1, true, TransferBox) DBM_DisplayMax.Value += 1 O.Enable() endif EndWhile O = none TransferBox.RemoveAllItems(akTransferTo = DisplaySafe) Debug.Messagebox("All items displayed") Endif gotostate("ready") endif EndEvent endstate state busy event OnActivate(ObjectReference akActionRef) if (akActionRef == Game.GetPlayer()) Debug.messagebox("You must wait for the current sorting opperation to complete before starting another") endif endEvent endState Here is the script on the 'Displaychest' container the stuff is dumped into after the above script runs which triggers the 'onitemadded' event: The script here is really for use when you access the container directly and place stuff in it, the code is really unnecessary for the previous script's purpose as it does all of this stuff already Scriptname DBM_DisplayRemovedScript extends ObjectReference FormList Property DisplayItems Auto FormList Property DisplayActivators Auto FormList Property DBM_KAItems Auto FormList Property DBM_KADisplays Auto FormList Property DBM_JarItems Auto FormList Property DBM_JarDisplays Auto FormList Property DBM_UTItems Auto FormList Property DBM_UTDisplays Auto FormList Property DBM_BCSItems Auto FormList Property DBM_BCSDisplays Auto ObjectReference Property DisplayChest Auto GlobalVariable Property DBM_DisplayMAX Auto Int Property WFUpdate Auto Event OnItemRemoved(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akDestContainer) int iIndex ObjectReference DISP if akBaseItem == (DisplayItems.HasForm(akBaseItem)) iIndex = DisplayItems.Find(akBaseItem) DISP = DisplayActivators.GetAt(iIndex)as objectreference DISP.Disable() ; DBM_DisplayMAX.SetValue(DBM_DisplayMAX.GetValue() - 1) ; elseif akBaseItem == (DBM_KAItems.HasForm(akBaseItem)) ; iIndex = DBM_KAItems.Find(akBaseItem) ; DISP = DBM_KADisplays.GetAt(iIndex)as objectreference ; DISP.Disable() ; DBM_DisplayMAX.SetValue(DBM_DisplayMAX.GetValue() - 1) ; elseif akBaseItem == (DBM_JarItems.HasForm(akBaseItem)) ; iIndex = DBM_JarItems.Find(akBaseItem) ; DISP = DBM_JarDisplays.GetAt(iIndex)as objectreference ; DISP.Disable() ; DBM_DisplayMAX.SetValue(DBM_DisplayMAX.GetValue() - 1) ; elseif akBaseItem == (DBM_BCSItems.HasForm(akBaseItem)) ; iIndex = DBM_BCSItems.Find(akBaseItem) ; DISP = DBM_BCSDisplays.GetAt(iIndex)as objectreference ; DISP.Disable() ; DBM_DisplayMAX.SetValue(DBM_DisplayMAX.GetValue() - 1) ; elseif akBaseItem == (DBM_UTItems.HasForm(akBaseItem)) ; iIndex = DBM_UTItems.Find(akBaseItem) ; DISP = DBM_UTDisplays.GetAt(iIndex)as objectreference ; DISP.Disable() ; DBM_DisplayMAX.SetValue(DBM_DisplayMAX.GetValue() - 1) endif endevent Event OnItemAdded(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akDestContainer) int iIndex ObjectReference DISP if akBaseItem == (DisplayItems.HasForm(akBaseItem)) iIndex = DisplayItems.Find(akBaseItem) DISP = DisplayActivators.GetAt(iIndex)as objectreference DISP.enable() ; DBM_DisplayMAX.SetValue(DBM_DisplayMAX.GetValue() + 1) ; elseif akBaseItem == (DBM_KAItems.HasForm(akBaseItem)) ; iIndex = DBM_KAItems.Find(akBaseItem) ; DISP = DBM_KADisplays.GetAt(iIndex)as objectreference ; DISP.enable() ; DBM_DisplayMAX.SetValue(DBM_DisplayMAX.GetValue() + 1) ; elseif akBaseItem == (DBM_JarItems.HasForm(akBaseItem)) ; iIndex = DBM_JarItems.Find(akBaseItem) ; DISP = DBM_JarDisplays.GetAt(iIndex)as objectreference ; DISP.enable() ; DBM_DisplayMAX.SetValue(DBM_DisplayMAX.GetValue() + 1) ; elseif akBaseItem == (DBM_BCSItems.HasForm(akBaseItem)) ; iIndex = DBM_BCSItems.Find(akBaseItem) ; DISP = DBM_BCSDisplays.GetAt(iIndex)as objectreference ; DISP.enable() ; DBM_DisplayMAX.SetValue(DBM_DisplayMAX.GetValue() + 1) ; elseif akBaseItem == (DBM_UTItems.HasForm(akBaseItem)) ; iIndex = DBM_UTItems.Find(akBaseItem) ; DISP = DBM_UTDisplays.GetAt(iIndex)as objectreference ; DISP.enable() ; DBM_DisplayMAX.SetValue(DBM_DisplayMAX.GetValue() + 1) endif endevent And here is the segment of my papyrus log. It's about 1700 pages long after about 10 minutes of play where I basically COC into my utility cell to get items (right from the main menu) then pop into the cell with the activators and use the activator which takes a couple minutes to process. Then I exit the game. [10/22/2014 - 08:46:46PM] Dumping stack 6846: [10/22/2014 - 08:46:46PM] Frame count: 2 (Page count: 2) [10/22/2014 - 08:46:46PM] State: Waiting on other stack for return (Freeze state: Freezing) [10/22/2014 - 08:46:46PM] Type: Normal [10/22/2014 - 08:46:46PM] Return register: True [10/22/2014 - 08:46:46PM] Has stack callback: No [10/22/2014 - 08:46:46PM] Stack trace: [10/22/2014 - 08:46:46PM] [ (091214DA)].FormList.HasForm() - "<native>" Line ? [10/22/2014 - 08:46:46PM] IP: 0 [10/22/2014 - 08:46:46PM] [param1]: [MiscObject < (0A0F011E)>] [10/22/2014 - 08:46:46PM] [ (09126087)].DBM_DisplayRemovedScript.OnItemAdded() - "DBM_DisplayRemovedScript.psc" Line 59 [10/22/2014 - 08:46:46PM] IP: 0 Instruction: 0 Line: 59 [10/22/2014 - 08:46:46PM] [akBaseItem]: [MiscObject < (0A0F011E)>] [10/22/2014 - 08:46:46PM] [aiItemCount]: 1 [10/22/2014 - 08:46:46PM] [akItemReference]: None [10/22/2014 - 08:46:46PM] [akDestContainer]: [ObjectReference < (0A1BBFFC)>] [10/22/2014 - 08:46:46PM] [::temp7]: False [10/22/2014 - 08:46:46PM] [::temp8]: False [10/22/2014 - 08:46:46PM] [iIndex]: 0 [10/22/2014 - 08:46:46PM] [DISP]: None [10/22/2014 - 08:46:46PM] [::temp9]: 0 [10/22/2014 - 08:46:46PM] [::temp10]: None [10/22/2014 - 08:46:46PM] [::temp11]: None [10/22/2014 - 08:46:46PM] [::NoneVar]: None [10/22/2014 - 08:46:46PM] [::temp12]: 0.000000 [10/22/2014 - 08:46:46PM] [::temp13]: 0.000000 [10/22/2014 - 08:46:46PM] Dumping stack 6846: [10/22/2014 - 08:46:46PM] Frame count: 2 (Page count: 2) [10/22/2014 - 08:46:46PM] State: Waiting on other stack for return (Freeze state: Freezing) [10/22/2014 - 08:46:46PM] Type: Normal [10/22/2014 - 08:46:46PM] Return register: True [10/22/2014 - 08:46:46PM] Has stack callback: No [10/22/2014 - 08:46:46PM] Stack trace: [10/22/2014 - 08:46:46PM] [ (091214DA)].FormList.HasForm() - "<native>" Line ? [10/22/2014 - 08:46:46PM] IP: 0 [10/22/2014 - 08:46:46PM] [param1]: [MiscObject < (0A0F011E)>] [10/22/2014 - 08:46:46PM] [ (09126087)].DBM_DisplayRemovedScript.OnItemAdded() - "DBM_DisplayRemovedScript.psc" Line 59 [10/22/2014 - 08:46:46PM] IP: 0 Instruction: 0 Line: 59 [10/22/2014 - 08:46:46PM] [akBaseItem]: [MiscObject < (0A0F011E)>] [10/22/2014 - 08:46:46PM] [aiItemCount]: 1 [10/22/2014 - 08:46:46PM] [akItemReference]: None [10/22/2014 - 08:46:46PM] [akDestContainer]: [ObjectReference < (0A1BBFFC)>] [10/22/2014 - 08:46:46PM] [::temp7]: False [10/22/2014 - 08:46:46PM] [::temp8]: False [10/22/2014 - 08:46:46PM] [iIndex]: 0 [10/22/2014 - 08:46:46PM] [DISP]: None [10/22/2014 - 08:46:46PM] [::temp9]: 0 [10/22/2014 - 08:46:46PM] [::temp10]: None [10/22/2014 - 08:46:46PM] [::temp11]: None [10/22/2014 - 08:46:46PM] [::NoneVar]: None [10/22/2014 - 08:46:46PM] [::temp12]: 0.000000 [10/22/2014 - 08:46:46PM] [::temp13]: 0.000000 Link to comment Share on other sites More sharing options...
icecreamassassin Posted October 23, 2014 Author Share Posted October 23, 2014 ok So I have it boiled down to the DisplayChest script and get this slighting more condensed error: [10/22/2014 - 09:48:50PM] Dumping stack 6918: [10/22/2014 - 09:48:50PM] Frame count: 0 (Page count: 0) [10/22/2014 - 09:48:50PM] State: Waiting on other stack for call (Freeze state: Freezing) [10/22/2014 - 09:48:50PM] Type: Normal [10/22/2014 - 09:48:50PM] Return register: None [10/22/2014 - 09:48:50PM] Has stack callback: No [10/22/2014 - 09:48:50PM] Stack trace: [10/22/2014 - 09:48:50PM] [ (09126087)].DBM_DisplayRemovedScript.OnItemAdded() - (requested call) [10/22/2014 - 09:48:50PM] [param 0]: [Form < (0001ACD6)>] [10/22/2014 - 09:48:50PM] [param 1]: 1 [10/22/2014 - 09:48:50PM] [param 2]: None [10/22/2014 - 09:48:50PM] [param 3]: [ObjectReference < (0A1BBFFC)>] and this would be the script Event OnItemRemoved(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akDestContainer) int iIndex ObjectReference DISP if akBaseItem == (DisplayItems.HasForm(akBaseItem)) iIndex = DisplayItems.Find(akBaseItem) DISP = DisplayActivators.GetAt(iIndex)as objectreference DISP.Disable() DBM_DisplayMAX.SetValue(DBM_DisplayMAX.GetValue() - 1) I'm rather baffled what in this script segment would be causing a stack dump issue Link to comment Share on other sites More sharing options...
Recommended Posts