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

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
son
Posts: 43
Joined: 2006-12-16 14:44:01

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

Post 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
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

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

Post 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


меню проверь так должно работать
son
Posts: 43
Joined: 2006-12-16 14:44:01

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

Post 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?
и не крафтит ничего
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

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

Post by Mirage »

Ответ прямо над твоей фразой. В моем последнем предложении. Смотри меню.
У меня на моем шарде меню для простых луков вот такое.
UO.WaitMenu ('What do you', 'Bow')
У тебя видимо двухслойное. Проверяй правильность всего написанного.
son
Posts: 43
Joined: 2006-12-16 14:44:01

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

Post 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
Last edited by son on 2011-06-08 15:15:50, edited 2 times in total.
Incorrect User
Posts: 949
Joined: 2011-05-23 00:33:30

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

Post by Incorrect User »

UO.Waitmenu('What do you want','Bows','Bows','bow' )
Bow с большой буквы напиши попробуй.
son
Posts: 43
Joined: 2006-12-16 14:44:01

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

Post 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
Incorrect User
Posts: 949
Joined: 2011-05-23 00:33:30

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

Post 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, нехочет выкидывать луки в трешку, по паку пару раз с места на место перетаскивает и потом конлост :)
Last edited by Incorrect User on 2011-06-13 14:32:56, edited 8 times in total.
ZeroDX
Posts: 718
Joined: 2006-12-08 10:51:50
Location: Москва
Contact:

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

Post by ZeroDX »

если в uo.moveitem() 'trash' сделать без кавычек, мб и заработает
Incorrect User
Posts: 949
Joined: 2011-05-23 00:33:30

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

Post by Incorrect User »

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

Непомогло. И когда запускаю sub Bow пишет сразу Кончились логи! хотя на полу логов достаточно.
ZeroDX
Posts: 718
Joined: 2006-12-08 10:51:50
Location: Москва
Contact:

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

Post by ZeroDX »

попробуй тут

Code: Select all

while uo.countground ('0x1bdd')>6
поставить "больше ноля"
Incorrect User
Posts: 949
Joined: 2011-05-23 00:33:30

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

Post by Incorrect User »

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

Работает, а почему оно немогло определить >6?. Теперь, пока, только с трешем проблема осталась.
ZeroDX
Posts: 718
Joined: 2006-12-08 10:51:50
Location: Москва
Contact:

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

Post by ZeroDX »

ну еще moveitem'у нужно 3 параметра, 1-ый чё двигаем, 2-ой сколько двигаем, 3-ий куда двигаем), у тебя второго нету
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

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

Post 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 мой скрипт это кусок из большого файла. Вроде скопировал без косяков. Если будут ошибки - пишите.
Incorrect User
Posts: 949
Joined: 2011-05-23 00:33:30

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

Post 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 и норм, перепроверю отпишусь.
son
Posts: 43
Joined: 2006-12-16 14:44:01

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

Post 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 и норм, перепроверю отпишусь.


Скрипт работает хорошо,скажите а можно сделать чтобы перс луки не в треш кидал а себе под ноги ,на моем шарде все то что из дерева и под ноги попадается сразу ломается)))Так что мне треш в принципе не нужен))
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

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

Post by Mirage »

Ну вместо ID трешки напиши 'ground'
Помоему ломается когда ты наступишь на объект а не когда бросишь под себя, хотя ХЗ.
PS если будешь много кидать на землю, будет перенасыщение сферы, в логе отразится ошибка и к тебе прилетят гости. С банхаммером.
Incorrect User
Posts: 949
Joined: 2011-05-23 00:33:30

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

Post by Incorrect User »

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

Там просто лук, простой, под ноги кидаеш и он сразу же ломаеться. А от перенасыщения есть защита - не более, помоему 16 итемов на 1 тайл, больше положить недает.
son
Posts: 43
Joined: 2006-12-16 14:44:01

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

Post by son »

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

Спасибо,теперь полный порядок:)
son
Posts: 43
Joined: 2006-12-16 14:44:01

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

Post by son »

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

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


Это правда.
Post Reply