Ah, ok, verstehe. Der Mauszeiger tut nun das was er soll

Was ist denn an diesem Codeauszug falsch?
Ziel: Bei Drücken der Maustaste 4 soll der Spieler automatisch laufen/gehen. Bei erneutem drücken der Maustaste 4 soll er stehen bleiben.
Es funktioniert auch allerdings nur sporadisch. Verstehe nicht wo der Fehler liegen soll

// Maustasten 4 und 5 definieren
#define mouse_4 (GetKeyState(5) > 1)
#define mouse_5 (GetKeyState(6) > 1)
#define AUTO_RUN skill2 // Automatisch laufen 0=aus, 1=an
function fAutoRun() {
my.AUTO_RUN = 0;
while(1) {
// Autorun
if (mouse_4) {
if (my.AUTO_RUN)
my.AUTO_RUN = 0;
else
my.AUTO_RUN = 1;
}
if (my.AUTO_RUN) {
vecPlayerMoveSpeed.x = (RUN_SPEED - key_shift * WALK_SPEED) * time_step;
vecPlayerMoveSpeed.x -= (RUN_BACK_SPEED - key_shift * WALK_BACK_SPEED) * time_step;
}
// Bewegen des Spielers mit Kollisionserkennung. dabei werden alle passierbaren Objekte ignoriert und dafür gesorgt, dass der Spieler an Kanten entlanggleitet.
c_move(me, vecPlayerMoveSpeed.x, nullvector, IGNORE_PASSABLE | IGNORE_PASSENTS | GLIDE);
}
}
Wenn "mouse_4" geklickt wird, dann wird geprüft ob "my.AUTO_RUN" auf 1 steht. Wenn ja, dann auf 0 setzten. wenn nein, dann auf 1 setzten. Wenn "my.AUTO_RUN" = 1 dann laufe und laufe und laufe und laufe......
Oder hab ich da einen Denkfehler?