• Страница 1 из 1
  • 1
Модератор форума: valych  
Бензин
26_RUSSSДата: Среда, 10.11.2010, 04:59 | Сообщение # 1
.::Offline::.
Вор в законе
Сообщений: 73
[ 10 ]
Награды: 13

Статус отсутствует
Начнем с того, что все айди в pawno хранятся в формате integer, расставлены по порядку. То есть когда вы создаете объект, машину, пикап и так далее, ему выдается свой порядковый айди.
Раньше я думал что перед машиной к которой прикрепляешь какое то действие переменную, в ней сохраняется айди в каком то левом формате. То есть без переменных никак. Я ошибался.

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

В
Code
public OnGameModeInt

Code

       SetTimer("FuelCheck",10000,1);

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

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

       new Fuel[2000]; //Переменная котороя отвечает за бензин в машинах
       forward FuelCheck(); //Функция создания public
       public FuelCheck() //Действия public
       {
       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 литру бензина. Если в это время игрок сидит в машине без бензина, его выкидывает из авто.
Но что если игрок сел в машину без бензина? Давайте сделаем так, если игрок сел в машину без бензина, его из нее выкидывало.
Я думаю вы подумали о public OnPlayerEnterVehicle? он срабатывает тогда когда игрок нажимает F у машины. А когда игрок садится в машину, его нельзя выбросить из нее, это происходит потому что игрок еще не в машине, но он садится в нее. Нам нужен public OnPlayerStateChange.
В него вставляем
Code

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

Ну вот и все.
Как все? А где заправка? Где выдача арендованного бензина? У вас в головах. Я показал вам принцип, объяснил как это сделать. Я могу вам только показать путь, а вы уже сами идете по нему. Такова моя логика. Как я могу вас научить, если вы будите просто копировать мой код?
Скажу так, если вы будите додумывать сами, решать проблемы сами, вы научитесь. А иначе просто пропустите мимо глаз.


Нарушение О_о какое нарушение?
мои разработки
[FS]bank,[FS]vip2,[FS]console,[FS]RACE v2.5.
Кому надо скрипт разработать пиши на мыло admin@samp-pawno.ru :)
 
fenix05Дата: Понедельник, 18.06.2012, 13:19 | Сообщение # 2
.::Offline::.
Гангстер
Сообщений: 151
[ 62 ]
Награды: 4

Статус отсутствует
комплется норм, но при входе на серв, зависает на коннекте. до выбора скина. (0.3е)


Alien Brickman [vk.com/alien_brickman]Обложка:
 
  • Страница 1 из 1
  • 1
Поиск:


Copyright www.SAMP-TEAM.com (c) 2009-2025
Правила использования материалов сайта

При копировании материалов из нашего сайта
ссылка на www.SAMP-TEAM.com обязательна!
Нарушители правил будут строго наказаны!

Хостинг от uCoz   
Для корректного просмотра мы рекомендуем Вам использовать браузер Google Chrome.
Яндекс.Метрика