local botName = "ELISIUMOTS.
PL"
UI.Separator()
-- Create the flashing label
local flashyLabel = UI.Label(botName)
UI.Separator()
-- Colors to cycle through
local colors = {"red", "orange", "yellow", "green", "blue", "#4B0082", "#EE82EE"}
local colorIndex = 1
-- Change label color every 50ms
macro(300, function()
flashyLabel:setColor(colors[colorIndex])
colorIndex = (colorIndex % #colors) + 1
end)
-- If Position doesn't exist, define a simple constructor
if Position == nil then
Position = function(x, y, z)
return {x = x, y = y, z = z}
end
end
local function checkPos(dx, dy)
local player = g_game.getLocalPlayer()
if not player then return false end
local pos = player:getPosition()
local newPos = Position(pos.x + dx, pos.y + dy, pos.z)
local tile = g_map.getTile(newPos)
if tile then
local topUseThing = tile:getTopUseThing()
if topUseThing then
return g_game.use(topUseThing)
end
end
return false
end
local bugMap = macro(1, function()
if modules.corelib.g_keyboard.isKeyPressed('Up') then
checkPos(0, -5)
elseif modules.corelib.g_keyboard.isKeyPressed('Right') then
checkPos(5, 0)
elseif modules.corelib.g_keyboard.isKeyPressed('Down') then
checkPos(0, 5)
elseif modules.corelib.g_keyboard.isKeyPressed('Left') then
checkPos(-5, 0)
end
end)
local bugMapIcon = addIcon("Bug Map", {item=3079, text="DASH"}, function(icon,
isOn)
modules.game_console.consoleTextEdit:setVisible(not isOn)
bugMap.setOn(isOn)
end)
local botName = "EXP-SPELLS=SD TARGET"
UI.Separator()
-- Create the flashing label
local flashyLabel = UI.Label(botName)
UI.Separator()
-- Colors to cycle through
local colors = {"red", "orange", "yellow", "green", "blue", "#4B0082", "#EE82EE"}
local colorIndex = 1
-- Change label color every 100ms
macro(300, function()
flashyLabel:setColor(colors[colorIndex])
colorIndex = (colorIndex % #colors) + 1
end)
local distance = 1
local spellDelay = 200
local selectedIndex = 0
local spellButtons = {}
-- Spell + SD rune usage logic
macro(spellDelay, "AoE Spell Spam / SD", function()
if selectedIndex == 0 or not g_game.isAttacking() then return end
local target = g_game.getAttackingCreature()
if not target then return end
local isSafe = true
local hasMonster = false
for _, mob in ipairs(getSpectators()) do
local dist = getDistanceBetween(player:getPosition(), mob:getPosition())
if mob:isMonster() and dist <= distance then
hasMonster = true
end
if mob:isPlayer() and player:getName() ~= mob:getName() then
isSafe = false
end
end
if not isSafe then return end
if selectedIndex == 4 then
-- Sudden Death Rune
g_game.useInventoryItemWith(3155, target)
else
local spell = storage.aoeSpells[selectedIndex]
if spell and spell:len() > 0 and hasMonster then
say(spell)
end
end
end)
-- Store spell config
storage.aoeSpells = storage.aoeSpells or { "exori", "exori hur", "exori gran" }
-- UI Buttons
UI.Label("Select AoE Spell or SD Rune")
UI.Separator()
for i = 1, 3 do
spellButtons[i] = UI.Button("Spell " .. i .. ": " .. (storage.aoeSpells[i] or
""), function()
selectedIndex = i
for j = 1, 4 do
if spellButtons[j] then
spellButtons[j]:setColor(j == i and "green" or "gray")
end
end
end)
spellButtons[i]:setColor("gray")
end
-- Sudden Death Rune Button
spellButtons[4] = UI.Button("Sudden Death Rune", function()
selectedIndex = 4
for j = 1, 4 do
if spellButtons[j] then
spellButtons[j]:setColor(j == 4 and "green" or "gray")
end
end
end)
spellButtons[4]:setColor("gray")
-- Spell text inputs
for i = 1, 3 do
addTextEdit("Set Spell " .. i, storage.aoeSpells[i] or "", function(widget,
text)
storage.aoeSpells[i] = text
if spellButtons[i] then
spellButtons[i]:setText("Spell " .. i .. ": " .. text)
end
end)
end
addSeparator()
local healTitle = addLabel("healTitle", "LECZENIE")
-- Flashing colors for the title
local healColors = {"red", "orange", "yellow", "green", "blue"}
local healColorIndex = 1
macro(300, function()
healTitle:setColor(healColors[healColorIndex])
healColorIndex = (healColorIndex % #healColors) + 1
end)
addSeparator()
addLabel("manaMethodLabel", "Mana Healing Method")
local manaStoneBtn = addButton("manaStoneBtn", "Mana Stone (7289)", function()
storage.useManaStone = true
updateManaButtons()
end)
local manaPotionBtn = addButton("manaPotionBtn", "Mana Potion (23373)", function()
storage.useManaStone = false
updateManaButtons()
end)
-- Update button colors based on choice
function updateManaButtons()
if storage.useManaStone then
manaStoneBtn:setColor("green")
manaPotionBtn:setColor("gray")
else
manaStoneBtn:setColor("gray")
manaPotionBtn:setColor("green")
end
end
-- Set default values if nil
if storage.useManaStone == nil then
storage.useManaStone = true
end
updateManaButtons()
addSeparator()
addLabel("manaPercentLabel", "Heal Mana Below %")
addTextEdit("manaHealPercent", storage.manaHealPercent or "80", function(widget,
text)
local num = tonumber(text)
if num then storage.manaHealPercent = num end
end)
macro(200, "Auto Mana Heal", function()
if manapercent() <= (storage.manaHealPercent or 80) then
if storage.useManaStone then
usewith(7289, player)
else
usewith(23373, player)
end
end
end)
addSeparator()
addLabel("hpPercentLabel", "Auto Exura Vita")
addTextEdit("hpHealPercent", storage.hpHealPercent or "99", function(widget, text)
local num = tonumber(text)
if num then storage.hpHealPercent = num end
end)
macro(100, "Exura Vita on Low HP", function()
if hppercent() <= (storage.hpHealPercent or 99) then
say("exura vita")
end
end)
local botName = "S U P P O R T"
UI.Separator()
-- Create the flashing label
local flashyLabel = UI.Label(botName)
UI.Separator()
-- Colors to cycle through
local colors = {"red", "orange", "yellow", "green", "blue", "#4B0082", "#EE82EE"}
local colorIndex = 1
-- Change label color every 100ms
macro(300, function()
flashyLabel:setColor(colors[colorIndex])
colorIndex = (colorIndex % #colors) + 1
end)
macro(500, "Auto Haste", nil, function()
if not hasHaste() and storage.autoHasteText:len() > 0 then
if saySpell(storage.autoHasteText) then
delay(5000)
end
end
end)
addTextEdit("autoHasteText", storage.autoHasteText or "utani gran hur",
function(widget, text)
storage.autoHasteText = text
end)
macro(200, "Manatrain", function()
if (hppercent() > 50) then
say(storage.ManatrainText)
end
end)
addTextEdit("ManatrainText", storage.ManatrainText or "Utevo Mana",
function(widget, text)
storage.ManatrainText = text
end)
UI.DualScrollPanel(storage.manaTrain, function(widget, newParams)
storage.manaTrain = newParams
manatrainmacro.setOn(storage.manaTrain.on)
end)
local botName = "PVP UTTILS"
UI.Separator()
-- Create the flashing label
local flashyLabel = UI.Label(botName)
UI.Separator()
-- Colors to cycle through
local colors = {"red", "orange", "yellow", "green", "blue", "#4B0082", "#EE82EE"}
local colorIndex = 1
-- Change label color every 100ms
macro(300, function()
flashyLabel:setColor(colors[colorIndex])
colorIndex = (colorIndex % #colors) + 1
end)
botToggleIcon = addIcon("botToggleIcon",
{
outfit = {mount = 0, feet = 0, legs = 0, body = 132, type = 128, auxType = 0,
addons = 3, head = 96},
hotkey = "",
text = "Bot "
},
function()
-- Toggle CaveBot and TargetBot
local newState = not CaveBot.isOn()
CaveBot.setOn(newState)
TargetBot.setOn(newState)
-- Print status to console
warn("CaveBot " .. (CaveBot.isOn() and "On" or "Off"))
warn("TargetBot " .. (TargetBot.isOn() and "On" or "Off"))
end
)
botToggleIcon:breakAnchors()
botToggleIcon:move(1200, 300)
local HoldTarget
macro(200, "hold target", function()
if g_game.isAttacking() then
oldTarget = g_game.getAttackingCreature()
end
if (oldTarget and not g_game.isAttacking() and getDistanceBetween(pos(),
oldTarget:getPosition()) <= 8) then
g_game.attack(oldTarget)
end
end)
--[[
+--------------------------------------------------------------+
¦ Script by Lee (Discord: l33_) ¦
¦ URL: https://www.trainorcreations.com/coding/otclient/99 ¦
¦--------------------------------------------------------------¦
¦ Website: https://trainorcreations.com ¦
¦ Donate: https://trainorcreations.com/donate ¦
¦ Discord: https://trainorcreations.com/discord ¦
¦--------------------------------------------------------------¦
¦ PS: Stop ripping off my work and selling it. ¦
+--------------------------------------------------------------+
]]--
local minimap = modules.game_minimap.minimapWidget
local label = minimap.coords
label = label or g_ui.loadUIFromString([[
Label
id: coords
color: white
font: verdana-11px-rounded
anchors.left: parent.left
anchors.right: parent.right
anchors.bottom: parent.bottom
text-align: center
margin-right: 3
margin-left: 3
text:
]], minimap)
onPlayerPositionChange(function(newPos, oldPos)
if label and newPos then
label:setText(newPos.x ..', '..newPos.y..', '..newPos.z)
label:setColor("white")
end
end)
singlehotkey("F3", "Get Tile Pos", function()
local tile = getTileUnderCursor()
if tile then
local tilePos = ''
local tmp = tile:getPosition()
tilePos = tmp.x ..', '..tmp.y..', '..tmp.z
label:setText(tilePos)
label:setColor("red")
g_window.setClipboardText(tilePos)
end
end)
local key = "F9" -- Hotkey para tacar mwall
local mwallId = 3180 -- Mwall ID
local squaresThreshold = 1 -- quantidade de sqm a tacar MW frente do char
singlehotkey(key, "Mwall Na Morde", function()
local target = g_game.getAttackingCreature()
if target then
local targetPos = target:getPosition()
local targetDir = target:getDirection()
local mwallTile
if targetDir == 0 then -- north
targetPos.y = targetPos.y - squaresThreshold
mwallTile = g_map.getTile(targetPos)
useWith(mwallId, mwallTile:getTopUseThing())
elseif targetDir == 1 then -- east
targetPos.x = targetPos.x + squaresThreshold
mwallTile = g_map.getTile(targetPos)
useWith(mwallId, mwallTile:getTopUseThing())
elseif targetDir == 2 then -- south
targetPos.y = targetPos.y + squaresThreshold
mwallTile = g_map.getTile(targetPos)
useWith(mwallId, mwallTile:getTopUseThing())
elseif targetDir == 3 then -- west
targetPos.x = targetPos.x - squaresThreshold
mwallTile = g_map.getTile(targetPos)
useWith(mwallId, mwallTile:getTopUseThing())
end
end
end)
macro(200, "Leczenie Kumpla", function()
for _, creature in pairs(getSpectators(posz())) do
local heal_player = creature:getName();
if (heal_player == storage.Friend) then
if isInPz() then
useWith(tonumber(storage.Pot), creature)
end
end
end
end)
addLabel("name", "Kumpel")
addTextEdit("friend", storage.Friend or "", function(widget, text)
storage.Friend = text
end)
addLabel("name", "ID POTA:")
addTextEdit("pot", storage.Pot or "", function(widget, text)
storage.Pot = text
end)
local botName = "Z B I E R A C Z K A"
UI.Separator()
-- Create the flashing label
local flashyLabel = UI.Label(botName)
UI.Separator()
-- Colors to cycle through
local colors = {"red", "orange", "yellow", "green", "blue", "#4B0082", "#EE82EE"}
local colorIndex = 1
-- Change label color every 100ms
macro(300, function()
flashyLabel:setColor(colors[colorIndex])
colorIndex = (colorIndex % #colors) + 1
end)
local pickupDelay = 100
local maxItemsPerTick = 20
local pickupRange = 2 -- how far around you to search (up to 8 SQM = 2 tiles
diagonally)
-- Move item step by step toward you
local function moveItemStepToward(item, fromPos, toPos)
local dx = toPos.x - fromPos.x
local dy = toPos.y - fromPos.y
local step = { x = fromPos.x + (dx ~= 0 and (dx > 0 and 1 or -1) or 0),
y = fromPos.y + (dy ~= 0 and (dy > 0 and 1 or -1) or 0),
z = fromPos.z }
g_game.move(item, step, item:getCount())
end
-- Get movable items
local function getMovableItems(tile)
local result = {}
for _, item in ipairs(tile:getItems()) do
if item:isItem() and not item:isNotMoveable() and not item:isCreature() then
table.insert(result, item)
end
end
return result
end
-- Main macro
local pickupMacro = macro(pickupDelay, "Pull From 8 SQM", function()
if g_game.isAttacking() or player:isWalking() then return end
local myPos = pos()
if not myPos then return end
local tiles = g_map.getTiles(myPos.z)
local moved = 0
for _, tile in ipairs(tiles) do
local tPos = tile:getPosition()
local dist = getDistanceBetween(myPos, tPos)
if dist > 0 and dist <= pickupRange then
local items = getMovableItems(tile)
for _, item in ipairs(items) do
moveItemStepToward(item, tPos, myPos)
moved = moved + 1
if moved >= maxItemsPerTick then return end
end
end
end
end)
pickupMacro.setOn(false)
-- UI Button
local pickupIcon = addIcon("pickupIcon", {
item = {id = 3031, count = 1},
text = "Pickup",
hotkey = ""
}, function()
pickupMacro.setOn(not pickupMacro.isOn())
warn("8 SQM Drag: " .. (pickupMacro.isOn() and "ON" or "OFF"))
end)
pickupIcon:breakAnchors()
pickupIcon:move(1200, 350)
local rsAlarm = false
function alarmChangeIcon(change)
if change then
g_window.setIcon('/images/alertclienticon')
else
g_window.setIcon('/images/clienticon')
end
end
local botName = "A N T Y - R S"
UI.Separator()
-- Create the flashing label
local flashyLabel = UI.Label(botName)
UI.Separator()
-- Colors to cycle through
local colors = {"red", "orange", "yellow", "green", "blue", "#4B0082", "#EE82EE"}
local colorIndex = 1
-- Change label color every 100ms
macro(300, function()
flashyLabel:setColor(colors[colorIndex])
colorIndex = (colorIndex % #colors) + 1
end)
antiRSm = macro(1000, "Red Skull Safe", function()
if antiRSm.isOn() and rsAlarm then
playSound("/sounds/Player_Attack.ogg")
delay(1000)
return
end
end)
local frags = 0
onTextMessage(function(mode, text)
if not antiRSm.isOn() then return end
if not text:lower():find("warning! the murder of") then return end
say("ANTY RS PIZDO")
frags = frags + 1
if killsToRs() < 2 or frags > 0 then
AttackBot.setActiveProfile(1)
alarmChangeIcon(true)
rsAlarm = true
end
end)
local function countPlayersOnScreen()
local playerPos = player:getPosition()
local spectators = getSpectators()
local count = 0
for _, creature in ipairs(spectators) do
if creature:isPlayer() and creature:getName() ~= player:getName() and
getDistanceBetween(playerPos, creature:getPosition()) <= 8 then
count = count + 1
end
end
return count
end
macro(10000, "Announce players on screen", function()
local playerCount = countPlayersOnScreen()
if playerCount == 0 then
say("Tylko Alfons sam bez dziwek")
else
say(string.format("Graczy na Ekranie %d I Wasz Master Alfons", playerCount +
1)) -- +1 counts you too
end
end)