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:А можно всё это запихнуть в один сундук?
Типо два мешка лежат в сундуке (Один с пустыми мешками) (Другой для полных) а логи лежат в этом сундуке?


нет если у тебя нет сундука могу сделать :)