Toworish, w Twoim skrypcie zmienna = !zmienna powoduje, że zmienna przechodzi w odwrotną wartość, czyli od 0 i niżej (czyli 0, -1, -2 itd.) to wartość ujemna (tak, nawet zero) a 1 i wyżej to wartość dodatnia. Więc działa to tak:
0 = !0 = 1 -> 1 = !1 = 0
Czyli w skrócie przemienia wartość z dodatniej na ujemną i odwrotnie.
@Siemaczys Skrypt powinien wyglądać tak:
func void Sprint_Init()
{
if (MEM_KeyState (KEY_GRAVE) == KEY_PRESSED && Stamina > 5)
&& !(C_BodyStateContains(hero, BS_FALL)||C_BodyStateContains(hero, BS_JUMP)))
{
if (sprint){
Mdl_ApplyOverlayMDS(hero,"Humans_Sprint");
}
else
{
Mdl_RemoveOverlayMDS(hero,"Humans_Sprint");
};
Sprint= !Sprint;
};
};