Проверьте пожалуйста

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
Avel Mink
Posts: 48
Joined: 2007-12-30 14:23:05

Проверьте пожалуйста

Post by Avel Mink »

Меня интересует правильность моего скрипта, помоему вроде все правильно, но подсчитывает не те инги, которые прописаны по цвету, во втором скрипте зачем то backpack считает несколько раз , просто возможно это из-зи переезда сервера Дрв, так как команды с рунбукой тоже перестали действовать

Code: Select all

sub Count_trash_ing()
   var Box_for_trash_ing
   var i, p, name, cen, sum = 0
   
   DIM item[7]
   item[1] = 0x0750 ## - Rusty Ingot
   item[2] = 0x0590 ## - Old Copper Ingot
   item[3] = 0x060A ## - Dull Copper Ingot
   item[4] = 0x0488 ## - Bronze Ingot
   item[5] = 0x096B ## - Shadow Ingot
   item[6] = 0x0014 ## - Rose Ingot
   item[7] = 0x0193 ## - Agapite
   
   DIM price[7]
   price[1] = 1 ## - Rusty Ingot
   price[2] = 2 ## - Old Copper Ingot
   price[3] = 3 ## - Dull Copper Ingot
   price[4] = 4 ## - Bronze Ingot
   price[5] = 5 ## - Shadow Ingot
   price[6] = 6 ## - Rose Ingot
   price[7] = 7 ## - Agapite

   UO.UseObject('Box_for_trash_ing')
   CheckLag()
   uo.TextPrint('Trash Ore')
   uo.TextPrint(' --------- ')
   for i = 1 to 7
      for p = 1 to 7
         uo.FindType('0x1BEF', 'item[i]', 'Box_for_trash_ing')
         if uo.FindCount('finditem') > 0 then
            uo.Click('finditem')
            wait(300)
            name = uo.GetName('finditem')
            cen = uo.GetQuantity('finditem') * price[p]
            sum = sum + cen
            uo.TextPrint(name + ' ------ ' + str(cen) + 'k (' + str(price[p]) + 'k per piece)')
            uo.Ignore('finditem')
            uo.FindType('0x1BEF', 'item[i]', 'Box_for_trash_ing')
         End if
         wait(100)
      next
   next
   uo.TextPrint(' --------- ')
   uo.TextPrint('Total Amount: ' + str(sum) + 'k')
   uo.TextPrint(' =========================================== ')
   uo.IgnoreReset()
Endsub
###################################
sub Count_other_ing()
   var Box_for_trash_ing
   var i, p, name, cen, sum = 0
   
   DIM item[4]
   item[1] = 0x1BEF ## - Iron Ingot
   item[2] = 0x1BE3 ## - Copper Ingot
   item[3] = 0x1BF5 ## - Silver Ingot
   item[4] = 0x1BE9 ## - Gold Ingot
   
   DIM price[4]
   price[1] = 1 ## - Iron Ingot
   price[2] = 2 ## - Copper Ingot
   price[3] = 3 ## - Silver Ingot
   price[4] = 4 ## - Gold Ingot

   UO.UseObject('Box_for_trash_ing')
   wait(300)
   for i = 1 to 4
      for p = 1 to 4
         uo.FindType('item[i]', '0x0000', 'Box_for_trash_ing')
         if uo.FindCount('finditem') > 0 then
            uo.Click('finditem')
            wait(300)
            name = uo.GetName('finditem')
            cen = uo.GetQuantity('finditem') * price[p]
            sum = sum + cen
            uo.TextPrint(name + ' ------ ' + str(cen) + 'k (' + str(price[p]) + 'k per piece)')
            uo.Ignore('finditem')
            uo.FindType('item[i]', '0x0000', 'Box_for_trash_ing')
         End if
      next
   next
   uo.TextPrint(' --------- ')
   uo.TextPrint('Total Amount: ' + str(sum) + 'k')
   uo.TextPrint(' =========================================== ')
   uo.IgnoreReset()
Endsub      
Avel Mink
Posts: 48
Joined: 2007-12-30 14:23:05

Post by Avel Mink »

И еще не могу понять почему скрипт не зацикливается, то есть берет всего один раз руду, хотя в ящике ее много

Code: Select all

sub Smelt_trash_ore()
   var Box_for_trash_ore
   var i, Exit
   
   DIM item[4]
   item[1] = 0x19B9 ## - 4 ore
   item[2] = 0x19B8 ## - 3 ore
   item[3] = 0x19BA ## - 2 ore
   item[4] = 0x19B7 ## - 1 ore
   
   for i = 1 to 4
      uo.FindType(item[i], '-1', 'Box_for_trash_ore')
      if uo.FindCount('finditem') > 0 then
         uo.Grab('500', 'finditem')
         wait(300)         
         Checklag()
         while not uo.InJournal('You put') or not uo.InJournal('see the target')
            uo.UseObject('finditem')
            wait(100)
         wend
      End if
      Unload_trash_ore()   
   next
Endsub
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Post by Kynep »

Avel Mink wrote:И еще не могу понять почему скрипт не зацикливается, то есть берет всего один раз руду, хотя в ящике ее много

Во первых ни в одном скрипте ты не указал ID сундуков, var Box_for_trash_ore и т.д. ?!?!? Инжа не телепат, она не знает что ты имеешь ввиду. :twisted:
И что ты хочешь? Надо прописать ID сундука в котором ищещь. По поводу третьего, вставь цикл repeat until, без него он не будет зацикливаться. Я же тебе кучу подобных скриптов писал, посмотри там. Просто тут столько грамматических ошибок, что если править, то проще написать занова.

Смотри сравнивай, ищи ошипки:

Code: Select all

sub Count_trash_ing() 
   var i, p, name, cen, sum = 0
   
   DIM item[7]
   item[0] = '0x0750' ## - Rusty Ingot
   item[1] = '0x0590' ## - Old Copper Ingot
   item[2] = '0x060A' ## - Dull Copper Ingot
   item[3] = '0x0488' ## - Bronze Ingot
   item[4] = '0x096B' ## - Shadow Ingot
   item[5] = '0x0014' ## - Rose Ingot
   item[6] = '0x0193' ## - Agapite
   
   DIM price[7]
   price[0] = 1 ## - Rusty Ingot
   price[1] = 2 ## - Old Copper Ingot
   price[2] = 3 ## - Dull Copper Ingot
   price[3] = 4 ## - Bronze Ingot
   price[4] = 5 ## - Shadow Ingot
   price[5] = 6 ## - Rose Ingot
   price[6] = 7 ## - Agapite

   UO.AddObject('Box_for_trash_ing')
   repeat
      wait(100)
   until not UO.Targeting()

   UO.UseObject(Box_for_trash_ing)
   wait(1000)
   CheckLag()
   uo.TextPrint('Trash Ore')
   uo.TextPrint(' --------- ')
   for i = 0 to 6
      for p = 0 to 6
         uo.FindType('0x1BEF', item[i], Box_for_trash_ing)
         if uo.FindCount('finditem') > 0 then
            uo.Click('finditem')
            wait(300)
            name = uo.GetName('finditem')
            cen = uo.GetQuantity('finditem') * price[p]
            sum = sum + cen
            uo.TextPrint(name + ' ------ ' + str(cen) + 'k (' + str(price[p]) + 'k per piece)')
            uo.Ignore('finditem')
            uo.FindType('0x1BEF', item[i], Box_for_trash_ing)
         End if
         wait(100)
      next
   next
   uo.TextPrint(' --------- ')
   uo.TextPrint('Total Amount: ' + str(sum) + 'k')
   uo.TextPrint(' =========================================== ')
   uo.IgnoreReset()
Endsub

###################################

sub Count_other_ing()
   var i, p, name, cen, sum = 0
   
   DIM item[4]
   item[0] = '0x1BEF' ## - Iron Ingot
   item[1] = '0x1BE3' ## - Copper Ingot
   item[2] = '0x1BF5' ## - Silver Ingot
   item[3] = '0x1BE9' ## - Gold Ingot
   
   DIM price[4]
   price[0] = 1 ## - Iron Ingot
   price[1] = 2 ## - Copper Ingot
   price[2] = 3 ## - Silver Ingot
   price[3] = 4 ## - Gold Ingot

   UO.AddObject('Box_for_trash_ing')
   repeat
      wait(100)
   until not UO.Targeting()

   UO.UseObject(Box_for_trash_ing)
   wait(1000)

   for i = 0 to 3
      for p = 0 to 3
         uo.FindType(item[i], '-1', Box_for_trash_ing)
         if uo.FindCount('finditem') > 0 then
            uo.Click('finditem')
            wait(300)
            name = uo.GetName('finditem')
            cen = uo.GetQuantity('finditem') * price[p]
            sum = sum + cen
            uo.TextPrint(name + ' ------ ' + str(cen) + 'k (' + str(price[p]) + 'k per piece)')
            uo.Ignore('finditem')
            uo.FindType(item[i], '-1', Box_for_trash_ing)
         End if
      next
   next
   uo.TextPrint(' --------- ')
   uo.TextPrint('Total Amount: ' + str(sum) + 'k')
   uo.TextPrint(' =========================================== ')
   uo.IgnoreReset()
Endsub

#############################

sub Smelt_trash_ore()
   var i, Exit
   
   DIM item[4]
   item[0] = '0x19B9' ## - 4 ore
   item[1] = '0x19B8' ## - 3 ore
   item[2] = '0x19BA' ## - 2 ore
   item[3] = '0x19B7' ## - 1 ore

   UO.AddObject('Box_for_trash_ing')
   repeat
      wait(100)
   until not UO.Targeting()

   UO.UseObject(Box_for_trash_ing)
   wait(1000)
   
   for i = 0 to 3
      uo.FindType(item[i], '-1', Box_for_trash_ore)
      if uo.FindCount('finditem') > 0 then
         repeat
            uo.Grab('500', 'finditem')
            wait(300)         
            Checklag()
            while not uo.InJournal('You put') or not uo.InJournal('see the target')
               uo.UseObject('finditem')
               wait(100)
            wend
            uo.FindType(item[i], '-1', Box_for_trash_ore)
         until not UO.FindCount()
      End if
      Unload_trash_ore()   
   next
Endsub
Last edited by Kynep on 2008-02-02 21:47:59, edited 1 time in total.
Avel Mink
Posts: 48
Joined: 2007-12-30 14:23:05

Post by Avel Mink »

Ну я же не настолько дурной, я все эти ящики прописал в Object, так проще, потому что они у меня используются во многих скриптах

Различия между нашими скриптами только в том что ты заключил цвета в ' . Все поправил, теперь работает.

По поводу репеат спасибо, поставил работает, но меня тогда интересует почему нижеприведенный скрипт работает в цикле без репеат ?


Code: Select all

sub Unload_trash_ore()
   var Box_for_trash_ing
   var i
   
   DIM item[4]
   item[1] = 0x1BEF ## - Other Ingot
   item[2] = 0x1BE3 ## - Copper Ingot
   item[3] = 0x1BF5 ## - Silver Ingot
   item[4] = 0x1BE9 ## - Gold Ingot
   
   for i = 1 to 4
      uo.FindType(item[i], '-1')
      if uo.FindCount('finditem') > 0 then
            uo.MoveItem('finditem', '0', 'Box_for_trash_ing')
            wait(300)
            CheckLag()
      End if
   next
Endsub


И напоследок два вопроса, так ли важно заключать типЫ/Цвета/ID в ' (я не знаю как он называется) и в массивах начинать отсчет с 0, а не с 1 ?
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Post by Kynep »

Avel Mink wrote:Ну я же не настолько дурной, я все эти ящики прописал в Object, так проще, потому что они у меня используются во многих скриптах

И напоследок два вопроса, так ли важно заключать типЫ/Цвета/ID в ' (я не знаю как он называется) и в массивах начинать отсчет с 0, а не с 1 ?


1) По поводу скрипта, потому что тут идет поиск по типам, 4 типа руды, заметь они все разные, если они есть то действие будет, пока не закончиться.
2) Да, это грамотность, в ' (апостроф) заключаются все текстовые значения. Цифровые записываются без '. Если ты объявил объекты или переменные ранее, то при использовании их в скрипте они пишутся ВСЕГДА без кавычек.
Еще раз повторю:

Code: Select all

VAR text = 'текст, как то типы, ИД, и другие текстовые переменные'
VAR int = 123 # Числовые значения ВСЕГДА пишуться без '

3) Да, это ОБЯЗАТЕЛЬНО, в противном случае будет крашить.
AGRS
Expert!
Posts: 1007
Joined: 2004-04-04 21:40:09
Contact:

Post by AGRS »

1)

Var Variable1 = '0x12345678'
UO.UseObject(Variable1)

2)

Var Variable1 = '0x12345678'
UO.AddObject('Object1', Variable1)
UO.UseObject('Object1')
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Ну зачем же вводить людей в заблуждение?

Kynep wrote:2) Да, это грамотность, в ' (апостроф) заключаются все текстовые значения. Цифровые записываются без '. Если ты объявил объекты или переменные ранее, то при использовании их в скрипте они пишутся ВСЕГДА без кавычек.


Если конкретный объект объявлен на вкладке объектов, то в скрипте его имя используется именно в кавычках. Тут автор топика все делал абсолютно правильно.

3) Да, это ОБЯЗАТЕЛЬНО, в противном случае будет крашить.


Правильнее фраза должна звучать так: "это совсем не обязательно, но иначе может крешить. Впрочем, крешить может в любом случае".
Ни один скрипт не работает? Пора обновить Инжект...
Все работает, но хочется большего? Пора переходить на стелс...
Post Reply