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

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
GimFlex
Expert!
Posts: 766
Joined: 2005-01-07 13:22:19
Contact:

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

Post 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 
#############################################
Last edited by GimFlex on 2006-11-08 18:26:06, edited 3 times in total.
Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Post 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)
Зачем писать то,что уже написано?

п.с. Ты этот скрипт проверял или опять ради прикола когда выкладывал решил кое что изменить ?!
GimFlex
Expert!
Posts: 766
Joined: 2005-01-07 13:22:19
Contact:

Post by GimFlex »

1.ну вроде работает и так :)
2.нет работает без ковычек отлично
3.в том то весь и прикол там идет задержка дальше
4.не знаком с этим :)

работает уже 2 часа как :)
GimFlex
Expert!
Posts: 766
Joined: 2005-01-07 13:22:19
Contact:

Post by GimFlex »

3.кстати поставил ковычки и как то по левому стал работать так что без ковычек надо все правильно
GimFlex
Expert!
Posts: 766
Joined: 2005-01-07 13:22:19
Contact:

Post by GimFlex »

по поводу теста - тестил :)

Image
GimFlex
Expert!
Posts: 766
Joined: 2005-01-07 13:22:19
Contact:

Post by GimFlex »

забыл добавить - учтите что стаф весит 4 единицы так что грамотно рассчитывайте веса
GimFlex
Expert!
Posts: 766
Joined: 2005-01-07 13:22:19
Contact:

Post by GimFlex »

устал тестить 7 часов ниразу не слетел :) :wink:
slonopotam
Posts: 270
Joined: 2006-08-05 14:09:06
Contact:

Post by slonopotam »

Крафтил стоя на улице, чтож за шард такой что тебя за 7 часов не слили?
[b][color=green]ДРВ[/color][/b]
[color=blue]Spoiler[/color]
_________________
[b][color=green]Антарес[/color][/b]
[color=blue]Spoiler[/color]|[color=blue]Gostrabaiter[/color]|[color=red]Umhra[/color]|[color=red]Slog[/color]
GimFlex
Expert!
Posts: 766
Joined: 2005-01-07 13:22:19
Contact:

Post 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 
BART
Posts: 7
Joined: 2006-02-17 15:20:12

Post by BART »

А можно всё это запихнуть в один сундук?
Типо два мешка лежат в сундуке (Один с пустыми мешками) (Другой для полных) а логи лежат в этом сундуке?
GimFlex
Expert!
Posts: 766
Joined: 2005-01-07 13:22:19
Contact:

Post by GimFlex »

BART wrote:А можно всё это запихнуть в один сундук?
Типо два мешка лежат в сундуке (Один с пустыми мешками) (Другой для полных) а логи лежат в этом сундуке?
нет если у тебя нет сундука могу сделать :)
Post Reply