User:Cipscis/Testing

From GECK

This page is where I write down results of my tests that I don't think are ready to be recorded on the Wiki yet for some reason. I'm recording this here hoping that someone who sees it can help me to understand just what exactly is going on.

Disappearing Weapons

This bug seems to be caused by calling AddItem in an Effect Script

Reneer recently posted a thread on the GECK Forum detailing a bug where adding a token via a scripted explosion seems to cause NPC's weapons to disappear.

A fix has been found, but at the moment I have no idea what might be causing the bug so there isn't really anywhere in the Wiki that I think I can put it, so I'm mentioning it here until the cause is found.

The fix was to create an unscripted token and add/remove it in the scripted token's OnAdd block:

ref rContainer
Begin OnAdd
    set rContainer to GetContainer
    rContainer.AddItem UnscriptedToken 1 1
    rContainer.RemoveItem UnscriptedToken 1 1
End

RemoveMe

I've just been testing RemoveMe, mainly to see if it has any exploitable peculiarities, and I've come across something that I think is quite odd indeed. I've been using a script to move a visible token back and forth between an Actor and the player every couple of seconds, and it's resulted in some pretty weird stuff. Here is the script that I've been using:

ScriptName TestSCRIPT

float fTimer
ref rContainer
short sIsOnPlayer
short sTemp

Begin OnAdd

	set rContainer to GetContainer
	set sIsOnPlayer to rContainer.GetIsReference player
	set rContainer to GetContainer
	set sTemp to rContainer.GetIsReference player
	PrintToConsole "OnAdd %.0f Is On Player %.0f" sIsOnPlayer sTemp

End

Begin GameMode

	if fTimer < 2
		if fTimer == 0
			set rContainer to GetContainer
			set sTemp to rContainer.GetIsReference player
			PrintToConsole "RemoveMe Successful %.0f Is On Player %.0f" sIsOnPlayer sTemp
		endif
		set fTimer to fTimer + GetSecondsPassed
	else
		set rContainer to GetContainer
		set sTemp to rContainer.GetIsReference player
		PrintToConsole "Timer Elapsed %.0f Is On Player %.0f" sIsOnPlayer sTemp
		set sIsOnPlayer to sIsOnPlayer == 0
		set fTimer to 0
		if sIsOnPlayer
			RemoveMe player
		else
			if TestActorRef.GetInSameCell player == 0
				TestActorRef.MoveTo player
			endif
			RemoveMe TestActorRef
		endif
	endif

End

Begin OnDrop

	set rContainer to GetContainer
	set sTemp to rContainer.GetIsReference player
	PrintToConsole "OnDrop %.0f Is On Player %.0f" sIsOnPlayer sTemp

End

Begin OnEquip

	set rContainer to GetContainer
	set sTemp to rContainer.GetIsReference player
	PrintToConsole "OnEquip %.0f Is On Player %.0f" sIsOnPlayer sTemp

End

Begin OnUnequip

	set rContainer to GetContainer
	set sTemp to rContainer.GetIsReference player
	PrintToConsole "OnUnequip %.0f Is On Player %.0f" sIsOnPlayer sTemp

End

Here is the console output that I get back, including the lines that I entered manually:

player.AddItem 01000ea6 1 ; 01000ea6 is the FormID of the scripted token
OnAdd 1 Is On Player 1
RemoveMe Successful 1 Is On Player 1
Timer Elapsed 1 Is On Player 1
RemoveMe Successful 0 Is On Player 0
Timer Elapsed 0 Is On Player 0
OnAdd 1 Is On Player 1
RemoveMe Successful 1 Is On Player 1
OnDrop 1 Is On Player 1
OnUnequip 1 Is On Player 1
Timer Elapsed 1 Is On Player 1

At the end of this, the token is in the TestActor's inventory, and the script seems to have just stopped running. If anyone has any idea why this is, I'd love to hear it.

MatchFaceGeometry

The parameter listed on this function's page as "MatchPercent" doesn't seem to act in the way it's described. Instead, it seems that it affects the severity with which the Actor's face geometry is changed.

I'll be looking into this when I get the time to test it more thoroughly, but it may be that MatchFaceGeometry can't actually be used to match face geometry...

Personal tools