Talk:OnAttachedToCell - ObjectReference
Jump to navigation
Jump to search
It would be appreciated if this page would go over what "attached" and "unattached" mean as it relates to ObjectReferences, as I have no idea and I can't find information elsewhere. -- Chesko
- I second the above. This page needs to be more informative. Antares (talk) 10:21, 6 October 2012 (EDT)
- There's an example with Balimund who's Riften's Blacksmith, trainer and merchant. The following script is attached to him:
Scriptname TrainerGoldScript extends Actor
int Property TrainerType Auto
miscobject Property gold001 Auto
Function CheckGold()
int MaxGold
if TrainerType==1
MaxGold=500
elseif TrainerType==2
MaxGold=800
elseif TrainerType==3
MaxGold=1500
else
MaxGold=500
endif
int GoldCount=GetItemCount(Gold001)
if GoldCount > MaxGold
RemoveItem(Gold001, (GoldCount-MaxGold))
endif
EndFunction
Event OnDetachedFromCell()
CheckGold()
EndEvent
Event OnCellDetach()
CheckGold()
EndEvent
- CheckGold function is called from OnDetachedFromCell and OnCellDetach events. When those events happen is a total mystery to me. However, a look at what CheckGold function does unveils a little clue : Balimund's TrainerType property is initialised to 2, which means that he'll end-up with maximum 800 gold when one of those two events happen. If he has less then he'll end up with the same amount. Personally I can't go further down the logic, since in my game I haven't seen this happen : either there's a 2 days merchant reset taking place, which does not leave the merchant with a lesser amount than the "default" one, either we can trade with whatever amount has been traded up until now, which does not remove any gold above some default value as is the case here via MaxGold function variable (set by the TrainerType property). A mystery... Could this be related to training? Or do some specific NPC as Balimund have their gold amount processed this way, related to some "attachment" an actor or location could have with the cell? What constitutes such attachment? This "attachment" thing is so blurred...
- EDIT - it looks like this would be more appropriate than using OnLoad event in some cases : the later won't fire up if the object is already loaded in memory. However, OnAttachedToCell would fire up everytime you get into that cell even though its objects are already loaded in memory.
- EDIT 2 - it seems that OnCellAttach would be the way to go for exterior cells : OnAttachdToCell does NOT happen every time the player gets into a cell where however an OnCellAttach event fires up. Like the page says, this event fires when the related object is moved from one other cell to the current one.
- --HawkFest (talk) 21:49, 14 December 2012 (EST)
- This driven some people bonkers, but once you mess with he events long enough, their inner workings becomes easy to understand -
Player goes into cell containing Ref -> OnCellAttach runs -> Ref Moves to new cell with player -> OnAttachedCell runs -> Ref moves back -> OnDetachedFromCell -> Player leaves ref's parent cell -> OnCellDetach. --Rasikko (talk) 2021-10-14T15:27:18 (EDT)