Page 1 of 1

Carpentry

Posted: 2010-12-14 12:52:58
by Superuser
Есть скриптик как бы для всех крафтов хорош, но чета я тут затупил и не могу понять почему он крафт меню не выводит и не делает стул.
Подозреваю что проблема в этом куске

Code: Select all

uo.DeleteJournal() 
uo.WaitTargetType(Res1) 
uo.UseType(Kit)
uo.WaitMenu ('Chairs','Stool')  
LastTimer=UO.Timer() 
repeat 
wait(100) 
until uo.InJournal("You put") or uo.InJournal("Carpentry") or LastTimer+150<uo.Timer() 
UnLoadItem() 
wend 
end sub 
Но не могу понять что именно, прицел поидее создается и поидее должен юзаться на доски, но увы...
Подскажите пожалуйста в чем проблема, гуру.

Code: Select all

var EQ,RQ1,RQ2,QB 
var Eat='0x097B' ; Еда
var Res1='0x1BD7' ; Доски 
var Res2='0x1EB8' ; В данном случае тоже доски так как для стульев используется 1 ресурс 
var Kit='0x1EB8' ; Инструмент (tool kit)
var Items='0x0A2A' ; Тип стула
EQ=50 ; кол-во еды
RQ1=200 ; кол-во ресурса 1
RQ2=0 ; кол-во ресурса 2


var ContainerRes='0x416E6CC7' ; Object с досками
var ContainerBag='0x407965C4' ; Object с сумками
var BagCount='0x0E76' ; Type сумок ContainerBag 


sub Main() 
uo.Set('quiet','1') 
uo.Exec('exec Craft') 
uo.IgnoreReset() 
end sub 

sub OpenBag() 
var i,BagID 
uo.UseObject(ContainerBag) 
uo.UseObject(ContainerRes) 
uo.IgnoreReset() 
repeat 
uo.DeleteJournal() 
wait(1000) 
uo.FindType(BagCount,'-1',ContainerBag) 
if uo.FindCount('finditem') > 1 then 
i=(uo.FindCount('finditem') +1) 
uo.Click('finditem') 
if uo.InJournal("a bag") Then 
BagID=uo.JournalSerial(uo.InJournal("a bag")-1) 
uo.SetJournalLine(uo.InJournal("a bag")-1,"") 
uo.FindType(Items,'-1',BagID) 
uo.UseObject(BagID) 
wait(2000) 
uo.Hide(BagID) 
uo.Ignore(BagID,'on') 
end if 
end if 
i=(i-1) 
until i==0 
uo.Hide(ContainerBag) 
uo.Hide(ContainerRes) 
uo.Resend() 
wait(3000) 
uo.IgnoreReset() 
end sub 


sub Craft() 
var Last=0,LastTimer 
OpenBag() 
While not uo.Dead() 

;|-----------------------------------| 
;| Search of resources and Take them | 
;|-----------------------------------| 

uo.FindType(Eat,'-1','me') 
if uo.GetQuantity('finditem')<1 then 
uo.FindType(Eat,'-1',ContainerRes) 
if uo.GetQuantity('finditem')>1 then 
ToTake(3) 
else 
uo.Exec('Terminate Craft') 
end if 
else 
ToEat() 
end if 
uo.FindType(Res1,'-1','me') 
if uo.GetQuantity('finditem')<45 then 
uo.FindType(Res1,'-1',ContainerRes) 
if uo.GetQuantity('finditem')>1 then 
ToTake(1) 
else 
uo.Exec('Terminate Craft') 
end if 
end if 
uo.FindType(Res2,'-1','me') 
if uo.GetQuantity('finditem')<1 then 
uo.FindType(Res2,'-1',ContainerRes) 
if uo.GetQuantity('finditem')>1 then 
ToTake(2) 
else 
uo.Exec('Terminate Craft') 
end if 
end if 

;|-------------| 
;| Craft Items | 
;|-------------| 

uo.DeleteJournal() 
uo.WaitTargetType(Res1) 
uo.UseType(Kit)
uo.WaitMenu ('Chairs','Stool')  
LastTimer=UO.Timer() 
repeat 
wait(100) 
until uo.InJournal("You put") or uo.InJournal("Carpentry") or LastTimer+150<uo.Timer() 
UnLoadItem() 
wend 
end sub 

sub ToTake(i) 
var G,F 
if i==1 then 
G=RQ1 
F=Res1 
end if 
if i==2 then 
G=RQ2 
F=Res2 
end if 
if i==3 then 
G=EQ 
F=Eat 
end if 
uo.FindType(F,'-1',ContainerRes) 
if uo.GetQuantity('finditem')>1 then 
uo.Grab(''+str(G)+'','finditem') 
uo.DeleteJournal() 
repeat 
uo.FindType(F,'-1','me') 
wait(1500) 
until uo.InJournal("That is too") or uo.GetQuantity('finditem') > 1 
end if 
end sub 

sub ToEat() 
uo.UseType(Eat) 
end sub 

sub UnLoadItem() 
var BagID 
var i=0 
var m=0 
repeat 
uo.DeleteJournal() 
uo.FindType(BagCount,'-1',ContainerBag) 
uo.Click('finditem') 
m=0 
repeat 
wait(1000) 
until uo.InJournal("a bag") 
if uo.InJournal("a bag") Then 
BagID=uo.JournalSerial(uo.InJournal("a bag")-1) 
uo.SetJournalLine(uo.InJournal("a bag")-1,"") 
uo.FindType('-1','-1',BagID) 
if uo.FindCount('finditem')<51 then 
m=uo.FindCount('finditem') 
uo.SetReceivingContainer(BagID) 
uo.FindType(Items,'-1','me') 
uo.Grab('0','finditem') 
uo.ConColor('0x0021') 
uo.Set('quiet','0') 
uo.Print(uo.Print('In BagPack#'+Str(i+1)+' items '+Str(m)+'')) 
uo.Set('quiet','1') 
uo.ConColor('0x0035') 
wait(1000) 
uo.UnSetReceivingContainer() 
else 
i=i+1 
uo.Ignore(BagID, 'on') 
end if 
end if 
if i==QB then 
uo.IgnoreReset() 
i=0 
end if 
uo.FindType(Items,'-1','me') 
until uo.FindCount('finditem') < 1 
end sub 

Re: Carpentry

Posted: 2010-12-14 21:13:21
by Mirage
зачем вы не разобравшись берете такие меголитические и непонятно для чего сделанные кроме самоудовлетворения скрипты? Найди чтонибудь попроще и разбирайся.
Вариантов почему не работает именно это множество - не так прописал инструменты, далеко от сундука стоишь и они не открываются, не то меню крафта... Напиши сперва скрипт из 5-6 строк

Code: Select all

sub main()
ждем меню крафта
прицел на тип сырья (если нужно)
юзаем тип инструмента
пауза 6 секунд
endsub
Потом сравнишь с тем что тут наваял автор этого творения и найдешь ошибку.


Для сравнения мой "универсальный" крафтинг:

Code: Select all

sub CarpentryClub() 
	var menu = "waitmenu 'Carpentry' 'Weapons' 'Weapons' 'Club'"
	var item = club
	WHILE NOT UO.Dead()
		UO.FindType( Meshok, '-1', Sunduk1 )
		MeshSer = UO.GetSerial( 'finditem' )
		UO.MoveItem( MeshSer, 0, Sunduk2 )
		checklag()
		uo.useobject( MeshSer )
		eat()
		REPEAT
			GET(log, Container, 10, 300) 
			GET(saw, Container, 1, 1) 
			Repeat
				if HIDE then
					Hide()
				endif
				UO.DeleteJournal()
				LastTimer=UO.Timer()
				UO.exec( menu )
				UO.Usetype( saw )
				repeat
					wait( 300 )
				until UO.InJournal( msg ) or UO.Timer()>LastTimer+300
			Until UO.Count( item )>0
			checklag()
			PUT( item, MeshSer )
			UO.FindType( item, -1, MeshSer)
			uo.charprint(printcolour,'Дубин в мешке: ' + Str( UO.FindCount( item ) ) ) 
		UNTIL UO.FindCount()>=quantity
		uo.charprint(printcolour,'Берем другую сумку' ) 
		wait( 300 )
	WEND
end sub
(без процедур)

Re: Carpentry

Posted: 2010-12-15 10:19:17
by Superuser
Угу, согласен. В чужих скриптах такого объема разобраться не легко, каждый пишет так как умеет, просто времени не хватало заняться им поэтому выложил готовый чтоб чутка помогли подправить, но в итоге забил и вчера написал нормальный. Спасибо за ответ.

Re: Carpentry

Posted: 2010-12-20 20:49:38
by Superuser
Помогите пожалуйста переделать вот этот скрипт под удочки, необходимо чтобы он еще брал нитки из сундука.

Code: Select all

sub carpentree()
      uo.Print('!!!!Где Логи!!!! ')
  uo.Exec('addobject cu')
  while uo.Targeting()
     wait(100)
  wend
        uo.Print('!!!!Траш Кан!!!! ')
  uo.Exec('addobject cu2')
  while uo.Targeting()
     wait(100)
  wend
        uo.Print('!!!!Пила!!!! ')
  uo.Exec('addobject cu3')
  while uo.Targeting()
     wait(100)
  wend
  while uo.dead()<1
  uo.findtype('0x1BDD','-1','my')
  if uo.GetQuantity('finditem') < 5 then
  uo.moveitem('finditem','30','cu2')
    uo.findtype('0x1BDD','-1','cu')
  uo.moveitem('finditem','300','my')
  wait(800)
  endif
  uo.useobject('cu3')
  wait('500')
  uo.waitmenu('Carpentry','Weapons & Tools','Weapons & Tools','quarter staff')
  wait(10000)
  uo.UseType('0x097B') 
  uo.findtype('0x0E89','-1','my')
  wait(200)
  while uo.findcount()>0 
  uo.moveitem('finditem','1','cu2')
uo.ignore('finditem')  
  uo.findtype('0x0E89','-1','my')
wait(800)
  wend
  wend
  endsub
  

Re: Carpentry

Posted: 2010-12-21 09:45:59
by Mirage
Если бы расставил отступы то все бы сам поправил.
Попробуй вот такой скрипт:
PS пропиши меню до удочки, тип удочки.

Code: Select all

var item   = '0x0DBF'
VAR saw      = '0x1034'      ;пила
VAR log      = '0x1BDD'   
VAR spool   = '0x0FA0'      #нитки#
var printcolour = '1069'
VAR MeshSer, d, LastTimer, timemove, itemM
var msg ='You put|положили|fail|не удалось|You broke|сломали'
var menu = "waitmenu 'Carpentry' 'Weapons' 'Weapons' 'fishing'" ; проверить меню
sub carpentree()
	uo.Print('!!!!Где Логи и Нитки!!!! ')
	uo.Exec('addobject cu')
	while uo.Targeting()
		wait(100)
	wend
	uo.useobject( 'cu' )
	wait(500)
	uo.Print('!!!!Мусорка!!!! ')
	uo.Exec('addobject cu2')
	while uo.Targeting()
		wait(100)
	wend
	uo.useobject( 'cu2' )
	wait(500)
	while uo.dead()<1 ; <=== Хм...
		GET(log, 'cu', 10, 100)
		GET(spool, 'cu', 1, 100)
		Repeat
			UO.DeleteJournal()
			LastTimer=UO.Timer()
			UO.exec( menu )
			UO.waittargettype ( log )
			UO.Usetype( saw )
			repeat
				wait( 100 )
			until UO.InJournal( msg ) or UO.Timer()>LastTimer+150
		Until UO.Count( item )>0
		wait( 100 )
		PUT(item , 'cu2')
		
	wend
endsub
Sub GET(item, cont, min, max) ; предмет, откуда, минимум, сколько брать
	If UO.Count( item ) < min Then
		UO.FindType( item, '-1', cont )
		if UO.FindCount() > 0 Then
			uo.charprint(printcolour,'Сырья в сундуке: '+Str(UO.GetQuantity('finditem')) ) 
			itemM=UO.GetSerial('finditem')
			timemove=UO.Timer()
			while UO.ContainerOf(itemM)==cont && timemove+20>UO.Timer()
				uo.moveitem('finditem', max, 'backpack')
				wait(300)
			wend
		else
			uo.charprint(printcolour, 'Полностью кончилось сырье' )
			UO.CancelMenu()
			MyTerminate()
		endif
	Endif
end sub
Sub PUT(item, cont)
	while UO.Count( item ) > 0
		UO.FindType( item, -1, -1 )
		itemM=UO.GetSerial('finditem')
		timemove=UO.Timer()
		UO.MoveItem( 'finditem', 0, cont )
		while UO.ContainerOf(itemM)=='my' && timemove+20>UO.Timer()
			wait(300)
		wend
	wend
end sub
Sub MyTerminate()
	UO.Set('quiet','1')
	UO.CancelMenu()
	UO.IgnoreReset()
	UO.Set('quiet','0')
	UO.Exec('terminate all')
end sub

Скрипт рассчитан что в мусорку можно просто скидывать предметы.

Re: Carpentry

Posted: 2010-12-21 10:59:48
by Superuser
Не хочет работать, ругается на cu, cu2 и так далее.

Re: Carpentry

Posted: 2010-12-21 14:24:10
by Mirage
Исправил. РАБОТАЕТ на моем сервере.

Re: Carpentry

Posted: 2010-12-21 19:33:05
by Superuser
На моем как бы тоже вроде как работает, но не до конца, либо не берет нитки и просто стоит ничего не делая, боюсь что проблема в версии инжекта, у меня 702.11

Re: Carpentry

Posted: 2010-12-21 20:50:40
by Mirage
Superuser wrote:На моем как бы тоже вроде как работает, но не до конца, либо не берет нитки и просто стоит ничего не делая, боюсь что проблема в версии инжекта, у меня 702.11
Сундук может быть далеко слишком. Инжект такой же

Re: Carpentry

Posted: 2010-12-21 21:01:47
by Superuser
Mirage wrote:
Superuser wrote:На моем как бы тоже вроде как работает, но не до конца, либо не берет нитки и просто стоит ничего не делая, боюсь что проблема в версии инжекта, у меня 702.11
Сундук может быть далеко слишком. Инжект такой же
Не, сундук рядом, он его открывает, говорит сколько там ресов и ничего не берет оттуда. Стою уже 80 карпы, а я все на кватерстафах качаю =)))