Парни помогите разобраться!(скрипт на мининг из Top Quality)

Materials, references, tutorials

Moderators: Murderator+, Murderator

Post Reply
VZOPA
Posts: 4
Joined: 2010-11-13 05:26:11

Парни помогите разобраться!(скрипт на мининг из Top Quality)

Post by VZOPA »

Смысл таков: всё работает в оригинале кроме команды GO для снятия паузы, но мне надо вообще убрать функцию паузы при выкапывании элементаля, то есть что бы он просто дал звуковой сигнал и продолжил копать.

Было так:

Code: Select all

sub maning() 
#BETEP™# 
var mx, my, mz, i, j, jor, ser, noto 
Uo.exec("set norbcheck 1"); для рекола 
uo.exec("set norbcalc 1"); тоже 

uo.print('!!Выбери Лопату!! ') 
uo.exec('addobject Shovel') 
while uo.targeting() 
wait(100) 
wend 
  
uo.print('!!Выбери Рунбук!! ') 
uo.exec('addobject Runebook') 
while uo.targeting() 
wait(100) 
wend 

na4alo: 
mx = UO.GetX("self") 
my = UO.GetY("self") 
mz = UO.GetZ("self") 
UO.DeleteJournal() 
for i = mx-4 to mx+4 
for j = my -4 to my+4 
while not UO.Hidden() 
UO.Warmode("0") 
uo.print("Прячемся...") 
UO.UseSkill("Hiding") 
wait(4000) 
wend 
UO.Print("Копаем в координатах: "+str(mx-i)+" "+str(my-j)) 
while not UO.InJournal("no ore here") and not UO.InJournal("location") and not UO.InJournal("far away") and not UO.InJournal("in rock") and not UO.InJournal("Iron Ore") and not UO.InJournal("Copper") and not UO.InJournal("Rusty Ore") 
UO.DeleteJournal() 
if uo.waiting() then 
uo.canceltarget() 
endif 
UO.Waittargettile("1341", str(i), str(j), str(mz)) 
UO.Useobject("Shovel") 
while not UO.InJournal("You put") and not UO.InJournal("heavy") and not UO.InJournal("location") and not UO.InJournal("no ore") and not UO.InJournal("but fail") and not UO.InJournal("far away") and not UO.InJournal("in rock") 
wait (500) 
if uo.injournal("heavy") or uo.dead() then 
pwav()                    
Pause() 
endif 
for jor = 0 to 9    
ser = uo.journalserial(jor) 
noto = uo.getnotoriety(ser) 
if noto <> 1 and noto <> 0 and not uo.injournal("elemental") then 
if uo.waiting() then 
uo.canceltarget() 
endif 
Save() 
pwavw() 
wait(180000) ; время в секундах при ожидании пока уйдет ПК 
loot() 
wait(3000) 
goto reccal 
endif 
next    
wend 
if uo.weight > 625 then  ; Максимальный вес при котором домой с рудой 
goto end 
endif 
wend 
UO.DeleteJournal() 
next 
next 
goto na4alo 
end: 
if uo.waiting() then 
uo.canceltarget() 
endif 
uo.exec("recall Runebook 21") ; домой ( в рунбуке слот 1 ) 
wait(10000) 
loot() 
wait(3000) 
reccal: 
uo.deletejournal() 
if uo.waiting() then 
uo.canceltarget() 
endif 
uo.exec("recall Runebook 94") ; в шахту ( в рунбуке слот 8 ) 
mx = UO.GetX("self") 
my = UO.GetY("self") 
wait(10000) 
if not UO.GetX("self") <> mx and not UO.GetY("self") <> my then 
goto reccal 
endif 
goto na4alo 
end sub 

sub loot()    ; перекладка руды в сундук 
if uo.waiting() then 
uo.canceltarget() 
endif 
VAR a,Exit 
VAR UnloadCont='0x40041342' ; АЙДИ сундука для руды  
DIM Ore[5] 
Ore[0]=0x19B9 ; 4 and more ore 
Ore[1]=0x19B7 ; 1 ore 
Ore[2]=0x19BA ; 2 ore 
Ore[3]=0x19B8 ; 3 ore 
UO.SetReceivingContainer(UnloadCont) 
wait(500) 
For a=0 to 3 
Exit=0 
repeat 
UO.FindType(Ore[a]) 
if UO.GetQuantity('finditem')>0 then 
UO.Grab('0','finditem') 
wait(1500) 
Else 
Exit=1 
endif 
until Exit==1 
Next 
UO.UnSetReceivingContainer() 
end sub 

sub Save() ; Реколл от ПК при их появлении (в паке рунка в безопасное место и реги) 
var mx, my 
reccal: 
uo.deletejournal() 
if uo.waiting() then 
uo.canceltarget() 
endif 
mx = UO.GetX("self") 
my = UO.GetY("self") 
UO.DeleteJournal() 
UO.FindType('0x1F14',-1,'my') 
wait(200) 
UO.Cast('Recall','finditem') 
wait(4000) 
if not UO.GetX("self") <> mx and not UO.GetY("self") <> my then 
goto reccal 
endif 
end sub 

sub pwav() ; звук при выкапывании ЭЛЕМЕНТАЛА 
uo.playwav("E:\UO\inject\SOUND\chanting sound 01.wav") 
endsub 

sub pwavw(); звук при появлении ПК 
uo.playwav("E:\UO\inject\SOUND\chanting sound 01.wav") 
endsub 

sub Pause() ; Пауза скрипта если выкопали Элема (продолжить сказав GO ) 
UO.DeleteJournal() 
REPEAT 
WAIT(3000) 
UO.Print("!!!СКРИПТ НА ПАУЗЕ!!!!") 
UNTIL UO.InJournal('GO') 
UO.Print("!!!СКРИПТ ПРОДОЛЖЕН!!!!") 
endif 
end sub
Стало так:

Code: Select all

sub maning() 
#BETEP™# 
var mx, my, mz, i, j, jor, ser, noto 
Uo.exec("set norbcheck 1"); для рекола 
uo.exec("set norbcalc 1"); тоже 

uo.print('!!Выбери Лопату!! ') 
uo.exec('addobject Shovel') 
while uo.targeting() 
wait(100) 
wend 
  
uo.print('!!Выбери Рунбук!! ') 
uo.exec('addobject Runebook') 
while uo.targeting() 
wait(100) 
wend

na4alo: 
mx = UO.GetX("self") 
my = UO.GetY("self") 
mz = UO.GetZ("self") 
UO.DeleteJournal() 
for i = mx-4 to mx+4 
for j = my -4 to my+4 
while not UO.Hidden() 
UO.Warmode("0") 
uo.print("Прячемся...") 
UO.UseSkill("Hiding") 
wait(4000) 
wend 
UO.Print("Копаем в координатах: "+str(mx-i)+" "+str(my-j)) 
while not UO.InJournal("no ore here") and not UO.InJournal("location") and not UO.InJournal("far away") and not UO.InJournal("in rock") and not UO.InJournal("Iron Ore") and not UO.InJournal("Rusty Ore") 
UO.DeleteJournal() 
if uo.waiting() then 
uo.canceltarget() 
endif 
UO.Waittargettile("1341", str(i), str(j), str(mz)) 
UO.Useobject("Shovel") 
while not UO.InJournal("You put") and not UO.InJournal("heavy") and not UO.InJournal("location") and not UO.InJournal("no ore") and not UO.InJournal("but fail") and not UO.InJournal("far away") and not UO.InJournal("in rock") 
wait (500) 
if uo.injournal("heavy") or uo.dead() then 
pwav()                    
endif 
for jor = 0 to 9    
ser = uo.journalserial(jor) 
noto = uo.getnotoriety(ser) 
if noto <> 1 and noto <> 0 and not uo.injournal("elemental") then 
if uo.waiting() then 
uo.canceltarget() 
endif 
Save() 
pwavw() 
wait(40000) ; время в секундах при ожидании пока уйдет ПК 
loot() 
wait(3000) 
goto reccal 
endif 
next    
wend 
if uo.weight > 600 then  ; Максимальный вес при котором домой с рудой 
goto end 
endif 
wend 
UO.DeleteJournal() 
next 
next 
goto na4alo 
end: 
if uo.waiting() then 
uo.canceltarget() 
endif 
uo.exec("recall Runebook 21") ; домой ( в рунбуке слот 1 ) 
wait(10000) 
loot() 
wait(3000) 
reccal: 
uo.deletejournal() 
if uo.waiting() then 
uo.canceltarget() 
endif 
uo.exec("recall Runebook 94") ; в шахту ( в рунбуке слот 8 ) 
mx = UO.GetX("self") 
my = UO.GetY("self") 
wait(10000) 
if not UO.GetX("self") <> mx and not UO.GetY("self") <> my then 
goto reccal 
endif 
goto na4alo 
end sub 

sub loot()    ; перекладка руды в сундук 
if uo.waiting() then 
uo.canceltarget() 
endif 
VAR a,Exit 
VAR UnloadCont='0x401fe364' ; АЙДИ сундука для руды  
DIM Ore[5] 
Ore[0]=0x19B9 ; 4 and more ore 
Ore[1]=0x19B7 ; 1 ore 
Ore[2]=0x19BA ; 2 ore 
Ore[3]=0x19B8 ; 3 ore 
UO.SetReceivingContainer(UnloadCont) 
wait(500) 
For a=0 to 3 
Exit=0 
repeat 
UO.FindType(Ore[a]) 
if UO.GetQuantity('finditem')>0 then 
UO.Grab('0','finditem') 
wait(1500) 
Else 
Exit=1 
endif 
until Exit==1 
Next 
UO.UnSetReceivingContainer() 
end sub 

sub Save() ; Реколл от ПК при их появлении (в паке рунка в безопасное место и реги) 
var mx, my 
reccal: 
uo.deletejournal() 
if uo.waiting() then 
uo.canceltarget() 
endif 
mx = UO.GetX("self") 
my = UO.GetY("self") 
UO.DeleteJournal() 
UO.FindType('0x1F14',-1,'my') 
wait(200) 
UO.Cast('Recall','finditem') 
wait(4000) 
if not UO.GetX("self") <> mx and not UO.GetY("self") <> my then 
goto reccal 
endif 
end sub 

sub pwav() ; звук при выкапывании ЭЛЕМЕНТАЛА 
uo.playwav("D:\Uo\Music\exit_level.wav") 
endsub 

sub pwavw() ; звук при появлении ПК 
uo.playwav("D:\Uo\Music\exit_level.wav") 
endsub  
То есть, убрал это:

Code: Select all

sub Pause() ; Пауза скрипта если выкопали Элема (продолжить сказав GO ) 
UO.DeleteJournal() 
REPEAT 
WAIT(3000) 
UO.Print("!!!СКРИПТ НА ПАУЗЕ!!!!") 
UNTIL UO.InJournal('GO') 
UO.Print("!!!СКРИПТ ПРОДОЛЖЕН!!!!") 
endif 
end sub
[/code]

и строчку Pause() ; 44 строка

получилась муть, после выкапывания теперь элема перс пытается среколится и естественно, от элема умирает.
Знатоки помогите пожалуйста, что я не так делаю?
GMX
Posts: 75
Joined: 2010-10-01 16:47:41
Contact:

Re: Парни помогите разобраться!(скрипт на мининг из Top Quality)

Post by GMX »

Моя модификация.

Code: Select all


sub maning()
   #BETEP™#
   var mx, my, mz, i, j, jor, ser, noto, mmx, mmy, maxWeight
   #Uo.exec("set norbcheck 1"); для рекола
   #uo.exec("set norbcalc 1"); тоже
   maxWeight=Uo.str*4

   uo.print('Gde lopata??')
   uo.exec('addobject Shovel')
   while uo.targeting()
      wait(100)
   wend
   
   [b]uo.print('Gde runa domoi?')
   uo.exec('addobject Rune')
   while uo.targeting()
      wait(100)
   wend[/b]   

[b]   uo.print('Gde runa v pesheru?')
   uo.exec('addobject RuneP')
   while uo.targeting()
      wait(100)
   wend[/b]
   
   na4alo:
   mx = UO.GetX("self")
   my = UO.GetY("self")
   mz = UO.GetZ("self")
[b]        # ПЕРЕБЕГАНИЕ       (ставим чара на середину пещеры,
            repeat
            mmx=(mx+uo.Random(20)-10)    # выбираем случайные координаты в пределах +-10
            mmy=(my+uo.Random(20)-10)
            until uo.privategettile(mmx,mmy,-1,1341,1341)   # проверяем, пещера ли это
            uo.print("Da!")
            GoToXY(mmx,mmy,1)                   # и идем на новые координаты
            wait(500)
        ##################[/b]
   mx = UO.GetX("self")
   my = UO.GetY("self")
   mz = UO.GetZ("self")
   
   UO.DeleteJournal()
   for i = mx-4 to mx+4
      for j = my -4 to my+4
         while not UO.Hidden()
            UO.Warmode("0")
            uo.print("Hiding...")
            UO.UseSkill("Hiding")
            wait(4000)
         wend
         UO.Print("Kopaem B KoopdihaTax: "+str(mx-i)+" "+str(my-j))
         while not UO.InJournal("no ore here|не осталось")and not UO.InJournal("Copper") and not UO.InJournal("Rusty Ore") and not UO.InJournal("location") and not UO.InJournal("far away|далеко|не дотянуться|нашли|нaшли") and not UO.InJournal("in rock") and not UO.InJournal("iron ores") 
            UO.DeleteJournal()
            if uo.waiting() then
               uo.canceltarget()
            endif
[b]            wait(uo.random(4000)+1000)  # случайная пауза, чтобы не палили GM'ы по логам (от 1 до 5 секунд)[/b]
            UO.Waittargettile("1341", str(i), str(j), str(mz))
            UO.Useobject("Shovel")
            while not UO.InJournal("You put") and not UO.InJournal("heavy") and not UO.InJournal("location") and not UO.InJournal("no ore|не осталось|нашли|нaшли") and not UO.InJournal("but fail|инструмент") and not UO.InJournal("far away|далеко|не дотянуться") and not UO.InJournal("in rock|валунов")
               wait (500)
[b]               if uo.injournal("инструмент") or uo.dead() then    #
                  an()                                                          #  Этим if'ом запускаем  
                  #Pause()                                                   #  антимакрос
               endif                                                            #[/b]
[b]               #for jor = 0 to 9
               #   ser = uo.journalserial(jor)
               #   noto = uo.getnotoriety(ser)
               #   if noto == 1 and noto == 2 and noto == 0 and not uo.injournal("elemental") then
               #      if uo.waiting() then
               #         uo.canceltarget()
               #      endif
               #      Save()
               #      pwavw()
               #      wait(180000) ; время в секундах при ожидании пока уйдет ПК
               #      loot()
               #      wait(3000)
               #      goto reccal          ;Здесь я просто закомментил все, что касается
               #   endif                      ; пауз при выкапывании элема или появлении ПК
               #next[/b]
            wend
            if uo.weight > maxWeight then ; Максимальный вес при котором домой с рудой
[b]               GoTOXY(1820,849,1)         # бежит к форже
               BlackSmithy()                  # плавим руду и качаем БС
               GoTOXY(1802,853,1)        #бежим в центр пещеры
               GoTo na4alo                   # эту и три предыдущие срочки закомментить, если нужно, чтобы чар прыгал по руне  домой, а не бегал к плавилке
               #GoTo end        ;здесь раскомментить, если нужно, чтобы при максимальном весе реколился домой [/b]
            endif
         wend
         UO.DeleteJournal()
      next
   next
   goto na4alo
   end:
   if uo.waiting() then
      uo.canceltarget()
   endif
   uo.waittargetobject('Rune')
   UO.Cast('Recall')
   wait(10000)
   if uo.injournal('fizzles') then
	  goto end
   endif
   loot()
   wait(3000)
   reccal:
   uo.deletejournal()
   if uo.waiting() then
      uo.canceltarget()
   endif
   #uo.exec("recall Runebook 46") ; в шахту ( в рунбуке слот 3 )
   uo.waittargetobject('RuneP')
   UO.Cast('Recall')
   wait(10000)
      if uo.injournal('fizzles') then
	  goto reccal
   endif
   #uo.exec("recall Runebook 58") ; в шахту ( в рунбуке слот 4 )
   #mx = UO.GetX("self")
   #my = UO.GetY("self")
   #wait(10000)
   #if not UO.GetX("self") <> mx and not UO.GetY("self") <> my then
   #   goto reccal
   #endif
   goto na4alo
end sub
Все мы славные ребята, простые русские парни, железные люди с деревянными головами...
VZOPA
Posts: 4
Joined: 2010-11-13 05:26:11

Re: Парни помогите разобраться!(скрипт на мининг из Top Quality)

Post by VZOPA »

GMX спасибо! Я попробовал твой подставить, ничего не вышло. Я в этом просто 0. Ты можешь помочь, просто убрать из этого все действия при появлении ПК или элема, то есть, что бы перс при любом раскладе копал до упора и если надо уходил в инвиз.

Code: Select all

sub maning() 
#BETEP™# 
var mx, my, mz, i, j, jor, ser, noto 
Uo.exec("set norbcheck 1"); для рекола 
uo.exec("set norbcalc 1"); тоже 

uo.print('!!Выбери Лопату!! ') 
uo.exec('addobject Shovel') 
while uo.targeting() 
wait(100) 
wend 
  
uo.print('!!Выбери Рунбук!! ') 
uo.exec('addobject Runebook') 
while uo.targeting() 
wait(100) 
wend 

na4alo: 
mx = UO.GetX("self") 
my = UO.GetY("self") 
mz = UO.GetZ("self") 
UO.DeleteJournal() 
for i = mx-4 to mx+4 
for j = my -4 to my+4 
while not UO.Hidden() 
UO.Warmode("0") 
uo.print("Прячемся...") 
UO.UseSkill("Hiding") 
wait(4000) 
wend 
UO.Print("Копаем в координатах: "+str(mx-i)+" "+str(my-j)) 
while not UO.InJournal("no ore here") and not UO.InJournal("location") and not UO.InJournal("far away") and not UO.InJournal("in rock") and not UO.InJournal("Iron Ore") and not UO.InJournal("Copper") and not UO.InJournal("Rusty Ore") 
UO.DeleteJournal() 
if uo.waiting() then 
uo.canceltarget() 
endif 
UO.Waittargettile("1341", str(i), str(j), str(mz)) 
UO.Useobject("Shovel") 
while not UO.InJournal("You put") and not UO.InJournal("heavy") and not UO.InJournal("location") and not UO.InJournal("no ore") and not UO.InJournal("but fail") and not UO.InJournal("far away") and not UO.InJournal("in rock") 
wait (500) 
if uo.injournal("heavy") or uo.dead() then 
pwav()                    
Pause() 
endif 
for jor = 0 to 9    
ser = uo.journalserial(jor) 
noto = uo.getnotoriety(ser) 
if noto <> 1 and noto <> 0 and not uo.injournal("elemental") then 
if uo.waiting() then 
uo.canceltarget() 
endif 
Save() 
pwavw() 
wait(180000) ; время в секундах при ожидании пока уйдет ПК 
loot() 
wait(3000) 
goto reccal 
endif 
next    
wend 
if uo.weight > 625 then  ; Максимальный вес при котором домой с рудой 
goto end 
endif 
wend 
UO.DeleteJournal() 
next 
next 
goto na4alo 
end: 
if uo.waiting() then 
uo.canceltarget() 
endif 
uo.exec("recall Runebook 21") ; домой ( в рунбуке слот 1 ) 
wait(10000) 
loot() 
wait(3000) 
reccal: 
uo.deletejournal() 
if uo.waiting() then 
uo.canceltarget() 
endif 
uo.exec("recall Runebook 94") ; в шахту ( в рунбуке слот 8 ) 
mx = UO.GetX("self") 
my = UO.GetY("self") 
wait(10000) 
if not UO.GetX("self") <> mx and not UO.GetY("self") <> my then 
goto reccal 
endif 
goto na4alo 
end sub 

sub loot()    ; перекладка руды в сундук 
if uo.waiting() then 
uo.canceltarget() 
endif 
VAR a,Exit 
VAR UnloadCont='0x40041342' ; АЙДИ сундука для руды  
DIM Ore[5] 
Ore[0]=0x19B9 ; 4 and more ore 
Ore[1]=0x19B7 ; 1 ore 
Ore[2]=0x19BA ; 2 ore 
Ore[3]=0x19B8 ; 3 ore 
UO.SetReceivingContainer(UnloadCont) 
wait(500) 
For a=0 to 3 
Exit=0 
repeat 
UO.FindType(Ore[a]) 
if UO.GetQuantity('finditem')>0 then 
UO.Grab('0','finditem') 
wait(1500) 
Else 
Exit=1 
endif 
until Exit==1 
Next 
UO.UnSetReceivingContainer() 
end sub 

sub Save() ; Реколл от ПК при их появлении (в паке рунка в безопасное место и реги) 
var mx, my 
reccal: 
uo.deletejournal() 
if uo.waiting() then 
uo.canceltarget() 
endif 
mx = UO.GetX("self") 
my = UO.GetY("self") 
UO.DeleteJournal() 
UO.FindType('0x1F14',-1,'my') 
wait(200) 
UO.Cast('Recall','finditem') 
wait(4000) 
if not UO.GetX("self") <> mx and not UO.GetY("self") <> my then 
goto reccal 
endif 
end sub 

sub pwav() ; звук при выкапывании ЭЛЕМЕНТАЛА 
uo.playwav("E:\UO\inject\SOUND\chanting sound 01.wav") 
endsub 

sub pwavw(); звук при появлении ПК 
uo.playwav("E:\UO\inject\SOUND\chanting sound 01.wav") 
endsub 

sub Pause() ; Пауза скрипта если выкопали Элема (продолжить сказав GO ) 
UO.DeleteJournal() 
REPEAT 
WAIT(3000) 
UO.Print("!!!СКРИПТ НА ПАУЗЕ!!!!") 
UNTIL UO.InJournal('GO') 
UO.Print("!!!СКРИПТ ПРОДОЛЖЕН!!!!") 
endif 
end sub
GMX
Posts: 75
Joined: 2010-10-01 16:47:41
Contact:

Re: Парни помогите разобраться!(скрипт на мининг из Top Quality)

Post by GMX »

Я же в предыдущем посте указал, что нужно закомментить. )))

Code: Select all

               #for jor = 0 to 9
               #   ser = uo.journalserial(jor)
               #   noto = uo.getnotoriety(ser)
               #   if noto == 1 and noto == 2 and noto == 0 and not uo.injournal("elemental") then
               #      if uo.waiting() then
               #         uo.canceltarget()
               #      endif
               #      Save()
               #      pwavw()
               #      wait(180000) ; время в секундах при ожидании пока уйдет ПК
               #      loot()
               #      wait(3000)
               #      goto reccal          ;Здесь я просто закомментил все, что касается
               #   endif                      ; пауз при выкапывании элема или появлении ПК
               #next
Этот отрезок своего кода просто закомментируй.
Все мы славные ребята, простые русские парни, железные люди с деревянными головами...
VZOPA
Posts: 4
Joined: 2010-11-13 05:26:11

Re: Парни помогите разобраться!(скрипт на мининг из Top Quality)

Post by VZOPA »

Cпасибо!
Сам справился и кстати, на отлично! Можно сказать, первая кровь )
Вырезал и так и сяк, в итоге надо было убрать 4 строки, чуть выше того что ты писал в предыдущем посте:

Code: Select all

wait (500) 
if uo.injournal("heavy") or uo.dead() then 
pwav()                    
Pause()


Ну и конечно весь

Code: Select all

Pause()
и

Code: Select all

pwav()
В итоге имеем: выкапываем елема, или сосед выкапывает-чар продолжает копать не обращая внимания; журнал отслеживает пк или любого другого murder'a—перс реколится по руне, как и было задумано.
Ставим в кривую шахту где выход прослеживается из-за загиба и идем спокойно спать до утра )
VZOPA
Posts: 4
Joined: 2010-11-13 05:26:11

Re: Парни помогите разобраться!(скрипт на мининг из Top Quality)

Post by VZOPA »

И да!
В оригинале скрипта строка

Code: Select all

if noto <> 1 and noto <> 0 and not uo.injournal("elemental ") then
НЕМНОГО НЕКОРРЕКТНА!
ИСПРАВИТЬ:

Code: Select all

("elemental ")
на

Code: Select all

("Elemental ") 
регистр же учитывается )
Post Reply