Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - Ramses

Pages: [1]
1
ScriptUO Questions and Answers / ScriptUO...?
« on: August 01, 2008, 07:58:52 PM »
Hey TM,

How is ScriptUO coming? I like the main section and cannot wait to actually run some script within it.  :)


2
Scripting Chat / Question
« on: July 29, 2008, 01:54:05 PM »
TM,
In your tool_runebook_travel sub....
Code: [Select]
;=================================================================
; Script Name: TrailMyx's Runebook/Spellcast Subs
; Author: TrailMyx
; Version: 2.5
; Shard OSI / FS: OSI / FS
; Revision Date: 09/27/2007
; Purpose:
;   Runebook subs to manage your runebook travel needs.  You need either to know
;   the runebook ID or runebook name.
;
; Subroutines:
;     TM_NewCastSpell - casts spells with appropriate waits, delays, retrys.
;     TM_TravelFromRunebook - Uses specified runbook #FINDID to travel from .  If a location is blocked
;                             the next location will be tried until success.
;     TM_TravelFromNamedRunebook - Same as TM_TravelFromRunebook, but allows you to specify a runebook name
;
;  Examples:
;     gosub TM_NewCastSpell 31 !rbook 10 20 20 ; recall
;     gosub TM_TravelFromRunebook RE 1 3 %runebookid ; travel (recall) to location from #FINDID runebook using slots 1-3
;     gosub TM_TravelFromNamedRunebook GA 1 2 LUMBERJACKING1 ; gate using LUMBERJACKING1 runebook starting at rune 1
;     gosub TM_RandomRunebookTravel SJ 1 6 %runebookid  ; Randomly choose a rune from 1-6 in runebook
;     gosub TM_TravelFromObject RE %runeid ; travels to rune specified by %runeid
;
;  Use of these subrountes is allowed, but please give me (TrailMyx) credit somewhere in your script.
;
;  Release History:
;     2.0 - Initial public release
;     2.1 - Bug in TM_FindValidTextNoAdvance, added return value to TM_TravelFromNamedRunebook
;     2.2 - Bug in TM_NewCastSpell when mana gets too low
;     2.3 - Better spellcasting for chivalry, necro
;           Added TM_TravelFromNamedRunebook
;           Added TM_RandomRunebookTravel
;     2.4 - Little fix for journal handler
;     2.5 - Hack to allow for transport through a red moongate.
;
;  Requirements:
;
;    This script requires that you have your character name
;    setup in a variable called %charname.  Place this bit of code
;    in your script initialization somewhere:
;
;   gosub TM_AddUnderscore #CHARNAME
;   set %charname #RESULT
;=================================================================

The last two lines here
;   gosub TM_AddUnderscore #CHARNAME
;   set %charname #RESULT

Where do I find this Subroutine TM_Addunderscore ? I cannot locate it and would really like to check this out.

thanks.

3
Misc. Scripts / Sheep, shear, kill, rinse and repeat
« on: July 25, 2008, 01:46:21 PM »
Thank you TM for all of your help with this script!

This script uses a secure at your house, uses rune books to travel to sheep pens to shear, kill all of the sheep in the pen. Then moves on to the next pen in your rune book(s). Rune books must be labeled Sheep 4 (number of runes in book) for the script to travel to all of the runes you have marked. The wool will be dropped off at your secure, using either recall or Chiv (SJ).

4
Resource Farming / Shear Sheep, kill and repeat
« on: July 11, 2008, 05:01:47 PM »
TM or anyone else...
Can you look through this for me. Currently, the script finally uses the rune books ( I installed TM's subs ) however, I still think I am missing something as the rune is never advanced. Also, the for loop does not work as it shears, kill, and then waits for more to spawn instead of leaving to another pen.  :(

Code: [Select]

;==============================================================
; Script Name: Sheep Shear, Kill and Repeat
; Author: Ramses
; Version: 1.0
; Client Tested with:
; EUO version tested with: 141
; Shard OSI / FS: OSI
; Revision Date:
; Public Release:
; Purpose: To gather wool for making cloth
;
;==============================================================
;
; Acknowledgements:
; Drak for testing
; Nicar and Freddy for support and help
; TrailMyx (TM) for review, support, runebook subs and formatting
;
;==============================================================
;
; Script Notes:
; Rune Books must be labeled with the word Sheep, multiple books are ok.
; One Rune book must be labeled House or Home with your house as rune #1
;
;==============================================================
;==============================================================
;==============================================================
; Inits & Setup GoSubs
;==============================================================
finditem TSF_WSF_ c
if #findkind = -1
{
  display Ok, you do not have a dagger in your backpack. Please get
  + one and then restart the script, or count resources using UOA
  + and then restrat the script.
  halt
}
set %daggerID #findid

GoSub setup
GoSub setup_secure_runebook %travel_method 1 1 %securerunebookid
GoSub setup_sheep_runebooks
set %numberOfBooks #result
GoSub setup_opperation

;===============================================================
; Begin Main Loop
;===============================================================
MAIN_LOOP:
GoSub to_sheep
GoSub find_sheep %sheeptypes G_16
if %overweight = YES
{
        GoSub TM_TravelFromRunebook %travel_method 1 1 %securerunebookid
  GoSub to_house
}
goto main_loop
;===============================================================
; End Main Loop
;===============================================================
;===============================================================
; Kill sheep
;===============================================================
Sub kill
set #lobjectid %sheepID
  event macro 27 0
  wait 3
;check_death
SCAN:
  event macro 27 0
  wait 2
  finditem #lobjectid
  if #findkind = -1
  return
Goto scan
;===============================================================
; Find the Sheep
;===============================================================
sub find_sheep
  set %new_startposx #CHARPOSX
  set %new_startposy #CHARPOSY
  set %new_startposz #CHARPOSZ
  set %moveinitposy %new_startposy + 1
  event pathfind %new_startposx %moveinitposy %new_startposz

      shear_another:
      finditem %sheeptypes G_16
      set %sheepID #findid
      if #findkind = - 1
            {
              goto move_to_next_pen
            }
      set %x #charposx - 1
      set %y #charposy - 1
      set %x_limit #charposx + 16
      set %y_limit #charposy + 16
      While #finddist > 2
      {
      event pathfind #findx #findy #findz
      wait 1
      }
      GoSub check_weight
      GoSub shear_sheep
      GoSub kill
      goto shear_another
     
move_to_next_pen:
    gosub calc_next_location
    Return                  ;goto main_loop

;===============================================================
; Shear Sheep
;===============================================================
sub shear_sheep
  wait 1
  set #lobjectid %daggerID
  event macro 17 0
  target
  wait 5
  set #ltargetid %sheepID
  set #ltargetkind 1
  event macro 22 0
return
;===============================================================
; Sub Setup_Opperation for method of travel
;===============================================================
sub setup_opperation
  set %travel_method SJ
  display YESNO Do you wish to use sacred journaey rather than recalling?
  if #dispres = NO
  {
    set %travel_method RE
  }
SETUP_OF_OPPERATION_COMPLETE:
  GoSub setup_secure
return
;===============================================================
; Check Weight
;===============================================================
sub check_weight
  if #weight > #maxweight - 30
    set %overweight YES
  if #weight > 390
    set %overweight YES
  if %overweight = YES
  {
        GoSub TM_TravelFromRunebook %travel_method 1 1 %securerunebookid
    GoSub to_house
  }
return
;===============================================================
; Drop Wool
;===============================================================
sub drop_off
  finditem %wool C_ , %packid
  if #findkind <> -1
  {
    exevent drag #findid #findstack
    exevent dropc %secure
    wait 5s
  }
  set %overweight NO
return
;===============================================================
; Return Home and move to secure
;===============================================================
sub to_house
  wait 2
_pathfind:
  event pathfind %start_x %start_y %start_z
  wait 2s
  if #charposx <> %start_x
    goto _pathfind
  if #charposy <> %start_y
    goto _pathfind
  if #charposz <> %start_z
    goto _pathfind
  GoSub drop_off
  GoSub to_sheep
return
;===============================================================
; Setup the Secure at house
;===============================================================
sub setup_secure
  event sysmessage Now click on your secure container
  wait 5
  set #targcurs 1
  target
  while #targcurs = 1
    wait 0
  set %secure #ltargetid #findx #findy #findz
  GoSub check_weight
  wait 2
return
;===============================================================
; To Sheep Pen
;===============================================================
sub to_sheep
set %currentBookID %_runebook . %currentSet
    GoSub TM_TravelFromRunebook %travel_method %currentRune 16 %currentBookID
return
;===============================================================
;
;
;
;
;===============================================================
;===============================================================
; Movement with runebook
; TM RuneBook Subs
;===============================================================
;===============================================================
;
;
;
;

;===============================================================
; Script Name: TrailMyx's Runebook/Spellcast Subs
; Author: TrailMyx
; Version: 2.5
; Shard OSI / FS: OSI / FS
; Revision Date: 09/27/2007
; Purpose:
;   Runebook subs to manage your runebook travel needs.  You need either to know
;   the runebook ID or runebook name.
;
; Subroutines:
;     TM_NewCastSpell - casts spells with appropriate waits, delays, retrys.
;     TM_TravelFromRunebook - Uses specified runbook #FINDID to travel from .  If a location is blocked
;                             the next location will be tried until success.
;     TM_TravelFromNamedRunebook - Same as TM_TravelFromRunebook, but allows you to specify a runebook name
;
;  Examples:
;     gosub TM_NewCastSpell 31 !rbook 10 20 20 ; recall
;     gosub TM_TravelFromRunebook RE 1 3 %runebookid ; travel (recall) to location from #FINDID runebook using slots 1-3
;     gosub TM_TravelFromNamedRunebook GA 1 2 LUMBERJACKING1 ; gate using LUMBERJACKING1 runebook starting at rune 1
;     gosub TM_RandomRunebookTravel SJ 1 6 %runebookid  ; Randomly choose a rune from 1-6 in runebook
;     gosub TM_TravelFromObject RE %runeid ; travels to rune specified by %runeid
;
;  Use of these subrountes is allowed, but please give me (TrailMyx) credit somewhere in your script.
;
;  Release History:
;     2.0 - Initial public release
;     2.1 - Bug in TM_FindValidTextNoAdvance, added return value to TM_TravelFromNamedRunebook
;     2.2 - Bug in TM_NewCastSpell when mana gets too low
;     2.3 - Better spellcasting for chivalry, necro
;           Added TM_TravelFromNamedRunebook
;           Added TM_RandomRunebookTravel
;     2.4 - Little fix for journal handler
;     2.5 - Hack to allow for transport through a red moongate.
;
;  Requirements:
;
;    This script requires that you have your character name
;    setup in a variable called %charname.  Place this bit of code
;    in your script initialization somewhere:
;
;   gosub TM_AddUnderscore #CHARNAME
;   set %charname #RESULT
;=================================================================
;-------------------------------------------------------------------------------
; %1 = spell number
; %2 = #TARGETID or SELF or NONE
; %3 = retry count (-1 = cast until successful)
; %4 = cast delay
; %5 = recovery delay
sub TM_NewCastSpell
  namespace push
  namespace local NCS
  set !lpc #LPC
  set #LPC 100
  set !whichspell %1
  set !whichtarget %2
  set !castretrymax %3
  set !waitdelay %4
  set !recovery_delay %5

  set !castretry 0
  set !temp_ltargetid #LTARGETID
  set !temp_ltargetkind #LTARGETKIND

  NewCastSpell_loop1:
    if !castretrymax < 0
      goto NewCastSpell_cont1
    if !castretry > !castretrymax
      goto NewCastSpell_end1
    NewCastSpell_cont1:
      gosub TM_AdvJournalSync SPELLCAST
      set #LTARGETKIND 1
      set #LTARGETID !whichtarget
      set !tempmana #MANA
      event macro 15 !whichspell ; cast the spell
      wait !waitdelay
      set !targettimeout #SCNT + 7
      NewCastSpell_wait1:
        gosub TM_AdvJournalScan SPELLCAST VALID you_have_not_yet mana your_spirit more_reagents
        if #RESULT = #TRUE || #SCNT > !targettimeout
        {
          set !casttimeout #SCNT2 + !recovery_delay
          repeat
          until #SCNT2 > !casttimeout     ; finish up cast delay
          set !castretry !castretry + 1
          goto NewCastSpell_loop1
        }
        if !whichtarget = NONE
          goto NewCastSpell_skip1
        if #TARGCURS = 1
          goto NewCastSpell_targ1
        goto NewCastSpell_wait1 ; wait for target cursor

  NewCastSpell_targ1:
    if !whichtarget = SELF
      event macro 23
    else
      event macro 22

  NewCastSpell_skip1:
    wait 5
    set !casttimeout #SCNT2 + !recovery_delay
    NewCastSpell_skip2:
      if !whichspell >= 0 && !whichspell <= 63 ; Magery
      {
        gosub TM_AdvJournalScan SPELLCAST VALID spell_fizzles there_is_already mana your_spirit more_reagents
      }
      else
      {
        set !cont #FALSE  ; Chivalry, Necromancy, etc
        finditem !whichtarget *
        if !whichtarget in SELF_NONE || #FINDKIND <> -1
          set !cont #TRUE

        if #MANA >= !tempmana && !cont = #TRUE ; check if target is still there
          set #RESULT #TRUE
        else
          set #RESULT #FALSE
      }
      repeat
      until #SCNT2 > !casttimeout     ; finish up cast delay
      if #RESULT = #TRUE
      {
        if !castretrymax > -1
        {
          set !castretry !castretry + 1 ; %castretrymax of -1 will cast until successful
          if !castretry > !castretrymax
            goto NewCastSpell_end1
        }
        goto NewCastSpell_loop1
      }
      if #SCNT2 <= !casttimeout     ; finish up cast delay
        goto NewCastSpell_skip2
  NewCastSpell_end1:
    set #LTARGETID !temp_ltargetid
    set #LTARGETKIND !temp_ltargetkind
    set #LPC !lpc
    namespace pop
return
;-------------------------------------------------------------------------------
; %1 = Method (RE, GA, SJ)
; %2 = index location within runebook (1-16)
; %3 = index location within runebook (1-16), try up to this point
; %4 = runebook item id
; returns #TRUE if error, #FALSE for no error
sub TM_TravelFromRunebook
  namespace push
  namespace local RFR
  set #LTARGETKIND 1
  set !method %1
  set !locindex %2
  set !locindexend %3
  set !rbook %4

  finditem !rbook C_ , #BACKPACKID
  if !method notin RE_GA_SJ || #FINDKIND = -1
  {
    namespace pop
    return #TRUE
  }
  if !locindex notin 1_2_3_4_5_6_7_8_9_10_11_12_13_14_15_16
  {
    namespace pop
    return #TRUE
  }
  if !locindexend notin 1_2_3_4_5_6_7_8_9_10_11_12_13_14_15_16
  {
    namespace pop
    return #TRUE
  }

  TravelFromRunebook_loop1:
    set #LOBJECTID !rbook
    set #LTARGETKIND 1
    event macro 17 0
    gosub GumpWait generic_gump generic_gump

    set !runeclickx 140 ; page 1, rune 1
    set !runeclickx ( #CONTPOSX + !runeclickx + ( 35 * ( ( !locindex - 1 ) / 2 ) ) )
    if !locindex > 8
    {
      set !runeclickx 310 ; page 2, rune 1
      set !runeclickx ( #CONTPOSX + !runeclickx + ( 35 * ( ( !locindex - 9 ) / 2 ) ) )
    }
    set !runeclicky #CONTPOSY + 196
    click !runeclickx !runeclicky
    wait 5

    set !runeclicky #CONTPOSY + 24
    set !runeclickx #CONTPOSX + 164 ; page 1 set to default
    if !locindex % 2 = 0
    {
      set !runeclickx #CONTPOSX + 305 ; page 2 set to default
    }
    click !runeclickx !runeclicky
    wait 5
    set !oldx #CHARPOSX
    set !oldy #CHARPOSY
    if !method = RE
      gosub TM_NewCastSpell 31 !rbook -1 10 10 ; recall until successful
    if !method = GA
    {
      gosub TM_NewCastSpell 51 !rbook -1 10 20 ; gate until successful
      set !temp_cnt #SCNT + 10
      repeat
        finditem KEF_OTF_JEF G_0
      until #FINDKIND <> -1 || #SCNT > !temp_cnt
      if #FINDKIND <> -1
      {
        set #LOBJECTID #FINDID
        wait 10
        event macro 17 0
        wait 20
        if #CONTNAME = generic_gump && #CONTSIZE = 420_280
        {
          gosub TM_AdvJournalSync SPELLCAST
          set !clickx #CONTPOSX + 26
          set !clicky #CONTPOSY + 261
          click !clickx !clicky ; click ok
        }
      }
    }

    if !method = SJ
      gosub TM_NewCastSpell 210 !rbook -1 10 30 ; sacred journey until successful
    wait 30

    set !tempscnt #SCNT + 10
  WaitforTravel_loop1:
    gosub TM_AdvJournalScan SPELLCAST VALID location_is_blocked something_is_blocking you_spirit_lacks
    if #RESULT = #TRUE
    {
      gosub TM_AdvJournalSync SPELLCAST
      set !locindex !locindex + 1
      if !locindex > !locindexend
      {
        namespace pop
        return #TRUE
      }
      goto TravelFromRunebook_loop1
    }
    if ( ( #CHARPOSX = !oldx && #CHARPOSY = !oldy ) && #SCNT < !tempscnt )
      goto WaitforTravel_loop1

  if #CONTNAME = generic_gump && #CONTSIZE = 452_236 ; RunUO close runebook
  {
    set !clickx #CONTPOSX + 120
    set !clicky #CONTPOSY + 60
    click !clickx !clicky mc r
    wait 5
  }
  namespace pop
  click 401 254 n
return #FALSE
;------------------------------------------------
; %1 method
; %2 starting index
; %3 ending index
; %4 runebook name
sub TM_TravelFromNamedRunebook
  namespace push
  namespace local TFNR
  set !method %1
  set !start_index %2
  set !end_index %3
  set !runbook_name %4
  if !method notin RE_GA_SJ
  {
    namespace pop
    return #TRUE
  }
  if !start_index notin 1_2_3_4_5_6_7_8_9_10_11_12_13_14_15_16
  {
    namespace pop
    return #TRUE
  }
  if !end_index notin 1_2_3_4_5_6_7_8_9_10_11_12_13_14_15_16
  {
    namespace pop
    return #TRUE
  }
  locatenamedrunebook:
    finditem ZBN C_ , #BACKPACKID
    if #FINDKIND <> -1
    {
      event property #FINDID
      if !runbook_name in #PROPERTY
      {
        gosub TM_TravelFromRunebook !method !start_index !end_index #FINDID ; recall to location
      }
      else
      {
        ignoreitem #FINDID rbook
        goto locatenamedrunebook
      }
    }
    else
    {
      display ok Cannot locate specified runebook named , #SPC , !runbook_name
      stop
    }
  ignoreitem reset rbook
  namespace pop
return
;-------------------------------------------------------------------------------
sub TM_RandomRunebookTravel
  namespace push
  namespace local RRT
  set !travelmethod %1
  set !rune1 %2
  set !rune2 %3
  set !runebook %4
  if !rune1 > !rune2
  {
    set !temp !rune2
    set !rune2 !rune1
    set !rune1 !temp
  }
  RunebookTravel_loop1:
    set !random #RANDOM
    set !rune ( ( !random % ( !rune2 - !rune1 + 1 ) ) + !rune1 )
    gosub TM_TravelFromRunebook !travelmethod !rune !rune !runebook
    if #RESULT = #TRUE
      goto RunebookTravel_loop1
  namespace pop
return
;-------------------------------------------------------------------------------
; %1 = Method (RE, GA, SJ)
; %2 = Object Findid
; returns #TRUE if error, #FALSE for no error
sub TM_TravelFromObject
  namespace push
  namespace local RFR
  set !method %1
  set !object %2

  finditem !object C_ , #BACKPACKID
  if !method notin RE_GA_SJ || #FINDKIND = -1
  {
    namespace pop
    return #TRUE
  }

  set !oldx #CHARPOSX
  set !oldy #CHARPOSY
  TravelFromObject_loop1:
    if !method = RE
      gosub TM_NewCastSpell 31 !object -1 10 10 ; recall until successful
    if !method = GA
    {
      gosub TM_NewCastSpell 51 !object -1 10 20 ; gate until successful
      set !temp_cnt #SCNT + 10
      repeat
        finditem KEF_OTF_JEF G_0
      until #FINDKIND <> -1 || #SCNT > !temp_cnt
      if #FINDKIND <> -1
      {
        set #LOBJECTID #FINDID
        wait 10
        event macro 17 0
        wait 20
        if #CONTNAME = generic_gump && #CONTSIZE = 420_280
        {
          gosub TM_AdvJournalSync SPELLCAST
          set !clickx #CONTPOSX + 26
          set !clicky #CONTPOSY + 261
          click !clickx !clicky ; click ok
        }
      }
    }

    if !method = SJ
      gosub TM_NewCastSpell 210 !object -1 10 30 ; sacred journey until successful
    wait 30

    set !tempscnt #SCNT + 10
  WaitforTravel2_loop1:
    gosub TM_AdvJournalScan SPELLCAST VALID location_is_blocked something_is_blocking your_spirit_lacks
    if #RESULT = #TRUE
    {
      gosub TM_AdvJournalSync SPELLCAST
      set !locindex !locindex + 1
      if !locindex > !locindexend
      {
        namespace pop
        return #TRUE
      }
      goto TravelFromObject_loop1
    }

    if ( ( #CHARPOSX = !oldx && #CHARPOSY = !oldy ) && #SCNT < !tempscnt )
      goto WaitforTravel2_loop1
  namespace pop
return #FALSE
;-------------------------------------------------------------------------------
; %1 - Journal Name
; %2 - #LPC setting (optional)
; Brings !_jindex up to the most recent #journal entry
sub TM_AdvJournalSync
  namespace push
  namespace local TM_AdvJS_ , %1
  set !_jindex #jindex + 1
  if %0 > 1
    set !lpc_set %2
  namespace pop
  set !TM_FunctionCalled #TRUE
return
;-------------------------------------------------------------------------------
; %1 - Journal Name
; %2 - NONE, ADVANCE , ( _VALID ) - advances jindex pointer, anything else
; %3, %4, %5, etc strings to match
; returns #TRUE for match, #FALSE for no match
;  Will not advance !_jindex pointer to allow for scanning journal history for more than one search.
;  Also searches for : , #SPC in journal entry to be sure someone isn't spamming the text
;  About %2 arguments:
;    NONE: defaults to basic journal scan (no SPAM checking, no #jindex pointer copy advancing)
;    ADVANCE: no spam checking, advances #jindex copy
;    VALID: invokes SPAM filtering, no advance of #jindex copy
;    VALID_ADVANCE, VALIDADVANCE, ADVANCE_VALID, etc.: invokes SPAM filtering, advances of #jindex copy
sub TM_AdvJournalScan
  namespace push
  namespace local TM_AdvJS_ , %1
  set !args %2
  set !temp_lpc #LPC
  if !lpc_set = N/A
    set #LPC 1000
  else
    set #LPC !lpc_set
  set !num_args %0
  set !first_arg 3
  if !_jindex = N/A
    set !_jindex #jindex
  if !charname = N/A
  {
    set !charname #CHARNAME
    AdvJournalScan_loop1:
      str pos !charname #SPC
      if #STRRES <> 0
      {
        set !val #STRRES - 1
        str left !charname !val
        set !left #STRRES
        set !val !val + 1
        str del !charname 1 !val
        set !charname !left , _ , #STRRES
        goto AdvJournalScan_loop1
      }
  }
  set !index !first_arg
  repeat
    set !temp_jindex !_jindex
    set !text % . !index
    while !temp_jindex <= #jindex
    {
      scanjournal !temp_jindex
      str pos #JOURNAL !charname 1
      set !namepos #STRRES
      str count #JOURNAL !charname
      set !namecnt #STRRES
      str pos #JOURNAL :_ 1
      set !smcpos #STRRES
      str pos #JOURNAL !text 1
      set !textpos #STRRES
      if !textpos < !smcpos && !smcpos <> 0 || !smcpos = 1 || :_ notin #JOURNAL || VALID notin !args
        set !pass #TRUE
      else
        set !pass #FALSE
      if ( !text in #journal && ( ( !namepos = 1 && !namecnt <= 1 ) || !pass ) )
      {
        set !temp_jindex !temp_jindex + 1
        if ADVANCE in !args
          set !_jindex !temp_jindex
        set #LPC !temp_lpc
        namespace pop
        set !TM_FunctionCalled #TRUE
        return #TRUE
      }
      set !temp_jindex !temp_jindex + 1
    }
    set !index !index + 1
  until !index - !first_arg > !num_args - !first_arg
  set #LPC !temp_lpc
  namespace pop
  set !TM_FunctionCalled #TRUE
return #FALSE
;-------------------------------------------------------------------------------
; %1 = Gumpname 1
; %2 = Gumpname 2
; #TRUE gump occured before timeout
sub GumpWait
  namespace push
  namespace local GW
  wait 10
  set !timedelay #SCNT
  while #SCNT <= !timedelay + 7
  {
    if #CONTNAME = %1 || #CONTNAME = %2
    {
      namespace pop
      return #TRUE
    }
  }
  namespace pop
return #FALSE
;===============================================================
; End TM RuneBook Subs
;===============================================================
;===============================================================
;
;
;
;
;===============================================================
; Following Subs are excerpts From TM's recall LJ'ing script
;===============================================================
;==================================================================================================
; setup_secure_runebook: Setup secure runebook
;==================================================================================================
sub setup_secure_runebook
event sysmessage Now click on your secure Rune Book (House rune must be in the number one location)
  wait 1
  set #targcurs 1
  while #targcurs = 1
    wait 0
set %securerunebookid #ltargetid
return
;==================================================================================================
; setup_sheep_runebooks: Setup runebooks for sheep
;==================================================================================================
sub setup_sheep_runebooks


  set %z 0
sheepbook:
  finditem ZBN C_ , #backpackid
  if #findid = x
    goto rbs2
  event property #findid
  if sheep in #property
  {
    set %z %z + 1
    set #lobjectid #findid
    set %_runebook , %z #lobjectid
    gosub rune
    set %_numrunes , %z %qqq
  }
  ignoreitem #findid
  goto sheepbook

rbs2:
  if %z < 1
  {
    menu hide
    display ok No sheep books found.  (Script stopping)
    halt
  }

  ignoreitem reset

rbsend:

return %z
;==================================================================================================
; rune: Figure out number of runes in runebook or which rune is house rune
;==================================================================================================
sub rune
   set %qqq 16
up:
   if %qqq notin #property
      {
        set %qqq %qqq - 1
        goto up
      }
return

;==================================================================================================
; calc_next_location: moves book and rune pointers to next location
;==================================================================================================
sub calc_next_location
set %currentRune %currentRune + 1
    if %currentRune > %_numrunes . %currentSet
    {
       set %currentRune 1
       set %currentSet %currentSet + 1
       if %currentSet > %numberOfBooks
          set %currentSet 1
    }
return
;===============================================================
; End Subs from TM's recall LJ'ing script
;===============================================================
;===============================================================
;
;
;
;
;===============================================================
;===============================================================
; Main Setup
;===============================================================
sub setup
    gosub TM_AddUnderscore #CHARNAME
    set %charname #RESULT

  set #lpc 100
  set %wool OFF_
  set %start_x #charposx
  set %start_y #charposy
  set %start_z #charposz
  set %sheeptypes FG_PF_
    ;Runebook variables
    set %currentBookID x
    set %currentRune 1
    set %numberOfBooks 0
    set %currentSet 1
    set %jstart #jindex
   
    set %securerune 17
    set %securerunebookid NA

  event macro 31 0 ; CLOSES ALL GUMPS

  event macro 8 1
wait_for_paperdoll_to_open:
  if #contname <> paperdoll_gump
  {
    goto wait_for_paperdoll_to_open
  }
  contpos 850 2 ;643 -193 (if normal screen size)
  set %packx 781
  set %packy 30
  set %paperdoll #contid
  set %paperdollx 750
  set %paperdolly 64
  wait 15

  event macro 8 2
wait_for_status_to_open:
  if #contname <> status_gump
  {
    goto wait_for_status_to_open
  }
  contpos 700 300 ;-24 493 (if normal screen size)
  wait 15
  event macro 8 7
wait_for_pack_to_open:
  if #contid <> #backpackid
  {
    goto wait_for_pack_to_open
  }
  set %packid #contid
  contpos 812 500 ; 612 118 (if normal screen size)
  wait 15

return
;===============================================================
; End of Sheep Shearing, Killing, Rinse Repeating Script !!!!!!!
;===============================================================
;
;                             RAMSES
;
;===============================================================


Thank you all...

5
Script Debug / Having issue with my runebook code.
« on: July 03, 2008, 03:49:14 PM »
Hoping that someone can help me here.

This script is for finding and shearing sheep, killing, and when over weight dropping to a secure. Everything seems to work fine, except changing from one rune toanother within a runebook and I do not know if it will go to the next book, because I keep getting stuck in the first one.

Code: [Select]

;==============================================================
; Script Name: Sheep Shear, Kill and Repeat
; Author: Ramses
; Version: 1.0
; Client Tested with:
; EUO version tested with: 141
; Shard OSI / FS: OSI
; Revision Date:
; Public Release:
; Purpose: To gather wool for making cloth
;
;==============================================================
;
; Acknowledgements:
; Drak for testing
; Nicar for support and help
;
;==============================================================
;
; Script Notes:
; Rune Books must be labeled with the word Sheep, multiple books are ok.
; One Rune book must be labeled House or Home with your house as rune #1
;
;==============================================================
;==============================================================
;==============================================================
; Inits & Setup GoSubs
;==============================================================
finditem TSF c
if #findkind = -1
   {
   display ok you do not have a dagger in your backpack, please get
   + one and then restart the script.
   halt
   }
set %daggerID #findid

GoSub setup
GoSub setup_runebooks
GoSub setup_opperation

;===============================================================
; Begin Main Loop
;===============================================================
 MAIN_LOOP:
GoSub to_sheep
GoSub find_sheep ;%sheeptypes G_16
if %overweight = YES
{
 GoSub to_house
}
goto main_loop

halt
;===============================================================
; End Main Loop
;===============================================================
;===============================================================
; Kill sheep
;===============================================================
Sub kill
;set #lobjectid %sheepID
event macro 27 0
wait 3
return
;===============================================================
; Check to ensure dead
;===============================================================
Sub check_death
 SCAN:
event macro 27 0
finditem #ltargetid
if #findkind = -1
   return
Goto scan
;===============================================================
; Find the Sheep
;===============================================================
sub find_sheep
set %new_startposx #CHARPOSX
set %new_startposy #CHARPOSY
set %new_startposz #CHARPOSZ
set %moveinitposy %new_startposy + 1
    {
        event pathfind %new_startposx %moveinitposy %new_startposz
    {
finditem %sheeptypes G_16
for #findindex 1 #findcnt
{
set %sheepID #findid
set %x #charposx - 1
set %y #charposy - 1
set %x_limit #charposx + 16
set %y_limit #charposy + 16
While #finddist > 2
  {
    event pathfind #findx #findy #findz
    wait 1
  }
GoSub check_weight
GoSub shear_sheep
GoSub kill
GoSub check_death
}
return
;===============================================================
; Shear Sheep
;===============================================================
sub shear_sheep
wait 1
set #lobjectid %daggerID
event macro 17 0
target
wait 5
set #ltargetid %sheepID
;set #ltargetkind 1
event macro 22 0
return
;===============================================================
; Sub Setup_Opperation for method of travel
;===============================================================
sub setup_opperation

; DEFAULT VALUES
set %method_of_travel RECALL
set %use_invis NO
set %use_hiding NO
display YESNO Do you wish to use sacred journaey rather than recalling?
if #dispres = YES
   {
    set %method_of_travel SACRED
   }
SETUP_OF_OPPERATION_COMPLETE:
GoSub setup_secure
return
;===============================================================
; Check Weight
;===============================================================
sub check_weight
if #weight > #maxweight - 30
 set %overweight YES
if #weight > 390
 set %overweight YES
if %overweight = YES
   {
    GoSub to_house
   }
return
;===============================================================
; Drop Wool
;===============================================================
sub drop_off
finditem %wool C_ , %packid
if #findkind <> -1
   {
   exevent drag #findid #findstack
   exevent dropc %secure
   wait 5s
   }
set %overweight NO
return
;===============================================================
; To Sheep Pen
;===============================================================
sub to_sheep
GoSub use_runebook %sheep_runebook . %book %method_of_travel %rune
wait 1s
return
;===============================================================
; Movement with runebook
; Runebook subs came from Peragins LJ script (2005)
;===============================================================
sub use_runebook

;%1 - Runebook ID
;%2 - Method used on book - Use runebook charge / Recall / Sacred Journey or Gate
;%3 - Index number of rune to use

;Useage - gosub use_runebook RUNEBOOKID METHOD RUNE#

;===============================================================
; ERROR CHECKS
;===============================================================
if %3 < 1 || %3 > 16
{
 display OK Rune number outwith perameters.
 halt
}
finditem %1
if #findkind = -1
{
 display OK Specified Runebook not found, Check that the container is open.
 halt
}
set #lobjectid #findid
set %methods RECALL_CHARGES_SACRED_JOURNEY_GATE_TRAVEL
if %2 NOTIN %methods
{
 display OK Method to travel not set correctly, please refer to documentation in the subroutine header.
 halt
}
set %charposx #charposx ; next 3 lines set current postion to check to see if you have recalled
set %charposy #charposy
set %charposz #charposz
;===============================================================
; Opening Runebook
;===============================================================
 OPEN_RUNEBOOK:
if #charposx <> %charposx || #charposy <> %charposy
{
 return
}
set %error #scnt + 3
event macro 17 0
wait 5
 OPENING_RUNEBOOK:
if #contsize <> 452_236
{
 if #scnt > %error
 {
  goto open_runebook
 }
 goto opening_runebook
}
set %test_X 137 + #contposx ;X co-ord of pixel to colour check for page turns
set %test_Y 31 + #contposy ;Y co-ord for above
;===============================================================
; SET CO-ORDS OF TAB FOR PAGE TO TURN TO
;===============================================================
set %index_tab %3 * 10 / 2 ;Rune # * 2 / 3 gives the runebook page index tab
str len %index_tab
if #strres = 1
{
 set %index_tab 1
 goto index_tab_set
}
str right %index_tab 1
if #strres = 5
{
 set %index_tab %index_tab / 10
 set %index_tab %index_tab + 1
 goto index_tab_set
}
if #strres = 0
{
 set %index_tab %index_tab / 10
 goto index_tab_set
}
display OK Error proccessing Index tab, please check passed rune number.
 INDEX_TAB_SET:
set %index_tab_offset 35 ;Pixels between page index tabs on the runebook GUMP
set %index_tab_X %index_tab * %index_tab_offset ; Number of TAB offsets
set %index_tab_offset 105 ;Pixels between GUMP edge and the first TAB
set %index_tab_X %index_tab_X + %index_tab_offset ; Number of TAB offsets + distance from edge of GUMP
if %index_tab > 4
{
 set %index_tab_X %index_tab_X + 28   ;set for gap between page 1 and 2
}
set %index_tab_X %index_tab_X + #contposx ;Distance from edge of screen

set %index_tab_Y 196 ;Y co-ord from TOP of GUMP
set %index_tab_Y %index_tab_Y + #contposy ; Y co-ord from TOP of screen
;===============================================================
; Turn to page of Rune Book
;===============================================================
if CHARGE NOTIN %2
{
 click %index_tab_X %index_tab_Y f
 wait 10
 set %page 1
;===============================================================
; SET IF THE JEWEL TO CLICK IS ON THE LEFT OR RIGHT PAGE
;===============================================================
 set %jewel_offset_X 140 ; X CO-ORD OF JEWEL ON LEFT PAGE
 if %rune = 2 || %rune = 4 || %rune = 6 || %rune = 8 || %rune = 10 || %rune = 12 || %rune = 14 || %rune = 16
 {
  set %page 2
  set %jewel_offset_X 300 ; X CO-ORD OF JEWEL ON RIGHT PAGE
 }
 set %jewel_X %jewel_offset_X + #contposx
}
;===============================================================
; SACRED JOURNEY
;===============================================================
if SACRED IN %2
 set %jewel_offset_Y 181
;===============================================================
; GATE TRAVEL
;===============================================================
if GATE IN %2
 set %jewel_offset_Y 161
;===============================================================
; RECALL
;===============================================================
if RECALL IN %2
 set %jewel_offset_Y 141

set %jewel_Y %jewel_offset_Y + #contposy ; Y CO-ORD OF JEWEL DEPENDING ON METHOD CHOSEN
;===============================================================
; RUNEBOOK CHARGES
;===============================================================
if CHARGE IN %2
{
 set %page 1
 set %jewel_offset_X 134
 set %jewel_offset_Y %jewel_offset_Y * %rune
 if %rune > 8
 {
  set %page 2
  set %jewel_offset_X 294
  set %jewel_number %rune - 8
  set %jewel_offset_Y %jewel_offset_Y * %jewel_number
 }
 set %jewel_X %jewel_offset_X + #contposx
 set %jewel_offset_Y 15
 set %jewel_Y 55 + #contposy
 set %jewel_Y %jewel_Y + %jewel_offset_Y
}

click %jewel_X %jewel_Y f ; THIS CLICK ACTIVATES THE RUNE
set %jindex #jindex
set %error #scnt + 10
 RECALLING:
if GATE IN %2
{
 finditem OTF G_1
 if #findkind <> -1
 {
  return
 }
}
if #scnt > %error
{
 goto open_runebook
}
for %line %jindex #jindex
{
 scanjournal %line
 if FIZZLES IN #journal
 {
  goto open_runebook
 }
 if INSUFFICIENT IN #journal
 {
  goto open_runebook
 }
 if REAGENTS IN #journal
 {
  display ok Not enough reagents to travel, an LRC suit is required for this script to work properly.
  halt
 }
 if TITHING IN #journal
 {
  display OK You have run out of tithing points, you'd better get some more.
  halt
 }
 if SOMETHING_IS_BLOCKING_THE_LOCATION IN #journal
 {
  set %3 %3 + 1
  if %3 > 16
  {
   set %3 1
   set %book %book + 1
   if %book > %number_of_sheep_runebooks
   {
    set %book 1
   }
   set %1 %sheep_runebook . %book
  }
  goto open_runebook
 }
}
if #charposx = %charposx && #charposy = %charposy
{
 goto recalling
}

return
;===============================================================
; Return Home
;===============================================================
sub to_house
GoSub use_runebook %HOUSE_RUNEBOOK_ID %method_of_travel 1
wait 2s
_pathfind:
event pathfind %start_x %start_y %start_z
wait 2s
if #charposx <> %start_x
 goto _pathfind
if #charposy <> %start_y
 goto _pathfind
if #charposz <> %start_z
 goto _pathfind
GoSub drop_off
GoSub to_sheep
return
;===============================================================
; Setup the Secure at house
;===============================================================
sub setup_secure

event sysmessage Now click on your secure container
wait 5
set #targcurs 1
target
while #targcurs = 1
      wait 0
set %secure #ltargetid
set %securex #cursorx
set %securey #cursory
GoSub check_weight
wait 2
return
;===============================================================
; Setup runebooks in pack
;===============================================================
sub setup_runebooks
;========================
; setting house runebook
;========================
 find_house_runebook:
finditem ZBN C_ , %packid
wait 1
if #findkind = -1
{
 event sysmessage auto find runebook failed, set runebook names as indicated in the Docs and restart.
 halt
}
event property #findid
wait 1
if HOUSE notin #property
{
 if HOME notin #property
 {
  ignoreitem #findid house_runebooks
  goto find_house_runebook
 }
}
set %house_runebook_id #findid
ignoreitem reset house_runebooks
;========================
; setting sheep runebooks
;========================
set %number_of_sheep_runebooks 0
 find_sheep_runebook:
finditem ZBN C_ , %packid
if #findkind = -1
{
 if %number_of_sheep_runebooks = 0
 {
  display OK Sheep runebook not found, make sure that the book has the word 'SHEEP' in the title.
  halt
 }
 ignoreitem reset sheep_runebooks
 return
}
event property #findid
if SHEEP notin #property
{
 ignoreitem #findid sheep_runebooks
 goto find_sheep_runebook
}
set %number_of_sheep_runebooks %number_of_sheep_runebooks + 1
set %sheep_runebook , %number_of_sheep_runebooks #findid
ignoreitem #findid sheep_runebooks
goto find_sheep_runebook
return
;===============================================================
; Main Setup
;===============================================================
sub setup

set #lpc 100
set %wool OFF_
set %start_x #charposx
set %start_y #charposy
set %start_z #charposz
set %sheeptypes FG_PF_
set %book 1
set %rune 1

set %runebooksize 452_236
set %runebookkind KJCB
set %runebook_test_colour_x 134
set %runebook_test_colour_y 31
set %runebook_test_colour 1052787

event macro 31 0 ; CLOSES ALL GUMPS

event macro 8 1
 wait_for_paperdoll_to_open:
if #contname <> paperdoll_gump
{
 goto wait_for_paperdoll_to_open
}
contpos 850 2 ;643 -193 (if normal screen size)
set %packx 781
set %packy 30
set %paperdoll #contid
set %paperdollx 750
set %paperdolly 64
wait 15

event macro 8 2
 wait_for_status_to_open:
if #contname <> status_gump
{
 goto wait_for_status_to_open
}
contpos 700 300 ;-24 493 (if normal screen size)
wait 15

event macro 8 7
 wait_for_pack_to_open:
if #contid <> #backpackid
{
 goto wait_for_pack_to_open
}
set %packid #contid
contpos 812 500 ; 612 118 (if normal screen size)
wait 15

return
;===============================================================
; End of Sheep Shearing, Killing, Rinse Repeating Script !!!!!!!
;===============================================================
;
;                             RAMSES
;
;===============================================================


looking for all the help I can get...

Thank you,

Ramses

6
New member introductions / Hello ScriptUO
« on: June 30, 2008, 08:59:06 AM »
Hi Scripters!

Ramses here. I have been traveling the UO scripting world from WinUO to UOCoders, and have finally found this one..TM's ScriptUO.

I do not get a lot of time for scripting, but I have been dabbling a bit. I have tested a few scripts and would like to test more, as the testing seems to help me with ideas for my own scripts.

I have programmed in C++, however, that was over ten years ago. My programming abilities are not what they use to be, as I do not have time to program and have lost a bit of the structure for formating a good program or script. Working on it though.  :)


Ramses

Pages: [1]