I put this script on the iron dagger:
Scriptname fg109TestObjScript extends ObjectReference int CountEvent OnContainerChanged(ObjectReference akNewContainer, ObjectReference akOldContainer) Count += 1 Debug.Notification(Count)EndEvent
I used the console to give myself an iron dagger, but no message showed up. I dropped it on the ground. No message showed up. I picked it up, and got the message "1". I dropped it, no message. I picked it up, got "1". I dropped it, got "2". Picked up, "3". Dropped, "2". Picked up, "3". Dropped, "4". Picked up, "5". Dropped, "4". Picked up, "5". Dropped, "6". Etc.
So it looks like the game is actually swapping out two different daggers although I only had one in my inventory. I remember last week there was a topic about how RegisterForUpdate() called from OnLoad() for a weapon wouldn't work. I think it's related to this.
Anyway, I restarted the game and started picking up and dropping daggers again. This time, it took an extra couple of times before the messages showed up. I tried giving myself another dagger and dropping them one at a time. This messed up the alternating order so I got numbers all over the place. It's as though I had 10 daggers and when I dropped or picked them up, I chose them at random.
I also tried restarting the game and giving myself 10 daggers. I dropped and picked them up 10 at a time. I did it 7 times without any messages appearing. Then when I dropped them the 8th time, they disappeared. No longer in my inventory but not in the world either.
I restarted and started dropping 10 daggers again. I did it 20 times but they didn't disappear this time. But of all the times I dropped them or picked them up, I didn't get a single message.
I can live with not being able to keep track of variables, but for the script to not work at all is a problem.

