Miningscript von Bonbori
Aus UO-Sigena Wiki
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