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

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 часов не слили?
ДРВ
Spoiler
_________________
Антарес
Spoiler|Gostrabaiter|Umhra|Slog
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