А параметры newkeys и oldkeys для кого? Узнаём длительность этого вашего звука и запускаем таймер при нажатии на клавишу с тем интервалом, с которым играет наш звук. А после делаем какую-нибудь переменную, по которой будем отлавливать нажатие следующей клавиши и глушим звук. Ну что-то типа
PHP код:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
new vehicle_id = GetPlayerVehicleId(playerid);
if(vehicle_id)
{
if(newkeys & KEY_FIRE && !(oldkeys & KEY_FIRE))
{
SetTimerEx("SoundEngine", /*Интервал*/, 0, "i", playerid);
SetPVarInt(playerid, "EngineStartPressed", 1);
//Запускаем наш звук и выполняем другие действия
}
else if(!(oldkeys & KEY_FIRE) && !(newkeys & KEY_FIRE))
{
DeletePVar(playerid, "EngineStartPressed");
}
}
return 1;
}
forward SoundEngine(playerid);
public SoundEngine(playerid)
{
if(Двигатель нужно завести)
{
DeletePVar(playerid, "EngineStartPressed");
//Запускаем двигатель
}
else
{
//Повторно запускаем звук
}
if(GetPVarInt(playerid, "EngineStartPressed")) SetTimerEx("SoundEngine", /*Интервал*/, 0, "i", playerid);
return 1;
}
Но не проверял