Скрипт на мининг по рунам.

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
Deathclaw
Posts: 31
Joined: 2005-01-21 15:45:19

Скрипт на мининг по рунам.

Post by Deathclaw »

Я его запускаю всё прописываю всё ок: Он реколится по первой руне, потом реколится к банку там реколится по второй руне к дому складывает но когда добирает реги берёт почему-то тока МР! Да и когда опять реколится но уже как бы по второй руне, почему-то реколится по первой(хотя ещё точно не уверен потому тчо все руны маркал в одной шахте может в одном и томже месте маркнул, пока проверить не могу крафтера в онлайне нету тчо бы мне руны сделал)но всёже если вдруг что-нибудь про рекол по руннам попадётся ненарком подозрительного плиз опишите!Заранее спасибо
Вот собственно сам скрипт:

Code: Select all

######################################################### 
#      World's Heart Mining         #
#         ver 1.03         #   
#               by Flake   #
#########################################################
# Îïèñàíèå:
#   ×àð ïðèëåòàåò â øàõòó, îáêàïûâàåòñÿ, çàòåì äåëàåò 5 øàãîâ íà çàïàä (W),
#   è îïÿòü îáêàïûâàåòñÿ. Ïðè ïåðåâåñå ëåòèò ê áàíêó, è îòòóäà ïî ðóíå äîìîé.
#   Äîìà âûãðóæàåò ðóäó, äîáèðàåò ðåãè, êóøàåò è îïÿòü êîïàòü.
#   Íà áàçå ó ÷àðà 2 ñóíäóêà, Sunduk - äëÿ âûãðóçà ðóäû, Sunduk2 - â íåãî
#   êëàäåì ðåãè, åäó è âñ¸ îñòàëüíîå (ñì. íèæå).
#   Òàê æå ââåäåíà ñèñòåìà àíòè-ýëåì. Äëÿ ýòîãî âàì ïîíàäîáèòüñÿ ìîùíàÿ æèâîòèíà,
#   ëó÷øå âñåãî Íàéòìàð. Ïðè âûêàïûâàíèè ýëåìà ÷àð áóäåò ñïóñêàòü çàøðèíêîâàííîãî
#   çâåðÿ íà ýëåìà, æäàòü ïîêà òîò åãî óáüåò, çàòåì îí çàøðèíêóåò çâåðÿ îáðàòíî è
#   îáëóòèò òðóï ýëåìà. ×òîáû âêëþ÷èòü ýòó ñèñòåìó, ïîñòàâüòå â ïåðåìåííîé
#   AntiElem çíà÷åíèå 1 (Ïðè 0 ñèñòåìà îòêëþ÷åíà, ïðè 1 - âêëþ÷åíà.).
#   Åñëè õîòèòå êîïàòü ñ àíòèýëåìîì, â Sunduk2 êèíüòå áóòûëîê èíâèçà è øðèíêîâ.
#   Òàê æå íåîáõîäèìî â ïåðåìåííûõ Killer è KillerB ïðîïèñàòü òèïû âàøåãî
#   çâåðÿ - óáèéöû â çàøðèíêîâàííîì è îáû÷íîì âèäàõ.
#   Â ïàêå ó ÷àðà äîëæíî áûòü: 6 ðóí â øàõòû, ïàðó êèðîê, ðåãè íà ðåêàë.
#   Â áàíêå - ðóíà äîìîé.
#   Ðóíû íåîáõîäèìî ìàðêàòü òàêèì îáðàçîì, ÷òîáû ó ÷àðà áûëî ìåñòà äëÿ 5
#   øàãîâ â íàïðàâëåíèè (W).
############################################################################
###########################################################################¹
#                            Ïåðåìåííûå:


VAR AntiElem = 0   ; Åñëè 0 - ñèñòåà îòêëþ÷åíà. åñëè 1 - âêëþ÷åíà.

VAR BankRune = '0x4015CCDB'   ; ID ðóíû, âåäóùåé ê áàíêó
VAR HomeRune = '0x4015AFE2'   ; ID ðóíû, êîòîðàÿ ëåæèò â áàíêå è âåäåò ê äîìó.
VAR Sunduk = '0x40198702'      ;   ID ñóíäóêà äëÿ ðàçãðóçêè ðóäû
VAR Sunduk2 = '0x401C8135'     ; ID ñóíäóêà ñ ðåãàìè è åäîé
VAR Food = '0x1608'   

VAR Elem = '0x000E'            ; òèï ýëåìåíòà
VAR Killer = '0x0000'          ; òèï êèëëåðà â øðèíêå
VAR KillerB = '0x0000'         ; òèï êèëëåðà
VAR ShrinkClr = '0x051B'      ; öâåò øðèíêà
VAR InvisClr = '0x012B'       ; öâåò èíâèçêè
VAR Bottle = '0x0F0E'  ; òèï áóòûëêè



###########################################################################
###########################################################################
sub START_MINING()
VAR Kirka = '0x0E85'   
VAR TileNum = '1339'
VAR MaxWeight = 750                                      ; Ìàêñèìàëüíûé âåñ ìèíóñ 30-40 ñòîóíîâ
VAR x, y, t, k
VAR MaxTime = 7000   
VAR ms1 = "There is nothing here to mine for"
VAR ms2 = "You can't use"
VAR ms3 = "You put the"
VAR ms4 = "loosen some rocks but fail"
VAR ms5 = "You can't use the %s where it is"
VAR ms6 = "Try mining in rock"
VAR ms7 = "Try mining elsewhere."
VAR ms8 = "no line of sight"
VAR tochka = 1
VAR flag = 0

Dim Runa[6]
 Runa[1] = 0x4026346E            ; âïèñàòü ID ðóí â øàõòû
 Runa[2] = 0x402636C7
 Runa[3] = 0x40263AA1
 Runa[4] = 0x4025E5A8
 Runa[5] = 0x4025E52E
 Runa[6] = 0x4025E3A8

   UO.SetGlobal( 'alarm', 'off' )
        RecallRune(Runa[tochka])
          If AntiElem == 1 Then
            ElemCheck()
          EndIf
          If UO.GetGlobal( 'alarm' ) == 'on' Then
            GoTo JumpNext
          EndIf
   CheckHide()
   
 Repeat
     
  StartMine:
  flag = flag + 1
  For y=-2 to 2
    For x=-2 to 2
     k = 0
      Repeat
         UO.DeleteJournal()
         t = UO.Timer()
         k = k + 1
          UO.WaitTargetTile( TileNum, STR( UO.GetX() + x ), STR( UO.GetY() + y ), 0)
          UO.UseType( Kirka )
             Repeat
               Wait(300)
             Until UO.InJournal(ms1) OR UO.InJournal(ms2) OR UO.InJournal(ms3) OR UO.InJournal(ms4) OR UO.InJournal(ms5) OR UO.InJournal(ms6) OR UO.InJournal(ms7) OR UO.InJournal(ms8) OR ((t + MaxTime) < UO.Timer())                     
      Until ( NOT UO.InJournal(ms4) AND NOT UO.InJournal(ms3) OR UO.InJournal(ms7) OR UO.InJournal(ms8) OR (k > 10))
   ;--- --- --- Ïðîâåðêà íà ïåðåâåñ è ýëåìà --- ---
     If AntiElem == 1 Then
       ElemCheck()
     EndIf
       If UO.Weight >= MaxWeight OR UO.GetGlobal( 'alarm') == 'on'  Then
        UO.Print( 'Ïåðåâåñ!' )
         UnLoad()
    RecallRune(Runa[tochka])
      If AntiElem == 1 Then
             ElemCheck()
           EndIf
           If UO.GetGlobal( 'alarm' ) == 'on' Then
             GoTo JumpNext
           EndIf
         CheckHide()
         flag = 0             
         tochka = tochka + 1       
           If tochka == 6 Then       
              tochka = 1         
           EndIf             
         Goto StartMine         
       EndIf             
    ;--- --- --- --- --- --- --- --- --- ---
    Next
  Next
 
  If flag < 2 Then
    Walk()
    GoTo StartMine
  EndIf

  JumpNext:
    flag = 0
    tochka = tochka + 1
      If tochka == 6 Then
        tochka = 1
      EndIf
    RecallRune(Runa[tochka])
      If AntiElem == 1 Then
        ElemCheck()
      EndIf
      If UO.GetGlobal( 'alarm' ) == 'on' Then
        GoTo JumpNext
      EndIf
    CheckHide()

 Until UO.Dead()
endsub


;  --- Ìîäóëü ðàçãðóçêè è äîáîðà ðåãîâ. 
Sub UnLoad()
VAR a, b

Dim Ore[4]
Ore[1]= 0x19B9 ; 4 and more ore
Ore[2]= 0x19B7 ; 1 ore
Ore[3]= 0x19BA ; 2 ore
Ore[4]= 0x19B8 ; 3 ore

Dim RecallReg[3]
RecallReg[1] = 0x0F7A
RecallReg[2] = 0x0F7B
RecallReg[3] = 0x0F86

  ; --- Ïðûãàåì ê áàíêó
   RecallRune(BankRune)
   UO.MSG( 'Bank' )
   Wait(100)

  ; --- Ïðûãàåì äîìîé
    RecallRune(HomeRune)

  ; --- Ðàçãðóçêà ðóäû
   For a = 1 to 4
     UO.FindType( Ore[a] )
       While UO.FindCount()
         UO.MoveItem( 'finditem', '-1', Sunduk )
         Wait(200)
         CheckLag()
         UO.FindType( Ore[a] )
       Wend
   Next

  ; --- Äîáîð ðåãîâ, åäû è áóòûëîê
  For b = 1 to 3
    UO.FindType( RecallReg[b] )
      If UO.GetQuantity( 'finditem' ) < 20 Then
        UO.FindType( RecallReg[b], '-1', Sunduk2 )
          If UO.GetQuantity( 'finditem' ) > 20 Then
       UO.Grab( '1', 'finditem' )
            Wait(200)
            CheckLag()
          Else
            UO.Print( 'Regs not found, script terminated' )
            UO.Exec( 'terminate all' )
          EndIf
       
      EndIf
  Next
    UO.FindType( Food )
      If UO.GetQuantity( 'finditem' ) < 10 Then
        UO.FindType( Food, '-1', Sunduk2 )
        UO.Grab( '10', 'finditem' )
        Wait(200)
        CheckLag()
      EndIf
    UO.DeleteJournal() 
    UO.FindType( Food )
      If UO.FindCount() Then
        Repeat 
          UO.UseType( Food )
          Wait(200)
          CheckLag()
        Until UO.InJournal( 'simply too full' )
      EndIf
   
  If AntiElem == 1 Then
    UO.FindType( Bottle, ShrinkClr, 'my' )
      If UO.GetQuantity( 'finditem' ) < 6 Then
        UO.FindType( Bottle, ShrinkClr, Sunduk2 )
     If UO.FindCount() > 6 Then
       UO.Grab( '6', 'finditem' )
     Else
       UO.Print( 'Bottles not found, script terminated' )
            UO.Exec( 'terminate all' )
     EndIf
      EndIf

    UO.FindType( Bottle, InvisClr, 'my' )
      If UO.GetQuantity( 'finditem' ) < 6 Then
        UO.FindType( Bottle, InvisClr, Sunduk2 )
     If UO.FindCount() > 6 Then
       UO.Grab( '6', 'finditem' )
     Else
       UO.Print( 'Bottles not found, script terminated' )
            UO.Exec( 'terminate all' )
     EndIf
      EndIf
  EndIf
endsub


; --- Ïðîöåäóðà ðåêàëà ïî ðóíå
Sub RecallRune(RuneId) 
VAR MyX, MyY, t, i
  If UO.Mana < UO.Int Then
    UO.WarMode(0)
      Repeat
        UO.UseSkill( 'Meditation' )
        Wait(1000)       
      Until UO.Mana == UO.Int
   EndIf
   i = 1
      Cast:
        MyX = UO.GetX()
        MyY = UO.GetY()
   t = 0   
        UO.Cast( 'Recall', RuneId )
        UO.DeleteJournal()
     If UO.GetGlobal( 'alarm' ) == 'on' AND i ==1 Then
       Wait(150)
       UO.UseType( Bottle, InvisClr )
       i = 0
          EndIf
          Repeat
         t = 1 + 1
              If UO.InJournal( 'izzle' ) OR (t > 40) Then
                GoTo Cast
         Else
      Wait(500)
              EndIf
          Until MyX <> UO.GetX() AND MyY <> UO.GetY()
endsub   

; --- Ôóíêöèÿ Àíòè-Ýëåìåíò.
Sub ElemCheck()
UO.Set( 'finddistance', '5' )
UO.FindType( Elem, '-1', 'ground' )
  If UO.FindCount() == 1 Then
    UO.Print( 'One Element found! Killing system activated!' )
    UO.UseType( 'Killer' )
    UO.WaitTargetObject( 'finditem'  )
    UO.MSG( 'all kill' )
      UO.FindType( Elem, '-1', 'ground' )
        While UO.FindCount()
         Wait(1000)
          UO.FindType( Elem, '-1', 'ground' )
         Wend
      UO.FindType( KillerB, '-1', 'ground' )
      UO.WaitTargetObject( 'finditem' )
      UO.UseType( Bottle, ShrinkClr )
      Wait(200)
      UO.FindType( Killer, '-1', 'ground' )
      UO.Grab( '1', 'finditem' )
      Wait(200)
      UO.SetGlobal( 'alarm', 'off' )
      LootElem()
  Else
    If UO.FindCount() > 1 Then
      UO.SetGlobal( 'alarm', 'on' )
    Else
      UO.SetGlobal( 'alarm', 'off' )
    EndIf
  EndIf
endsub

; ---  Ôóíêöèÿ Ëóòà Ýëåìà
Sub LootElem()
VAR Cleaver = '0x0000'
VAR Kirka = '0x0E85'
VAR a
 Dim Ore[4]
  Ore[1]= 0x19B9 ; 4 and more ore
  Ore[2]= 0x19B7 ; 1 ore
  Ore[3]= 0x19BA ; 2 ore
  Ore[4]= 0x19B8 ; 3 ore

  If UO.GetDistance( 'lastcorpse' ) < 3 Then
    UO.WaitTargetObject( 'lastcorpse' )
    UO.UseType( Cleaver )
    Wait(300)
    UO.UseObject( 'lastcorpse' )
      For a = 1 to 4
        UO.FindType( Ore[a], '-1', 'lastcorpse' )
          While UO.FindCount()
       UO.Grab( '1', 'finditem' )
            Wait(200)
       CheckLag()
       UO.FindType( Ore[a], '-1', 'lastcorpse' )
      Wend
      Next
   UO.FindType( '0x0EED', '-1', 'lastcorpse' )   ; äåíüãè
     If UO.FindCount() Then
       UO.Grab( '1', 'finditem' )
            Wait(200)
     EndIf
    UO.UseType( Kirka )
    Wait(200)
  Else
    UO.Print( 'The corpse is too far!' )
  EndIf
endsub

; --- Ïðîöåäóðà ïðîâåðêè è óõîäà â õàéä.
Sub CheckHide()
VAR fail = "You can't seem to hide here."
  If UO.Hidden() Then
    UO.Print( 'Hidden!' )
  Else
    UO.Print( 'Now Hiding...' )
    StartHide:
      UO.WarMode(0)
      UO.UseSkill( 'Hiding' )
      DeleteJournal("You can't seem to hide here.")
        Repeat
          If UO.InJournal( fail ) Then
            GoTo StartHide
          Else
            Wait(100)
          EndIf
        Until UO.Hidden()
    UO.Print( 'Hidden!' )
  EndIf
end sub

Sub Walk()
  UO.Press(36)
  UO.Press(36)
  UO.Press(36)
  UO.Press(36)
  UO.Press(36)
  Wait(1500)
  CheckHide()
endsub

Sub CheckLag()
   DeleteJournal( 'backpack' )
   UO.Click('backpack')
   Repeat
      Wait(100)
   Until UO.InJournal('backpack')
end sub
 
Sub DeleteJournal(msg)
   var nom = UO.InJournal(msg)
   If nom>0 Then
      UO.SetJournalLine(Nom - 1," -- replaced -- ") 
      DeleteJournal(msg)
   EndIf
endsub
Last edited by Deathclaw on 2006-11-16 17:37:06, edited 1 time in total.
slonopotam
Posts: 270
Joined: 2006-08-05 14:09:06
Contact:

Post by slonopotam »

Во первых код в код, а во вторых не копируйте с инжекта. Сохраняйте в текстовых редакторах и вставляйте сюда из них.
ДРВ
Spoiler
_________________
Антарес
Spoiler|Gostrabaiter|Umhra|Slog
Deathclaw
Posts: 31
Joined: 2005-01-21 15:45:19

Post by Deathclaw »

Ну, я перезаписал в код и сохранил в текстовом редакторе и потом скопировал но всё равно фигня такая
slonopotam
Posts: 270
Joined: 2006-08-05 14:09:06
Contact:

Post by slonopotam »

Я тоже одно время летал на таком скрипте а так как играю на ДРВ и там производство и покупка рунбук подорожала, то снова собираюсь вернутся к рункам.


Проверь, те типы регов для рекола прописаны? И не слишкомли много их? (много это 1,5,10 к). Положи по 100 каждого.

Code: Select all

Dim RecallReg[3] 
RecallReg[1] = 0x0F7A
RecallReg[2] = 0x0F7B
RecallReg[3] = 0x0F86


Из-за невозможности прочесть настройки и объемности скрипта, могу только догадыватся, что рунки нужно было вбить в объекты.

Code: Select all

 Runa[1] = 0x4026346E
 Runa[2] = 0x402636C7
 Runa[3] = 0x40263AA1
 Runa[4] = 0x4025E5A8
 Runa[5] = 0x4025E52E
 Runa[6] = 0x4025E3A8
ДРВ
Spoiler
_________________
Антарес
Spoiler|Gostrabaiter|Umhra|Slog
Deathclaw
Posts: 31
Joined: 2005-01-21 15:45:19

Post by Deathclaw »

Да не, с этим всё в порядке все типы и ИД прописал и регов нормально клал один раз по 50 другой раз по 300
xarek
Posts: 115
Joined: 2006-03-08 20:53:28

Post by xarek »

а есть у кого нибудь этот скрипт только с руским описанием а не с закорючкми)
Post Reply