• Страница 1 из 1
  • 1
Форум » Обсуждение аддонов » Разработка аддонов WoW » Обращение ко всем разработчикам аддонов (Ищу аддон, показывающий силу атаки)
Обращение ко всем разработчикам аддонов
absorber
Скаут
необходим аддон показывающий силу атаки,либо если нет такого то необходимо написать его,либо выдрать кусок кода.
Сообщение # 1 написано 01.03.2013 в 08:25
Nyll
Силу атаки можно глянуть в статистики персонажа.
Маме беркута привет!
Сообщение # 2 написано 01.03.2013 в 08:56
absorber
Скаут
это понятно, но нужен аддон такой который выводит отдельным фреймом силу атаки. smile

Добавлено (01.03.2013, 09:01)
---------------------------------------------
т.е. как бы нужно постоянно мониторить силу атаки, чтобы знать какое умение и когда использовать

Добавлено (01.03.2013, 10:16)
---------------------------------------------
Nyll
поможешь?

Добавлено (01.03.2013, 15:33)
---------------------------------------------
так и оставите без ответа?:(

Добавлено (01.03.2013, 15:57)
---------------------------------------------
ну или хотябы подскажи как можно вывести какие-нибудь статы персонажа. в окошечко

Сообщение # 3 написано 01.03.2013 в 15:57
Nyll
Смотря куда нужно вывести. Для этого нужно найти функцию вроде называется "аттакпавер" и ивент который будет обновлять информацию для этого можно взять ивент который запускается при изменении стат. Дальше нужно создать фрейму.

Код
UpdateFrames = CreateFrame("Frame")
UpdateFrames:RegisterEvent("Тут ивент который нашел")
UpdateFrames:SetScript("OnEvent", function() print(ТутФункция("player")) end)


И при обновление стат у тя будет принтится твоя сила...
Маме беркута привет!
Сообщение # 4 написано 02.03.2013 в 08:10
absorber
Скаут
подсмотрел в аддоне событие 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
Nyll
Глянь тему я уже отвечал человеку как сделать подобное.
Маме беркута привет!
Сообщение # 6 написано 03.03.2013 в 23:24
absorber
Скаут
ладно, начнем с азов, как говорится по-маленькому и получится.
вот код, я попробовал просто вывести в чате силу атаки, но не тут-то было...при нажатии на кнопку 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)
---------------------------------------------
надо придумать как обновлять локальную переменную может счетчик какой или Event

Код
local f = CreateFrame("FRAME", nil, UIParent)  
local base, posBuff, negBuff = UnitAttackPower("player");    
local effective = base + posBuff + negBuff;
Сообщение # 7 отредактировано absorber - Вторник, 05.03.2013, 21:51
Nyll
Вот держи:

Код
AttackPowerShow = CreateFrame("Frame")
AttackPowerShow:RegisterEvent("UNIT_ATTACK_POWER")
AttackPowerShow:SetScript("OnEvent", function( ... )  
  print("Ваша сила атаки: "..UnitAttackPower("player"))
end)
Маме беркута привет!
Сообщение # 8 написано 07.03.2013 в 07:26
Форум » Обсуждение аддонов » Разработка аддонов WoW » Обращение ко всем разработчикам аддонов (Ищу аддон, показывающий силу атаки)
  • Страница 1 из 1
  • 1
Поиск: