Yoko

All sides of Injection
It is currently 2025-12-09 00:30:11

All times are UTC+02:00




Post new topic  Reply to topic  [ 13 posts ] 
Author Message
PostPosted: 2010-12-13 02:41:29 
Offline
User avatar

Joined: 2005-07-14 20:53:05
Posts: 124
Есть имя вщи - вещь [5] , таких вещей в паке, ну очень много и цифра разная, как посчитать, сколько всего их. К примеру в мешке : вещь [5] - 3 штучки, вещь [15] 1 штука, вещь [2] две штуки.
Понятно что кликаю на вещь дергаю из журнала цифру, но не совсем ясно как посчитать.

_________________
Я пока только учусь :oops:

http://www.surfjunky.com/?r=BloodSlayer


Top
   
PostPosted: 2010-12-13 08:54:42 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
Если я правильно понял вопрос то чем не устраивает вариант:

Code:
sub podschet()
   var fl=1
   var tip,name="",chis=0
   uo.print('Conteiner dly podscheta?')
   uo.exec('addobject cont')
   while uo.targeting()
      wait(100)
   wend
   uo.textclear()
   uo.textopen()
   uo.useobject('cont')
   wait(1000)
   while fl==1
      uo.findtype('-1','-1','cont')
      if uo.findcount() then
         uo.click('finditem')
         while name==""
            name=uo.getname('finditem')
            wait(10)
         wend
         tip=uo.GetGraphic('finditem')
         uo.findtype(tip,'-1','cont')
         while uo.findcount()
            chis=uo.getquantity('finditem')+chis
            uo.ignore('finditem')
            uo.findtype(tip,'-1','cont')
         wend
         uo.textprint(name+"  общее количество:  "+str(chis))
      else
         fl=0
      endif
      name=""
      chis=0
   wend
   uo.ignorereset()
endsub
?
Quote:
an Empty bottle общее количество: 1
157 Arrows общее количество: 157
100 Black Pearl общее количество: 100
100 Spider s Silk общее количество: 100
200 Eye of Newt общее количество: 200
100 Nightshade общее количество: 100
a Quest Book общее количество: 2
50000 coins общее количество: 470000 <=====
a Long Ship общее количество: 1

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


Top
   
PostPosted: 2010-12-13 11:44:06 
Offline
User avatar

Joined: 2005-07-14 20:53:05
Posts: 124
Mirage wrote:
Если я правильно понял вопрос то чем не устраивает вариант:

Code:
sub podschet()
   var fl=1
   var tip,name="",chis=0
   uo.print('Conteiner dly podscheta?')
   uo.exec('addobject cont')
   while uo.targeting()
      wait(100)
   wend
   uo.textclear()
   uo.textopen()
   uo.useobject('cont')
   wait(1000)
   while fl==1
      uo.findtype('-1','-1','cont')
      if uo.findcount() then
         uo.click('finditem')
         while name==""
            name=uo.getname('finditem')
            wait(10)
         wend
         tip=uo.GetGraphic('finditem')
         uo.findtype(tip,'-1','cont')
         while uo.findcount()
            chis=uo.getquantity('finditem')+chis
            uo.ignore('finditem')
            uo.findtype(tip,'-1','cont')
         wend
         uo.textprint(name+"  общее количество:  "+str(chis))
      else
         fl=0
      endif
      name=""
      chis=0
   wend
   uo.ignorereset()
endsub
?
Quote:
an Empty bottle общее количество: 1
157 Arrows общее количество: 157
100 Black Pearl общее количество: 100
100 Spider s Silk общее количество: 100
200 Eye of Newt общее количество: 200
100 Nightshade общее количество: 100
a Quest Book общее количество: 2
50000 coins общее количество: 470000 <=====
a Long Ship общее количество: 1


Ну как бы uo.getquantity в моё случае не конает, так как количество просто "зашито" в имя. Просто идет название - вещь(1), вещь(2). Тип у них одинаковый, но вот в названии меняется только цифра. И как сложить эти цифры из имени, я пока чет не догнал.


Вообщем в журнале запись - You see: dtom(1). Причем цифра 1, это не кол-во итемов а просто имя. Вот как из журнала выдернуть именно то что в скобках и загнать в переменную.

_________________
Я пока только учусь :oops:



http://www.surfjunky.com/?r=BloodSlayer


Top
   
PostPosted: 2010-12-13 14:09:08 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
Ну тогда вот такой скрипт тебе будет полезнее.
Положим есть предмет - лопата с 20 кондой
Так как конда пишется в квадратный скобках то отлов идет текста написанного внутри них:
Code:
VAR ob = '0x40E56F9B' ; ID предмета
VAR X=20 ; требуемое количество
sub ItemCond()
var name
UO.TextOpen()
UO.TextClear()
uo.DeleteJournal( )
UO.Click( ob )
wait(1000)
name = UO.GetName( ob )
name = explode (name, '[', 1)
name = explode (name, ']', 0)
if val(name) == X then ; изменить на нужный знак
UO.TextPrint( name )
else
UO.TextPrint( 'Не равно заданному значению.' )
endif
endsub

Sub explode( string, pattern, num )
var i, counter = 0, entry = 0
for i=0 to strlen( string ) -strlen( pattern )
   if mid( string, i, strlen( pattern ) ) == pattern then
      counter = counter + 1
      if num == counter-1 then
         return mid( string, entry, i-entry )
      endif
      entry = i + strlen( pattern )
   endif
next
if entry == 0 then
   return false
endif
return mid( string, entry, strlen(string)-entry )
endsub

Скрипт выдаст число с которым можно проводить математические операции.

Code:
VAR ob = '0x40CB5744'
VAR X
sub ItemCond()
var name
UO.TextOpen()
UO.TextClear()
uo.DeleteJournal( )
UO.Click( ob )
wait(1000)
name = UO.GetName( ob )
name = explode (name, '[', 1)
name = explode (name, ']', 0)
X=val(name)
X=X+X
UO.TextPrint( x )
endsub

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


Top
   
PostPosted: 2010-12-13 15:14:31 
Offline
User avatar

Joined: 2005-07-14 20:53:05
Posts: 124
Code:
name = UO.GetName( ob )
name = explode (name, '[', 1)
name = explode (name, ']', 0)
X=val(name)
X=X+X


Вот за это спасибо :) А то я уже было думал фак перечитывать.

_________________
Я пока только учусь :oops:



http://www.surfjunky.com/?r=BloodSlayer


Top
   
PostPosted: 2010-12-13 15:41:06 
Offline
User avatar

Joined: 2005-07-14 20:53:05
Posts: 124
Так терь фигня в том, что запись такого рода оказалась (сразу чет не посмарел) - dtom[1 inerf] Ну вообщем число чет не получается дернуть все равно. Терь надо исключить inerf из скобок или как подругому?

_________________
Я пока только учусь :oops:



http://www.surfjunky.com/?r=BloodSlayer


Top
   
PostPosted: 2010-12-13 16:13:01 
Offline
User avatar

Joined: 2005-07-14 20:53:05
Posts: 124
Code:
sub schet()
var tip = 'тип вещи'
var bag, name, ob
var X = 0
   uo.exec('addobject bag')
   while uo.targeting()
      wait(100)
   wend
         repeat
            Uo.UseObject('bag')
               wait(50)
                  Uo.FindType(tip,'-1','bag')
                     If Uo.FindCount() then
                       ob = Uo.GetSerial('finditem')
                       Uo.Click( ob )
                          wait(300)
                        name = UO.GetName( ob )
                     name = explode (name, '[', 1)
                     name = explode (name, ']', 0)
                     X = val(name)
                     X = X + X
                     Uo.Ignore( ob )
                     ob = 0
                     Uo.Print(''+str(x))
                  else
                     Uo.Print("Íå íàéäåí " +str(tip))
                  end if
            wait(50)
      until NOT Uo.Count(tip,'-1','bag')
Uo.Print("Âñåãî " +str(x))
end sub


Похоже эксплоде не срабатывает.

_________________
Я пока только учусь :oops:



http://www.surfjunky.com/?r=BloodSlayer


Top
   
PostPosted: 2010-12-13 18:20:32 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
для dtom[1 inerf]

Code:
                     name = explode (name, '[', 1)
                     name = explode (name, 'iner', 0)

результат будет = 1

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


Top
   
PostPosted: 2010-12-14 00:04:58 
Offline
User avatar

Joined: 2005-07-14 20:53:05
Posts: 124
Mirage wrote:
для dtom[1 inerf]

Code:
                     name = explode (name, '[', 1)
                     name = explode (name, 'iner', 0)

результат будет = 1


Спасиб, мираж я сам разобрался, правдо ни сразу :) Но все равно спасибо тебе. Ток чет скрипт мой все равно не пашет :)

Code:
sub schet()
var tip = ''
var bag, name, ob
var X = 0
   uo.exec('addobject bag')
   while uo.targeting()
      wait(100)
   wend
         repeat
            Uo.UseObject('bag')
               wait(50)
                  Uo.FindType(tip,'-1','bag')
                     If Uo.FindCount() then
                       ob = Uo.GetSerial('finditem')
                       Uo.Click( ob )
                        name = UO.GetName( ob )
                           name = explode (name, '[', 1)
                           name = explode (name, 'inerf', 0) # После этой строки проц просто под 80% начинает гудеть
                     X = val(name)
                     X = X + X
                     Uo.Ignore( ob )
                     ob = 0
                  else
                     Uo.Print("Íå íàéäåí " +str(tip))
                  end if
            wait(50)
      until NOT Uo.Count(tip,'-1','bag')
Uo.Print("Âñåãî " +str(x))
end sub

_________________
Я пока только учусь :oops:



http://www.surfjunky.com/?r=BloodSlayer


Top
   
PostPosted: 2010-12-14 08:18:03 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
Bank Cheque [53290255gp]

Code:
VAR ob = '0x40E56F9B' ; ID предмета
VAR X
sub ItemCond()
var name
UO.TextOpen()
UO.TextClear()
uo.DeleteJournal( )
UO.Click( ob )
wait(1000)
name = UO.GetName( ob )
name = explode (name, '[', 1)
name = explode (name, ']', 0)
X = val(name)
UO.TextPrint( X )
endsub

Sub explode( string, pattern, num )
var i, counter = 0, entry = 0
for i=0 to strlen( string ) -strlen( pattern )
   if mid( string, i, strlen( pattern ) ) == pattern then
      counter = counter + 1
      if num == counter-1 then
         return mid( string, entry, i-entry )
      endif
      entry = i + strlen( pattern )
   endif
next
if entry == 0 then
   return false
endif
return mid( string, entry, strlen(string)-entry )
endsub


результат
Quote:
53290255


Если в скрипте исправить
name = explode (name, '[', 1)
name = explode (name, 'gp', 0)
то однокуйственно
результат
Quote:
53290255


PS Возможно у тебя в названии пробел - Попробуй поставить
name = explode (name, '[', 1)
name = explode (name, ' inerf', 0)
Если не поможет попробую позже твой вариант посмотреть.

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


Top
   
PostPosted: 2010-12-14 12:54:07 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
Итак вот рабочий вариант:
Code:
sub schet()
   var bag, name, cond, ob
   var X = 0
   var Y = 0
   UO.IgnoreReset()
   UO.TextOpen()
   UO.TextClear()
   uo.DeleteJournal( )
   uo.exec('addobject bag')
   while uo.targeting()
      wait(100)
   wend
   Uo.UseObject('bag')
   wait(1000)
   UO.FindType( -1, -1,'bag')
   repeat
      ob = Uo.GetSerial('finditem')
      Uo.Click( ob )
      wait(500)
      name = UO.GetName( ob )
      cond = name
      cond = explode (cond, '[', 1)
      cond = explode (cond, ']', 0)
      X = X+val(cond)
      Y=Y+1
      UO.TextPrint('Название= ' +name +'. Прочность= ' +cond)
      Uo.Ignore( ob )
      UO.FindType( -1, -1,'bag')
      wait(500)
   until NOT Uo.FindCount()
   UO.TextPrint("Всего объектов = " +str(Y))
   UO.TextPrint("Общая прочность = " +str(X))
end sub
Sub explode( string, pattern, num )
   var i, counter = 0, entry = 0
   for i=0 to strlen( string ) -strlen( pattern )
      if mid( string, i, strlen( pattern ) ) == pattern then
         counter = counter + 1
         if num == counter-1 then
            return mid( string, entry, i-entry )
         endif
         entry = i + strlen( pattern )
      endif
   next
   if entry == 0 then
      return false
   endif
   return mid( string, entry, strlen(string)-entry )
endsub


Запустив скрипт и кликнув на мешок в котором находятся предметы С КОНДОЙ получим результат
Quote:
Название= Sloted Katana [30]. Прочность= 30
Название= Knowledge Hat [20]. Прочность= 20
Название= Fence hammer [70]. Прочность= 70
Название= Lizard Beads [20]. Прочность= 20
Название= Ranger leggings [98]. Прочность= 98
Название= Chest of Brilliance [100]. Прочность= 100
Название= Sloted Hammer [30]. Прочность= 30
Название= Bloody Demon [53987505gp]. Прочность= 53987505gp
Название= Sloted Bow [30]. Прочность= 30
Всего объектов = 9
Общая прочность = 53987903

Почему с кондой? Потому что если там будет лежать например "80 Sulphorous Ash" то скрипт уйдет в бесконечность.

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


Top
   
PostPosted: 2010-12-14 13:07:21 
Offline
User avatar

Joined: 2005-07-14 20:53:05
Posts: 124
Спасибо за все отвенты :) Вообщем проблема оказалась в том что там ни [] такие скобки а () обычные :) скрипт работает.


Всего объектов = 236
Общие Кол-во = 774

Еще задержку можно уменьшить до 25Ю либо просто сделать проверку на журнал, итогда будет считать на максимальной скорости.

_________________
Я пока только учусь :oops:



http://www.surfjunky.com/?r=BloodSlayer


Top
   
PostPosted: 2010-12-14 14:18:07 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
на 56 сфере запущенной на локальной машине задержка меньше 200 вызывает частую не работу скрипта.
Сумка не успевает открыться, инфа про объект не обновилась после клика...

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


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

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 4 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:  
cron
Powered by phpBB® Forum Software © phpBB Limited