Yoko
http://forum.yoko.com.ua/

Помогите подправить Bowcraft
http://forum.yoko.com.ua/viewtopic.php?f=20&t=16663
Page 1 of 1

Author:  son [ 2011-06-08 13:12:03 ]
Post subject:  Помогите подправить Bowcraft

Народ помогите подправить скриптик чар не хочет крафтить луки загорается последняя менюшка крафта там где тупо остается только на лук нажать ,но почему то не нажимается.Помогите убогому ,спасибо :roll:
Code:
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

Author:  Mirage [ 2011-06-08 13:16:00 ]
Post subject:  Re: Помогите подправить Bowcraft

скрипт вверх тормашками и не понятной шнягой справа за коментами.
Code:
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


меню проверь так должно работать

Author:  son [ 2011-06-08 13:35:00 ]
Post subject:  Re: Помогите подправить Bowcraft

Mirage wrote:
скрипт вверх тормашками и не понятной шнягой справа за коментами.
Code:
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?
и не крафтит ничего

Author:  Mirage [ 2011-06-08 14:45:23 ]
Post subject:  Re: Помогите подправить Bowcraft

Ответ прямо над твоей фразой. В моем последнем предложении. Смотри меню.
У меня на моем шарде меню для простых луков вот такое.
UO.WaitMenu ('What do you', 'Bow')
У тебя видимо двухслойное. Проверяй правильность всего написанного.

Author:  son [ 2011-06-08 14:55:56 ]
Post subject:  Re: Помогите подправить Bowcraft

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

Author:  Incorrect User [ 2011-06-08 15:13:52 ]
Post subject:  Re: Помогите подправить Bowcraft

UO.Waitmenu('What do you want','Bows','Bows','bow' )
Bow с большой буквы напиши попробуй.

Author:  son [ 2011-06-08 15:18:03 ]
Post subject:  Re: Помогите подправить Bowcraft

Incorrect User wrote:
UO.Waitmenu('What do you want','Bows','Bows','bow' )
Bow с большой буквы напиши попробуй.

Епа))))))))))))))Точняк все работает теперь)))))))))))Спасибо большое
Рабочий вариант:
Code:
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

Author:  Incorrect User [ 2011-06-13 00:31:19 ]
Post subject:  Re: Помогите подправить Bowcraft

Нужно чуть расширить скрипт чтобы выкидывал луки из пака в треш и брал логи с пола. Но что-то невыходит:
Code:
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, нехочет выкидывать луки в трешку, по паку пару раз с места на место перетаскивает и потом конлост :)

Author:  ZeroDX [ 2011-06-13 01:11:17 ]
Post subject:  Re: Помогите подправить Bowcraft

если в uo.moveitem() 'trash' сделать без кавычек, мб и заработает

Author:  Incorrect User [ 2011-06-13 01:15:47 ]
Post subject:  Re: Помогите подправить Bowcraft

Quote:
если в uo.moveitem() 'trash' сделать без кавычек, мб и заработает

Непомогло. И когда запускаю sub Bow пишет сразу Кончились логи! хотя на полу логов достаточно.

Author:  ZeroDX [ 2011-06-13 01:42:46 ]
Post subject:  Re: Помогите подправить Bowcraft

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

Author:  Incorrect User [ 2011-06-13 01:58:05 ]
Post subject:  Re: Помогите подправить Bowcraft

Quote:
поставить "больше ноля"

Работает, а почему оно немогло определить >6?. Теперь, пока, только с трешем проблема осталась.

Author:  ZeroDX [ 2011-06-13 10:00:57 ]
Post subject:  Re: Помогите подправить Bowcraft

ну еще moveitem'у нужно 3 параметра, 1-ый чё двигаем, 2-ой сколько двигаем, 3-ий куда двигаем), у тебя второго нету

Author:  Mirage [ 2011-06-13 20:39:49 ]
Post subject:  Re: Помогите подправить Bowcraft

отдохнул один день а вы уж тут "разЪобщались" :mrgreen:
Итак...
Code:
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:
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 мой скрипт это кусок из большого файла. Вроде скопировал без косяков. Если будут ошибки - пишите.

Author:  Incorrect User [ 2011-06-15 23:39:21 ]
Post subject:  Re: Помогите подправить Bowcraft

Вообщем следуя советам вышла такая штука:
Code:
#############################################################################
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:
 uo.moveitem('finditem',0,trash) ; в данном случае 1 не обязательно так как предметы и так по одному

некатит, я вроде пробовал ставить 0 и луки не трешил, ставил 1 и норм, перепроверю отпишусь.

Author:  son [ 2011-06-17 14:21:49 ]
Post subject:  Re: Помогите подправить Bowcraft

Incorrect User wrote:
Вообщем следуя советам вышла такая штука:
Code:
#############################################################################
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:
 uo.moveitem('finditem',0,trash) ; в данном случае 1 не обязательно так как предметы и так по одному

некатит, я вроде пробовал ставить 0 и луки не трешил, ставил 1 и норм, перепроверю отпишусь.


Скрипт работает хорошо,скажите а можно сделать чтобы перс луки не в треш кидал а себе под ноги ,на моем шарде все то что из дерева и под ноги попадается сразу ломается)))Так что мне треш в принципе не нужен))

Author:  Mirage [ 2011-06-17 14:45:37 ]
Post subject:  Re: Помогите подправить Bowcraft

Ну вместо ID трешки напиши 'ground'
Помоему ломается когда ты наступишь на объект а не когда бросишь под себя, хотя ХЗ.
PS если будешь много кидать на землю, будет перенасыщение сферы, в логе отразится ошибка и к тебе прилетят гости. С банхаммером.

Author:  Incorrect User [ 2011-06-18 00:37:40 ]
Post subject:  Re: Помогите подправить Bowcraft

Quote:
Помоему ломается когда ты наступишь на объект а не когда бросишь под себя, хотя ХЗ.
PS если будешь много кидать на землю, будет перенасыщение сферы, в логе отразится ошибка и к тебе прилетят гости. С банхаммером.

Там просто лук, простой, под ноги кидаеш и он сразу же ломаеться. А от перенасыщения есть защита - не более, помоему 16 итемов на 1 тайл, больше положить недает.

Author:  son [ 2011-06-18 12:40:57 ]
Post subject:  Re: Помогите подправить Bowcraft

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

Спасибо,теперь полный порядок:)

Author:  son [ 2011-06-18 12:41:33 ]
Post subject:  Re: Помогите подправить Bowcraft

Incorrect User wrote:
Quote:
Помоему ломается когда ты наступишь на объект а не когда бросишь под себя, хотя ХЗ.
PS если будешь много кидать на землю, будет перенасыщение сферы, в логе отразится ошибка и к тебе прилетят гости. С банхаммером.

Там просто лук, простой, под ноги кидаеш и он сразу же ломаеться. А от перенасыщения есть защита - не более, помоему 16 итемов на 1 тайл, больше положить недает.


Это правда.

Page 1 of 1 All times are UTC+02:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/