<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[OTBots Forums - LUA Scripts]]></title>
		<link>https://forums.otbots.com/</link>
		<description><![CDATA[OTBots Forums - https://forums.otbots.com]]></description>
		<pubDate>Tue, 21 Jul 2026 06:12:01 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[Sell Items Via NPC Trade]]></title>
			<link>https://forums.otbots.com/Thread-Sell-Items-Via-NPC-Trade--3157</link>
			<pubDate>Fri, 30 May 2025 05:18:38 -0500</pubDate>
			<dc:creator><![CDATA[<a href="https://forums.otbots.com/member.php?action=profile&uid=3442">Breeze1</a>]]></dc:creator>
			<guid isPermaLink="false">https://forums.otbots.com/Thread-Sell-Items-Via-NPC-Trade--3157</guid>
			<description><![CDATA[Hi,<br />
<br />
Just wondering how I use the sell items through "Hi" &gt; "Trade" function as you cant sell the items via text to the NPC and it can Sell All<br />
<br />
Thanks.]]></description>
			<content:encoded><![CDATA[Hi,<br />
<br />
Just wondering how I use the sell items through "Hi" &gt; "Trade" function as you cant sell the items via text to the NPC and it can Sell All<br />
<br />
Thanks.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Souls of Elysium]]></title>
			<link>https://forums.otbots.com/Thread-Souls-of-Elysium--3145</link>
			<pubDate>Thu, 08 May 2025 16:07:54 -0500</pubDate>
			<dc:creator><![CDATA[<a href="https://forums.otbots.com/member.php?action=profile&uid=18464">Cantcatchmebjorn</a>]]></dc:creator>
			<guid isPermaLink="false">https://forums.otbots.com/Thread-Souls-of-Elysium--3145</guid>
			<description><![CDATA[Hey was wondering after you've done the mining quest you can access the kazoordoon mines and constantly mine for an hour, is there any script to keep auto right clicking the rock ? please and thannks if u could make it]]></description>
			<content:encoded><![CDATA[Hey was wondering after you've done the mining quest you can access the kazoordoon mines and constantly mine for an hour, is there any script to keep auto right clicking the rock ? please and thannks if u could make it]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Does anyone have an exeta res script?]]></title>
			<link>https://forums.otbots.com/Thread-Does-anyone-have-an-exeta-res-script--3119</link>
			<pubDate>Fri, 28 Mar 2025 17:24:18 -0500</pubDate>
			<dc:creator><![CDATA[<a href="https://forums.otbots.com/member.php?action=profile&uid=18477">birizinhu</a>]]></dc:creator>
			<guid isPermaLink="false">https://forums.otbots.com/Thread-Does-anyone-have-an-exeta-res-script--3119</guid>
			<description><![CDATA[Does anyone have an exeta res script?]]></description>
			<content:encoded><![CDATA[Does anyone have an exeta res script?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Fishing with custom fishing rod]]></title>
			<link>https://forums.otbots.com/Thread-FREE-Fishing-with-custom-fishing-rod--2870</link>
			<pubDate>Sun, 24 Mar 2024 10:13:23 -0500</pubDate>
			<dc:creator><![CDATA[<a href="https://forums.otbots.com/member.php?action=profile&uid=1">Arkilys</a>]]></dc:creator>
			<guid isPermaLink="false">https://forums.otbots.com/Thread-FREE-Fishing-with-custom-fishing-rod--2870</guid>
			<description><![CDATA[Hello.<br />
<br />
This script will fish on specific water ids using a custom fishing rod until reaches a specific capacity.<br />
You can also setup to pick random places, max attempts per script run.<br />
<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local FISHING_ROD_ID = 5331 -- Fishing rod id.<br />
local PLAYER_CAP = 50 -- Only starts fishing if capacity is higher than this.<br />
local SUFFLE_PLACES = true -- Pick a random place to fish?<br />
local DELAY_BETWEEN_FISHING = { Min = 1000, Max = 2000 }<br />
local FISH_ATTEMPTS_EACH_RUN = 10 -- How many attempts to fish every time script run? 0 to unlimited! 10 to try to fish on 10 different places.<br />
local WATER_IDS = { 618, 619, 620, 622, 623, 624, 625, 626, 627, 628, 629, 4597, 4598, 4599, 4600, 4601, 4602, 4608, 4609, 4610, 4611, 4612, 4613, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4653, 4654, 4655 } -- Water ids which script should try to fish.<br />
<br />
if connected() and cap() &gt; PLAYER_CAP then<br />
&nbsp;&nbsp;&nbsp;&nbsp;local player_x = posx()<br />
&nbsp;&nbsp;&nbsp;&nbsp;local player_y = posy()<br />
&nbsp;&nbsp;&nbsp;&nbsp;local player_z = posz()<br />
&nbsp;&nbsp;&nbsp;&nbsp;local tiles = gettiles()<br />
&nbsp;&nbsp;&nbsp;&nbsp;local places = { }<br />
&nbsp;&nbsp;&nbsp;&nbsp;for _, tile in ipairs(tiles) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if math.abs(tile.posx - player_x) &lt;= 7 and math.abs(tile.posy - player_y) &lt;= 5 and tile.posz == player_z then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for __, item in ipairs(tile.items) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if table.find(WATER_IDS, item.id) ~= nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table.insert(places, { x = tile.posx, y = tile.posy })<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if SUFFLE_PLACES then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table.shuffle(places)<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;for _, place in ipairs(places) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;useitemon(FISHING_ROD_ID, place.x, place.y, player_z)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(DELAY_BETWEEN_FISHING.Min, DELAY_BETWEEN_FISHING.Max)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count = count + 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if count &gt;= FISH_ATTEMPTS_EACH_RUN or cap() &lt; PLAYER_CAP then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
end</code></div></div>]]></description>
			<content:encoded><![CDATA[Hello.<br />
<br />
This script will fish on specific water ids using a custom fishing rod until reaches a specific capacity.<br />
You can also setup to pick random places, max attempts per script run.<br />
<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local FISHING_ROD_ID = 5331 -- Fishing rod id.<br />
local PLAYER_CAP = 50 -- Only starts fishing if capacity is higher than this.<br />
local SUFFLE_PLACES = true -- Pick a random place to fish?<br />
local DELAY_BETWEEN_FISHING = { Min = 1000, Max = 2000 }<br />
local FISH_ATTEMPTS_EACH_RUN = 10 -- How many attempts to fish every time script run? 0 to unlimited! 10 to try to fish on 10 different places.<br />
local WATER_IDS = { 618, 619, 620, 622, 623, 624, 625, 626, 627, 628, 629, 4597, 4598, 4599, 4600, 4601, 4602, 4608, 4609, 4610, 4611, 4612, 4613, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4653, 4654, 4655 } -- Water ids which script should try to fish.<br />
<br />
if connected() and cap() &gt; PLAYER_CAP then<br />
&nbsp;&nbsp;&nbsp;&nbsp;local player_x = posx()<br />
&nbsp;&nbsp;&nbsp;&nbsp;local player_y = posy()<br />
&nbsp;&nbsp;&nbsp;&nbsp;local player_z = posz()<br />
&nbsp;&nbsp;&nbsp;&nbsp;local tiles = gettiles()<br />
&nbsp;&nbsp;&nbsp;&nbsp;local places = { }<br />
&nbsp;&nbsp;&nbsp;&nbsp;for _, tile in ipairs(tiles) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if math.abs(tile.posx - player_x) &lt;= 7 and math.abs(tile.posy - player_y) &lt;= 5 and tile.posz == player_z then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for __, item in ipairs(tile.items) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if table.find(WATER_IDS, item.id) ~= nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table.insert(places, { x = tile.posx, y = tile.posy })<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if SUFFLE_PLACES then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table.shuffle(places)<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;for _, place in ipairs(places) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;useitemon(FISHING_ROD_ID, place.x, place.y, player_z)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(DELAY_BETWEEN_FISHING.Min, DELAY_BETWEEN_FISHING.Max)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count = count + 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if count &gt;= FISH_ATTEMPTS_EACH_RUN or cap() &lt; PLAYER_CAP then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
end</code></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Pickup Spears]]></title>
			<link>https://forums.otbots.com/Thread-FREE-Pickup-Spears--2574</link>
			<pubDate>Wed, 15 Feb 2023 12:57:55 -0600</pubDate>
			<dc:creator><![CDATA[<a href="https://forums.otbots.com/member.php?action=profile&uid=1">Arkilys</a>]]></dc:creator>
			<guid isPermaLink="false">https://forums.otbots.com/Thread-FREE-Pickup-Spears--2574</guid>
			<description><![CDATA[Hello.<br />
<br />
This is a basic script to pickup spears/small stones to a BACKPACK, it's able to move dead bodies away and pickup.<br />
There are two scripts, both works pretty much same way except the way it stops walking for other tools like Targeting, Cavebot and Looter. The first script just uses an internal function pausewalking() to stop walking and the 2nd script actually disables cavebot, targeting and looter then enables again after picking up.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="color: #ff3333;" class="mycode_color">I will <span style="text-decoration: underline;" class="mycode_u">NOT</span> give any support on this script, not even to fix bugs.</span></span> So please, don't ask to because you will be ignored.<br />
<br />
<span style="font-size: xx-large;" class="mycode_size">1st script</span><br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local CONFIG =<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;MinCapacity = 80,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Minimal amount of cap to pickup spears.<br />
&nbsp;&nbsp;&nbsp;&nbsp;Hand = 'lhand',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- 'rhand' for RIGHT hand / 'lhand' for LEFT hand.<br />
&nbsp;&nbsp;&nbsp;&nbsp;MaxSpears = 22,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Max. amount<br />
&nbsp;&nbsp;&nbsp;&nbsp;MinSpears = 3,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Amount to ignore monsters and start to pickup.<br />
&nbsp;&nbsp;&nbsp;&nbsp;SpearsLocation = 'backpack',<br />
&nbsp;&nbsp;&nbsp;&nbsp;SearchRange = 3,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Distance range to search for spears.<br />
&nbsp;&nbsp;&nbsp;&nbsp;Untrash = true,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Move random stuff on floor that are over spears.<br />
&nbsp;&nbsp;&nbsp;&nbsp;UseWeaponWhenNoSpears = true,&nbsp;&nbsp;&nbsp;&nbsp;-- Use weapon when no spears?<br />
&nbsp;&nbsp;&nbsp;&nbsp;Weapon = 'spike sword',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Weapon name/id.<br />
&nbsp;&nbsp;&nbsp;&nbsp;WeaponLocation = 'backpack', -- Weapon location.<br />
&nbsp;&nbsp;&nbsp;&nbsp;SpearId = 3277,<br />
&nbsp;&nbsp;&nbsp;&nbsp;SpearWeigh = 20,<br />
}<br />
<br />
--[[ DON'T EDIT BELOW THIS LINE --]]<br />
--[[ DON'T EDIT BELOW THIS LINE --]]<br />
--[[ DON'T EDIT BELOW THIS LINE --]]<br />
<br />
if PICKUP_PAUSE == nil then<br />
&nbsp;&nbsp; PICKUP_PAUSE = false<br />
end<br />
<br />
if spearsCount == nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;function spearsCount()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local bpCount = itemcount(CONFIG.SpearId, CONFIG.SpearsLocation)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local hand = getequipment(CONFIG.Hand)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local handCount = 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if hand.id == CONFIG.SpearId then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;handCount = hand.count<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return { total = bpCount + handCount, hand = handCount, bp = bpCount }<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
end<br />
<br />
if grabSpears == nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;function grabSpears(x, y)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local flag = false<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pausewalking(99999)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if iswalking() then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pressesc()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(300)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local player_z = posz()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if reachlocation(x, y, player_z) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local item = topitem(x, y, player_z)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while item.id ~= CONFIG.SpearId do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local dir = wheretomoveitem(x,y,player_z, true, 1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;moveitems(item.id, ground(dir.posx, dir.posy, player_z), ground(x, y, player_z), 100)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 700)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item = topitem(x, y, player_z)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local spearLocation = CONFIG.SpearsLocation<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local hand = getequipment(CONFIG.Hand)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if hand.id == CONFIG.SpearId or hand.id == 0 then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;spearLocation = CONFIG.Hand<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if moveitems(CONFIG.SpearId, spearLocation, ground(x, y, player_z), 100) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 700)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag = true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pausewalking(0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return flag<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
end<br />
<br />
if findSpears == nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;function findSpears(rangeX, rangeY, topOnly)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local closesTile = {x = -1, y = -1, dist = -1, count = -1, top = false }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local tiles = gettiles()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local player_x = posx()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local player_y = posy()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local player_z = posz()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for _, tile in ipairs(tiles) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if math.abs(tile.posx - player_x) &lt;= rangeX and math.abs(tile.posy - player_y) &lt;= rangeY and tile.posz == player_z then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local foundSpearsCount = 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if topOnly and tile.topitem.id == CONFIG.SpearId then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foundSpearsCount = tile.topitem.count<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for __, item in ipairs(tile.items) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if item.id == CONFIG.SpearId then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foundSpearsCount = foundSpearsCount + item.count<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if foundSpearsCount &gt; 0 then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local dist = proximity(player_x, player_y, tile.posx, tile.posy)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if closesTile.dist == -1 or dist &lt; closesTile.dist or (dist == closesTile.dist and foundSpearsCount &gt; closesTile.count) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;closesTile = { x = tile.posx, y = tile.posy, dist = dist, count = foundSpearsCount, top = tile.topitem.id == CONFIG.SpearId }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return closesTile<br />
&nbsp;&nbsp; end<br />
end<br />
<br />
if connected() then<br />
&nbsp;&nbsp;&nbsp;&nbsp;local count = spearsCount()<br />
&nbsp;&nbsp;&nbsp;&nbsp;if cap() &gt;= CONFIG.MinCapacity and islooting() == false and ((attacked().id == 0 and count.total &lt; CONFIG.MaxSpears) or count.total &lt; CONFIG.MinSpears) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local spear = findSpears(CONFIG.SearchRange, CONFIG.SearchRange, CONFIG.Untrash)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if spear.x ~= -1 and grabSpears(spear.x, spear.y) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count = spearsCount()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if count.bp &gt; 0 then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local WEAPON_ID = itemid(CONFIG.Weapon)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local hand = getequipment(CONFIG.Hand)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if hand.id == WEAPON_ID then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if moveitems(WEAPON_ID, CONFIG.WeaponLocation, CONFIG.Hand) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 700)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hand = getequipment(CONFIG.Hand)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if hand.id == 0 or hand.id == CONFIG.SpearId then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if moveitems(CONFIG.SpearId, CONFIG.Hand, CONFIG.SpearsLocation) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 700)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;elseif count.total == 0 and CONFIG.UseWeaponWhenNoSpears then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local WEAPON_ID = itemid(CONFIG.Weapon)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local hand = getequipment(CONFIG.Hand)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if hand.id &gt; 0 and hand.id ~= WEAPON_ID and hand.id ~= CONFIG.SpearId then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if moveitems(hand.id, 'ground', CONFIG.Hand) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 700)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if moveitems(WEAPON_ID, CONFIG.Hand, CONFIG.WeaponLocation) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 700)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
end</code></div></div><br />
<span style="font-size: xx-large;" class="mycode_size">2nd script</span><br />
This is an alternative that checks of it's possible to reach and disable Cavebot, Targeting and Looter to pickup.<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local CONFIG =<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;MinCapacity = 80,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Minimal amount of cap to pickup spears.<br />
&nbsp;&nbsp;&nbsp;&nbsp;Hand = 'lhand',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- 'rhand' for RIGHT hand / 'lhand' for LEFT hand.<br />
&nbsp;&nbsp;&nbsp;&nbsp;MaxSpears = 22,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Max. amount<br />
&nbsp;&nbsp;&nbsp;&nbsp;MinSpears = 3,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Amount to ignore monsters and start to pickup.<br />
&nbsp;&nbsp;&nbsp;&nbsp;SpearsLocation = 'backpack',<br />
&nbsp;&nbsp;&nbsp;&nbsp;SearchRange = 3,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Distance range to search for spears.<br />
&nbsp;&nbsp;&nbsp;&nbsp;Untrash = true,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Move random stuff on floor that are over spears.<br />
&nbsp;&nbsp;&nbsp;&nbsp;UseWeaponWhenNoSpears = true,&nbsp;&nbsp;&nbsp;&nbsp;-- Use weapon when no spears?<br />
&nbsp;&nbsp;&nbsp;&nbsp;Weapon = 'spike sword',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Weapon name/id.<br />
&nbsp;&nbsp;&nbsp;&nbsp;WeaponLocation = 'backpack', -- Weapon location.<br />
&nbsp;&nbsp;&nbsp;&nbsp;SpearId = 3277,<br />
&nbsp;&nbsp;&nbsp;&nbsp;SpearWeigh = 20,<br />
}<br />
<br />
--[[ DON'T EDIT BELOW THIS LINE --]]<br />
--[[ DON'T EDIT BELOW THIS LINE --]]<br />
--[[ DON'T EDIT BELOW THIS LINE --]]<br />
<br />
<br />
if PICKUP_PAUSE == nil then<br />
&nbsp;&nbsp; PICKUP_PAUSE = false<br />
end<br />
<br />
if spearsCount == nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;function spearsCount()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local bpCount = itemcount(CONFIG.SpearId, CONFIG.SpearsLocation)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local hand = getequipment(CONFIG.Hand)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local handCount = 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if hand.id == CONFIG.SpearId then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;handCount = hand.count<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return { total = bpCount + handCount, hand = handCount, bp = bpCount }<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
end<br />
<br />
if grabSpears == nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;function grabSpears(x, y)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local flag = false<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setsettings('Targeting/Settings/Enabled', false)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setsettings('Looter/Settings/Enabled', false)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setsettings('Cavebot/Settings/Enabled', false)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pausewalking(99999)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if iswalking() then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pressesc()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(300)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local player_z = posz()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if reachlocation(x, y, player_z) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local item = topitem(x, y, player_z)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while item.id ~= CONFIG.SpearId do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local dir = wheretomoveitem(x,y,player_z, true, 1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;moveitems(item.id, ground(dir.posx, dir.posy, player_z), ground(x, y, player_z), 100)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 700)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item = topitem(x, y, player_z)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local spearLocation = CONFIG.SpearsLocation<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local hand = getequipment(CONFIG.Hand)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if hand.id == CONFIG.SpearId or hand.id == 0 then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;spearLocation = CONFIG.Hand<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if moveitems(CONFIG.SpearId, spearLocation, ground(x, y, player_z), 100) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 700)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag = true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pausewalking(0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setsettings('Targeting/Settings/Enabled', true)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setsettings('Looter/Settings/Enabled', true)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setsettings('Cavebot/Settings/Enabled', true)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return flag<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
end<br />
<br />
if findSpears == nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;function findSpears(rangeX, rangeY, topOnly)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local closesTile = {x = -1, y = -1, dist = -1, count = -1, top = false }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local tiles = gettiles()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local player_x = posx()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local player_y = posy()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local player_z = posz()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for _, tile in ipairs(tiles) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if math.abs(tile.posx - player_x) &lt;= rangeX and math.abs(tile.posy - player_y) &lt;= rangeY and tile.posz == player_z then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local foundSpearsCount = 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if topOnly and tile.topitem.id == CONFIG.SpearId then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foundSpearsCount = tile.topitem.count<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for __, item in ipairs(tile.items) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if item.id == CONFIG.SpearId then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foundSpearsCount = foundSpearsCount + item.count<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if foundSpearsCount &gt; 0 then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local dist = proximity(player_x, player_y, tile.posx, tile.posy)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (closesTile.dist == -1 or dist &lt; closesTile.dist or (dist == closesTile.dist and foundSpearsCount &gt; closesTile.count)) and tilereachable(tile.posx, tile.posy, tile.posz) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;closesTile = { x = tile.posx, y = tile.posy, dist = dist, count = foundSpearsCount, top = tile.topitem.id == CONFIG.SpearId }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return closesTile<br />
&nbsp;&nbsp; end<br />
end<br />
<br />
if connected() then<br />
&nbsp;&nbsp;&nbsp;&nbsp;local count = spearsCount()<br />
&nbsp;&nbsp;&nbsp;&nbsp;if cap() &gt;= CONFIG.MinCapacity and islooting() == false and ((attacked().id == 0 and count.total &lt; CONFIG.MaxSpears) or count.total &lt; CONFIG.MinSpears) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local spear = findSpears(CONFIG.SearchRange, CONFIG.SearchRange, CONFIG.Untrash)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if spear.x ~= -1 and grabSpears(spear.x, spear.y) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count = spearsCount()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if count.bp &gt; 0 then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local WEAPON_ID = itemid(CONFIG.Weapon)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local hand = getequipment(CONFIG.Hand)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if hand.id == WEAPON_ID then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if moveitems(WEAPON_ID, CONFIG.WeaponLocation, CONFIG.Hand) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 700)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hand = getequipment(CONFIG.Hand)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if hand.id == 0 or hand.id == CONFIG.SpearId then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if moveitems(CONFIG.SpearId, CONFIG.Hand, CONFIG.SpearsLocation) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 700)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;elseif count.total == 0 and CONFIG.UseWeaponWhenNoSpears then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local WEAPON_ID = itemid(CONFIG.Weapon)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local hand = getequipment(CONFIG.Hand)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if hand.id &gt; 0 and hand.id ~= WEAPON_ID and hand.id ~= CONFIG.SpearId then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if moveitems(hand.id, 'ground', CONFIG.Hand) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 700)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if moveitems(WEAPON_ID, CONFIG.Hand, CONFIG.WeaponLocation) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 700)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
end</code></div></div>]]></description>
			<content:encoded><![CDATA[Hello.<br />
<br />
This is a basic script to pickup spears/small stones to a BACKPACK, it's able to move dead bodies away and pickup.<br />
There are two scripts, both works pretty much same way except the way it stops walking for other tools like Targeting, Cavebot and Looter. The first script just uses an internal function pausewalking() to stop walking and the 2nd script actually disables cavebot, targeting and looter then enables again after picking up.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="color: #ff3333;" class="mycode_color">I will <span style="text-decoration: underline;" class="mycode_u">NOT</span> give any support on this script, not even to fix bugs.</span></span> So please, don't ask to because you will be ignored.<br />
<br />
<span style="font-size: xx-large;" class="mycode_size">1st script</span><br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local CONFIG =<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;MinCapacity = 80,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Minimal amount of cap to pickup spears.<br />
&nbsp;&nbsp;&nbsp;&nbsp;Hand = 'lhand',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- 'rhand' for RIGHT hand / 'lhand' for LEFT hand.<br />
&nbsp;&nbsp;&nbsp;&nbsp;MaxSpears = 22,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Max. amount<br />
&nbsp;&nbsp;&nbsp;&nbsp;MinSpears = 3,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Amount to ignore monsters and start to pickup.<br />
&nbsp;&nbsp;&nbsp;&nbsp;SpearsLocation = 'backpack',<br />
&nbsp;&nbsp;&nbsp;&nbsp;SearchRange = 3,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Distance range to search for spears.<br />
&nbsp;&nbsp;&nbsp;&nbsp;Untrash = true,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Move random stuff on floor that are over spears.<br />
&nbsp;&nbsp;&nbsp;&nbsp;UseWeaponWhenNoSpears = true,&nbsp;&nbsp;&nbsp;&nbsp;-- Use weapon when no spears?<br />
&nbsp;&nbsp;&nbsp;&nbsp;Weapon = 'spike sword',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Weapon name/id.<br />
&nbsp;&nbsp;&nbsp;&nbsp;WeaponLocation = 'backpack', -- Weapon location.<br />
&nbsp;&nbsp;&nbsp;&nbsp;SpearId = 3277,<br />
&nbsp;&nbsp;&nbsp;&nbsp;SpearWeigh = 20,<br />
}<br />
<br />
--[[ DON'T EDIT BELOW THIS LINE --]]<br />
--[[ DON'T EDIT BELOW THIS LINE --]]<br />
--[[ DON'T EDIT BELOW THIS LINE --]]<br />
<br />
if PICKUP_PAUSE == nil then<br />
&nbsp;&nbsp; PICKUP_PAUSE = false<br />
end<br />
<br />
if spearsCount == nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;function spearsCount()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local bpCount = itemcount(CONFIG.SpearId, CONFIG.SpearsLocation)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local hand = getequipment(CONFIG.Hand)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local handCount = 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if hand.id == CONFIG.SpearId then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;handCount = hand.count<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return { total = bpCount + handCount, hand = handCount, bp = bpCount }<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
end<br />
<br />
if grabSpears == nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;function grabSpears(x, y)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local flag = false<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pausewalking(99999)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if iswalking() then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pressesc()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(300)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local player_z = posz()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if reachlocation(x, y, player_z) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local item = topitem(x, y, player_z)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while item.id ~= CONFIG.SpearId do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local dir = wheretomoveitem(x,y,player_z, true, 1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;moveitems(item.id, ground(dir.posx, dir.posy, player_z), ground(x, y, player_z), 100)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 700)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item = topitem(x, y, player_z)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local spearLocation = CONFIG.SpearsLocation<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local hand = getequipment(CONFIG.Hand)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if hand.id == CONFIG.SpearId or hand.id == 0 then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;spearLocation = CONFIG.Hand<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if moveitems(CONFIG.SpearId, spearLocation, ground(x, y, player_z), 100) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 700)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag = true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pausewalking(0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return flag<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
end<br />
<br />
if findSpears == nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;function findSpears(rangeX, rangeY, topOnly)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local closesTile = {x = -1, y = -1, dist = -1, count = -1, top = false }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local tiles = gettiles()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local player_x = posx()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local player_y = posy()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local player_z = posz()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for _, tile in ipairs(tiles) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if math.abs(tile.posx - player_x) &lt;= rangeX and math.abs(tile.posy - player_y) &lt;= rangeY and tile.posz == player_z then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local foundSpearsCount = 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if topOnly and tile.topitem.id == CONFIG.SpearId then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foundSpearsCount = tile.topitem.count<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for __, item in ipairs(tile.items) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if item.id == CONFIG.SpearId then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foundSpearsCount = foundSpearsCount + item.count<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if foundSpearsCount &gt; 0 then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local dist = proximity(player_x, player_y, tile.posx, tile.posy)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if closesTile.dist == -1 or dist &lt; closesTile.dist or (dist == closesTile.dist and foundSpearsCount &gt; closesTile.count) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;closesTile = { x = tile.posx, y = tile.posy, dist = dist, count = foundSpearsCount, top = tile.topitem.id == CONFIG.SpearId }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return closesTile<br />
&nbsp;&nbsp; end<br />
end<br />
<br />
if connected() then<br />
&nbsp;&nbsp;&nbsp;&nbsp;local count = spearsCount()<br />
&nbsp;&nbsp;&nbsp;&nbsp;if cap() &gt;= CONFIG.MinCapacity and islooting() == false and ((attacked().id == 0 and count.total &lt; CONFIG.MaxSpears) or count.total &lt; CONFIG.MinSpears) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local spear = findSpears(CONFIG.SearchRange, CONFIG.SearchRange, CONFIG.Untrash)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if spear.x ~= -1 and grabSpears(spear.x, spear.y) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count = spearsCount()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if count.bp &gt; 0 then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local WEAPON_ID = itemid(CONFIG.Weapon)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local hand = getequipment(CONFIG.Hand)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if hand.id == WEAPON_ID then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if moveitems(WEAPON_ID, CONFIG.WeaponLocation, CONFIG.Hand) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 700)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hand = getequipment(CONFIG.Hand)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if hand.id == 0 or hand.id == CONFIG.SpearId then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if moveitems(CONFIG.SpearId, CONFIG.Hand, CONFIG.SpearsLocation) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 700)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;elseif count.total == 0 and CONFIG.UseWeaponWhenNoSpears then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local WEAPON_ID = itemid(CONFIG.Weapon)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local hand = getequipment(CONFIG.Hand)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if hand.id &gt; 0 and hand.id ~= WEAPON_ID and hand.id ~= CONFIG.SpearId then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if moveitems(hand.id, 'ground', CONFIG.Hand) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 700)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if moveitems(WEAPON_ID, CONFIG.Hand, CONFIG.WeaponLocation) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 700)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
end</code></div></div><br />
<span style="font-size: xx-large;" class="mycode_size">2nd script</span><br />
This is an alternative that checks of it's possible to reach and disable Cavebot, Targeting and Looter to pickup.<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local CONFIG =<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;MinCapacity = 80,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Minimal amount of cap to pickup spears.<br />
&nbsp;&nbsp;&nbsp;&nbsp;Hand = 'lhand',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- 'rhand' for RIGHT hand / 'lhand' for LEFT hand.<br />
&nbsp;&nbsp;&nbsp;&nbsp;MaxSpears = 22,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Max. amount<br />
&nbsp;&nbsp;&nbsp;&nbsp;MinSpears = 3,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Amount to ignore monsters and start to pickup.<br />
&nbsp;&nbsp;&nbsp;&nbsp;SpearsLocation = 'backpack',<br />
&nbsp;&nbsp;&nbsp;&nbsp;SearchRange = 3,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Distance range to search for spears.<br />
&nbsp;&nbsp;&nbsp;&nbsp;Untrash = true,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Move random stuff on floor that are over spears.<br />
&nbsp;&nbsp;&nbsp;&nbsp;UseWeaponWhenNoSpears = true,&nbsp;&nbsp;&nbsp;&nbsp;-- Use weapon when no spears?<br />
&nbsp;&nbsp;&nbsp;&nbsp;Weapon = 'spike sword',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Weapon name/id.<br />
&nbsp;&nbsp;&nbsp;&nbsp;WeaponLocation = 'backpack', -- Weapon location.<br />
&nbsp;&nbsp;&nbsp;&nbsp;SpearId = 3277,<br />
&nbsp;&nbsp;&nbsp;&nbsp;SpearWeigh = 20,<br />
}<br />
<br />
--[[ DON'T EDIT BELOW THIS LINE --]]<br />
--[[ DON'T EDIT BELOW THIS LINE --]]<br />
--[[ DON'T EDIT BELOW THIS LINE --]]<br />
<br />
<br />
if PICKUP_PAUSE == nil then<br />
&nbsp;&nbsp; PICKUP_PAUSE = false<br />
end<br />
<br />
if spearsCount == nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;function spearsCount()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local bpCount = itemcount(CONFIG.SpearId, CONFIG.SpearsLocation)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local hand = getequipment(CONFIG.Hand)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local handCount = 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if hand.id == CONFIG.SpearId then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;handCount = hand.count<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return { total = bpCount + handCount, hand = handCount, bp = bpCount }<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
end<br />
<br />
if grabSpears == nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;function grabSpears(x, y)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local flag = false<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setsettings('Targeting/Settings/Enabled', false)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setsettings('Looter/Settings/Enabled', false)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setsettings('Cavebot/Settings/Enabled', false)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pausewalking(99999)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if iswalking() then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pressesc()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(300)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local player_z = posz()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if reachlocation(x, y, player_z) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local item = topitem(x, y, player_z)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while item.id ~= CONFIG.SpearId do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local dir = wheretomoveitem(x,y,player_z, true, 1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;moveitems(item.id, ground(dir.posx, dir.posy, player_z), ground(x, y, player_z), 100)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 700)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item = topitem(x, y, player_z)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local spearLocation = CONFIG.SpearsLocation<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local hand = getequipment(CONFIG.Hand)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if hand.id == CONFIG.SpearId or hand.id == 0 then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;spearLocation = CONFIG.Hand<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if moveitems(CONFIG.SpearId, spearLocation, ground(x, y, player_z), 100) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 700)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag = true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pausewalking(0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setsettings('Targeting/Settings/Enabled', true)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setsettings('Looter/Settings/Enabled', true)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setsettings('Cavebot/Settings/Enabled', true)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return flag<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
end<br />
<br />
if findSpears == nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;function findSpears(rangeX, rangeY, topOnly)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local closesTile = {x = -1, y = -1, dist = -1, count = -1, top = false }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local tiles = gettiles()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local player_x = posx()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local player_y = posy()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local player_z = posz()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for _, tile in ipairs(tiles) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if math.abs(tile.posx - player_x) &lt;= rangeX and math.abs(tile.posy - player_y) &lt;= rangeY and tile.posz == player_z then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local foundSpearsCount = 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if topOnly and tile.topitem.id == CONFIG.SpearId then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foundSpearsCount = tile.topitem.count<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for __, item in ipairs(tile.items) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if item.id == CONFIG.SpearId then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foundSpearsCount = foundSpearsCount + item.count<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if foundSpearsCount &gt; 0 then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local dist = proximity(player_x, player_y, tile.posx, tile.posy)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (closesTile.dist == -1 or dist &lt; closesTile.dist or (dist == closesTile.dist and foundSpearsCount &gt; closesTile.count)) and tilereachable(tile.posx, tile.posy, tile.posz) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;closesTile = { x = tile.posx, y = tile.posy, dist = dist, count = foundSpearsCount, top = tile.topitem.id == CONFIG.SpearId }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return closesTile<br />
&nbsp;&nbsp; end<br />
end<br />
<br />
if connected() then<br />
&nbsp;&nbsp;&nbsp;&nbsp;local count = spearsCount()<br />
&nbsp;&nbsp;&nbsp;&nbsp;if cap() &gt;= CONFIG.MinCapacity and islooting() == false and ((attacked().id == 0 and count.total &lt; CONFIG.MaxSpears) or count.total &lt; CONFIG.MinSpears) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local spear = findSpears(CONFIG.SearchRange, CONFIG.SearchRange, CONFIG.Untrash)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if spear.x ~= -1 and grabSpears(spear.x, spear.y) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count = spearsCount()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if count.bp &gt; 0 then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local WEAPON_ID = itemid(CONFIG.Weapon)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local hand = getequipment(CONFIG.Hand)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if hand.id == WEAPON_ID then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if moveitems(WEAPON_ID, CONFIG.WeaponLocation, CONFIG.Hand) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 700)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hand = getequipment(CONFIG.Hand)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if hand.id == 0 or hand.id == CONFIG.SpearId then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if moveitems(CONFIG.SpearId, CONFIG.Hand, CONFIG.SpearsLocation) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 700)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;elseif count.total == 0 and CONFIG.UseWeaponWhenNoSpears then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local WEAPON_ID = itemid(CONFIG.Weapon)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local hand = getequipment(CONFIG.Hand)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if hand.id &gt; 0 and hand.id ~= WEAPON_ID and hand.id ~= CONFIG.SpearId then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if moveitems(hand.id, 'ground', CONFIG.Hand) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 700)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if moveitems(WEAPON_ID, CONFIG.Hand, CONFIG.WeaponLocation) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 700)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
end</code></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Fishing on Souls of Elysium (SoE)]]></title>
			<link>https://forums.otbots.com/Thread-FREE-Fishing-on-Souls-of-Elysium-SoE--2477</link>
			<pubDate>Mon, 07 Nov 2022 11:17:52 -0600</pubDate>
			<dc:creator><![CDATA[<a href="https://forums.otbots.com/member.php?action=profile&uid=1">Arkilys</a>]]></dc:creator>
			<guid isPermaLink="false">https://forums.otbots.com/Thread-FREE-Fishing-on-Souls-of-Elysium-SoE--2477</guid>
			<description><![CDATA[Hello.<br />
<br />
This script should be only be used on Souls of Elysium (SoE), because you just need to right-click on water to fish.<br />
If you are looking for a script to fish using a fishing rod then you can use Tools -&gt; Auto Fishing or the following script: <center><span class="bigbutton" style="display:block;color:firebrick;font-weight:bold;border:2px solid;padding:10px;margin:10px;">|Only Registered members can see download links. | <a href="mysubscriptions.php" original-title=""><i style="font-size: 14px;" class="fa fa-user fa-fw" original-title=""></i> Click here to buy subscription</a> or <a href="member.php?action=register" original-title=""><i style="font-size: 14px;" class="fa fa-user fa-fw" original-title=""></i> here to register.</a></span></center><br />
<br />
The following script will simply right-click on the specified location and wait 10 seconds.<br />
Just edit the x, y, z on function below.<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local point = pointfromloc(12345, 12345, 6) -- x, y, z location to right-click.<br />
if point.x ~= -1 or point.y ~= -1 then<br />
&nbsp;&nbsp;mouserclick(point.x, point.y)<br />
&nbsp;&nbsp;wait(10000)<br />
end</code></div></div><br />
Or this, based on your character's location. You just need to setup the direction where the water is and it MUST BE 1 sqm away from your character.<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local DIRECTION = 'ne' -- Water direction based in your character: n, e, s, w, ne, nw, se, sw.<br />
<br />
if connected() then<br />
&nbsp;&nbsp;&nbsp;&nbsp;if DIRECTION == 'w' or DIRECTION == 'e' or DIRECTION == 'n' or DIRECTION == 's' or DIRECTION == 'ne' or DIRECTION == 'nw' or DIRECTION == 'se' or DIRECTION == 'sw' then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local dir = {x = {n = 0, s = 0, w = -1, e = 1}, y = {n = -1, s = 1, w = 0, e = 0}}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local x = 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local y = 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i = 1, #DIRECTION do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local c = DIRECTION:sub(i,i)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x = x + dir.x[c]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y = y + dir.y[c]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local point = pointfromloc(posx() + x, posy() + y, posz())<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if point.x ~= -1 or point.y ~= -1 then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mouserclick(point.x, point.y)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(10000)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
end</code></div></div><br />
The same as above, but also drops trash (unwanted items).<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local DIRECTION = 'ne' -- Water direction based in your character: n, e, s, w, ne, nw, se, sw.<br />
local ITEMS_DROP = { -- Drop listed items if its count is equal or higher than Count.<br />
&nbsp;&nbsp;&nbsp;&nbsp;{ Item = 3031, Count = 2 }, -- gold coin. Drops only if there are 2 or more gold coins on open containers.<br />
}<br />
<br />
if connected() then<br />
&nbsp;&nbsp;&nbsp;&nbsp;if DIRECTION == 'w' or DIRECTION == 'e' or DIRECTION == 'n' or DIRECTION == 's' or DIRECTION == 'ne' or DIRECTION == 'nw' or DIRECTION == 'se' or DIRECTION == 'sw' then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local dir = {x = {n = 0, s = 0, w = -1, e = 1}, y = {n = -1, s = 1, w = 0, e = 0}}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local x = 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local y = 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i = 1, #DIRECTION do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local c = DIRECTION:sub(i,i)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x = x + dir.x[c]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y = y + dir.y[c]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local point = pointfromloc(posx() + x, posy() + y, posz())<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if point.x ~= -1 or point.y ~= -1 then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mouserclick(point.x, point.y)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(10000)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;for _, item in ipairs(ITEMS_DROP) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if itemcount(item.Item) &gt;= item.Count then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;moveitems(item.Item, ground(posx(), posy(), posz()), '', 100)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(500)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
end</code></div></div>]]></description>
			<content:encoded><![CDATA[Hello.<br />
<br />
This script should be only be used on Souls of Elysium (SoE), because you just need to right-click on water to fish.<br />
If you are looking for a script to fish using a fishing rod then you can use Tools -&gt; Auto Fishing or the following script: <center><span class="bigbutton" style="display:block;color:firebrick;font-weight:bold;border:2px solid;padding:10px;margin:10px;">|Only Registered members can see download links. | <a href="mysubscriptions.php" original-title=""><i style="font-size: 14px;" class="fa fa-user fa-fw" original-title=""></i> Click here to buy subscription</a> or <a href="member.php?action=register" original-title=""><i style="font-size: 14px;" class="fa fa-user fa-fw" original-title=""></i> here to register.</a></span></center><br />
<br />
The following script will simply right-click on the specified location and wait 10 seconds.<br />
Just edit the x, y, z on function below.<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local point = pointfromloc(12345, 12345, 6) -- x, y, z location to right-click.<br />
if point.x ~= -1 or point.y ~= -1 then<br />
&nbsp;&nbsp;mouserclick(point.x, point.y)<br />
&nbsp;&nbsp;wait(10000)<br />
end</code></div></div><br />
Or this, based on your character's location. You just need to setup the direction where the water is and it MUST BE 1 sqm away from your character.<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local DIRECTION = 'ne' -- Water direction based in your character: n, e, s, w, ne, nw, se, sw.<br />
<br />
if connected() then<br />
&nbsp;&nbsp;&nbsp;&nbsp;if DIRECTION == 'w' or DIRECTION == 'e' or DIRECTION == 'n' or DIRECTION == 's' or DIRECTION == 'ne' or DIRECTION == 'nw' or DIRECTION == 'se' or DIRECTION == 'sw' then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local dir = {x = {n = 0, s = 0, w = -1, e = 1}, y = {n = -1, s = 1, w = 0, e = 0}}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local x = 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local y = 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i = 1, #DIRECTION do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local c = DIRECTION:sub(i,i)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x = x + dir.x[c]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y = y + dir.y[c]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local point = pointfromloc(posx() + x, posy() + y, posz())<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if point.x ~= -1 or point.y ~= -1 then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mouserclick(point.x, point.y)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(10000)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
end</code></div></div><br />
The same as above, but also drops trash (unwanted items).<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local DIRECTION = 'ne' -- Water direction based in your character: n, e, s, w, ne, nw, se, sw.<br />
local ITEMS_DROP = { -- Drop listed items if its count is equal or higher than Count.<br />
&nbsp;&nbsp;&nbsp;&nbsp;{ Item = 3031, Count = 2 }, -- gold coin. Drops only if there are 2 or more gold coins on open containers.<br />
}<br />
<br />
if connected() then<br />
&nbsp;&nbsp;&nbsp;&nbsp;if DIRECTION == 'w' or DIRECTION == 'e' or DIRECTION == 'n' or DIRECTION == 's' or DIRECTION == 'ne' or DIRECTION == 'nw' or DIRECTION == 'se' or DIRECTION == 'sw' then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local dir = {x = {n = 0, s = 0, w = -1, e = 1}, y = {n = -1, s = 1, w = 0, e = 0}}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local x = 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local y = 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i = 1, #DIRECTION do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local c = DIRECTION:sub(i,i)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x = x + dir.x[c]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y = y + dir.y[c]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local point = pointfromloc(posx() + x, posy() + y, posz())<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if point.x ~= -1 or point.y ~= -1 then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mouserclick(point.x, point.y)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(10000)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;for _, item in ipairs(ITEMS_DROP) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if itemcount(item.Item) &gt;= item.Count then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;moveitems(item.Item, ground(posx(), posy(), posz()), '', 100)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(500)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
end</code></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Eat food]]></title>
			<link>https://forums.otbots.com/Thread-FREE-Eat-food--2475</link>
			<pubDate>Sat, 05 Nov 2022 18:51:26 -0500</pubDate>
			<dc:creator><![CDATA[<a href="https://forums.otbots.com/member.php?action=profile&uid=1">Arkilys</a>]]></dc:creator>
			<guid isPermaLink="false">https://forums.otbots.com/Thread-FREE-Eat-food--2475</guid>
			<description><![CDATA[Hello.<br />
<br />
Eat food script.<br />
This script is useful when Options -&gt; Eat Food is not eating a specific food you wanna eat. This happens because game-client doesn't tells if an item is a food or not, so i've to manually add each food on Bot.<br />
<br />
This link will help you to find what's the item id of an item, so you can find food's id: <center><span class="bigbutton" style="display:block;color:firebrick;font-weight:bold;border:2px solid;padding:10px;margin:10px;">|Only Registered members can see download links. | <a href="mysubscriptions.php" original-title=""><i style="font-size: 14px;" class="fa fa-user fa-fw" original-title=""></i> Click here to buy subscription</a> or <a href="member.php?action=register" original-title=""><i style="font-size: 14px;" class="fa fa-user fa-fw" original-title=""></i> here to register.</a></span></center><br />
<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local EAT_TRIES = { Min = 2, Max = 15 }<br />
local FOODS_IDS = { 1234, 1234 } -- Foods ids you wanna eat.<br />
local EAT_TIME = { Min = 300, Max = 480, } -- In SECONDS. Time to wait after eating food to eat again.<br />
local STOP_FULL = false -- Stops eating when you are full message shows up.<br />
<br />
NEXT_EAT_TIME = NEXT_EAT_TIME or 1<br />
<br />
if connected() and runningtime() &gt;= NEXT_EAT_TIME then<br />
&nbsp;&nbsp;&nbsp;&nbsp;local eatCount = 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;local maxEatCount = random(EAT_TRIES.Min, EAT_TRIES.Max)<br />
&nbsp;&nbsp;&nbsp;&nbsp;for _, food in ipairs(FOODS_IDS) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if itemcount(food) &gt; 0 then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i = eatCount, maxEatCount do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;useitem(food, '')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 800)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eatCount = eatCount + 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if STOP_FULL and statusmessage() == 'You are full.' then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if eatCount &gt;= maxEatCount then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;NEXT_EAT_TIME = runningtime() + random(EAT_TIME.Min, EAT_TIME.Max)<br />
end</code></div></div>]]></description>
			<content:encoded><![CDATA[Hello.<br />
<br />
Eat food script.<br />
This script is useful when Options -&gt; Eat Food is not eating a specific food you wanna eat. This happens because game-client doesn't tells if an item is a food or not, so i've to manually add each food on Bot.<br />
<br />
This link will help you to find what's the item id of an item, so you can find food's id: <center><span class="bigbutton" style="display:block;color:firebrick;font-weight:bold;border:2px solid;padding:10px;margin:10px;">|Only Registered members can see download links. | <a href="mysubscriptions.php" original-title=""><i style="font-size: 14px;" class="fa fa-user fa-fw" original-title=""></i> Click here to buy subscription</a> or <a href="member.php?action=register" original-title=""><i style="font-size: 14px;" class="fa fa-user fa-fw" original-title=""></i> here to register.</a></span></center><br />
<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local EAT_TRIES = { Min = 2, Max = 15 }<br />
local FOODS_IDS = { 1234, 1234 } -- Foods ids you wanna eat.<br />
local EAT_TIME = { Min = 300, Max = 480, } -- In SECONDS. Time to wait after eating food to eat again.<br />
local STOP_FULL = false -- Stops eating when you are full message shows up.<br />
<br />
NEXT_EAT_TIME = NEXT_EAT_TIME or 1<br />
<br />
if connected() and runningtime() &gt;= NEXT_EAT_TIME then<br />
&nbsp;&nbsp;&nbsp;&nbsp;local eatCount = 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;local maxEatCount = random(EAT_TRIES.Min, EAT_TRIES.Max)<br />
&nbsp;&nbsp;&nbsp;&nbsp;for _, food in ipairs(FOODS_IDS) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if itemcount(food) &gt; 0 then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i = eatCount, maxEatCount do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;useitem(food, '')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 800)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eatCount = eatCount + 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if STOP_FULL and statusmessage() == 'You are full.' then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if eatCount &gt;= maxEatCount then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;NEXT_EAT_TIME = runningtime() + random(EAT_TIME.Min, EAT_TIME.Max)<br />
end</code></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Cast spells according creature's health]]></title>
			<link>https://forums.otbots.com/Thread-FREE-Cast-spells-according-creature-s-health--2471</link>
			<pubDate>Thu, 03 Nov 2022 07:53:21 -0500</pubDate>
			<dc:creator><![CDATA[<a href="https://forums.otbots.com/member.php?action=profile&uid=1">Arkilys</a>]]></dc:creator>
			<guid isPermaLink="false">https://forums.otbots.com/Thread-FREE-Cast-spells-according-creature-s-health--2471</guid>
			<description><![CDATA[Hello.<br />
<br />
This script will cast the specific spell according to the monster you are killing and its health. So you can setup multiple spells for same monster according its health.<br />
Targeting can do the same and it's better because it has more conditions, but i decided to create this simple script to show you guys you can do the same using LUA Scripts.<br />
<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local MIN_HEALTH = 80 -- Min. health pc to cast spells. Only cast spells if your characters hp% is higher than this value.<br />
local Monsters = {<br />
&nbsp;&nbsp;&nbsp;&nbsp;{ Name = 'Orc Warrior', HpMin = 1, HpMax = 100, Spell = 'exori flam' }, -- Monster name, Hp min and max to cast spell and which spell.<br />
&nbsp;&nbsp;&nbsp;&nbsp;{ Name = 'Orc', HpMin = 20, HpMax = 100, Spell = 'exori flam' }, -- On this case, it will only cast spells when orc has hp% between 20 and 100%.<br />
}<br />
<br />
local attacked_creature = attacked()<br />
if attacked_creature.id &gt; 0 and hppc() &gt;= MIN_HEALTH and cancast() then<br />
&nbsp;&nbsp;&nbsp;&nbsp;for _, monster in ipairs(Monsters) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if monster.Name:lower() == attacked_creature.name:lower() and attacked_creature.hppc &gt;= monster.HpMin and attacked_creature.hppc &lt;= monster.HpMax then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cast(monster.Spell)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(1000, 1300)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
end</code></div></div><br />
<br />
Alternatively, if you don't care about creatures health then you can use the script below:<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local MIN_HEALTH = 80 -- Min. health pc to cast spells. Only cast spells if your characters hp% is higher than this value.<br />
local Monsters = {<br />
&nbsp;&nbsp;&nbsp;&nbsp;{ Name = 'Orc Warrior', Spell = 'exori flam' }, -- Monster name and which spell to cast.<br />
&nbsp;&nbsp;&nbsp;&nbsp;{ Name = 'Orc', Spell = 'exori flam' }, -- On this case, it will cast exori flam on a Orc.<br />
}<br />
<br />
local attacked_creature = attacked()<br />
if attacked_creature.id &gt; 0 and hppc() &gt;= MIN_HEALTH and cancast() then<br />
&nbsp;&nbsp;&nbsp;&nbsp;for _, monster in ipairs(Monsters) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if monster.Name:lower() == attacked_creature.name:lower() then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cast(monster.Spell)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(1000, 1300)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
end</code></div></div>]]></description>
			<content:encoded><![CDATA[Hello.<br />
<br />
This script will cast the specific spell according to the monster you are killing and its health. So you can setup multiple spells for same monster according its health.<br />
Targeting can do the same and it's better because it has more conditions, but i decided to create this simple script to show you guys you can do the same using LUA Scripts.<br />
<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local MIN_HEALTH = 80 -- Min. health pc to cast spells. Only cast spells if your characters hp% is higher than this value.<br />
local Monsters = {<br />
&nbsp;&nbsp;&nbsp;&nbsp;{ Name = 'Orc Warrior', HpMin = 1, HpMax = 100, Spell = 'exori flam' }, -- Monster name, Hp min and max to cast spell and which spell.<br />
&nbsp;&nbsp;&nbsp;&nbsp;{ Name = 'Orc', HpMin = 20, HpMax = 100, Spell = 'exori flam' }, -- On this case, it will only cast spells when orc has hp% between 20 and 100%.<br />
}<br />
<br />
local attacked_creature = attacked()<br />
if attacked_creature.id &gt; 0 and hppc() &gt;= MIN_HEALTH and cancast() then<br />
&nbsp;&nbsp;&nbsp;&nbsp;for _, monster in ipairs(Monsters) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if monster.Name:lower() == attacked_creature.name:lower() and attacked_creature.hppc &gt;= monster.HpMin and attacked_creature.hppc &lt;= monster.HpMax then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cast(monster.Spell)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(1000, 1300)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
end</code></div></div><br />
<br />
Alternatively, if you don't care about creatures health then you can use the script below:<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local MIN_HEALTH = 80 -- Min. health pc to cast spells. Only cast spells if your characters hp% is higher than this value.<br />
local Monsters = {<br />
&nbsp;&nbsp;&nbsp;&nbsp;{ Name = 'Orc Warrior', Spell = 'exori flam' }, -- Monster name and which spell to cast.<br />
&nbsp;&nbsp;&nbsp;&nbsp;{ Name = 'Orc', Spell = 'exori flam' }, -- On this case, it will cast exori flam on a Orc.<br />
}<br />
<br />
local attacked_creature = attacked()<br />
if attacked_creature.id &gt; 0 and hppc() &gt;= MIN_HEALTH and cancast() then<br />
&nbsp;&nbsp;&nbsp;&nbsp;for _, monster in ipairs(Monsters) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if monster.Name:lower() == attacked_creature.name:lower() then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cast(monster.Spell)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(1000, 1300)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
end</code></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Advanced fishing]]></title>
			<link>https://forums.otbots.com/Thread-FREE-Advanced-fishing--2467</link>
			<pubDate>Thu, 27 Oct 2022 21:24:37 -0500</pubDate>
			<dc:creator><![CDATA[<a href="https://forums.otbots.com/member.php?action=profile&uid=1">Arkilys</a>]]></dc:creator>
			<guid isPermaLink="false">https://forums.otbots.com/Thread-FREE-Advanced-fishing--2467</guid>
			<description><![CDATA[Hello.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">About the script</span></span><br />
The scripts below will fish <span style="font-weight: bold;" class="mycode_b">only</span> on the WATER_IDs. So you must <span style="font-weight: bold;" class="mycode_b">make sure the water id you are willing to fish is in the list</span>.<br />
<br />
This script will fish and drop garbage when it has at least x count of garbage.<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local WATER_IDS = { 618, 619, 620, 622, 623, 624, 625, 626, 627, 628, 629, 4597, 4598, 4599, 4600, 4601, 4602, 4608, 4609, 4610, 4611, 4612, 4613, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4653, 4654, 4655 } -- Water ids which script should try to fish.<br />
local FISHING_ROD_ID = 5331 -- Fishing rod id.<br />
local TRASH = {<br />
&nbsp;&nbsp;&nbsp;&nbsp;{ Item = 5326, Count = 1 }, -- wood<br />
}<br />
<br />
if connected() then<br />
&nbsp;&nbsp;&nbsp;&nbsp;local player_x = posx()<br />
&nbsp;&nbsp;&nbsp;&nbsp;local player_y = posy()<br />
&nbsp;&nbsp;&nbsp;&nbsp;local player_z = posz()<br />
&nbsp;&nbsp;&nbsp;&nbsp;local tiles = gettiles()<br />
&nbsp;&nbsp;&nbsp;&nbsp;for _, tile in ipairs(tiles) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if math.abs(tile.posx - player_x) &lt;= 7 and math.abs(tile.posy - player_y) &lt;= 5 and tile.posz == player_z then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for __, item in ipairs(tile.items) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if table.find(WATER_IDS, item.id) ~= nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;useitemon(FISHING_ROD_ID, tile.posx, tile.posy, tile.posz)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(800, 1200)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;for _, item in ipairs(TRASH) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if itemcount(item.Item) &gt;= item.Count then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;moveitems(item.Item, ground(posx(), posy(), posz()), '', 100)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(500)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
end</code></div></div><br />
This script will stop fishing and drop garbage as well, but will stop fishing whenever it reaches the "FISHING_ROD_CHARGES" count. That mean it would use a fishing rod 300 times then stop.<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local WATER_IDS = { 618, 619, 620, 622, 623, 624, 625, 626, 627, 628, 629, 4597, 4598, 4599, 4600, 4601, 4602, 4608, 4609, 4610, 4611, 4612, 4613, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4653, 4654, 4655 } -- Water ids which script should try to fish.<br />
local FISHING_ROD_ID = 5331 -- Fishing rod id.<br />
local FISHING_ROD_CHARGES = 300 -- How many charges fishing rod has? It will stop after using that many times.<br />
local TRASH = {<br />
&nbsp;&nbsp;&nbsp;&nbsp;{ Item = 5326, Count = 1 }, -- wood<br />
}<br />
<br />
USED_TIMES = getglobal('USED_TIMES')<br />
if USED_TIMES == nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;setglobal('USED_TIMES', 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;USED_TIMES = 0<br />
end<br />
<br />
if connected() then<br />
&nbsp;&nbsp;&nbsp;&nbsp;if USED_TIMES ~= nil and USED_TIMES &lt; FISHING_ROD_CHARGES then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local player_x = posx()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local player_y = posy()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local player_z = posz()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local tiles = gettiles()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for _, tile in ipairs(tiles) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if math.abs(tile.posx - player_x) &lt;= 7 and math.abs(tile.posy - player_y) &lt;= 5 and tile.posz == player_z then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for __, item in ipairs(tile.items) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if table.find(WATER_IDS, item.id) ~= nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;useitemon(FISHING_ROD_ID, tile.posx, tile.posy, tile.posz)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(800, 1200)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;USED_TIMES = USED_TIMES + 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setglobal('USED_TIMES', USED_TIMES)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;for _, item in ipairs(TRASH) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if itemcount(item.Item) &gt;= item.Count then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;moveitems(item.Item, ground(posx(), posy(), posz()), '', 100)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(500)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
end</code></div></div><br />
This script will also fish, drop garbage and stop fishing, BUT it will make cavebot go to specific waypoint and enable cavebot. So you can make waypoints to reach an npc or simply do whatever you need to refill your fishing rod. <img src="https://forums.otbots.com/images/smilies/smile.png" alt="Smile" title="Smile" class="smilie smilie_1" /><br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local WATER_IDS = { 618, 619, 620, 622, 623, 624, 625, 626, 627, 628, 629, 4597, 4598, 4599, 4600, 4601, 4602, 4608, 4609, 4610, 4611, 4612, 4613, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4653, 4654, 4655 } -- Water ids which script should try to fish.<br />
local FISHING_ROD_ID = 5331 -- Fishing rod id.<br />
local FISHING_ROD_CHARGES = 300 -- How many charges fishing rod has? It will stop after using that many times.<br />
local WAYPOINT_RECHARGE = 'go_recharge' -- Wpt name or index to recharge rod. Leave empty to ignore.<br />
local TRASH = {<br />
&nbsp;&nbsp;&nbsp;&nbsp;{ Item = 5326, Count = 1 }, -- wood<br />
}<br />
<br />
USED_TIMES = getglobal('USED_TIMES')<br />
if USED_TIMES == nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;USED_TIMES = 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;setglobal('USED_TIMES', 0)<br />
end<br />
<br />
if connected() then<br />
&nbsp;&nbsp;&nbsp;&nbsp;if USED_TIMES ~= nil and USED_TIMES &lt; FISHING_ROD_CHARGES then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local player_x = posx()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local player_y = posy()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local player_z = posz()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local tiles = gettiles()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for _, tile in ipairs(tiles) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if math.abs(tile.posx - player_x) &lt;= 7 and math.abs(tile.posy - player_y) &lt;= 5 and tile.posz == player_z then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for __, item in ipairs(tile.items) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if table.find(WATER_IDS, item.id) ~= nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;useitemon(FISHING_ROD_ID, tile.posx, tile.posy, tile.posz)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(800, 1200)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;USED_TIMES = USED_TIMES + 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setglobal('USED_TIMES', USED_TIMES)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;elseif USED_TIMES ~= nil and USED_TIMES &gt;= FISHING_ROD_CHARGES and WAYPOINT_RECHARGE ~= nil and WAYPOINT_RECHARGE ~= '' then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gotolabel(WAYPOINT_RECHARGE)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setsettings('Cavebot/Enabled', true)<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;for _, item in ipairs(TRASH) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if itemcount(item.Item) &gt;= item.Count then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;moveitems(item.Item, ground(posx(), posy(), posz()), '', 100)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(500)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
end</code></div></div><br />
Notice that you must reset the variable "USED_TIMES" after refilling. The script below does that, so you just need to add it on Cavebot -&gt; Action after refilling or walking back to fishing spot.<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>setglobal('USED_TIMES', 0)</code></div></div><br />
<br />
<span style="font-size: Large;" class="mycode_size">Right-click on water</span><br />
This script should be used on servers that you don't need to use a fishing rod, but only right-click directly on water.<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local WATER_IDS = { 618, 619, 620, 622, 623, 624, 625, 626, 627, 628, 629, 4597, 4598, 4599, 4600, 4601, 4602, 4608, 4609, 4610, 4611, 4612, 4613, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4653, 4654, 4655 } -- Water ids which script should try to fish by using right click.<br />
local DELAY_BETWEEN_CLICKS = { Min = 1000, Max = 2000 }<br />
<br />
if connected() then<br />
&nbsp;&nbsp;&nbsp;&nbsp;local player_x = posx()<br />
&nbsp;&nbsp;&nbsp;&nbsp;local player_y = posy()<br />
&nbsp;&nbsp;&nbsp;&nbsp;local player_z = posz()<br />
&nbsp;&nbsp;&nbsp;&nbsp;local tiles = gettiles()<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;local places = { }<br />
&nbsp;&nbsp;&nbsp;&nbsp;for _, tile in ipairs(tiles) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if math.abs(tile.posx - player_x) &lt;= 7 and math.abs(tile.posy - player_y) &lt;= 5 and tile.posz == player_z then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for __, item in ipairs(tile.items) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if table.find(WATER_IDS, item.id) ~= nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table.insert(places, { x = tile.posx, y = tile.posy } )<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;table.shuffle(places)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;for _, place in ipairs(places) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local point = pointfromloc(place.x, place.y, player_z)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if point.x ~= -1 or point.y ~= -1 then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mouserclick(point.x, point.y)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(DELAY_BETWEEN_CLICKS.Min, DELAY_BETWEEN_CLICKS.Max)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end <br />
end</code></div></div><br />
<br />
<span style="font-size: 1pt;" class="mycode_size">keywords: fishing rod, fish, fishing, garbage, trash, drop trash, drop garbage, drop, fish and drop, advanced fishing, wooden rod, mechanical rod</span>]]></description>
			<content:encoded><![CDATA[Hello.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">About the script</span></span><br />
The scripts below will fish <span style="font-weight: bold;" class="mycode_b">only</span> on the WATER_IDs. So you must <span style="font-weight: bold;" class="mycode_b">make sure the water id you are willing to fish is in the list</span>.<br />
<br />
This script will fish and drop garbage when it has at least x count of garbage.<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local WATER_IDS = { 618, 619, 620, 622, 623, 624, 625, 626, 627, 628, 629, 4597, 4598, 4599, 4600, 4601, 4602, 4608, 4609, 4610, 4611, 4612, 4613, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4653, 4654, 4655 } -- Water ids which script should try to fish.<br />
local FISHING_ROD_ID = 5331 -- Fishing rod id.<br />
local TRASH = {<br />
&nbsp;&nbsp;&nbsp;&nbsp;{ Item = 5326, Count = 1 }, -- wood<br />
}<br />
<br />
if connected() then<br />
&nbsp;&nbsp;&nbsp;&nbsp;local player_x = posx()<br />
&nbsp;&nbsp;&nbsp;&nbsp;local player_y = posy()<br />
&nbsp;&nbsp;&nbsp;&nbsp;local player_z = posz()<br />
&nbsp;&nbsp;&nbsp;&nbsp;local tiles = gettiles()<br />
&nbsp;&nbsp;&nbsp;&nbsp;for _, tile in ipairs(tiles) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if math.abs(tile.posx - player_x) &lt;= 7 and math.abs(tile.posy - player_y) &lt;= 5 and tile.posz == player_z then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for __, item in ipairs(tile.items) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if table.find(WATER_IDS, item.id) ~= nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;useitemon(FISHING_ROD_ID, tile.posx, tile.posy, tile.posz)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(800, 1200)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;for _, item in ipairs(TRASH) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if itemcount(item.Item) &gt;= item.Count then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;moveitems(item.Item, ground(posx(), posy(), posz()), '', 100)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(500)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
end</code></div></div><br />
This script will stop fishing and drop garbage as well, but will stop fishing whenever it reaches the "FISHING_ROD_CHARGES" count. That mean it would use a fishing rod 300 times then stop.<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local WATER_IDS = { 618, 619, 620, 622, 623, 624, 625, 626, 627, 628, 629, 4597, 4598, 4599, 4600, 4601, 4602, 4608, 4609, 4610, 4611, 4612, 4613, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4653, 4654, 4655 } -- Water ids which script should try to fish.<br />
local FISHING_ROD_ID = 5331 -- Fishing rod id.<br />
local FISHING_ROD_CHARGES = 300 -- How many charges fishing rod has? It will stop after using that many times.<br />
local TRASH = {<br />
&nbsp;&nbsp;&nbsp;&nbsp;{ Item = 5326, Count = 1 }, -- wood<br />
}<br />
<br />
USED_TIMES = getglobal('USED_TIMES')<br />
if USED_TIMES == nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;setglobal('USED_TIMES', 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;USED_TIMES = 0<br />
end<br />
<br />
if connected() then<br />
&nbsp;&nbsp;&nbsp;&nbsp;if USED_TIMES ~= nil and USED_TIMES &lt; FISHING_ROD_CHARGES then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local player_x = posx()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local player_y = posy()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local player_z = posz()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local tiles = gettiles()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for _, tile in ipairs(tiles) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if math.abs(tile.posx - player_x) &lt;= 7 and math.abs(tile.posy - player_y) &lt;= 5 and tile.posz == player_z then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for __, item in ipairs(tile.items) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if table.find(WATER_IDS, item.id) ~= nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;useitemon(FISHING_ROD_ID, tile.posx, tile.posy, tile.posz)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(800, 1200)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;USED_TIMES = USED_TIMES + 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setglobal('USED_TIMES', USED_TIMES)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;for _, item in ipairs(TRASH) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if itemcount(item.Item) &gt;= item.Count then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;moveitems(item.Item, ground(posx(), posy(), posz()), '', 100)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(500)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
end</code></div></div><br />
This script will also fish, drop garbage and stop fishing, BUT it will make cavebot go to specific waypoint and enable cavebot. So you can make waypoints to reach an npc or simply do whatever you need to refill your fishing rod. <img src="https://forums.otbots.com/images/smilies/smile.png" alt="Smile" title="Smile" class="smilie smilie_1" /><br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local WATER_IDS = { 618, 619, 620, 622, 623, 624, 625, 626, 627, 628, 629, 4597, 4598, 4599, 4600, 4601, 4602, 4608, 4609, 4610, 4611, 4612, 4613, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4653, 4654, 4655 } -- Water ids which script should try to fish.<br />
local FISHING_ROD_ID = 5331 -- Fishing rod id.<br />
local FISHING_ROD_CHARGES = 300 -- How many charges fishing rod has? It will stop after using that many times.<br />
local WAYPOINT_RECHARGE = 'go_recharge' -- Wpt name or index to recharge rod. Leave empty to ignore.<br />
local TRASH = {<br />
&nbsp;&nbsp;&nbsp;&nbsp;{ Item = 5326, Count = 1 }, -- wood<br />
}<br />
<br />
USED_TIMES = getglobal('USED_TIMES')<br />
if USED_TIMES == nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;USED_TIMES = 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;setglobal('USED_TIMES', 0)<br />
end<br />
<br />
if connected() then<br />
&nbsp;&nbsp;&nbsp;&nbsp;if USED_TIMES ~= nil and USED_TIMES &lt; FISHING_ROD_CHARGES then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local player_x = posx()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local player_y = posy()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local player_z = posz()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local tiles = gettiles()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for _, tile in ipairs(tiles) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if math.abs(tile.posx - player_x) &lt;= 7 and math.abs(tile.posy - player_y) &lt;= 5 and tile.posz == player_z then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for __, item in ipairs(tile.items) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if table.find(WATER_IDS, item.id) ~= nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;useitemon(FISHING_ROD_ID, tile.posx, tile.posy, tile.posz)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(800, 1200)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;USED_TIMES = USED_TIMES + 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setglobal('USED_TIMES', USED_TIMES)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;elseif USED_TIMES ~= nil and USED_TIMES &gt;= FISHING_ROD_CHARGES and WAYPOINT_RECHARGE ~= nil and WAYPOINT_RECHARGE ~= '' then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gotolabel(WAYPOINT_RECHARGE)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setsettings('Cavebot/Enabled', true)<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;for _, item in ipairs(TRASH) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if itemcount(item.Item) &gt;= item.Count then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;moveitems(item.Item, ground(posx(), posy(), posz()), '', 100)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(500)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
end</code></div></div><br />
Notice that you must reset the variable "USED_TIMES" after refilling. The script below does that, so you just need to add it on Cavebot -&gt; Action after refilling or walking back to fishing spot.<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>setglobal('USED_TIMES', 0)</code></div></div><br />
<br />
<span style="font-size: Large;" class="mycode_size">Right-click on water</span><br />
This script should be used on servers that you don't need to use a fishing rod, but only right-click directly on water.<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local WATER_IDS = { 618, 619, 620, 622, 623, 624, 625, 626, 627, 628, 629, 4597, 4598, 4599, 4600, 4601, 4602, 4608, 4609, 4610, 4611, 4612, 4613, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4653, 4654, 4655 } -- Water ids which script should try to fish by using right click.<br />
local DELAY_BETWEEN_CLICKS = { Min = 1000, Max = 2000 }<br />
<br />
if connected() then<br />
&nbsp;&nbsp;&nbsp;&nbsp;local player_x = posx()<br />
&nbsp;&nbsp;&nbsp;&nbsp;local player_y = posy()<br />
&nbsp;&nbsp;&nbsp;&nbsp;local player_z = posz()<br />
&nbsp;&nbsp;&nbsp;&nbsp;local tiles = gettiles()<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;local places = { }<br />
&nbsp;&nbsp;&nbsp;&nbsp;for _, tile in ipairs(tiles) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if math.abs(tile.posx - player_x) &lt;= 7 and math.abs(tile.posy - player_y) &lt;= 5 and tile.posz == player_z then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for __, item in ipairs(tile.items) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if table.find(WATER_IDS, item.id) ~= nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table.insert(places, { x = tile.posx, y = tile.posy } )<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;table.shuffle(places)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;for _, place in ipairs(places) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local point = pointfromloc(place.x, place.y, player_z)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if point.x ~= -1 or point.y ~= -1 then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mouserclick(point.x, point.y)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(DELAY_BETWEEN_CLICKS.Min, DELAY_BETWEEN_CLICKS.Max)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end <br />
end</code></div></div><br />
<br />
<span style="font-size: 1pt;" class="mycode_size">keywords: fishing rod, fish, fishing, garbage, trash, drop trash, drop garbage, drop, fish and drop, advanced fishing, wooden rod, mechanical rod</span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Drop Garbage fishing Part two]]></title>
			<link>https://forums.otbots.com/Thread-Drop-Garbage-fishing-Part-two--2326</link>
			<pubDate>Sun, 17 Jul 2022 00:22:07 -0500</pubDate>
			<dc:creator><![CDATA[<a href="https://forums.otbots.com/member.php?action=profile&uid=7633">gamefreak777</a>]]></dc:creator>
			<guid isPermaLink="false">https://forums.otbots.com/Thread-Drop-Garbage-fishing-Part-two--2326</guid>
			<description><![CDATA[<span style="font-family: Courier New, monospace;" class="mycode_font">local Items = {</span><br />
<span style="font-family: Courier New, monospace;" class="mycode_font">    { Item = 3111, Count = 1 }, -- a fishbone<br />
    { Item = 3112, Count = 1 }, -- rotten meat<br />
    { Item = 2894, Count = 1 }, -- a broken flask<br />
    { Item = 3121, Count = 1 }, -- a torn book<br />
    { Item = 3104, Count = 1 }, -- a banana skin<br />
    { Item = 3125, Count = 1 }, -- remains of a fish<br />
}<br />
<br />
for _, item in ipairs(Items) do<br />
    if itemcount(item.Item) &gt;= item.Count then<br />
        moveitems(item.Item, ground(posx(), posy(), posz()), '', 100)<br />
        wait(500)<br />
    end<br />
end</span>]]></description>
			<content:encoded><![CDATA[<span style="font-family: Courier New, monospace;" class="mycode_font">local Items = {</span><br />
<span style="font-family: Courier New, monospace;" class="mycode_font">    { Item = 3111, Count = 1 }, -- a fishbone<br />
    { Item = 3112, Count = 1 }, -- rotten meat<br />
    { Item = 2894, Count = 1 }, -- a broken flask<br />
    { Item = 3121, Count = 1 }, -- a torn book<br />
    { Item = 3104, Count = 1 }, -- a banana skin<br />
    { Item = 3125, Count = 1 }, -- remains of a fish<br />
}<br />
<br />
for _, item in ipairs(Items) do<br />
    if itemcount(item.Item) &gt;= item.Count then<br />
        moveitems(item.Item, ground(posx(), posy(), posz()), '', 100)<br />
        wait(500)<br />
    end<br />
end</span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Drop Garbage fishing]]></title>
			<link>https://forums.otbots.com/Thread-Drop-Garbage-fishing--2319</link>
			<pubDate>Wed, 13 Jul 2022 18:48:23 -0500</pubDate>
			<dc:creator><![CDATA[<a href="https://forums.otbots.com/member.php?action=profile&uid=7633">gamefreak777</a>]]></dc:creator>
			<guid isPermaLink="false">https://forums.otbots.com/Thread-Drop-Garbage-fishing--2319</guid>
			<description><![CDATA[<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local Items = {<br />
    { Item = 2667, Count = 5 }, -- hering<br />
    { Item = 2238, Count = 1 }, -- worn boots<br />
    { Item = 2010, Count = 1 }, -- broken bottle<br />
}<br />
<br />
for , item in ipairs(Items) do<br />
    if itemcount(item.Item) &gt;= item.Count then<br />
        moveitems(item.Item, ground(posx(), posy(), posz()), '', 100)<br />
        wait(500)<br />
    end<br />
end</code></div></div><br />
just gotta change the "items,Count,Name]]></description>
			<content:encoded><![CDATA[<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local Items = {<br />
    { Item = 2667, Count = 5 }, -- hering<br />
    { Item = 2238, Count = 1 }, -- worn boots<br />
    { Item = 2010, Count = 1 }, -- broken bottle<br />
}<br />
<br />
for , item in ipairs(Items) do<br />
    if itemcount(item.Item) &gt;= item.Count then<br />
        moveitems(item.Item, ground(posx(), posy(), posz()), '', 100)<br />
        wait(500)<br />
    end<br />
end</code></div></div><br />
just gotta change the "items,Count,Name]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Detect different items on screen and do something]]></title>
			<link>https://forums.otbots.com/Thread-FREE-Detect-different-items-on-screen-and-do-something--2286</link>
			<pubDate>Sun, 12 Jun 2022 17:09:07 -0500</pubDate>
			<dc:creator><![CDATA[<a href="https://forums.otbots.com/member.php?action=profile&uid=1">Arkilys</a>]]></dc:creator>
			<guid isPermaLink="false">https://forums.otbots.com/Thread-FREE-Detect-different-items-on-screen-and-do-something--2286</guid>
			<description><![CDATA[<span style="font-size: large;" class="mycode_size">Detect different items on screen and do something.</span><br />
<br />
This script is actually splitted in two.<br />
<br />
This script has two working options:<br />
1. If the variable "IS_SAVING_ITEMS" is true then it will just read the items on your screen and save in the table "KNOWN_ITEMS".<br />
2. If the "IS_SAVING_ITEMS" variable is FALSE, then it will check if the items that are on your screen are also in KNOWN_ITEMS. If any different items are found, then the script can play an alert, print a message to the console, use that item and grab that item.<br />
<br />
The script was made to work like this:<br />
1. You set the IS_SAVING_ITEMS variable to true and then run through your cave or something. If you are going to use this script while hunting, then take a trip or two around the cave and then disable the variable.<br />
2. Set variable IS_SAVING_ITEMS to false, so that the script can check if there is a different item and alert you about it.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">I will teach two different waypoints to use this after the code!</span><br />
<br />
Code to make the script read all items in your screen and save to be checked later!<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>setglobal('IS_SAVING_ITEMS', true)</code></div></div><br />
Code to make the script read items in your screen and check if you already found it before!<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>setglobal('IS_SAVING_ITEMS', false)</code></div></div><br />
If you don't IS_SAVING_ITEMS as true or false then the script will consider "IS_SAVING_ITEMS = true" on its very first run<br />
<br />
<br />
<br />
<span style="font-size: x-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Script to use while making runes</span></span><br />
Why? This script will read the items in your screen and save in its first turn... After the first turn then it will check for different items.<br />
It's the perfect situation while making runes.<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local IGNORE_ITEMS = { } -- Add item IDS that you don't want to trigger alarm.<br />
local OPTIONS = {<br />
&nbsp;&nbsp;&nbsp;&nbsp;WorkWithPlayerOnScreen = true, -- If TRUE then script will work whenever there is a player or not. If FALSE then this script will only trigger if no player on screen.<br />
&nbsp;&nbsp;&nbsp;&nbsp;PlayAlert = true, -- Play sound and flash client?<br />
&nbsp;&nbsp;&nbsp;&nbsp;LogConsole = true, -- Log on console?<br />
&nbsp;&nbsp;&nbsp;&nbsp;UseItem = false, -- Use the item that you found on floor. This option will disable cavebot and targeting then enable again.<br />
&nbsp;&nbsp;&nbsp;&nbsp;PickupItem = false, -- Pickup the item that you found on floor.&nbsp;&nbsp;This option will disable cavebot and targeting then enable again.<br />
&nbsp;&nbsp;&nbsp;&nbsp;PauseBot = true, -- Pause bot?<br />
}<br />
<br />
<br />
KNOWN_ITEMS = KNOWN_ITEMS or {}<br />
<br />
local tiles = gettiles()<br />
local player_x = posx()<br />
local player_y = posy()<br />
local player_z = posz()<br />
<br />
if IS_SAVING_ITEMS == nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;IS_SAVING_ITEMS = true<br />
end<br />
<br />
local runemakerEnabled = false<br />
for _, tile in ipairs(tiles) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;if tile.posz == player_z and math.abs(player_x - tile.posx) &lt;= 7 and math.abs(player_y - tile.posy) &lt;= 5 and tile.itemcount &gt; 1 then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for __, item in ipairs(tile.items) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if item.id &gt; 99 and table.find(KNOWN_ITEMS, item.id) == nil and table.find(IGNORE_ITEMS, item.id) == nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if IS_SAVING_ITEMS then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table.insert(KNOWN_ITEMS, item.id)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (OPTIONS.PlayAlert or OPTIONS.LogConsole or OPTIONS.UseItem or OPTIONS.PickupItem) and (OPTIONS.WorkWithPlayerOnScreen or (OPTIONS.WorkWithPlayerOnScreen == false and paround() == 0)) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OPTIONS.PlayAlert then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flashclient()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;playsound('default')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OPTIONS.LogConsole then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print('New item found: ' .. item.id .. ' on x/y/z: ' .. tile.posx .. ', ' .. tile.posy .. ', ' .. tile.posz)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OPTIONS.UseItem or OPTIONS.PickupItem then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;runemakerEnabled = getsettings('Runemaker/Enabled')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if runemakerEnabled then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setsettings('Runemaker/Enabled', false)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OPTIONS.UseItem then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;useitem(item.id, tile.posx, tile.posy, tile.posz)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 800)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OPTIONS.PickupItem then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;moveitems(item.id, '', ground(tile.posx, tile.posy, tile.posz))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 800)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OPTIONS.PauseBot then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pausebot(true)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
end<br />
<br />
if runemakerEnabled then<br />
&nbsp;&nbsp;&nbsp;&nbsp;setsettings('Runemaker/Enabled', true)<br />
end<br />
<br />
IS_SAVING_ITEMS = false</code></div></div><br />
<br />
<span style="font-size: x-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Script to use while hunting/cavebotting</span></span><br />
Why? This script will keep reading the items in your screen and saving until you set "IS_SAVING_ITEMS = false".<br />
So all you need to do is creating an Action waypoint after all your waypoints that walks around the cave with the code:<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>setglobal('IS_SAVING_ITEMS', false)</code></div></div><br />
So once you enable the script below, it will start reading items and after walking on all waypoints around the cavebot, it will hit the Action waypoint that you created and run the code that set "IS_SAVING_ITEMS = false" then the script will start looking for different items and alert you!<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local IGNORE_ITEMS = { } -- Add item IDS that you don't want to trigger alarm.<br />
local OPTIONS = {<br />
&nbsp;&nbsp;&nbsp;&nbsp;WorkWithPlayerOnScreen = true, -- If TRUE then script will work whenever there is a player or not. If FALSE then this script will only trigger if no player on screen.<br />
&nbsp;&nbsp;&nbsp;&nbsp;PlayAlert = true, -- Play sound and flash client?<br />
&nbsp;&nbsp;&nbsp;&nbsp;LogConsole = true, -- Log on console?<br />
&nbsp;&nbsp;&nbsp;&nbsp;UseItem = false, -- Use the item that you found on floor. This option will disable cavebot and targeting then enable again.<br />
&nbsp;&nbsp;&nbsp;&nbsp;PickupItem = false, -- Pickup the item that you found on floor.&nbsp;&nbsp;This option will disable cavebot and targeting then enable again.<br />
&nbsp;&nbsp;&nbsp;&nbsp;PauseBot = true, -- Pause bot?<br />
}<br />
<br />
<br />
KNOWN_ITEMS = KNOWN_ITEMS or {}<br />
<br />
local tiles = gettiles()<br />
local player_x = posx()<br />
local player_y = posy()<br />
local player_z = posz()<br />
<br />
if IS_SAVING_ITEMS == nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;IS_SAVING_ITEMS = true<br />
end<br />
<br />
local cavebotEnabled = false<br />
local targetingEnabled = false<br />
for _, tile in ipairs(tiles) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;if tile.posz == player_z and math.abs(player_x - tile.posx) &lt;= 7 and math.abs(player_y - tile.posy) &lt;= 5 and tile.itemcount &gt; 1 then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for __, item in ipairs(tile.items) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if item.id &gt; 99 and table.find(KNOWN_ITEMS, item.id) == nil and table.find(IGNORE_ITEMS, item.id) == nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if IS_SAVING_ITEMS then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table.insert(KNOWN_ITEMS, item.id)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (OPTIONS.PlayAlert or OPTIONS.LogConsole or OPTIONS.UseItem or OPTIONS.PickupItem) and (OPTIONS.WorkWithPlayerOnScreen or (OPTIONS.WorkWithPlayerOnScreen == false and paround() == 0)) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OPTIONS.PlayAlert then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flashclient()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;playsound('default')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OPTIONS.LogConsole then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print('New item found: ' .. item.id .. ' on x/y/z: ' .. tile.posx .. ', ' .. tile.posy .. ', ' .. tile.posz)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OPTIONS.UseItem or OPTIONS.PickupItem then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cavebotEnabled = getsettings('Cavebot/Enabled')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if cavebotEnabled then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setsettings('Cavebot/Enabled', false)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;targetingEnabled = getsettings('Targeting/Enabled')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if targetingEnabled then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setsettings('Targeting/Enabled', false)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OPTIONS.UseItem then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;useitem(item.id, tile.posx, tile.posy, tile.posz)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 800)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OPTIONS.PickupItem then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;moveitems(item.id, '', ground(tile.posx, tile.posy, tile.posz))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 800)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OPTIONS.PauseBot then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pausebot(true)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
end<br />
<br />
if cavebotEnabled then<br />
&nbsp;&nbsp;&nbsp;&nbsp;setsettings('Cavebot/Enabled', true)<br />
end<br />
if targetingEnabled then<br />
&nbsp;&nbsp;&nbsp;&nbsp;setsettings('Targeting/Enabled', true)<br />
end</code></div></div><br />
<br />
<span style="font-size: x-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Script to use while hunting/cavebotting (Saving items during specific time)</span></span><br />
This script will keep reading the items in your screen and saving for a random time that you setup on DisableSavingStepAfterTime (for example 800 seconds after the script started running) OR until you set "IS_SAVING_ITEMS = false".<br />
<br />
OPTIONS -&gt; DisableSavingStepAfterTime will simply set "IS_SAVING_ITEMS = false" instead of you doing this by another LUA script, which let's this script to be used.<br />
<br />
For most cases OPTIONS -&gt; DisableSavingStepAfterTime is enough, but you have two options to play with depending on complexity of your cavebot script:<br />
1. Setup enough time to walk few rounds or so on OPTIONS -&gt; DisableSavingStepAfterTime. You are able to reset timer to read more items using this code:<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>setglobal('IS_SAVING_ITEMS', nil)</code></div></div>2. Create an Action waypoint after all your waypoints that walks around the cave few times or so, with the code:<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>setglobal('IS_SAVING_ITEMS', false)</code></div></div><br />
So once you enable the script below, it will start reading and saving items for a random time that you setup on OPTIONS -&gt; DisableSavingStepAfterTime then after that time, it will start playing alerts or whatever you setup when finding new items.<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local IGNORE_ITEMS = { } -- Add item IDS that you don't want to trigger alarm.<br />
local OPTIONS = {<br />
&nbsp;&nbsp;&nbsp;&nbsp;WorkWithPlayerOnScreen = true, -- If TRUE then script will work whenever there is a player or not. If FALSE then this script will only trigger if no player on screen.<br />
&nbsp;&nbsp;&nbsp;&nbsp;PlayAlert = true, -- Play sound and flash client?<br />
&nbsp;&nbsp;&nbsp;&nbsp;LogConsole = true, -- Log on console?<br />
&nbsp;&nbsp;&nbsp;&nbsp;UseItem = false, -- Use the item that you found on floor. This option will disable cavebot and targeting then enable again.<br />
&nbsp;&nbsp;&nbsp;&nbsp;PickupItem = false, -- Pickup the item that you found on floor.&nbsp;&nbsp;This option will disable cavebot and targeting then enable again.<br />
&nbsp;&nbsp;&nbsp;&nbsp;PauseBot = true, -- Pause bot?<br />
&nbsp;&nbsp;&nbsp;&nbsp;DisableSavingStepAfterTime = { Min = 300, Max = 600 } -- In SECONDS. Stops reading and saving items after X seconds.<br />
}<br />
<br />
<br />
KNOWN_ITEMS = KNOWN_ITEMS or {}<br />
<br />
local tiles = gettiles()<br />
local player_x = posx()<br />
local player_y = posy()<br />
local player_z = posz()<br />
<br />
if IS_SAVING_ITEMS == nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;IS_SAVING_ITEMS = true<br />
&nbsp;&nbsp;&nbsp;&nbsp;STOP_SAVING_TIME = runningtime() + random(OPTIONS.DisableSavingStepAfterTime.Min, OPTIONS.DisableSavingStepAfterTime.Max)<br />
end<br />
<br />
if IS_SAVING_ITEMS == true and runningtime() &gt;= STOP_SAVING_TIME then<br />
&nbsp;&nbsp;&nbsp;&nbsp;IS_SAVING_ITEMS = false<br />
end <br />
<br />
local cavebotEnabled = false<br />
local targetingEnabled = false<br />
for _, tile in ipairs(tiles) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;if tile.posz == player_z and math.abs(player_x - tile.posx) &lt;= 7 and math.abs(player_y - tile.posy) &lt;= 5 and tile.itemcount &gt; 1 then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for __, item in ipairs(tile.items) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if item.id &gt; 99 and table.find(KNOWN_ITEMS, item.id) == nil and table.find(IGNORE_ITEMS, item.id) == nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if IS_SAVING_ITEMS then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table.insert(KNOWN_ITEMS, item.id)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (OPTIONS.PlayAlert or OPTIONS.LogConsole or OPTIONS.UseItem or OPTIONS.PickupItem) and (OPTIONS.WorkWithPlayerOnScreen or (OPTIONS.WorkWithPlayerOnScreen == false and paround() == 0)) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OPTIONS.PlayAlert then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flashclient()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;playsound('default')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OPTIONS.LogConsole then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print('New item found: ' .. item.id .. ' on x/y/z: ' .. tile.posx .. ', ' .. tile.posy .. ', ' .. tile.posz)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OPTIONS.UseItem or OPTIONS.PickupItem then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cavebotEnabled = getsettings('Cavebot/Enabled')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if cavebotEnabled then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pausewalking(10000)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setsettings('Cavebot/Enabled', false)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;targetingEnabled = getsettings('Targeting/Enabled')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if targetingEnabled then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pausewalking(10000)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setsettings('Targeting/Enabled', false)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if iswalking() then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stop()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(200, 400)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OPTIONS.UseItem then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;useitem(item.id, tile.posx, tile.posy, tile.posz)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 800)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OPTIONS.PickupItem then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;moveitems(item.id, '', ground(tile.posx, tile.posy, tile.posz))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 800)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OPTIONS.PauseBot then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pausebot(true)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
end<br />
<br />
if cavebotEnabled then<br />
&nbsp;&nbsp;&nbsp;&nbsp;pausewalking(0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;setsettings('Cavebot/Enabled', true)<br />
end<br />
if targetingEnabled then<br />
&nbsp;&nbsp;&nbsp;&nbsp;pausewalking(0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;setsettings('Targeting/Enabled', true)<br />
end</code></div></div>]]></description>
			<content:encoded><![CDATA[<span style="font-size: large;" class="mycode_size">Detect different items on screen and do something.</span><br />
<br />
This script is actually splitted in two.<br />
<br />
This script has two working options:<br />
1. If the variable "IS_SAVING_ITEMS" is true then it will just read the items on your screen and save in the table "KNOWN_ITEMS".<br />
2. If the "IS_SAVING_ITEMS" variable is FALSE, then it will check if the items that are on your screen are also in KNOWN_ITEMS. If any different items are found, then the script can play an alert, print a message to the console, use that item and grab that item.<br />
<br />
The script was made to work like this:<br />
1. You set the IS_SAVING_ITEMS variable to true and then run through your cave or something. If you are going to use this script while hunting, then take a trip or two around the cave and then disable the variable.<br />
2. Set variable IS_SAVING_ITEMS to false, so that the script can check if there is a different item and alert you about it.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">I will teach two different waypoints to use this after the code!</span><br />
<br />
Code to make the script read all items in your screen and save to be checked later!<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>setglobal('IS_SAVING_ITEMS', true)</code></div></div><br />
Code to make the script read items in your screen and check if you already found it before!<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>setglobal('IS_SAVING_ITEMS', false)</code></div></div><br />
If you don't IS_SAVING_ITEMS as true or false then the script will consider "IS_SAVING_ITEMS = true" on its very first run<br />
<br />
<br />
<br />
<span style="font-size: x-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Script to use while making runes</span></span><br />
Why? This script will read the items in your screen and save in its first turn... After the first turn then it will check for different items.<br />
It's the perfect situation while making runes.<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local IGNORE_ITEMS = { } -- Add item IDS that you don't want to trigger alarm.<br />
local OPTIONS = {<br />
&nbsp;&nbsp;&nbsp;&nbsp;WorkWithPlayerOnScreen = true, -- If TRUE then script will work whenever there is a player or not. If FALSE then this script will only trigger if no player on screen.<br />
&nbsp;&nbsp;&nbsp;&nbsp;PlayAlert = true, -- Play sound and flash client?<br />
&nbsp;&nbsp;&nbsp;&nbsp;LogConsole = true, -- Log on console?<br />
&nbsp;&nbsp;&nbsp;&nbsp;UseItem = false, -- Use the item that you found on floor. This option will disable cavebot and targeting then enable again.<br />
&nbsp;&nbsp;&nbsp;&nbsp;PickupItem = false, -- Pickup the item that you found on floor.&nbsp;&nbsp;This option will disable cavebot and targeting then enable again.<br />
&nbsp;&nbsp;&nbsp;&nbsp;PauseBot = true, -- Pause bot?<br />
}<br />
<br />
<br />
KNOWN_ITEMS = KNOWN_ITEMS or {}<br />
<br />
local tiles = gettiles()<br />
local player_x = posx()<br />
local player_y = posy()<br />
local player_z = posz()<br />
<br />
if IS_SAVING_ITEMS == nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;IS_SAVING_ITEMS = true<br />
end<br />
<br />
local runemakerEnabled = false<br />
for _, tile in ipairs(tiles) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;if tile.posz == player_z and math.abs(player_x - tile.posx) &lt;= 7 and math.abs(player_y - tile.posy) &lt;= 5 and tile.itemcount &gt; 1 then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for __, item in ipairs(tile.items) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if item.id &gt; 99 and table.find(KNOWN_ITEMS, item.id) == nil and table.find(IGNORE_ITEMS, item.id) == nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if IS_SAVING_ITEMS then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table.insert(KNOWN_ITEMS, item.id)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (OPTIONS.PlayAlert or OPTIONS.LogConsole or OPTIONS.UseItem or OPTIONS.PickupItem) and (OPTIONS.WorkWithPlayerOnScreen or (OPTIONS.WorkWithPlayerOnScreen == false and paround() == 0)) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OPTIONS.PlayAlert then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flashclient()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;playsound('default')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OPTIONS.LogConsole then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print('New item found: ' .. item.id .. ' on x/y/z: ' .. tile.posx .. ', ' .. tile.posy .. ', ' .. tile.posz)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OPTIONS.UseItem or OPTIONS.PickupItem then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;runemakerEnabled = getsettings('Runemaker/Enabled')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if runemakerEnabled then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setsettings('Runemaker/Enabled', false)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OPTIONS.UseItem then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;useitem(item.id, tile.posx, tile.posy, tile.posz)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 800)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OPTIONS.PickupItem then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;moveitems(item.id, '', ground(tile.posx, tile.posy, tile.posz))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 800)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OPTIONS.PauseBot then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pausebot(true)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
end<br />
<br />
if runemakerEnabled then<br />
&nbsp;&nbsp;&nbsp;&nbsp;setsettings('Runemaker/Enabled', true)<br />
end<br />
<br />
IS_SAVING_ITEMS = false</code></div></div><br />
<br />
<span style="font-size: x-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Script to use while hunting/cavebotting</span></span><br />
Why? This script will keep reading the items in your screen and saving until you set "IS_SAVING_ITEMS = false".<br />
So all you need to do is creating an Action waypoint after all your waypoints that walks around the cave with the code:<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>setglobal('IS_SAVING_ITEMS', false)</code></div></div><br />
So once you enable the script below, it will start reading items and after walking on all waypoints around the cavebot, it will hit the Action waypoint that you created and run the code that set "IS_SAVING_ITEMS = false" then the script will start looking for different items and alert you!<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local IGNORE_ITEMS = { } -- Add item IDS that you don't want to trigger alarm.<br />
local OPTIONS = {<br />
&nbsp;&nbsp;&nbsp;&nbsp;WorkWithPlayerOnScreen = true, -- If TRUE then script will work whenever there is a player or not. If FALSE then this script will only trigger if no player on screen.<br />
&nbsp;&nbsp;&nbsp;&nbsp;PlayAlert = true, -- Play sound and flash client?<br />
&nbsp;&nbsp;&nbsp;&nbsp;LogConsole = true, -- Log on console?<br />
&nbsp;&nbsp;&nbsp;&nbsp;UseItem = false, -- Use the item that you found on floor. This option will disable cavebot and targeting then enable again.<br />
&nbsp;&nbsp;&nbsp;&nbsp;PickupItem = false, -- Pickup the item that you found on floor.&nbsp;&nbsp;This option will disable cavebot and targeting then enable again.<br />
&nbsp;&nbsp;&nbsp;&nbsp;PauseBot = true, -- Pause bot?<br />
}<br />
<br />
<br />
KNOWN_ITEMS = KNOWN_ITEMS or {}<br />
<br />
local tiles = gettiles()<br />
local player_x = posx()<br />
local player_y = posy()<br />
local player_z = posz()<br />
<br />
if IS_SAVING_ITEMS == nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;IS_SAVING_ITEMS = true<br />
end<br />
<br />
local cavebotEnabled = false<br />
local targetingEnabled = false<br />
for _, tile in ipairs(tiles) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;if tile.posz == player_z and math.abs(player_x - tile.posx) &lt;= 7 and math.abs(player_y - tile.posy) &lt;= 5 and tile.itemcount &gt; 1 then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for __, item in ipairs(tile.items) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if item.id &gt; 99 and table.find(KNOWN_ITEMS, item.id) == nil and table.find(IGNORE_ITEMS, item.id) == nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if IS_SAVING_ITEMS then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table.insert(KNOWN_ITEMS, item.id)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (OPTIONS.PlayAlert or OPTIONS.LogConsole or OPTIONS.UseItem or OPTIONS.PickupItem) and (OPTIONS.WorkWithPlayerOnScreen or (OPTIONS.WorkWithPlayerOnScreen == false and paround() == 0)) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OPTIONS.PlayAlert then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flashclient()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;playsound('default')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OPTIONS.LogConsole then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print('New item found: ' .. item.id .. ' on x/y/z: ' .. tile.posx .. ', ' .. tile.posy .. ', ' .. tile.posz)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OPTIONS.UseItem or OPTIONS.PickupItem then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cavebotEnabled = getsettings('Cavebot/Enabled')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if cavebotEnabled then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setsettings('Cavebot/Enabled', false)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;targetingEnabled = getsettings('Targeting/Enabled')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if targetingEnabled then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setsettings('Targeting/Enabled', false)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OPTIONS.UseItem then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;useitem(item.id, tile.posx, tile.posy, tile.posz)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 800)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OPTIONS.PickupItem then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;moveitems(item.id, '', ground(tile.posx, tile.posy, tile.posz))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 800)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OPTIONS.PauseBot then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pausebot(true)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
end<br />
<br />
if cavebotEnabled then<br />
&nbsp;&nbsp;&nbsp;&nbsp;setsettings('Cavebot/Enabled', true)<br />
end<br />
if targetingEnabled then<br />
&nbsp;&nbsp;&nbsp;&nbsp;setsettings('Targeting/Enabled', true)<br />
end</code></div></div><br />
<br />
<span style="font-size: x-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Script to use while hunting/cavebotting (Saving items during specific time)</span></span><br />
This script will keep reading the items in your screen and saving for a random time that you setup on DisableSavingStepAfterTime (for example 800 seconds after the script started running) OR until you set "IS_SAVING_ITEMS = false".<br />
<br />
OPTIONS -&gt; DisableSavingStepAfterTime will simply set "IS_SAVING_ITEMS = false" instead of you doing this by another LUA script, which let's this script to be used.<br />
<br />
For most cases OPTIONS -&gt; DisableSavingStepAfterTime is enough, but you have two options to play with depending on complexity of your cavebot script:<br />
1. Setup enough time to walk few rounds or so on OPTIONS -&gt; DisableSavingStepAfterTime. You are able to reset timer to read more items using this code:<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>setglobal('IS_SAVING_ITEMS', nil)</code></div></div>2. Create an Action waypoint after all your waypoints that walks around the cave few times or so, with the code:<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>setglobal('IS_SAVING_ITEMS', false)</code></div></div><br />
So once you enable the script below, it will start reading and saving items for a random time that you setup on OPTIONS -&gt; DisableSavingStepAfterTime then after that time, it will start playing alerts or whatever you setup when finding new items.<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local IGNORE_ITEMS = { } -- Add item IDS that you don't want to trigger alarm.<br />
local OPTIONS = {<br />
&nbsp;&nbsp;&nbsp;&nbsp;WorkWithPlayerOnScreen = true, -- If TRUE then script will work whenever there is a player or not. If FALSE then this script will only trigger if no player on screen.<br />
&nbsp;&nbsp;&nbsp;&nbsp;PlayAlert = true, -- Play sound and flash client?<br />
&nbsp;&nbsp;&nbsp;&nbsp;LogConsole = true, -- Log on console?<br />
&nbsp;&nbsp;&nbsp;&nbsp;UseItem = false, -- Use the item that you found on floor. This option will disable cavebot and targeting then enable again.<br />
&nbsp;&nbsp;&nbsp;&nbsp;PickupItem = false, -- Pickup the item that you found on floor.&nbsp;&nbsp;This option will disable cavebot and targeting then enable again.<br />
&nbsp;&nbsp;&nbsp;&nbsp;PauseBot = true, -- Pause bot?<br />
&nbsp;&nbsp;&nbsp;&nbsp;DisableSavingStepAfterTime = { Min = 300, Max = 600 } -- In SECONDS. Stops reading and saving items after X seconds.<br />
}<br />
<br />
<br />
KNOWN_ITEMS = KNOWN_ITEMS or {}<br />
<br />
local tiles = gettiles()<br />
local player_x = posx()<br />
local player_y = posy()<br />
local player_z = posz()<br />
<br />
if IS_SAVING_ITEMS == nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;IS_SAVING_ITEMS = true<br />
&nbsp;&nbsp;&nbsp;&nbsp;STOP_SAVING_TIME = runningtime() + random(OPTIONS.DisableSavingStepAfterTime.Min, OPTIONS.DisableSavingStepAfterTime.Max)<br />
end<br />
<br />
if IS_SAVING_ITEMS == true and runningtime() &gt;= STOP_SAVING_TIME then<br />
&nbsp;&nbsp;&nbsp;&nbsp;IS_SAVING_ITEMS = false<br />
end <br />
<br />
local cavebotEnabled = false<br />
local targetingEnabled = false<br />
for _, tile in ipairs(tiles) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;if tile.posz == player_z and math.abs(player_x - tile.posx) &lt;= 7 and math.abs(player_y - tile.posy) &lt;= 5 and tile.itemcount &gt; 1 then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for __, item in ipairs(tile.items) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if item.id &gt; 99 and table.find(KNOWN_ITEMS, item.id) == nil and table.find(IGNORE_ITEMS, item.id) == nil then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if IS_SAVING_ITEMS then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table.insert(KNOWN_ITEMS, item.id)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (OPTIONS.PlayAlert or OPTIONS.LogConsole or OPTIONS.UseItem or OPTIONS.PickupItem) and (OPTIONS.WorkWithPlayerOnScreen or (OPTIONS.WorkWithPlayerOnScreen == false and paround() == 0)) then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OPTIONS.PlayAlert then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flashclient()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;playsound('default')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OPTIONS.LogConsole then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print('New item found: ' .. item.id .. ' on x/y/z: ' .. tile.posx .. ', ' .. tile.posy .. ', ' .. tile.posz)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OPTIONS.UseItem or OPTIONS.PickupItem then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cavebotEnabled = getsettings('Cavebot/Enabled')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if cavebotEnabled then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pausewalking(10000)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setsettings('Cavebot/Enabled', false)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;targetingEnabled = getsettings('Targeting/Enabled')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if targetingEnabled then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pausewalking(10000)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setsettings('Targeting/Enabled', false)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if iswalking() then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stop()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(200, 400)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OPTIONS.UseItem then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;useitem(item.id, tile.posx, tile.posy, tile.posz)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 800)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OPTIONS.PickupItem then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;moveitems(item.id, '', ground(tile.posx, tile.posy, tile.posz))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(400, 800)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if OPTIONS.PauseBot then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pausebot(true)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
end<br />
<br />
if cavebotEnabled then<br />
&nbsp;&nbsp;&nbsp;&nbsp;pausewalking(0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;setsettings('Cavebot/Enabled', true)<br />
end<br />
if targetingEnabled then<br />
&nbsp;&nbsp;&nbsp;&nbsp;pausewalking(0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;setsettings('Targeting/Enabled', true)<br />
end</code></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Pause Bot if mana LOSS is different than X]]></title>
			<link>https://forums.otbots.com/Thread-FREE-Pause-Bot-if-mana-LOSS-is-different-than-X--2282</link>
			<pubDate>Sun, 12 Jun 2022 13:14:51 -0500</pubDate>
			<dc:creator><![CDATA[<a href="https://forums.otbots.com/member.php?action=profile&uid=1">Arkilys</a>]]></dc:creator>
			<guid isPermaLink="false">https://forums.otbots.com/Thread-FREE-Pause-Bot-if-mana-LOSS-is-different-than-X--2282</guid>
			<description><![CDATA[<span style="font-size: large;" class="mycode_size">Pause Bot if mana LOSS is different than X.</span><br />
<br />
I didn't tested the codes that i will post, but people can use it as "start" to adapt for its own needs.<br />
<br />
Check for mana LOSS. If your mana's DECREASED value was different than listed values <span style="font-weight: bold;" class="mycode_b">since last run</span>, it will play a sound, flash client and pause bot.<br />
MANA_LOSS_VALUES = { 20, 25 } means it will check if your lost mana value is equal to 20 or 25. If it's not then it will pause bot.<br />
ACCEPTABLE_MISSING_VALUE set script to doesn't triggers if the missing value is equal to the table value minus this value.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Pay attention</span>: The verification is based on last time the script run, so watch your Persistent Interval.<br />
Example: If persistent interval is 1000ms then it will work like this: (SCRIPT RUNS) -&gt; waits 1000ms -&gt; (SCRIPT RUNS). So the script will check if you lost X mana in last seconds (1000ms), that means if you set a high Persistent Interval then it may not work properly. TEST IT BEFORE LEAVING AFK!<br />
<br />
If you are casting exura only then setup MANA_LOSS_VALUES = { 25 }. Because you would lose 25 mana after casting exura.<br />
If you are casting exura and utevo lux then setup MANA_LOSS_VALUES = { 20, 25 }. Because you would lose 20 or 25 mana after casting those spells.<br />
<br />
ACCEPTABLE_MISSING_VALUE: This serves as a safety parameter because of the persistent delay.<br />
Example: Without this parameter, if your spell requires 20 mana and after you cast it, you suddenly heals 1 mana, you would lose 19 mana, not 20, so it would trigger pause. But if you setup ACCEPTABLE_MISSING_VALUE = 2, the script would not trigger pause if you lost 20, 19 or 18 mana. <br />
Think that it's like a mistake margin!<br />
<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local MANA_LOSS_VALUES = { 20, 25 } -- If mana LOSS different than this values then pause. You should insert the amount of required mana to cast your spells.<br />
local ACCEPTABLE_MISSING_VALUE = 2 -- Doesnt triggers if the missing value is equal to the table value minus this value. This serves as a safety parameter because of the persistent delay. If your spell requires 20 mana, but you lose 19 or 18 (20 - 1 and 20 - 2), this is acceptable. <br />
<br />
if connected() then<br />
    LAST_MANA = LAST_MANA or mp()<br />
    local current_mana = mp()<br />
    local lostMana = LAST_MANA - current_mana<br />
<br />
    if lostMana &gt; 0 then<br />
        local flag = false<br />
        for _, possibleManaLoss in ipairs(MANA_LOSS_VALUES) do<br />
            if type(possibleManaLoss) == 'string' then<br />
                possibleManaLoss = tonumber(possibleManaLoss)<br />
            end<br />
            if type(possibleManaLoss) == 'number' and (lostMana == possibleManaLoss or (lostMana &gt;= (possibleManaLoss - ACCEPTABLE_MISSING_VALUE) and lostMana &lt;= possibleManaLoss)) then<br />
                flag = true<br />
                break<br />
            end <br />
        end<br />
        if not flag then<br />
            playsound('default')<br />
            flashclient()<br />
            pausebot(true)<br />
        end<br />
    end<br />
<br />
    LAST_MANA = current_mana<br />
else<br />
    LAST_MANA = nil<br />
end</code></div></div>]]></description>
			<content:encoded><![CDATA[<span style="font-size: large;" class="mycode_size">Pause Bot if mana LOSS is different than X.</span><br />
<br />
I didn't tested the codes that i will post, but people can use it as "start" to adapt for its own needs.<br />
<br />
Check for mana LOSS. If your mana's DECREASED value was different than listed values <span style="font-weight: bold;" class="mycode_b">since last run</span>, it will play a sound, flash client and pause bot.<br />
MANA_LOSS_VALUES = { 20, 25 } means it will check if your lost mana value is equal to 20 or 25. If it's not then it will pause bot.<br />
ACCEPTABLE_MISSING_VALUE set script to doesn't triggers if the missing value is equal to the table value minus this value.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Pay attention</span>: The verification is based on last time the script run, so watch your Persistent Interval.<br />
Example: If persistent interval is 1000ms then it will work like this: (SCRIPT RUNS) -&gt; waits 1000ms -&gt; (SCRIPT RUNS). So the script will check if you lost X mana in last seconds (1000ms), that means if you set a high Persistent Interval then it may not work properly. TEST IT BEFORE LEAVING AFK!<br />
<br />
If you are casting exura only then setup MANA_LOSS_VALUES = { 25 }. Because you would lose 25 mana after casting exura.<br />
If you are casting exura and utevo lux then setup MANA_LOSS_VALUES = { 20, 25 }. Because you would lose 20 or 25 mana after casting those spells.<br />
<br />
ACCEPTABLE_MISSING_VALUE: This serves as a safety parameter because of the persistent delay.<br />
Example: Without this parameter, if your spell requires 20 mana and after you cast it, you suddenly heals 1 mana, you would lose 19 mana, not 20, so it would trigger pause. But if you setup ACCEPTABLE_MISSING_VALUE = 2, the script would not trigger pause if you lost 20, 19 or 18 mana. <br />
Think that it's like a mistake margin!<br />
<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local MANA_LOSS_VALUES = { 20, 25 } -- If mana LOSS different than this values then pause. You should insert the amount of required mana to cast your spells.<br />
local ACCEPTABLE_MISSING_VALUE = 2 -- Doesnt triggers if the missing value is equal to the table value minus this value. This serves as a safety parameter because of the persistent delay. If your spell requires 20 mana, but you lose 19 or 18 (20 - 1 and 20 - 2), this is acceptable. <br />
<br />
if connected() then<br />
    LAST_MANA = LAST_MANA or mp()<br />
    local current_mana = mp()<br />
    local lostMana = LAST_MANA - current_mana<br />
<br />
    if lostMana &gt; 0 then<br />
        local flag = false<br />
        for _, possibleManaLoss in ipairs(MANA_LOSS_VALUES) do<br />
            if type(possibleManaLoss) == 'string' then<br />
                possibleManaLoss = tonumber(possibleManaLoss)<br />
            end<br />
            if type(possibleManaLoss) == 'number' and (lostMana == possibleManaLoss or (lostMana &gt;= (possibleManaLoss - ACCEPTABLE_MISSING_VALUE) and lostMana &lt;= possibleManaLoss)) then<br />
                flag = true<br />
                break<br />
            end <br />
        end<br />
        if not flag then<br />
            playsound('default')<br />
            flashclient()<br />
            pausebot(true)<br />
        end<br />
    end<br />
<br />
    LAST_MANA = current_mana<br />
else<br />
    LAST_MANA = nil<br />
end</code></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Cast spell every X seconds and Pause Bot if you lost mana NOT DUE SPELL]]></title>
			<link>https://forums.otbots.com/Thread-FREE-Cast-spell-every-X-seconds-and-Pause-Bot-if-you-lost-mana-NOT-DUE-SPELL--2281</link>
			<pubDate>Sun, 12 Jun 2022 12:57:42 -0500</pubDate>
			<dc:creator><![CDATA[<a href="https://forums.otbots.com/member.php?action=profile&uid=1">Arkilys</a>]]></dc:creator>
			<guid isPermaLink="false">https://forums.otbots.com/Thread-FREE-Cast-spell-every-X-seconds-and-Pause-Bot-if-you-lost-mana-NOT-DUE-SPELL--2281</guid>
			<description><![CDATA[<span style="font-size: large;" class="mycode_size">Cast spell every X seconds and Pause Bot if you lost mana NOT DUE SPELL.</span><br />
<br />
This script will check if you have enough mana every X seconds, which is based on "DELAY" range that will be a sorted value between that range you setup.<br />
The default settings below will check if you have enough mana ("MANA_TO_CAST") every 10-25 seconds (this is random) to cast "exura".<br />
If takes like 15 seconds to heal enough mana to cast the spell you want then setup those values like Min 15, max 18.<br />
<br />
It also checks if you lost mana NOT DUE SPELL to pause bot.<br />
<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local SPELL = 'exura'<br />
local SPELL_MANA = 25 -- Required mp to cast spell.<br />
local MANA_TO_CAST = 34 -- Cast spell only if mp is higher or equal than this value.<br />
local DELAY = { Min = 10, Max = 25 } -- In seconds. How often check for mana and cast spell? If takes 10 seconds to heal enough mana then you can setup values like Min = 10, Max = 12.<br />
local MANA_LOSS = 1 -- If mana LOSS is higher than this value then pause. This is ignored when casting spell above.<br />
<br />
LAST_MANA = LAST_MANA or mp()<br />
NEXT_SPELL = NEXT_SPELL or runningtime()<br />
<br />
if connected() then<br />
&nbsp;&nbsp;&nbsp;&nbsp;if runningtime() &gt;= NEXT_SPELL and cancast() then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if mp() &gt;= MANA_TO_CAST then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cast(SPELL)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(300, 500)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LAST_MANA = mp()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NEXT_SPELL = runningtime() + random(DELAY.Min, DELAY.Max)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (LAST_MANA - mp()) &gt; MANA_LOSS then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;playsound('default')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flashclient()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pausebot(true)<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;LAST_MANA = mp()<br />
else<br />
&nbsp;&nbsp;&nbsp;&nbsp;LAST_MANA = nil<br />
end</code></div></div><br />
This will cast spell only after X time, but if you don't have enough mana after X time, it will cast as soon you reach it.<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local SPELL = 'exura'<br />
local SPELL_MANA = 25 -- Required mp to cast spell.<br />
local MANA_TO_CAST = 34 -- Cast spell only if mp is higher or equal than this value.<br />
local DELAY = { Min = 10, Max = 25 } -- In seconds. How often check for mana and cast spell? If takes 10 seconds to heal enough mana then you can setup values like Min = 10, Max = 12.<br />
local MANA_LOSS = 1 -- If mana LOSS is higher than this value then pause. This is ignored when casting spell above.<br />
<br />
LAST_MANA = LAST_MANA or mp()<br />
NEXT_SPELL = NEXT_SPELL or runningtime()<br />
<br />
if connected() then<br />
&nbsp;&nbsp;&nbsp;&nbsp;if runningtime() &gt;= NEXT_SPELL and cancast() and mp() &gt;= MANA_TO_CAST then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cast(SPELL)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(300, 500)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LAST_MANA = mp()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NEXT_SPELL = runningtime() + random(DELAY.Min, DELAY.Max)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (LAST_MANA - mp()) &gt; MANA_LOSS then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;playsound('default')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flashclient()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pausebot(true)<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;LAST_MANA = mp()<br />
else<br />
&nbsp;&nbsp;&nbsp;&nbsp;LAST_MANA = nil<br />
end</code></div></div>]]></description>
			<content:encoded><![CDATA[<span style="font-size: large;" class="mycode_size">Cast spell every X seconds and Pause Bot if you lost mana NOT DUE SPELL.</span><br />
<br />
This script will check if you have enough mana every X seconds, which is based on "DELAY" range that will be a sorted value between that range you setup.<br />
The default settings below will check if you have enough mana ("MANA_TO_CAST") every 10-25 seconds (this is random) to cast "exura".<br />
If takes like 15 seconds to heal enough mana to cast the spell you want then setup those values like Min 15, max 18.<br />
<br />
It also checks if you lost mana NOT DUE SPELL to pause bot.<br />
<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local SPELL = 'exura'<br />
local SPELL_MANA = 25 -- Required mp to cast spell.<br />
local MANA_TO_CAST = 34 -- Cast spell only if mp is higher or equal than this value.<br />
local DELAY = { Min = 10, Max = 25 } -- In seconds. How often check for mana and cast spell? If takes 10 seconds to heal enough mana then you can setup values like Min = 10, Max = 12.<br />
local MANA_LOSS = 1 -- If mana LOSS is higher than this value then pause. This is ignored when casting spell above.<br />
<br />
LAST_MANA = LAST_MANA or mp()<br />
NEXT_SPELL = NEXT_SPELL or runningtime()<br />
<br />
if connected() then<br />
&nbsp;&nbsp;&nbsp;&nbsp;if runningtime() &gt;= NEXT_SPELL and cancast() then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if mp() &gt;= MANA_TO_CAST then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cast(SPELL)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(300, 500)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LAST_MANA = mp()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NEXT_SPELL = runningtime() + random(DELAY.Min, DELAY.Max)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (LAST_MANA - mp()) &gt; MANA_LOSS then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;playsound('default')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flashclient()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pausebot(true)<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;LAST_MANA = mp()<br />
else<br />
&nbsp;&nbsp;&nbsp;&nbsp;LAST_MANA = nil<br />
end</code></div></div><br />
This will cast spell only after X time, but if you don't have enough mana after X time, it will cast as soon you reach it.<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local SPELL = 'exura'<br />
local SPELL_MANA = 25 -- Required mp to cast spell.<br />
local MANA_TO_CAST = 34 -- Cast spell only if mp is higher or equal than this value.<br />
local DELAY = { Min = 10, Max = 25 } -- In seconds. How often check for mana and cast spell? If takes 10 seconds to heal enough mana then you can setup values like Min = 10, Max = 12.<br />
local MANA_LOSS = 1 -- If mana LOSS is higher than this value then pause. This is ignored when casting spell above.<br />
<br />
LAST_MANA = LAST_MANA or mp()<br />
NEXT_SPELL = NEXT_SPELL or runningtime()<br />
<br />
if connected() then<br />
&nbsp;&nbsp;&nbsp;&nbsp;if runningtime() &gt;= NEXT_SPELL and cancast() and mp() &gt;= MANA_TO_CAST then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cast(SPELL)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(300, 500)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LAST_MANA = mp()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NEXT_SPELL = runningtime() + random(DELAY.Min, DELAY.Max)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (LAST_MANA - mp()) &gt; MANA_LOSS then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;playsound('default')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flashclient()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pausebot(true)<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;&nbsp;&nbsp;LAST_MANA = mp()<br />
else<br />
&nbsp;&nbsp;&nbsp;&nbsp;LAST_MANA = nil<br />
end</code></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Cast spell every X seconds]]></title>
			<link>https://forums.otbots.com/Thread-FREE-Cast-spell-every-X-seconds--2280</link>
			<pubDate>Sun, 12 Jun 2022 12:51:42 -0500</pubDate>
			<dc:creator><![CDATA[<a href="https://forums.otbots.com/member.php?action=profile&uid=1">Arkilys</a>]]></dc:creator>
			<guid isPermaLink="false">https://forums.otbots.com/Thread-FREE-Cast-spell-every-X-seconds--2280</guid>
			<description><![CDATA[<span style="font-size: large;" class="mycode_size">Cast spell every X seconds.</span><br />
<br />
This script will check if you have enough mana every X seconds, which is based on "DELAY" range that will be a sorted value between that range you setup.<br />
The default settings below will check if you have enough mana ("MANA_TO_CAST") every 10-25 seconds (this is random) to cast "exura".<br />
If takes like 15 seconds to heal enough mana to cast the spell you want then setup those values like Min 15, max 18.<br />
<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local SPELL = 'exura'<br />
local MANA_TO_CAST = 25 -- Cast spell only if mp is higher or equal than this value.<br />
local DELAY = { Min = 10, Max = 25 } -- In seconds. How often should it check for your mana and cast spell? If it takes between 10-12 seconds to heal enough mana then setup those values like Min 10, max 12.<br />
<br />
if connected() (NEXT_SPELL == nil or runningtime() &gt;= NEXT_SPELL) and cancast() and mp() &gt;= MANA_TO_CAST then<br />
&nbsp;&nbsp;&nbsp;&nbsp;cast(SPELL)<br />
&nbsp;&nbsp;&nbsp;&nbsp;wait(300, 500)<br />
&nbsp;&nbsp;&nbsp;&nbsp;NEXT_SPELL = runningtime() + random(DELAY.Min, DELAY.Max)<br />
end</code></div></div>]]></description>
			<content:encoded><![CDATA[<span style="font-size: large;" class="mycode_size">Cast spell every X seconds.</span><br />
<br />
This script will check if you have enough mana every X seconds, which is based on "DELAY" range that will be a sorted value between that range you setup.<br />
The default settings below will check if you have enough mana ("MANA_TO_CAST") every 10-25 seconds (this is random) to cast "exura".<br />
If takes like 15 seconds to heal enough mana to cast the spell you want then setup those values like Min 15, max 18.<br />
<br />
<div class="codeblock"><!--<div class="title" style="user-select: none;">Code:</div>--><div class="title" style="user-select: none;"><a href="#" onclick="selectCode(this); return false;">(COPY)</a></div><div class="body" dir="ltr"><code>local SPELL = 'exura'<br />
local MANA_TO_CAST = 25 -- Cast spell only if mp is higher or equal than this value.<br />
local DELAY = { Min = 10, Max = 25 } -- In seconds. How often should it check for your mana and cast spell? If it takes between 10-12 seconds to heal enough mana then setup those values like Min 10, max 12.<br />
<br />
if connected() (NEXT_SPELL == nil or runningtime() &gt;= NEXT_SPELL) and cancast() and mp() &gt;= MANA_TO_CAST then<br />
&nbsp;&nbsp;&nbsp;&nbsp;cast(SPELL)<br />
&nbsp;&nbsp;&nbsp;&nbsp;wait(300, 500)<br />
&nbsp;&nbsp;&nbsp;&nbsp;NEXT_SPELL = runningtime() + random(DELAY.Min, DELAY.Max)<br />
end</code></div></div>]]></content:encoded>
		</item>
	</channel>
</rss>