SA-MP Forums

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

Reply
 
Thread Tools Display Modes
Old 14/03/2019, 03:11 PM   #1
Delphi
Little Clucker
 
Join Date: Apr 2015
Posts: 8
Reputation: 0
Default Полицейские шипы

Здравствуйте. Хочу сделать, чтобы полицейские шипы пробивали колёса. Использую для этого объект 2899. Думаю сделать область срабатывания, которая будет повторять размер объекта (как коллизия), при вхождении в которую колесо пробьётся. Т.е. получается зная позицию, поворот и размер объекта шипов, получить глобальные координаты xmin, xmax, ymin, ymax, zmin, zmax. Вот с этим преобразованием и прошу помочь. (Размер объекта длина: 4.99, ширина: 1.15, высота: 0.24)
Delphi is offline   Reply With Quote
Old 14/03/2019, 04:12 PM   #2
Mutha_X
Gangsta
 
Join Date: Sep 2009
Location: recursion
Posts: 658
Reputation: 37
Default Re: Полицейские шипы

Тык
А вообще вся тригонометрия считается долго, поэтому лучше будет
Тык_1 и Тык_2
Mutha_X is offline   Reply With Quote
Old 14/03/2019, 05:16 PM   #3
Delphi
Little Clucker
 
Join Date: Apr 2015
Posts: 8
Reputation: 0
Default Re: Полицейские шипы

Спасибо. Но я ничего не понял.
Delphi is offline   Reply With Quote
Old 16/03/2019, 04:51 PM   #4
Eims
Huge Clucker
 
Eims's Avatar
 
Join Date: May 2013
Location: Восточный Мордор
Posts: 475
Reputation: 19
Default Re: Полицейские шипы

Тебе стоит учитывать то, что координаты авто берутся из центра этого самого авто и, соответственно, если ты сделаешь зону срабатывания такой же, как размер объекта, то работать всё будет криво и через раз.

Полноценная система, копирующая принцип работы шипов из сингла, будет жрать довольно много ресурсов, ибо нужно будет узнавать координаты колёс и смотреть, не попали ли они на шипы. При этом, проверять это нужно будет довольно часто.

В идеале тебе стоит делать несколько проверок координат для каждых шипов.
В первой проверке определять, находится ли игрок в определённом радиусе (например, 20 метров) от каких-либо шипов.
И если находится, то во второй проверке уже проверять, насколько близко он находится и заехал ли он на них (хотя если шипов будет много, то лучше увеличить количество проверок на радиус, дабы свести к минимуму количество шипов, для которых придётся проводить вычисления).
В общем, всё зависит от того, насколько точной должна быть твоя система.
__________________
- 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.
Eims is offline   Reply With Quote
Old 16/03/2019, 06:35 PM   #5
OKStyle
High-roller
 
OKStyle's Avatar
 
Join Date: May 2008
Location: Russia, Orenburg Money: GTA$ 999,999,999
Posts: 3,125
Reputation: 142
Default Re: Полицейские шипы

А разве у шипов нет физики? По-моему, у объекта флаг в IDE стоит соответствующий.
__________________
O.K.Style™ Laboratory
Kalcor: "... it's makes the game look like it's not GTA. This mod is called San Andreas Multiplayer. It's not a custom game engine which you can script..."
OKStyle is offline   Reply With Quote
Old 16/03/2019, 06:44 PM   #6
Delphi
Little Clucker
 
Join Date: Apr 2015
Posts: 8
Reputation: 0
Default Re: Полицейские шипы

Quote:
В идеале тебе стоит делать несколько проверок координат для каждых шипов.
В первой проверке определять, находится ли игрок в определённом радиусе (например, 20 метров) от каких-либо шипов.
И если находится, то во второй проверке уже проверять, насколько близко он находится и заехал ли он на них (хотя если шипов будет много, то лучше увеличить количество проверок на радиус, дабы свести к минимуму количество шипов, для которых придётся проводить вычисления).
Да, так и планировал. Думал задействовать Streamer Dynamic Area для первичного определения игрока авто. Если Dymanic Area сработал, и разные проверки выполнены, то игроку ставится переменная на 1, и в OnPlayerUpdate включается точное определение по колёсам.

Quote:
у объекта флаг в IDE стоит соответствующий
Можно подробней? И как это можно использовать?
Delphi is offline   Reply With Quote
Old 16/03/2019, 08:08 PM   #7
eakwarp
High-roller
 
Join Date: Feb 2007
Posts: 1,912
Reputation: 131
Default Re: Полицейские шипы

Quote:
Originally Posted by OKStyle View Post
А разве у шипов нет физики? По-моему, у объекта флаг в IDE стоит соответствующий.
Нет.

Я делал радиусами, установленные шипы, поиск машины в ближнем радиусе, если есть, обсчет переда и зада авто, в момент пересечения шипов. Естественно все это работает плюс минус километр.
__________________
More than 10 years of development, more than 40 mb(sic! 1 kk lines+) of source code, more than a two hundred units and more than 35k revisions(upd. aug 2017). Valakas Roleplay - choose your role.

Как правило, то, что делаю я, лишь через годы начинают делать другие, но потом, обязательно мне ставят в укор, "ой, да это уже у всех есть"...



[Gamemode] Valakas Trucker Roleplay (Russian).
eakwarp is offline   Reply With Quote
Old 17/03/2019, 02:11 AM   #8
Eims
Huge Clucker
 
Eims's Avatar
 
Join Date: May 2013
Location: Восточный Мордор
Posts: 475
Reputation: 19
Default Re: Полицейские шипы

Quote:
Originally Posted by Delphi View Post
Да, так и планировал. Думал задействовать Streamer Dynamic Area для первичного определения игрока авто. Если Dymanic Area сработал, и разные проверки выполнены, то игроку ставится переменная на 1, и в OnPlayerUpdate включается точное определение по колёсам.
Вообще всё зависит от того, какое максимальное количество шипов ты планируешь разрешить.
Если шипов будет мало - можно заюзать и динамические зоны. Но я бы лучше просто запускал индивидуальный таймер, когда игрок запускает двигатель в авто, и уже в таймере делал бы все нужные проверки.


И если шипов может быть много, я бы сделал так:
1) Разделил карту на определённое количество квадратов, постаравшись заранее предугадать где чаще всего игроки будут ставить шипы. В зонах, где шипы будут ставить чаще (какое-нибудь гетто, например), квадратов было бы больше, дабы каждый квадрат в себе содержал минимальное количество зон.
2) Создал бы массив под каждый из квадратов для хранения ID шипов, чтоб в дальнейшем работать напрямую с шипами из текущего квадрата, а не обрабатывать все шипы.
3) При создании шипов определял бы квадрат, в котором они находятся, и записал бы ID зоны в соответствующий массив.
4) Отслеживал бы то, в каком квадрате находится игрок и уже работал с координатами тех шипов, которые находятся в этом квадрате.
+ для точности можно так же на каждые шипы вешать какой-то радиус, при котором бы запускался таймер с минимальным интервалом. И уже в таймере массивом передавать ID шипов для сверки координат, чтоб по новой не определять их.

Это + индивидуальный таймер, который работает только когда игрок движется в авто - всё это позволит свести к минимуму лишние проверки.
Хотя, опять же, если ты будешь делать вменяемое ограничение на количество шипов, то можно обойтись и без разграничения карты на квадраты (ну или написать более универсальную систему, начав использовать эти разграничения не только для шипов, но и для всех остальных случаев, когда нужно сверять координаты).
__________________
- 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.
Eims is offline   Reply With Quote
Old 18/03/2019, 09:22 PM   #9
White_116
High-roller
 
Join Date: Sep 2010
Location: Russia/116
Posts: 1,495
Reputation: 69
Default Re: Полицейские шипы

Quote:
Originally Posted by Eims View Post
Вообще всё зависит от того, какое максимальное количество шипов ты планируешь разрешить.
Если шипов будет мало - можно заюзать и динамические зоны. Но я бы лучше просто запускал индивидуальный таймер, когда игрок запускает двигатель в авто, и уже в таймере делал бы все нужные проверки.


И если шипов может быть много, я бы сделал так:
1) Разделил карту на определённое количество квадратов, постаравшись заранее предугадать где чаще всего игроки будут ставить шипы. В зонах, где шипы будут ставить чаще (какое-нибудь гетто, например), квадратов было бы больше, дабы каждый квадрат в себе содержал минимальное количество зон.
2) Создал бы массив под каждый из квадратов для хранения ID шипов, чтоб в дальнейшем работать напрямую с шипами из текущего квадрата, а не обрабатывать все шипы.
3) При создании шипов определял бы квадрат, в котором они находятся, и записал бы ID зоны в соответствующий массив.
4) Отслеживал бы то, в каком квадрате находится игрок и уже работал с координатами тех шипов, которые находятся в этом квадрате.
+ для точности можно так же на каждые шипы вешать какой-то радиус, при котором бы запускался таймер с минимальным интервалом. И уже в таймере массивом передавать ID шипов для сверки координат, чтоб по новой не определять их.

Это + индивидуальный таймер, который работает только когда игрок движется в авто - всё это позволит свести к минимуму лишние проверки.
Хотя, опять же, если ты будешь делать вменяемое ограничение на количество шипов, то можно обойтись и без разграничения карты на квадраты (ну или написать более универсальную систему, начав использовать эти разграничения не только для шипов, но и для всех остальных случаев, когда нужно сверять координаты).
Описал работу стримера.

Лучше делать проверку на пересечения вектора движения авто (можно разделить все 4 колеса) с линией шипов.

Даже если задержка проверки в таймере будет большой, то пересечение вектора даст 100% результат в отличии от проверки на нахождение в зоне, где можно тупо пролететь.

Можешь модифицировать под проверку пересечения векторов W_Points
__________________
White_116 is offline   Reply With Quote
Old 19/03/2019, 12:33 AM   #10
Eims
Huge Clucker
 
Eims's Avatar
 
Join Date: May 2013
Location: Восточный Мордор
Posts: 475
Reputation: 19
Default Re: Полицейские шипы

Quote:
Originally Posted by White_116 View Post
Описал работу стримера.
Только в стримере мы не можем контролировать расположение этих зон/размер и т.п. Я же говорю о более тонкой и детальной настройке, что уменьшит нагрузку при больших объёмах данных.
__________________
- 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.
Eims 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 01:20 PM.


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