I read the title of your post and opened it to see who flamed you for it. I don't think you are done catching S@#$ for this one, but I do see the value in GoTo's, or at least I am not advanced enough to get around using them and therefore am still a loser.
The one use for them that I can't figure out a workaround for is for when I return a negative result from a gumpwait or target cursor wait and I need to go back to the beginning of a sub with multiple clicks like this one:
Sub SetCraftGump
finditem %TinkersTools C_ , #BackpackID
if #findcnt < 1
{
display Get a tinker tool in your backpack and hit play in the EUO window
pause
}
if #findcnt < 2
gosub MakeTinkersTools
finditem %CurrentToolType C_ , #BackpackID
if #findcnt < 2
gosub MakeTwoTools
CraftLoop:
finditem %CurrentResource C_ , #BackpackID
if #findstack < %CurrentResourceCnt
Gosub MoveResources %CurrentResource %CurrentResourceCnt %ResourceSecure #BackpackID
Finditem %CurrentToolType C_ , #backpackid
Set #lobjectid #findid
Event macro 17 0
gosub waitforgump %cwin
if ! #result
Goto CraftLoop
gosub offsetClick %CurrentResourceXClick1 %CurrentResourceYClick1
gosub waitforgump %cwin
if ! #result
Goto CraftLoop
gosub offsetClick %CurrentResourceXClick2 %CurrentResourceYClick2
gosub waitforgump %cwin
if ! #result
Goto CraftLoop
gosub offsetClick %CurrentItemxclick1 %CurrentItemyclick1
gosub waitforgump %cwin
if ! #result
Goto CraftLoop
gosub OffsetClick %CurrentItemxclick2 %CurrentItemyclick2
gosub waitforgump %cwin
if ! #result
Goto CraftLoop
If %xclick2 = 380
{
gosub OffsetClick %CurrentItemxclick3 %CurrentItemyclick3
gosub waitforgump %cwin
if ! #result
Goto CraftLoop
}
Gosub OffsetClick 30 450
wait 5
Return
I can't think of an efficient way to replace the GoTo's in this sub. However, I am willing to embrace my ignorance and learn from my betters if someone wants to teach me something...