26_RUSSS | Дата: Среда, 10.11.2010, 04:59 | Сообщение # 1 |
.::Offline::.
Вор в законе
Сообщений: 73
[ 10 ]
Награды: 13
Статус
отсутствует
| Начнем с того, что все айди в pawno хранятся в формате integer, расставлены по порядку. То есть когда вы создаете объект, машину, пикап и так далее, ему выдается свой порядковый айди. Раньше я думал что перед машиной к которой прикрепляешь какое то действие переменную, в ней сохраняется айди в каком то левом формате. То есть без переменных никак. Я ошибался.
Для чего я все это сказал? Это поможет нам сделать маленький код требования бензина для авто, который будет распространятся на все авто и будет иметь маленький размер именно благодаря этому.
В 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]Обложка:
|
|
| |