Jump to content
Alloder.pro  about Allods with love 😱
Search In
  • More options...
Find results that contain...
Find results in...

Servers monitoring and the Addons Editor

We present you two legends. All dreams come true.

Servers monitoring The Addons Editor

Digest April

We talk about what was done and updated in the past month. We help keep abreast of events.

Read more

Game tooltips

Tooltips provide a way for 3rd party fansites and extensions to display detailed information on mouseover.

Read more

Вопрос о чате


Oberon
 Share

Recommended Posts

День добрый.

 

Только пробую делать аддоны. У меня вопрос по чату. С выводом в чат вроде бы все понятно (есть LogToChat()),

а вот если нужно наоборот, выловить событие: например, как выловить надпись "[Личные]: Вы получаете добычу: ХХХХ золотом"?

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

 

Не могу с этим разобраться,

Edited by Oberon
Link to comment
Share on other sites

Спасибо,)

С помощью EVENT_CHAT_MESSAGE у меня выходит выловить только обычные сообщения, которые пишут в мир, например.

Но мне надо конкретно "[Личные:]" поймать. Пробовал через поля msg и sender, именно этого типа сообщения не получается словить,

Link to comment
Share on other sites

Спасибо,)

С помощью EVENT_CHAT_MESSAGE у меня выходит выловить только обычные сообщения, которые пишут в мир, например.

Но мне надо конкретно "[Личные:]" поймать. Пробовал через поля msg и sender, именно этого типа сообщения не получается словить,

Деньги приходят сюда http://alloder.pro/md/LuaApi/EventAvatarMoneyTaken.html

post-1253-0-32954000-1442747962_thumb.pn

Link to comment
Share on other sites

да пробовал CHAT_TYPE_, дело в том, что EVENT_CHAT_MESSAGE попросту срабатывает только на сообщения от игроков.

 

По событию LogInfo( params.chatType ) выдает только такие результаты:

0 - в пм

2 - обычный разговор

4 - в зону

5 - крик

6 - в мир

9 - в ги чат

-2 - моб Ястреб Яскера, почему то отрицательный результат выдал

 

на другие сообщения, уведомления, и т.п. никаких результатов,

Link to comment
Share on other sites

о. хорошая идея, сейчас попробую,

 

---------------------------

 

В общем, не то. Там выводится ENUM_TakeItemActionType_Loot, т.е., от обычного лута ничем не отличается, выделить не получится.

 

А как поймать событие, когда из сумки пропадает какой-либо предмет? Вот такой, например: "Ключ от сундука"

Edited by Oberon
Link to comment
Share on other sites

В общем, не знаю я что придумать.

 

Нужно поймать событие, не могу придумать как. Вот ситуация:

 

Есть сундук, он находится в локации; когда его юзаешь - из инвентаря пропадает ключ ("Ключ от сундука"), получаешь какое то количество монет, в связи с чем приходит сообщение в чат ("[Личные]: Вы получаете добычу: ХХХХ золотом ХХ серебром ХХ медью").

Нужно каким то образом поймать это событие. Что попробовал:

1. Через чат, как сообщение "[Личные]: Вы получаете добычу: ХХХХ золотом" - не выходит, EVENT_CHAT_MESSAGE не срабатывает на это сообщение (как и на любые другие, кроме разговоров персонажей).

2. Через EVENT_AVATAR_MONEY_TAKEN - не подходит, т.к. не выходит "отделить" приход этих денег от любого другого поднятия лута.

3. Через EVENT_AVATAR_MONEY_TAKEN используя avatar.GetItemInfo( itemId ) предмета "Ключ от сундука" - тоже не получается, т.к. логично, что "Ключ от сундука" выпадает из инвентаря раньше, чем сработает avatar.GetItemInfo( itemId ).

 

Идеально было бы событие, когда предмет ("Ключ от сундука") пропадает из инвентаря, но такого события я не нашел в описаниях.

 

Есть еще какие идеи у кого то, может быть?

Edited by Oberon
Link to comment
Share on other sites

В общем, не знаю я что придумать.

 

Нужно поймать событие, не могу придумать как. Вот ситуация:

 

Есть сундук, он находится в локации; когда его юзаешь - из инвентаря пропадает ключ ("Ключ от сундука"), получаешь какое то количество монет, в связи с чем приходит сообщение в чат ("[Личные]: Вы получаете добычу: ХХХХ золотом ХХ серебром ХХ медью").

Нужно каким то образом поймать это событие. Что попробовал:

1. Через чат, как сообщение "[Личные]: Вы получаете добычу: ХХХХ золотом" - не выходит, EVENT_CHAT_MESSAGE не срабатывает на это сообщение (как и на любые другие, кроме разговоров персонажей).

2. Через EVENT_AVATAR_MONEY_TAKEN - не подходит, т.к. не выходит "отделить" приход этих денег от любого другого поднятия лута.

3. Через EVENT_AVATAR_MONEY_TAKEN используя avatar.GetItemInfo( itemId ) предмета "Ключ от сундука" - тоже не получается, т.к. логично, что "Ключ от сундука" выпадает из инвентаря раньше, чем сработает avatar.GetItemInfo( itemId ).

 

Идеально было бы событие, когда предмет ("Ключ от сундука") пропадает из инвентаря, но такого события я не нашел в описаниях.

 

Есть еще какие идеи у кого то, может быть?

http://alloder.pro/md/LuaApi/EventContainerItemRemoved.html

Link to comment
Share on other sites

Спасибо. Еще вопрос. Как правильно сравнивать WString и обычный текст? обычный текст перевожу в WString, сравниваю, но результата нет. Вот как делаю:

local text = params.itemObject:GetText() 
		LogInfo( text ) ---Здесь по факту находится строка "Легендарная коробка создателя реликтов" типа WString
		if text == userMods.ToWString("Легендарная коробка создателя реликтов") then LogInfo( "OK!" ) end
Edited by Oberon
Link to comment
Share on other sites

Чтобы сравнить два WString'а, надо воспользоваться функцией common.CompareWString или common.CompareWStringEx. Если нужно просто узнать равенство, то лучше WString перевести в обычную интернализованную lua-строчку (userMods.FromWString) и сравнить её со строковой константой.

Link to comment
Share on other sites

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

By using our site you agree to the Terms of Use