Page 1 of 1

Помогите подправить Bowcraft

Posted: 2011-06-08 13:12:03
by son
Народ помогите подправить скриптик чар не хочет крафтить луки загорается последняя менюшка крафта там где тупо остается только на лук нажать ,но почему то не нажимается.Помогите убогому ,спасибо :roll:

Code: Select all

sub BowCraft() 
While UO.Count('0x1BDD', '0x0000')>=7 #??? ??? ????? ??????? 
UO.UseType('0x0F51') # Dagger ?????????? ??????? ????? 
UO.WaitTargetType('0x1BDD', '0x0000') #????? ?????? ?? ????? ?? ???? 
UO.Waitmenu('What do you want to carve the','Bows & Crossbows','Bows & Crossbows','bow' ) # ??? ??????? ?????? ??? ?????? ?? ?? ??? ???? 
wait(5000) 
Wend 
UO.Print("End log") 
end sub

Re: Помогите подправить Bowcraft

Posted: 2011-06-08 13:16:00
by Mirage
скрипт вверх тормашками и не понятной шнягой справа за коментами.

Code: Select all

sub BowCraft()
	While UO.Count('0x1BDD', '0x0000')>=7 #??? ??? ????? ???????
		UO.Waitmenu('What do you want','Bows','Bows','bow' ) # ??? ??????? ?????? ??? ?????? ?? ?? ??? ????		
		UO.WaitTargetType('0x1BDD', '0x0000') #????? ?????? ?? ????? ?? ????
		UO.UseType('0x0F51') # Dagger ?????????? ??????? ?????
		wait(5000)
	Wend
	UO.Print("End log")
end sub
меню проверь так должно работать

Re: Помогите подправить Bowcraft

Posted: 2011-06-08 13:35:00
by son
Mirage wrote:скрипт вверх тормашками и не понятной шнягой справа за коментами.

Code: Select all

sub BowCraft()
	While UO.Count('0x1BDD', '0x0000')>=7 #??? ??? ????? ???????
		UO.Waitmenu('What do you want','Bows','Bows','bow' ) # ??? ??????? ?????? ??? ?????? ?? ?? ??? ????		
		UO.WaitTargetType('0x1BDD', '0x0000') #????? ?????? ?? ????? ?? ????
		UO.UseType('0x0F51') # Dagger ?????????? ??????? ?????
		wait(5000)
	Wend
	UO.Print("End log")
end sub
меню проверь так должно работать
Пишет постоянно what do you want to use this from?
и не крафтит ничего

Re: Помогите подправить Bowcraft

Posted: 2011-06-08 14:45:23
by Mirage
Ответ прямо над твоей фразой. В моем последнем предложении. Смотри меню.
У меня на моем шарде меню для простых луков вот такое.
UO.WaitMenu ('What do you', 'Bow')
У тебя видимо двухслойное. Проверяй правильность всего написанного.

Re: Помогите подправить Bowcraft

Posted: 2011-06-08 14:55:56
by son
Mirage wrote:Ответ прямо над твоей фразой. В моем последнем предложении. Смотри меню.
У меня на моем шарде меню для простых луков вот такое.
UO.WaitMenu ('What do you', 'Bow')
У тебя видимо двухслойное. Проверяй правильность всего написанного.
Ну тогда у меня написано верно менюшки у меня именно так называются и вылетают в том порядке который я написал.Он доходит до выбора где нужно только тыркнуть на лук и вуаля.Однако не тыркает.

Вот первая менюшка: http://www.imagepost.ru/?v=08.06_1.png
Вторая: http://www.imagepost.ru/?v=08.06_2.png

Re: Помогите подправить Bowcraft

Posted: 2011-06-08 15:13:52
by Incorrect User
UO.Waitmenu('What do you want','Bows','Bows','bow' )
Bow с большой буквы напиши попробуй.

Re: Помогите подправить Bowcraft

Posted: 2011-06-08 15:18:03
by son
Incorrect User wrote:UO.Waitmenu('What do you want','Bows','Bows','bow' )
Bow с большой буквы напиши попробуй.
Епа))))))))))))))Точняк все работает теперь)))))))))))Спасибо большое
Рабочий вариант:

Code: Select all

sub BowCraft()
   While UO.Count('0x1BDD', '0x0000')>=7 #??? ??? ????? ???????
      UO.Waitmenu('What do you want','Bows','Bows','Bow' ) # ??? ??????? ?????? ??? ?????? ?? ?? ??? ????      
      UO.WaitTargetType('0x1BDD', '0x0000') #????? ?????? ?? ????? ?? ????
      UO.UseType('0x0F51') # Dagger ?????????? ??????? ?????
      wait(5000)
   Wend
   UO.Print("End log")
end sub

Re: Помогите подправить Bowcraft

Posted: 2011-06-13 00:31:19
by Incorrect User
Нужно чуть расширить скрипт чтобы выкидывал луки из пака в треш и брал логи с пола. Но что-то невыходит:

Code: Select all

sub Bow()
var time
var mess = 'put|fail|skill'
 while not FindLogs() == 0
   if uo.count('0x1bdd')>6 then 
      uo.deletejournal()
      time = uo.timer()
      uo.waitmenu('What do you want','Bows','Bows','Bow')
      uo.waittargettype('0x1bdd') 
      uo.usetype('0x0F51')
      repeat
      wait (50)
      until uo.injournal(mess) or time + 60 < uo.timer()
    else
   Trash()
   Drag()
  endif
 wend
uo.print('Кончились логи!')
end sub

sub Trash()
var trash = ('0x6666666')
 while uo.count('0x13b2')>=1
   uo.findtype('0x13b2','backpack')
   uo.moveitem('finditem',1,trash)
   wait(200)
  wend
uo.print('Все луки выброшены!')
endsub

sub Drag()
var Box = '0x7777777'
 if FindLogs() == 1 then
  uo.findtype('0x1bdd','0x0000',Box)
  uo.moveitem('finditem',2500,'backpack')
  wait(500)
   else
  uo.findtype('0x1bdd','0x0000',Box)
  uo.moveitem('finditem',0,'backpack')
  wait(500)
 endif
endsub

sub FindLogs()
var Logs = '0x1bdd' # Type логов
var LogsC = '0x0000' # Color логов
var Box = '0x7777777' # ID сундука
uo.findtype(Logs,LogsC,Box)
 If UO.FindCount() == 0 Then
    return 0
 endif
uo.findtype(Logs,LogsC,Box)
 If UO.FindCount() >= 2500 Then 
    return 1
 Endif
uo.findtype(Logs,LogsC,Box)
 If UO.FindCount() <= 2500 Then 
    return 2
 Endif
endsub
Скрипт весь не тестил, пока только нужно поправить sub Trash, нехочет выкидывать луки в трешку, по паку пару раз с места на место перетаскивает и потом конлост :)

Re: Помогите подправить Bowcraft

Posted: 2011-06-13 01:11:17
by ZeroDX
если в uo.moveitem() 'trash' сделать без кавычек, мб и заработает

Re: Помогите подправить Bowcraft

Posted: 2011-06-13 01:15:47
by Incorrect User
если в uo.moveitem() 'trash' сделать без кавычек, мб и заработает
Непомогло. И когда запускаю sub Bow пишет сразу Кончились логи! хотя на полу логов достаточно.

Re: Помогите подправить Bowcraft

Posted: 2011-06-13 01:42:46
by ZeroDX
попробуй тут

Code: Select all

while uo.countground ('0x1bdd')>6
поставить "больше ноля"

Re: Помогите подправить Bowcraft

Posted: 2011-06-13 01:58:05
by Incorrect User
поставить "больше ноля"
Работает, а почему оно немогло определить >6?. Теперь, пока, только с трешем проблема осталась.

Re: Помогите подправить Bowcraft

Posted: 2011-06-13 10:00:57
by ZeroDX
ну еще moveitem'у нужно 3 параметра, 1-ый чё двигаем, 2-ой сколько двигаем, 3-ий куда двигаем), у тебя второго нету

Re: Помогите подправить Bowcraft

Posted: 2011-06-13 20:39:49
by Mirage
отдохнул один день а вы уж тут "разЪобщались" :mrgreen:
Итак...

Code: Select all

sub Bow()
	var time
	var mess = 'put|fail|skill'
	while not FindLogs() == 0
		if uo.count('0x1bdd')<7 then ; вот так будет работать.
			Trash()
			Drag()
		else
			uo.deletejournal()
			time = uo.timer()
			uo.waitmenu('What do you want','Bows','Bows','Bow')
			uo.waittargettype('0x1bdd')
			uo.usetype('0x0F51')
			repeat
				wait (500) ; паузы меньше 100 делать не стоит дабы не вызывать лишние ошибки в работе скрипта
			until uo.injournal(mess) or time + 60 < uo.timer()
		endif
	wend
	uo.print('Кончились логи!')
end sub
sub Trash()
	var trash = '0x6666666' ; скобки не нужны
	while uo.count('0x13b2')   ;  >=1 не нужно писать если треба определить количество больше нуля
		uo.findtype('0x13b2','backpack')
		uo.moveitem('finditem',0,trash) ; в данном случае 1 не обязательно так как предметы и так по одному
		wait(500) ; паузу лучше увеличить - средняя пауза перемещения предмета на серверах 300-500
	wend
	uo.print('Все луки выброшены!')
endsub
; ниже я вообще ничего не понял, зачем такое городить?
sub Drag()
	var Box = '0x7777777'
	if FindLogs() == 1 then
		uo.findtype('0x1bdd','0x0000',Box)
		uo.moveitem('finditem',2500,'backpack')
		wait(500)
	else
		uo.findtype('0x1bdd','0x0000',Box)
		uo.moveitem('finditem',0,'backpack')
		wait(500)
	endif
endsub
sub FindLogs()
	var Logs = '0x1bdd' # Type логов
	var LogsC = '0x0000' # Color логов
	var Box = '0x7777777' # ID сундука
	uo.findtype(Logs,LogsC,Box)
	If UO.FindCount() == 0 Then
		return 0
	endif
	uo.findtype(Logs,LogsC,Box)
	If UO.FindCount() >= 2500 Then
		return 1
	Endif
	uo.findtype(Logs,LogsC,Box)
	If UO.FindCount() <= 2500 Then
		return 2
	Endif
endsub
Давайте посмотрим мой пример:

Code: Select all

VAR Container	= '0x40B5267F'	;айрон, рыба, инструменты, может быть равен Sunduk 1
VAR Trash	= '0x40B52599'	#трешка#
VAR log	= '0x1BDD'	
VAR Dagger	= '0x0F51'		
VAR Bow	= '0x13B1'		#лук#
VAR spool	= '0x0FA0'		#нитки#
VAR LastTimer, timemove
var msg ='You put|положили|fail|не удалось|You broke|сломали'
var printcolour = '1069'
sub Bowcraft()
	var menu = "waitmenu 'What do you' 'Bows' 'Bows' 'Bow'"
	WHILE NOT UO.Dead()
		GET(log, Container, 10, 800)  ; если логов меньше 10 добираем 800
		GET(spool, Container, 1, 100) ; если ниток меньше  1 добираем 100
		Repeat
			UO.DeleteJournal()
			LastTimer=UO.Timer()
			UO.exec( menu )
			UO.waittargettype ( log )
			UO.Usetype( Dagger )
			repeat
				wait( 100 )
			until UO.InJournal( msg ) or UO.Timer()>LastTimer+60
		Until UO.Count( Bow )>0
		checklag()
		PUT(Bow , Trash) 
	WEND
end sub
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 DeleteJournal(msg)
	While UO.InJournal(msg)
		UO.SetJournalLine(UO.InJournal(msg) - 1,'') 
	wend
endsub
Sub MyTerminate()
	UO.Set('quiet','1')
	UO.CancelMenu()
	UO.IgnoreReset()
	UO.Set('quiet','0')
	UO.Exec('terminate all')
end sub
Sub checklag()
	DeleteJournal("ackpack")
	UO.Click("backpack")
	repeat
		wait(100)
	until UO.InJournal("ackpack")
end sub
1) все предметы прописаны выше скрипта - проще редактировать если чтото понадобиться изменить.
2) одна процедура для забора сырья, одна процедура для скидывания готового товара. Куда и откуда - как пропишешь туда и кинет.
3) если сырья будет меньше минимума скрипт встанет.

PS мой скрипт это кусок из большого файла. Вроде скопировал без косяков. Если будут ошибки - пишите.

Re: Помогите подправить Bowcraft

Posted: 2011-06-15 23:39:21
by Incorrect User
Вообщем следуя советам вышла такая штука:

Code: Select all

#############################################################################
var Box = '0x666666'
var Bow = '0x13b2'
var Trash = '0x777777'
var Logs = '0x1bdd'
var LogsC = '0x0000' 
var Dagger = '0x0F51'

sub Bow()
var Time
var Mess = 'put|fail'
 while not uo.dead()
  if uo.count(Logs)>6 then 
   uo.deletejournal()
   Time = uo.timer()
   uo.waitmenu('What do you want','Bows','Bows','Bow')
   uo.waittargettype(Logs) 
   uo.usetype(Dagger)
   repeat
   wait (100)
   until uo.injournal(Mess) or Time + 60 < uo.timer()
    else
   Trash()
   Drag()
  endif
 wend
end sub

sub Trash()
 while uo.count(Bow)>0
  uo.findtype(Bow,'backpack')
  uo.moveitem('finditem',0,Trash)
  wait(500)
 wend
  uo.print('Все луки выброшены!')
endsub

sub Drag()
uo.findtype(Logs,LogsC,Box)
if uo.count()>0 then
  uo.moveitem('finditem',2500,'backpack')
  wait(500)
   else
  uo.print('Кончились логи!')
  uo.playwav('C:\Program Files\UltimaOnline\Injection\Alarm.wav')
  uo.exec('terminate all')
 endif
endsub
#############################################################################
Еще не тестил, и кстати, если не ошибаюсь, то так

Code: Select all

 uo.moveitem('finditem',0,trash) ; в данном случае 1 не обязательно так как предметы и так по одному
некатит, я вроде пробовал ставить 0 и луки не трешил, ставил 1 и норм, перепроверю отпишусь.

Re: Помогите подправить Bowcraft

Posted: 2011-06-17 14:21:49
by son
Incorrect User wrote:Вообщем следуя советам вышла такая штука:

Code: Select all

#############################################################################
var Box = '0x666666'
var Bow = '0x13b2'
var Trash = '0x777777'
var Logs = '0x1bdd'
var LogsC = '0x0000' 
var Dagger = '0x0F51'

sub Bow()
var Time
var Mess = 'put|fail'
 while not uo.dead()
  if uo.count(Logs)>6 then 
   uo.deletejournal()
   Time = uo.timer()
   uo.waitmenu('What do you want','Bows','Bows','Bow')
   uo.waittargettype(Logs) 
   uo.usetype(Dagger)
   repeat
   wait (100)
   until uo.injournal(Mess) or Time + 60 < uo.timer()
    else
   Trash()
   Drag()
  endif
 wend
end sub

sub Trash()
 while uo.count(Bow)>0
  uo.findtype(Bow,'backpack')
  uo.moveitem('finditem',0,Trash)
  wait(500)
 wend
  uo.print('Все луки выброшены!')
endsub

sub Drag()
uo.findtype(Logs,LogsC,Box)
if uo.count()>0 then
  uo.moveitem('finditem',2500,'backpack')
  wait(500)
   else
  uo.print('Кончились логи!')
  uo.playwav('C:\Program Files\UltimaOnline\Injection\Alarm.wav')
  uo.exec('terminate all')
 endif
endsub
#############################################################################
Еще не тестил, и кстати, если не ошибаюсь, то так

Code: Select all

 uo.moveitem('finditem',0,trash) ; в данном случае 1 не обязательно так как предметы и так по одному
некатит, я вроде пробовал ставить 0 и луки не трешил, ставил 1 и норм, перепроверю отпишусь.
Скрипт работает хорошо,скажите а можно сделать чтобы перс луки не в треш кидал а себе под ноги ,на моем шарде все то что из дерева и под ноги попадается сразу ломается)))Так что мне треш в принципе не нужен))

Re: Помогите подправить Bowcraft

Posted: 2011-06-17 14:45:37
by Mirage
Ну вместо ID трешки напиши 'ground'
Помоему ломается когда ты наступишь на объект а не когда бросишь под себя, хотя ХЗ.
PS если будешь много кидать на землю, будет перенасыщение сферы, в логе отразится ошибка и к тебе прилетят гости. С банхаммером.

Re: Помогите подправить Bowcraft

Posted: 2011-06-18 00:37:40
by Incorrect User
Помоему ломается когда ты наступишь на объект а не когда бросишь под себя, хотя ХЗ.
PS если будешь много кидать на землю, будет перенасыщение сферы, в логе отразится ошибка и к тебе прилетят гости. С банхаммером.
Там просто лук, простой, под ноги кидаеш и он сразу же ломаеться. А от перенасыщения есть защита - не более, помоему 16 итемов на 1 тайл, больше положить недает.

Re: Помогите подправить Bowcraft

Posted: 2011-06-18 12:40:57
by son
Mirage wrote:Ну вместо ID трешки напиши 'ground'
Помоему ломается когда ты наступишь на объект а не когда бросишь под себя, хотя ХЗ.
PS если будешь много кидать на землю, будет перенасыщение сферы, в логе отразится ошибка и к тебе прилетят гости. С банхаммером.
Спасибо,теперь полный порядок:)

Re: Помогите подправить Bowcraft

Posted: 2011-06-18 12:41:33
by son
Incorrect User wrote:
Помоему ломается когда ты наступишь на объект а не когда бросишь под себя, хотя ХЗ.
PS если будешь много кидать на землю, будет перенасыщение сферы, в логе отразится ошибка и к тебе прилетят гости. С банхаммером.
Там просто лук, простой, под ноги кидаеш и он сразу же ломаеться. А от перенасыщения есть защита - не более, помоему 16 итемов на 1 тайл, больше положить недает.
Это правда.