Quote:
Originally Posted by Delphi
Да, так и планировал. Думал задействовать Streamer Dynamic Area для первичного определения игрока авто. Если Dymanic Area сработал, и разные проверки выполнены, то игроку ставится переменная на 1, и в OnPlayerUpdate включается точное определение по колёсам.
|
Вообще всё зависит от того, какое максимальное количество шипов ты планируешь разрешить.
Если шипов будет мало - можно заюзать и динамические зоны. Но я бы лучше просто запускал индивидуальный таймер, когда игрок запускает двигатель в авто, и уже в таймере делал бы все нужные проверки.
И если шипов может быть много, я бы сделал так:
1) Разделил карту на определённое количество квадратов, постаравшись заранее предугадать где чаще всего игроки будут ставить шипы. В зонах, где шипы будут ставить чаще (какое-нибудь гетто, например), квадратов было бы больше, дабы каждый квадрат в себе содержал минимальное количество зон.
2) Создал бы массив под каждый из квадратов для хранения ID шипов, чтоб в дальнейшем работать напрямую с шипами из текущего квадрата, а не обрабатывать все шипы.
3) При создании шипов определял бы квадрат, в котором они находятся, и записал бы ID зоны в соответствующий массив.
4) Отслеживал бы то, в каком квадрате находится игрок и уже работал с координатами тех шипов, которые находятся в этом квадрате.
+ для точности можно так же на каждые шипы вешать какой-то радиус, при котором бы запускался таймер с минимальным интервалом. И уже в таймере массивом передавать ID шипов для сверки координат, чтоб по новой не определять их.
Это + индивидуальный таймер, который работает только когда игрок движется в авто - всё это позволит свести к минимуму лишние проверки.
Хотя, опять же, если ты будешь делать вменяемое ограничение на количество шипов, то можно обойтись и без разграничения карты на квадраты (ну или написать более универсальную систему, начав использовать эти разграничения не только для шипов, но и для всех остальных случаев, когда нужно сверять координаты).