SA-MP Forums

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

Reply
 
Thread Tools Display Modes
Old 05/03/2016, 05:55 PM   #1
Mexanizm93
Big Clucker
 
Mexanizm93's Avatar
 
Join Date: Jan 2013
Location: Russia. Voronezh
Posts: 176
Reputation: 6
Question Как лучше реализовать ?

Всем привет.
Ребят, подскажите как лучше реализовать подбор предметов инвентаря ? Я имею ввиду, например, присел и предмет подобрался, но вить его нужно ещё найти перед этим. Других вариантов кроме как гнать цикл по массиву с выброшенными объектами в голову не приходит.

Больше разве нет вариантов, кроме как гнать цикл по всем выброшенным объектам в массиве ?
Мне не нужен код, а только подскажите как лучше.
Заранее спасибо.
__________________
We do not drink vodka every day and do not play the balalaika you think about us. ^_^ © Mexanizm
Mexanizm93 is offline   Reply With Quote
Old 05/03/2016, 06:00 PM   #2
ZiGGi
Banned
 
Join Date: Sep 2008
Location: Russia
Posts: 1,659
Reputation: 356
Default Re: Как лучше реализовать ?

Для каждого выпавшего объекта создавать динамическую зону (плагин Streamer). Потом (при поднятии) использовать GetPlayerDynamicAreas.
ZiGGi is offline   Reply With Quote
Old 06/03/2016, 09:32 AM   #3
White_116
High-roller
 
Join Date: Sep 2010
Location: Russia/116
Posts: 1,495
Reputation: 69
Default Re: Как лучше реализовать ?

Есть функция которая возвращает ид объекта на который смотрит игрок. Потом лишь достаточно проверить до него расстояние.
__________________
White_116 is offline   Reply With Quote
Old 06/03/2016, 09:44 AM   #4
themakar
Big Clucker
 
Join Date: Nov 2015
Posts: 96
Reputation: 3
Default Re: Как лучше реализовать ?

Quote:
Originally Posted by ZiGGi View Post
Для каждого выпавшего объекта создавать динамическую зону (плагин Streamer). Потом (при поднятии) использовать GetPlayerDynamicAreas.
А если рядом несколько выброшенных объектов?
themakar is offline   Reply With Quote
Old 06/03/2016, 10:14 AM   #5
ZiGGi
Banned
 
Join Date: Sep 2008
Location: Russia
Posts: 1,659
Reputation: 356
Default Re: Как лучше реализовать ?

Quote:
Originally Posted by themakar View Post
А если рядом несколько выброшенных объектов?
Не проблема, этих функций тебе будет достаточно:
PHP Code:
GetPlayerNumberDynamicAreas(playerid// узнаёт в скольких зонах стоит игрок.
GetPlayerDynamicAreas(playeridSTREAMER_TAG_AREA areas[], maxareas sizeof areas// записывает в массив areas все зоны, в которых стоит игрок
Streamer_GetDistanceToItem(Float:xFloat:yFloat:ztypeSTREAMER_ALL_TAGS id, &Float:distancedimensions 3// возвращает расстояние до объекта (любого, и зоны в том числе) 
ZiGGi is offline   Reply With Quote
Old 06/03/2016, 11:06 AM   #6
eakwarp
High-roller
 
Join Date: Feb 2007
Posts: 1,912
Reputation: 131
Default Re: Как лучше реализовать ?

На самом деле, динамические зоны отнимают немногим меньше ресурсов, сколько перебор по координатам.
Если у вас не по полторы тысячи объектов, можно и обычным перебором.
__________________
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 07/03/2016, 03:32 PM   #7
Mexanizm93
Big Clucker
 
Mexanizm93's Avatar
 
Join Date: Jan 2013
Location: Russia. Voronezh
Posts: 176
Reputation: 6
Default Re: Как лучше реализовать ?

Всем спасибо за ответы. Закрываю. Сделал через выделение объекта, а потом цикл гоню. Объектов всего до 1000 единиц сделал для выброски, так что думаю пойдёт.
__________________
We do not drink vodka every day and do not play the balalaika you think about us. ^_^ © Mexanizm
Mexanizm93 is offline   Reply With Quote
Old 08/03/2016, 01:58 PM   #8
White_116
High-roller
 
Join Date: Sep 2010
Location: Russia/116
Posts: 1,495
Reputation: 69
Default Re: Как лучше реализовать ?

Зачем гнать цикл если ты уже выделил объект?
__________________
White_116 is offline   Reply With Quote
Old 08/03/2016, 05:48 PM   #9
Mcc
Huge Clucker
 
Join Date: May 2015
Posts: 473
Reputation: 19
Default Re: Как лучше реализовать ?

Quote:
Originally Posted by Mexanizm93 View Post
Всем спасибо за ответы. Закрываю. Сделал через выделение объекта, а потом цикл гоню. Объектов всего до 1000 единиц сделал для выброски, так что думаю пойдёт.
Если выборка идет через SelectMouse как подметил Вайт, то можно сравнять размер массива с максимальным количеством объектов. На выходе вровень получать все данные из выбранного слота, по IDу объекта который вернет SelectMouse.

Минус разве что в небольших затратах на память. Циклы никакие не нужны.
Под стример нужно будет подстраиваться.

Last edited by Mcc; 09/03/2016 at 12:38 AM.
Mcc is offline   Reply With Quote
Old 09/03/2016, 07:46 AM   #10
White_116
High-roller
 
Join Date: Sep 2010
Location: Russia/116
Posts: 1,495
Reputation: 69
Default Re: Как лучше реализовать ?

Я имел ввиду GetPlayerCameraTargetObject
Лучше потратить память чем процессорное время, что столь необходимо серверу.
__________________
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
Как реализовать похожую фу-ю? Pe3aK Русский/Russian 17 04/04/2014 03:50 AM
Команды в Include как реализовать Size Русский/Russian 2 12/04/2013 02:20 PM
Помогите реализовать coloN Русский/Russian 4 07/04/2013 10:08 AM
Как реализовать 10 лучших? safari Русский/Russian 9 02/03/2012 02:54 AM
Как реализовать? Hawkins Русский/Russian 4 18/11/2011 01:27 PM


All times are GMT. The time now is 04:27 AM.


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