API клиента HF может кто подскажет (ACP)

  • Автор темы Автор темы vell74
  • Дата начала Дата начала

vell74

Знаменитый
Участник
Старожил I степени
Сообщения
43
Розыгрыши
0
Репутация
18
Реакции
10
Баллы
1 235
Всем привет, подскажите у меня есть две проблемы

1) Какой API есть для получение предмета из инвентаря у игрока по int ClassID ? Мой метод самописный не всегда 50/50 срабатывает при Евенте (входа в игру) RegisterEvent(EV_GamingStateEnter);
до этого еще инвентарь не про грузился, ставил задержку +-3сек спасает не всегда(

2) Есть ли способ узнать КД предмета ? Чтобы избежать спама


прилагаю видео:
 

Вложения

1) Какой API есть для получение предмета из инвентаря у игрока по int ClassID ? Мой метод самописный не всегда 50/50 срабатывает при Евенте (входа в игру) RegisterEvent(EV_GamingStateEnter);
Поставьте ивенты на ItemList / Inventory Update , и сделайте чтобы они отрабатывалавись или после вашего ивента или после того, как получите правильно State с ивента - EV_StateChanged
2) Есть ли способ узнать КД предмета ? Чтобы избежать спама
у меня есть `ItemInfo`, в нем есть параметр 'RemainReuseDelay', который используется в тултипе для указания КД (но кажется это для предметом с ограниченым использованием (30 / 45 раз в день))

Есть еще `bDisabled`, но тут я не скажу.

Как вариант - можете поступить как настоящий Rolo боец и поставить ивент на систем мессаги и из них (при неуспешном использовании) - выдирать инфу какой предмет / сколько осталось времени до повторного использования и тд.
 
vell74, гляньте в скриптьі нвиндоу, там много нативок на разньіе случаи жизни, в конкретном случае про первьій вопрос есть вот такое, например:
Код:
* @example
*var ItemWindowHandle i_handle; //윈도우 핸들 선언
*var int index;
*var ItemId id;
*id.ClassID = 1000;
*i_handle = GetItemWindowHandle("InventoryWnd.InventoryItem");
*index = i_handle.FindItemByClassID(id); //클래스id가 1000인 아이템의 컨트롤내의 인덱스를 찾는다

*struct native constructive ItemID
*{
*    var int ClassID;
*    var int ServerID;
*};
*/
native final function int FindItemByClassID(ItemID scID);
 
Отвечаю на свои вопросы:

1) привязываемся
RegisterEvent(EV_SetMaxCount); - для init
RegisterEvent(EV_InventoryUpdateItem); - для обновление (задержка 1сек)

2) привязываемся
AbnormalStatusWnd
чекаем список бафов если находим то ждем пока исчезнит (работает но может есть какие-то свои подводные камни).

1763103506379.webp
 
Для выполнения кода после загрузки инвентаря используйте это событие.

C++:
    RegisterEvent(EV_InventoryItemListEnd);

Я другого способа не нашел только AbnormalStatusWnd его так как сервер не присылает дынные о использование скилла.
PS: это 100 процентов мои исходники там все есть просто копируй и вставляй) На github есть первые примеры что я делал может пригодится
 
Последнее редактирование:
Назад
Сверху Снизу