Всем привет!!!
И так ближе к делу я решил выложить свою Топливную систему которую я использовал в своем проекте ведь она очень важна для хорошего RP не занимают много времени ...
ах да забыл здесь команда построена по ZCMD растановки
И так приступим!
Code
new fuel[MAX_VEHICLES]; //топлива в автомобиле
forward timer_fuel_lower(); //timer
forward timer_refuel(playerid); //таймер, когда вам нужно заполнить водохранилище
new isrefuelling[MAX_PLAYERS] = 0; //определяем топливный баг
new Text:td_fuel[MAX_PLAYERS]; // texdraw
public в OnGameModeInit
Code
for(new i=0;i<MAX_VEHICLES;i++) {
fuel[i] = 100; //устанавливаем на 100
}
SetTimer("timer_fuel_lower",4200,true); //timer
В public OnPlayerSpawn
Code
td_fuel[playerid] = TextDrawCreate(45,324,"Fuel: 100"); //textdraw
TextDrawBackgroundColor(td_fuel[playerid],0x00000033); //устанавливает фон
TextDrawFont(td_fuel[playerid],3); //шрифт
TextDrawLetterSize(td_fuel[playerid],0.699999,1.700000); //размер
TextDrawColor(td_fuel[playerid],0x000000ff); // цвет
TextDrawSetShadow(td_fuel[playerid],3); //Тень
В public OnPlayerStateChange
Code
if (newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)
{
new vid = GetPlayerVehicleID(playerid);
new string[125];format(string,sizeof string,"Fuel:%i",fuel[vid]);
TextDrawSetString(td_fuel[playerid],string);
TextDrawShowForPlayer(playerid,td_fuel[playerid]);
} else {
TextDrawHideForPlayer(playerid,td_fuel[playerid]);
}
Теперь сама команда.
Code
CMD:fill (playerid, params[] ) {
if (!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,0xFFC800FF,"Вы не в автомобилеu!"); //проверка, если игрок находится в автомобиле
if (isrefuelling[playerid]) return SendClientMessage(playerid,0xFFC800FF,"error!");
if (GetPlayerMoney(playerid) - 80 <0) return SendClientMessage(playerid,0xFFC800FF,"Вы не имеете достаточно денег!"); //проверка, если игрок имеет $ 80
if(IsPlayerInRangeOfPoint(playerid, 2, -228.1517,1217.3269,19.7352))
{
GivePlayerMoney(playerid,-80);
SetCameraBehindPlayer(playerid); //ставит камеру за игроком ..
TogglePlayerControllable(playerid,0); //Feeza igraca na nekoliko sec
isrefuelling[playerid] = 1; //помещается заправки к 1, так что она не может игроков спама(флуд)(заправить) /fill
TextDrawSetString(td_fuel[playerid],"заправляем..."); //игрок
SetTimerEx("timer_refuel",4500,false,"i",playerid);
}
else { SendClientMessage(playerid, SIVA, "ты не на заправке!"); return true; }
return true;
}
создаем два паблика
Code
public timer_fuel_lower()
{
for(new i=0;i<MAX_PLAYERS;i++) { // цикл
if (isrefuelling[i]) continue; //остановка при заполнении
new vid = GetPlayerVehicleID(i); //принимает ID автомобиля
if (GetPlayerVehicleSeat(i) == 0) { //если игрок водитель
fuel[vid] = fuel[vid] -1; //заправить
if (fuel[vid]<1) //если автомобиль пустой
{
fuel[vid] = 0; //топливо на 0
RemovePlayerFromVehicle(i);//Игрок выбрасывается из автомобиля
GameTextForPlayer(i,"~r~У вас нет~w~топлива~r! , позвоните в службу буксировки!",5000,4); //text
}
}
new string[125];format(string,sizeof string,"Fuel:%i",fuel[vid]); //строка
TextDrawSetString(td_fuel[i],string); //вставки TD
}
return true;
}
public timer_refuel(playerid)
{
new vid = GetPlayerVehicleID(playerid);
fuel[vid] = fuel[vid] = 100;
isrefuelling[playerid] = 0;//команда предотвращает спам /fil
TextDrawSetString(td_fuel[playerid],"Fuel:100");
TogglePlayerControllable(playerid,1); //замараживает
return true;
}
Вот И Всё, Желаю Удачи!