wasn't gonna post but meh...autolooter

Discussion about the technical aspects of scripting. Ask about all issues involving your freelance projects here.
User avatar
anarchy
Legendary Scribe
Posts: 1610
Joined: Wed Nov 04, 2009 10:34 am

wasn't gonna post but meh...autolooter

Post by anarchy »

wasn't gonna post my looter (i didn't write this), but meh thought i'd share some of my scripts
this is a better looter imo.


Code: Select all

gosub main_menu
gosub main_variables
gosub eventproperty
gosub os_ver
gosub load_settings #false
gosub load_string #false
gosub tf_check
gosub combine_itemgroups
gosub set_bag #true lootbag_ID lootbag_loc
gosub action_window ...Looting started.
;-------------------------------------;
;------------- Mainloop --------------;
;-------------------------------------;
mainloop:
wait %waitFast
gosub error_check #false
gosub mainmenu_buttons
gosub action_window scanning...
if %TF_1
  gosub loot_from #true %corpse  ;-------loot corpse
if %TF_3
  gosub loot_from #true %container ;-------loot chest
if %TF_2
  gosub loot_from #false * G_ 2 ;-------loot ground
finditem %sheep G_2
if %TF_7 && #FINDKIND <> -1 ;-------sheer sheep
{
  gosub openit %_bladeID #FINDID 1
  gosub event_property #FINDID $ #false
  gosub action_window Sheering sheep: #RESULT
}
if %TF_15 && ( packy in %lootbag_loc || packy in %regbag_loc ) ;-------call packy
  gosub call_packy
goto mainloop
;-------------------------------------;
;  %1 - true=container - false=ground
;  %2 - search for * or container/corpse
;-------------------------------------;
sub loot_from
nameSpace Push
nameSpace Local loot_from
set !1 %1
set !2 %2
set !3 %3
finditem !2 G_2
if #FINDID in %ignore_ID || #FINDID = %lootbag_ID || #FINDID = %regbag_ID || #FINDID = #CHARID
  goto _return
if #FINDKIND <> -1
{
  set !cont_ID #FINDID
  set !cont_Type #FINDTYPE
  set !cont_Stack #FINDSTACK
  set !cont_Kind #FINDKIND
  if !1
    gosub open_gump !cont_ID #false #false
  gosub error_check #false
  set %journal #RESULT
  if !1 && %TF_19 ;-------Ignore PC corps
  {
    if %event_property
    {
      event property !cont_ID
      if Corpse$ notin #PROPERTY
      {
        gosub action_window Ignored Player Corpse!
        goto _ignore
      }
    }
    if criminal in %journal ;-------Ignore PC
    {
      gosub action_window Would be a Crime!
      goto _ignore
    }
  }
  if lootrights in %journal
  {
    gosub event_property !cont_ID $ #false
    gosub action_window Ignored: #RESULT
    goto _ignore
  }
  if !1 && %TF_5 && !cont_Type in %corpse ;-------cut corpse
  {
    gosub openit %_bladeID !cont_ID 1
    gosub event_property !cont_ID $ #false
    gosub action_window Cutting: #RESULT
    wait %waitFast
  }
  if %TF_6 ;-------cut hides
    gosub cut_hides !cont_ID
  set !cnt 1
  set !loot %loot_list
  while %itemgroup_ . !cnt <> N/A
  {
    if %TF_12 && %TF_list . !cnt ;-------priority looting
      set !loot %itemgroup_ . !cnt
    if !1 && ( %TF_4 || %TF_18 ) ;-------loot all corpse/chest
      set !loot *
    if ! !1 && %TF_14 ;-------loot all ground
      set !loot *
    _loot:
    if !1
      finditem !loot C_ , !cont_ID
    else
      finditem !loot G_2
    set !loot_ID #FINDID
    set !loot_Type #FINDTYPE
    set !loot_Stack #FINDSTACK
    set !loot_Kind #FINDKIND
    set !loot_Cnt #FINDCNT
    if ! !1 && ( !loot_Stack = 0 || !loot_ID in %ignore_ID || !loot_Type in %corps || !loot_Type in %container || !loot_Type in %ignore_Type )
      goto _return
    gosub event_property !loot_ID $ #false
    set !result #RESULT
    if ! !1
    {
      finditem * G_2
      if #FINDKIND = -1 || #FINDSTACK = 0 || #FINDID in %ignore_ID
        break
      finditem %container G_2
      if #FINDKIND = 1
        goto _return
      finditem %corpse G_2
      if #FINDKIND = 1
        goto _return
    }
    if ! !1 && !loot_Type in %corps
      break
    if !loot_Kind <> -1
    {
      if %last_looted = !loot_ID && !loot_ID <> X
      {
        set %last_lootedcnt %last_lootedcnt + 1
        if %last_lootedcnt = 2
        {
          display ok Error: bag may be full, unable to pickup item !loot_ID $
          +Script halting!
          halt
        }
      }
      if %TF_15
      {
        if Packy in %lootbag_loc || Packy in %regbag_loc ;-------call packy
          gosub call_packy
      }
      gosub error_check #true
      if %TF_22 && !loot_Type in %reagents && %regbag_ID <> N/A ;-------reagent bag
        gosub drag_drop dropc !loot_ID !loot_Stack %regbag_ID
      else
        gosub drag_drop dropc !loot_ID !loot_Stack %lootbag_ID
      if ignore in #RESULT
        goto _ignoreitem
      if distance in #RESULT
        goto _ignoreitem
      gosub action_window Looting: !result
      gosub counting_items !loot_Type !loot_Stack
      finditem !loot_ID G_2
      if #FINDID = !loot_ID
      {
        gosub action_window ...Looting Error, bag may be full!
        gosub pause_script
      }
      set %last_looted !loot_ID
      _ignoreitem:
      ignoreitem !loot_ID 2
      if ! %TF_12 ;-------priority check
        goto _loot
    }
    if ! %TF_12 && !loot_Kind = -1 ;-------priority check
      break
    if !loot_Cnt =< 1
      set !cnt !cnt + 1
  }
  finditem !cont_ID
  if #FINDDIST > 2
  {
    gosub event_property !cont_ID $ #false
    gosub action_window Out of Range: #RESULT
    goto _dontignore
  }
  gosub action_window Done...
  _ignore:
  if !cont_Type in %corpse
  {
    if %TF_8 && ;-------hide corps
      hideitem !cont_ID
    if %TF_9 && ! %TF_8 ;-------close gump
      gosub closegump !cont_ID
  }
  if !cont_Type in %container
  {
    if %TF_17 &&  ;-------hide chest
      hideitem !cont_ID
    if %TF_9 && ! %TF_17 ;-------close gump
      gosub closegump !cont_ID
  }
  ignoreitem !cont_ID 1
  _dontignore:
}
_return:
nameSpace Clear
nameSpace Pop
return
;-------------------------------------;
;  main menu buttons
;-------------------------------------;
sub mainmenu_buttons
if #MENUBUTTON = btn_loottarget
{
  set #TARGCURS 1
  while #TARGCURS = 1
    wait %waitFast
  ignoreitem #LTARGETID 1
  gosub loot_from #true #LTARGETID
  set #MENUBUTTON N/A
}
if #MENUBUTTON = btn_pause
  gosub pause_script
if #MENUBUTTON = btn_options
{
  gosub options
  gosub action_window ...Looting started.
}
if #MENUBUTTON = btn_reset
{
  gosub action_window ...Reseting ignore list.
  set %ignore_ID
  set %ignore_Type
  ignoreitem reset
	set #MENUBUTTON N/A
}
if #MENUBUTTON = CLOSED
  halt
return
;-------------------------------------;
;  Find OS version
;-------------------------------------;
sub os_ver
  str Left #OSVER 1
  if #STRRES = 1
  {
    set %cmd command.com
    set %buffer_length 500
    gosub action_window ...OS detected: Win 95/98
  }
  if #STRRES = 2
  {
    set %cmd cmd.exe
    set %buffer_length 2000
    gosub action_window ...OS detected: Win 2000/XP
  }
return
;-------------------------------------;
;  close gump
;-------------------------------------;
sub closegump
  if %1 = #CONTID
  {
    str Pos #CONTSIZE _
    set %cnt #STRRES - 1
    str Left #CONTSIZE %cnt
    set %x #CONTPOSX + ( #STRRES / 2 )
    str Right #CONTSIZE %cnt
    set %y #CONTPOSY + ( #STRRES / 2 )
    click %x %y r
  }
return
;-------------------------------------;
;  cut hides
;-------------------------------------;
sub cut_hides
  finditem %hides C_ , %1
  if #FINDKIND <> -1
  {
    gosub openit %_scissorID #FINDID 1
    gosub event_property #FINDID $ #false
    gosub action_window Cutting hides: #RESULT
    wait %waitFast
  }
return
;-------------------------------------;
;  check if event property works
;-------------------------------------;
sub eventproperty
  event Property #BACKPACKID
  if Backpack notin #PROPERTY
  {
    set %event_property #false
    gosub action_window ...Properties disabled
  }
  else
  {
    set %event_property #true
    gosub action_window ...Properties enabled
  }
return
;<@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@>
;<---------------------------------------------------------->
; @Par's smart moving sub
; @checks for errors and will slow looting over time
; %1 = dropg | dropc
; %2 = object id
; %3 = [amount]
; %4 = {x}   | [dest container id]
; %5 = {y}   | {x}
; %6 = {z}   | {y}
; @example
; @ gosub moveitem dropg POF * #CHARPOSX #CHARPOSY #CHARPOSZ
; @ gosub moveitem dropc POF 1 #BACKPACKID 10 10
;<---------------------------------------------------------->
sub drag_drop
  nameSpace Push
  nameSpace Local drag_drop
  set !_jindex #JINDEX
  set %return
  _retrydragdrop:
  exevent drag %2 %3
  if %0 = 6
    exevent %1 %4 %5 %6
  else
    exevent %1 %4
  sleep %wait_drag
  while #JINDEX > !_jindex
  {
    set !_jindex !_jindex + 1
    scanjournal !_jindex
    if %You_can_not_pick in #journal
      set %return ignore
    if %You_must_wait in #journal || %You_are_already in #journal
    {
      set %wait_drag %wait_drag + %wait_dragincrement
      goto _retrydragdrop
    }
    if %That_is_too in #journal || %That_is_out in #journal
      set %return distance
  }
  nameSpace Clear
  nameSpace Pop
return %return
;-------------------------------------;
;  call packy
;-------------------------------------;
sub call_packy
  nameSpace Push
  nameSpace Local call_packy
  set !t #TIME
  set !scnt #SCNT2
  repeat
  {
    finditem %lootbag_ID G
    if #FINDKIND = -1 || #FINDDIST > 15 || !error_cnt > 3
    {
      gosub action_window ...Packy Inaccessible!!!
      gosub pause_script
      set !error_cnt
    }
    if #SCNT2 > !scnt
    {

      if !x <> #FINDX || !y <> #FINDY
        set !t #TIME + 1
      if !x = #FINDX && !y = #FINDY && #TIME > !t && #FINDDIST > 2
      {
        event macro 1 0 %lootbag_name come
        set !error_cnt !error_cnt + 1
        set !t #TIME + 2
      }
      set !x #FINDX
      set !y #FINDY
      set !scnt #SCNT2 + 5
    }
  }
  until #FINDDIST =< 2
  nameSpace Clear
  nameSpace Pop
return
;-------------------------------------;
;  Load Button
;-------------------------------------;
sub load_settings
  nameSpace Push
  nameSpace Local load_settings
  set %Type_list
  set !1 %1
  call smartlooter.cfg
  gosub action_window ...Loading smartlooter.cfg
  if %Type_list1 = N/A
  {
    if !1
      goto loadend
    gosub action_window ...No save found!
    gosub default_variables
    set !set_defualts #true
  }
  else
  {
    if ! !1 && %chraname <> #CHARNAME
    {
      gosub action_window ...New Char: lootbag reset!
      gosub set_bag #false lootbag_ID lootbag_loc
      set %regbag_ID N/A
      set %regbag_loc N/A
    }
    for !i 1 %lcnt
      set %Type_list %Type_list , %Type_list . !i
    gosub loadstr %Type_list itemgroup_ +
    gosub loadstr %TF_list TF_list +
    gosub loadstr %TF_options TF_ +
    gosub event_property %lootbag_ID $ #false
    if %event_property && %lootbag_ID <> #RESULT
      set %lootbag_name #RESULT
    else
      set %lootbag_name All
    gosub action_window ...Completed loading.
    !set_defualts #false
  }
  set !i 1
  while %itemgroup_ . !i <> N/A
  {
    set %itemgroup_cnt !i
    if !set_defualts
      set %TF_list . !i #true
    set !i !i + 1
  }
  loadend:
  nameSpace Clear
  nameSpace Pop
return
;-------------------------------------;
; Sub to parse the saved settings
;  %1 -
;  %2 -
;  %3 -
;-------------------------------------;
sub loadstr
  set #lpc %lpcFast
  nameSpace Push
  nameSpace Local loadstr
  str Count %1 %3
  if #STRRES = 0
    goto loadstr_end
  set !cnt #STRRES
  for !i 1 !cnt
  {
    str Pos %1 %3
    set !cnt #STRRES
    str Left %1 !cnt
    set !tmp #STRRES
    str Del !tmp !cnt 1
    set % , %2 , !i #STRRES
    str Del %1 1 !cnt
    set %1 #STRRES
  }
  set %1 %i
  loadstr_end:
  nameSpace Clear
  nameSpace Pop
  set #lpc %lpcSlow
return %1
;-------------------------------------;
;  event property check
;  %1 - string to search
;  %2 - search for string
;  %3 - true=remove space / false
;-------------------------------------;
sub event_property
  set #lpc %lpcFast
  nameSpace Push
  nameSpace Local event_property
  set %return %1
  if %event_property
  {
    event Property %1
    if %0 = 1
    {
      set %return #PROPERTY
      goto propend
    }
    set !prop #PROPERTY
    str Len !prop
    if #STRRES < 2
      goto propend
    str Pos !prop %2
    set !cnt #STRRES - 1
    str Left !prop !cnt
    set %return #STRRES
    if ! %3
      goto propend
    str Count %return #spc
    set !_cnt #STRRES
    for !i 1 !_cnt
    {
      str Pos %return #spc
      set !cnt #STRRES
      str Del %return !cnt 1
      set %return #STRRES
    }
  }
  propend:
  nameSpace Clear
  nameSpace Pop
  set #lpc %lpcSlow
return %return
;-------------------------------------;
;  check true/false
;-------------------------------------;
sub tf_check
  nameSpace Push
  nameSpace Local tf_check
  if %TF_5 ;-------cut corpse check
  {
    gosub SearchForItem %blade C_ #BACKPACKID 5
    if #RESULT
      set %_bladeID #FINDID
    else
      set %TF_5 #false
  }
  if %TF_6 ;-------cut hides check
  {
    gosub SearchForItem %scissors C_ #BACKPACKID 6
    if #RESULT
      set %_scissorID #FINDID
    else
      set %TF_6 #false
  }
  if #EUOVER <> 1_50_00
  {
    display okcancel Warning! must be running EUO v1.50 or higher
    if #DISPRES = cancel
      halt
  }
  nameSpace Clear
  nameSpace Pop
return
;-------------------------------------;
;  groups all item types together
;-------------------------------------;
sub combine_itemgroups
  nameSpace Push
  nameSpace Local combine_itemgroups
  set %all_loot
  for !i 1 %itemgroup_cnt
  {
    set !tmp %itemgroup_ . !i
    str Pos !tmp _
    set !cnt_t #STRRES
    str Len !tmp
    set !cnt_l #STRRES
    set !cnt_r !cnt_l - !cnt_t
    str Right !tmp !cnt_r
    set %all_loot %all_loot , #STRRES
    if MageRegs in %itemgroup_ . !i || NecroRegs in %itemgroup_ . !i
      set %reagents %reagents , %itemgroup_ . !i
  }
  nameSpace Clear
  nameSpace Pop
return
;-------------------------------------;
;  search for item
; %1 = {{id} | {type} | *}
;      @also parses out the name of the viriable
;      @example %name result = name
; %2 = [[G_] | [C_]]
; %3 = [{dist} | {container id}]
;-------------------------------------;
sub SearchForItem
  nameSpace Push
  nameSpace Local SearchForItem
  set !_1 %1
  set !_2 %2
  set !_3 %3
  set !return #false
  if !_1 = *
  {
    finditem !_1 !_2 , !_3
    goto searchforitem_end
  }
  gosub open_gump #BACKPACKID #true #true
  if ! #RESULT
  {
    set !return #false
    goto searchforitem_end
  }
  str Pos !_1 _
  set !cnt #STRRES - 1
  str Left !_1 !cnt
  set !string #STRRES
  gosub action_window ...Initiating search for !string
  if ! %TF_20
    goto SearchForItem_manualy
  finditem !_1 !_2 , !_3
  if #FINDKIND = -1
  {
    finditem !_1 !_2 , #CHARID
    if #FINDKIND <> -1
    {
      set !return #true
      goto searchforitem_end
    }
    gosub action_window ...Did not find !string
    display yesno Did not find !string $
    +Target now?
    SearchForItem_manualy:
    if ! %TF_20 && blade in !string
      display yesno Target a Knife now for cutting Corpses.
    if ! %TF_20 && scissors in !string
      display yesno Target Scissors now for cutting Hides.
    if #DISPRES = yes
    {
      set #TARGCURS 1
      while #TARGCURS = 1
        wait %waitFast
      finditem #LTARGETID
      if #FINDKIND <> -1
      {
        if #FINDTYPE notin % . !string
          set % . !string % . !string , #FINDTYPE , _
        set !return #true
        goto searchforitem_end
      }
    }
    if #DISPRES = no
    {
      set !return #false
      goto searchforitem_end
    }
  }
  if #FINDTYPE in !_1 || #FINDID in !_1 && #FINDKIND <> -1
    set !return #true
  searchforitem_end:
  set %return !return
  nameSpace Clear
  nameSpace Pop
return %return
;-------------------------------------;
;  setup lootbag
;  %1 = true/false
;  %2 = bag_ID
;  %3 = bag_loc
;-------------------------------------;
sub set_bag
  nameSpace Push
  nameSpace Local set_bag
  set !2 %2
  set !3 %3
  if %1 && % . !2 <> N/A
    goto setbag_end
  gosub open_gump #BACKPACKID #true #false
  gosub action_window ...Initiating !2 setup
  display okcancel Please select !2
  if #DISPRES = cancel
  {
    if % . !2 = N/A
      display ok No !2 selected!$
    goto setbag_end
  }
  setbagloop:
  set #TARGCURS 1
  while #TARGCURS = 1
    wait %waitFast
  repeat
  {
    finditem #LTARGETID
    if #FINDKIND <> -1
      break
    if #FINDKIND = -1 && !cnt <> 1
    {
      ignoreitem #LTARGETID
      set !cnt 1
      continue
    }
    gosub action_window ...Cannot find target.
    display yesno Error: Cannot find target.$
    +Try again?
    if #DISPRES = yes
      goto setbagloop
    display Script halted!
    halt
  }
  until #true
  finditem #LTARGETID
  gosub event_property #LTARGETID $ #true
  set !n #RESULT
  if #FINDID = #CHARID
    set % . !3 Character
  if #FINDID = #BACKPACKID
    set % . !3 Backpack
  if #FINDBAGID = #BACKPACKID
    set % . !3 Subbag
  if #FINDSTACK = 0 && #FINDBAGID = X && #FINDID <> #CHARID
    set % . !3 Packy
  if #FINDSTACK > 0 && #FINDBAGID = X
    set % . !3 Ground
  if %lootbag_loc = N/A
    set % . !3 Unknown
  gosub action_window ... , !2 type: %lootbag_loc
  display yesno You have selected$
  +Location: %lootbag_loc $
  +Name/ID: !n $
  +$
  +note: If target is packy or chest must be within 2 tiles during looting.$
  +if selected target is of an unknown type it may still work.$
  +$
  +Is this target ID: #FINDID correct?
  if ! %event_property || !n = #FINDID
    set %lootbag_name All
  else
    set %lootbag_name !n
  if #DISPRES = yes
  {
    set % . !2 #LTARGETID
    ;set % . !2 % . !2 , #CHARNAME , _
    if % . !2 notin %ignore_ID
      set %ignore_ID %ignore_ID , % . !2 , _
    goto setbag_end
  }
  if #DISPRES = no
    goto setbagloop
  setbag_end:
  nameSpace Clear
  nameSpace Pop
return
;-------------------------------------;
;  Script Error Check
;  %1 - true/false
;-------------------------------------;
sub error_check
  nameSpace Push
  nameSpace Local error_check
  set #LPC %lpcFast
  set %pause #false
  set %journal
  finditem %lootbag_ID
  if %lootbag_ID <> #FINDID && %lootbag_loc <> packy
  {
    gosub open_gump #BACKPACKID #true #true
    if %1
    {
      gosub action_window ...Can't find lootbag!
      display yesnocancel Can't find lootbag, select a new one?
      if #DISPRES = yes
        gosub set_bag #false lootbag_ID lootbag_loc
      if #DISPRES = no
        wait 1s
      if #DISPRES = cancel
      {
        gosub action_window ...Script halted
        halt
      }
    }
  }
  if #TIME > %reset_time
  {
    gosub action_window ...Auto reset ignore list.
    ignoreitem reset
    set %ignore_ID
    set %reset_time #TIME + %reset_cnt
  }
  if #CHARNAME = N/A  ;-------open charactor status bar
  {
    gosub action_window ...Opening status bar.
    event macro 8 2
    wait %waitSlow
  }
  onHotKey %hotkey1 %hotkey2
    gosub pause_script
  while %TF_16 && #WEIGHT > %max_weight && packy notin %lootbag_loc  ;-------stop before full
  {
    gosub action_window ...Paused: weight ( #WEIGHT / #MAXWEIGHT )
    if #DISPRES <> Ok
      display ok "Paused" Weight #WEIGHT of #MAXWEIGHT
    gosub mainmenu_buttons
    while #LLIFTEDKIND = 1
      gosub auto_learn
  }
  while %TF_10 && H in #CHARSTATUS  ;-------stop looting on hide
  {
    gosub action_window ...Paused: hiding.
    gosub mainmenu_buttons
  }
  while %TF_11 && G in #CHARSTATUS  ;-------stop looting in warmode
  {
    gosub action_window ...Paused: warmode.
    gosub mainmenu_buttons
  }
  while #CHARGHOST = yes  ;-------stop when dead
  {
    gosub action_window ...Paused: got yourself perished #CHARNAME , !
    gosub mainmenu_buttons
  }
  while #CLILOGGED <> 1 && #CLITOP < 1 ;-------stop when logged out
  {
    gosub action_window ...Paused: logged out!
    gosub mainmenu_buttons
    wait %waitSlow
  }
  while #LLIFTEDKIND = 1
    gosub auto_learn
  while #JINDEX > %_jindex
  {
    set %_jindex %_jindex + 1
    scanjournal %_jindex
    if %will_be_a_criminal in #JOURNAL
      set %journal %journal , criminal , _
    if %may_not_loot in #JOURNAL || %You_did_not_earn in #JOURNAL || %did_not_slay_this in #JOURNAL
      set %journal %journal , lootrights , _
    if %That_is_too in #JOURNAL || %That_is_out in #JOURNAL || %You_must_wait in #JOURNAL || %You_can_not_pick in #JOURNAL || %You_are_already in #JOURNAL || %I_cant_reach_that in #JOURNAL
      set %journal %journal , cantmove , _
    if %is_attacking_you in #JOURNAL
      set %journal %journal , underattack , _
    if %You_are_now_under in #JOURNAL
      set %journal %journal , underguard , _
    if %You_have_left_the in #JOURNAL
      set %journal %journal , unguarded , _
    if %It_appears_to_be_locked in #JOURNAL
      set %journal %journal , chestlocked , _
    if %You_dont_see_how in #JOURNAL
      set %journal %journal , cantunlock , _
    if %world_is_saving in #JOURNAL
      set %journal %journal , worldsaving , _
    if %world_save_complete in #JOURNAL
      set %journal %journal , savecomplete , _
    if %renamed_to in #JOURNAL && %lootbag_name in #JOURNAL
    {
      if packy in %regbag_loc
        set !_loc %regbag_ID
      if packy in %lootbag_loc
        set !_loc %lootbag_ID
      gosub event_property !_loc $ #true
      if %event_property
        set %lootbag_name #RESULT
      else
        set %lootbag_name All
    }
    if %that_container_cannot in #JOURNAL
    {
      gosub action_window ...Lootbag may be full: %lootbag_ID
      gosub pause_script
    }
    if %That_is_not_your_container in #JOURNAL
    {
      gosub action_window ...Container error
      display yesno You can't store things here: %lootbag_name $
      +Select a new lootbag.
      if #DISPRES = yes
        gosub set_bag #false lootbag_ID lootbag_loc
      if #DISPRES = no
      {
        gosub action_window ...Script halted
        halt
      }
    }
  }
  str Len %journal
  if #STRRES < 1
    set %journal N/A
  set #LPC %lpcSlow
  nameSpace Clear
  nameSpace Pop
return %journal
;-------------------------------------;
;   learn what you pickup
;-------------------------------------;
sub auto_learn
  nameSpace Push
  nameSpace Local auto_learn
  gosub event_property #LLIFTEDID $ #false
  gosub action_window Busy with: #RESULT
  if #LLIFTEDID notin %ignore_ID
    set %ignore_ID %ignore_ID , #LLIFTEDID , _
  if %TF_13 ;-------learn mode
  {
    if #LLIFTEDTYPE notin %all_loot
    {
      for !i 1 %itemgroup_cnt
      {
        if AutoLearn in %itemgroup_ . !i
        {
          if #LLIFTEDTYPE notin %itemgroup_ . !i
            set %itemgroup_ . !i %itemgroup_ . !i , #LLIFTEDTYPE , _
          goto learn
        }
      }
      gosub action_window Creating AutoLearn entry.
      set %itemgroup_cnt %itemgroup_cnt + 1
      set %itemgroup_ . !i AutoLearn , _ , #LLIFTEDTYPE , _
      set %TF_list . !i #true
      learn:
      set %learn_Type %learn_Type , #LLIFTEDTYPE , _
      gosub action_window Adding item type #LLIFTEDTYPE
      gosub combine_itemgroups
    }
  }
  nameSpace Clear
  nameSpace Pop
return
;-------------------------------------;
;  open backpack
;  %1 - container id
;  %2 - true = backpack / false = other
;  %3 - true = { if searching for blade/scissors }
;-------------------------------------;
sub open_gump
  nameSpace Push
  nameSpace Local open_gump
  nextCPos %contpos_x %contpos_y
  set !time #TIME + 5
  set !return #true
  set !_1 %1
  set !_2 %2
  set !_3 %3
  finditem !_1
  if #FINDSTACK = 0 && #FINDDIST =< 2
  {
    gosub openit !_1
    goto open_gump_end
  }
  while #CONTID <> !_1
  {
    if !time < #TIME || #FINDDIST > 2
    {
      gosub action_window ...Unable to open backpack.
      if !_3
        display ok Error: Backpack must be accessable to search for blade/scissors.$
      set !return #false
      goto open_gump_end
    }
    if !time > #TIME
    {
      gosub event_property !_1 $ #false
      if locked in #RESULT
      {
        gosub action_window ...Can't open: #RESULT
        set !return #false
        goto open_gump_end
      }
      gosub action_window Opening #RESULT
    }
    if !_2
      event macro 8 7
    else
      gosub openit !_1
    wait %waitSlow
  }
  open_gump_end:
  set %return !return
  nameSpace Clear
  nameSpace Pop
return %return
;-------------------------------------;
;  interact with object
;  %1 = #LOBJECTID
;  %2 = #LTARGETID
;  %3 = #LTARGETKIND
;-------------------------------------;
sub openit
  nameSpace Push
  nameSpace Local openit
  if %0 = 1
    set %2 N/A
  set #LOBJECTID %1
  event macro 17 0
  wait %waitFast
  set #LTARGETID %2
  set #LTARGETKIND %3
  target %waitSlow
  event macro 22 0
  wait %waitFast
  nameSpace Clear
  nameSpace Pop
return
;-------------------------------------;
;  manualy pause script
;-------------------------------------;
sub pause_script
  nameSpace Push
  nameSpace Local pause_script
  set #MENUBUTTON N/A
  wait %waitSlow
  set !scnt2 #SCNT2
  set !tmp ActiveBorder
  while #MENUBUTTON <> btn_pause
  {
    gosub action_window ...Paused
    if #SCNT2 > !scnt2
    {
      menu delete btn_pause
      menu Font BGColor !tmp
      menu Button btn_pause 80 132 69 17 Pause
      set !scnt2 #SCNT2 + 2
      if !tmp = red
	      set !tmp ActiveBorder
      else
	      set !tmp red
    }
    onHotKey %hotkey1 %hotkey2
      break
    if #MENUBUTTON = btn_options
    {
      gosub options
      break
    }
    wait %waitFast
  }
  gosub action_window ...Looting started
  menu Font BGColor ActiveBorder
  menu Button btn_pause 80 132 69 17 Pause
  set #MENUBUTTON N/A
  wait %waitFast
  nameSpace Clear
  nameSpace Pop
return
;-------------------------------------;
;  main menu: window actions list
;  %1 -
;-------------------------------------;
sub action_window
  nameSpace Push
  nameSpace Local action_window
  if %1 = N/A
    goto actiondone
  set !new
  for !i 1 %0
    set !new !new , % . !i , #spc
  if !new = %last_act
    goto actiondone
  menu List Add list_actions !new
  set %list_count %list_count + 1
  menu List Select list_actions %list_count
  set %last_act !new
  actiondone:
  nameSpace Clear
  nameSpace Pop
return
;-------------------------------------;
;  track gold and loot
;-------------------------------------;
sub counting_items
  menu Font BGColor GrayText
  if %1 in %gold
  {
    set *xparr_gold *xparr_gold + %2
    menu delete label_2
    menu Text label_2 34 160 *xparr_gold
  }
  set *xparr_items *xparr_items + 1
  menu delete label_4
  menu Text label_4 162 160 *xparr_items
return
;-------------------------------------;
;  main menu
;-------------------------------------;
sub main_menu
  menu Clear
	menu Window Title Smart Looter: #CHARNAME
	menu Window Color 3DDkShadow
	menu Window Size 229 182
	menu Font Transparent #true
	menu Font Align Right
	menu Shape shape_1 4 4 221 149 3 7 1 Black 7 BtnShadow
	menu Shape shape_2 4 156 221 21 3 7 1 Black 7 BtnShadow
	menu Font Name MS Sans Serif
	menu Font Size 8
	menu Font Style
	menu Font Color WindowText
	menu Font Transparent #false
	menu Font Align Left
	menu Font BGColor GrayText
  menu Text text_gold 8 160 Gold:
	menu Text EUOLabel1 108 160 Item Count:
	menu Text label_2 34 160 *xparr_gold
	menu Text label_4 162 160 *xparr_items
	menu Font BGColor $00B3A28C
	menu List Create list_actions 8 8 213 102
	menu Font BGColor BtnFace
	menu Button btn_reset 8 132 69 17 Reset
	menu Button btn_pause 80 132 69 17 Pause
	menu Button btn_options 152 132 69 17 Options
  menu Button btn_loottarget 8 112 213 17 Loot Target
	menu Show
return
;-------------------------------------;
;  options menu
;-------------------------------------;
sub options_menu
  menu Clear
	menu Window Title v1.60 Options Menu: Looting "Paused"
	menu Window Color 3DDkShadow
	menu Window Size 529 264
	menu Font Transparent #true
	menu Font Align Right
	menu Shape shape_6 4 4 209 193 3 7 1 Black 7 BtnShadow
	menu Shape shape_4 316 4 209 221 3 7 1 Black 7 BtnShadow
	menu Shape shape_edit1 4 228 521 31 3 7 1 Black 7 BtnShadow
	menu Shape shape_2 216 56 97 169 3 7 1 Black 7 BtnShadow
	menu Shape shape_7 320 8 97 109 3 7 1 Black 7 ScrollBar
	menu Shape shape_9 320 120 97 57 3 7 1 Black 7 ScrollBar
	menu Shape shape_10 320 180 97 41 3 7 1 Black 7 ScrollBar
	menu Shape shape_11 420 8 101 213 3 7 1 Black 7 ScrollBar
	menu Shape shape_1 4 200 209 25 3 7 1 Black 7 BtnShadow
	menu Shape shape_3 216 4 97 49 3 7 1 Black 7 BtnShadow
	menu Shape shape_lootbag 220 105 89 17 3 7 1 Black 7 BtnShadow
	menu Shape shape_regbag 220 143 89 17 3 7 1 Black 7 BtnShadow
	menu Font Name MS Sans Serif
	menu Font Size 8
	menu Font Style
	menu Font Color WindowText
	menu Font BGColor $00B3A28C
  menu List Create list_1 8 25 201 149
	menu Font Name MS Sans Serif
	menu Font Size 8
	menu Font Style
	menu Font Color WindowText
	menu Font BGColor ActiveBorder
  menu Button btn_enable 9 8 63 17 Enable
	menu Button btn_disable 75 8 63 17 Disable
  menu Button btn_savereturn 220 204 89 17 Save / Return
	menu Button btn_loadlast 220 184 89 17 Load / Last
	menu Button btn_loaddefaults 220 164 89 17 Load / Defaults
  menu Button btn_lootbag 220 88 89 17 Set Loot Bag
  menu Button btn_regbag 220 126 89 17 Set Reg Bag
	menu Button btn_up 8 176 99 17 Up
	menu Button btn_down 110 176 99 17 Down
	menu Button btn_create 8 204 65 17 Create New
	menu Button btn_delete 76 204 65 17 Delete Last
	menu Button btn_addtarget 144 204 65 17 Add Target
	menu Font Align Left
	menu Font BGColor BtnShadow
  menu Text text_lootbag 224 108 %lootbag_ID
	menu Text text_regbag 224 146 %regbag_ID
	menu Check check_all 140 8 33 17 #false All
	menu Font BGColor Window
  menu Combo Create combo_weight 440 160 73
	menu Edit edit_1 8 232 513 N/A
	menu Edit edit_pause 219 26 29 F1
	menu Combo Create combo_pause 247 26 62
	menu Combo Add combo_pause alt
	menu Combo Add combo_pause ctrl
	menu Combo Add combo_pause shift
	menu Combo Add combo_pause N/A
	menu Show
return
;-------------------------------------;
;  option menu: check box's
;-------------------------------------;
sub check_menu
  menu Font BGColor Menu
  for %i 1 %options_cnt
    menu delete check_ , %i
  menu Check check_1 324 16 85 13 %TF_1 Loot Corpse
	menu Check check_4 336 32 69 13 %TF_4 Loot All
	menu Check check_19 324 48 77 13 %TF_19 Ignore PC
	menu Check check_8 324 64 81 13 %TF_8 Hide Corpse
	menu Check check_5 324 80 77 13 %TF_5 Cut Corpse
	menu Check check_6 324 96 81 13 %TF_6 Cut Hides
	menu Check check_3 324 124 81 17 %TF_3 Loot Chest
	menu Check check_18 336 140 69 17 %TF_18 Loot All
	menu Check check_17 324 160 77 13 %TF_17 Hide Chest
	menu Check check_2 324 184 81 17 %TF_2 Loot Ground
	menu Check check_14 336 200 69 17 %TF_14 Loot All
	menu Check check_9 424 16 89 13 %TF_9 Close Gump
	menu Check check_22 424 32 89 13 %TF_22 Reagent Bag
	menu Check check_12 424 48 93 13 %TF_12 Priority Looting
	menu Check check_15 424 64 89 13 %TF_15 Call Packy
	menu Check check_7 424 80 89 13 %TF_7 Sheer Sheep
	menu Check check_10 424 96 93 13 %TF_10 Stop on Hiding
	menu Check check_11 424 112 93 13 %TF_11 Stop on War
	menu Check check_13 424 128 85 13 %TF_13 Auto Learn
	menu Check check_16 424 144 93 13 %TF_16 Weight Check
	menu Check check_20 424 184 93 29 %TF_20 Auto Detect: Knife/Scissors
  menu Font BGColor BtnShadow
  menu Check check_21 220 8 73 17 %TF_21 Pause Key
return
;-------------------------------------;
;  options menu
;-------------------------------------;
sub options
  nameSpace Push
  nameSpace Local options
  gosub options_menu
  gosub check_menu
  menu get list_1
  menu Font BGColor Window
  menu delete edit_1
  for !i 1 #MAXWEIGHT
    menu Combo Add combo_weight !i
  if %max_weight > #MAXWEIGHT
    set %max_weight #MAXWEIGHT
  menu Combo Select combo_weight %max_weight
  menu Combo Select combo_pause 1
  gosub load_string #true
  menu List Select list_1 #RESULT
  menu Edit edit_1 8 232 513 %itemgroup_ . #MENURES
  while #MENUBUTTON <> btn_savereturn
  {
    menu get list_1
    if #MENURES <> %last
      gosub get_edit #true
    if #MENUBUTTON = btn_delete ;-------delete
    {
      if AutoLearn in %itemgroup_ . %itemgroup_cnt ;--------forget learned
        set %learn_Type
      set %itemgroup_ . %itemgroup_cnt N/A
      set %TF_list . %itemgroup_cnt #false
      set %itemgroup_cnt %itemgroup_cnt - 1
      if %itemgroup_cnt = 0
      {
        set %itemgroup_cnt 1
        set %itemgroup_ . %itemgroup_cnt rename_
        set %TF_list . %itemgroup_cnt #true
      }
      menu get list_1
      if #MENURES >= %itemgroup_cnt
      {
        gosub load_string #true
        set %last %itemgroup_cnt
        menu List Select list_1 %last
        gosub get_edit #false
        goto btn_delete_end
      }
      gosub load_string #true
      menu List Select list_1 %last
      btn_delete_end:
      set #MENUBUTTON N/A
    }
    if #MENUBUTTON = btn_create ;-------create new
    {
      gosub get_edit #false
      set %itemgroup_cnt %itemgroup_cnt + 1
      set %itemgroup_ . %itemgroup_cnt rename_
      set %TF_list . %itemgroup_cnt #true
      set %last %itemgroup_cnt
      gosub load_string #true
      menu List Select list_1 %last
      gosub get_edit #false
      goto btn_delete_end
      set #MENUBUTTON N/A
    }
    if #MENUBUTTON = btn_addtarget ;-------add target
    {
      set #TARGCURS 1
      while #TARGCURS = 1
        wait %waitFast
      finditem #LTARGETID
      for !i 1 %itemgroup_cnt
      {
          if #FINDTYPE in %itemgroup_ . !i
          {
            display Found #FINDTYPE under %itemgroup_ . !i
            goto foundtarget
          }
      }
      set %itemgroup_ . %last %itemgroup_ . %last , #FINDTYPE , _
      foundtarget:
      gosub get_edit #false
      set #MENUBUTTON N/A
    }
    if %TF_13 && #LLIFTEDKIND = 1 && #LLIFTEDTYPE notin %learn_Type && #LLIFTEDTYPE notin %all_loot
    {
      gosub auto_learn
      gosub get_edit #false
      gosub load_string #true
      menu List Select list_1 %last
    }
    menu get check_21 ;-------select all enable/disable
    if #MENURES
    {
      menu get edit_pause
      set %hotKey1 #MENURES
      menu get combo_pause
      set %hotKey2 %combo_pause . #MENURES
    }
    else
    {
      set %hotKey1
      set %hotKey2
    }
    if #MENUBUTTON = btn_enable
      gosub EnDis_list #true
    if #MENUBUTTON = btn_disable
      gosub EnDis_list #false
    if #MENUBUTTON = btn_loadlast
    {
      set !cnt %itemgroup_cnt
      for !i 1 %itemgroup_cnt
        set %itemgroup_ . !i N/A
      gosub load_settings #true
      set %last %itemgroup_cnt
      gosub load_string #true
      menu List Select list_1 %last
      gosub get_edit #false
      set #MENUBUTTON N/A
    }
    if #MENUBUTTON = btn_loaddefaults
    {
      for !i 1 %itemgroup_cnt
        set %itemgroup_ . !i N/A
      gosub default_variables
      set !i 1
      while %itemgroup_ . !i <> N/A
      {
        set %itemgroup_cnt !i
        set %TF_list . !i #true
        set !i !i + 1
      }
      set %last %itemgroup_cnt
      gosub load_string #true
      menu List Select list_1 %last
      gosub get_edit #false
      set #MENUBUTTON N/A
    }
    if #MENUBUTTON = btn_up
    {
      gosub get_edit #true
      menu get list_1
      gosub up_down #MENURES -
      gosub load_string #true
      menu List Select list_1 %last
      set #MENUBUTTON N/A
    }
    if #MENUBUTTON = btn_down
    {
      gosub get_edit #true
      menu get list_1
      gosub up_down #MENURES +
      gosub load_string #true
      menu List Select list_1 %last
      set #MENUBUTTON N/A
    }
    if #MENUBUTTON = btn_lootbag
    {
      gosub set_bag #false lootbag_ID lootbag_loc
      menu delete text_lootbag
      menu Text text_lootbag 224 104 %lootbag_ID
      set #MENUBUTTON N/A
    }
    if #MENUBUTTON = btn_regbag
    {
      gosub set_bag #false regbag_ID regbag_loc
      if %regbag_loc <> N/A && %TF_22 <> #true
      {
        menu delete check_22
        menu Font BGColor Menu
        menu Check check_22 424 32 89 13 #true Reagent Bag
        menu delete text_regbag
	      menu Text text_regbag 224 144 %regbag_ID
      }
      set #MENUBUTTON N/A
    }
    for !i 1 %options_cnt
    {
      menu get check_ , !i
      set %TF_ , !i #MENURES
    }
    if %TF_16
    {
      menu get combo_weight
      set %max_weight #MENURES
    }
    if %TF_4 && ! %TF_1 ;-------all corpse
    {
      menu delete check_1
      menu Font BGColor Menu
      menu Check check_1 324 16 85 13 #true Loot Corpse
    }
	  if %TF_14 && ! %TF_2 ;-------all ground
	  {
      menu delete check_2
      menu Font BGColor Menu
      menu Check check_2 324 184 81 17 #true Loot Ground
    }
    if %TF_18 && ! %TF_3 ;-------all chest
	  {
      menu delete check_3
      menu Font BGColor Menu
      menu Check check_3 324 124 81 17 #true Loot Chest
    }
    if #MENUBUTTON = CLOSED
      halt
  }
  menu get edit_1
  set %itemgroup_ . %last #MENURES
  gosub combine_itemgroups
  gosub save_settings
  set %list_count
  gosub main_menu
  gosub tf_check
  set #MENUBUTTON N/A
  nameSpace Clear
  nameSpace Pop
return
;-------------------------------------;
;  %1 -
;-------------------------------------;
sub get_edit
  if ! %1
    goto get_edit_skip
  menu get edit_1
  set %itemgroup_ . %last #MENURES
  menu get list_1
  set %new #MENURES
  if #MENURES < 1
    menu List Select list_1 1
  get_edit_skip:
  menu delete edit_1
  menu Font BGColor Window
  menu Edit edit_1 8 232 513 %itemgroup_ . %new
  set %last %new
return
;-------------------------------------;
;  moves loot list selection up or down
;  %1 -
;  %2 - { + | - }
;-------------------------------------;
sub up_down
  nameSpace Push
  nameSpace Local up_down
  set !tmp_a %itemgroup_ . %1
  set !tmp_b %TF_list . %1
  set !cnt %1 %2 1
  if %itemgroup_ . !cnt = N/A
    goto updown_end
  set %itemgroup_ . %1 %itemgroup_ . !cnt
  set %TF_list . %1 %TF_list . !cnt
  set %itemgroup_ . !cnt !tmp_a
  set %TF_list . !cnt !tmp_b
  set %last !cnt
  updown_end:
  nameSpace Clear
  nameSpace Pop
return
;-------------------------------------;
; options menu: Sub to update loot list
; %1 -
;-------------------------------------;
sub load_string
  nameSpace Push
  nameSpace Local load_string
  set #lpc %lpcFast
  set %loot_list
  if ! %1
    goto skipload_string
  menu Delete list_1
  menu Font Style
  menu Font BGColor $00B3A28C
  menu List Create list_1 8 25 201 149
  menu List Select list_1 1
  menu Font Size 12
  menu Font BGColor ActiveBorder
  menu Edit load_msg 58 88 97 Loading...
  menu Font Size 8
  skipload_string:
  for !i 1 %itemgroup_cnt
  {
    str Pos %itemgroup_ . !i _
    set %cnt #STRRES
    str Left %itemgroup_ . !i %cnt
    if %TF_list . !i
    {
      set %list . !i Enabled , #spc , - , #spc , #STRRES
      set %TF_list . !i #true
    }
    if ! %TF_list . !i
    {
      set %list . !i - , #spc , #STRRES
      set %TF_list . !i #false
      goto listadd
    }
    str Len %itemgroup_ . !i
    set !tmp #STRRES - %cnt
    str Right %itemgroup_ . !i !tmp
    set %loot_list %loot_list , #STRRES
    listadd:
    menu List Add list_1 !i , #spc , %list . !i
  }
  set %result !i - 1
  menu Delete load_msg
  set #lpc %lpcSlow
  nameSpace Clear
  nameSpace Pop
return %result
;-------------------------------------;
;  Save Button
;-------------------------------------;
sub save_settings
  nameSpace Push
  nameSpace Local save_settings
  menu Window Title Options Menu: Saving...
  menu get list_1
  for !i 1 %lcnt
    set %Type_list . !i
  set %lcnt 1
  set %TF_list
  set %TF_options
  for !i 1 %itemgroup_cnt
  {
    savesettings:
    if %Type_list . %lcnt = N/A
      set %Type_list . %lcnt
    if %itemgroup_ . !i = N/A
      break
    set %Type_list . %lcnt %Type_list . %lcnt , %itemgroup_ . !i , +
    str Len %Type_list . %lcnt
    if #STRRES > %buffer_length
    {
      set %Type_list . %lcnt %last
      set %lcnt %lcnt + 1
      goto savesettings
    }
    set %TF_list %TF_list , %TF_list . !i , +
    set %last %Type_list . %lcnt
  }
  for !i 1 %options_cnt
    set %TF_options %TF_options , %TF_ . !i , +
  execute %cmd /c erase smartlooter.cfg
  for !i 1 %lcnt
    execute %cmd /c echo set % , Type_list , !i %Type_list . !i >> smartlooter.cfg
  execute %cmd /c echo set % , TF_list %TF_list >> smartlooter.cfg &&
  + echo set % , TF_options %TF_options >> smartlooter.cfg &&
  + echo set % , wait_drag %wait_drag >> smartlooter.cfg &&
  + echo set % , chraname #CHARNAME >> smartlooter.cfg &&
  + echo set % , max_weight %max_weight >> smartlooter.cfg &&
  + echo set % , lootbag_loc %lootbag_loc >> smartlooter.cfg &&
  + echo set % , lootbag_ID %lootbag_ID >> smartlooter.cfg &&
  + echo set % , regbag_loc %regbag_loc >> smartlooter.cfg &&
  + echo set % , regbag_ID %regbag_ID >> smartlooter.cfg &&
  + echo set % , hotkey1 %hotkey1 >> smartlooter.cfg &&
  + echo set % , hotkey2 %hotkey2 >> smartlooter.cfg &&
  + echo set % , lcnt %lcnt >> smartlooter.cfg &&
  + echo exit >> smartlooter.cfg
  set #MENUBUTTON N/A
  nameSpace Clear
  nameSpace Pop
return
;-------------------------------------;
; enable / disable loot list selection
; %1 -
;-------------------------------------;
sub EnDis_list
  nameSpace Push
  nameSpace Local EnDis_list
  menu get check_all
  if #MENURES
  {
    for !i 1 %itemgroup_cnt
      set %TF_list . !i %1
  }
  menu get list_1
  set %last #MENURES
  if %TF_list . %last <> %1
    set %TF_list . %last %1
  gosub load_string #true
  menu List Select list_1 %last
  set #MENUBUTTON N/A
  nameSpace Clear
  nameSpace Pop
return
;-------------------------------------;
;  setup main variables
;-------------------------------------;
sub main_variables
  ;-----------------------------------;
  set %That_is_too That_is_too_far_away
  set %That_is_out That_is_out_of_sight
  set %You_must_wait You_must_wait_to
  set %You_can_not_pick You_can_not_pick_that_up
  set %You_are_already You_are_already_holding
  set %I_cant_reach_that I_can't_reach_that.
  ;-----------------------------------;
  set %You_are_now_under You_are_now_under
  set %You_have_left_the You_have_left_the
  set %is_attacking_you is_attacking_you
  ;-----------------------------------;
  set %may_not_loot may_not_loot
  set %will_be_a_criminal a_criminal_act  ;Looting_this_corpse_will_be_a_criminal_act!
  set %You_did_not_earn You_did_not_earn_the_right_to_loot
  set %did_not_slay_this did_not_slay_this_creature
  ;-----------------------------------;
  set %It_appears_to_be_locked It_appears_to_be_locked.
  set %The_lock_quickly_yields The_lock_quickly_yields
  set %You_dont_see_how You_don't_see_how_that_lock_can_be_manipulated.
  set %You_set_off_a_trap You_set_off_a_trap!
  ;-----------------------------------;
  set %world_is_saving world_is_saving
  set %world_save_complete world_save_complete
  ;-----------------------------------;
  set %That_is_not_your_container That_is_not_your_container,_you_can't_store_things_here.
  set %renamed_to renamed_to
  set %that_container_cannot That_container_cannot_hold_more_weight
  ;-----------------------------------;
  set %lootbag_loc N/A
  set %lootbag_ID N/A
  set %hotkey1 N/A
  set %hotkey2 N/A
  set #MENUBUTTON N/A
  ;-----------------------------------;
  set %lpcFast 500
  set %lpcSlow 50
  set %waitFast 2
  set %waitSlow 5
  set %wait_drag 400 ;------dragdrop delay
  set %wait_dragincrement 25
  set %options_cnt 22
  set %reset_cnt 1000
  set %max_weight #MAXWEIGHT
  set %contpos_x 50
  set %contpos_y 50
  ;-----------------------------------;
  set %reset_time #TIME
  set #lpc %lpcSlow
  set %TF_list
  set %learn_Type
  set %ignore_ID
  set %reagents
  set %ignore_Type XII_YFM_
  set %_jindex #JINDEX
  set %combo_pause1 alt
  set %combo_pause2 ctrl
  set %combo_pause3 shift
  set %combo_pause4
  ;-----------------------------------;
  ;--- set gold type
  set %gold gold_POF_
  ;--- set skining blade Type
  set %blade blade_GMH_HNF_BNF_TRD_URD_CNF_TSF_WSF_NMH_
  ;--- set scissor type for cuting hides
  set %scissors scissors_JAG_
  ;--- set hides to know what to cut
  set %hides hides_EEG_DEG_GED_
  ;--- set corpse type
  set %corpse YFM_
  ;--- set sheep type
  set %sheep PF_
  ;--- set containers to loot from, on the ground.
  set %other_corpse WNF_LNF_KNF_YNF_MNF_PNF_JNF_
  set %container EDE_EFP_IFP_GFP_PVD_NVD_KIF_TMF_VMF_HKF_IHP_CFP_KKF_ZTD_SHP_GHP_
  +MHP_KHP_AHP_YGP_CUD_PWN_UXM_SPF_TXM_OKF_AUD_LKF_QWN_VWN_TWN_WWN_CTD_BKF_KUD_ZJF_
  +HIF_JKF_BUD_JWN_CKF_UWN_JIF_DLN_ELN_HWN_DVD_BDE_GZD_VCE_BFP_UYD_JHP_DHP_LHP_HHP_
  +VEP_FFP_FHP_XGP_BVD_ZGP_HFP_ , %other_corpse
return
;-------------------------------------;
;  default variables
;-------------------------------------;
sub default_variables
  ;-----------------------------------;
  set %TF_1 #true  ;loot corpse
  set %TF_2 #true  ;loot ground
  set %TF_3 #true  ;loot chest
  set %TF_4 #false  ;loot all Corpse
  set %TF_5 #true  ;cut corpse - check for blade
  set %TF_6 #true  ;cut hides - check for scissor
  set %TF_7 #false  ;sheer sheep
  set %TF_8 #false  ;hide corpse
  set %TF_9 #true  ;close corpse
  set %TF_10 #false  ;stop on hide
  set %TF_11 #false  ;stop on war
  set %TF_12 #false  ;priority looting
  set %TF_13 #false  ;learn
  set %TF_14 #false  ;Loot all Ground
  set %TF_15 #false  ;Call Packy
  set %TF_16 #false  ;Weight check
  set %TF_17 #false  ;Hide Chest
  set %TF_18 #false  ;Loot all chest
  set %TF_19 #false  ;Ignore PC corpse
  set %TF_20 #true  ;auto detect knife/scissors
  set %TF_21 #false  ;pause check
  set %TF_22 #false  ;reagent check
  ;set %TF_23 #true  ;necro reagent check
  ;-----------------------------------;
  set %itemgroup_1 %gold
  set %itemgroup_2 gems_ZVF_VVF_NVF_HVF_GVF_UVF_BVF_EVF_RVF_
  set %itemgroup_3 jewels_UJG_IJG_LWL_MWL_BWL_CWL_ZVL_FJG_SJG_HJG_RJG_TJG_
  set %itemgroup_4 ore_DWJ_
  set %itemgroup_5 ingots_ENK_
  set %itemgroup_6 granite_BVI_
  set %itemgroup_7 scales_STO_
  set %itemgroup_8 leather_JJG_
  set %itemgroup_9 %hides
  set %itemgroup_10 feathers_VLK_
  set %itemgroup_11 boards_TLK_
  set %itemgroup_12 logs_ZLK_
  set %itemgroup_13 shafts_SLK_
  set %itemgroup_14 BaleOfCotton_NFF_
  set %itemgroup_15 Flaxbundle_QEK_
  set %itemgroup_16 bones_GUF_
  set %itemgroup_17 wool_OFF_
  set %itemgroup_18 BoltOfCloth_ZZF_
  set %itemgroup_19 CutCloth_CUI_
  set %itemgroup_20 cloth_BUI_
  set %itemgroup_21 bandage_ZLF_
  set %itemgroup_22 fish_EQD_GQD_YDF_
  set %itemgroup_23 net_UDF_
  set %itemgroup_24 fishingpole_KDF_
  set %itemgroup_25 sos_RVH_
  set %itemgroup_26 msginbottle_HTD_
  set %itemgroup_27 treasuremap_SVH_
  set %itemgroup_28 skullofpower_PCK_
  set %itemgroup_29 ChampionSkull_EWH_
  set %itemgroup_30 Macefighting_GFF_QOH_ADP_QMH_ZPF_RPF_DDP_ZTH_TRH_AUO_BUH_YSF_VTH_UOH_
  set %itemgroup_31 Fencing_PPF_RRH_MTF_XRH_CUO_OPO_BUO_HDP_FDP_LDP_ZCP_VRH_WSF_
  set %itemgroup_32 Swordsmanship_QPF_FSF_CNF_HNF_GMH_KDP_GUO_YTH_ZTO_HSF_LPH_RMH_ZRF_NSF_
  +BSF_LSF_JDP_YCP_EDP_BPH_SOH_JTF_NMH_JPH_NPO_ATF_FUO_
  set %itemgroup_33 Archery_XCP_PPO_QPO_LMH_USF_WOH_
  set %itemgroup_34 Shariken_GDP_
  set %itemgroup_35 Fukiya_MDP_
  set %itemgroup_36 Arrow_RWF_OZF_
  set %itemgroup_37 Bolt_LNK_
  set %itemgroup_38 FukiyaDart_SGP_
  set %itemgroup_39 Sheilds_OIK_LIK_CLK_NIK_AIK_CIK_HLK_FIK_GIK_
  set %itemgroup_40 Intstruments_PGP_OQF_LQF_PRF_MQF_NRF_QRF_
  set %itemgroup_41 Wands_IFF_HFF_CFF_
  set %itemgroup_42 LeatherArmor_NJL_VKH_JKH_KKH_QKH_PKH_
  set %itemgroup_43 StuddedArmor_MLH_ALH_XKH_LLH_GLH_
  set %itemgroup_44 RingmailArmor_IMH_BMH_WLH_YLH_
  set %itemgroup_45 ChainmailArmor_DPH_ZOH_APH_
  set %itemgroup_46 PlatemailArmor_OSH_LSH_NSH_ISH_HSH_MSH_
  set %itemgroup_47 BoneArmor_ZPH_CQH_AQH_PPH_QPH_
  set %itemgroup_48 DragonArmor_NKO_LKO_RKO_PKO_DLO_
  set %itemgroup_49 FemaleLeatherArmor_YSK_QSK_ATK_OSK_
  set %itemgroup_50 FemaleStuddedArmor_USK_SSK_
  set %itemgroup_51 FemalePlateArmor_MSK_
  set %itemgroup_52 SamuriLeatherArmor_GCP_UBP_OWO_IZO_SWO_GWO_
  set %itemgroup_53 SamuriStuddedArmor_FCP_CAP_NWO_HZO_PCP_
  set %itemgroup_54 SamuriPlatemailArmor_DCP_RBP_QWO_SBP_VBP_FWO_DWO_ZBP_ECP_WBP_LWO_PWO_
  set %itemgroup_55 NinjaLeatherArmor_CCP_OCP_MCP_NCP_LCP_
  set %itemgroup_56 MiscHelms_EWO_NWL_CSH_GSH_ESH_ASH_
  set %itemgroup_57 Ribs_VRD_YRD_
  set %itemgroup_58 FishSteak_IND_
  set %itemgroup_59 hats_XVI_
  set %itemgroup_60 Lockpick_IWH_
  ;set %itemgroup_61 NecroScroll_CZM_RYM_SYM_PYM_QYM_VYM_WYM_TYM_UYM_JYM_KYM_HYM_IYM_NYM_OYM_LYM_MYM_
  set %itemgroup_62 MageScroll_CVL_HVL_IVL_FVL_GVL_VUL_WUL_TUL_UUL_ZUL_AVL_XUL_YUL_NUL_OUL_
  +LUL_MUL_RUL_SUL_PUL_QUL_FUL_GUL_DUL_EUL_JUL_KUL_HUL_IUL_XTL_YTL_VTL_WTL_BUL_CUL_ZTL_AUL_
  +PTL_QTL_NTL_OTL_TTL_UTL_RTL_STL_FYL_GYL_DYL_EYL_JYL_KYL_HYL_IYL_XXL_YXL_VXL_WXL_BYL_CYL_
  +ZXL_AYL_PXL_QXL_NXL_
  set %itemgroup_63 SpellBooks_MPF_ZBN_XXM_YXM_
  ;set %itemgroup_64 postions_XUF_ZUF_AVF_UUF_TUF_NUF_YUF_OUF_
  ;set %itemgroup_65 NecroRegs_YZF_UZF_TZF_OZF_DUF_IUF_
  set %itemgroup_66 MageRegs_SZF_RZF_WZF_MZF_JZF_KZF_JUF_KUF_
  set %itemgroup_67 Vines_MVE_
  set %itemgroup_68 ZoogiFungus_TTO_
  set %itemgroup_69 Clothing_TQL_TVI_GCI_EDI_NVI_FWL_PVI_PAM_ZVI_DCI_VDI_
  set %itemgroup_70 Hats_GZH_IWI_JWI_WVI_HWI_BWI_MJN_YVI_CZH_KWI_VVI_EWI_
  set %itemgroup_71 BodyParts_QIL_SIL_MIL_RIL_FIL_PIL_
  set %itemgroup_72 Seeds_PDF_
  set %itemgroup_73 Dirt_NZF_
  set %itemgroup_74 BolaBalls_FKF_
  set %itemgroup_75 RawBird_PUD_
  set %itemgroup_76 Mask_DZH_BZH_
  set %itemgroup_77 PowerCrystal_YWL_
  set %itemgroup_78 FireHorn_ZWF_
  set %itemgroup_79 Tools_PBG_UFG_OGG_DND_IWH_QPF_CIG_FBG_TLH_TBG_CGG_TWF_
  +ZHG_AGG_EGG_HAG_AIG_FSF_KTL_BIG_RQF_ , %scissors
return
;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;; end ;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;
Last edited by anarchy on Tue Nov 06, 2012 6:57 am, edited 1 time in total.
Rune
Elder Scribe
Posts: 108
Joined: Wed Jan 14, 2009 6:11 pm

Re: wasn't gonna post but meh

Post by Rune »

is that for easy uo Anarchy?

and thanks for sharing :dance
<<< legendary slacker
User avatar
anarchy
Legendary Scribe
Posts: 1610
Joined: Wed Nov 04, 2009 10:34 am

Re: wasn't gonna post but meh

Post by anarchy »

sorry yes it's for easyuo
User avatar
Violette001
Journeyman Scribe
Posts: 21
Joined: Thu Jan 24, 2013 10:36 am

Re: wasn't gonna post but meh...autolooter

Post by Violette001 »

I love this autolooter, but it doesn't save my configuration. Is it because I'm running Windows 7?
User avatar
Xavian
Legendary Scribe
Posts: 485
Joined: Sun Dec 25, 2011 4:09 pm

Re: wasn't gonna post but meh...autolooter

Post by Xavian »

No it's not because of Windows7. Are you switching between characters using it?
User avatar
Violette001
Journeyman Scribe
Posts: 21
Joined: Thu Jan 24, 2013 10:36 am

Re: wasn't gonna post but meh...autolooter

Post by Violette001 »

No, I only have one character.
Dramoor
Legendary Scribe
Posts: 450
Joined: Wed Feb 23, 2011 7:37 pm

Re: wasn't gonna post but meh...autolooter

Post by Dramoor »

This will still crash like Kiannas uber looter crashes. Uses exevent drag and exevent drop which u cannot be moving in game while these are going off.
User avatar
dillingham
Legendary Scribe
Posts: 272
Joined: Tue Mar 16, 2010 11:52 am
Location: Williamsburg, VA

Re: wasn't gonna post but meh...autolooter

Post by dillingham »

Its not bad if your only grabing a few things
HACKSAW
It is better to lead from behind and to put others in front, especially when you celebrate victory when nice things occur. You take the front line when there is danger. Then people will appreciate your leadership.
Nelson Mandela
Nunja
Grandmaster Scribe
Posts: 79
Joined: Mon Feb 21, 2011 9:27 pm

Re: wasn't gonna post but meh...autolooter

Post by Nunja »

Dramoor wrote:This will still crash like Kiannas uber looter crashes. Uses exevent drag and exevent drop which u cannot be moving in game while these are going off.
Is there a way to drag and drop that doesn't crash?

I use BMAutomaticLooting at times, but I often don't bother as the crashing is really annoying.
User avatar
Xavian
Legendary Scribe
Posts: 485
Joined: Sun Dec 25, 2011 4:09 pm

Re: wasn't gonna post but meh...autolooter

Post by Xavian »

I only briefly ran this in the form that he posted it, but it doesn't crash too bad. I have heavily modified it to be a quite a bit more picky than the form above and it doesn't crash often at all.
Dramoor
Legendary Scribe
Posts: 450
Joined: Wed Feb 23, 2011 7:37 pm

Re: wasn't gonna post but meh...autolooter

Post by Dramoor »

Its a "bug" in easyuo. You can use another solution that basically uses ur screen to drag it then drop to an x y coord, but At the same time, You will not be allowed to use ur mouse to move it or any of that lol even typing can be annoying if u use it to hit "enter" key to help with the dragging. So its annoying no touch, or annoying no touch/hope ur attacker doesnt go off and crash you. from what I can see.
I only briefly ran this in the form that he posted it, but it doesn't crash too bad. I have heavily modified it to be a quite a bit more picky than the form above and it doesn't crash often at all.


Crashing itself comes from movement while using the exevent drag macro Its a bug in easyuo.
Never fixed because they upgraded to Open Easy uo.

so if u stand in one spot, dont move, and have it say implimented in your own script, so no others move while using it, it probably wont crash. But if you even walk away from a corpse it wants to loot, it has a chance of crashing.
User avatar
Violette001
Journeyman Scribe
Posts: 21
Joined: Thu Jan 24, 2013 10:36 am

Re: wasn't gonna post but meh...autolooter

Post by Violette001 »

So, this doesn't explain why I can't save my settings at all.

Do you know of any better auto looters? I've tried a few others but none were as nice as this.

I'd hate to go back to [claim, since I'm broke and need those extra few items I pick up.
User avatar
Xavian
Legendary Scribe
Posts: 485
Joined: Sun Dec 25, 2011 4:09 pm

Re: wasn't gonna post but meh...autolooter

Post by Xavian »

It should save another file named SmartLooter.cfg or something like that in the same file as the script. Does it? That is where it stores all of the data you want it to save
User avatar
Violette001
Journeyman Scribe
Posts: 21
Joined: Thu Jan 24, 2013 10:36 am

Re: wasn't gonna post but meh...autolooter

Post by Violette001 »

Xavian wrote:It should save another file named SmartLooter.cfg or something like that in the same file as the script. Does it? That is where it stores all of the data you want it to save
It does put a SmartLooter.cfg file in the same folder as the script. But it is not my saved configuration. I've tried everything I could think of to get it work.

For now, I've just edited the original script and changed all the defaults to the ones I want. That seems to be working atm. If I ever want to update or change it, I'll just go into the the original script again.

It's kinda neat. I was able to specify which Necro or Mage scrolls I want. I could also add druid scrolls in the future if I need those again too.
User avatar
Xavian
Legendary Scribe
Posts: 485
Joined: Sun Dec 25, 2011 4:09 pm

Re: wasn't gonna post but meh...autolooter

Post by Xavian »

Only thing I can figure is that it isn't saving your char name in the .cfg file. If that is the case then it would reset everytime you start it up. Check the .cfg file and see what the char name is that is listed there. If it's yours, then I got nothing.. lol
Locked