|
Форум Обсуждение аддонов Разработка аддонов WoW Аддон с эмоциями (вопрос) |
Аддон с эмоциями |
Всем привет.
Столкнулся с проблемой. Как сделать аддон, который проигрывал бы эмоции при нажатии на кнопки. А точнее, как реализовать воспроизведение какой-либо эмоции персонажем? Допустим /rofl. Пробовал разные варианты с SendChatMessage(), но ничего не получалось. Потом, скачал аддон EmoteList (http://wowjp.net/forum/114-13673-1), там есть массив с элементами вида Code { "ROFL", EMOTELIST_BUTTON_ROFL, EMOTELIST_SLASH_ROFL, EMOTELIST_TARGET_ROFL, EMOTELIST_NORMAL_ROFL, EMOTELIST_SUA, "1" } Я попробовал использовать эти элементы в качестве параметра SendChatMessage() Code SendChatMessage(EMOTELIST_NORMAL_ROFL, "EMOTE") SendChatMessage(EMOTELIST_TARGET_ROFL, "EMOTE") Но, получается тоже какая-то фигня. Надписи те, которые нужны, но перед ними мой ник. То есть надо убирать Code , "EMOTE" Но тогда персонаж проговаривает эмоцию через /say. Так все таки, как реализовать эмоцию?
Сообщение # 1 написано 24.06.2012 в 15:35
|
Спасибо)
Еще хочу спросить про иконку аддона на миникарте. В интернете я нарыл код xml файла и код lua файла: Code <Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/"> <Button name="MyMod_MinimapButton" parent="Minimap" enableMouse="true" movable="true" hidden="false"> <Size> <AbsDimension x="33" y="33"/> </Size> <Anchors> <Anchor point="TOPLEFT"/> </Anchors> <Layers> <Layer level="BACKGROUND"> <Texture name="MyMod_MinimapButton_Icon" file="Interface\Icons\INV_Misc_CelebrationCake_01"> <Size> <AbsDimension x="21" y="21"/> </Size> <Anchors> <Anchor point="TOPLEFT"> <Offset> <AbsDimension x="7" y="-6"/> </Offset> </Anchor> </Anchors> </Texture> </Layer> <Layer level="OVERLAY"> <Texture file="Interface\Minimap\MiniMap-TrackingBorder"> <Size> <AbsDimension x="56" y="56"/> </Size> <Anchors> <Anchor point="TOPLEFT"/> </Anchors> </Texture> </Layer> </Layers> <Frames> <Frame name="MyMod_MinimapButton_DraggingFrame" hidden="true"> <Scripts> <OnUpdate> MyMod_MinimapButton_DraggingFrame_OnUpdate() </OnUpdate> </Scripts> </Frame> </Frames> <HighlightTexture alphaMode="ADD" file="Interface\Minimap\UI-Minimap-ZoomButton-Highlight"/> <Scripts> <OnLoad> this:RegisterForClicks("LeftButtonUp","RightButtonUp") this:RegisterForDrag("LeftButton","RightButton") </OnLoad> <OnDragStart> this:LockHighlight() MyMod_MinimapButton_DraggingFrame:Show() </OnDragStart> <OnDragStop> this:UnlockHighlight() MyMod_MinimapButton_DraggingFrame:Hide() </OnDragStop> <OnClick> MyMod_MinimapButton_OnClick() -- если кликнули по кнопке </OnClick> </Scripts> </Button> </Ui> Code MyMod_Settings = { -- переменная, которая в *.toc файле записана в ## SavedVariables: MyMod_Settings MinimapPos = 45 -- позиция иконки в градусах } function MyMod_MinimapButton_Reposition() -- функция для рассчета позиции кнопки из градусов в координаты на миникарте MyMod_MinimapButton:SetPoint("TOPLEFT","Minimap","TOPLEFT",52-(80*cos(MyMod_Settings.MinimapPos)),(80*sin(MyMod_Settings.MinimapPos))-52) end function MyMod_MinimapButton_DraggingFrame_OnUpdate() -- вызывается из xml файла при передвижении кнопки курсором local xpos,ypos = GetCursorPosition() local xmin,ymin = Minimap:GetLeft(), Minimap:GetBottom() xpos = xmin-xpos/UIParent:GetScale()+70 ypos = ypos/UIParent:GetScale()-ymin-70 MyMod_Settings.MinimapPos = math.deg(math.atan2(ypos,xpos)) MyMod_MinimapButton_Reposition() end function MyMod_MinimapButton_OnClick() -- при нажатии на кнопку Main_frame() end Все работает, кнопка появляется, двигается и нажимается. Но, при каждой перезагрузке интерфейса она съезжает на одну и ту же позицию. За позицию отвечает переменная MyMod_Settings, которая сохраняется. Получается проблема в загрузке этих координат. Говорят, нужно с эвентом VARIABLES_LOADED что-то сделать. Я попробовал вот так: Code events = CreateFrame("Frame") -- Делаем фрейм local frame = events -- Переводим название фреймы из events в frame frame:RegisterEvent("VARIABLES_LOADED"); frame:SetScript("OnEvent", MyMod_MinimapButton_Reposition()); Но ничего не работает. Как считать переменную из SavedVariables? И зачем нужно Code local frame = events -- Переводим название фреймы из events в frame ?
Сообщение # 3 написано 25.06.2012 в 16:43
|
| |||
| |||