|
Форум Обсуждение аддонов Разработка аддонов WoW Обращение ко всем разработчикам аддонов (Ищу аддон, показывающий силу атаки) |
Обращение ко всем разработчикам аддонов |
это понятно, но нужен аддон такой который выводит отдельным фреймом силу атаки.
Добавлено (01.03.2013, 09:01) Добавлено (01.03.2013, 10:16) Добавлено (01.03.2013, 15:33) Добавлено (01.03.2013, 15:57)
Сообщение # 3 написано 01.03.2013 в 15:57
|
Смотря куда нужно вывести. Для этого нужно найти функцию вроде называется "аттакпавер" и ивент который будет обновлять информацию для этого можно взять ивент который запускается при изменении стат. Дальше нужно создать фрейму.
Код UpdateFrames = CreateFrame("Frame") UpdateFrames:RegisterEvent("Тут ивент который нашел") UpdateFrames:SetScript("OnEvent", function() print(ТутФункция("player")) end) И при обновление стат у тя будет принтится твоя сила...
Маме беркута привет!
Сообщение # 4 написано 02.03.2013 в 08:10
|
подсмотрел в аддоне событие PLAYER_ENTERING_WORLD, поидее оно будет выполняться если персонаж зашел в игру. значит возьмем его. вторая строчка
Код UpdateFrames:RegisterEvent("PLAYER_ENTERING_WORLD") вот нашел ссылочку http://www.wowwiki.com/API_UnitAttackPower Код local base, posBuff, negBuff = UnitAttackPower("player"); local effective = base + posBuff + negBuff; DEFAULT_CHAT_MESSAGE("Your current attack power: " .. effective); следовательно, третья строка получается UpdateFrames:SetScript("OnEvent", function() print(UnitAttackPower("player")) end) ну и Код UpdateFrames = CreateFrame("UImenu_Frame") взял твой фрейм вот отсюда, для теста, поскольку сам ничего не понимаю в LUA получилось: Код function SAY(text) -- Регистрация "SAY" SendChatMessage(text, "SAY", nil,nil); -- Параметры. end function UImenu_OnLoad(self) -- Функция загрузки эвента self:RegisterEvent("VARIABLES_LOADED"); -- Регистрация эвента end function UImenu_OnEnter(self) -- Активация эвента end UImenu_settings = { -- Стандартные опции show = true, -- Открыта lock = false, -- Блокировка: Выключена. alpha = 2 -- Прозрачность }; function UImenu_Init() -- Загрузка настроек UImenu_Frame:SetAlpha(UImenu_settings.alpha); -- Задаем прозрачность из "alpha = 1" end function UImenu_OnEvent(self, event, ...) -- Включение эвента if ( event == "VARIABLES_LOADED" ) then -- Эвент UImenu_Init(); -- Запуск функции "UImenu_Init" end Button = CreateFrame("Button", "UImenu_Button1", UImenu_Frame, "UIPanelButtonTemplate") -- Создание фреймы кнопки Button:SetWidth(80) -- Ширина Button:SetHeight(25) -- Высота Button:SetPoint("CENTER", 0, 0) -- Позиция Button:SetText("Макрос 1") -- Текст на кнопки Button:RegisterForClicks("AnyUp") -- Клик Button:SetScript("OnClick", function() -- Запускаем событие при клики. SAY("тест"); -- текст макроса. end ) Button = CreateFrame("Button", "UImenu_Button2", UImenu_Frame, "UIPanelButtonTemplate") -- Создание фреймы кнопки Button:SetWidth(80) -- Ширина Button:SetHeight(25) -- Высота Button:SetPoint("CENTER", 0, -27) -- Позиция Button:SetText("Макрос 2") -- Текст на кнопки Button:RegisterForClicks("AnyUp") -- Клик Button:SetScript("OnClick", function() -- Запускаем событие при клики. SAY("тест2"); -- текст макроса. end ) UpdateFrames = CreateFrame("UImenu_Frame") UpdateFrames:RegisterEvent("PLAYER_ENTERING_WORLD") UpdateFrames:SetScript("OnEvent", function() print(UnitAttackPower("player")) end) end зашел, проверил, - не заработало.... Добавлено (03.03.2013, 10:35) Код UpdateFrames = CreateFrame("UImenu_Frame") и надо поидее в XML файле указать где будет находиться фрейм или хотябы как его писать там вот XML Код <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/..\FrameXML\UI.xsd"> <Frame name="UImenu_Frame" toplevel="true" frameStrata="LOW" enableMouse="true" movable="true" parent="UIParent" clampedToScreen="true"> <Size> <AbsDimension x="120" y="100" /> </Size> <Anchors> <Anchor point="TOP" /> </Anchors> <Backdrop edgeFile="Interface\Tooltips\UI-Tooltip-Border" bgFile="Interface\Tooltips\UI-Tooltip-Background"> <BackgroundInsets> <AbsInset left="4" right="4" top="4" bottom="4" /> </BackgroundInsets> <EdgeSize> <AbsValue val="16" /> </EdgeSize> <Color r="0" g="0" b="0" a="0.4" /> <BorderColor r="0" g="0" b="0" a="0.8" /> </Backdrop> <Layers> <Layer level="OVERLAY"> <FontString name="$parent_Text" inherits="GameFontNormal"> <Anchors> <Anchor point="CENTER" /> </Anchors> </FontString> </Layer> </Layers> <Scripts> <OnLoad> UImenu_OnLoad(self); </OnLoad> <OnMouseDown> if ( button == "LeftButton" and not UImenu_Options.lock ) then self:StartMoving(); self.isMoving = true; elseif ( button == "RightButton" ) then UImenu_Options_Toggle(); end </OnMouseDown> <OnMouseUp> if ( self.isMoving )then self:StopMovingOrSizing(); self.isMoving = false; end </OnMouseUp> <OnHide> if ( self.isMoving ) then self:StopMovingOrSizing(); self.isMoving = false; end </OnHide> <OnEvent> UImenu_OnEvent(self, event, ...) </OnEvent> </Scripts> </Frame> </UI>
Сообщение # 5 написано 03.03.2013 в 10:35
|
ладно, начнем с азов, как говорится по-маленькому и получится.
вот код, я попробовал просто вывести в чате силу атаки, но не тут-то было...при нажатии на кнопку API функция показывает 0 но хоть аддон работает. Nyll один ты тут можешь понять в чем трабл. Код local f = CreateFrame("FRAME", nil, UIParent) local base, posBuff, negBuff = UnitAttackPower("player"); local effective = base + posBuff + negBuff; f:SetWidth(110) f:SetHeight(30) f:SetPoint("BOTTOM", -220, 210) f.btn = CreateFrame("BUTTON", nil, f, "UIPanelButtonTemplate") f.btn:SetWidth(100) f.btn:SetHeight(22) f.btn:SetText("Сила Атаки") f.btn:SetPoint("CENTER", f, "CENTER") f.btn:SetScript("OnClick", function() ChatFrame1:AddMessage("Ваша сила атаки равна: " .. effective) end) f.btn:SetAlpha(1) f.btn:Show() f:Show() Добавлено (06.03.2013, 02:46) Код local f = CreateFrame("FRAME", nil, UIParent) local base, posBuff, negBuff = UnitAttackPower("player"); local effective = base + posBuff + negBuff; |
| |||
| |||