Как лучше реализовать ?
#1

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

Больше разве нет вариантов, кроме как гнать цикл по всем выброшенным объектам в массиве ?
Мне не нужен код, а только подскажите как лучше.
Заранее спасибо.
Reply
#2

Для каждого выпавшего объекта создавать динамическую зону (плагин Streamer). Потом (при поднятии) использовать GetPlayerDynamicAreas.
Reply
#3

Есть функция которая возвращает ид объекта на который смотрит игрок. Потом лишь достаточно проверить до него расстояние.
Reply
#4

Quote:
Originally Posted by ZiGGi
Посмотреть сообщение
Для каждого выпавшего объекта создавать динамическую зону (плагин Streamer). Потом (при поднятии) использовать GetPlayerDynamicAreas.
А если рядом несколько выброшенных объектов?
Reply
#5

Quote:
Originally Posted by themakar
Посмотреть сообщение
А если рядом несколько выброшенных объектов?
Не проблема, этих функций тебе будет достаточно:
PHP код:
GetPlayerNumberDynamicAreas(playerid// узнаёт в скольких зонах стоит игрок.
GetPlayerDynamicAreas(playeridSTREAMER_TAG_AREA areas[], maxareas sizeof areas// записывает в массив areas все зоны, в которых стоит игрок
Streamer_GetDistanceToItem(Float:xFloat:yFloat:ztypeSTREAMER_ALL_TAGS id, &Float:distancedimensions 3// возвращает расстояние до объекта (любого, и зоны в том числе) 
Reply
#6

На самом деле, динамические зоны отнимают немногим меньше ресурсов, сколько перебор по координатам.
Если у вас не по полторы тысячи объектов, можно и обычным перебором.
Reply
#7

Всем спасибо за ответы. Закрываю. Сделал через выделение объекта, а потом цикл гоню. Объектов всего до 1000 единиц сделал для выброски, так что думаю пойдёт.
Reply
#8

Зачем гнать цикл если ты уже выделил объект?
Reply
#9

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

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

Quote:
Originally Posted by White_116
Посмотреть сообщение
Зачем гнать цикл если ты уже выделил объект?
Найти в массиве строку с информацией по id выброшенного объекта. Или можно по другому ?

Quote:
Originally Posted by Mcc
Посмотреть сообщение
Если выборка идет через SelectMouse как подметил Вайт, то можно сравнять размер массива с максимальным количеством объектов. На выходе вровень получать все данные из выбранного слота, по IDу объекта который вернет SelectMouse.

Минус разве что в небольших затратах на память. Циклы никакие не нужны.
Под стример нужно будет подстраиваться.
Quote:
Originally Posted by Mcc
Посмотреть сообщение
сравнять размер массива с максимальным количеством объектов. На выходе вровень получать все данные из выбранного слота, по IDу объекта который вернет SelectMouse.
Если Вам, не сложно, не могли бы Вы накидать примерный код с этим действием ? Вот тут я просто не понял как это реализовать. Стример.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)