Автор: Dieggo_Klemente
Чтобы велосипеды не имели у нас двигателей создаём функцию:
Code: Select all
forward IsAVelik(carid);//Форвард
public IsAVelik(carid)//Функция
{
new model = GetVehicleModel(carid);
if(model==509||model==481||model==510)//Если это велик
{
return 1;//тогда ретурн
}
return 0;
}
Создаём цикл и каждой машине ставим параметры engine - false. В public OnGameModeInit вставляем:
Code: Select all
for(new car=0; car<MAX_VEHICLES; car++)
{
if(!IsAVelik(car))
{
new engine,lights,alarm,doors,bonnet,boot,objective;
GetVehicleParamsEx(car,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(car,false,lights,alarm,doors,bonnet,boot,objective);
}
}
Теперь компилируем. Если ошибок нет то продолжаем...Если есть то проверьте всё.
Теперь переходим к запуску двигателя. В public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) вставляем:
Code: Select all
new vid = GetPlayerVehicleID(playerid);
new engine,lights,alarm,doors,bonnet,boot,objective;
if (newkeys == 512 && IsPlayerInVehicle(playerid,vid) && !IsAVelik(vid))
{
GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
if(!engine){SetVehicleParamsEx(vid,true,lights,alarm,doors,bonnet,boot,objective); }
else if(engine){SetVehicleParamsEx(vid,false,lights,alarm,doors,bonnet,boot,objective);}
}
Всё готово теперь двигатель будет запускаться по нажатию 2 и так же глохнуть по нажатию этой клавиши.
Так переходим к бензину. В самом начале создаем переменную.
Code: Select all
new fuel[500];//500 - сколько у вас авто в моде, не обязательно ставить точное кол-во можно больше но не меньше у меня 2000
В этой переменной у нас будет храниться кол-во бензина.
Теперь надо сделать чтоб бензин у нас отнимался. В public OnGameModeInit() вставляем:
Code: Select all
SetTimer("FuelCheck", 10000, 1);// FuelCheck - функция которая будет срабатывать. 10000 - кол-во милисекунд
Идем дальше. Теперь сама функция. В конец мода вставляем:
Code: Select all
forward FuelCheck(playerid);
public FuelCheck(playerid)
{
for(new car=0; car<MAX_VEHICLES; car++)//Каждые 10сек будет срабатывать этот цикл
{
if(!IsAVelik(car))//Проверка на велик
{
new engine,lights,alarm,doors,bonnet,boot,objective;
GetVehicleParamsEx(car,engine,lights,alarm,doors,bonnet,boot,objective);
if(engine)//если двигатель у проверяемой машины работает
{
fuel[car]-=1;//отнимаем 1 литр
if(fuel[car] <= 0)//Если бензина нет
{
SetVehicleParamsEx(car,false,lights,alarm,doors,bonnet,boot,objective);//вырубаем двигатель
}
}
}
}
}
И теперь сделаем так что если бензина нет то он не может завести машину.
В public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) после этого:
Code: Select all
if (newkeys == 512 && IsPlayerInVehicle(playerid,vid) && !IsAVelik(vid))
{
Вставляем это:
Code: Select all
if(fuel[vid] <= 0) return SendClientMessage(playerid, 0xbb0000ff, "Нет бензина!");
Чтобы установить кол во бензина в машинах в public OnGameModeInit, в цикл который мы делали ранее добавляем это:
Code: Select all
//Вставляем после проверки на велик
fuel[car] = 300;//Где 300 это кол во бензина