This is how I would approach it:

Code:
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:
Quote:
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.

Last edited by Kartoffel; 04/04/15 13:24.

POTATO-MAN saves the day! - Random