Доступ к архиву

Переход в группу "Пользователь"

300.00
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info
Статус
В этой теме нельзя размещать новые ответы.

IncoGnitO

Изучающий
Пользователь
Регистрация
11 Ноя 2010
Сообщения
251
Лучшие ответы
0
Репутация
14
Бензин
Начнем с того, что все айди в павно хронятся в формате integer, раставлены по порядку. То есть когда вы создаете обьект, машину, пикап и так далие, ему выдается свой порядковый айди.
Раньше я думал что перед машиной к которой прикрипляеш какоето действие переменную, в ней сохроняется айди в какомто левом формате. То есть без переменных никак. Я ошибался.

Для чего я все это сказал? Это поможет нам сделать маленький код требования бензина для авто, который будет распростронятся на все авто и будет иметь маленький размер именно блогодоря этому.

В паблик OnGameModeInt

PHP:
SetTimer("FuelCheck",10000,1);
Мы создали таймер, этот таймер будет вызывать паблик FuelCheck раз в 10 000 милисикунд (10 сек), повторяя этот цикл до бесконечности.

Такс, у нас есть таймер для паблика, но у нас нет паблика, довайте создадим его
В любое свободное место вне пабликов

PHP:
new Fuel[2000]; //Переменная котороя отвечает за бензин в машинах 
forward FuelCheck(); //Функция создания паблика 
public FuelCheck() //Действия паблика 
{ 
for(new i; i<GetMaxPlayers();) //запускаем цикл, он будет повторятся пока i не будет ровна 
//Максимальному количиству игроков установленому в Server.cfg 
{ 
if(IsPlayerInAnyVehicle(i)) //Если игрок с айди  = i, сидит в любой машине 
{ 
Fuel[GetPlayerVehicleID(i)] -= 1; //Отнимаем 1 литр бензина у машины игрока 
if(Fuel[GetPlayerVehicleID(i)] > 1 ) //Если бензина в машине игрока меньше 1 литра 
{ 
RemovePlayerFromVehicle(i); //Выстовляем игрока из машины 
SendClientMessage(i,0xffd400aa,"В этой машине нет бинзина"); //отпровляем игроку сообщение 
} 
++i; 
} 
} 

return 1; 
}
И так, теперь раз в 10 секунд от у каждой машины отнимается по 1 литру бензина. Если в это время игрок сидит в машине без бензина, его выкидывает из авто.
Но что если игрок сел в машину без бензина? Довайте сделаем так, если игрок сел в машину без бензина, его из нее выкидывало.
Я думаю вы подумали о паблике OnPlayerEnterVehicle? нехрена подобного, он срабатывает тогда когда игрок нажимает F у машины. А когда игрок садится в машину, его нельзя выбросить из нее, это происходит потому что игрок еще не в машине, но он садится в нее. Нам нужен паблик OnPlayerStateChange.
В него встовляем

PHP:
if(newstate == 2) //Если игрок водитель авто, зачем нам выкидывать пассажиров?  
{ 
if(Fuel[GetPlayerVehicleID(playerid)] < 1) //Если в тачке нет бензина 
{ 
RemovePlayerFromVehicle(playerid); //Выкидываем игрока 
SendClientMessage(playerid,0xffd400aa,"В этой машине нет бинзина"); //и отпровляем ему сообщение 
} 
}
Ну вот и все.

Автор Xe[N]o
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу