Lumberjackingscript von Bonbori
Aus UO-Sigena Wiki
Version vom 25. Mai 2017, 21:52 Uhr von Bonbori (Diskussion | Beiträge) (Kategorisierung, Typo, Verlinkung)
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
Mit dem Wegpunktscript von Bonbori können die Wegpunkte sehr komfortabel erstellt werden.
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