mirror of
https://github.com/OTCv8/otclientv8.git
synced 2025-04-29 10:49:21 +02:00
128 lines
4.0 KiB
Lua
128 lines
4.0 KiB
Lua
local context = G.botContext
|
|
local Panels = context.Panels
|
|
|
|
Panels.AttackLeaderTarget = function(parent)
|
|
local toAttack = nil
|
|
context.onMissle(function(missle)
|
|
if not context.storage.attackLeader or context.storage.attackLeader:len() == 0 then
|
|
return
|
|
end
|
|
local src = missle:getSource()
|
|
if src.z ~= context.posz() then
|
|
return
|
|
end
|
|
local from = g_map.getTile(src)
|
|
local to = g_map.getTile(missle:getDestination())
|
|
if not from or not to then
|
|
return
|
|
end
|
|
local fromCreatures = from:getCreatures()
|
|
local toCreatures = to:getCreatures()
|
|
if #fromCreatures ~= 1 or #toCreatures ~= 1 then
|
|
return
|
|
end
|
|
local c1 = fromCreatures[1]
|
|
if c1:getName():lower() == context.storage.attackLeader:lower() then
|
|
toAttack = toCreatures[1]
|
|
end
|
|
end)
|
|
context.macro(50, "Attack leader's target", nil, function()
|
|
if toAttack and context.storage.attackLeader:len() > 0 then
|
|
g_game.attack(toAttack)
|
|
toAttack = nil
|
|
end
|
|
end, parent)
|
|
context.addTextEdit("attackLeader", context.storage.attackLeader or "player name", function(widget, text)
|
|
context.storage.attackLeader = text
|
|
end, parent)
|
|
end
|
|
|
|
|
|
Panels.LimitFloor = function(parent)
|
|
context.onPlayerPositionChange(function(pos)
|
|
if context.storage.limitFloor then
|
|
local gameMapPanel = modules.game_interface.getMapPanel()
|
|
if gameMapPanel then
|
|
gameMapPanel:lockVisibleFloor(pos.z)
|
|
end
|
|
end
|
|
end)
|
|
|
|
local switch = context.addSwitch("limitFloor", "Don't show higher floors", function(widget)
|
|
widget:setOn(not widget:isOn())
|
|
context.storage.limitFloor = widget:isOn()
|
|
local gameMapPanel = modules.game_interface.getMapPanel()
|
|
if gameMapPanel then
|
|
if context.storage.limitFloor then
|
|
gameMapPanel:lockVisibleFloor(context.posz())
|
|
else
|
|
gameMapPanel:unlockVisibleFloor()
|
|
end
|
|
end
|
|
end, parent)
|
|
switch:setOn(context.storage.limitFloor)
|
|
end
|
|
|
|
Panels.AntiPush = function(parent)
|
|
if not parent then
|
|
parent = context.panel
|
|
end
|
|
|
|
local panelName = "antiPushPanel"
|
|
local ui = g_ui.createWidget("ItemsPanel", parent)
|
|
ui:setId(panelName)
|
|
|
|
if not context.storage[panelName] then
|
|
context.storage[panelName] = {}
|
|
end
|
|
|
|
ui.title:setText("Anti push")
|
|
ui.title:setOn(context.storage[panelName].enabled)
|
|
ui.title.onClick = function(widget)
|
|
context.storage[panelName].enabled = not context.storage[panelName].enabled
|
|
widget:setOn(context.storage[panelName].enabled)
|
|
end
|
|
|
|
if type(context.storage[panelName].items) ~= 'table' then
|
|
context.storage[panelName].items = {3031, 3035, 0, 0, 0}
|
|
end
|
|
|
|
for i=1,5 do
|
|
ui.items:getChildByIndex(i).onItemChange = function(widget)
|
|
context.storage[panelName].items[i] = widget:getItemId()
|
|
end
|
|
ui.items:getChildByIndex(i):setItemId(context.storage[panelName].items[i])
|
|
end
|
|
|
|
context.macro(100, function()
|
|
if not context.storage[panelName].enabled then
|
|
return
|
|
end
|
|
local tile = g_map.getTile(context.player:getPosition())
|
|
if not tile then
|
|
return
|
|
end
|
|
local topItem = tile:getTopUseThing()
|
|
if topItem and topItem:isStackable() then
|
|
topItem = topItem:getId()
|
|
else
|
|
topItem = 0
|
|
end
|
|
local candidates = {}
|
|
for i, item in pairs(context.storage[panelName].items) do
|
|
if item >= 100 and item ~= topItem and context.findItem(item) then
|
|
table.insert(candidates, item)
|
|
end
|
|
end
|
|
if #candidates == 0 then
|
|
return
|
|
end
|
|
if type(context.storage[panelName].lastItem) ~= 'number' or context.storage[panelName].lastItem > #candidates then
|
|
context.storage[panelName].lastItem = 1
|
|
end
|
|
local item = context.findItem(candidates[context.storage[panelName].lastItem])
|
|
g_game.move(item, context.player:getPosition(), 1)
|
|
context.storage[panelName].lastItem = context.storage[panelName].lastItem + 1
|
|
end)
|
|
end
|