Zależnie od ilości fps może być to za rzadko, sugeruję użyć frame triggera. Ale może lepiej niech wypowie się ktoś kto z tego korzystał.
Właściwie ten kod jest zły, przy przytrzymaniu klawisza nakładałby tego overlaymds ciągle. Nie jestem pewien czy wywoła to poważne problemy, ale powinien robić to tylko raz. Czyli albo musiałbyś dodać zmienną, albo zmienić nasłuchiwany stan.
var int keystate_g; //nad funkcją
...
var int keystate_g_current
keystate_g_current = MEM_KeyState(KEY_G);
if (keystate_g!= keystate_g_current )
{
if (keystate_g_current == KEY_HOLD)
{
Mdl_ApplyOverlayMDS (self, "HUMANS_SPRINT.MDS");
}
else
{
Mdl_RemoveOverlayMDS (self, "HUMANS_SPRINT.MDS");
}
keystate_g = keystate_g_current;
};