- Регистрация
- 11 Ноя 2010
- Сообщения
- 251
- Лучшие ответы
- 0
- Репутация
- 14
Бензин
Начнем с того, что все айди в павно хронятся в формате integer, раставлены по порядку. То есть когда вы создаете обьект, машину, пикап и так далие, ему выдается свой порядковый айди.
Раньше я думал что перед машиной к которой прикрипляеш какоето действие переменную, в ней сохроняется айди в какомто левом формате. То есть без переменных никак. Я ошибался.
Для чего я все это сказал? Это поможет нам сделать маленький код требования бензина для авто, который будет распростронятся на все авто и будет иметь маленький размер именно блогодоря этому.
В паблик OnGameModeInt
Мы создали таймер, этот таймер будет вызывать паблик FuelCheck раз в 10 000 милисикунд (10 сек), повторяя этот цикл до бесконечности.
Такс, у нас есть таймер для паблика, но у нас нет паблика, довайте создадим его
В любое свободное место вне пабликов
И так, теперь раз в 10 секунд от у каждой машины отнимается по 1 литру бензина. Если в это время игрок сидит в машине без бензина, его выкидывает из авто.
Но что если игрок сел в машину без бензина? Довайте сделаем так, если игрок сел в машину без бензина, его из нее выкидывало.
Я думаю вы подумали о паблике OnPlayerEnterVehicle? нехрена подобного, он срабатывает тогда когда игрок нажимает F у машины. А когда игрок садится в машину, его нельзя выбросить из нее, это происходит потому что игрок еще не в машине, но он садится в нее. Нам нужен паблик OnPlayerStateChange.
В него встовляем
Ну вот и все.
Автор Xe[N]o
Начнем с того, что все айди в павно хронятся в формате integer, раставлены по порядку. То есть когда вы создаете обьект, машину, пикап и так далие, ему выдается свой порядковый айди.
Раньше я думал что перед машиной к которой прикрипляеш какоето действие переменную, в ней сохроняется айди в какомто левом формате. То есть без переменных никак. Я ошибался.
Для чего я все это сказал? Это поможет нам сделать маленький код требования бензина для авто, который будет распростронятся на все авто и будет иметь маленький размер именно блогодоря этому.
В паблик OnGameModeInt
PHP:
SetTimer("FuelCheck",10000,1);
Такс, у нас есть таймер для паблика, но у нас нет паблика, довайте создадим его
В любое свободное место вне пабликов
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;
}
Но что если игрок сел в машину без бензина? Довайте сделаем так, если игрок сел в машину без бензина, его из нее выкидывало.
Я думаю вы подумали о паблике OnPlayerEnterVehicle? нехрена подобного, он срабатывает тогда когда игрок нажимает F у машины. А когда игрок садится в машину, его нельзя выбросить из нее, это происходит потому что игрок еще не в машине, но он садится в нее. Нам нужен паблик OnPlayerStateChange.
В него встовляем
PHP:
if(newstate == 2) //Если игрок водитель авто, зачем нам выкидывать пассажиров?
{
if(Fuel[GetPlayerVehicleID(playerid)] < 1) //Если в тачке нет бензина
{
RemovePlayerFromVehicle(playerid); //Выкидываем игрока
SendClientMessage(playerid,0xffd400aa,"В этой машине нет бинзина"); //и отпровляем ему сообщение
}
}
Автор Xe[N]o