• Страница 1 из 1
  • 1
Обращение ко всем разработчикам аддонов
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
  • Страница 1 из 1
  • 1
Поиск: