Tank Lights System -
OKStyle - 14.03.2013
В синглплеере присутствует баг, когда в тёмное время суток фары на танке не горят. В мультиплеере, соответственно, фиксить это не стали. В данном скрипте я исправил это недоразумение.
Система полностью автоматизирована и работает по принципу обычных фар в синглплеере, т.е. они сами включаются в тёмное время суток, гаснут при выходе из танка.
Для удобства я добавил ещё 2 команды: на включение и выключение фар. Включенные вручную фары горят всегда, пока не перезайдёшь в танк или не выключишь их вручную.
TANK_LIGHTS_SYNC_DELAY - время обновления аттача, отрегулируйте в зависимости от вашего обновления времени. По-умолчанию стоит 30 секунд, согласно стандартному, т.е. 1 минута реального времени = 1 час игрового.
Обновлено: убраны 3 танка, теперь фонари будут работать на всех танках вашего сервера, исправлены незначительные баги.
Code:
/tlon - включить
/tloff - выключить
/tld - выключить ручное управление фарами
/time - установить время
Pastebin:
http://pastebin.com/YxWP3Fbi
Re: Tank Lights System -
stabker - 16.03.2013
Только пробежался по коду, особо не присматривался, но есть несколько вопросов.
1. ID таймера и созданного объекта хранятся в char переменных, разве это все будет нормально работать, если возвращенный ид > 255?
2. Массив объявлен tlight[MAX_PLAYERS * 2 char], а используется tlight{playerid + 1000}, по-умолчанию MAX_PLAYERS == 500, произойдет обращение к несуществующей ячейке. Скорее всего нужно так tlight{playerid + MAX_PLAYERS} ?
3. Разве
pawn Code:
if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 432) return 1;
будет правильно работать, если
pawn Code:
oldstate == PLAYER_STATE_DRIVER && newstate != PLAYER_STATE_DRIVER
?
4. С читами таймер можно будет запустить несколько раз и несколько раз создать объекты.
5. Не логичнее ли создавать таймер для каждого танка отдельно, чем для игрока?
Re: Tank Lights System -
OKStyle - 17.03.2013
Quote:
Originally Posted by stabker
1. ID таймера и созданного объекта хранятся в char переменных, разве это все будет нормально работать, если возвращенный ид > 255?
|
Протестируете - скажете, я не могу точно сказать.
Quote:
Originally Posted by stabker
2. Массив объявлен tlight[MAX_PLAYERS * 2 char], а используется tlight{playerid + 1000}, по-умолчанию MAX_PLAYERS == 500, произойдет обращение к несуществующей ячейке. Скорее всего нужно так tlight{playerid + MAX_PLAYERS} ?
|
Ну да, тут я просто основывался на билде в 1000p. Конечно, с MAX_PLAYERS будет целесообразнее.
Quote:
Originally Posted by stabker
3. Разве
pawn Code:
if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 432) return 1;
будет правильно работать, если
pawn Code:
oldstate == PLAYER_STATE_DRIVER && newstate != PLAYER_STATE_DRIVER
?
|
Попробуйте в игре и скажете.
Quote:
Originally Posted by stabker
4. С читами таймер можно будет запустить несколько раз и несколько раз создать объекты.
|
Они при запуске таймера удаляются. Ну и скрипт априори не расчитывался на читеров.
Quote:
Originally Posted by stabker
5. Не логичнее ли создавать таймер для каждого танка отдельно, чем для игрока?
|
Танков может быть 2000, а игроков - не больше 1000.
Re: Tank Lights System -
Makar93 - 17.03.2013
А среди спрайтов в samp.img нет ли текстур света от фар? Если еще и их приаттачить, то от сингла вообще не отличить будет