Yoko

All sides of Injection
It is currently 2026-01-16 14:57:50

All times are UTC+02:00




Post new topic  Reply to topic  [ 15 posts ] 
Author Message
PostPosted: 2009-02-27 21:52:03 
Offline

Joined: 2009-02-14 14:22:37
Posts: 23
Добрый день. Написал вот такой вот скриптик. Вроде работает, но через какое-то время выдает еррор на линии 35 (такой даже нет в скрипте). Помогите пожалуйста. Это мой первый скрипт.

Code:
sub plavka() 
while not UO.Dead()
var i
var backpack
var Sunduk='0x400b7e27'
var arm='0x1415'



sb:
UO.FindType(arm,'0x0000',Sunduk) ;Cóíäóê ñ èíãàìè
wait(1000)
UO.Grab('1','finditem')
wait(1000)
If UO.GetQuantity('finditem') then
UO.WaitTargetObject('finditem')
UO.UseObject(0x40395596) ; Ôîðæ
wait(1000)
if uo.weight > 500 then
UO.SetReceivingContainer(Sunduk)
wait(200)
UO.FindType('0x1bef')
if UO.GetQuantity('finditem')>0 then
UO.Grab('0','finditem')
wait(200)
end if
UO.UnSetReceivingContainer()
end if
wait(1000)
goto sb
end sub


Top
   
PostPosted: 2009-02-27 22:04:29 
Offline
Expert!
User avatar

Joined: 2006-02-07 08:51:40
Posts: 1348
Location: г. Старый Оскол
Пробуй, я не тестил.
Code:
sub plavka()
   var i
   var backpack
   var Sunduk = '0x400b7e27'
   var arm = '0x1415'
   var forge = '0x40395596'
   
   UO.FindType(arm,'0x0000', Sunduk)
   If UO.FindCount() > 0 then
      repeat
         UO.MoveItem('finditem', '1', 'backpack')
         wait(1000)
         UO.FindType(arm, '0x0000', 'backpack')
         If UO.FindCount() > 0 then
            UO.WaitTargetObject('finditem')
            UO.DeleteJournal()
            UO.UseObject(forge)
            repeat
               wait(100)
            until UO.InJournal('smelt')
            wait(500)
         else
            UO.Print('В паке ничего нет! Стоп!')
            UO.Exec('terminate plavka')
         endif
         if uo.weight > 500 then
            UO.FindType('0x1bef', '-1', 'backpack')
            if UO.FindCount() > 0 then
               repeat
                  UO.MoveItem('finditem', '-1', Sunduk)
                  wait(1000)
                  UO.FindType('0x1bef', '-1', 'backpack')
               until NOT UO.FindCount()
            end if
         end if
         UO.FindType(arm,'0x0000',Sunduk)
      until NOT UO.FindCount()
      UO.Print('В сундуке ничего нет! Стоп!')
      UO.Exec('terminate plavka')
   endif
   UO.Print('В сундуке ничего нет! Стоп!')
   UO.Exec('terminate plavka')
end sub


Top
   
 Post subject:
PostPosted: 2009-02-27 22:43:59 
Offline

Joined: 2009-02-14 14:22:37
Posts: 23
Спасибо,мне интересно где в моем ошибка


Top
   
 Post subject:
PostPosted: 2009-02-27 22:53:24 
Offline
Expert!
User avatar

Joined: 2006-02-07 08:51:40
Posts: 1348
Location: г. Старый Оскол
ynkemer wrote:
Спасибо,мне интересно где в моем ошибка

Везде. :lol: Это ваш, немного подрихтованный, вот и сравните, где ошибка :D


Top
   
 Post subject:
PostPosted: 2009-05-21 00:37:47 
Offline

Joined: 2009-02-14 14:22:37
Posts: 23
Спасибо. Еще такой вопрос. А как можно вписать в скрипт несколько вещей. Я попробовал вот так
Code:
sub plavka()
   var backpack
   var Sunduk = '0x403CBCC6'
   var forge = '0x401D9F47'
   var k
   DIM arm[3]   
   arm[0]=0x1415
   arm[1]=0x13BF
   arm[2]=0x13BE
   uo.UseObject(Sunduk)
   while not uo.Dead()
   for k = 0 to 2
   UO.FindType(arm[k],'0x0000', Sunduk)
   If UO.FindCount() > 0 then
      repeat
         UO.MoveItem('finditem', '1', 'backpack')
         wait(1000)
         UO.FindType(arm[k], '0x0000', 'backpack')
         If UO.FindCount() > 0 then
            UO.WaitTargetObject('finditem')
            UO.DeleteJournal()
            UO.UseObject(forge)
            repeat
               wait(100)
            until UO.InJournal('smelt')
            wait(500)
         else
            UO.Print(' ïàêå íè÷åãî íåò! Ñòîï!')
            UO.Exec('terminate plavka')
         endif
         if uo.weight > 500 then
            UO.FindType('0x1bef', '-1', 'backpack')
            if UO.FindCount() > 0 then
               repeat
                  UO.MoveItem('finditem', '-1', Sunduk)
                  wait(1000)
                  UO.FindType('0x1bef', '-1', 'backpack')
               until NOT UO.FindCount()
            end if
         end if
         UO.FindType(arm[k],'0x0000',Sunduk)
      until NOT UO.FindCount()
      UO.Print(' ñóíäóêå íè÷åãî íåò! Ñòîï!')
      UO.Exec('terminate plavka')
   endif
   UO.Print(' ñóíäóêå íè÷åãî íåò! Ñòîï!')
   UO.Exec('terminate plavka')
end sub

Он видет сколько вещей нужно плавить но после того как заканчиваются вещи arm[1] он останавливает скрипт[/code]


Top
   
 Post subject:
PostPosted: 2009-05-21 06:05:50 
Offline
Expert!
User avatar

Joined: 2006-02-07 08:51:40
Posts: 1348
Location: г. Старый Оскол
Code:
for ... to ...
...
...
next

Ничего не забыл?


Top
   
 Post subject:
PostPosted: 2009-05-21 08:44:07 
Offline

Joined: 2009-02-14 14:22:37
Posts: 23
Спасибо. Честно говоря, я только учусь работать со скриптами.
Сделал так. Убрал из скрипта terminate и заменил на next. Он успешно плавит вещь 1 типа, потом плавит 1 вещь другого типа и unhalted exception in parser. Не подскажете в чем проблема
Code:
sub plavka()
   var i
   var k
   var backpack
   var Sunduk = '0x4005A13F'
   var forge = '0x401D9F47'
   DIM arm[8]   
   arm[0]='0x1415' #Platemail Пузо
   arm[1]='0x13BF' #Chainmail пузо
   arm[2]='0x1413' #ГОРГЕТКО
   arm[3]='0x1412' #Plate Helm
   arm[4]='0x1414' #Gloves
   arm[5]='0x140C' #Bascinet
   arm[6]='0x1410' #Плечи
   arm[7]='0x13BE' #Chainmail ноги
   arm[8]='0x13BB' #Chainmail БАШКА
   repeat
   uo.UseObject(Sunduk)
   while not uo.Dead()
   for k = 0 to 8
   UO.FindType(arm[k],'0x0000', Sunduk)
   If UO.FindCount() > 0 then
         UO.MoveItem('finditem', '1', 'backpack')
         wait(1000)
         UO.FindType(arm[k], '0x0000', 'backpack')
         If UO.FindCount() > 0 then
            UO.WaitTargetObject('finditem')
            UO.DeleteJournal()
            UO.UseObject(forge)
            repeat
               wait(100)
            until UO.InJournal('smelt')
            wait(500)
     else
            next
         endif
         if uo.weight > 500 then
            UO.FindType('0x1bef', '-1', 'backpack')
            if UO.FindCount() > 0 then
               repeat
                  UO.MoveItem('finditem', '-1', Sunduk)
                  wait(1000)
                  UO.FindType('0x1bef', '-1', 'backpack')
               until NOT UO.FindCount()
            end if
         end if
         UO.FindType(arm[k],'0x0000',Sunduk)
      until NOT UO.FindCount()
    next
   endif
   next
end sub

Огромное спасибо. Вы мне очень помогаете.


Top
   
 Post subject:
PostPosted: 2009-05-21 10:17:21 
Offline
Expert!
User avatar

Joined: 2006-02-07 08:51:40
Posts: 1348
Location: г. Старый Оскол
Зачем столько next? :shock:
Достаточно одного в самом конце, после endif, но перед terminate. Который, в свою очередь, удалять не нужно. Предпоследний terminate лучше удалить :oops:


Top
   
 Post subject:
PostPosted: 2009-05-21 12:11:50 
Offline

Joined: 2009-02-14 14:22:37
Posts: 23
вы гений! Спасибо. Все работает. Теперь последний вопрос)) Для идеальности скрипта. Как включить в него цикличность?
Этот скрипт после того как заканчиваются айтемы arm[4] останавливается, даже если добавить новых arm[1-3]
Как это можно исправить?
Огромное спасибо. Вы мне очень помогаете.


Top
   
 Post subject:
PostPosted: 2009-05-21 16:18:29 
Offline
Expert!
User avatar

Joined: 2006-02-07 08:51:40
Posts: 1348
Location: г. Старый Оскол
Ну он вроде плавит по очереди все итемы, которые указаны в массиве, т.е. если указано 8 типов, он будет плавить все 8, по очереди до конца, т.е. пока не кончится тип arm[0], он не перейдет на arm[1], я думаю, что когда он дойдет до arm[8] у вас пак пустой будет, зачем цикличность, или я что-то не так понял?


Top
   
 Post subject:
PostPosted: 2009-05-21 20:40:54 
Offline

Joined: 2009-02-14 14:22:37
Posts: 23
Такое кол-во веса он и взять не сможет. Он берет из сундука. Просто есть определенное кол-во армора, которое берется из сундука. Чар скупщик делает свое дело гораздо быстрее, чем тот, кто плавит. Соответственно, постоянно происходит пополнение мешка. И после окончания arm[8] он не начинает плавить заново, хотя второй чар уже положил туда достаточное количество брони. Скрипт приходится повторно запускать вручную. На ночь, например, это дело оставить нельзя.
Я обратился к знакомому, он сказал, что я дебил, скрипт кривой и его нужно заново переписывать с 0, чтобы была цикличность. Так ли это?


Top
   
 Post subject:
PostPosted: 2009-05-21 21:08:39 
Offline
Expert!
User avatar

Joined: 2006-02-07 08:51:40
Posts: 1348
Location: г. Старый Оскол
Ыыыы, нет конечно, скажи знакомому, что он дибил и сам кривой, а для цикличности добавь
Code:
while not uo.dead()

перед for, в начале скрипта. И wend после next, в конце скрипта, а лучше выложи полный скрипт, мало ли, может там есть ошибки.

З.Ы.Передай знакомому, за "кривой скрипт", сломаю нос :evil: Если такой умный, пускай напишет свой и выложит, мы сравним, грамотей блин. :evil:

З.Ы.Ы. DIM arm[8] нужно исправить на DIM arm[9], итемов то 9 получается, счет с 0 начинается. :wink:
Code:
arm[0]='0x1415' #Platemail Пузо 
arm[1]='0x13BF' #Chainmail пузо
arm[2]='0x1413' #ГОРГЕТКО
arm[3]='0x1412' #Plate Helm
arm[4]='0x1414' #Gloves
arm[5]='0x140C' #Bascinet
arm[6]='0x1410' #Плечи
arm[7]='0x13BE' #Chainmail ноги
arm[8]='0x13BB' #Chainmail БАШКА

Элементов 9 получается, а массив обьявлен на 8.


Top
   
 Post subject:
PostPosted: 2009-05-23 23:59:21 
Offline

Joined: 2009-02-14 14:22:37
Posts: 23
Видимо я что-то не правильно сделал. Скрипт плавит, но если армор добавить, то он его не плавит(
Вот сам скрипт
Code:
sub plavka()
   var i
   var backpack
   var Sunduk = '0x40389F20'
   var forge = '0x403EF3F9'
   DIM arm[4]   
   arm[1]=0x1B76
   arm[2]=0x13BF
   arm[3]=0x13BE
   arm[4]=0x140C
   while not uo.dead()
   for i = 1 to 4
   UO.FindType(arm[i],'0x0000', Sunduk)
   If UO.FindCount() > 0 then
      repeat
         UO.MoveItem('finditem', '1', 'backpack')
         wait(1000)
         UO.FindType(arm[i], '0x0000', 'backpack')
         If UO.FindCount() > 0 then
            UO.WaitTargetObject('finditem')
            UO.DeleteJournal()
            UO.UseObject(forge)
            repeat
               wait(100)
            until UO.InJournal('smelt')
            wait(500)
         else
            UO.Print('В паке ничего нет! Стоп!')
            UO.Exec('terminate plavka')
         endif
         if uo.weight > 500 then
            UO.FindType('0x1bef', '-1', 'backpack')
            if UO.FindCount() > 0 then
               repeat
                  UO.MoveItem('finditem', '-1', Sunduk)
                  wait(1000)
                  UO.FindType('0x1bef', '-1', 'backpack')
               until NOT UO.FindCount()
            end if
         end if
         UO.FindType(arm[i],'0x0000',Sunduk)
      until NOT UO.FindCount()
      next
      wend
      UO.Print('В сундуке ничего нет! Стоп!')
      UO.Exec('terminate plavka')
   endif
   UO.Print('В сундуке ничего нет! Стоп!')
   UO.Exec('terminate plavka')
end sub
[/quote]


Top
   
 Post subject:
PostPosted: 2009-05-28 10:36:58 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
К чему такие загоны?

попробуй так. Берет из сундука любой предмет по 1 итему плавить скидывает инги под ноги.
Code:
sub plavka()
   var i
   var backpack
   var Sunduk = '0x40389F20'
   var forge = '0x403EF3F9'
   
   while not uo.dead()
      UO.FindType(-1,-1, Sunduk)
      If UO.FindCount() > 0 then
         repeat
            UO.MoveItem('finditem', '1', 'backpack')
            wait(1000)
            UO.DeleteJournal()
            UO.WaitTargetObject('finditem')
            UO.UseObject(forge)
            repeat
               wait(100)
            until UO.InJournal('smelt|put|is consumed|fire is not')
            wait(500)
            if uo.weight > 500 then
               UO.FindType('0x1bef', '-1', 'backpack')
               UO.MoveItem('finditem', '-1', 'ground') ; или сундук 2.
               wait(1000)
            end if
            UO.FindType(-1,-1,Sunduk)
         until NOT UO.FindCount()
      endif
      UO.Print('В сундуке ничего нет! Стоп!')
      UO.Exec('terminate plavka')
   wend
end sub


Top
   
 Post subject:
PostPosted: 2009-06-03 09:15:22 
Offline

Joined: 2009-02-14 14:22:37
Posts: 23
Спасибо огромное. Скрипт отлично работает


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 15 posts ] 

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited