SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Русский/Russian

Reply
 
Thread Tools Display Modes
Old 19/03/2019, 05:31 AM   #11
Mutha_X
Gangsta
 
Join Date: Sep 2009
Location: recursion
Posts: 658
Reputation: 37
Default Re: Полицейские шипы

Quote:
Originally Posted by Eims View Post
И если шипов может быть много, я бы сделал так:
1) Разделил карту на определённое количество квадратов, постаравшись заранее предугадать где чаще всего игроки будут ставить шипы. В зонах, где шипы будут ставить чаще (какое-нибудь гетто, например), квадратов было бы больше, дабы каждый квадрат в себе содержал минимальное количество зон.
2) Создал бы массив под каждый из квадратов для хранения ID шипов, чтоб в дальнейшем работать напрямую с шипами из текущего квадрата, а не обрабатывать все шипы.
3) При создании шипов определял бы квадрат, в котором они находятся, и записал бы ID зоны в соответствующий массив.
4) Отслеживал бы то, в каком квадрате находится игрок и уже работал с координатами тех шипов, которые находятся в этом квадрате.
+ для точности можно так же на каждые шипы вешать какой-то радиус, при котором бы запускался таймер с минимальным интервалом. И уже в таймере массивом передавать ID шипов для сверки координат, чтоб по новой не определять их.
Зачем это всё нужно, когда от стримера можно узнать подгружен ли объект игроку или нет? В т.ч. можно добавить расстояние стрима шипов не более 70-100 метров чтобы (да и некоторых других объектов) для отсеивания. Более того, это также решает проблему того, что в других виртуальных мирах шипы могут быть не нужны.
Mutha_X is offline   Reply With Quote
Old 19/03/2019, 10:34 AM   #12
Eims
Huge Clucker
 
Eims's Avatar
 
Join Date: May 2013
Location: Восточный Мордор
Posts: 475
Reputation: 19
Default Re: Полицейские шипы

Quote:
Originally Posted by Mutha_X View Post
Зачем это всё нужно, когда от стримера можно узнать подгружен ли объект игроку или нет? В т.ч. можно добавить расстояние стрима шипов не более 70-100 метров чтобы (да и некоторых других объектов) для отсеивания. Более того, это также решает проблему того, что в других виртуальных мирах шипы могут быть не нужны.
Ну да. Только вот ещё узнать бы какой именно объект нам нужно проверять. А каждый вызов Streamer_IsItemVisible будет приводить к вызову цикла внутри стримера на перебор всех текущих отображённых объектов. В итоге, количество действий станет только больше, если игроку, например, будет отображено 1000 объектов и нужный объект будет одним из последних
Люблю самповских оптимизаторов

Ответ на следующее сообщение от Mutha_X: Хмм, забыл про сортировку внутри стримера. Тогда да, твой вариант лучше. Был не прав.
__________________
- How many IT Engineers does it take to fix a broken light bulb?
- None, the light bulb works fine in my office, I cannot replicate the issue.

Last edited by Eims; 25/03/2019 at 07:32 AM.
Eims is offline   Reply With Quote
Old 19/03/2019, 01:11 PM   #13
OstGot
Gangsta
 
OstGot's Avatar
 
Join Date: Mar 2013
Location: Gomel, Belarus
Posts: 959
Reputation: 347
Default Re: Полицейские шипы

Если уже до таких костылей дело доходит, то проще подключить ColAndreas (и оправданнее, если он и так используется) и пускать луч с координат каждого колеса вниз на землю. Если найденный объект оказывается объектом шипов - пробиваем это колесо, под которым он был найден. Таким образом ещё и каждое конкретное колесо можно будет пробить отдельно за раз. Единственное, что в этом случае будет нужно учитывать для более точного детекта - размер самого колеса и ограниченную дистанцию луча, чтобы слишком далеко вниз не бросать, если машина в воздухе над землёй.
__________________
aka Nexius
Don't want to always check for updates of my scripts?
Include it the last, after all others
Nexius's Update Checker
OstGot is offline   Reply With Quote
Old 19/03/2019, 02:23 PM   #14
Mutha_X
Gangsta
 
Join Date: Sep 2009
Location: recursion
Posts: 658
Reputation: 37
Default Re: Полицейские шипы

Quote:
Originally Posted by Eims View Post
Ну да. Только вот ещё узнать бы какой именно объект нам нужно проверять. А каждый вызов Streamer_IsItemVisible будет приводить к вызову цикла внутри стримера на перебор всех текущих отображённых объектов. В итоге, количество действий станет только больше, если игроку, например, будет отображено 1000 объектов и нужный объект будет одним из последних
Люблю самповских оптимизаторов
Если ты не знал, то Streamer_GetAllVisibleItems записывает в input номера объектов в порядке увеличения дальности от игрока. Твой случай, когда с помощью скрипта придётся перебирать до 1000-ого объекта возможен только в случае, если все 1000 объектов будут сосредоточены в сфере с радиусом как у машины.
Более того, проверки чуть ли не гарантированно можно завершать на первом встреченном объекте-шипах. Мало вероятно, что ты разрешишь бесконечно спавнить шипы на расстоянии друг от друга меньшем, чем сумма 2х описывающих их сфер. А также маловероятно, что будет разрешено спавнить шипы там, где куча мусора. Маловероятно, что ты не задумаешься о выставлении приоритетов объектам в их порядке стрима и о настройке дальности их стрима индивидуально мод каждую модель.

Потом можно добить это дело и через вектор-плагины.

И вообще, мы же в мультиплеере: тут для точности мало проверить расстояние от каждого из колеса до шипов - надо ещё линейно проинтерполировать за 2 OnPlayerUpdate цилиндром и проверить как он там пересекается с боксом шипов (та с чем-то ColAndreas в этом как-раз поможет, только хорошо бы шипам высоту "хитбокса" увеличить, чтобы была хотя бы с полколеса).
Mutha_X is offline   Reply With Quote
Old 19/03/2019, 06:08 PM   #15
White_116
High-roller
 
Join Date: Sep 2010
Location: Russia/116
Posts: 1,495
Reputation: 69
Default Re: Полицейские шипы

Сложные вы парни.
Никакой тут куландреас для расчётов не нужен, он нужен лишь для проверки установки шипов (условно если они устанавливаются с машины, то тогда проверки вообще не нужны). Для ленивых, можно брать сферы стримера, и выставлять проверку пересечений после входа в 10 метровую зону. Далее вход идёт функция по проверке на пересечения вектора движения машины с линией шипов. Стоит учесть что расчёт производится в 2д плоскости на виде сверху. При выявления пересечения остаётся только сверить высоту в точке пересечения вектора и линии, дырявим шины, профит)
__________________
White_116 is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Дорожные шипы Gettopro Русский/Russian 9 15/05/2012 10:00 PM
Вот Сделал шИпы на дОрогу, но дОпУстил ОшИбки не_знаю в чОм, пОмОгите. Vin_Diese Русский/Russian 2 28/06/2011 04:14 AM


All times are GMT. The time now is 07:37 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.