Собственно решил заколхозить напильником classic interface (166) и для тренировки пробую реализовать уже готовые решения других интерфейсов своими руками. Вот на одном из них затык. Цель реализовать полностью на клиенте автоюз банок HP, MP, CP и тп. Начал исследовать, для примере код:
(на то что триггер по EV_SystemMessage, смотреть не надо, это просто для примера. в реальном случае условия будут другие, однако не суть)
Проблема в том что RequestUseItem(Item.Id); не срабатывает, если я пытаюсь запустить интерфейс на каком-либо реальном проекте (например, на европвп).
То защита какая-то?
PS. На локальном всё работает.
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. На локальном всё работает.