Очень интересный скрипт

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
Nominee
Posts: 15
Joined: 2008-01-13 14:50:07

Очень интересный скрипт

Post by Nominee »

Есть такой вот скрипт

Code: Select all

##### 
#чар ходит капает в городе Британии вдоль скалы 
#как обкапал скалу, обкапывает еще разок 
#затем идет и плавит всю руду выкапанную 
#потом идет к банку и делает из ингов отмычки 
#потом идет и продает все эти отмычки вендору 
#потом выкладывает золото, возвращается к скале и опять 25 
###### 
#настройки тут очень простые: 
#1)надо создать buy/sell лист с именем lp для продажи отмычек 
#2)вписать тип кирки/лопаты примерно 150 строка в скрипте 
#3)положить в банк инструмент для тинкерства 
###### 
#замечания!!! 
#1)чар делает отмычки поэтому скилл тинкера нужен >48,5 
#2)чар работает с сундуком банка, поэтому нельзя допускать 
#  чтобы сундук банка закрывался, лучше запустить скрипт 
#  и не трогать его, можно тока общаться продолжать без проблем 
#3)скрипт надо запускать, когда вы в координатах 1459-1510 
#4)чар 2 раза обкапывает скалу - это примерно 550 оров руды, что 
#  соответствует силе примерно в 140 так что если сила чара меньше 
#  чем 140 может выпадать руда при копании 
###### 
#from GimFlex aka Question with smile again) 
###### 

sub main() 
 while not uo.dead() 
  gomine() 
  gominback() 
  gomine() 
  gosmelt() 
  smeltore() 
  gobank() 
  unloadiron() 
 #### tinkering() 
  gosell() 
  sellvendor() 
  goungold() 
  unloadgold() 
  gomaxback() 
 wend 
endsub

Sub gomine() 
  go(1459,1510,1) 
  go(1458,1507,1) 
  go(1457,1506,1) 
  go(1455,1505,1) 
  go(1452,1506,1) 
  go(1450,1509,1) 
  go(1450,1512,1) 
  go(1450,1513,1) 
  go(1448,1515,1) 
  go(1451,1517,1) 
  go(1452,1519,1) 
  go(1451,1521,1) 
  go(1448,1522,1) 
  go(1445,1523,1) 
  go(1445,1525,1) 
  go(1447,1527,1) 
  go(1448,1528,1) 
  go(1450,1530,1) 
  go(1452,1529,1) 
  go(1454,1529,1) 
endsub 

Sub gosmelt() 
  go(1432,1542,0) 
  go(1426,1556,0) 
endsub  

Sub gobank() 
  go(1430,1570,0) 
  go(1438,1583,0) 
  go(1425,1592,0) 
  go(1425,1622,0) 
  go(1420,1631,0) 
  go(1420,1668,0) 
  go(1436,1671,0) 
  go(1435,1680,0) 
endsub 

Sub gomaxback() 
  go(1435,1669,0) 
  go(1420,1669,0) 
  go(1420,1631,0) 
  go(1425,1592,0) 
  go(1438,1583,0) 
  go(1430,1570,0) 
  go(1430,1536,0) 
  go(1445,1515,0) 
  go(1453,1502,0) 
  go(1460,1505,0) 
endsub 

Sub gominback() 
  go(1446,1533,0) 
  go(1441,1524,0) 
  go(1447,1504,0) 
  go(1460,1504,0) 
endsub 

Sub gosell() 
 var dver='0x400009D9' 
  go(1435,1658,0) 
  go(1432,1658,0) 
  while uo.getx('self')>=1432 
   uo.useobject(dver) 
   wait(500) 
   uo.press(36) 
   wait(200) 
   uo.press(36) 
   wait(200) 
   uo.press(36) 
   wait(200) 
  wend 
  go(1426,1655,0) 
endsub 

Sub goungold() 
 var dver='0x400009D9' 
  go(1430,1658,0) 
  while uo.getx('self')<=1430 
   uo.useobject(dver) 
   wait(500) 
   uo.press(39) 
   wait(200) 
   uo.press(39) 
   wait(200) 
   uo.press(39) 
   wait(200) 
  wend 
  go(1435,1680,0) 
endsub  

Sub sellvendor() 
 var vendor="Granger" 
 uo.set('buydelay','4000') 
 uo.set('maxsell','200') 
 uo.findtype('0x14FB','-1','backpack') 
 while uo.findcount() 
  uo.sell('lp',vendor) 
  wait(4000) 
  uo.findtype('0x14FB','-1','backpack') 
 wend 
endsub 

Sub kopka() 
 var kirka='0x0E86' 
 var i,j,x,y,z 
 var ms1="Try mining" 
 var ms2="You put" 
 var ms3="There is no ore" 
 var ms4="You loosen" 
 x=uo.getx('self') 
 y=uo.gety('self') 
 z=uo.getz('self') 
 hiding() 
 for i=-1 to 1 
  for j=-1 to 1 
   repeat 
    uo.deletejournal() 
    uo.waittargettile(0,x+i,y+j,z) 
    uo.usetype(kirka) 
    repeat 
     wait(100) 
    until uo.injournal(ms1) or uo.injournal(ms2) or uo.injournal(ms3) or uo.injournal(ms4) 
   until uo.injournal(ms1) or uo.injournal(ms3) 
  next 
 next 
endsub 

Sub unloadiron() 
 uo.findtype('0x1BEF','-1','backpack') 
 while uo.findcount() 
  uo.say("bank") 
  wait(1000) 
  uo.findtype('0x1BEF','-1','backpack') 
  if uo.findcount() then 
   uo.moveitem('finditem','all','lastcontainer') 
  endif 
  uo.findtype('0x1BEF','-1','backpack') 
 wend 
endsub 

Sub unloadgold() 
 uo.findtype('0x0EED','-1','backpack') 
 while uo.findcount() 
  uo.say("bank") 
  wait(1000) 
  uo.findtype('0x0EED','-1','backpack') 
  if uo.findcount() then 
   uo.moveitem('finditem','all','lastcontainer') 
  endif 
  uo.findtype('0x0EED','-1','backpack') 
 wend 
endsub 

Sub hiding() 
 var ms1="You have hidden" 
 var ms2="You can't" 
 repeat 
  uo.deletejournal() 
  uo.useskill('Hiding') 
  repeat 
   wait(100) 
  until uo.injournal(ms1) or uo.injournal(ms2) 
 until uo.injournal(ms1) 
endsub 

Sub smeltore() 
 uo.findtype('0x19B9','-1','backpack') 
 while uo.findcount() 
  uo.useobject('finditem') 
  wait(500) 
  uo.findtype('0x19B9','-1','backpack') 
 wend 
endsub 

sub tinkering() 
 var bank 
 var ms1="You put" 
 var ms2="Tinkering failed" 
 uo.cancelmenu() 
 uo.automenu('Tinkering','Tools') 
 uo.automenu('Tools','lockpick (1 iron ingot)') 
 uo.say("bank") 
 wait(1000) 
 bank=uo.getserial('lastcontainer') 
 uo.findtype('0x1EBC','-1',bank) 
 if uo.findcount() then 
  uo.moveitem('finditem','all','backpack') 
 endif 
 uo.findtype('0x1BEF','-1',bank) 
 while uo.findcount() 
  uo.moveitem('finditem','30','backpack') 
  wait(1000) 
  uo.findtype('0x1BEF','-1','backpack') 
  while uo.findcount() 
   uo.deletejournal() 
   uo.usetype('0x1EBC') 
   repeat 
    wait(100) 
   until uo.injournal(ms1) or uo.injournal(ms2) 
   uo.findtype('0x1BEF','-1','backpack') 
  wend 
  uo.findtype('0x14FB','-1','backpack') 
  if uo.findcount() then 
   uo.moveitem('finditem','all',bank) 
  endif 
  uo.findtype('0x1BEF','-1',bank) 
 wend 
 uo.findtype('0x1EBC','-1','backpack') 
 if uo.findcount() then 
  uo.moveitem('finditem','all',bank) 
 endif 
 uo.findtype('0x14FB','-1',bank) 
 if uo.findcount() then 
  uo.moveitem('finditem','all','backpack') 
  wait(700) 
 endif 
endsub 

Sub go(x,y,k) 
   VAR i 
   VAR dir,ldir,rdir,key,olddir 
   VAR dx,dy,Exit=0 
   VAR CacheLimit=9,CacheIndex="Text" 
   DIM CacheX[10], CacheY[10]      
   CacheX[0]="Test" 
   While Exit<>1    
         dx=x-UO.GetX() 
         dy=y-UO.GetY() 
         If dx==0 AND dy==0 Then 
            Exit=1 
         Endif      
      If dx<>0 AND dy<>0 Then 
         If dx>0 AND dy>0 Then ; GoSE 
            dir=3 
            ldir=2 
            rdir=4 
            key=40 ; DownArrow 
            olddir=UO.GetDir() 
            If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then 
               If olddir==2 Then ; GoNE 
                  dir=1 
                  ldir=0 
                  rdir=1 
                  key=39 ; RightArrow 
                  While UO.GetDir()<>1 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Else ; GoSW 
                  dir=5 
                  ldir=5 
                  rdir=6 
                  key=37 ; LeftArrow 
                  While UO.GetDir()<>5 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Endif 
            Endif 
         Endif 
         If dx>0 AND dy<0 Then ; GoNE 
            dir=1 
            ldir=0 
            rdir=2 
            key=39 ; RightArrow 
            olddir=UO.GetDir() 
            If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then 
               If olddir==0 Then ; GoWN 
                  dir=7 
                  ldir=6 
                  rdir=7 
                  key=38 ; UpArrow 
                  While UO.GetDir()<>7 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Else ; GoSE 
                  dir=3 
                  ldir=3 
                  rdir=4 
                  key=40 ; DownArrow 
                  While UO.GetDir()<>3 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Endif 
            Endif 
         Endif 
         If dx<0 AND dy>0 Then ; GoSW 
            dir=5 
            ldir=4 
            rdir=6 
            key=37 ; LeftArrow 
            olddir=UO.GetDir() 
            If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then 
               If olddir==6 Then ; GoWN 
                  dir=7 
                  ldir=7 
                  rdir=0 
                  key=38 ; UpArrow 
                  While UO.GetDir()<>7 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Else ; GoSE 
                  dir=3 
                  ldir=2 
                  rdir=3 
                  key=40 ; DownArrow 
                  While UO.GetDir()<>3 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Endif 
            Endif 
         Endif 
         If dx<0 AND dy<0 Then ; GoWN 
            dir=7 
            ldir=6 
            rdir=0 
            key=38 ; UpArrow 
            olddir=UO.GetDir() 
            If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then 
               If olddir==0 Then ; GoNE 
                  dir=1 
                  ldir=1 
                  rdir=2 
                  key=39 ; RightArrow 
                  While UO.GetDir()<>1 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Else ; GoSW 
                  dir=5 
                  ldir=4 
                  rdir=5 
                  key=37 ; LeftArrow 
                  While UO.GetDir()<>5 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Endif 
            Endif 
         Endif 
      Endif      
      If dx<>0 AND dy==0 Then 
         If dx>0 Then ; GoE 
            dir=2 
            key=34 ; PgDown 
            olddir=UO.GetDir() 
            If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then 
               If olddir==2 Then ; GoSE 
                  dir=3 
                  ldir=3 
                  rdir=4 
                  key=40 ; DownArrow 
                  While UO.GetDir()<>3 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Else ; GoNE 
                  dir=1 
                  ldir=1 
                  rdir=0 
                  key=39 ; RightArrow 
                  While UO.GetDir()<>1 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Endif 
            Endif 
         Endif            
         If dx<0 Then ; GoW 
            dir=6 
            key=36 ; Home key 
            olddir=UO.GetDir() 
            If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then 
               If olddir==0 Then ; GoWN 
                  dir=7 
                  ldir=7 
                  rdir=0 
                  key=38 ; UpArrow 
                  While UO.GetDir()<>7 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Else ; GoSW 
                  dir=5 
                  ldir=4 
                  rdir=5 
                  key=37 ; LeftArrow 
                  While UO.GetDir()<>5 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Endif 
            Endif 
         Endif 
      Endif 
      If dx==0 AND dy<>0 Then 
         If dy>0 Then ; GoS 
            dir=4 
            key=35 ; End 
            If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then 
               If olddir==2 Then ; GoSE 
                  dir=3 
                  ldir=2 
                  rdir=3 
                  key=40 ; DownArrow 
                  While UO.GetDir()<>3 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Else ; GoSW 
                  dir=5 
                  ldir=6 
                  rdir=5 
                  key=37 ; LeftArrow 
                  While UO.GetDir()<>5 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Endif 
            Endif 
         Endif            
         If dy<0 Then ;GoN 
            dir=0 
            key=33 ; PgUp 
            olddir=UO.GetDir() 
            If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then 
               If olddir==2 Then ; GoNE 
                  dir=1 
                  ldir=1 
                  rdir=2 
                  key=39 ; RightArrow 
                  While UO.GetDir()<>1 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Else ; GoWN 
                  dir=7 
                  ldir=7 
                  rdir=6 
                  key=38 ; UpArrow 
                  While UO.GetDir()<>7 
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) 
                  Wend 
               Endif 
            Endif 
         Endif 
      Endif 
   Wend 
   if k==1 then 
    kopka() 
   endif 
end sub 


Sub StepEdit(x,y,dir,key) 
   VAR walkwait=100 
   VAR ErrLevel=0 
   If UO.GetDir()<>dir Then 
      UO.Press(key) 
      wait(walkwait) 
      If UO.GetDir()<>dir Then 
         CheckLag() 
      Endif 
   Endif 
   UO.Press(key) 
   wait(walkwait) 
   If x==UO.GetX() AND y==UO.GetY() Then 
      CheckLag() 
      If x==UO.GetX() AND y==UO.GetY() Then 
         ErrLevel=1 
      Endif 
   Endif 
   Return ErrLevel 
endsub 


Sub StepArrow(x,y,dir,ldir,rdir,key) 
   VAR walkwait=100 
   VAR ErrLevel=0 
   If UO.GetDir()<>dir Then 
      UO.Press(key) 
      wait(walkwait) 
      If UO.GetDir()<>dir AND UO.GetDir()<>ldir AND UO.GetDir()<>rdir Then 
         CheckLag() 
      Endif 
   Endif 
   If UO.GetX()==x AND UO.GetY()==y Then 
      UO.Press(key) 
      wait(walkwait) 
      If UO.GetDir()==dir AND UO.GetX()==x AND UO.GetY()==y Then 
         CheckLag() 
         If UO.GetDir()==dir AND UO.GetX()==x AND UO.GetY()==y Then          
            ErrLevel=1 
         Endif 
      Endif 
   Endif 
   Return ErrLevel 
endsub 

Sub CheckLag() 
   UO.DeleteJournal() 
   UO.Click('backpack') 
   repeat 
      Wait(50) 
   until UO.InJournal('backpack') 
endsub
Задумка скрипта мне очень понравилась, п равда есть одна проблема.
Я всё настроил, запустил скрипт. Он бегает по прымоугольнику рядом со скалой и ничерта не делает =( Если процедуру копка запустить в ручную - чар копает. Подскажите как быть, очень хочу попробовать
=Joint=
Posts: 17
Joined: 2007-02-24 20:40:31

Post by =Joint= »

А ты встал туда, куда сказано в инструкции? (правый край скалы)
Nominee
Posts: 15
Joined: 2008-01-13 14:50:07

Post by Nominee »

Да, он вокруг скалы ходит а вот процедуру не запускает =(
AGRS
Expert!
Posts: 1007
Joined: 2004-04-04 21:40:09
Contact:

Post by AGRS »

sub main()
while not uo.dead()
gomine() //идет к шахте
gominback() //идет назад
gomine() //опять шляется по шахте
gosmelt() //идет к плавильне
smeltore() //плавит
gobank() //идет к банку
unloadiron() //разгружается
#### tinkering()
gosell() //идет к вендору
sellvendor() //что то продает
goungold() //опять идет к банку
unloadgold() //выгружает деньги
gomaxback() //идет на исходную
wend
endsub

Собственно согласно скрипту чар и не должен копать. :)
Вставь вызовы процедуры Sub kopka() там где чар копать должен. ;)
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Post by Kynep »

AGRS wrote:sub main()

Собственно согласно скрипту чар и не должен копать. :)
Вставь вызовы процедуры Sub kopka() там где чар копать должен. ;)
Ваапще то он копает, копка стоит в конце ходилки:

Code: Select all

Wend 
   if k==1 then 
    kopka() 
   endif 
end sub
Интерестно а ты тип кирки\лопаты указал?
AGRS
Expert!
Posts: 1007
Joined: 2004-04-04 21:40:09
Contact:

Post by AGRS »

Ну если вручную запускает копку и она работает то очевидно указал все что надо, повидимому эта копка просто не запускается.
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Post by Kynep »

AGRS wrote:Ну если вручную запускает копку и она работает то очевидно указал все что надо, повидимому эта копка просто не запускается.
хех все может быть, неохота тестить этот скрипт, я щас алху качаю.
Nominee
Posts: 15
Joined: 2008-01-13 14:50:07

Post by Nominee »

Плз, кому не сложно, протестите =)
Driskill
Posts: 39
Joined: 2006-09-14 10:38:08
Contact:

Post by Driskill »

разобрался макра супер! (сообщение серваковое своеобразное было)
другой вопрос если я изменю колво координат копки что поменяется?
все что нас не убивает - делает нас крепче!
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Post by Kynep »

Driskill wrote:разобрался макра супер! (сообщение серваковое своеобразное было)
другой вопрос если я изменю колво координат копки что поменяется?
да, перестанет копать :D
Nominee
Posts: 15
Joined: 2008-01-13 14:50:07

Post by Nominee »

А как разобрался не секрет? Подскажи плз! Потому как я тоже хочу на нём побегать!
Lifetour
Posts: 30
Joined: 2008-06-04 03:27:01
Location: Bradford(UK)/Riga(LV)

Post by Lifetour »

рябятттт!! помогите! встаёт в координатах 1448,1528 и никуда не хочет идти!!!

что делать?!
Hairyness
Posts: 29
Joined: 2006-02-08 05:50:40
Location: third planet from sun
Contact:

Post by Hairyness »

Неплохо....уто напишет продолжение?

Code: Select all

Чар, насобирав достаточно денег идет на маркет, покупает выху, рар пуху, уника, идет в окло...убивает всех пк. Портится домой и складывает по мешкам...потом летит обратно и убивает до тех пор пока не убьют...после обратна на скалу денег копать... 
оч надо!!! плззз
:lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol:
[img]http://chemer.times.lv/hoover.gif[/img]
Post Reply