1
Poradniki / Odp: [OtClient v8] Całe Info z całego forum w jednym miejscu.
« dnia: 27 Październik 2022, 21:44:36 »SKRYPTY OTC
Więc najpierw jak dodajemy skrypty?
Odpalamy klienta, logujemy się na postać wybieramy wersję którą lubimy/przyzwyczailiśmy się użytkować (Cavebot_1.3/vBot_3.01/Vithrax_1.3)
w każdej wersji przechodzimy do zakładki Tools, następnie wybieramy:
Cavebot_1.3 - Ingame macro editor
vBot_3.01 - Ingame script editor
Vithrax_1.3 - Ingame hotkey editor
W to okienko wrzucamy skrypty. Jeżeli macie tam już jakiś swój skrypt, proponuje by nowe wrzucać przed niego ponieważ często gęsto zdarza się że skrypty z nieznanych źródeł nie są dobrze napisane bądź tylko brakuje im zakończenia w postaci end end). Co spowoduje wyskakiwanie okienka error, bądź nowy skrypt się nie pokaże.
Odpalamy klienta, logujemy się na postać wybieramy wersję którą lubimy/przyzwyczailiśmy się użytkować (Cavebot_1.3/vBot_3.01/Vithrax_1.3)
w każdej wersji przechodzimy do zakładki Tools, następnie wybieramy:
Cavebot_1.3 - Ingame macro editor
vBot_3.01 - Ingame script editor
Vithrax_1.3 - Ingame hotkey editor
W to okienko wrzucamy skrypty. Jeżeli macie tam już jakiś swój skrypt, proponuje by nowe wrzucać przed niego ponieważ często gęsto zdarza się że skrypty z nieznanych źródeł nie są dobrze napisane bądź tylko brakuje im zakończenia w postaci end end). Co spowoduje wyskakiwanie okienka error, bądź nowy skrypt się nie pokaże.
Hold Target:
Kod: [Zaznacz]
local oldTarget
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)
Dużo lepsze i szybsze leczenie:
Kod: [Zaznacz]
local hpPercent = 99
macro(50, "faster healing", function()
if (hppercent() <= hpPercent) then
say(storage.HealText)
end
end)
addTextEdit("HealText", storage.HealText or "NAZWASPELLA", function(widget, text)
storage.HealText = text
end)
Manasowanie:
Kod: [Zaznacz]
local manaId = 3184
local manaPercent = 80
macro(200, "faster mana potting", function()
if (manapercent() <= manaPercent) then
usewith(manaId, player)
end
end)
Odnowa FWB (UWAGA KOSZTUJE 5DC)
Kod: [Zaznacz]
macro(10000, "FWB", function() say("!fwb") end)
Autofollow (dziury/tpki/drzwi/itd)
Kod: [Zaznacz]
--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 "Heeey", 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)
Skrypt na wędki (można również zrobić samemu poprzez autorecording w cavebocie)
https://mrozuots.pl/index.php?topic=2509.0[/center]
Zamiana cc na gn/ gn na dc:
Wchodzimy jak przy kasynie w edit/click here to open directory. Teraz w zależności z czego korzystamyCavebot: Wchodzimy w folder cavebot_1.3 i otwieramy plik tools.lua
Vithrax: Wchodzimy w folder vithrax_1.3 i otwieramy plik tools.lua
Vbot: Wchodzimy w folder vBot_3.01 , wchodzimy jeszcze raz w folder Vbot, i otwieramy plik tools.lua
W pliku szukamy linijki z local moneyIds = {3031, 3035} i dopisujemy tutaj 3043 i 3040 ma to wyglądać tak local moneyIds = {3031, 3035, 3043, 3040}
Cavebot: linijka 38
Vitrax: linijka 27
Vbot: linijka 4
Skrypt na Hold Mwall
Kod: [Zaznacz]
local holdMwallHotkey = 'PageUp'
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)
Mwall infron of player SHIFT+F10
Cytuj
local key = "shift+f10" -- Hotkey to shoot mwall
local mwallId = 3180 -- Mwall ID
local squaresThreshold = 2 -- 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)
Wygodne i łatwe do ogarnięcia Sio friend
Kod: [Zaznacz]
macro(100, "Sio Friend", function()
local friend = getPlayerByName(storage.healFriend)
if friend and friend:getHealthPercent() < tonumber(storage.healFriendPercent) then
say("Exura heal \"" .. storage.healFriend)
delay(1000)
end
end)
addLabel("sioname", "Player name:")
addTextEdit("healfriend", storage.healFriend or "", function(widget, text)
storage.healFriend = text
end)
addLabel("siopercent", "Heal Below %:")
addTextEdit("healfriendpercent", storage.healFriendPercent or "", function(widget, text)
storage.healFriendPercent = text
end)
Skrypt na mining:
https://mrozuots.pl/index.php?topic=4033.0
Skrypt na uhanie (Do wbijania achi polecam ustawić 101% wtedy cały czas używa)
Kod: [Zaznacz]
macro(100, "Enable UH friend", nil, function()
local healFriend = getCreatureByName(storage.uhFriend)
if healFriend then
local heal_player = healFriend:getName();
if (heal_player == storage.uhFriend) then
if (healFriend:getHealthPercent() < tonumber(storage.uhFriendPercent)) then
useWith(3181, healFriend);
end
end
end
end)
addLabel("uhname", "Player name:", warTab)
addTextEdit("uhfriend", storage.uhFriend or "", function(widget, text)
storage.uhFriend = text
end)
addLabel("uhpercent", "Heal Below %:", warTab)
addTextEdit("uhfriendpercent", storage.uhFriendPercent or "", function(widget, text)
storage.uhFriendPercent = text
end)
Skrypt na zbieranie z ziemi wykopanych scarab coinów by Mikelondiony
Kod: [Zaznacz]
macro(100, "Search for Item", function()
local z = posz()
for _, tile in ipairs(g_map.getTiles(z)) do
if z ~= posz() then return end
if getDistanceBetween(pos(), tile:getPosition()) <= 7 then
if tile:getTopLookThing():getId() == 3042 then
g_game.move(tile:getTopLookThing(), {x = 65535, y=SlotBack, z=0}, tile:getTopLookThing():getCount())
end
end
end
end)
Skrypt Alarm gdy pojawi się gracz na ekranie
Kod: [Zaznacz]
macro(1000, "PlayeronScreen", function()
for _, creature in ipairs(getSpectators()) do
if creature:isPlayer() and not creature:isLocalPlayer() then
isSafe = false;
end
if creature:isPlayer() and creature:isLocalPlayer() then
isSafe = true;
end
if isSafe==false then
playAlarm()
delay(10000)
end
end
end)
Skrypt na wyswietlanie prywatnych wiadomosci
Kod: [Zaznacz]
[code]local height = 50
local widget = setupUI([[
Panel
id: msgPanel
height: 400
width: 200
]], g_ui.getRootWidget())
onTalk(function(name, level, mode, text, channelId, pos)
if (mode ~= 4) then return end
local msgLabel = g_ui.loadUIFromString([[
Label
color: #5ff7f7
background-color: black
opacity: 0.87
]], widget)
msgLabel:setText(name .." ["..level.. "]: " .. text)
msgLabel:setPosition({y = height, x = 10})
if height > 210 then
for msgIndex, message in ipairs(widget:getChildren()) do
message:setPosition({y = message:getPosition().y - 13, x = 10})
if (msgIndex == 1) then message:destroy() end
end
else
height = height + 13
end
end)
Skrypt na rzucanie runy w dany sqm przyciskiem PageUp.
Kod: [Zaznacz]
local holdMwallHotkey = 'PageUp'
local holdMwallText = 'Rzuc tu Ava'
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', 'Rzucanie Ava Pageup', 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() then
useWith(tonumber (storage.avaId), holdMwallTile:getTopUseThing())
return
end
end
end
end)
addTextEdit("IdRunki", storage.avaId or "3161", function(widget, text)
storage.avaId = text
end)
Skrypt na zamiane elite amulet + lost amulet od danego %hp
Kod: [Zaznacz]
local eq_manager = {
{
hppcToEquip = 100, -- HP <= 100% (Default)
eqToEquip = {
{itemID = 9803, slot = SlotNeck}
}
},
{
hppcToEquip = tonumber (storage.hppercent), -- HP <= 75%
eqToEquip = {
{itemID = 10198, slot = SlotNeck}
}
}
}
UI.Label("HP procenty")
addTextEdit("HP%", storage.hppercent or "75", function(widget, text)
storage.hppercent = text
end )
table.sort(eq_manager, function(a,b) return b.hppcToEquip > a.hppcToEquip end)
macro(500, "Zmiana amuletu", function()
for k,v in pairs(eq_manager) do
if hppercent() <= v.hppcToEquip then
for i = 1, #v.eqToEquip do
moveToSlot(v.eqToEquip[i].itemID, v.eqToEquip[i].slot)
end
break
end
end
end)
Skrypt na zamiane SHS/SMS od danego % many
Kod: [Zaznacz]
local eq_manager = {
{
mppcToEquip = 100, -- MP <= 100% (Default)
eqToEquip = {
{itemID = 3427, slot = SlotRight}
}
},
{
mppcToEquip = tonumber (storage.mppercent), -- MP <= 75%
eqToEquip = {
{itemID = 3435, slot = SlotRight}
}
}
}
UI.Label("MP procenty")
addTextEdit("Mp%", storage.mppercent or "75", function(widget, text)
storage.mppercent = text
end )
table.sort(eq_manager, function(a,b) return b.mppcToEquip > a.mppcToEquip end)
macro(500, "Zmiana tarczy", function()
for k,v in pairs(eq_manager) do
if manapercent() <= v.mppcToEquip then
for i = 1, #v.eqToEquip do
moveToSlot(v.eqToEquip[i].itemID, v.eqToEquip[i].slot)
end
break
end
end
end)
Skrypt na wyłączenie target i cavebota, gdy mana spadnie poniżej x.
Kod: [Zaznacz]
macro(100, "Toggle Cave when xmana", function()
if (manapercent() <= tonumber(storage.manaPercent)) then
CaveBot.setOff()
TargetBot.setOff()
else
if (manapercent() >= tonumber(storage.manaPercent)) then
CaveBot.setOn()
TargetBot.setOn()
end
end
end)
UI.Label("Mana percent")
addTextEdit("manapercent", storage.manaPercent or "50", function (widget, text)
storage.manaPercent = text
end)
Skrypt na pokazywanie %HP mobków/innych graczy
Kod: [Zaznacz]
local showhp = macro(20000, "Monster HP %", function() end)
onCreatureHealthPercentChange(function(creature, healthPercent)
if showhp:isOff() then return end
if creature:isMonster() or creature:isPlayer() and creature:getPosition() and pos() then
if getDistanceBetween(pos(), creature:getPosition()) <= 5 then
creature:setText(healthPercent .. "%")
else
creature:clearText()
end
end
end)
Skrypt na otwieranie wszystkich bp
Kod: [Zaznacz]
openBackpacks = function()
for _, container in pairs(g_game.getContainers()) do
g_game.close(container)
end
schedule(1000, function()
bpItem = getBack()
if bpItem ~= nil then g_game.open(bpItem) end
end)
schedule(2000, function()
local nextContainers = {}
containers = getContainers()
for i, container in pairs(g_game.getContainers()) do
for i, item in ipairs(container:getItems()) do
if item:isContainer() then
table.insert(nextContainers, item)
end
end
if #nextContainers == 0 then return end
local delay = 1
for i = 1, #nextContainers do
schedule(delay, function()
g_game.open(nextContainers[i], nil)
end)
delay = delay + 250
end
end
end)
end
-- this loads the function straighta way when reloading config
openBackpacks()
-- this adds a button to your bot, so you can press it
UI.Button("Backpack Open", function()
openBackpacks()
end)
Skrypt na używanie staminera/mediumki gdy stamina bedzie wynosic 14:01
Kod: [Zaznacz]
macro(500, function()
if stamina() < 842 then
use(tonumber (storage.idstam))
end
end))
UI.Label("Id staminera/mediumki")
addTextEdit("id staminera", storage.idstam or "id", function(widget, text)
storage.idstam = text
end)
Skrypt na spam UE/SPELLA, lub wiadomości na default (zmieniając liczbę, zwikszamy odstęp czasu od kolejnej wiadomości
Kod: [Zaznacz]
macro(1000, "Spam UE", function() say(storage.spamue) end) addTextEdit("Spam Ue", storage.spamue or "Nazwa spella", function (widget, text) storage.spamue = text end)
Skrypt na sprawdzenie ilu jest graczy na ekranie (Łapie kratke wyżej
Kod: [Zaznacz]
function countPlayers()
local playerCount = 0
for _, creature in ipairs(getSpectators(pos(), false)) do
if creature:isPlayer() and not creature:isLocalPlayer() then
playerCount = playerCount +1
end
end
return playerCount
end
macro(2000, "Graczy na ekranie", function()
say("graczy na ekranie:"..countPlayers())
end)
Skrypt na Sd target
Kod: [Zaznacz]
macro(200, "SD Target", function()
if g_game.isAttacking() then
usewith(3155, g_game.getAttackingCreature())
delay(500)
end
end)
tam gdzie 3155 wpisujemy ID target runki.
Skrypt na Hold Krzaka
Kod: [Zaznacz]
local holdMwallHotkey = 'PageUp'
local holdMwallText = 'TUTAJ'
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', 'Shoot Rune [PageUp]', 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() ~= 2130 then
useWith(tonumber (storage.avaId), holdMwallTile:getTopUseThing())
return
end
end
end
end)
addLabel("idava", "Id runki", warTab)
addTextEdit("IdRunki", storage.avaId or "3156", function(widget, text)
storage.avaId = text
end)
Skrypt na HoldMwall
Kod: [Zaznacz]
local holdMwallHotkey = 'PageUp'
local holdMwallText = 'TUTAJ'
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', 'Shoot Rune [PageUp]', 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(tonumber (storage.avaId), holdMwallTile:getTopUseThing())
return
end
end
end
end)
addLabel("idava", "Id runki", warTab)
addTextEdit("IdRunki", storage.avaId or "3180", function(widget, text)
storage.avaId = text
end)
Osoby które lubią ten post: Alkoholik