mirror of
https://github.com/OTCv8/otclientv8.git
synced 2025-04-29 10:49:21 +02:00
252 lines
7.4 KiB
Lua
252 lines
7.4 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,
|
|
customSpellName = "exura max sio",
|
|
customSpell = false,
|
|
distance = 8,
|
|
itemHeal = false,
|
|
id = 3160,
|
|
exuraSio = false,
|
|
exuraGranSio = false,
|
|
exuraMasRes = false,
|
|
healEk = false,
|
|
healRp = false,
|
|
healEd = false,
|
|
healMs = false
|
|
}
|
|
end
|
|
|
|
local config = storage[panelName]
|
|
|
|
-- basic elements
|
|
ui.title:setOn(config.enabled)
|
|
ui.title.onClick = function(widget)
|
|
config.enabled = not config.enabled
|
|
widget:setOn(config.enabled)
|
|
end
|
|
ui.editList.onClick = function(widget)
|
|
sioListWindow:show()
|
|
sioListWindow:raise()
|
|
sioListWindow:focus()
|
|
end
|
|
|
|
rootWidget = g_ui.getRootWidget()
|
|
if rootWidget then
|
|
sioListWindow = UI.createWindow('SioListWindow', rootWidget)
|
|
sioListWindow:hide()
|
|
|
|
-- TextWindow
|
|
sioListWindow.spellName:setText(config.customSpellName)
|
|
sioListWindow.spellName.onTextChange = function(widget, text)
|
|
config.customSpellName = text
|
|
end
|
|
|
|
-- botswitches
|
|
sioListWindow.spell:setOn(config.customSpell)
|
|
sioListWindow.spell.onClick = function(widget)
|
|
config.customSpell = not config.customSpell
|
|
widget:setOn(config.customSpell)
|
|
end
|
|
sioListWindow.item:setOn(config.itemHeal)
|
|
sioListWindow.item.onClick = function(widget)
|
|
config.itemHeal = not config.itemHeal
|
|
widget:setOn(config.itemHeal)
|
|
end
|
|
sioListWindow.exuraSio:setOn(config.exuraSio)
|
|
sioListWindow.exuraSio.onClick = function(widget)
|
|
config.exuraSio = not config.exuraSio
|
|
widget:setOn(config.exuraSio)
|
|
end
|
|
sioListWindow.exuraGranSio:setOn(config.exuraGranSio)
|
|
sioListWindow.exuraGranSio.onClick = function(widget)
|
|
config.exuraGranSio = not config.exuraGranSio
|
|
widget:setOn(config.exuraGranSio)
|
|
end
|
|
sioListWindow.exuraMasRes:setOn(config.exuraMasRes)
|
|
sioListWindow.exuraMasRes.onClick = function(widget)
|
|
config.exuraMasRes = not config.exuraMasRes
|
|
widget:setOn(config.exuraMasRes)
|
|
end
|
|
sioListWindow.vocation.ED:setOn(config.healEd)
|
|
sioListWindow.vocation.ED.onClick = function(widget)
|
|
config.healEd = not config.healEd
|
|
widget:setOn(config.healEd)
|
|
end
|
|
sioListWindow.vocation.MS:setOn(config.healMs)
|
|
sioListWindow.vocation.MS.onClick = function(widget)
|
|
config.healMs = not config.healMs
|
|
widget:setOn(config.healMs)
|
|
end
|
|
sioListWindow.vocation.EK:setOn(config.healEk)
|
|
sioListWindow.vocation.EK.onClick = function(widget)
|
|
config.healEk = not config.healEk
|
|
widget:setOn(config.healEk)
|
|
end
|
|
sioListWindow.vocation.RP:setOn(config.healRp)
|
|
sioListWindow.vocation.RP.onClick = function(widget)
|
|
config.healRp = not config.healRp
|
|
widget:setOn(config.healRp)
|
|
end
|
|
|
|
-- functions
|
|
local updateMinManaText = function()
|
|
sioListWindow.manaInfo:setText("Minimum Mana >= " .. config.minMana .. "%")
|
|
end
|
|
local updateFriendHpText = function()
|
|
sioListWindow.friendHp:setText("Heal Friend Below " .. config.minFriendHp .. "% hp")
|
|
end
|
|
local updateDistanceText = function()
|
|
sioListWindow.distText:setText("Max Distance: " .. config.distance)
|
|
end
|
|
|
|
-- scrollbars and text updates
|
|
sioListWindow.Distance:setValue(config.distance)
|
|
sioListWindow.Distance.onValueChange = function(scroll, value)
|
|
config.distance = value
|
|
updateDistanceText()
|
|
end
|
|
updateDistanceText()
|
|
|
|
sioListWindow.minMana:setValue(config.minMana)
|
|
sioListWindow.minMana.onValueChange = function(scroll, value)
|
|
config.minMana = value
|
|
updateMinManaText()
|
|
end
|
|
updateMinManaText()
|
|
|
|
sioListWindow.minFriendHp:setValue(config.minFriendHp)
|
|
sioListWindow.minFriendHp.onValueChange = function(scroll, value)
|
|
config.minFriendHp = value
|
|
updateFriendHpText()
|
|
end
|
|
updateFriendHpText()
|
|
|
|
sioListWindow.itemId:setItemId(config.id)
|
|
sioListWindow.itemId.onItemChange = function(widget)
|
|
config.id = widget:getItemId()
|
|
end
|
|
|
|
sioListWindow.closeButton.onClick = function(widget)
|
|
sioListWindow:hide()
|
|
end
|
|
|
|
end
|
|
|
|
-- local variables
|
|
local newTibia = g_game.getClientVersion() >= 960
|
|
|
|
local function isValid(name)
|
|
if not newTibia then return true end
|
|
|
|
local voc = vBot.BotServerMembers[name]
|
|
if not voc then return true end
|
|
|
|
if voc == 11 then voc = 1
|
|
elseif voc == 12 then voc = 2
|
|
elseif voc == 13 then voc = 3
|
|
elseif voc == 14 then voc = 4
|
|
end
|
|
|
|
local isOk = false
|
|
if voc == 1 and config.healEk then
|
|
isOk = true
|
|
elseif voc == 2 and config.healRp then
|
|
isOk = true
|
|
elseif voc == 3 and config.healMs then
|
|
isOk = true
|
|
elseif voc == 4 and config.healEd then
|
|
isOk = true
|
|
end
|
|
|
|
return isOk
|
|
end
|
|
|
|
macro(200, function()
|
|
if not config.enabled then return end
|
|
if modules.game_cooldown.isGroupCooldownIconActive(2) then return end
|
|
|
|
--[[
|
|
1. custom spell
|
|
2. exura gran sio - at 50% of minHpValue
|
|
3. exura gran mas res
|
|
4. exura sio
|
|
5. item healing
|
|
--]]
|
|
|
|
-- exura gran sio & custom spell
|
|
if config.customSpell or config.exuraGranSio then
|
|
for i, spec in ipairs(getSpectators()) do
|
|
if spec:isPlayer() and spec ~= player and isValid(spec:getName()) and spec:canShoot() then
|
|
if isFriend(spec) then
|
|
if config.customSpell and spec:getHealthPercent() <= config.minFriendHp then
|
|
return cast(config.customSpellName .. ' "' .. spec:getName() .. '"', 1000)
|
|
end
|
|
if config.exuraGranSio and spec:getHealthPercent() <= config.minFriendHp/3 then
|
|
if canCast('exura gran sio "' .. spec:getName() ..'"') then
|
|
return cast('exura gran sio "' .. spec:getName() ..'"', 60000)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
-- exura gran mas res and standard sio
|
|
local friends = 0
|
|
if config.exuraMasRes then
|
|
for i, spec in ipairs(getSpectators(player, largeRuneArea)) do
|
|
if spec:isPlayer() and spec ~= player and isValid(spec:getName()) and spec:canShoot() then
|
|
if isFriend(spec) and spec:getHealthPercent() <= config.minFriendHp then
|
|
friends = friends + 1
|
|
end
|
|
end
|
|
end
|
|
if friends > 1 then
|
|
return cast('exura gran mas res', 2000)
|
|
end
|
|
end
|
|
if config.exuraSio or config.itemHeal then
|
|
for i, spec in ipairs(getSpectators()) do
|
|
if spec:isPlayer() and spec ~= player and isValid(spec:getName()) and spec:canShoot() then
|
|
if isFriend(spec) then
|
|
if spec:getHealthPercent() <= config.minFriendHp then
|
|
if config.exuraSio then
|
|
return cast('exura sio "' .. spec:getName() .. '"', 1000)
|
|
elseif findItem(config.id) and distanceFromPlayer(spec:getPosition()) <= config.distance then
|
|
return useWith(config.id, spec)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
end)
|
|
addSeparator() |