Для начала заведём массив, который будет указывать на статус машины(заведенная или нет)
PHP код:
new bool:Engine[MAX_VEHICLES];
Теперь сделаем уведомление.
Ищем public OnPlayerStateChange(playerid, newstate, oldstate)
и сразу после if(newstate == PLAYER_STATE_DRIVER)
вставьте :
PHP код:
new v = GetPlayerVehicleID(playerid);
if(!Engine[v])
{
SendClientMessage(playerid, COLOR_GREY, "Двигатель не работает. Заведите его.");
TogglePlayerControllable(playerid, 0);//для заморозки
}
и теперь сделаем команду, для заводки самого двигателя:
в OnPlayerCommandText(playerid, cmdtext[])
PHP код:
if(strcmp(cmd,"/engine",true)==0)
{
if(GetPlayerState(playerid)==PLAYER_STATE_DRIVER)
{
new v = GetPlayerVehicleID(playerid);
if(!Engine[v])
{
Engine[v]=true;
TogglePlayerControllable(playerid, 1);
SendClientMessage(playerid, COLOR_GREY, "Двигатель завелся.");
return 1;
}
if(Engine[v])
{
Engine[v]=false;
TogglePlayerControllable(playerid, 0);
SendClientMessage(playerid, COLOR_GREY, "Двигатель выключен.");
return 1;
}
}
}
Теперь нам нужно добавить, что бы при выключенном двигателе не убавлялся бензин:
ищем public CheckGas
и в условие if(Gas[vehicle] >= 1) добавляем проверку на двигатель:
if(Gas[vehicle] >= 1 && Engine[vehicle])
Что бы выйти из машины (Клавиша Enter)
В OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
PHP код:
if(newkeys == KEY_SECONDARY_ATTACK && oldkeys==0 && GetPlayerState(playerid)==2)
{
new v = GetPlayerVehicleID(playerid);
if(Engine[v] == 0)
{
TogglePlayerControllable(playerid, 1);//для разморозки
RemovePlayerFromVehicle(playerid);
}
}