World of Warcraft Addon API для начинающих в Lua
В DoEmote("slap", "X")
Я хочу, чтобы x был своего рода аргументом для того, кто отправляет начальное сообщение эмоции. Я пробовал такие вещи как arg2, arg12 и sender
Я также попытался обойти вас, чтобы вы нацелились на эмоцию, а затем ответили /slap. Но ни один из них не работает.
local p3 = CreateFrame("Frame")
p3:RegisterEvent("CHAT_MSG_TEXT_EMOTE", arg1, arg2, arg12)
p3:SetScript("OnEvent", function(self, event, arg1, arg2)
if event == ("CHAT_MSG_TEXT_EMOTE")
and strfind(arg1, "laughs")
and strfind(arg1, "you.")
and name == ("Zalíssa")
then DoEmote("slap", "")
end
end)
1 ответ
Как и почти все остальные функции WoW API, DoEmote
принимает UnitId в качестве второго параметра. Вы можете использовать имена отдельных игроков (и действовать на них) только в том случае, если они находятся в вашей группе или рейде.
Когда желаемый игрок - ваша цель, вы можете просто DoEmote("slap", "target")
, Если это не так, вы можете попробовать отсканировать участников вашей группы или рейда. target
, targettarget
а также focus
юнитов и попытайтесь выяснить, является ли какой-либо из них вашим желаемым игроком, сравнив UnitName
возвращает для каждого из них и использовать DoEmote
с соответствующим ID.
Если желаемый игрок не соответствует ни одному действующему UnitId - т.е. не сфокусирован / не нацелен / не нацелен на кого-либо в вашем рейде / группе, включая вас, то вы ничего не можете с этим поделать. Вы можете когда-либо действовать только на единицы, которые соответствуют идентификаторам.
Вы также можете использовать SendChatMessage
в EMOTE
канал с любым текстом, который вы хотите, прямо писать "шлепки Zalíssa". в качестве аргумента в качестве крайней меры. Это будет иметь тот же эффект, что и /e
Команда chat со всеми ее недостатками - ваш текст будет передаваться дословно, переводы на другие языки клиента выполняться не будут, анимация эмоций или звук не будут воспроизводиться, а имя игрока не будет изменяться / отклоняться на тех языках, где это имеет значение.