Приветствую Вас, Гость! Регистрация RSS
Воскресенье, 22.06.2025
[ Главная страница · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: po61  
Создание топливной системы
CooLДата: Среда, 10.10.2012, 19:53 | Сообщение # 1
Рядовой
Группа: Проверенные
Сообщений: 7

И так ближе к делу я решил выложить свою Топливную систему которую я использовал в своем проекте ведь она очень важна для хорошего RP не занимают много времени ...
ах да забыл здесь команда построена по ZCMD растановки
И так приступим!


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

создаем два паблика

[spoiler]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;
}  [/spoiler]
TextDrawSetString(td_fuel[playerid],"заправляем..."); //игрок
SetTimerEx("timer_refuel",4500,false,"i",playerid);     
}
else { SendClientMessage(playerid, SIVA, "ты не на заправке!"); return true; }
return true;
}  



Сообщение отредактировал CooL - Среда, 10.10.2012, 19:54
 
  • Страница 1 из 1
  • 1
Поиск:

Вверх