2821
Gold Farming / Re: TrailMyx's Full Auto Fisherman
« on: May 07, 2012, 08:30:23 PM »
I am curious if the auto-defense will work for PK's in a fel ruleset? I am thinking about trying this on Siege.
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
;===================================================================
; Script Name: Crisis SOS Chest Fisher
; Author: Crisis
; Version: 3.0
; Client Tested with: 7.0.87.1
; EUO version tested with: 1.6.0 (version 335)
; Shard OSI / FS: OSI
; Release Date: 05/07/2012
; Revision Date: 10/12/2020
; Purpose:
; Completely automates the operation of fishing up treasure chests when you are in the correct area of your SOS.
; Works great with Kal In Ex's SOS Master
;
; Features:
; . Automatically fishes until you fish up a treasure chest. Cuts bones after fishing up chest.
;
; Revisions:
; . Added bone cutting sub
; . Cleaned up code
; . Added Chest Sorter (sorts magery scrolls into the 8 circles, necro scrolls, reagents, and gems into storage containers)
; . Added Item Mover (moves everything from one container to another to combine chests to allow for more time on the water)
; . Added Bag Clean Up (empties into the trashcan for cleanup points)
; . Fixed Buttons
;
; Requirements:
; . You should be on a boat in the area of your SOS.
; . Must have the SOS and fishing pole in your backpack.
; . You must hard code in your sorting containers.
; . You must have your backpack open when you start fishing.
;
; Possible Updates:
; .
;
; Special Thanks:
; . TrailMyx for helping me iron out the kinks and for TrailMyx's Advanced Journal Handler and Chest Sorter
; . _C2_ for the Menu Tutorial http://www.scriptuo.com/index.php?topic=1535.0
; . Gaderian for help with the new EUO menu changes and cleaning the code up some!
;
; Changes that you will need to make will be marked like this:
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
; Watch for these changes and make them accordingly
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
;
; Copyright: 2020 Crisis
;===================================================================
; Script Name: Crisis SOS Chest Fisher
; Author: Crisis
; Version: 1.0c
; Shard OSI / FS: OSI
; Revision Date: 05/07/2012
; Purpose:
; Completely automates the operation of fishing up treasure chests when you are in the correct area of your SOS.
; Works great with Kal In Ex's SOS Master
;
; Features:
; . Automatically fishes until you fish up a treasure chest.
;
; Requirements:
; . You should be on a boat in the area of your SOS
; . Must have the SOS in your backpack
;
; Special Thanks:
; TrailMyx for helping me iron out the kinks and for TrailMyx's Advanced Journal Handler
;===================================================================
gosub TM_AdvJournalSync FISHING
finditem XHF_KDF C_ , #BACKPACKID
if #FINDKIND = -1
{
finditem XHF_KDF C_ , #CHARID
if #FINDKIND = -1
{
display ok How can you fish without your fishing pole?
halt
}
}
set %fishingpole #FINDID
SOSFishLoop:
findItem XHF 1
set #LObjectID #FindID
set #LTargetKind 2
set #LTargetX 0 + #CharPosX
set #LTargetY 4 + #CharPosY
event macro 17 0
target
event macro 22 0
set %fishtimeout #SCNT + 9
target 11s
gosub TM_AdvJournalScan FISHING VALID_ADVANCE chest_from_the_depths_of_the_ocean
if #RESULT = #TRUE
{
display ok Found one!
goto EndSOSFishLoop
}
goto SOSFishLoop
EndSOSFishLoop:
Halt
;-------------------------------------------------------------------------------
sub TM_AdvJournalGetTrigger
namespace push
namespace local TM_AdvJS_ , %1
set #RESULT !trigger
namespace pop
set !TM_FunctionCalled #TRUE
return #RESULT
;-------------------------------------------------------------------------------
; %1 - Journal Name
; %2 - #LPC setting (optional)
; Brings !_jindex up to the most recent #journal entry
sub TM_AdvJournalSync
namespace push
namespace local TM_AdvJS_ , %1
set !_jindex #jindex + 1
if %0 > 1
set !lpc_set %2
namespace pop
set !TM_FunctionCalled #TRUE
return
;-------------------------------------------------------------------------------
; %1 - Journal Name
; %2 - NONE, ADVANCE , ( _VALID ) - advances jindex pointer, anything else
; %3, %4, %5, etc strings to match
; returns #TRUE for match, #FALSE for no match
; Will not advance !_jindex pointer to allow for scanning journal history for more than one search.
; Also searches for : , #SPC in journal entry to be sure someone isn't spamming the text
; About %2 arguments:
; NONE: defaults to basic journal scan (no SPAM checking, no #jindex pointer copy advancing)
; ADVANCE: no spam checking, advances #jindex copy
; VALID: invokes SPAM filtering, no advance of #jindex copy
; VALID_ADVANCE, VALIDADVANCE, ADVANCE_VALID, etc.: invokes SPAM filtering, advances of #jindex copy
sub TM_AdvJournalScan
namespace push
namespace local TM_AdvJS_ , %1
set !args %2
set !temp_lpc #LPC
if !lpc_set = N/A
set #LPC 1000
else
set #LPC !lpc_set
set !num_args %0
set !first_arg 3
set !sampled_jindex #JINDEX
if !_jindex = N/A
set !_jindex !sampled_jindex
if !charname = N/A
{
set !charname #CHARNAME
AdvJournalScan_loop1:
str pos !charname #SPC
if #STRRES <> 0
{
set !val #STRRES - 1
str left !charname !val
set !left #STRRES
set !val !val + 1
str del !charname 1 !val
set !charname !left , _ , #STRRES
goto AdvJournalScan_loop1
}
}
set !index !first_arg
repeat
set !temp_jindex !_jindex
set !text % . !index
while !temp_jindex <= !sampled_jindex
{
scanjournal !temp_jindex
str pos #JOURNAL !charname 1
set !namepos #STRRES
str count #JOURNAL !charname
set !namecnt #STRRES
str pos #JOURNAL :_ 1
set !smcpos #STRRES
str pos #JOURNAL !text 1
set !textpos #STRRES
if !textpos < !smcpos && !smcpos <> 0 || !smcpos = 1 || :_ notin #JOURNAL || VALID notin !args
set !pass #TRUE
else
set !pass #FALSE
if ( !text in #journal && ( ( !namepos = 1 && !namecnt <= 1 ) || !pass ) )
{
set !temp_jindex !temp_jindex + 1
if ADVANCE in !args
set !_jindex !temp_jindex
set !trigger !text
set #LPC !temp_lpc
namespace pop
set !TM_FunctionCalled #TRUE
return #TRUE
}
set !temp_jindex !temp_jindex + 1
}
set !index !index + 1
until !index - !first_arg > !num_args - !first_arg
set %10 !sampled_jindex - !_jindex
set %10 %1 , _ , %10 ; for debugging purposes
set #LPC !temp_lpc
set TM_AdvJournalGetTrigger #FALSE
namespace pop
set !TM_FunctionCalled #TRUE
return #FALSE
;-------------------------------------------------------------------------------
gosub TM_AdvJournalSync FISHING
finditem XHF_KDF C_ , #BACKPACKID
if #FINDKIND = -1
{
finditem XHF_KDF C_ , #CHARID
if #FINDKIND = -1
{
display ok How can you fish without your fishing pole?
halt
}
}
set %fishingpole #FINDID
SOSFishLoop:
findItem XHF 1
set #LObjectID #FindID
set #LTargetKind 2
set #LTargetX 0 + #CharPosX
set #LTargetY 4 + #CharPosY
event macro 17 0
target
event macro 22 0
set %fishtimeout #SCNT + 9
target 12s
gosub TM_AdvJournalScan FISHING VALID chest_from_the_depths_of_the_ocean
if #RESULT = #TRUE
{
TM_AdvJournalSync Fishing
goto endSOSFish
}
goto SOSFishLoop
EndSOSFishLoop:
Halt
;=================================================================
;------------------------ Call interface -----------------------
;=================================================================
set !TM_FunctionCalled #FALSE
if %0 = 1
gosub %1
if %0 = 2
gosub %1 %2
if %0 = 3
gosub %1 %2 %3
if %0 = 4
gosub %1 %2 %3 %4
if %0 = 5
gosub %1 %2 %3 %4 %5
if %0 = 6
gosub %1 %2 %3 %4 %5 %6
if %0 = 7
gosub %1 %2 %3 %4 %5 %6 %7
if %0 = 8
gosub %1 %2 %3 %4 %5 %6 %7 %8
if %0 = 9
gosub %1 %2 %3 %4 %5 %6 %7 %8 %9
if %0 = 10
gosub %1 %2 %3 %4 %5 %6 %7 %8 %9 %10
if %0 = 11
gosub %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11
if %0 > 11
{
display ok Too many arguments for "call", edit file.
stop
}
if !TM_FunctionCalled = #TRUE
exit
if %0 = N/A
display ok You may not run this script directly.
else
display ok Function " , %1 , " not found.
stop
;-------------------------------------------------------------------------------
sub TM_AdvJournalGetTrigger
namespace push
namespace local TM_AdvJS_ , %1
set #RESULT !trigger
namespace pop
set !TM_FunctionCalled #TRUE
return #RESULT
;-------------------------------------------------------------------------------
; %1 - Journal Name
; %2 - #LPC setting (optional)
; Brings !_jindex up to the most recent #journal entry
sub TM_AdvJournalSync
namespace push
namespace local TM_AdvJS_ , %1
set !_jindex #jindex + 1
if %0 > 1
set !lpc_set %2
namespace pop
set !TM_FunctionCalled #TRUE
return
;-------------------------------------------------------------------------------
; %1 - Journal Name
; %2 - NONE, ADVANCE , ( _VALID ) - advances jindex pointer, anything else
; %3, %4, %5, etc strings to match
; returns #TRUE for match, #FALSE for no match
; Will not advance !_jindex pointer to allow for scanning journal history for more than one search.
; Also searches for : , #SPC in journal entry to be sure someone isn't spamming the text
; About %2 arguments:
; NONE: defaults to basic journal scan (no SPAM checking, no #jindex pointer copy advancing)
; ADVANCE: no spam checking, advances #jindex copy
; VALID: invokes SPAM filtering, no advance of #jindex copy
; VALID_ADVANCE, VALIDADVANCE, ADVANCE_VALID, etc.: invokes SPAM filtering, advances of #jindex copy
sub TM_AdvJournalScan
namespace push
namespace local TM_AdvJS_ , %1
set !args %2
set !temp_lpc #LPC
if !lpc_set = N/A
set #LPC 1000
else
set #LPC !lpc_set
set !num_args %0
set !first_arg 3
set !sampled_jindex #JINDEX
if !_jindex = N/A
set !_jindex !sampled_jindex
if !charname = N/A
{
set !charname #CHARNAME
AdvJournalScan_loop1:
str pos !charname #SPC
if #STRRES <> 0
{
set !val #STRRES - 1
str left !charname !val
set !left #STRRES
set !val !val + 1
str del !charname 1 !val
set !charname !left , _ , #STRRES
goto AdvJournalScan_loop1
}
}
set !index !first_arg
repeat
set !temp_jindex !_jindex
set !text % . !index
while !temp_jindex <= !sampled_jindex
{
scanjournal !temp_jindex
str pos #JOURNAL !charname 1
set !namepos #STRRES
str count #JOURNAL !charname
set !namecnt #STRRES
str pos #JOURNAL :_ 1
set !smcpos #STRRES
str pos #JOURNAL !text 1
set !textpos #STRRES
if !textpos < !smcpos && !smcpos <> 0 || !smcpos = 1 || :_ notin #JOURNAL || VALID notin !args
set !pass #TRUE
else
set !pass #FALSE
if ( !text in #journal && ( ( !namepos = 1 && !namecnt <= 1 ) || !pass ) )
{
set !temp_jindex !temp_jindex + 1
if ADVANCE in !args
set !_jindex !temp_jindex
set !trigger !text
set #LPC !temp_lpc
namespace pop
set !TM_FunctionCalled #TRUE
return #TRUE
}
set !temp_jindex !temp_jindex + 1
}
set !index !index + 1
until !index - !first_arg > !num_args - !first_arg
set %10 !sampled_jindex - !_jindex
set %10 %1 , _ , %10 ; for debugging purposes
set #LPC !temp_lpc
set TM_AdvJournalGetTrigger #FALSE
namespace pop
set !TM_FunctionCalled #TRUE
return #FALSE
;-------------------------------------------------------------------------------
finditem XHF_KDF C_ , #BACKPACKID ; this first part is borrowed from TM
if #FINDKIND = -1
{
finditem XHF_KDF C_ , #CHARID
if #FINDKIND = -1
{
display ok How can you fish without your fishing pole?
halt
}
}
set %fishingpole #FINDID
findItem XHF 1
set #LObjectID #FindID
set #LTargetKind 2
set #LTargetX 2 + #CharPosX
set #LTargetY #CharPosY
event macro 17 0
target
event macro 22 0
set %fishtimeout #SCNT + 9
target 12s
{
if You_pull_up_a_heavy_chest_from_the_depths_of_the_ocean in #journal
halt
}
return