Posts: 176
Threads: 17
Joined: Jan 2013
Reputation:
0
Всем привет.
Ребят, подскажите как лучше реализовать подбор предметов инвентаря ? Я имею ввиду, например, присел и предмет подобрался, но вить его нужно ещё найти перед этим. Других вариантов кроме как гнать цикл по массиву с выброшенными объектами в голову не приходит.
Больше разве нет вариантов, кроме как гнать цикл по всем выброшенным объектам в массиве ?
Мне не нужен код, а только подскажите как лучше.
Заранее спасибо.
Posts: 1,659
Threads: 17
Joined: Sep 2008
Для каждого выпавшего объекта создавать динамическую зону (плагин
Streamer). Потом (при поднятии) использовать GetPlayerDynamicAreas.
Posts: 1,495
Threads: 20
Joined: Sep 2010
Reputation:
0
Есть функция которая возвращает ид объекта на который смотрит игрок. Потом лишь достаточно проверить до него расстояние.
Posts: 1,659
Threads: 17
Joined: Sep 2008
Quote:
Originally Posted by themakar
А если рядом несколько выброшенных объектов?
|
Не проблема, этих функций тебе будет достаточно:
PHP код:
GetPlayerNumberDynamicAreas(playerid) // узнаёт в скольких зонах стоит игрок.
GetPlayerDynamicAreas(playerid, STREAMER_TAG_AREA areas[], maxareas = sizeof areas) // записывает в массив areas все зоны, в которых стоит игрок
Streamer_GetDistanceToItem(Float:x, Float:y, Float:z, type, STREAMER_ALL_TAGS id, &Float:distance, dimensions = 3) // возвращает расстояние до объекта (любого, и зоны в том числе)
Posts: 1,912
Threads: 5
Joined: Feb 2007
Reputation:
0
На самом деле, динамические зоны отнимают немногим меньше ресурсов, сколько перебор по координатам.
Если у вас не по полторы тысячи объектов, можно и обычным перебором.
Posts: 176
Threads: 17
Joined: Jan 2013
Reputation:
0
Всем спасибо за ответы. Закрываю. Сделал через выделение объекта, а потом цикл гоню. Объектов всего до 1000 единиц сделал для выброски, так что думаю пойдёт.
Posts: 1,495
Threads: 20
Joined: Sep 2010
Reputation:
0
Зачем гнать цикл если ты уже выделил объект?