Не работает RequestUseItem

hoobeedoo

Единомышленник
Участник
Сообщения
39
Розыгрыши
0
Репутация
0
Реакции
7
Баллы
195
Собственно решил заколхозить напильником classic interface (166) и для тренировки пробую реализовать уже готовые решения других интерфейсов своими руками. Вот на одном из них затык. Цель реализовать полностью на клиенте автоюз банок HP, MP, CP и тп. Начал исследовать, для примере код:

C-подобный:
class MyWnd extends UICommonAPI;

var WindowHandle m_hMyWnd;
var ItemWindowHandle m_hInventoryItem;
var string m_WindowName;

function OnLoad()
{
    m_hMyWnd = GetWindowHandle(m_WindowName);
    m_hInventoryItem = GetItemWindowHandle("InventoryWnd.InventoryItem");
}

function OnRegisterEvent()
{
    RegisterEvent(EV_SystemMessage);
}

function OnEvent(int Event_ID, String a_Param)
{
    if (Event_ID == EV_SystemMessage)
    {
        HandleSystemMessage(a_Param);
    }
}

function HandleSystemMessage (string a_Param)
{
    local int MsgId;
    local ItemInfo Item;

    ParseInt(a_Param, "Index", MsgId);

    // id=749    message=[The effect of $s1 has been removed.]
    // id=1539    name=[Greater Healing Potion]
    if (MsgId == 749)
    {
        GetItemInfo(1539, Item);
        RequestUseItem(Item.Id);
    }
}

function GetItemInfo(int a_Id, out ItemInfo a_Info)
{
    local int Index;
    local ItemInfo Item;
    local ItemID Id;

    Id.ClassID = a_Id;
    Index = m_hInventoryItem.FindItem(Id);

    if (m_hInventoryItem.GetItem(Index, Item))
    {
        a_Info = Item;
    }
}

defaultproperties
{
    m_WindowName="MyWnd";
}

(на то что триггер по EV_SystemMessage, смотреть не надо, это просто для примера. в реальном случае условия будут другие, однако не суть)

Проблема в том что RequestUseItem(Item.Id); не срабатывает, если я пытаюсь запустить интерфейс на каком-либо реальном проекте (например, на европвп).
То защита какая-то?

PS. На локальном всё работает.
 
Rolo ну я так понимаю есть люди, которые успешно побарывают вражину за чеканную монету?

почитал, походу нет

:Omgnooo::Omgnooo::Omgnooo:
 
Да, включают адрик и идут спать
осуждаю этих людей.

тогда офф-топ вопрос:
а как toggle скилы работают? откуда ноги растут?
типа их можно ПКМ переключить в авто-использование (тут, я так понимаю, должна быть реализация на сервере), так вот как interface узнает что, вот этот скилл можно переключить в свич? надеюсь понятно высказал мысль.
 
  • Мне нравится
Реакции: raz
Rolo ну я так понимаю есть люди, которые успешно побарывают вражину за чеканную монету?
Все "решения", что за монету кто-то готов продать, с живой защитой, где разрабьі что-то обновляют, скажим так, достаточно рискованая инвестиция на уровне мем-коинов. )

а как toggle скилы работают? откуда ноги растут?
типа их можно ПКМ переключить в авто-использование (тут, я так понимаю, должна быть реализация на сервере), так вот как interface узнает что, вот этот скилл можно переключить в свич? надеюсь понятно высказал мысль.
Сложно сказать что там на конкретном сервере, не изучая вопрос, если бьі Вьі спршивали: "а как такое можно у себя на сервере сделать", то ответом могло бьі бьіть в т.ч. через серверсайд єтот "тогл" включать и там же хранить инфу, какой скил такую вохможность имеет, а какой нет. ) Но вообще и клиентом такое можно сделать, и клиент+сервер. А инфа может храниться от кастомньіх/расширеньіх датников, до хардкора в длл или на сервере в дата паке вообще.
 
Все "решения", что за монету кто-то готов продать, с живой защитой, где разрабьі что-то обновляют, скажим так, достаточно рискованая инвестиция на уровне мем-коинов. )
это понятно, всё равно спасибо!

Сложно сказать что там на конкретном сервере, не изучая вопрос, если бьі Вьі спршивали: "а как такое можно у себя на сервере сделать", то ответом могло бьі бьіть в т.ч. через серверсайд єтот "тогл" включать и там же хранить инфу, какой скил такую вохможность имеет, а какой нет. ) Но вообще и клиентом такое можно сделать, и клиент+сервер. А инфа может храниться от кастомньіх/расширеньіх датников, до хардкора в длл или на сервере в дата паке вообще.
Вот допустим моя цель сделать автоюз банок ХП. Я вижу, что "ванила"-клиент имеет такую фичу. Я беру и меняю interface.u на кастомный. В нем такой возможности сделать нету. Отсюда вывод, даже если реализация API для этого в dll, то в interface.u должны быть какие-то вызовы этих самых API. Для начала я и пытаюсь понять как это реализовано с SHOTs, ибо и на "ваниле" и на кастомном итерфейсе это работает.
 
hoobeedoo, а что такое ванила клиент, єто 746 протокол? :unsure:
Отсюда вывод, даже если реализация API для этого в dll, то в interface.u должны быть какие-то вызовы этих самых API.
Звучит логично, но чисто теоретически: а что если я буду обрабатьівать райт клик хуком в дллке и в случае, если єто клик по шорткатам - то слать реквест на сервер сразу, вообще без участия интерфейса? ) Єто не их случай, потому что в єтом случае замена *.u ничего бьі не поменяла, но єто скорее на подумать, что не всегда так прямолинейно может бьіть сделано. Наверное. )
 
осуждаю этих людей.

тогда офф-топ вопрос:
а как toggle скилы работают? откуда ноги растут?
типа их можно ПКМ переключить в авто-использование (тут, я так понимаю, должна быть реализация на сервере), так вот как interface узнает что, вот этот скилл можно переключить в свич? надеюсь понятно высказал мысль.
В датке указывается тип скилу, что он тогл, в сервере тоже, это если делаешь у себя на сервере, и хочешь адекватной работы.
Ну а остальной принцип уже рулон выше расписал.
 
hoobeedoo, а что такое ванила клиент, єто 746 протокол? :unsure:
и на 746 IL, и на 166 CL
Єто не их случай, потому что в єтом случае замена *.u ничего бьі не поменяла
о том и речь. более того, достоверно известно что реализовать этом можно. конкретно касаемо HP, MP, CP автоюза.

В датке указывается тип скилу, что он тогл, в сервере тоже, это если делаешь у себя на сервере, и хочешь адекватной работы.
Ну а остальной принцип уже рулон выше расписал.

про скилл то понятно:
C++:
struct native SkillInfo
{
    var String SkillName;
    var String SkillDesc;
    var int SkillID;
    var int SkillLevel;
    var int OperateType;    // 0 - A1 이상상태를 걸지 않는 액티브 스킬, 1 - A2 이상상태를 거는 액티브 스킬, 2 - P 패시브 스킬, 3 - T 토글 스킬

но речь то про предмет.

попробовал поменять в etcitemgrp: etcitem_type=potion на etcitem_type=soul_shot, появилась реакция на ПКМ по shortcut с банкой HP (в systemmsg падает сообщение), но триггера нету. копаем дальше :)
спасибо за наводку.

UPD. не то, это сайд эффект атрибута "etcitem_type=soul_shot"
 
  • Мне нравится
Реакции: Rolo
В датке указывается тип скилу, что он тогл
На 166 в датках такое бьіло уже? :eek: Или типа просто сделать обьічньій толг (тогда же не райт клик его тригерить будет, а обьічньій заюз, не?). Или я не правильно ТСа понял и речь реально просто о дефолтньі тогл скилах, а не всяких атакующих которьіе в автоюз можнапоставить? )
 
На 166 в датках такое бьіло уже? :eek: Или типа просто сделать обьічньій толг (тогда же не райт клик его тригерить будет, а обьічньій заюз, не?). Или я не правильно ТСа понял и речь реально просто о дефолтньі тогл скилах, а не всяких атакующих которьіе в автоюз можнапоставить? )
Если коротко, то я понял что АА мешает автоматизации интерфейса как мне, так и ботоводам ботить.

Дальше возник вопрос: а как тогда реализовано автоюз банок. Типа вот такого:
1756989894540.webp
(слева без тогла, српава с ним соответственно).

эмпирически выяснил, что есть какой-то в интерфейсе ход конём на эту реализацию. вот и интересно какой теперь уже (спортивный чисто интерес).
 
Если коротко, то я понял что АА мешает автоматизации интерфейса как мне, так и ботоводам ботить.

Дальше возник вопрос: а как тогда реализовано автоюз банок. Типа вот такого:
Посмотреть вложение 88673
(слева без тогла, српава с ним соответственно).

эмпирически выяснил, что есть какой-то в интерфейсе ход конём на эту реализацию. вот и интересно какой теперь уже (спортивный чисто интерес).
Скил жрет банку из инвентаря

На 166 в датках такое бьіло уже? :eek: Или типа просто сделать обьічньій толг (тогда же не райт клик его тригерить будет, а обьічньій заюз, не?). Или я не правильно ТСа понял и речь реально просто о дефолтньі тогл скилах, а не всяких атакующих которьіе в автоюз можнапоставить? )
Та хоть на интерлюде или хф, просто делаешь скил который жрет банку в инвентаре.
 
  • Мне нравится
Реакции: Rolo
Скил жрет банку из инвентаря
...
Та хоть на интерлюде или хф, просто делаешь скил который жрет банку в инвентаре.
буду признателен если дадите намёк как это реализовать такой кастомный скилл на клиенте, если я правильно понял (полагаю на сервере он есть)?
🙏


UPD.
походу отбой, проверил на свежую голову на примере евро:
в IL клиенте вне зависимости от интерфейса можно ставить на toggle использование банки и это работает (тогда как вызов из кастомного интерфейса RequestUseItem блокируется по всей видимости АА) => реализация где-то в в сторонеей dll.
в CL клиенте такой фичи (тогл переключения) нету ни в интерфейсе из евро коробки, ни в кастомном соответственно, что косвенно подтверждает утверждение выше про dll.

всем спасибо.
 
эмпирически выяснил, что есть какой-то в интерфейсе ход конём на эту реализацию. вот и интересно какой теперь уже (спортивный чисто интерес).
Просто делают ACP на сервер сайде. Тогл - вкл/выкл acp = одна команда. Смысл тот же, что от скила через тогл, но чище и оберток меньше. С АА помогает и не нужно антифлуд вырубать. Плюс у клиентов есть свойство тротлить реквесты если они идут из свернутого клиента и в эру автофармов серверсайд решает эту проблему
 
Назад
Сверху