Page 1 of 1

Помогите плиз со скриптом

Posted: 2008-12-11 14:44:54
by Klanded
Помогите плиз изменить скрипт чтоб полные мешки он не в сундук кидал, а кидал под ноги.

Code: Select all

######################## 
var Container='0x4047125B';кожа 
VAR Sunduk1 = '0x4000C3BD';сундук с пустыми сумками 
VAR Sunduk2 = '0x4000C32F';сундук с полными сумками 
VAR Meshok = '0x0E75';тип сумки 
VAR MeshSer, d 
VAR k 

################### 
sub main() 
VAR LastTimer 
repeat 
UO.FindType( Meshok, -1, Sunduk1 ) 
MeshSer = UO.GetSerial( 'finditem' ) 
UO.Grab( '1', 'finditem' ) 
wait( 2000 ) 
UO.MoveItem( MeshSer, 0, Sunduk2 ) 
k=0 
repeat 
if UO.Count( '0x1067' ) < 15 then 
take() 
endif 
UO.DeleteJournal() 
Hid() 
eat() 
    UO.set('quiet','1') 
    UO.cancelmenu() 
    UO.automenu ('Leather','Miscellaneous') 
    UO.automenu ('Miscellaneous','Bag') 
CheckLag() 
uo.waittargettype(0x1067) 
UO.UseType( '0x0F9D' ) 
LastTimer=UO.Timer() 
repeat 
wait(300) 
until UO.InJournal("Вы положили") or UO.InJournal("Вам не удалось") or UO.InJournal('You put') or UO.InJournal('fail') or UO.InJournal('target') OR UO.Timer()>LastTimer+200 
if UO.InJournal("Вы положили") or UO.InJournal('You put') then 
while UO.Count( '0x0E76' ) > 0 
UO.FindType( '0x0E76', -1, -1 ) 
UO.MoveItem( 'finditem', 0, MeshSer ) 
wait( 200 ) 
k=k+1 
uo.print('k='+str(k)) 
CheckLag() 
wend 
endif 
until k>=250 
until UO.DEAD() 
end sub 
#################### 
sub take() 
DIM reg[1] 
var i,n 
reg[1]='0x1067'; 

CheckLag() 
while UO.Count(reg[1])<100 
UO.FindType(reg[1],-1,Container) 
n=UO.Count(reg[1]) 
UO.Grab(str(100-n),'finditem') 
wait(200) 
wend 

end sub 
#################### 
sub CheckLag() 
UO.DeleteJournal() 
UO.Click('backpack') 
repeat 
wait(100) 
until UO.InJournal('ackpack') 
end sub 
####################################### 
sub eat() 
VAR LastTimer 
UO.DeleteJournal() 
repeat 
LastTimer=UO.Timer() 
UO.findtype(0x097B,-1,'backpack') 
if UO.findcount('finditem') then 
uo.print('покушали') 
UO.Useobject('finditem') 
wait(200) 
else 
return 
end if 
Until UO.InJournal("stuffed!") OR UO.InJournal("think") or UO.InJournal("found") or UO.InJournal("Вы ничего не можете") OR UO.Timer()>LastTimer+200 
end sub 
######################################### 
sub Hid() 
while not uo.Hidden() 
uo.exec('warmode 0') 
uo.Print('Hiding...') 
uo.UseSkill('Hiding') 
wait(4000) 
wend 
wait(100) 
end sub 

Posted: 2008-12-11 19:29:02
by GAUHAR
Попробвал изменить. Изменения тольк ов этой части скрипта.

Code: Select all

sub main() 
   VAR LastTimer 
   repeat 
      UO.FindType( Meshok, -1, Sunduk1 ) 
      MeshSer = UO.GetSerial( 'finditem' ) 
      UO.Grab( '1', 'finditem' ) 
      wait( 2000 ) 
      k=0 
      repeat 
         if UO.Count( '0x1067' ) < 15 then 
            take() 
         endif 
         UO.DeleteJournal() 
         Hid() 
         eat() 
         UO.set('quiet','1') 
         UO.cancelmenu() 
         UO.automenu ('Leather','Miscellaneous') 
         UO.automenu ('Miscellaneous','Bag') 
         CheckLag() 
         uo.waittargettype(0x1067) 
         UO.UseType( '0x0F9D' ) 
         LastTimer=UO.Timer() 
         repeat 
            wait(300) 
         until UO.InJournal("Вы положили") or UO.InJournal("Вам не удалось") or UO.InJournal('You put') or UO.InJournal('fail') or UO.InJournal('target') OR UO.Timer()>LastTimer+200 
         if UO.InJournal("Вы положили") or UO.InJournal('You put') then 
            while UO.Count( '0x0E76' ) > 0 
               UO.FindType( '0x0E76', -1, -1 ) 
               UO.MoveItem( 'finditem', 0, MeshSer ) 
               wait( 200 ) 
               k=k+1 
               uo.print('k='+str(k)) 
               CheckLag() 
            wend 
         endif 
      until k>=250
      UO.DropHere(MeshSer)  
   until UO.DEAD() 
endsub
Кстати а чем тебе не нравится что полные мкшки складываются в сундук?

Posted: 2008-12-11 20:41:18
by Klanded
Просто на middle-earth в сундук влезает 2 мешка полных

Posted: 2008-12-11 20:50:44
by Klanded
чет по этой замене не работает просто берет мешок входит в хайд и все

Posted: 2008-12-11 21:07:15
by GAUHAR
Klanded wrote:чет по этой замене не работает просто берет мешок входит в хайд и все
Сори, может я поспешил с ответом. Смысл того что сделал я: персонаж берет мешок, заполняет его, а потом заполненный мешок бросает под ноги. Я не подумал о весе мешка. В принципе можно сделать так: чар бере мешок. бросает его под ноги и заполняет его. Тоесть так:

Code: Select all

sub main() 
   VAR LastTimer 
   repeat 
      UO.FindType( Meshok, -1, Sunduk1 ) 
      MeshSer = UO.GetSerial( 'finditem' ) 
      UO.MoveItem(MeshSer,'0','ground',UO.GetX(),UO.GetY(),UO.GetZ()) 
      wait( 2000 ) 
      k=0 
      repeat 
         if UO.Count( '0x1067' ) < 15 then 
            take() 
         endif 
         UO.DeleteJournal() 
         Hid() 
         eat() 
         UO.set('quiet','1') 
         UO.cancelmenu() 
         UO.automenu ('Leather','Miscellaneous') 
         UO.automenu ('Miscellaneous','Bag') 
         CheckLag() 
         uo.waittargettype(0x1067) 
         UO.UseType( '0x0F9D' ) 
         LastTimer=UO.Timer() 
         repeat 
            wait(300) 
         until UO.InJournal("Вы положили") or UO.InJournal("Вам не удалось") or UO.InJournal('You put') or UO.InJournal('fail') or UO.InJournal('target') OR UO.Timer()>LastTimer+200 
         if UO.InJournal("Вы положили") or UO.InJournal('You put') then 
            while UO.Count( '0x0E76' ) > 0 
               UO.FindType( '0x0E76', -1, -1 ) 
               UO.MoveItem( 'finditem', 0, MeshSer ) 
               wait( 200 ) 
               k=k+1 
               uo.print('k='+str(k)) 
               CheckLag() 
            wend 
         endif 
      until k>=250 
   until UO.DEAD() 
endsub

Posted: 2008-12-11 22:14:08
by Klanded
он не берет пак и не складывает не куда

Posted: 2008-12-12 02:44:46
by GAUHAR
Klanded wrote:он не берет пак и не складывает не куда
Странно, я проверил работает, правда твое меню крафта не соответствует моему (пришлось сделать под себя, свое проверь тоже).
Берет рюкзак из контейнера, берет кожу, прячется и начинает шить мешки. и так по кругу.
Еще перед запуском скрипта следует открыть сундуки с ресурсами.

Posted: 2008-12-12 09:04:34
by Klanded
Спасиб большое попробую с открытими а тоя пробовал с закрытыми

Posted: 2008-12-12 11:29:19
by Klanded
Чет он берет сумку и не чего не делает.
Вот выкладываю мож подскажеш что да как.

Code: Select all

######################## 
var Container='0x7395FCFD';???? 
VAR Sunduk1 = '0x7395FCFD';?????? ? ??????? ??????? 
VAR Sunduk2 = '0x4000C32F';?????? ? ??????? ??????? 
VAR Meshok = '0x0E75';??? ????? 
VAR MeshSer, d 
VAR k 

################### 
sub main() 
   VAR LastTimer 
   repeat 
      UO.FindType( Meshok, -1, Sunduk1 ) 
      MeshSer = UO.GetSerial( 'finditem' ) 
      UO.MoveItem(MeshSer,'0','ground',UO.GetX(),UO.GetY(),UO.GetZ()) 
      wait( 2000 ) 
      k=0 
      repeat 
While UO.Count(0x1078)> 2 
UO.Exec("waitmenu 'Choose' 'leather' 'What' 'Leather Cap'")
Wait(400) 
 UO.Exec("waittargettype 0x1078")
Wait(400) 
# sewing kit
UO.Exec("usetype 0x0f9d") 
Wait(4000) 
UO.Exec("cancelmenu")
# ?????? ????? ?? ??? ?????? :)
 wend
repeat 
wait(300) 
until UO.InJournal("?? ????????") or UO.InJournal("??? ?? ???????") or UO.InJournal('You put') or UO.InJournal('fail') or UO.InJournal('target') OR UO.Timer()>LastTimer+200 
if UO.InJournal("?? ????????") or UO.InJournal('You put') then 
while UO.Count( '0x1078' ) > 0 
UO.FindType( '0x1078', -1, -1 ) 
UO.MoveItem( 'finditem', 0, MeshSer ) 
wait( 200 ) 
k=k+1 
uo.print('k='+str(k)) 
CheckLag() 
wend 
endif 
until k>=4 
until UO.DEAD() 
end sub 
#################### 
sub take() 
DIM reg[1] 
var i,n 
reg[1]='0x1078'; 

CheckLag() 
while UO.Count(reg[1])<100 
UO.FindType(reg[1],-1,Container) 
n=UO.Count(reg[1]) 
UO.Grab(str(100-n),'finditem') 
wait(200) 
wend 

end sub 
#################### 
sub CheckLag() 
UO.DeleteJournal() 
UO.Click('backpack') 
repeat 
wait(100) 
until UO.InJournal('ackpack') 
end sub 
####################################### 
sub eat() 
VAR LastTimer 
UO.DeleteJournal() 
repeat 
LastTimer=UO.Timer() 
UO.findtype(0x097B,-1,'backpack') 
if UO.findcount('finditem') then 
uo.print('????????') 
UO.Useobject('finditem') 
wait(200) 
else 
return 
end if 
Until UO.InJournal("stuffed!") OR UO.InJournal("think") or UO.InJournal("found") or UO.InJournal("?? ?????? ?? ??????") OR UO.Timer()>LastTimer+200 
end sub 
[/code]

Posted: 2008-12-12 13:38:11
by GAUHAR
Если не шьет, то, по всей видимости, все дело в WaitMenu или AutoMenu. Составь правильные последовательности параметров prompt и choice.
Что такое prompt: http://yoko.netroof.net/help/help.php?l ... tem=prompt
Что такое choice: http://yoko.netroof.net/help/help.php?l ... tem=choice

Posted: 2008-12-18 01:27:48
by CoS
всё гораздо проще....

Code: Select all

########################
var Container='0x4047125B';кожа
VAR Sunduk1 = '0x4000C3BD';сундук с пустыми сумками
VAR Sunduk2 = 'ground';сундук с полными сумками
VAR Meshok = '0x0E75';тип сумки
VAR MeshSer, d
VAR k

###################
sub main()
VAR LastTimer
repeat
UO.FindType( Meshok, -1, Sunduk1 )
MeshSer = UO.GetSerial( 'finditem' )
UO.Grab( '1', 'finditem' )
wait( 2000 )
UO.MoveItem( MeshSer, 0, Sunduk2 )
k=0
repeat
if UO.Count( '0x1067' ) < 15 then
take()
endif
UO.DeleteJournal()
Hid()
eat()
    UO.set('quiet','1')
    UO.cancelmenu()
    UO.automenu ('Leather','Miscellaneous')
    UO.automenu ('Miscellaneous','Bag')
CheckLag()
uo.waittargettype(0x1067)
UO.UseType( '0x0F9D' )
LastTimer=UO.Timer()
repeat
wait(300)
until UO.InJournal("Вы положили") or UO.InJournal("Вам не удалось") or UO.InJournal('You put') or UO.InJournal('fail') or UO.InJournal('target') OR UO.Timer()>LastTimer+200
if UO.InJournal("Вы положили") or UO.InJournal('You put') then
while UO.Count( '0x0E76' ) > 0
UO.FindType( '0x0E76', -1, -1 )
UO.MoveItem( 'finditem', 0, MeshSer )
wait( 200 )
k=k+1
uo.print('k='+str(k))
CheckLag()
wend
endif
until k>=250
until UO.DEAD()
end sub
####################
sub take()
DIM reg[1]
var i,n
reg[1]='0x1067';

CheckLag()
while UO.Count(reg[1])<100
UO.FindType(reg[1],-1,Container)
n=UO.Count(reg[1])
UO.Grab(str(100-n),'finditem')
wait(200)
wend

end sub
####################
sub CheckLag()
UO.DeleteJournal()
UO.Click('backpack')
repeat
wait(100)
until UO.InJournal('ackpack')
end sub
#######################################
sub eat()
VAR LastTimer
UO.DeleteJournal()
repeat
LastTimer=UO.Timer()
UO.findtype(0x097B,-1,'backpack')
if UO.findcount('finditem') then
uo.print('покушали')
UO.Useobject('finditem')
wait(200)
else
return
end if
Until UO.InJournal("stuffed!") OR UO.InJournal("think") or UO.InJournal("found") or UO.InJournal("Вы ничего не можете") OR UO.Timer()>LastTimer+200
end sub
#########################################
sub Hid()
while not uo.Hidden()
uo.exec('warmode 0')
uo.Print('Hiding...')
uo.UseSkill('Hiding')
wait(4000)
wend
wait(100)
end sub