Перейти к содержанию

Дайджесты за январь-февраль

Обновления гайдов и аддонов

Январь Февраль

Мониторинг серверов и редактор аддонов

Представляем вам две легенды. То, о чем можно было только мечтать, стало реальностью.

Мониторинг серверов Редактор аддонов

Подсказки из игры на вашем сайте

Теперь вы можете отображать сведения о внутриигровых элементах простым наведением курсора мыши.

Подробнее

Апдейтер аддонов

Представляем вам программу для автообновления аддонов и делимся подробностями.

Подробнее Скачать

WillPanel


Lafayette

Рекомендуемые сообщения

WillPanel

Просмотр файла

Аддон показывает заполнение пула воли, перед срабатыванием антистана.

Желтая полоска под полоской решимости.


  • Добавил
  • Добавлено
    22.01.2014
  • Категория

 

Ссылка на комментарий
Поделиться на другие сайты

пришлось сдвинуть панель изменив координаты по y оси с 115 до 100

слишком низко

и вопрос, после смерти показывается состояние пула как во время боя... это баг или пул реально заполнен?

Ссылка на комментарий
Поделиться на другие сайты

Настройка цвета:

файл WillPanel.lua

Фон (вместо серого):

wtWillPanel:SetBackgroundColor({ r = 0; g = 0; b = 0; a = 0.7 })
Цвет (вместо желтого):

wtBar:SetBackgroundColor({ r = 1.0; g = 1.0; b = 0; a = 1.0 })
Настройка местоположения:

Файл WillPanel.(WidgetButton).xdb

<X>
<Align>WIDGET_ALIGN_LOW</Align>
<Size>180</Size>
<Pos>135</Pos>
</X>
Pos 135 пикселей слева

<Y>
<Align>WIDGET_ALIGN_LOW</Align>
<Size>12</Size>
<Pos>115</Pos>
</Y>
Pos 115 пикселей сверху
Ссылка на комментарий
Поделиться на другие сайты

Настраивал под себя, у меня поставлена панель сверху AOPanelMod r2.3

После смерти состояние пула не обнуляется в аддоне, можно было конечно запускать проверку по таймеру раз в секунду, для этого можно исправить одну строчку

common.RegisterEventHandler( Will_Changed, "EVENT_UNIT_WILL_CHANGED")
на

common.RegisterEventHandler( Will_Changed({unitId=AvatarID}), "EVENT_SECOND_TIMER")
хотя наверно лучше проверять при изменении состояния смерти и просто добавить строчку:

common.RegisterEventHandler( Will_Changed, "EVENT_UNIT_DEAD_CHANGED")

add: потестировал, смерть не влияет на пул

Ссылка на комментарий
Поделиться на другие сайты

желательно бы сделать полоску перемещаемой с помощью левой кнопки мыши и закрепление с помошью правой. 

Ссылка на комментарий
Поделиться на другие сайты

Было бы не плохо сделать подобный аддон и для решимости(сложность ран). или добавить в этот. А то не понятно сколько ждать когда упадут капли после боя...

 

Спасибо)

Изменено пользователем kompositor74
Ссылка на комментарий
Поделиться на другие сайты

add: потестировал, смерть не влияет на пул

 

 

Так, пул не обнуляется при смерти? правильно?

Ссылка на комментарий
Поделиться на другие сайты

При загрузке аддона запрашивается текущее значение пула, если перезагрузить аддон после смерти, значение остается таким, каким и было.

Ссылка на комментарий
Поделиться на другие сайты

{unitId=AvatarID}
А почему не используешь этот фильтр в "EVENT_UNIT_WILL_CHANGED"? Зачем лишние вызовы обработчика?

Кстати, положение бара можно вычислять динамически относительна морды персанажа.

Кстати-2. В том месте находится бар прогресса прокачки покровителя.

Ссылка на комментарий
Поделиться на другие сайты

хм... такой воросик, а спилить вместе полоски решимости и воли, нормально их обрисовать и всунуть под ноги персу можно ? оч неудобно коситься постоянно в угол туда...  атак было бы все видно и все перед глазами)

Изменено пользователем bodia3092
Ссылка на комментарий
Поделиться на другие сайты

А почему не используешь этот фильтр в "EVENT_UNIT_WILL_CHANGED"? Зачем лишние вызовы обработчика?

Кстати, положение бара можно вычислять динамически относительна морды персанажа.

Кстати-2. В том месте находится бар прогресса прокачки покровителя.

EVENT_UNIT_WILL_CHANGED приходит при изменении пула

при загрузке аддона вызываю Will_Changed({unitId=AvatarID}) чтобы получить текущий пул.

подсовываю параметры с id аватара, поскольку функция работает с параметром unitId.

Это нужно например для того, чтобы при перезагрузке аддона и некотором пуле, отображалось правильное значение, а не ноль.

аддон с открытым кодом, каждый может настроить под себя, задача была: меньше букв - проще разобраться, как это работает.

Ссылка на комментарий
Поделиться на другие сайты

Я имел ввиду:

common.RegisterEventHandler(Will_Changed, "EVENT_UNIT_WILL_CHANGED", {unitId=AvatarID})
Ссылка на комментарий
Поделиться на другие сайты

можно и так, я пытался выяснить, можно ли получить пул противника, но так и не получил нормальных результатов

Ссылка на комментарий
Поделиться на другие сайты

добавьте пожалуйста функцию днд, для передвижения. Ибо самый простой аддон АОPanel сдвигает эту вашу полоску на решимость

Ссылка на комментарий
Поделиться на другие сайты

можно и так, я пытался выяснить, можно ли получить пул противника, но так и не получил нормальных результатов

AvatarTarget = Avatar.GetTarget()

function Will_Changed(p)
  if p.unitId==AvatarTarget then
    local will = unit.GetWill( p.unitId )
    wtText:SetVal("val",common.FormatInt( will, "%d" )) 
    setPlacement(wtBar, {sizeX = 180 * will / 100})
  end
end
 
Только еще проверять надо на nil цель аватара, иначе заспамит mods.txt
 
Ну и виджет еще одни пририсовать для цели аватара
 
P.S. кстати по пуллу ярости видимо печалька, в АПИ нет функций на это, только уже на саму сложность ран

 

Ссылка на комментарий
Поделиться на другие сайты

прикреплял dnd, у меня не работает, я криворукий разраб)

 

на фиг оно надо в аддонах такого типа? :)

Ссылка на комментарий
Поделиться на другие сайты

AvatarTarget = Avatar.GetTarget()

function Will_Changed(p)
  if p.unitId==AvatarTarget then
    local will = unit.GetWill( p.unitId )
    wtText:SetVal("val",common.FormatInt( will, "%d" )) 
    setPlacement(wtBar, {sizeX = 180 * will / 100})
  end
end
 

Только еще проверять надо на nil цель аватара, иначе заспамит mods.txt

 

Ну и виджет еще одни пририсовать для цели аватара

 

P.S. кстати по пуллу ярости видимо печалька, в АПИ нет функций на это, только уже на саму сложность ран

там не может быть nil

Не AvatarTarget, а AvatarID, и получается после появления аватара, а эвент приходит с параметрами

вот если бы там было avatar.GetTarget() тогда да

#10: Есть возможность создание панельки решимости

Ссылка на комментарий
Поделиться на другие сайты

Так я ж написал avatar.GetTarget() и поместил в переменную AvatarTarget

 

зачем панелька решимости, она и так есть

Ссылка на комментарий
Поделиться на другие сайты



function Will_Changed(p)
if p.unitId==AvatarID then
local will = unit.GetWill( p.unitId )
wtText:SetVal("val",common.FormatInt( will, "%d" )) 
setPlacement(wtBar, {sizeX = 180 * will / 100})
end
if p.unitId==AvatarTarget then
local will = unit.GetWill( p.unitId )
wtText:SetVal("val",common.FormatInt( will, "%d" )) 
setPlacement(wtBarT, {sizeX = 180 * will / 100})
end
end


Как то так, только надо в AvatarTarget поместить цель аватара и посоздавать виджеты для воли цели. Да, и проверку на то, что у аватара выбрана цель

Ссылка на комментарий
Поделиться на другие сайты

Нельзя узнать ничью волю, кроме аватара. unit.GetWill возвращает ноль

Ссылка на комментарий
Поделиться на другие сайты

Да, и проверку на то, что у аватара выбрана цель

Зачем так усложнять?

 

if p.unitId==avatar.GetTarget() then

будет достаточно. А вот чего там точно не хватает, так это EVENT_AVATAR_PRIMARY_TARGET_CHANGED

Ссылка на комментарий
Поделиться на другие сайты

почему вместо решимости вставляется ваш бар? объясните, как сделать так, чтоб ваша полоска была ниже решимости?

Ссылка на комментарий
Поделиться на другие сайты

код с панелью пула воли противника в таргете
local AvatarID, wtBar, wtText, wtTargetBar

function setPlacement( widget, place )
local p = widget:GetPlacementPlain()
for k, v in place do
p[k] = place[k] or v
end
widget:SetPlacementPlain(p)
end

function Will_Changed(p)
if p.unitId==AvatarID then
local will = unit.GetWill( p.unitId )
wtText:SetVal("val",common.FormatInt( will, "%d" ))
setPlacement(wtBar, {sizeX = 180 * will / 100})
else
Target_Changed()
end
end

function Target_Changed()
local target=avatar.GetTarget()
if target and object.IsExist(target) and unit.IsPlayer(target) then
wtTargetBar:Show(true)
local will = unit.GetWill( target )
wtTargetBar:GetChildChecked( "Text", true ):SetVal("val",common.FormatInt( will, "%d" ))
setPlacement(wtTargetBar:GetChildChecked( "Bar", true ), {sizeX = 180 * will / 100})
else
wtTargetBar:Show(false)
end
end

function Init()
AvatarID=avatar.GetId()
common.RegisterEventHandler( Will_Changed, "EVENT_UNIT_WILL_CHANGED")
common.RegisterEventHandler( Target_Changed, "EVENT_AVATAR_PRIMARY_TARGET_CHANGED")

local wtWillPanel=mainForm:GetChildChecked( "WillPanel", true )
wtWillPanel:SetBackgroundColor({ r = 0; g = 0; b = 0; a = 1 })
wtBar=wtWillPanel:GetChildChecked( "Bar", true )
wtBar:SetBackgroundColor({ r = 1.0; g = 1.0; b = 0; a = 1.0 })
wtText=wtWillPanel:GetChildChecked( "Text", true )
Will_Changed({unitId=AvatarID})

wtTargetBar = mainForm:CreateWidgetByDesc(wtWillPanel:GetWidgetDesc())
wtTargetBar:SetBackgroundColor({ r = 0; g = 0; b = 0; a = 1 })
wtTargetBar:GetChildChecked( "Bar", true ):SetBackgroundColor({ r = 1.0; g = 1.0; b = 0; a = 1.0 })
setPlacement(wtTargetBar, {posX = 395})
mainForm:AddChild(wtTargetBar)
wtTargetBar:Show(false)
end

common.RegisterEventHandler(Init, "EVENT_AVATAR_CREATED")
if avatar.IsExist() then
Init()
end

 

правда может залипнуть при смерти аватара, таргет теряется, а виджет не пропадает

это для тех, кто хочет проверить работает ли пул у противников, для тех кому лень проверять - не работает.

Ссылка на комментарий
Поделиться на другие сайты

почему вместо решимости вставляется ваш бар? объясните, как сделать так, чтоб ваша полоска была ниже решимости?

скачайте версию r1 хотя они вроде скрыты, тогда 

http://alloder.pro/topic/1522-willpanel/#entry29029

вместо 100 поставить 115 по Y

Ссылка на комментарий
Поделиться на другие сайты

ВНИМАНИЕ!
Обязательна информация из \Personal\Logs\mods.txt для диагностики ошибки.
Иначе вам не помочь.
В игре включите в Меню → Интерфейс → Общие настройки → Запись ошибок пользовательских дополнений. Затем запустите аддон в игре.
Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...

Важная информация

Пользуясь сайтом, вы принимаете Условия использования