[Урок] Создание Топливной Системы - Форум Cheat-Master.ru
  • Страница 1 из 1
  • 1
Модератор форума: Phoenixxx_Czar, Getbackthere, [CM]OlegEhtler  
[Урок] Создание Топливной Системы
[CM]Jaxson Дата: Среда, 10.10.2012, 10:19 | Сообщение # 1
٩(̾●̮̮̃̾•̃̾)۶
Сообщений: 801
Статус: Offline
Всем привет!!!
И так ближе к делу я решил выложить свою Топливную систему которую я использовал в своем проекте ведь она очень важна для хорошего 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;
}  


Вот И Всё, Желаю Удачи!



[ Skype ] [ Профиль ] [ Mods Pack ] [ VK ] [ Геймеры ]
Помогаю новичкам, по всем вопросом комне в Skype/VK. VK ВЗЛОМАН, НЕ РАБОТАЙТЕ СОМНОЙ. МНЕ ВСЁ ВЗЛОМАЛИ СКАЙП И ВК. СКАЙП ВОССТОНОВИЛ.
lesuk Дата: Среда, 10.10.2012, 10:43 | Сообщение # 2
Новичок
Сообщений: 3
Статус: Offline
Превет вирты переводиш Знаток?
  • Страница 1 из 1
  • 1
Поиск: