Lumberjackingscript von Bonbori

Aus UO-Sigena Wiki
Wechseln zu: Navigation, Suche

Dieses Script arbeitet vollautomatisch. Es läuft von Baum zu Baum auf einer vordefinierten Route, hackt holz und packt es in ein Packpferd, das man dabei haben muss. Sind alle Wegpunkte abgearbeitet, beendet sich das Script.

Die Wegpunkte haben folgendes Format und müssen einmalig an der markierten Stelle im Script eingefügt werden:

; [Wegpunktnummer]: (Beginnend mit 0)
; move [X] [Y] 0 30s
; goto inc
; Beispiel:

0:
move 1000 2000 0 30s
goto inc

Script:

set #lpc 100
tile init noOverrides
set %msg1 Stämme_in_Euren_Rucksack.
set %msg2 Es_gelingt_euch_nicht
set %msg3 kein_verwertbares_Holz
set %msg4 zu_weit_entfernt.
set %msg5 Ihr_unterbrecht
set %msg6 Baumschlange
set %wegpunkt 0

; =========== Benutzereingaben ============== ;
set %werkzeug XXX ; Hier muss man den Typ der Äxte eintragen, die man nutzen will.
set %maxwegpunkte 0 ; Muss der Anzahl der Wegpunkte entsprechen.
; =========================================== ;

start:
gosub search
if ( %wegpunkt >= %maxwegpunkte + 1 )
   halt
gosub movenext
goto start




sub search
    for %i 0 2
        {
        for %j 0 2
            {
             set %x ( #charposx - 1 + %i )
             set %y ( #charposy - 1 + %j )
             tile cnt %x %y #cursKind
             for %z 1 #tilecnt
                 {
                  tile get %x %y %z #cursKind
                  if ( ( baum in #tilename ) || ( ( Zeder in #tilename ) && ( Zedern notin #tilename ) ) || ( ( Eiche in #tilename ) && ( Eichen notin #tilename ) ) || ( ( Walnuss in #tilename ) && ( Walnussl notin #tilename ) ) || ( ( Weide in #tilename ) && ( Weiden notin #tilename ) ) )
                     gosub lumber
                 }
            }
        }
return

sub lumber
startlumber:
    finditem %werkzeug C
     if #findkind <> -1
        {
         set #lObjectID #findID
         event macro 17
         target
         set #ltargetx %x
         set #ltargety %y
         set #ltargetz %z
         set #ltargettile #tiletype
         set #ltargetkind 3
         set %js #jindex
          event macro 22
          }
          warten:
          wait 1
          set %je #jindex
          for %i2 %js %je
          {
          scanjournal %i2
          if ( %msg1 in #journal ) || ( %msg2 in #journal ) || ( %msg5 in #journal ) || %msg6 in #journal
          {
          goto startlumber
          ;event sysmessage Fertig und nochmal
          }
          if ( %msg3 in #journal ) || ( %msg4 in #journal )
          {
          ;event sysmessage Fertig, Baum leer oder zu Weit weg.
          goto endlumber
          }
          }
          goto warten

endlumber:
if ( #weight >= ( #maxweight - 15 ) )
gosub umpacken
}
return

sub movenext
goto %wegpunkt

; ==================== ;
; == Wegpunkte hier == ;
; ==================== ;

; ==================== ;
inc:
set %wegpunkt %wegpunkt + 1
return

sub umpacken
    set %packy BO
    set #nextcposx 0
    set #nextcposy 0
      tryagain:
      finditem %packy G_1
      if #findkind = -1
         {
         msg all come $
         wait 1s
         goto tryagain:
         }
      if #findkind <> -1
         {
         set #lobjectid #findid
         event macro 17 0
         wait 1s
         finditem ZLK C_ , #backpackid
            if #findkind = -1
            return
         set %_contid #contid
         exevent drag #findid #findstack
         wait 10
         exevent dropc %_contid
         }

return