Page 1 of 1

Все для карпентри на ДРВ

Posted: 2006-11-08 17:12:00
by GimFlex
не хочу боянить вот написал так как сам решил этим заняться вплотную думаю комунить пригодится тут несколько скриптов на перекладку однотипных вещей и производство стафов (можно легко переделать под удочки) на подходе продажа этих итемов вендору (с портами все как положено)
собственно все

Code: Select all

######################################
#DRW Question_GimFlex
######################################
#для удобства например купили 50 пустых мешков их надо кинуть
#в сундук, не в ручную же, запускаем и не напрягаемся.
######################################
sub Perekidka()
uo.print('Otkyda kidaem?') 
uo.exec('addobject contiz') 
while uo.targeting() 
  wait(100) 
wend 
uo.print('Chto kidaem?') 
uo.exec('addtype item') 
while uo.targeting() 
  wait(100) 
wend 
uo.print('Kyda kidaem?') 
uo.exec('addobject contv') 
while uo.targeting() 
  wait(100) 
wend
uo.useobject('contiz')
wait(500)
uo.findtype('item','-1','contiz')
while uo.findcount()
 uo.moveitem('finditem','all','contv')
 wait(700)
 uo.findtype('item','-1','contiz')
wend
uo.print('Razgryzilsya')
endsub
########################################
#ОПИСАНИЕ: стоим у 2х сундуков в одном пустые мешки в другом
#полные мешки и логи, чар берет логи и начинает крафтить наполняя
#мешок продуктами как наполнил кидает в сундук берет след пустой
#мешок (удобно тем что если у тебя мешок не наполнился нужным
#кол-вом продукта он продолжает его наполнять)
#П.С. кстати учтите что стаф весит 4 единицы так что 
# грамотно рассчитывайте веса (здесь рассчитано на 200 силы)
# пример: 150 стафов = 600, 300 логов +150=750, побочный=50 
########################################
sub Carpentry()
var cont1='0x4035FD15'#логи и наполненные мешки
var cont2='0x40343855'#пустые мешки
var log='0x1BDD'#тип лога
var logc='0x0000'#цвет лога
var inst='0x1032'#тип инструмента
var mesh='0x0E75'#тип мешка
var itemp='0x0E89'#тип предмета изготовленного
var food='0x097B'#тип еды
var kolvo=150#кол-во предметов рассчитывать с учетом общего веса
var kollog='300'#кол-во логов которое берем из сундука
var sym,i,kol
var ms1="You fail"
var ms2="You put"
i=0
uo.cancelmenu()
uo.automenu('Carpentry','Weapons & Tools')
uo.automenu('Weapons & Tools','quarter staff (3 log)')
uo.useobject(cont1)
wait(1000)
uo.useobject(cont2)
wait(1000)
uo.findtype(log,logc,'backpack')
if uo.findcount() then
 uo.moveitem('finditem','all',cont1)
 wait(1000)
endif
uo.findtype(mesh,'-1','backpack')
if uo.findcount()<=0 then
 uo.findtype(mesh,'-1',cont2)
 uo.moveitem('finditem','1','backpack')
 wait(1000)
endif
sym=uo.getserial('finditem')
while not uo.dead()
 uo.useobject(sym)
 uo.findtype(itemp,'-1',sym)
 while uo.findcount()<kolvo
  ToHide()
  uo.findtype(log,logc,'backpack')
  if uo.getquantity('finditem')<10 then
   CheckLag()
   uo.findtype(log,logc,cont1)
   uo.moveitem('finditem',kollog,'backpack')
   wait(1000)
  endif
  uo.findtype(itemp,'-1','backpack')
  if uo.findcount()>0 then
   uo.moveitem('finditem','all',sym)
  endif 
  uo.usetype(inst)
  uo.deletejournal()
  repeat
   wait(100)
  until uo.injournal(ms1) or uo.injournal(ms2)
  i=i+1
  if i==25 then
   i=0
   uo.usetype(food)
  endif 
  uo.findtype(itemp,'-1',sym)
  kol=uo.findcount()
  uo.print('Sdelal '+str(kol)+' stafov')
 wend
 CheckLag()
 uo.moveitem(sym,'1',cont1)
 wait(1000)
 CheckLag()
 uo.findtype(mesh,'-1',cont2)
 uo.moveitem('finditem','1','backpack')
 wait(1000)
 CheckLag()
 sym=uo.getserial('finditem')
wend
endsub
############################################
Sub ToHide() 
   while not UO.Hidden() 
      CheckLag() 
      uo.WarMode(0) 
      uo.UseSkill('Hiding') 
      repeat 
         wait(200) 
      until UO.InJournal('You have hidden') OR UO.InJournal('seem to hide') OR UO.InJournal('preocopured') or UO.Dead() 
   wend 
end Sub 
#############################################
Sub CheckLag() 
   uo.DeleteJournal() 
   uo.Click('backpack') 
   repeat 
      wait(50) 
   until uo.InJournal('backpack') or UO.Dead() 
end Sub 
#############################################

Posted: 2006-11-08 17:28:17
by Scripts Writer
1.

Code: Select all

if uo.findcount()<=0 then 
Немного не корректно. Лучше было бы написать :

Code: Select all

if not uo.FindCount()

2.

Code: Select all

sym=uo.getserial('finditem') 

 uo.useobject(sym)
Могу ошибаться, но больше чем уверен, что переменную , которой присваиваешь значение в скрипте в дальнейшем надо использовать в апострафах.

3. После перекладывания желательно бы задержку. Хотя здесь возможно и никаких сбоев может и не быть.

Code: Select all

  if uo.findcount()>0 then 
   uo.moveitem('finditem','all',sym) 
  endif 
  uo.usetype(inst)
4. Динамическая пауза бы не помешала

Code: Select all

  repeat 
   wait(100) 
  until uo.injournal(ms1) or uo.injournal(ms2)
Зачем писать то,что уже написано?

п.с. Ты этот скрипт проверял или опять ради прикола когда выкладывал решил кое что изменить ?!

Posted: 2006-11-08 17:38:23
by GimFlex
1.ну вроде работает и так :)
2.нет работает без ковычек отлично
3.в том то весь и прикол там идет задержка дальше
4.не знаком с этим :)

работает уже 2 часа как :)

Posted: 2006-11-08 17:41:51
by GimFlex
3.кстати поставил ковычки и как то по левому стал работать так что без ковычек надо все правильно

Posted: 2006-11-08 17:46:33
by GimFlex
по поводу теста - тестил :)

Image

Posted: 2006-11-08 17:49:47
by GimFlex
забыл добавить - учтите что стаф весит 4 единицы так что грамотно рассчитывайте веса

Posted: 2006-11-08 22:44:24
by GimFlex
устал тестить 7 часов ниразу не слетел :) :wink:

Posted: 2006-11-09 02:14:17
by slonopotam
Крафтил стоя на улице, чтож за шард такой что тебя за 7 часов не слили?

Posted: 2006-11-11 16:37:32
by GimFlex
продажа выкладываю для одного человека сложен в настройках так что кто поймет тот пусть и юзает

Code: Select all

sub Prodaga()  
var zabor='0x40161D00'
var booka='0x403DF607'
var cont1='0x4035FD15'
var cont2='0x40343855'
var mesh='0x0E75'
var fl=0
var oldX=UO.GetX() 
var oldY=UO.GetY() 
while fl==0
 Port(2,booka)
 while uo.gety('self')<>2364
  uo.press(33)
  wait(10)
 wend 
 uo.useobject(zabor)
 while uo.gety('self')<>2361
  uo.press(33)
  wait(500)
 wend  
 uo.useobject(zabor)
 uo.findtype(mesh,'-1','backpack')
 uo.moveitem('finditem','1',cont2)
 CheckLag()
 uo.useobject(cont1)
 CheckLag()
 uo.findtype(mesh,'-1',cont1)
 if uo.findcount() then
   uo.moveitem('finditem','1','backpack')
   CheckLag()
  else 
   fl=1
 endif
 Port(1,booka)
 oldX=UO.GetX()
 oldY=UO.GetY()
 uo.useobject('0x400BC158')
 wait(500)
 uo.lclick(400,270)
 Repeat 
  wait(500) 
 Until oldX<>UO.GetX() OR oldY<>UO.GetY()
 GotoXY(5512,1171)
 uo.findtype(mesh,'-1','backpack')
 uo.waittargetobject('finditem')
 uo.useobject('0x4023D402')
 wait(1000)
 uo.lclick(184,130)
 CheckLag()
 wait(500)
 oldX=UO.GetX()
 oldY=UO.GetY()
 uo.useobject('0x400956D9')
 wait(500)
 uo.lclick(120,170)
 Repeat 
  wait(500) 
 Until oldX<>UO.GetX() OR oldY<>UO.GetY()
wend
endsub
###################################################
Sub Port(n,book) 
var oldX=UO.GetX() 
var oldY=UO.GetY() 
   NoTarget() 
   UO.UseObject(book) 
   FastLootCheck() 
   CheckLag() 
   UO.LClick(135, n*15+55) 
   Repeat 
     wait(500) 
   Until oldX<>UO.GetX() OR oldY<>UO.GetY()
end sub 

Sub FastLootCheck() 
   UO.DeleteJournal() 
   wait(600) 
   if UO.InJournal("FastLoot") OR UO.InJournal("World save") then 
      CheckLag() 
   endif 
end sub 

Sub NoTarget() 
   if UO.Waiting() then 
      UO.CancelTarget() 
   endif 
end sub 
#####################################################
Sub GotoXY(x,y) 
   VAR i,j,m
   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 
     endif 
   Wend 
end sub 


Sub StepEdit(x,y,dir,key) 
   VAR walkwait=300 
   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 
end sub 


Sub StepArrow(x,y,dir,ldir,rdir,key) 
   VAR walkwait=300 
   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 
end sub 

Posted: 2006-11-17 22:39:31
by BART
А можно всё это запихнуть в один сундук?
Типо два мешка лежат в сундуке (Один с пустыми мешками) (Другой для полных) а логи лежат в этом сундуке?

Posted: 2006-11-18 00:48:11
by GimFlex
BART wrote:А можно всё это запихнуть в один сундук?
Типо два мешка лежат в сундуке (Один с пустыми мешками) (Другой для полных) а логи лежат в этом сундуке?
нет если у тебя нет сундука могу сделать :)