This is how I would approach it:
var flashlight_on = 0;
void toggle_flashlight()
{
flashlight_on = 1 - flashlight_on; // toggle between 1 and 0
if(flashlight_on)
{
// *** turn flashlight on
while(flashlight_on)
{
// *** battery drain
}
}
else
{
// *** turn flashlight off
}
}
main()
{
// blabla
on_f = toggle_flashlight; // assign 'toggle_flashlight' to the [F]-key
// blabla
}
Note that the 'on_f'-event gets executed only a single time when you press the button, no matter how long you keep it pressed (which is exactly what you want in this case).
Edit: Obviously, you have to put your own stuff where the "// ***" are.
Edit2:
Ja, ich habe die Taschenlampen-Funktion innerhalb einer while(1) Schleifen aufgerufen, sodass ständig überprüft wird, ob die f-Taste gedrückt wird.
Also genauso wie in deinem Beispiel, nur dass die Schleife bei mir in einer Entity-Aktion steht
Das ist dann auch das Problem. Damit wird nämlich die Funktion jeden frame gestartet so lange du die F-Taste gedrückt hältst. Deswegen läuft die countdown-funktion mehrmals parallel, was dann dazu führt dass der counter viel schneller und unregelmäßig runterzählt.