Page 1 of 1

Скрипт от [20.09.04] © Yaponchick™

Posted: 2004-09-20 07:52:50
by Yaponchick
Ну так начинаем...
Примечание:

Прочтите сначала ЭТО: http://yoko.netroof.net/forum/viewtopic.php?p=6134#6134

Скрипты большинство переделанные...
без рекола, без лога веса, кароче, для танков...
хмм...кооманда ,exec logger, поможет вам ПЕРЕНЕСТИ БОЛЬШОЕ КОЛ-ВО ЛОГОВ!(2 раза на логи, и идете, во время ходьбы постоянно пишите ,exec logger)
ламберджэкинг.сц:

Code: Select all

sub Lumber() 
var i=0,j=0,k=0,r=0,q=0,ii,jj
var TopX=324,TopY=65
dim TreeX[1000], TreeY[1000],TreeT[1000]
var flag=0,treeCount=0,clicks=0,flag2=0
var f=file("C:\trees.dat")
var TryHiding=0 ## 1 - перед тем как рубить дерево, будет пытаться уйти в хайд, 0 - не будет
var Xer=0
var GetFromFile=1

uo.exec("filterspeech on")
uo.exec("filterspeech add 'Where do you want to use the pickaxe?'")

uo.print('Выбери топор: ')
uo.exec('addtype axe')
wait(5000)

uo.print('Загружаем координаты из файла...')
f.open()
TreeCount=safe call f.readNumber()
for i=1 to TreeCount
TreeT[i]=safe call f.ReadNumber()
TreeX[i]=safe call f.ReadNumber()
TreeY[i]=safe call f.ReadNumber()
XER=safe call f.ReadNumber()
next
f.close()
uo.print('Деревьев найдено: '+str(treeCount))
wait(2000)
while 1==1
if treeCount>0 then
for i=1 to treeCount
uo.print('Идем к дереву '+str(i)+': x='+str(treex[i])+' y='+str(treey[i]))
flag=gotoxy(treex[i],treey[i])
if flag==1 then
if TryHiding==1 then
ToHide()
end if
GetTree(str(treeT[i]),str(treeX[i]),str(TreeY[i]),str(uo.getz()))
end if
next
end if
wend
end sub

sub GetTree(type,x,y,z)
var i
uo.print('Начинаем рубку дерева...')
for i=0 to 15
if uo.warmode()==1 then
uo.warmode(0)
end if
wait(200)
uo.deletejournal()
uo.waittargettile(type,x,y,z)
uo.useobject('axe')
if WaitForChange()==1 then
return 1
end if
next
return 0
end sub

sub ToHide()
var i
uo.print('Пытаемся уйти в хайд...')
for i=1 to 15
uo.deletejournal()
uo.useskill('Hiding')
if WaitForHide()==1 then
return 1
end if
next
return 0
end sub

sub WaitForHide()
var Text1=uo.getname()+": You have hidden yourself well"
var Text2=uo.getname()+": You can't seem to hide here."
var mess
for var i=0 to 200
mess=uo.journal(0)
if uo.Journal(0)==Text1 then
return 1
end if
if uo.Journal(0)==Text2 then
return 0
end if
wait(50)
next
return 0
end sub

sub WaitForChange()
var Text1=uo.getname()+': You hack at the tree for a while, but fail to produce any useable wood.'
var Text2='There is nothing here to chop.'
var Text3="You are too far away"
var Text4="There's not enough wood here to chop."
var Text5="That is too far away"
var Text6="There's not enough wood here to chop"
var Text7="It appears immune to your blow"
var Text8="That is too far away."
var Text9="You can't reach this."
var Text10="You can't get there."
var mess
for var i=0 to 200
mess=uo.journal(0)
if uo.Journal(0)==Text2 OR uo.Journal(0)==Text3 OR uo.Journal(0)==Text4 OR uo.Journal(0)==Text5 OR uo.Journal(0)==Text6 OR uo.Journal(0)==Text7 OR uo.Journal(0)==Text8 OR uo.Journal(0)==Text9 OR uo.Journal(0)==Text10 then
return 1
end if
if uo.Journal(0)==Text1 then
return 0
end if
if mess[0]=='Y' AND mess[1]=='o' AND mess[2]=='u' AND mess[4]=='p' AND mess[5]=='u' AND mess[6]=='t' then
return 0
end if
wait(50)
next
return 0
end sub

sub WaitForTarget()
for var i=0 to 50
if uo.Targeting()==1 then
return 1
end if
wait(200)
next
return 0
end sub

sub WaitForChangeXY(myX,myY,lastX,lastY)
for var i=1 to 50
if lastX<>myX OR lastY<>myY then
return 1
end if
wait(200)
next
return 0
end sub

sub gotoXY(x,y)
var myX,myY,lastX=0,lastY=0,i,halt=0,z,r=0
for i=1 to 60
MyX=uo.getX();
MyY=uo.getY();
if LastX==MyX AND LastY==MyY then
halt=halt+1
else
halt=0
end if
if halt>=10 then
if uo.GetDir()==1 then
for z=0 to 8
uo.press(40)
next
end if
if uo.GetDir()==3 then
for z=0 to 8
uo.press(37)
next
end if
if uo.GetDir()==5 then
for z=0 to 8
uo.press(38)
next
end if
if uo.GetDir()==7 then
for z=0 to 8
uo.press(39)
next
end if
halt=15
end if
if abs(x-myX)<=1 AND abs(y-myY)<=2 then
return 1
end if
if x<=MyX then
if y<=MyY then
for z=0 to 3
uo.press(38)
next
else
for z=0 to 3
uo.press(37)
next
end if
else
if y<=MyY then
for z=0 to 3
uo.press(39)
next
else
for z=0 to 3
uo.press(40)
next
end if
end if
lastX=myX
lastY=myY
wait(200)
next
return 0
end sub

sub abs(num)
if num>=0 then
return num
else
return num*(-1)
end if
end sub

sub main()
Lumber()
end sub

sub logger()
uo.exec("moveitem lastobject 0 ground "+str(uo.getx())+" "+str(uo.gety())+" "+str(uo.getZ())+" ")
end sub


Создаём файлик C:\trees.dat, и в него вставляем...
текст полученный командой ,infotile, после того как вы щелкнули на дерево...1-ая строка должна быть равна кол-во деревьев...
у вас должно получиться такое...

Code: Select all

62
3283 2644 681 0
3277 2644 678 0
3299 2644 675 0
3293 2644 672 0
3293 2640 675 0
3296 2640 672 0
3296 2644 666 0
3287 2636 672 0
3299 2648 672 0
3290 2648 669 0
3277 2648 666 0
3299 2648 663 0
3288 2648 660 0
3296 2644 666 0
3150 2645 669 0
3293 2644 672 0
3291 2652 669 0
3289 2652 672 0
3281 2652 678 0
3299 2660 666 0
3299 2652 660 0
3289 2648 660 0
3277 2648 654 0
3283 2644 657 0
3299 2640 660 0
3299 2652 660 0
3293 2656 654 0
3299 2660 651 0
3277 2660 648 0
3302 2660 654 0
3299 2660 666 0
3277 2660 669 0
3299 2660 672 0
3299 2668 672 0
3288 2668 663 0
3299 2672 660 0
3283 2672 657 0
3280 2668 654 0
3284 2676 657 0
3283 2676 657 0
3277 2672 651 0
3280 2676 651 0
3299 2680 654 0
3299 2680 651 0
3296 2680 672 0
3290 2680 675 0
3280 2680 678 0
3299 2680 681 0
3277 2676 687 0
3289 2676 681 0
3291 2676 678 0
3283 2672 681 0
3302 2672 678 0
3280 2668 678 0
3296 2672 675 0
3299 2668 672 0
3293 2676 672 0
3293 2684 669 0
3280 2692 672 0
3289 2688 675 0
3291 2684 675 0
3291 2680 663 0

Posted: 2004-09-20 08:03:58
by Yaponchick
Дык, карпентри, делал для друга на шард RUO, www.ruo.ru

Code: Select all

sub main()
uo.exec("concolor '0x0044'")
uo.exec("addtype 'tool'")
wait(5000)
uo.exec("addtype 'logs'")
wait(5000)
uo.exec("addtype 'paper'")
wait(5000)
uo.exec("addtype 'deed'")
wait(5000)
uo.print("Macros started. Thanks for Yaponchick™")
while not uo.dead()
uo.exec("waitmenu 'Carpentry' 'Misc' 'Misc' 'Paper'")
uo.exec("usetype 'tool'")
wait(10000)
if uo.count("paper")>0 then
changePaperToDeed()
endif
wend
end sub

sub changePaperToDeed()
while uo.count("paper")>0
uo.exec("waitmenu 'Carpentry' 'Misc' 'Misc' 'deed'")
uo.usetype("tool")
wait(10000)
if uo.count("deed")>0 then
DropDeeds()
endif
wend
end sub

sub DropDeeds()
while uo.count("deed")>0
uo.FindType("deed",-1,"my")
uo.exec("drophere finditem")
wait(1000)
wend
end sub


1. Указваете на ваш столярный аппарат...
2. Указываете на логи...
3. Указываете на бумагу...
4. Указываете на диды, и наслаждаетесь!

Posted: 2004-09-20 08:08:45
by Yaponchick
Дык, мэджери:

Code: Select all

sub main
uo.print("Выбери сундук:")
uo.exec('addobject sunduk')
wait(10000)

uo.print("где NightShade")
uo.exec('addtype ns') 
wait(10000)

mageryi:
while uo.mana>9
uo.exec("cast 'Poison' self")
wend

while uo.mana<uo.int
uo.exec("useskill 'Meditation'")
wait(500)
wend

if uo.count("ns")<100 then
getRegs()
endif

goto mageri
end sub

sub getRegs()
uo.findtype("ns",-1,"sunduk")
uo.grab("100","finditem");
end sub

Posted: 2004-09-20 08:12:40
by Yaponchick
Мининг, использует систему Ламбера...

Прочтите сначала ЭТО: http://yoko.netroof.net/forum/viewtopic.php?p=6134#6134

Code: Select all

sub Mining()
var i=0,j=0,k=0,r=0,q=0,ii,jj, a=0
var TopX=324,TopY=65                                 
dim OreX[1000], OreY[1000],OreT[1000],OreXER[1000]
var flag=0,oreCount=0,clicks=0,flag2=0
var f=file("C:\ores.dat")

var TryHiding=0        ## 1 - перед тем как рубить дерево, будет пытаться уйти в хайд, 0 - не будет

uo.print('Выбери кирку: ')
uo.exec('addtype pickaxe')
wait(5000)

      uo.print('Загружаем координаты из файла...')
      f.open()
      OreCount=safe call f.readNumber()
      uo.print('Загрузили кол-во айтемов')
      for i=1 to OreCount   
      OreT[i]=safe call f.ReadNumber()
      OreX[i]=safe call f.ReadNumber()       
      OreY[i]=safe call f.ReadNumber()       
      OreXER[i]=safe call f.ReadNumber()
    next     
      uo.print('Загрузили всё...')
      f.close()

wait(2000)

while 1==1
      if OreCount>0 then
              for i=1 to OreCount
                      uo.print('Идем к точке '+str(i)+': x='+str(Orex[i])+' y='+str(Orey[i]))                     
                      flag=gotoxy(Orex[i],Orey[i])
                      if flag==1 then
                              if TryHiding==1 then
                                      ToHide()
                              end if                 
                              GetOre(str(OreT[i]),str(OreX[i]),str(OreY[i]),str(uo.getz()))
                      end if                 
              next
      end if
wend 
end sub

sub GetOre(type,x,y,z)
var i
      uo.print('Начинаем выкапывание руды...')
      for i=0 to 30
              if uo.warmode()==1 then
                      uo.warmode("0")
              end if
              wait(200)
              uo.deletejournal()
              uo.waittargettile(type,x,y,z)
              uo.usetype('pickaxe')
              if WaitForChange()==1 then
                      return 1
              end if 
      next
      return 0
end sub

sub ToHide()
var i
      uo.print('Пытаемся уйти в хайд...')
      for i=1 to 15           
              uo.deletejournal()
              uo.useskill('Hiding')
              if WaitForHide()==1 then
                      return 1
              end if
      next
      return 0               
end sub

sub WaitForHide()
var Text1=uo.getname()+": You have hidden yourself well"
var Text2=uo.getname()+": You can't seem to hide here."
var mess
      for var i=0 to 200
              mess=uo.journal(0)
              if uo.Journal(0)==Text1 then
                      return 1
              end if 
              if uo.Journal(0)==Text2 then
                      return 0
              end if 
              wait(50)
      next
      return 0
end sub

sub WaitForChange()
var Text1=uo.getname()+': You loosen some rocks but fail to find any useable ore.'
var Text2='There is no ore here to mine.'
var Text3="You can't reach this."
var Text4="You can't reach that."
var Text5="Try mining in rock."
var Text6="You have no line of sight to that location"
var Text7="You can't think of a way to use that item."
var Text8="There is nothing here to mine for."
var Text9="You can't use the %s where it is."
var mess
      for var i=0 to 200
              mess=uo.journal(0)
              if uo.Journal(0)==Text2 OR uo.Journal(0)==Text3 OR uo.Journal(0)==Text4 OR uo.Journal(0)==Text5 OR uo.Journal(0)==Text6 OR uo.Journal(0)==Text7 OR uo.Journal(0)==Text8 OR uo.Journal(0)==Text9 then
                      return 1
              end if 
              if uo.Journal(0)==Text1 then
                      return 0
              end if                 
              if mess[0]=='Y' AND mess[1]=='o' AND mess[2]=='u' AND mess[4]=='p' AND mess[5]=='u' AND mess[6]=='t' then
                      return 0
              end if
              wait(50)
      next
      return 0
end sub

sub WaitForTarget()
      for var i=0 to 50
              if uo.Targeting()==1 then
                      return 1
              end if
              wait(200)
      next
      return 0
end sub

sub WaitForChangeXY(myX,myY,lastX,lastY)
      for var i=1 to 50
              if lastX<>myX OR lastY<>myY then
                      return 1
              end if
              wait(200)
      next
      return 0
end sub

sub gotoXY(x,y)
var myX,myY,lastX=0,lastY=0,i,halt=0,z,r=0
      for i=1 to 60
              MyX=uo.getX();
              MyY=uo.getY();
              if LastX==MyX AND LastY==MyY then
                      halt=halt+1
              else
                      halt=0
              end if
              if halt>=10 then
                      if uo.GetDir()==1 then
                              for z=0 to 8
                                      uo.press(40)
                              next
                      end if
                      if uo.GetDir()==3 then
                              for z=0 to 8
                                      uo.press(37)
                              next
                      end if         
                      if uo.GetDir()==5 then
                              for z=0 to 8
                                      uo.press(38)
                              next
                      end if                                 
                      if uo.GetDir()==7 then
                              for z=0 to 8
                                      uo.press(39)
                              next
                      end if 
                      halt=15
              end if
              if abs(x-myX)<=1 AND abs(y-myY)<=2 then
                      return 1
              end if         
              if x<=MyX then
                      if y<=MyY then
                              for z=0 to 3
                                      uo.press(38)
                              next
                      else   
                              for z=0 to 3
                                      uo.press(37)
                              next
                      end if
              else
                      if y<=MyY then
                              for z=0 to 3
                                      uo.press(39)
                              next
                      else
                              for z=0 to 3
                                      uo.press(40)
                              next
                      end if                 
              end if
              lastX=myX
              lastY=myY
              wait(200)
      next
      return 0
end sub

sub abs(num)
      if num>=0 then
              return num
      else
              return num*(-1)
      end if
end sub       

sub main()
Mining()
end sub

sub CheckLag()
      UO.DeleteJournal()
      UO.Click('backpack')

              repeat
              wait(500)
      until UO.InJournal('backpack')
end sub

Posted: 2004-09-20 08:13:31
by Yaponchick
На сегодня с вас хватит...;-Р

Posted: 2004-09-20 11:36:13
by kuviCk
Yaponchick wrote:Дык, мэджери:

Code: Select all

sub main
uo.print("Выбери сундук:")
uo.exec('addobject sunduk')
wait(10000)

uo.print("где NightShade")
uo.exec('addtype ns') 
wait(10000)

mageryi:
while uo.mana>9
uo.exec("cast 'Poison' self")
wend

while uo.mana<uo.int
uo.exec("useskill 'Meditation'")
wait(500)
wend

if uo.count("ns")<100 then
getRegs()
endif

goto mageri
end sub

sub getRegs()
uo.findtype("ns",-1,"sunduk")
uo.grab("100","finditem");
end sub


Это все кнечно хорошо но с Ошибками !!!

Posted: 2004-09-20 12:12:27
by Yaponchick
Sorry, просто некоторые скрипты я не тестил, брал с компа...помню то что у меня когда-то был скрипт на магери, он брал реги с пола порциями по 100 шт.
ламбер и мининг ТОЧНО пашет ;-Р

Posted: 2004-09-20 13:34:05
by AvantriX
А не затруднит коммент к минингу настрочить?

Posted: 2004-09-20 16:44:36
by Yaponchick
Командой ,infotile, щёлкаешь на те клетки в шахте(тайлы) в которых хочешь копать, 50-60 тайлов ~30-40 минут...
потом из Text Window копируешь всё и удаляешь пробелы....точнее пустые строки...
сохраняешь в файле C:\ores.dat и в 1-ой строчке пишешь "кол-во строк файла-1"!

Posted: 2004-09-21 00:17:30
by MorbidAngel
Yaponchick wrote:Sorry, просто некоторые скрипты я не тестил, брал с компа...помню то что у меня когда-то был скрипт на магери, он брал реги с пола порциями по 100 шт.
ламбер и мининг ТОЧНО пашет ;-Р

sub main()
Mag:
if UO.Count("0x0f88")<30 then
UO.Waittargetground('0x0f88')
UO.Grab("100")
end if
wait(4000)
While UO.mana>9
UO.cast('Poison')
wait(2500)
uo.exec("waittargettype '0x1bdd'")
wait(100)
wend


while UO.MANA<10
UO.useskill("Meditation")
wait(2100)
wend
Goto Mag
end sub



Это мое магери в твоем не разбирался...... оно как ты заметил именно с грабом. Но тут есть минус который заключается в том что реги он берет с пола а не из сундука. Хотя имхо, это не принципиально.

Posted: 2004-09-21 16:24:45
by Kiro
только наверно uo.exec("waittargettype '0x1bdd'") надо поставить до UO.cast('Poison') , а то это фигня получается, да и задержки не надо

Posted: 2004-09-30 05:10:20
by evr0
где то ошибка в скрипте на лумбер, а может не ошибка, а под другой шард сделано, не знаю даже. Дело вот в чём: все делает отлично, НО не рубит пока топор не заюзаешь, такое ощущение что где то вейттаргет пропущен или просто вейт маленький. Скрипт пересматриваю который раз, не могу найти. Просто такую систему скрипта для лумбера первый раз вижу, поэтому могу тупить в чем то :) Где в скрипте часть про топор (взаимодействие с ним)? И ответь мне в аську, надо поговорить по поводу дополнения к скрипту. (lesh1y - это я в аське).

Posted: 2004-09-30 08:10:51
by Sfagnum
evr0 wrote:где то ошибка в скрипте на лумбер, а может не ошибка, а под другой шард сделано, не знаю даже. Дело вот в чём: все делает отлично, НО не рубит пока топор не заюзаешь, такое ощущение что где то вейттаргет пропущен или просто вейт маленький. Скрипт пересматриваю который раз, не могу найти. Просто такую систему скрипта для лумбера первый раз вижу, поэтому могу тупить в чем то :) Где в скрипте часть про топор (взаимодействие с ним)? И ответь мне в аську, надо поговорить по поводу дополнения к скрипту. (lesh1y - это я в аське).
весь форум этим примером покрыт...

Code: Select all

uo.waittargettile(type,x,y,z) 
uo.useobject('axe')
в ф-ии sub GetTree(type,x,y,z) отвечает за прицел и использование топора, ожидание в ф-ии sub WaitForChange(), но вот у меня встречаются такие деревья, на которые топор ни как не действует, т.е. никакого отзыва... да и рубить не хочет, хотя тайл правильный:(
но чем данные скрипт хорош это тем что через время = 15*200*50, рубила перейдёт к следующему дереву...

Posted: 2004-09-30 08:40:01
by evr0
все все все... я почти сразу же после написания поста увидил эти строчки, просто забыл сообщить что у же нашел их =) простая запара, не обращайте внимания