Einschmelzscript von Bonbori

Aus UO-Sigena Wiki
Wechseln zu: Navigation, Suche

Dieses EasyUO-Script schmilzt automatisiert Sondererz in kleinen Schritten (einstellbar, Standard ist 2 Erz) ein, um den Erzverlust zu minimieren. Das zu schmelzende Sondererz, Kohle und eine kleine Esse müssen in der Nähe der Spielfigur auf dem Boden liegen (maximal 2 Felder entfernt). Das Script eignet sich also nur zur Benutzung in einem Haus.

; Kohle, Erz und Esse müssen innerhalb von 2 Feldern vom Char sein und dürfen nicht befestigt sein!
set %ore Kupfererz ;Name des Erzes
set %getStackSize 2 ;Menge, die jeweils auf einmal geschmolzen wird

; Ab hier nix mehr anfassen! ;
set #lpc 100
set %coal Kohle
set %oreTyp DWJ
set %stackId XXXXXX
set %esse XXXXXX

gosub getStackId %coal
set %coalStack %stackId
while #true
{
  gosub getStackId %ore
  gosub melt %stackId %stackSize
}

; Erwartet einen Erznamen als Parameter
sub getStackId
    set %find %1
    repeat
      finditem %oreTyp G_2
      if ( #findcnt = 0 )
      {
         halt
      }
      event Property #findid
      if ( %find notin #property )
      {
         ignoreitem #findid 9
      }

    until ( %find in #property )
    set %stackId #findid
    set %stackSize #findstack
    ignoreitem reset 9
return

; %1 = Stack ID
; %2 = Stack Size
sub putStackToBackpack
    if ( %getStackSize > %2 )
       set %getStackSize %2
    exevent drag %1 %getStackSize
    wait 10
    exevent dropc #backpackid
    wait 10
return

; %1 = Stack ID
; %2 = Stack Size
sub melt
    gosub putStackToBackpack %1 %2
    finditem JBG G_2
    if ( #findcnt = 0 )
    {
       halt
    }
    set %esse #findid

    repeat
      set %jrnl #jindex
      set #lobjectid %1
      event macro 17 0
      gosub waitJournalForge
      set %jrnl #jindex
      set #ltargetkind 1
      set #ltargetid %esse
      target 10s
      event macro 22 0
      gosub waitJournalForge
      ; Prüfe, ob der Stack noch im Backpack ist
      finditem %1 C_ , #backpackid
    until ( #findcnt = 0 )
return


sub waitJournalForge
    while #true
    {
      wait 1
      if ( #jindex > %jrnl )
      {
         set %jrnl %jrnl + 1
         scanjournal %jrnl
         if ( etwas_Kohle_schueren. in #journal )
         {
            gosub coal2Forge
            return
         }

         if (   In_welcher_Esse_wollt_ihr in #journal ||
              + gewinnt_einige_Barren_und_legt in #journal ||
              + gelingt_euch_nicht,_das_Erz in #journal ||
              + Explosion_aus! in #journal )
         {
            return
         }
      }
    }
return

sub coal2Forge
    set #ltargetkind 1 ;ein Objekt wird getargeted
    set #ltargetid %coalStack
    target 10s
    event macro 22
    wait 1s
return