2021-01-18 00:46:05 +01:00

124 lines
3.9 KiB
Lua

setDefaultTab("Main")
local panelName = "advancedFriendHealer"
local ui = setupUI([[
Panel
height: 19
BotSwitch
id: title
anchors.top: parent.top
anchors.left: parent.left
text-align: center
width: 130
!text: tr('Friend Healer')
Button
id: editList
anchors.top: prev.top
anchors.left: prev.right
anchors.right: parent.right
margin-left: 3
height: 17
text: Setup
]], parent)
ui:setId(panelName)
if not storage[panelName] then
storage[panelName] = {
minMana = 60,
minFriendHp = 40,
spellName = "exura sio",
spellHeal = true,
distance = 8,
itemHeal = true,
id = 3160
}
end
rootWidget = g_ui.getRootWidget()
sioListWindow = g_ui.createWidget('SioListWindow', rootWidget)
sioListWindow:hide()
ui.title:setOn(storage[panelName].enabled)
sioListWindow.spell:setOn(storage[panelName].spellHeal)
sioListWindow.item:setOn(storage[panelName].itemHeal)
ui.title.onClick = function(widget)
storage[panelName].enabled = not storage[panelName].enabled
widget:setOn(storage[panelName].enabled)
end
ui.editList.onClick = function(widget)
sioListWindow:show()
sioListWindow:raise()
sioListWindow:focus()
end
sioListWindow.spell.onClick = function(widget)
storage[panelName].spellHeal = not storage[panelName].spellHeal
widget:setOn(storage[panelName].spellHeal)
end
sioListWindow.item.onClick = function(widget)
storage[panelName].itemHeal = not storage[panelName].itemHeal
widget:setOn(storage[panelName].itemHeal)
end
sioListWindow.closeButton.onClick = function(widget)
sioListWindow:hide()
end
sioListWindow.spellName.onTextChange = function(widget, text)
storage[panelName].spellName = text
end
local updateMinManaText = function()
sioListWindow.manaInfo:setText("Minimum Mana >= " .. storage[panelName].minMana .. "%")
end
local updateFriendHpText = function()
sioListWindow.friendHp:setText("Heal Friend Below " .. storage[panelName].minFriendHp .. "% hp")
end
local updateDistanceText = function()
sioListWindow.distText:setText("Max Distance: " .. storage[panelName].distance)
end
sioListWindow.Distance.onValueChange = function(scroll, value)
storage[panelName].distance = value
updateDistanceText()
end
updateDistanceText()
sioListWindow.minMana.onValueChange = function(scroll, value)
storage[panelName].minMana = value
updateMinManaText()
end
sioListWindow.minFriendHp.onValueChange = function(scroll, value)
storage[panelName].minFriendHp = value
updateFriendHpText()
end
sioListWindow.itemId:setItemId(storage[panelName].id)
sioListWindow.itemId.onItemChange = function(widget)
storage[panelName].id = widget:getItemId()
end
sioListWindow.spellName:setText(storage[panelName].spellName)
sioListWindow.minMana:setValue(storage[panelName].minMana)
sioListWindow.minFriendHp:setValue(storage[panelName].minFriendHp)
sioListWindow.Distance:setValue(storage[panelName].distance)
local healItem
macro(200, function()
if storage[panelName].enabled and storage[panelName].spellName:len() > 0 and manapercent() > storage[panelName].minMana then
for _, spec in ipairs(getSpectators()) do
if not spec:isLocalPlayer() then
if spec:isPlayer() and storage[panelName].minFriendHp >= spec:getHealthPercent() and isFriend(spec:getName()) then
if storage[panelName].spellHeal then
saySpell(storage[panelName].spellName .. ' "' .. spec:getName(), 100)
return
end
healItem = findItem(storage[panelName].id)
if storage[panelName].itemHeal and distanceFromPlayer(spec:getPosition()) <= storage[panelName].distance and healItem then
useWith(storage[panelName].id, spec)
return
end
end
end
end
end
end)
addSeparator()