Miningscript von Bonbori
Aus UO-Sigena Wiki
Version vom 1. November 2018, 23:11 Uhr von Bonbori (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „Dieses Script arbeitet vollautomatisch. Es läuft von Punkt zu Punkt auf einer vordefinierten Route, schaufelt Erz und Sand, hackt Kristalle und pa…“)
Dieses Script arbeitet vollautomatisch. Es läuft von Punkt zu Punkt auf einer vordefinierten Route, schaufelt Erz und Sand, hackt Kristalle und packt es in beliebig viele Packpferde, die man dabei haben muss. Aus praktischen Gründen machen mehr als 3 Packtiere aber keinen Sinn. Sind alle Wegpunkte abgearbeitet, oder keine Werkzeuge mehr übrig oder alle Packis voll, beendet sich das Script. Alle Packtiere werden automatisch alle 45 Minuten gefüttert.
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:
tile init noOverrides
set #lpc 100
set %packilist X
set %packicnt 0
set %packiignorelist X
set %succ Ihr_legt_etwas_
set %occu I_am_already_doing_something_else.
set %fail Ihr_konntet_kein_verwertbares_Erz_gewinnen.
set %fai2 Ihr_findet_keinen_verwertbaren_sand.
set %emty Hier_gibt_es_kein_Erz_mehr_abzubauen.
set %emt2 Hier_kann_kein_sand_mehr_abgebaut_werden.
set %tool Euer_Werkzeug_zerbricht
set %mineral JUO
set %packy BO_WN ;Packpferd und -lama
set %food QQD_UWI_TWI_QQE_JQE
set %last_feeding -10000 ; #sCnt
set %range 2
set %loopLimit %range * 2
set %targetkind 3 ; muss ggf. auf 2 geändert werden
; ========= Benutzereingaben =================== ;
set %werkzeug TWF ; ID des Werkzeugs
set %wegpunkt 0 ; Startwegpunkt
set %maxwegpunkte 95 ; Anzahl der Wegpunkte
set %fressinterval 45 ;Zeit in Minuten, nach der das Packi gefüttert wird
; ============================================== ;
event macro 1 0 all follow me closely
wait 2s
gosub packiSetup
gosub movenext
start:
gosub search
if ( %wegpunkt >= %maxwegpunkte + 1 )
{
gosub umpacken
event sysmessage Alle Wegpunkte leergebuddelt!!!
halt
}
gosub movenext
goto start
sub search
for %i 0 %loopLimit
{
for %j 0 %loopLimit
{
set %x ( #charposx - %range + %i )
set %y ( #charposy - %range + %j )
tile cnt %x %y
for %curLayer #tilecnt 1
{
tile get %x %y %curLayer
;event sysmessage #tilename
if ( ( #tiletype >= 1339 && #tiletype <= 1358 ) || sand in #tilename )
{
set %z %curLayer
gosub feedAll
gosub dig
}
}
}
}
}
return
sub dig
dig_it:
gosub kristallMining
set %jrnl #jindex
if ( #weight >= #maxweight - 15 )
gosub umpacken
use:
finditem TWF C_ , #backpackid
if ( #findkind <> -1 )
{
set #lobjectid #findid
event macro 17
set #ltargetx %x
set #ltargety %y
set #ltargetz %z
set #ltargetkind 3
set #ltargettile #tiletype
target 2s
if #targcurs = 0
{
wait 10
goto use
}
targ:
event macro 22
wait 1
if #targcurs = 1
goto targ
while #true
{
if ( #jindex > %jrnl )
{
set %jrnl %jrnl + 1
scanjournal %jrnl
if ( %fail in #journal || %fai2 in #journal || %succ in #journal )
{
gosub checktool
goto dig_it
}
if ( %occu in #journal )
wait 100
if ( %emty in #journal || %emt2 in #journal )
{
gosub kristallMining
return
}
}
}
}
else
{
gosub umpacken
event sysmessage Wegpunkt: %wegpunkt
event sysmessage No shovels!!!
event sysmessage Kill script...
halt
}
return
sub checktool
scanjournal %jrnl
if ( %tool in #journal )
{
wait 1s
goto dig_it
}
return
sub umpacken
set #nextcposx 0
set #nextcposy 0
tryagain:
wait 1s
set %journalIndex #jindex
gosub checkAllFull
finditem %packilist G_1
if #findkind = -1
{
event macro 1 0 all come
goto tryagain
}
if #findkind <> -1
{
set %packi_id #findid
set #lobjectid #findid
event macro 17 0
wait 1s
repeat
finditem DWJ_POF C_ , #backpackid
set %_contid #contid
exevent drag #findid #findstack
wait 10
exevent dropc %_contid
for %ii %journalIndex #jindex
{
set %scan %ii + 1
scanjournal %scan
if ( too_heavy_for in #journal || solches_Gewicht_nicht_tragen in #journal )
{
ignoreitem %packi_id 1
if ( %packiignorelist = X )
{
set %packiignorelist %packi_id
}
else
{
set %packiignorelist %packiignorelist , _ , %packi_id
}
goto tryagain
}
}
until ( #findcnt <= 0 )
}
return
sub feedAll
set %timeSince ( #sCnt - %last_feeding ) / 60
event sysmessage Letzte Fuetterung vor %timeSince Minuten
if ( ( %timeSince >= %fressinterval ) || ( #sCnt <= ( %fressinterval * 60 ) ) )
{
ignoreitem reset 1
for %m 1 %packicnt
{
finditem %packilist G_1
if ( #findcnt > 0 )
{
set %packy_cont #findid
finditem %food C
if #findkind <> -1
{
exevent drag #findid 1
wait 10
exevent dropc %packy_cont
wait 10
ignoreitem %packy_cont 1
}
else
{
event sysmessage KEIN FUTTER MEHR:::!!!
}
}
}
ignoreitem reset 1
if ! ( %packiignorelist = X )
ignoreitem %packiignorelist 1
set %last_feeding #sCnt
}
return
sub kristallMining
finditem %mineral G_1
if ( #findkind <> -1 )
{
set %j #jindex
set #lobjectid #findid
event macro 17 0
while #true
{
wait 1
if ( %j < #jindex )
{
set %j %j + 1
scanjournal %j
if ( Kristall_in_Euren_Rucksack. in #journal )
{
return
}
}
}
}
return
sub packiSetup
finditem %packy G_3
set %packicnt #findcnt
for %k 1 %packicnt
{
finditem %packy G_3
if #findcnt > 0
{
if ( %k = 1 )
{
set %packilist #findid
}
else
{
set %packilist %packilist , _ , #findid
}
ignoreitem #findid 1
}
}
ignoreitem reset 1
return
sub checkAllFull
str Len %packiignorelist
set %ignoreLen #strRes
str Len %packilist
if ( %ignoreLen = #strRes )
{
event sysmessage Alle Packis sind voll!!!
halt
}
return
sub movenext
goto %wegpunkt
; ==================== ;
; == Wegpunkte hier == ;
; ==================== ;
; ==================== ;
inc:
set %wegpunkt %wegpunkt + 1
return