Untitled
unknown
plain_text
10 months ago
10 kB
8
Indexable
local lootItemIds = {
["3281"] = "giant sword",
["3420"] = "demon shield",
["3364"] = "golden legs",
["3079"] = "boots of haste",
["3366"] = "magic plate armor",
["3386"] = "dragon scale mail",
["3320"] = "fire axe",
["3309"] = "thunder hammer",
["3422"] = "great shield",
["3392"] = "royal helmet",
["3414"] = "mastermind shield"
}
local ids = {}
local currentIdIdx = 0
local count = 0
for k, _ in pairs(lootItemIds) do
count = count + 1
ids[count] = k
end
macro(5000, "LOOT SELL", function()
if not g_game.isOnline() then return end
for idx, id in ipairs(ids) do
if idx <= currentIdIdx then goto continue end
currentIdIdx = idx
local found = findItem(id)
if found then
say("!sell " .. lootItemIds[id])
return
end
::continue::
end
currentIdIdx = 0
end)
local lists = {
["Raid"] = {
"Glejt", "Shop Point", "Giant Eye", "Exp Potion", "Loss Item Box",
"Gold Ingot", "Farm Coin", "Crystal Coin", "undead heart", "Demoniczny Kamien"
},
["Exp"] = {
"exp potion", "boots of haste", "magic plate armor", "dragon scale mail",
"fire axe", "gold ingot", "great shield", "Crystal Coin",
"Farm Coin", "mastermind shield"
}
}
local isAddingItems = false
local function addItemsWithDelay(items)
if isAddingItems then return end
isAddingItems = true
local delay = 100
say("!autoloot clear")
for _, item in ipairs(items) do
delay = delay + 3000
schedule(delay, function()
say("!autoloot add, " .. item)
end)
end
schedule(delay + 100, function()
isAddingItems = false
end)
end
local tekst = "EXP"
local tekst2 = "TRYB: EXP"
local ikona = addIcon("ctrl", {
item = 3039,
text = tekst,
pos = { x = 50, y = 20 }
}, function(widget, enabled)
if enabled then
CaveBot.setOff()
TargetBot.setOff()
addItemsWithDelay(lists["Raid"])
storage._configs.cavebot_configs.selected = "miasto"
storage._configs.targetbot_configs.selected = "Raid"
CaveBot.setOn()
TargetBot.setOn()
tekst = "RAID"
widget.text:setColor("orange")
else
CaveBot.setOff()
TargetBot.setOff()
addItemsWithDelay(lists["Exp"])
storage._configs.cavebot_configs.selected = "bojowy_ogar_ch2_gora"
storage._configs.targetbot_configs.selected = "Przyklad"
CaveBot.setOn()
TargetBot.setOn()
tekst = "EXP"
widget.text:setColor("blue")
end
widget.text:setText(tekst)
end)
local caveIcon = addIcon("cavebot", {
item = 9018,
text = "CaveBot",
pos = { x = 20, y = 100 }
}, function(widget, enabled)
if enabled then
CaveBot.setOn()
else
CaveBot.setOff()
end
end)
local targetIcon = addIcon("targetbot", {
item = 7417,
text = "TargetBot",
pos = { x = 120, y = 100 }
}, function(widget, enabled)
if enabled then
TargetBot.setOn()
else
TargetBot.setOff()
end
end)
local expbossicon
expbossicon = addIcon("expboss", {
item = 8148,
text = tekst2,
pos = { x = 50, y = 180 }
}, function(widget, enabled)
local currentProfile = AttackBot.getActiveProfile()
if currentProfile == 1 then
AttackBot.setActiveProfile(2)
widget.text:setText("TARGET/BOSS")
widget.text:setColor("pink")
else
AttackBot.setActiveProfile(1)
widget.text:setText("UE/EXP")
widget.text:setColor("blue")
end
end)
local function updateBotStatuses()
-- Aktualizacja CaveBot
if CaveBot.isOn() then
if caveIcon then
caveIcon.text:setText("CaveBot: ON")
caveIcon.text:setColor("green")
end
else
if caveIcon then
caveIcon.text:setText("CaveBot: OFF")
caveIcon.text:setColor("red")
end
end
-- Aktualizacja TargetBot
if TargetBot.isOn() then
if targetIcon then
targetIcon.text:setText("TargetBot: ON")
targetIcon.text:setColor("green")
end
AttackBot.setActiveProfile(1) -- Jeśli TargetBot jest włączony, ustawiamy profil 1 (UE/EXP)
if expbossicon then
expbossicon.text:setText("UE/EXP")
expbossicon.text:setColor("blue")
end
else
if targetIcon then
targetIcon.text:setText("TargetBot: OFF")
targetIcon.text:setColor("red")
end
AttackBot.setActiveProfile(2) -- Jeśli TargetBot jest wyłączony, ustawiamy profil 2 (TARGET/BOSS)
if expbossicon then
expbossicon.text:setText("TARGET/BOSS")
expbossicon.text:setColor("pink")
end
end
schedule(500, updateBotStatuses) -- Odświeżaj status co 1 sekundę
end
updateBotStatuses()
macro(500, "Kopanie Kryształów", function()
local activeCrystalId = 11821 -- ID aktywnego kryształu
local inactiveCrystalId = 11822 -- ID nieaktywnego kryształu
local playerPos = player:getPosition()
local radius = 7
-- Funkcja szukająca aktywnego kryształu
local function findCrystal()
for x = -radius, radius do
for y = -radius, radius do
local tilePos = {x = playerPos.x + x, y = playerPos.y + y, z = playerPos.z}
local tile = g_map.getTile(tilePos)
if tile then
for _, item in ipairs(tile:getItems()) do
if item:getId() == activeCrystalId then
return tilePos, item
end
end
end
end
end
return nil, nil
end
-- Funkcja, która sprawdza, czy kryształ jest aktywny
local function isCrystalActive(crystal)
return crystal:getId() == activeCrystalId
end
-- Funkcja wykonująca akcję, gdy znajdziemy kryształ
local function handleCrystal()
local pos, crystal = findCrystal()
if pos and crystal then
autoWalk(pos) -- Przechodzimy do kryształu
schedule(500, function()
use(crystal) -- Klikamy PPM na kryształ
end)
-- Czekamy na zakończenie kopania kryształu, następnie sprawdzamy, czy zmienił się na nieaktywny
schedule(2000, function()
if not isCrystalActive(crystal) then
-- Kryształ stał się nieaktywny, szukamy kolejnego aktywnego
handleCrystal()
end
end)
end
end
-- Rozpoczynamy proces
handleCrystal()
end)
macro(100, "Auto Cut Bushes", function()
local MacheteID = 3308
local BushID = 3702
local playerPos = pos() -- Pobranie pozycji gracza jako oddzielna zmienna
for x = -1, 1 do
for y = -1, 1 do
if x ~= 0 or y ~= 0 then
local tile = g_map.getTile({x = playerPos.x + x, y = playerPos.y + y, z = playerPos.z})
if tile then
for _, item in ipairs(tile:getItems() or {}) do
if item:getId() == BushID then
useWith(MacheteID, item)
end
end
end
end
end
end
end)
local holdMwallHotkey = '5'
local holdMwallText = 'Hold MWall'
local holdMwallTextCol = 'yellow'
local holdMwallTiles = {}
local holdMwallIsOn = false
onKeyPress(function(keys)
if keys == holdMwallHotkey and holdMwallIsOn then
local tile = getTileUnderCursor()
local currTile = table.find(holdMwallTiles, tile)
if currTile then
holdMwallTiles[currTile]:setText('')
table.remove(holdMwallTiles, currTile)
else
table.insert(holdMwallTiles, tile)
holdMwallTiles[#holdMwallTiles]:setText(holdMwallText, holdMwallTextCol)
end
end
end)
addSwitch('holdMwall', 'Better Hold MWall', function(widget)
widget:setOn(not widget:isOn())
if not widget:isOn() then
for i = 1, #holdMwallTiles do
holdMwallTiles[1]:setText('')
table.remove(holdMwallTiles, 1)
end
end
holdMwallIsOn = widget:isOn()
end)
macro(1, function()
if holdMwallIsOn then
for _, holdMwallTile in pairs(holdMwallTiles) do
if holdMwallTile:getTopThing():getId() ~= 2129 then
useWith(3180, holdMwallTile:getTopUseThing())
return
end
end
end
end)
local key = "1" -- Hotkey to shoot mwall
local mwallId = 3180 -- Mwall ID
local squaresThreshold = 1 -- Amount of tiles to shoot infront of player
singlehotkey(key, "Mwall target", 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)
local holdMwallHotkey = '2' -- Klawisz, którym będziesz rzucał MWall
-- Funkcja, która rzuca MWall tam, gdzie znajduje się kursor
singlehotkey(holdMwallHotkey, "Throw MWall", function()
local tile = getTileUnderCursor() -- Uzyskujemy tile pod kursorem
if tile then
-- Używamy 'mwall' na odpowiednim obiekcie w miejscu kursora
useWith(mwallId, tile:getTopUseThing())
end
end)
Editor is loading...
Leave a Comment