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)

person Community    schedule 11.04.2016    source источник
comment
Ни то, ни другое не работает - как вы это тестировали? Произошла ошибка? Кажется, у вас огромное условие ЕСЛИ, которое может быть ложным во всех случаях, которые вы пробовали, и, таким образом, казалось, что код не работает, даже если ошибка не была в части DoEmote, которую вы, кажется, пытаетесь понять. Достигнут ли DoEmote? Если да, то какой из параметров должен быть именем отправителя? Вы должны распечатать переменные и смотреть вместо того, чтобы работать вслепую. Если вы уже знаете эту информацию, поделитесь ею. :)   -  person Rochet2    schedule 11.04.2016


Ответы (1)


Как и все остальные функции WoW API, DoEmote принимает в качестве второго параметра UnitId. Вы можете использовать имена отдельных игроков (и действовать в соответствии с ними), только если они находятся в вашей группе или рейде.

Когда желаемый игрок является вашей целью, вы можете просто DoEmote("slap", "target"). Если это не так, вы можете попытаться просканировать членов вашей группы / рейда target, targettarget и focus и попытаться определить, является ли какой-либо из них вашим желаемым игроком, сравнив, что UnitName возвращает для каждого из них, и используйте DoEmote с соответствующим идентификатором.

Если желаемый игрок не соответствует какому-либо действительному UnitId - то есть он не сфокусирован / нацелен / не нацелен на кого-либо в вашем рейде / группе, включая вас, то вы ничего не можете с этим поделать. Вы можете воздействовать только на единицы, соответствующие идентификаторам.

Вы также можете использовать SendChatMessage для EMOTE канала с любым текстом, который хотите, прямо написав «пощечины Залиссе». в качестве аргумента в крайнем случае. Это будет иметь тот же эффект, что и команда чата /e, со всеми ее недостатками - ваш текст будет передан дословно, переводы не будут выполняться для других языков клиента, не будет воспроизводиться анимация эмоций или звук, а имя игрока не будет изменено / отклонено на языках, где это важно.

person Oleg V. Volkov    schedule 11.04.2016