Lumberjackingscript von Bonbori

Aus UO-Sigena Wiki
Version vom 9. Juli 2013, 17:44 Uhr von Bonbori (Diskussion | Beiträge) (Verbesserungen am Script)

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
set %packy BO_WN ;Packpferd
set %food QQD_UWI_TWI ; Äpfel, Birnen und Pfirsiche
set %last_feeding 0;#sCnt

; ========= Benutzereingaben =================== ;
set %werkzeug FSF ; ID des Werkzeugs
set %maxwegpunkte 0 ; Anzahl der Wegpunkte
set %fressinterval 45 ;Zeit in Minuten, nach der das Packi gefüttert wird
; ============================================== ;

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


sub findpacki
    tryagain:
    finditem %packy G_1
    if #findkind = -1
       {
       msg all come $
       wait 1s
       goto tryagain:
       }
return

sub feedpacki
if ( #sCnt > ( %last_feeding + %fressinterval * 60  ) )
{
   gosub findpacki
   set %packy_cont #findid
   finditem %food C
   if #findkind <> -1
      {
      exevent drag #findid 1
      wait 10
      exevent dropc %packy_cont
      wait 10
      }
   else
       {
       event sysmessage KEIN FUTTER MEHR:::!!!
       }
   set %last_feeding #sCnt
}
return

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
gosub feedpacki
goto %wegpunkt

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

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

sub umpacken
    set #nextcposx 0
    set #nextcposy 0
    gosub findpacki
      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