Witam w tym wątku podam wam pare przydatnych skryptów do OTC Client
Aby aktytowac skrypty wchodzimy w zakladke tools w bocie i klikamy ingame script editor i tam wklejamy kody
Skrypt na e ringa (aby skrypt działał prawidłowo trzeba miec otwarte BP z ringami)
local ringID = 3051
local item
macro(10, "Equip Ring", function()
if hppercent() <= 60 and not getFinger() then
item = findItem(ringID)
g_game.move(item, {x=65535, y=SlotFinger, z=0}, 1)
elseif hppercent() >= 90 and getFinger() then
item = getFinger()
for _,container in pairs(getContainers()) do
g_game.move(item, container:getSlotPosition(), 1)
return
end
end
end)
Skrypt na ue przy mobku
local singleTargetSpell = 'exori frigo'
local multiTargetSpell = 'frozen wave'
local distance = 3
local amountOfMonsters = 4
macro(250, "multi target spell", function()
local specAmount = 0
if not g_game.isAttacking() then
return
end
for i,mob in ipairs(getSpectators()) do
if (getDistanceBetween(player:getPosition(), mob:getPosition()) <= distance and mob:isMonster()) then
specAmount = specAmount + 1
end
end
if (specAmount >= amountOfMonsters) then
say(multiTargetSpell)
else
say(singleTargetSpell)
end
end)
Cave stop jak malo many
local manaToggle = macro(100, "Toggle Mana", function()
if manapercent() < 96 and CaveBot.isOn() then
CaveBot.setOff()
elseif manapercent() > 96 and CaveBot.isOff() then
CaveBot.setOn()
end
end)
Skrypt na Utamo Vita
local utamoDurationSeconds = 180
local renewEarlySeconds = 20
local nextUtamo = 0
addIcon("renewUtamo", {item={id=3548, count=1}, text="Utamo"}, macro(200, function(m)
if not hasManaShield() or now > nextUtamo then
say("utamo vita")
nextUtamo = (utamoDurationSeconds - renewEarlySeconds) * 1000 + now
end
end))
Skrypt na Utani Mega Hur
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 mega hur", function(widget, text)
storage.autoHasteText = text
end)
Skrypt na Exeta Res
macro(500, "Auto RES", function()
say(storage.ExetaText)
end)
addTextEdit("ExetaText", storage.ExetaText or "Exeta res", function(widget, text)
storage.ExetaText = text
end)
Anty Paral Skrypt
macro(100, "Anti Paralyze", nil, function()
if isParalyzed() and storage.autoAntiParalyzeText:len() > 0 then
saySpell(storage.autoAntiParalyzeText)
end
end)
addTextEdit("autoAntiParalyzeText", storage.autoAntiParalyzeText or "utani hur", function(widget, text)
storage.autoAntiParalyzeText = text
end)
Skrypt na anty push
local dropItems = { 3031, 3035 }
local maxStackedItems = 10
local dropDelay = 600
gpAntiPushDrop = macro(dropDelay , "Anti-Push", function ()
antiPush()
end)
onPlayerPositionChange(function()
antiPush()
end)
Skrypt na Vise kema/vida/tavo wystarczy zmienic nazwe spella
macro(500, "Auto Buff", nil, function()
if not hasPartyBuff() and storage.autoBuffText:len() > 0 then
say(storage.autoBuffText)
delay(30000)
end
end)
addTextEdit("autoBuffText", storage.autoBuffText or "vise vida", function(widget, text)
storage.autoBuffText = text
end)
Skrpyt na exive ostatniego szukanego
local panelName = "tcLastExiva"
local tcLastExiva = setupUI([[
ExivaLabel < Label
height: 12
background-color: #00000055
opacity: 0.89
anchors.horizontalCenter: parent.horizontalCenter
text-auto-resize: true
font: verdana-11px-rounded
Panel
id: msgPanel
height: 26
width: 100
anchors.bottom: parent.bottom
anchors.horizontalCenter: parent.horizontalCenter
margin-bottom: 20
ExivaLabel
id: lblMessage
color: green
anchors.bottom: parent.bottom
!text: 'None.'
ExivaLabel
id: lblExiva
color: orange
anchors.bottom: prev.top
!text: 'Last Exiva: None'
]], modules.game_interface.getMapPanel())
local tclastExivaUI = setupUI([[
Panel
margin: 3
height: 66
layout:
type: verticalBox
HorizontalSeparator
id: separator
Label
id: title
text: Last Exiva
margin-top: 1
text-align: center
font: verdana-11px-rounded
Panel
id: time
height: 22
Label
!text: 'Time in seconds:'
anchors.left: parent.left
anchors.verticalCenter: parent.verticalCenter
anchors.right: next.left
text-align: center
height: 15
margin-right: 6
font: verdana-11px-rounded
BotTextEdit
id: text
text: 5
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
margin-left: 5
height: 17
width: 55
font: verdana-11px-rounded
]], parent)
if not storage[panelName] then
storage[panelName] = {
name = '',
timer = 5,
}
end
tclastExivaUI.time.text:setText(storage[panelName].timer)
tclastExivaUI.time.text.onTextChange = function(widget, text)
storage[panelName].timer = tonumber(text)
end
local lastExiva = ''
lastExiva = storage[panelName].name
tcLastExiva.lblExiva:setText('Last Exiva: ' .. lastExiva)
onTalk(function(name, level, mode, text, channelId, pos)
if name ~= player:getName() then return end
text = text:lower()
-- uncomment the warn below to find the channel mode if this doesn't work
-- cast exiva and you should see NUMBER : exiva "name"
-- warn(mode.. ':'..text)
if (mode == 34 or mode == 44) and text:find('exiva ') then
lastExiva = string.match(text, [[exiva "([^"]+)]])
if lastExiva then
storage[panelName].name = lastExiva
tcLastExiva.lblExiva:setText('Last Exiva: ' .. lastExiva)
end
end
end)
onTextMessage(function(mode, text)
if mode ~= 20 then return end
local regex = "([a-z A-Z]*) is ([a-z -A-Z]*)(?:to the|standing|below|above) ([a-z -A-Z]*)."
local data = regexMatch(text, regex)[1]
if data and data[2] and data[3] then
schedule(10, function()
tcLastExiva.lblMessage:setText(text)
end)
end
end)
tclastExivaMacro = macro(100, "Enable", "F1", function()
if lastExiva:len() > 0 then
say('exiva "' .. lastExiva)
end
delay(tonumber(storage[panelName].timer) * 1000)
end, tclastExivaUI)
UI.Separator(tclastExivaUI)
SKRYPT NA UH (3162 S UH/ 3160 UH)
local hpId = 3162
local hpPercent = 70
macro(200, "UH", function()
if (hppercent() <= hpPercent) then
usewith(hpId, player)
end
end)
SKRYPT na autofollow
followName = "autofollow"
if not storage[followName] then storage[followName] = { player = 'name'} end
local toFollowPos = {}
UI.Separator()
UI.Label("Auto Follow")
followTE = UI.TextEdit(storage[followName].player or "name", function(widget, newText)
storage[followName].player = newText
end)
local followChange = macro(200, "Follow Change", function() end)
local followMacro = macro(20, "Follow", function()
local target = getCreatureByName(storage[followName].player)
if target then
local tpos = target:getPosition()
toFollowPos[tpos.z] = tpos
end
if player:isWalking() then
return
end
local p = toFollowPos[posz()]
if not p then
return
end
if autoWalk(p, 20, { ignoreNonPathable = true, precision = 1 }) then
delay(100)
end
end)
UI.Separator()
onPlayerPositionChange(function(newPos, oldPos)
if followChange:isOff() then return end
if (g_game.isFollowing()) then
tfollow = g_game.getFollowingCreature()
if tfollow then
if tfollow:getName() ~= storage[followName].player then
followTE:setText(tfollow:getName())
storage[followName].player = tfollow:getName()
end
end
end
end)
onCreaturePositionChange(function(creature, newPos, oldPos)
if creature:getName() == storage[followName].player and newPos then
toFollowPos[newPos.z] = newPos
end
end)
SKRYPT na przycisk ktory wylacza cave i target bota jednoczesnie
singlehotkey("Escape", "Toggle", function()
CaveBot.setOn(not CaveBot.isOn())
TargetBot.setOn(not TargetBot.isOn())
warn("CaveBot " .. (CaveBot.isOn() and 'On' or 'Off'))
warn("TargetBot " .. (TargetBot.isOn() and 'On' or 'Off'))
end)
SKRYPT NA DEBUG POSTACI
local NEXT_MOVE_DELAY = 10000
local moveToggle = false
macro(NEXT_MOVE_DELAY, "Move Up/Down", function()
if moveToggle then
g_game.walk(0)
else
g_game.walk(2)
end
moveToggle = not moveToggle
end)
SKRYPT na zakup AOL
local aolId = 3057
local aolCommand = "!aol"
macro(100, "BUY AOL", function()
if not getNeck() or (aolId and getNeck():getId() ~= aolId) then
say(aolCommand)
end
end))
Wraz z rozwojem serva pozniej zaczne dodawac WAR skrypty