Official ScriptUO EasyUO Scripts > Script Debug

Alchemy Assistant

(1/4) > >>

Guadah:
Aloha!

Last night I woke up, and believe it or not, I was actually dreaming about scripting.  So as I attempted to go back to sleep, I had this code running through my head, and really wanted to get it down.  So I came downstairs at 3:45 am, and wrote out an Alchemy Assistant.  A Potion Crafter I suppose you can call it.

The menu I am quite proud of, its better then any I've done in the past, and am using your (TM) Persistant Variable Subs in it as well.  I attempted to test this out this morning (4 hours of writing), but it does not pull any reagents out of the resource chest.

I went over it a few times, but do not see the error, and I was wondering if you, or anybody could give it a eye-over, and if you could run that nice little Syntax Error finder thing, to bring up the error's in code that I tend to have.

I must say, this is the best script I've written to date, and I'm pretty happy with how the flow works.  Give me some harsh feedback please, its the way I learn best.


--- Code: ---set %alch_tool RQF
set %alch_tools_needed 5
set %tink_tool GTL_KTL_JTL
set %tink_tools_needed 2
set %bottle WUF
set %ingot_type ENK
set %board TLK
set %size1 130
set %size2 100
set %pot_to_make 100
set %amount_to_make 200
set %resources AVF_WUF_UUF_ZUF_XWS_YWS_YUF_OUF_XUF_TUF_YZF_NUF_KZF_KUF_RZF_MZF_JUF_WZF_SZF_JZF_ENK_TZF_YZF
set %catposx 30
set %selposx 230
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
; XXXXXXXXXXXXXXX MENU DESIGN XXXXXXXXXXXXXXX
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
menu window title menu test
menu window color silver
menu window size 290 %size1
menu font bgcolor gray
menu shape potionbg 5 5 280 65 3 7 1 Black 7 Gray
menu font align right
menu text title 130 12 Resource Container:
menu text title 130 42 Potion Container:
menu font bgcolor silver
menu font align left
menu button target_resource_bag 230 10 30 24 Set
menu button target_dump_bag 230 40 30 24 Set
menu edit resource_bag 135 10 85 %resource_bag
menu edit dump_bag 135 40 85 %dump_bag
menu button start 170 75 55 25 Start
menu button quit 230 75 55 25 Quit
menu font size 9
menu font color marron
menu text titles 20 80 Select Type
menu text titles 115 80 Amount
menu button add_more 175 105 20 20 +
menu button remove 200 105 20 20 -
menu font size 8
menu font color black
menu combo create %pot_to_make 5 %size2 100
menu combo add %pot_to_make Total Refreshment
menu combo add %pot_to_make Greater Agility
menu combo add %pot_to_make Night Sight
menu combo add %pot_to_make Greater Heal
menu combo add %pot_to_make Greater Strength
menu combo add %pot_to_make Poison
menu combo add %pot_to_make Greater Poison
menu combo add %pot_to_make Deadly Poison
menu combo add %pot_to_make Greater Cure
menu combo add %pot_to_make Greater Explosion
menu combo add %pot_to_make Greater Conflagration
menu combo add %pot_to_make Greater Confusion Blast
menu combo add %pot_to_make Invisibility
menu combo add %pot_to_make Parasitic
menu combo add %pot_to_make Darkglow
menu edit %amount_to_make 110 %size2 50 0
menu show
gosub TM_GetPersistantVariable resource_bag
menu set resource_bag #result
menu get resource_bag
set %ResourceChest #menures
set #lobjectid %ResourceChest
event macro 17 0
 wait 10
contpos 610 440
 wait 10
gosub TM_GetPersistantVariable dump_bag
menu set dump_bag #result
menu get dump_bag
menuloop:
if #menuButton = target_resource_bag
   {
   set #targCurs 1
set_resource_bag:
    if #targCurs = 1
     goto set_resource_bag
   Set %resource_bag #ltargetid
   Set #lobjectid %resource_bag
   Event Macro 17 0
    wait 10
   contpos 610 440
    wait 10
   menu font size 10
   menu set resource_bag %resource_bag
   gosub TM_SetPersistantVariable resource_bag %resource_bag
   set #menubutton N/A
   }
if #menuButton = target_dump_bag
   {
   set #targCurs 1
set_dump_bag:
    if #targCurs = 1
     goto set_dump_bag
   Set %dump_bag #ltargetid
   menu font size 10
   menu set dump_bag %dump_bag
   gosub TM_SetPersistantVariable dump_bag %dump_bag
   set #menubutton N/A
   }
if #menubutton = add_more
   {
   gosub add_more
   set #menubutton N/A
   }
if #menubutton = remove
   {
   gosub remove
   set #menubutton N/A
   }
if #menubutton = Start
   {
   set #menubutton N/A
   set %size2 30
   set %pot_to_make 100
   set %amount_to_make 200
   gosub loop
   }
if #menubutton = Quit
   {
   set #menubutton N/A
   display ok Thank you for using my script.$
           +$
           +Script is Halting$
   menu hide
   halt
   }
goto menuloop
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
; XXXXXXXX SUB TO ADD ANOTHER OPTION XXXXXXXX
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
sub add_more
set %size1 ( %size1 + 25 )
set %size2 ( %size2 + 25 )
set %pot_to_make ( %pot_to_make + 1 )
set %amount_to_make ( %amount_to_make + 1 )
menu window size 290 %size1
menu font size 8
menu font color black
menu combo create %pot_to_make 5 %size2 100
menu combo add %pot_to_make Total Refreshment
menu combo add %pot_to_make Greater Agility
menu combo add %pot_to_make Night Sight
menu combo add %pot_to_make Greater Heal
menu combo add %pot_to_make Greater Strength
menu combo add %pot_to_make Poison
menu combo add %pot_to_make Greater Poison
menu combo add %pot_to_make Deadly Poison
menu combo add %pot_to_make Greater Cure
menu combo add %pot_to_make Greater Explosion
menu combo add %pot_to_make Greater Conflagration
menu combo add %pot_to_make Greater Confusion Blast
menu combo add %pot_to_make Invisibility
menu combo add %pot_to_make Parasitic
menu combo add %pot_to_make Darkglow
menu edit %amount_to_make 110 %size2 50 0
return
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
; XXXXXXXXX SUB TO REMOVE AN OPTION XXXXXXXXX
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
sub remove
if %pot_to_make = 100
   return
set %size1 ( %size1 - 25 )
set %size2 ( %size2 - 25 )
menu window size 290 %size1
menu delete %pot_to_make
menu delete %amount_to_make
set %pot_to_make ( %pot_to_make - 1 )
set %amount_to_make ( %amount_to_make - 1 )
return
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
; XXXXXXXXXXX MAIN LOOP FOR SCRIPT XXXXXXXXXX
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
sub loop
crafting_loop:
gosub clear_pack
gosub check_tool %alch_tool %alch_tools_needed %catposx 110 %selposx 90
gosub check_tool %tink_tool %tink_tools_needed %catposx 110 %selposx 130
gosub potion_init
gosub grab_resources %bottle %reagent1 %reagent2
gosub craft_potion %alch_tool %alch_tools_needed %catposx %catposy %selposx %selposy
goto crafting_loop
return
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
; XXXX SUB TO FIND AND RETURN RESOURCES XXXXX
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
sub clear_pack
finditem %resources C_ , #backpackid
for %i 1 #findcnt
    {
    finditem %resources C_ , #backpackid
    exevent drag #findid #findstack
     wait 10
    exevent dropc %resource_bag
     wait 15
    }
return
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
; XXXXXX SUB TO CHECK AND CRAFT TOOLS XXXXXXX
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
sub check_tool
finditem %1 C_ , #backpackid
if #findcnt >= %2
   return
set %to_make ( %2 - #findcnt ) ; Sets a number of tools to make
set #lobjectid #findid
; --------------------------------
; This section looks for ingots, then pulls 100
finditem %ingot_type C_ , %resource_bag
for #findindex 1 #findcnt
    {
    event property #findid
    if copper || shadow || bronze || agapite || gold || verite || valorite in #property
     ignoreitem #findid
    if ingots in #property && shadow notin #property
    set %ingots #findid    ; Finds only Iron Ingots
    }
finditem %ingots C_ , %resource_bag
if #findcnt < 20
   {
   display ok You are out of ingots.$
           +Please get more and resetart script.
   gosub return_resources
   halt
   }
finditem %ingots C_ , %resource_bag
exevent drag #findid 100
 wait 10
exevent dropc #backpackid
 wait 15
; --------------------------------
; Makes tool required, and loops %to_make (number of tools needed) times
event macro 22 0
  gosub gumpwait
 set %x #contposx + %3
 set %y #contposy + %4
 click %x %y ; Selects Category
  gosub gumpwait
for %i 1 %to_make
 {
 set %x #contposx + %5
 set %y #contposy + %6
 click %x %y ; Selects Tool
  gosub gumpwait
 }
gosub clear_pack
finditem %1 C_ , #backpackid
if #findcnt < %2
   gosub check_tool
return
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
; XXXX SETS ITEMS NEEDED FOR EACH POTION XXXX
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
sub potion_init
menu get %pot_to_make
if #menuRes = 1 ; Total Refreshment
   {
   set %reagent1 KUF ; Black Pearl
   set %reagent2 N/A ; N/A
   set %required_reagent1 5
   set %required_reagent2 N/A
   set %catposy 90
   set %selposy 90
   menu getnum %amount_to_make
   if #menures = 0
      {
      menu delete %amount_to_make
      menu font color red
      menu text done 120 %size2 Done!
      set %size2 ( %size2 + 25 )
      set %pot_to_make ( %pot_to_make + 1 )
      set %amount_to_make ( %amount_to_make + 1 )
      return
      }
   set %amount #menures
   }
if #menuRes = 2 ; Greater Agility
   {
   set %reagent1 JUF ; Bloodmoss
   set %reagent2 N/A ; N/A
   set %required_reagent1 3
   set %required_reagent2 N/A
   set %catposy 110
   set %selposy 90
   menu getnum %amount_to_make
   if #menures = 0
      {
      menu delete %amount_to_make
      menu font color red
      menu text done 120 %size2 Done!
      set %size2 ( %size2 + 25 )
      set %pot_to_make ( %pot_to_make + 1 )
      set %amount_to_make ( %amount_to_make + 1 )
      return
      }
   set %amount #menures
   }
if #menuRes = 3 ; Night Sight
   {
   set %reagent1 RZF ; Spider's Silk
   set %reagent2 N/A ; N/A
   set %required_reagent1 1
   set %required_reagent2 N/A
   set %catposy 130
   set %selposy 70
   menu getnum %amount_to_make
   if #menures = 0
      {
      menu delete %amount_to_make
      menu font color red
      menu text done 120 %size2 Done!
      set %size2 ( %size2 + 25 )
      set %pot_to_make ( %pot_to_make + 1 )
      set %amount_to_make ( %amount_to_make + 1 )
      return
      }
   set %amount #menures
   }
if #menuRes = 4 ; Greater Heal
   {
   set %reagent1 JZF ; Ginseng
   set %reagent2 N/A ; N/A
   set %required_reagent1 7
   set %required_reagent2 N/A
   set %catposy 150
   set %selposy 110
   menu getnum %amount_to_make
   if #menures = 0
      {
      menu delete %amount_to_make
      menu font color red
      menu text done 120 %size2 Done!
      set %size2 ( %size2 + 25 )
      set %pot_to_make ( %pot_to_make + 1 )
      set %amount_to_make ( %amount_to_make + 1 )
      return
      }
   set %amount #menures
   }
if #menuRes = 5 ; Greater Strength
   {
   set %reagent1 MZF ; Mandrake Root
   set %reagent2 N/A ; N/A
   set %required_reagent1 5
   set %required_reagent2 N/A
   set %catposy 170
   set %selposy 90
   menu getnum %amount_to_make
   if #menures = 0
      {
      menu delete %amount_to_make
      menu font color red
      menu text done 120 %size2 Done!
      set %size2 ( %size2 + 25 )
      set %pot_to_make ( %pot_to_make + 1 )
      set %amount_to_make ( %amount_to_make + 1 )
      return
      }
   set %amount #menures
   }
if #menuRes = 6 ; Poison
   {
   set %reagent1 WZF ; Nightshade
   set %reagent2 N/A ; N/A
   set %required_reagent1 2
   set %required_reagent2 N/A
   set %catposy 190
   set %selposy 90
   menu getnum %amount_to_make
   if #menures = 0
      {
      menu delete %amount_to_make
      menu font color red
      menu text done 120 %size2 Done!
      set %size2 ( %size2 + 25 )
      set %pot_to_make ( %pot_to_make + 1 )
      set %amount_to_make ( %amount_to_make + 1 )
      return
      }
   set %amount #menures
   }
if #menuRes = 7 ; Greater Poison
   {
   set %reagent1 WZF ; Nightshade
   set %reagent2 N/A ; N/A
   set %required_reagent1 4
   set %required_reagent2 N/A
   set %catposy 190
   set %selposy 110
   menu getnum %amount_to_make
   if #menures = 0
      {
      menu delete %amount_to_make
      menu font color red
      menu text done 120 %size2 Done!
      set %size2 ( %size2 + 25 )
      set %pot_to_make ( %pot_to_make + 1 )
      set %amount_to_make ( %amount_to_make + 1 )
      return
      }
   set %amount #menures
   }
if #menuRes = 8 ; Deadly Poison
   {
   set %reagent1 WZF ; Nightshade
   set %reagent2 N/A ; N/A
   set %required_reagent1 8
   set %required_reagent2 N/A
   set %catposy 190
   set %selposy 130
   menu getnum %amount_to_make
   if #menures = 0
      {
      menu delete %amount_to_make
      menu font color red
      menu text done 120 %size2 Done!
      set %size2 ( %size2 + 25 )
      set %pot_to_make ( %pot_to_make + 1 )
      set %amount_to_make ( %amount_to_make + 1 )
      return
      }
   set %amount #menures
   }
if #menuRes = 9 ; Greater Cure
   {
   set %reagent1 KZF ; Garlic
   set %reagent2 N/A ; N/A
   set %required_reagent1 6
   set %required_reagent2 N/A
   set %catposy 210
   set %selposy 110
   menu getnum %amount_to_make
   if #menures = 0
      {
      menu delete %amount_to_make
      menu font color red
      menu text done 120 %size2 Done!
      set %size2 ( %size2 + 25 )
      set %pot_to_make ( %pot_to_make + 1 )
      set %amount_to_make ( %amount_to_make + 1 )
      return
      }
   set %amount #menures
   }
if #menuRes = 10 ; Greater Explosion
   {
   set %reagent1 WZF ; Nightshade
   set %reagent2 N/A ; N/A
   set %required_reagent1 10
   set %required_reagent2 N/A
   set %catposy 230
   set %selposy 110
   menu getnum %amount_to_make
   if #menures = 0
      {
      menu delete %amount_to_make
      menu font color red
      menu text done 120 %size2 Done!
      set %size2 ( %size2 + 25 )
      set %pot_to_make ( %pot_to_make + 1 )
      set %amount_to_make ( %amount_to_make + 1 )
      return
      }
   set %amount #menures
   }
if #menuRes = 11 ; Greater Conflagration
   {
   set %reagent1 TZF ; Grave Dust
   set %reagent2 N/A ; N/A
   set %required_reagent1 10
   set %required_reagent2 N/A
   set %catposy 250
   set %selposy 90
   menu getnum %amount_to_make
   if #menures = 0
      {
      menu delete %amount_to_make
      menu font color red
      menu text done 120 %size2 Done!
      set %size2 ( %size2 + 25 )
      set %pot_to_make ( %pot_to_make + 1 )
      set %amount_to_make ( %amount_to_make + 1 )
      return
      }
   set %amount #menures
   }
if #menuRes = 12 ; Greater Confusion Blast
   {
   set %reagent1 YZF ; Pig Iron
   set %reagent2 N/A ; N/A
   set %required_reagent1 10
   set %required_reagent2 N/A
   set %catposy 250
   set %selposy 130
   menu getnum %amount_to_make
   if #menures = 0
      {
      menu delete %amount_to_make
      menu font color red
      menu text done 120 %size2 Done!
      set %size2 ( %size2 + 25 )
      set %pot_to_make ( %pot_to_make + 1 )
      set %amount_to_make ( %amount_to_make + 1 )
      return
      }
   set %amount #menures
   }
if #menuRes = 13 ; Invisibility
   {
   set %reagent1 JUF ; Bloodmoss
   set %reagent2 WZF ; Nightshade
   set %required_reagent1 4
   set %required_reagent2 3
   set %catposy 270
   set %selposy 70
   menu getnum %amount_to_make
   if #menures = 0
      {
      menu delete %amount_to_make
      menu font color red
      menu text done 120 %size2 Done!
      set %size2 ( %size2 + 25 )
      set %pot_to_make ( %pot_to_make + 1 )
      set %amount_to_make ( %amount_to_make + 1 )
      return
      }
   set %amount #menures
   }
if #menuRes = 14 ; Parasitic
   {
   set %reagent1 YWS ; Parasitic Plant
   set %reagent2 N/A ; N/A
   set %required_reagent1 5
   set %required_reagent2 N/A
   set %catposy 270
   set %selposy 90
   menu getnum %amount_to_make
   if #menures = 0
      {
      menu delete %amount_to_make
      menu font color red
      menu text done 120 %size2 Done!
      set %size2 ( %size2 + 25 )
      set %pot_to_make ( %pot_to_make + 1 )
      set %amount_to_make ( %amount_to_make + 1 )
      return
      }
   set %amount #menures
   }
if #menuRes = 15 ; Darkglow
   {
   set %reagent1 XWS ; Luminescent Fungi
   set %reagent2 N/A ; N/A
   set %required_reagent1 5
   set %required_reagent2 N/A
   set %catposy 270
   set %selposy 110
   menu getnum %amount_to_make
   if #menures = 0
      {
      menu delete %amount_to_make
      menu font color red
      menu text done 120 %size2 Done!
      set %size2 ( %size2 + 25 )
      set %pot_to_make ( %pot_to_make + 1 )
      set %amount_to_make ( %amount_to_make + 1 )
      return
      }
   set %amount #menures
   }
return
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
; XXXXX SUB TO FIND AND GRAB RESOURCES XXXXXX
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
sub grab_resources
if %amount >= 100
   set %grab 100
if %amount < 100
   set %grab %amount
; Finds and grabs Bottles
finditem %bottle C_ , %resource_bag
exevent drag #findid %grab
 wait 10
exevent dropc #backpackid
 wait 15
; Finds and grabs Reagent #1
finditem %1 C_ , %resource_bag
exevent drag #findid 1000
 wait 10
exevent dropc #backpackid
 wait 15
; Finds and grabs Reagent #2
finditem %2 C_ , %resource_bag
exevent drag #findid 1000
 wait 10
exevent dropc #backpackid
 wait 15
return
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
; XXXXXXXX SUB FOR MAKING THE POTIONS XXXXXXX
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
sub craft_potion
repeat
finditem %reagent1 C_ , #backpackid
if #findcnt < %required_reagent
   gosub grab_more_resources %reagent1
finditem %1 C_ , #backpackid
if #findcnt < %2
   gosub check_tool %alch_tool %alch_tools_needed %catposx 110 %selposx 90
event macro 22 0
  gosub gumpwait
 set %x #contposx + %3
 set %y #contposy + %4
 click %x %y ; Category
  gosub gumpwait
 set %x #contposx + %5
 set %y #contposy + %6
 click %x %y ; Selection (Potion)
  gosub gumpwait
finditem %bottle C_ , #backpackid
until #findcnt = 0
gosub clear_pack
set %amount ( %amount - %grab )
if %amount = 0
   {
   menu delete %amount_to_make
   menu font color red
   menu text done 120 %size2 Done!
   set %size2 ( %size2 + 25 )
   set %pot_to_make ( %pot_to_make + 1 )
   set %amount_to_make ( %amount_to_make + 1 )
   return
   }
return
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
; XXXX GUMP WAIT SUB, ENSURES GUMP IS UP XXXX
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
sub gumpwait
set %timer #SCNT + 5
 repeat
  until #CONTNAME = generic_gump || #SCNT > %timer
if #contname <> generic_gump
   {
   event macro 17 0
   }
Return
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
; XXX TRAILMYX'S PERSISTANT VARIABLE SUBS XXX
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
sub TM_GetPersistantVariable
  set #RESULT %1 , _ , #CHARID
  set #RESULT * . #RESULT
return #RESULT
sub TM_SetPersistantVariable
  set #RESULT %1 , _ , #CHARID
  set * . #RESULT %2
return











--- End code ---

TrailMyx:
Here's the output from the syntax checker:


--- Code: ---Method count: 55
Command count: 55
*** Pass 1 - Label accounting:
*** Warning - GOSUB return_resources - Line 225 has no matching SUBroutine
*** Warning - GOSUB grab_more_resources - Line 608 has no matching SUBroutine
Subroutine labels = 11
Tag labels = 4
44 Code block(s).
2 Warnings(s) encountered.
*** Pass 2 - Execution [SYNTAXCHECK]
0 Error(s) encountered.

--- End code ---

Guadah:
Not bad for writing it off the top of my head in the wee hours of the morning.  I corrected those two warnings, here it is again.

I'd love it if anybody could take a gander at it, to see if its written correctly.

--- Code: ---set %alch_tool RQF
set %alch_tools_needed 5
set %tink_tool GTL_KTL_JTL
set %tink_tools_needed 2
set %bottle WUF
set %ingot_type ENK
set %board TLK
set %size1 130
set %size2 100
set %pot_to_make 100
set %amount_to_make 200
set %resources AVF_WUF_UUF_ZUF_XWS_YWS_YUF_OUF_XUF_TUF_YZF_NUF_KZF_KUF_RZF_MZF_JUF_WZF_SZF_JZF_ENK_TZF_YZF
set %catposx 30
set %selposx 230
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
; XXXXXXXXXXXXXXX MENU DESIGN XXXXXXXXXXXXXXX
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
menu window title menu test
menu window color silver
menu window size 290 %size1
menu font bgcolor gray
menu shape potionbg 5 5 280 65 3 7 1 Black 7 Gray
menu font align right
menu text title 130 12 Resource Container:
menu text title 130 42 Potion Container:
menu font bgcolor silver
menu font align left
menu button target_resource_bag 230 10 30 24 Set
menu button target_dump_bag 230 40 30 24 Set
menu edit resource_bag 135 10 85 %resource_bag
menu edit dump_bag 135 40 85 %dump_bag
menu button start 170 75 55 25 Start
menu button quit 230 75 55 25 Quit
menu font size 9
menu font color marron
menu text titles 20 80 Select Type
menu text titles 115 80 Amount
menu button add_more 175 105 20 20 +
menu button remove 200 105 20 20 -
menu font size 8
menu font color black
menu combo create %pot_to_make 5 %size2 100
menu combo add %pot_to_make Total Refreshment
menu combo add %pot_to_make Greater Agility
menu combo add %pot_to_make Night Sight
menu combo add %pot_to_make Greater Heal
menu combo add %pot_to_make Greater Strength
menu combo add %pot_to_make Poison
menu combo add %pot_to_make Greater Poison
menu combo add %pot_to_make Deadly Poison
menu combo add %pot_to_make Greater Cure
menu combo add %pot_to_make Greater Explosion
menu combo add %pot_to_make Greater Conflagration
menu combo add %pot_to_make Greater Confusion Blast
menu combo add %pot_to_make Invisibility
menu combo add %pot_to_make Parasitic
menu combo add %pot_to_make Darkglow
menu edit %amount_to_make 110 %size2 50 0
menu show
gosub TM_GetPersistantVariable resource_bag
menu set resource_bag #result
menu get resource_bag
set %ResourceChest #menures
set #lobjectid %ResourceChest
event macro 17 0
 wait 10
contpos 610 440
 wait 10
gosub TM_GetPersistantVariable dump_bag
menu set dump_bag #result
menu get dump_bag
menuloop:
if #menuButton = target_resource_bag
   {
   set #targCurs 1
set_resource_bag:
    if #targCurs = 1
     goto set_resource_bag
   Set %resource_bag #ltargetid
   Set #lobjectid %resource_bag
   Event Macro 17 0
    wait 10
   contpos 610 440
    wait 10
   menu font size 10
   menu set resource_bag %resource_bag
   gosub TM_SetPersistantVariable resource_bag %resource_bag
   set #menubutton N/A
   }
if #menuButton = target_dump_bag
   {
   set #targCurs 1
set_dump_bag:
    if #targCurs = 1
     goto set_dump_bag
   Set %dump_bag #ltargetid
   menu font size 10
   menu set dump_bag %dump_bag
   gosub TM_SetPersistantVariable dump_bag %dump_bag
   set #menubutton N/A
   }
if #menubutton = add_more
   {
   gosub add_more
   set #menubutton N/A
   }
if #menubutton = remove
   {
   gosub remove
   set #menubutton N/A
   }
if #menubutton = Start
   {
   set #menubutton N/A
   set %size2 100
   set %pot_to_make 100
   set %amount_to_make 200
   gosub loop
   }
if #menubutton = Quit
   {
   set #menubutton N/A
   display ok Thank you for using my script.$
           +$
           +Script is Halting$
   menu hide
   halt
   }
goto menuloop
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
; XXXXXXXX SUB TO ADD ANOTHER OPTION XXXXXXXX
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
sub add_more
set %size1 ( %size1 + 25 )
set %size2 ( %size2 + 25 )
set %pot_to_make ( %pot_to_make + 1 )
set %amount_to_make ( %amount_to_make + 1 )
menu window size 290 %size1
menu font size 8
menu font color black
menu combo create %pot_to_make 5 %size2 100
menu combo add %pot_to_make Total Refreshment
menu combo add %pot_to_make Greater Agility
menu combo add %pot_to_make Night Sight
menu combo add %pot_to_make Greater Heal
menu combo add %pot_to_make Greater Strength
menu combo add %pot_to_make Poison
menu combo add %pot_to_make Greater Poison
menu combo add %pot_to_make Deadly Poison
menu combo add %pot_to_make Greater Cure
menu combo add %pot_to_make Greater Explosion
menu combo add %pot_to_make Greater Conflagration
menu combo add %pot_to_make Greater Confusion Blast
menu combo add %pot_to_make Invisibility
menu combo add %pot_to_make Parasitic
menu combo add %pot_to_make Darkglow
menu edit %amount_to_make 110 %size2 50 0
return
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
; XXXXXXXXX SUB TO REMOVE AN OPTION XXXXXXXXX
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
sub remove
if %pot_to_make = 100
   return
set %size1 ( %size1 - 25 )
set %size2 ( %size2 - 25 )
menu window size 290 %size1
menu delete %pot_to_make
menu delete %amount_to_make
set %pot_to_make ( %pot_to_make - 1 )
set %amount_to_make ( %amount_to_make - 1 )
return
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
; XXXXXXXXXXX MAIN LOOP FOR SCRIPT XXXXXXXXXX
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
sub loop
crafting_loop:
gosub clear_pack
gosub check_tool %alch_tool %alch_tools_needed %catposx 110 %selposx 90
gosub check_tool %tink_tool %tink_tools_needed %catposx 110 %selposx 130
gosub potion_init
gosub grab_resources %bottle %reagent1 %reagent2
gosub craft_potion %alch_tool %alch_tools_needed %catposx %catposy %selposx %selposy
goto crafting_loop
return
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
; XXXX SUB TO FIND AND RETURN RESOURCES XXXXX
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
sub clear_pack
finditem %resources C_ , #backpackid
for %i 1 #findcnt
    {
    finditem %resources C_ , #backpackid
    exevent drag #findid #findstack
     wait 10
    exevent dropc %resource_bag
     wait 15
    }
return
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
; XXXXXX SUB TO CHECK AND CRAFT TOOLS XXXXXXX
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
sub check_tool
finditem %1 C_ , #backpackid
if #findcnt >= %2
   return
set %to_make ( %2 - #findcnt ) ; Sets a number of tools to make
set #lobjectid #findid
; --------------------------------
; This section looks for ingots, then pulls 100
finditem %ingot_type C_ , %resource_bag
for #findindex 1 #findcnt
    {
    event property #findid
    if copper || shadow || bronze || agapite || gold || verite || valorite in #property
     ignoreitem #findid
    if ingots in #property && shadow notin #property
    set %ingots #findid    ; Finds only Iron Ingots
    }
finditem %ingots C_ , %resource_bag
if #findcnt < 20
   {
   display ok You are out of ingots.$
           +Please get more and resetart script.
   gosub clear_pack
   halt
   }
finditem %ingots C_ , %resource_bag
exevent drag #findid 100
 wait 10
exevent dropc #backpackid
 wait 15
; --------------------------------
; Makes tool required, and loops %to_make (number of tools needed) times
event macro 22 0
  gosub gumpwait
 set %x #contposx + %3
 set %y #contposy + %4
 click %x %y ; Selects Category
  gosub gumpwait
for %i 1 %to_make
 {
 set %x #contposx + %5
 set %y #contposy + %6
 click %x %y ; Selects Tool
  gosub gumpwait
 }
gosub clear_pack
finditem %1 C_ , #backpackid
if #findcnt < %2
   gosub check_tool
return
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
; XXXX SETS ITEMS NEEDED FOR EACH POTION XXXX
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
sub potion_init
menu get %pot_to_make
if #menuRes = 1 ; Total Refreshment
   {
   set %reagent1 KUF ; Black Pearl
   set %reagent2 N/A ; N/A
   set %required_reagent1 5
   set %required_reagent2 N/A
   set %catposy 90
   set %selposy 90
   menu getnum %amount_to_make
   set %amount #menures
   if #menures = 0
      {
      menu delete %amount_to_make
      menu font color red
      menu text done 120 %size2 Done!
      set %size2 ( %size2 + 25 )
      set %pot_to_make ( %pot_to_make + 1 )
      set %amount_to_make ( %amount_to_make + 1 )
      return
      }
   }
if #menuRes = 2 ; Greater Agility
   {
   set %reagent1 JUF ; Bloodmoss
   set %reagent2 N/A ; N/A
   set %required_reagent1 3
   set %required_reagent2 N/A
   set %catposy 110
   set %selposy 90
   menu getnum %amount_to_make
   if #menures = 0
      {
      menu delete %amount_to_make
      menu font color red
      menu text done 120 %size2 Done!
      set %size2 ( %size2 + 25 )
      set %pot_to_make ( %pot_to_make + 1 )
      set %amount_to_make ( %amount_to_make + 1 )
      return
      }
   set %amount #menures
   }
if #menuRes = 3 ; Night Sight
   {
   set %reagent1 RZF ; Spider's Silk
   set %reagent2 N/A ; N/A
   set %required_reagent1 1
   set %required_reagent2 N/A
   set %catposy 130
   set %selposy 70
   menu getnum %amount_to_make
   if #menures = 0
      {
      menu delete %amount_to_make
      menu font color red
      menu text done 120 %size2 Done!
      set %size2 ( %size2 + 25 )
      set %pot_to_make ( %pot_to_make + 1 )
      set %amount_to_make ( %amount_to_make + 1 )
      return
      }
   set %amount #menures
   }
if #menuRes = 4 ; Greater Heal
   {
   set %reagent1 JZF ; Ginseng
   set %reagent2 N/A ; N/A
   set %required_reagent1 7
   set %required_reagent2 N/A
   set %catposy 150
   set %selposy 110
   menu getnum %amount_to_make
   if #menures = 0
      {
      menu delete %amount_to_make
      menu font color red
      menu text done 120 %size2 Done!
      set %size2 ( %size2 + 25 )
      set %pot_to_make ( %pot_to_make + 1 )
      set %amount_to_make ( %amount_to_make + 1 )
      return
      }
   set %amount #menures
   }
if #menuRes = 5 ; Greater Strength
   {
   set %reagent1 MZF ; Mandrake Root
   set %reagent2 N/A ; N/A
   set %required_reagent1 5
   set %required_reagent2 N/A
   set %catposy 170
   set %selposy 90
   menu getnum %amount_to_make
   if #menures = 0
      {
      menu delete %amount_to_make
      menu font color red
      menu text done 120 %size2 Done!
      set %size2 ( %size2 + 25 )
      set %pot_to_make ( %pot_to_make + 1 )
      set %amount_to_make ( %amount_to_make + 1 )
      return
      }
   set %amount #menures
   }
if #menuRes = 6 ; Poison
   {
   set %reagent1 WZF ; Nightshade
   set %reagent2 N/A ; N/A
   set %required_reagent1 2
   set %required_reagent2 N/A
   set %catposy 190
   set %selposy 90
   menu getnum %amount_to_make
   if #menures = 0
      {
      menu delete %amount_to_make
      menu font color red
      menu text done 120 %size2 Done!
      set %size2 ( %size2 + 25 )
      set %pot_to_make ( %pot_to_make + 1 )
      set %amount_to_make ( %amount_to_make + 1 )
      return
      }
   set %amount #menures
   }
if #menuRes = 7 ; Greater Poison
   {
   set %reagent1 WZF ; Nightshade
   set %reagent2 N/A ; N/A
   set %required_reagent1 4
   set %required_reagent2 N/A
   set %catposy 190
   set %selposy 110
   menu getnum %amount_to_make
   if #menures = 0
      {
      menu delete %amount_to_make
      menu font color red
      menu text done 120 %size2 Done!
      set %size2 ( %size2 + 25 )
      set %pot_to_make ( %pot_to_make + 1 )
      set %amount_to_make ( %amount_to_make + 1 )
      return
      }
   set %amount #menures
   }
if #menuRes = 8 ; Deadly Poison
   {
   set %reagent1 WZF ; Nightshade
   set %reagent2 N/A ; N/A
   set %required_reagent1 8
   set %required_reagent2 N/A
   set %catposy 190
   set %selposy 130
   menu getnum %amount_to_make
   if #menures = 0
      {
      menu delete %amount_to_make
      menu font color red
      menu text done 120 %size2 Done!
      set %size2 ( %size2 + 25 )
      set %pot_to_make ( %pot_to_make + 1 )
      set %amount_to_make ( %amount_to_make + 1 )
      return
      }
   set %amount #menures
   }
if #menuRes = 9 ; Greater Cure
   {
   set %reagent1 KZF ; Garlic
   set %reagent2 N/A ; N/A
   set %required_reagent1 6
   set %required_reagent2 N/A
   set %catposy 210
   set %selposy 110
   menu getnum %amount_to_make
   if #menures = 0
      {
      menu delete %amount_to_make
      menu font color red
      menu text done 120 %size2 Done!
      set %size2 ( %size2 + 25 )
      set %pot_to_make ( %pot_to_make + 1 )
      set %amount_to_make ( %amount_to_make + 1 )
      return
      }
   set %amount #menures
   }
if #menuRes = 10 ; Greater Explosion
   {
   set %reagent1 WZF ; Nightshade
   set %reagent2 N/A ; N/A
   set %required_reagent1 10
   set %required_reagent2 N/A
   set %catposy 230
   set %selposy 110
   menu getnum %amount_to_make
   if #menures = 0
      {
      menu delete %amount_to_make
      menu font color red
      menu text done 120 %size2 Done!
      set %size2 ( %size2 + 25 )
      set %pot_to_make ( %pot_to_make + 1 )
      set %amount_to_make ( %amount_to_make + 1 )
      return
      }
   set %amount #menures
   }
if #menuRes = 11 ; Greater Conflagration
   {
   set %reagent1 TZF ; Grave Dust
   set %reagent2 N/A ; N/A
   set %required_reagent1 10
   set %required_reagent2 N/A
   set %catposy 250
   set %selposy 90
   menu getnum %amount_to_make
   if #menures = 0
      {
      menu delete %amount_to_make
      menu font color red
      menu text done 120 %size2 Done!
      set %size2 ( %size2 + 25 )
      set %pot_to_make ( %pot_to_make + 1 )
      set %amount_to_make ( %amount_to_make + 1 )
      return
      }
   set %amount #menures
   }
if #menuRes = 12 ; Greater Confusion Blast
   {
   set %reagent1 YZF ; Pig Iron
   set %reagent2 N/A ; N/A
   set %required_reagent1 10
   set %required_reagent2 N/A
   set %catposy 250
   set %selposy 130
   menu getnum %amount_to_make
   if #menures = 0
      {
      menu delete %amount_to_make
      menu font color red
      menu text done 120 %size2 Done!
      set %size2 ( %size2 + 25 )
      set %pot_to_make ( %pot_to_make + 1 )
      set %amount_to_make ( %amount_to_make + 1 )
      return
      }
   set %amount #menures
   }
if #menuRes = 13 ; Invisibility
   {
   set %reagent1 JUF ; Bloodmoss
   set %reagent2 WZF ; Nightshade
   set %required_reagent1 4
   set %required_reagent2 3
   set %catposy 270
   set %selposy 70
   menu getnum %amount_to_make
   if #menures = 0
      {
      menu delete %amount_to_make
      menu font color red
      menu text done 120 %size2 Done!
      set %size2 ( %size2 + 25 )
      set %pot_to_make ( %pot_to_make + 1 )
      set %amount_to_make ( %amount_to_make + 1 )
      return
      }
   set %amount #menures
   }
if #menuRes = 14 ; Parasitic
   {
   set %reagent1 YWS ; Parasitic Plant
   set %reagent2 N/A ; N/A
   set %required_reagent1 5
   set %required_reagent2 N/A
   set %catposy 270
   set %selposy 90
   menu getnum %amount_to_make
   if #menures = 0
      {
      menu delete %amount_to_make
      menu font color red
      menu text done 120 %size2 Done!
      set %size2 ( %size2 + 25 )
      set %pot_to_make ( %pot_to_make + 1 )
      set %amount_to_make ( %amount_to_make + 1 )
      return
      }
   set %amount #menures
   }
if #menuRes = 15 ; Darkglow
   {
   set %reagent1 XWS ; Luminescent Fungi
   set %reagent2 N/A ; N/A
   set %required_reagent1 5
   set %required_reagent2 N/A
   set %catposy 270
   set %selposy 110
   menu getnum %amount_to_make
   set %amount #menures
   if #menures = 0
      {
      menu delete %amount_to_make
      menu font color red
      menu text done 120 %size2 Done!
      set %size2 ( %size2 + 25 )
      set %pot_to_make ( %pot_to_make + 1 )
      set %amount_to_make ( %amount_to_make + 1 )
      return
      }
   }
return
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
; XXXXX SUB TO FIND AND GRAB RESOURCES XXXXXX
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
sub grab_resources
if %amount >= 100
   set %grab 100
if %amount < 100
   set %grab %amount
; Finds and grabs Bottles
finditem %bottle C_ , %resource_bag
exevent drag #findid %grab
 wait 10
exevent dropc #backpackid
 wait 15
; Finds and grabs Reagent #1
finditem %1 C_ , %resource_bag
exevent drag #findid 1000
 wait 10
exevent dropc #backpackid
 wait 15
; Finds and grabs Reagent #2
finditem %2 C_ , %resource_bag
exevent drag #findid 1000
 wait 10
exevent dropc #backpackid
 wait 15
return

sub grab_more_resources
; Finds and grabs Reagent #1
finditem %1 C_ , %resource_bag
exevent drag #findid 1000
 wait 10
exevent dropc #backpackid
 wait 15
; Finds and grabs Reagent #2
finditem %2 C_ , %resource_bag
exevent drag #findid 1000
 wait 10
exevent dropc #backpackid
 wait 15
return
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
; XXXXXXXX SUB FOR MAKING THE POTIONS XXXXXXX
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
sub craft_potion
repeat
finditem %reagent1 C_ , #backpackid
if #findcnt < %required_reagent
   gosub grab_more_resources %reagent1
finditem %1 C_ , #backpackid
if #findcnt < %2
   gosub check_tool %alch_tool %alch_tools_needed %catposx 110 %selposx 90
event macro 22 0
  gosub gumpwait
 set %x #contposx + %3
 set %y #contposy + %4
 click %x %y ; Category
  gosub gumpwait
 set %x #contposx + %5
 set %y #contposy + %6
 click %x %y ; Selection (Potion)
  gosub gumpwait
finditem %bottle C_ , #backpackid
until #findcnt = 0
gosub clear_pack
set %amount ( %amount - %grab )
if %amount = 0
   {
   menu delete %amount_to_make
   menu font color red
   menu text done 120 %size2 Done!
   set %size2 ( %size2 + 25 )
   set %pot_to_make ( %pot_to_make + 1 )
   set %amount_to_make ( %amount_to_make + 1 )
   return
   }
return
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
; XXXX GUMP WAIT SUB, ENSURES GUMP IS UP XXXX
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
sub gumpwait
set %timer #SCNT + 5
 repeat
  until #CONTNAME = generic_gump || #SCNT > %timer
if #contname <> generic_gump
   {
   event macro 17 0
   }
Return
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
; XXX TRAILMYX'S PERSISTANT VARIABLE SUBS XXX
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
sub TM_GetPersistantVariable
  set #RESULT %1 , _ , #CHARID
  set #RESULT * . #RESULT
return #RESULT
sub TM_SetPersistantVariable
  set #RESULT %1 , _ , #CHARID
  set * . #RESULT %2
return

--- End code ---

Xclio:
Ran it through the syntax checker again for ya.


--- Code: ---Method count: 55
Command count: 55
*** Pass 1 - Label accounting:
Subroutine labels = 12
Tag labels = 4
44 Code block(s).
0 Warnings(s) encountered.
*** Pass 2 - Execution [SYNTAXCHECK]
0 Error(s) encountered.
--- End code ---

TrailMyx:
Does this still misbehave?

Navigation

[0] Message Index

[#] Next page

Go to full version