[FilterScript] Tank Lights System
#1



В синглплеере присутствует баг, когда в тёмное время суток фары на танке не горят. В мультиплеере, соответственно, фиксить это не стали. В данном скрипте я исправил это недоразумение.

Система полностью автоматизирована и работает по принципу обычных фар в синглплеере, т.е. они сами включаются в тёмное время суток, гаснут при выходе из танка.

Для удобства я добавил ещё 2 команды: на включение и выключение фар. Включенные вручную фары горят всегда, пока не перезайдёшь в танк или не выключишь их вручную.

TANK_LIGHTS_SYNC_DELAY - время обновления аттача, отрегулируйте в зависимости от вашего обновления времени. По-умолчанию стоит 30 секунд, согласно стандартному, т.е. 1 минута реального времени = 1 час игрового.

Обновлено: убраны 3 танка, теперь фонари будут работать на всех танках вашего сервера, исправлены незначительные баги.

Code:
/tlon - включить
/tloff - выключить
/tld - выключить ручное управление фарами
/time - установить время
Pastebin: http://pastebin.com/YxWP3Fbi
Reply
#2

Только пробежался по коду, особо не присматривался, но есть несколько вопросов.

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. Не логичнее ли создавать таймер для каждого танка отдельно, чем для игрока?
Reply
#3

Quote:
Originally Posted by stabker
View Post
1. ID таймера и созданного объекта хранятся в char переменных, разве это все будет нормально работать, если возвращенный ид > 255?
Протестируете - скажете, я не могу точно сказать.

Quote:
Originally Posted by stabker
View Post
2. Массив объявлен tlight[MAX_PLAYERS * 2 char], а используется tlight{playerid + 1000}, по-умолчанию MAX_PLAYERS == 500, произойдет обращение к несуществующей ячейке. Скорее всего нужно так tlight{playerid + MAX_PLAYERS} ?
Ну да, тут я просто основывался на билде в 1000p. Конечно, с MAX_PLAYERS будет целесообразнее.

Quote:
Originally Posted by stabker
View Post
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
View Post
4. С читами таймер можно будет запустить несколько раз и несколько раз создать объекты.
Они при запуске таймера удаляются. Ну и скрипт априори не расчитывался на читеров.

Quote:
Originally Posted by stabker
View Post
5. Не логичнее ли создавать таймер для каждого танка отдельно, чем для игрока?
Танков может быть 2000, а игроков - не больше 1000.
Reply
#4

А среди спрайтов в samp.img нет ли текстур света от фар? Если еще и их приаттачить, то от сингла вообще не отличить будет
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)