Когда я могу использовать SendChatMessage после входа? - PullRequest
0 голосов
/ 13 сентября 2018

После входа в систему я хотел бы отправить сообщение чата на канал Гильдии. Я сейчас слушаю события: PLAYER_ENTERING_WORLD GUILD_ROSTER_UPDATE

После того, как они сработали (по порядку), я хотел бы отправить сообщение в чат. Тем не менее, он никогда не отправляет. Код:

print("Should_send")
SendChatMessage(msgToSend, "GUILD");

Стоит также отметить, что если я запустил это вручную, это работает. Я вижу, что оператор печати "Should_send" появляется в окне чата по умолчанию каждый раз - как и ожидалось. Я также проверил, что «msgToSend» содержит содержимое и содержит менее 255 символов.

Итак, когда я могу позвонить SendChatMessage?

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Хорошо, чтобы отправить сообщение чата в гильдию, нужно дождаться события "CLUB_STREAM_SUBSCRIBED".

Это связано с тем, что канал Гильдии становится своего рода "общественным" каналом - ранее, кажется, этого не требовалось.

Итак, добавление прослушивателя событий:

frame:RegisterEvent("CLUB_STREAM_SUBSCRIBED");

Решает проблему.

0 голосов
/ 14 сентября 2018

Скорее всего, вам потребуется установить флаг для события, а затем распечатать его для другого события.

Вы можете отправлять сообщения чата в любое время после появления приветственного сообщения или после того, как приветственное сообщение было опубликовано. Что довольно скоро после того, как вы сможете получать события из ваших фреймов.


Вот что я бы сделал, чтобы выполнить аналогичную миссию:

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

Вы можете сделать свой собственный отпечаток для отправки общих сообщений в окно чата, которое всегда должно работать подобно:

function MyPrint( msg, r, g, b, frame, id)
    (frame or DEFAULT_CHAT_FRAME):AddMessage(msg, r or 1, g or 1, b or 0, id or 0)
end

-- put these in your event handlers
MyPrint("event PLAYER_ENTERING_WORLD")

MyPrint("event GUILD_ROSTER_UPDATE")

И используйте это для отладки.

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

Я точно знаю, что если вы попытаетесь написать в чат до появления приветственного сообщения с печатью, оно, по крайней мере, раньше не работало. Я помню буферизацию сообщений в прошлом, пока не произошло определенное событие, а затем распечатал их.

...