• Уважаемый Гость.
    - Прежде чем создать свою тему, пожалуйста, попробуй воспользоваться этим -> ПОИСКОМ !!!
    - После решения Вашего вопроса (проблемы) - нажмите "Лучший ответ", на сообщении, которое его решило. За игнорирование этого действия - Вы получите соответствующее предупреждение. Мы - стараемся Вам помочь. Уделите 10 секунд - чтобы нажать кнопку. (Если у Вас нет такой возможности - укажите в последнем своем сообщении какой ответ Вы считаете лучшим. Наши модераторы сделают это за Вас)
    ЗАПРЕЩЕНО:
    - Cоздавать темы с названиями "Помогите", "Плиз", "Ошибка", "Не могу найти", "Хелп" и тому подобное;
    - Cоздавать темы без детального описания того, что нужно исправить.
    - Cоздавать темы из одного скриншота.
    За игнор правил форума - Ваша тема будет удалена, а Вы получите системное предупреждение.

Как лучше хранить pickupid и как лучше к ним обращаться?

Статус
В этой теме нельзя размещать новые ответы.

lomakich

Начинающий
Пользователь
Регистрация
30 Мар 2019
Сообщения
18
Лучшие ответы
0
Репутация
2
Приветствую всех специалистов! Нужна ваша помощь в легком вопросе.
К примеру, есть 500 зданий, которым необходимы разного рода пикапы.
Для хранения пикапов сделал я глобальную переменную такого типа, так как посчитал, что это наиболее простой и читаемый вариант.
PHP:
enum landspickups
{
	INFOTABLE,
	ENTER,
	ENTERGARAGE
}
new pu_lands[500][landspickups];
То есть при загрузке сервера создаются пикапы таким образом:
(где i, грубо говоря передается номер, ID дома)
PHP:
stock LoadPickups(i)
{
	pu_lands[i][INFOTABLE] = CreateDynamicPickup(modelid, type, X, Y, Z, VW, INTR, PLRID, VIEWDIST);
	pu_lands[i][ENTER] = CreateDynamicPickup(modelid, type, X, Y, Z, VW, INTR, PLRID, VIEWDIST);
}
Но до этого момента все работает отлично, пикапы загружаются, все как и должно быть.
Проблема в другом! Как максимально грамотно и оптимизировано обратиться к какому либо пикапу?
Предположим, что мне нужно выполнить один код для всех 500 пикапов с индексом ENTER.
Я пробовал:
PHP:
public OnPlayerPickUpDynamicPickup(playerid, pickupid)
{
	if(pickupid >= pu_lands[0][ENTER] && pickupid <= pu_lands[499][ENTER])
	{
            GameTextForPlayer(playerid, "~r~Press ~w~[ALT] ~r~to enter", 1500, 1);
	}
	return 1;
}
Но данное решение попросту не срабатывает. Когда я подбираю пикап, то на экране не высвечивается GameTextForPlayer. Тип пикапа 23, ну так на всякий случай.
Хотя я пробовал данный метод с одномерным массивом и там он работает на ура.
PHP:
public OnPlayerPickUpDynamicPickup(playerid, pickupid)
{
 	if(pickupid >= lumberPU[0] && pickupid <= lumberPU[2])
	{
        GameTextForPlayer(playerid, "~r~Press ~w~[ALT]", 1500, 1);
	}
	return 1;
}
Наверняка причина в том, что все это дело хранится в массиве такого рода. Так вот, повторю вопрос. Какое есть стабильное и оптимизированное решение для этой ситуации? Каким образом лучше хранить pickupid или же как грамотно к ним обращаться? Еще думал про switch, так как начитался, что его хвалят за быстроту и т.д. Но он вообще с массивами не работает, вроде как. Так что я и не знаю, что мне делать. Очень сильно нужна ваша помощь, товарищи-мастера!
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу