local manaPercent = 100 macro(7000, "utama", function() if (manapercent() <= manaPercent) then say 'utamo vita' end end) local healingSpell = '!mr' local manaPercent = 100 macro(100, "!mr", function() if (manapercent() <= manaPercent) then say(healingSpell) end end) --Description: A macro to follow players through stairs, doors, ladders, sewer gates and some other things. --A message error appears on the log, but other than that everything seems to run well... save for the eventual hiccups. --ATTENTION: It might not work if multiple "use objects" that lead to different paths are near eachother. Follow = macro(1000,"Follow",function() nome = storage.followLeader end) UI.Label("Follow Player:") addTextEdit("playerToFollow", storage.followLeader or "Drozdo", function(widget, text) storage.followLeader = text target = tostring(text) end) nome = storage.followLeader pos_p = player:getPosition() p = getCreatureByName(nome) onCreaturePositionChange(function(creature, newPos, oldPos) if Follow.isOn() then if creature:getName()==player:getName() and getCreatureByName(nome) == nil and newPos.z>oldPos.z then say('exani tera') for i = -1,1 do for j = -1,1 do local useTile = g_map.getTile({x=posx()+i,y=posy()+j,z=posz()}) g_game.use(useTile:getTopUseThing()) end end end if creature:getName()==nome then if newPos==nil then lastPos = oldPos schedule(200,function() autoWalk(oldPos) end) schedule(1000,function() for i = -1,1 do for j = -1,1 do local useTile = g_map.getTile({x=posx()+i,y=posy()+j,z=posz()}) g_game.use(useTile:getTopUseThing()) end end end) end if oldPos.z == newPos.z then schedule(300,function() local useTile = g_map.getTile({x=oldPos.x,y=oldPos.y,z=oldPos.z}) topThing = useTile:getTopThing() if not useTile:isWalkable() then use(topThing) end end) autoWalk({x=oldPos.x,y=oldPos.y,z=oldPos.z}) else lastPos = oldPos autoWalk(oldPos) for i = 1,6 do schedule(i*200,function() autoWalk(oldPos) if getDistanceBetween(pos(), oldPos) == 0 and (posz()>newPos.z and getCreatureByName(nome) == nil) then say('exani tera') end end) end local useTile = g_map.getTile({x=newPos.x,y=newPos.y-1,z=oldPos.z}) g_game.use(useTile:getTopUseThing()) end end end end) local hpPercent = 99 macro(50, "faster healing", function() if (hppercent() <= hpPercent) then say(storage.HealText) end end) addTextEdit("HealText", storage.HealText or "!uh", function(widget, text) storage.HealText = text end)local attacker local targetTime local attackPK = macro(100, "Attack PK", nil, function() if attacker then if attacker:getPosition() and attacker:getPosition().z == posz() then if g_game.isAttacking() then if g_game.getAttackingCreature():getName() ~= attacker:getName() then g_game.attack(attacker) end else g_game.attack(attacker) end end else if not g_game.isAttacking() then TargetBot.setOn() CaveBot.setOn() end end if targetTime then if now - targetTime > 2500 then attacker = nil end end end) onMissle(function(missle) if attackPK.isOn() then local src = missle:getSource() if src.z ~= posz() then return end local shooterTile = g_map.getTile(src) if shooterTile then local creatures = shooterTile:getCreatures() if creatures[1] then if creatures[1]:isPlayer() then local destination = missle:getDestination() if posx() == destination.x and posy() == destination.y then if player:getName() ~= creatures[1]:getName() then if creatures[1]:getSkull() ~= 0 and attacker ~= creatures[1] then attacker = creatures[1] targetTime = now TargetBot.setOff() CaveBot.setOff() end end end end end end end end) local percent = 10 local idRing = 3007 local m = macro(1, "Auto Ring", function() end) onCreatureHealthPercentChange(function(creature, healthPercent) if m:isOff() then return end if healthPercent > percent and getFinger() then g_game.move(getFinger(), {x = 65535,y = SlotBack, z = 0}); elseif healthPercent < percent then g_game.move(findItem(idRing), {x = 65535,y = SlotFinger,z = 0}); end end)