Подсчет кол-ва
Moderators: Murderator+, Murderator
-
- Posts: 124
- Joined: 2005-07-14 20:53:05
- Contact:
Подсчет кол-ва
Есть имя вщи - вещь [5] , таких вещей в паке, ну очень много и цифра разная, как посчитать, сколько всего их. К примеру в мешке : вещь [5] - 3 штучки, вещь [15] 1 штука, вещь [2] две штуки.
Понятно что кликаю на вещь дергаю из журнала цифру, но не совсем ясно как посчитать.
Понятно что кликаю на вещь дергаю из журнала цифру, но не совсем ясно как посчитать.
Re: Подсчет кол-ва
Если я правильно понял вопрос то чем не устраивает вариант:
?
Code: Select all
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
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
-
- Posts: 124
- Joined: 2005-07-14 20:53:05
- Contact:
Re: Подсчет кол-ва
Mirage wrote:Если я правильно понял вопрос то чем не устраивает вариант:?Code: Select all
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()
endsuban 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, это не кол-во итемов а просто имя. Вот как из журнала выдернуть именно то что в скобках и загнать в переменную.
Re: Подсчет кол-ва
Ну тогда вот такой скрипт тебе будет полезнее.
Положим есть предмет - лопата с 20 кондой
Так как конда пишется в квадратный скобках то отлов идет текста написанного внутри них:
Скрипт выдаст число с которым можно проводить математические операции.
Положим есть предмет - лопата с 20 кондой
Так как конда пишется в квадратный скобках то отлов идет текста написанного внутри них:
Code: Select all
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: Select all
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
-
- Posts: 124
- Joined: 2005-07-14 20:53:05
- Contact:
Re: Подсчет кол-ва
Code: Select all
name = UO.GetName( ob )
name = explode (name, '[', 1)
name = explode (name, ']', 0)
X=val(name)
X=X+X
Вот за это спасибо

-
- Posts: 124
- Joined: 2005-07-14 20:53:05
- Contact:
Re: Подсчет кол-ва
Так терь фигня в том, что запись такого рода оказалась (сразу чет не посмарел) - dtom[1 inerf] Ну вообщем число чет не получается дернуть все равно. Терь надо исключить inerf из скобок или как подругому?
-
- Posts: 124
- Joined: 2005-07-14 20:53:05
- Contact:
Re: Подсчет кол-ва
Code: Select all
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
Похоже эксплоде не срабатывает.
Re: Подсчет кол-ва
для dtom[1 inerf]
результат будет = 1
Code: Select all
name = explode (name, '[', 1)
name = explode (name, 'iner', 0)
результат будет = 1
-
- Posts: 124
- Joined: 2005-07-14 20:53:05
- Contact:
Re: Подсчет кол-ва
Mirage wrote:для dtom[1 inerf]Code: Select all
name = explode (name, '[', 1)
name = explode (name, 'iner', 0)
результат будет = 1
Спасиб, мираж я сам разобрался, правдо ни сразу


Code: Select all
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
Re: Подсчет кол-ва
Bank Cheque [53290255gp]
результат
Если в скрипте исправить
name = explode (name, '[', 1)
name = explode (name, 'gp', 0)
то однокуйственно
результат
PS Возможно у тебя в названии пробел - Попробуй поставить
name = explode (name, '[', 1)
name = explode (name, ' inerf', 0)
Если не поможет попробую позже твой вариант посмотреть.
Code: Select all
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
результат
53290255
Если в скрипте исправить
name = explode (name, '[', 1)
name = explode (name, 'gp', 0)
то однокуйственно
результат
53290255
PS Возможно у тебя в названии пробел - Попробуй поставить
name = explode (name, '[', 1)
name = explode (name, ' inerf', 0)
Если не поможет попробую позже твой вариант посмотреть.
Re: Подсчет кол-ва
Итак вот рабочий вариант:
Запустив скрипт и кликнув на мешок в котором находятся предметы С КОНДОЙ получим результат
Почему с кондой? Потому что если там будет лежать например "80 Sulphorous Ash" то скрипт уйдет в бесконечность.
Code: Select all
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
Запустив скрипт и кликнув на мешок в котором находятся предметы С КОНДОЙ получим результат
Название= 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" то скрипт уйдет в бесконечность.
-
- Posts: 124
- Joined: 2005-07-14 20:53:05
- Contact:
Re: Подсчет кол-ва
Спасибо за все отвенты
Вообщем проблема оказалась в том что там ни [] такие скобки а () обычные
скрипт работает.
Всего объектов = 236
Общие Кол-во = 774
Еще задержку можно уменьшить до 25Ю либо просто сделать проверку на журнал, итогда будет считать на максимальной скорости.


Всего объектов = 236
Общие Кол-во = 774
Еще задержку можно уменьшить до 25Ю либо просто сделать проверку на журнал, итогда будет считать на максимальной скорости.
Re: Подсчет кол-ва
на 56 сфере запущенной на локальной машине задержка меньше 200 вызывает частую не работу скрипта.
Сумка не успевает открыться, инфа про объект не обновилась после клика...
Сумка не успевает открыться, инфа про объект не обновилась после клика...