Page 1 of 1

Как написать?

Posted: 2004-11-24 16:39:34
by 666Man666
Можно ли подсчитывать итемы кучек в сумме?
например 65000 в одной а в другой 20000 например.... и чтобы выводило на экран их сумму? просто если зделать по

Code: Select all

uo.findtype('что-то','-1','Где-то')
uo.TextOpen()
uo.TextPrint('Всего: '+str(uo.GetQuantity('finditem')))


не получается.... нефига

Re: Как написать?

Posted: 2004-11-24 16:53:08
by Sfagnum
так пробуй:

Code: Select all

i = 0
uo.findtype('что-то','-1','Где-то')
while UO.FindCount() > 0
  i = i + uo.GetQuantity('finditem')
  uo.ignore('finditem')
  uo.findtype('что-то','-1','Где-то')
wend
uo.TextOpen()
uo.TextPrint('Всего: '+str(i))
uo.ignorereset
в бакпаке просто UO.Count('что-то','-1')

Re: Как написать?

Posted: 2004-11-24 21:24:22
by Yoko
666Man666 wrote:Можно ли подсчитывать итемы кучек в сумме?
например 65000 в одной а в другой 20000 например.... и чтобы выводило на экран их сумму? просто если зделать по

Code: Select all

uo.findtype('что-то','-1','Где-то')
uo.TextOpen()
uo.TextPrint('Всего: '+str(uo.GetQuantity('finditem')))


не получается.... нефига


странно, должно работать

Posted: 2004-11-24 21:58:27
by 666Man666
Не работает чёто

Code: Select all

sub Info()
var i
i = 0
uo.findtype('Что-то','-1','Где-то')
while UO.FindCount() > 0
uo.print('1:'+str(uo.GetQuantity('finditem'))) - тут выводит 2 раза кол-во двух кучек, всё ок
i = i + uo.GetQuantity('finditem')
uo.ignore('finditem')
uo.findtype('Что-то','-1','Где-то')
wend
uo.TextOpen()
uo.TextPrint('All: '+str('i'))  - а тут выводит 0, почему так?
uo.ignorereset()
end sub

Re: Как написать?

Posted: 2004-11-24 22:43:22
by AGRS
Yoko wrote:
666Man666 wrote:Можно ли подсчитывать итемы кучек в сумме?
например 65000 в одной а в другой 20000 например.... и чтобы выводило на экран их сумму? просто если зделать по

Code: Select all

uo.findtype('что-то','-1','Где-то')
uo.TextOpen()
uo.TextPrint('Всего: '+str(uo.GetQuantity('finditem')))


не получается.... нефига


странно, должно работать


Почему должно работать? Должно выводить только количество предметов в стопке finditem.

Posted: 2004-11-24 22:58:53
by AGRS

Code: Select all

sub main()
  UO.Print(STR(get_amount('0x????','0x????','0x????????')))
end sub

SUB get_amount(Type, Color, Cont)
; Тип, Цвет, Контейнер.
  Var item_amount = 0
  UO.IgnoreReset()
  Repeat
    UO.FindType(Type, Color, Cont)
    If UO.FindCount()>0 Then
      If UO.GetQuantity('finditem')==0 Then ; Эта проверка необходима в отдельных случаях.
        item_amount = item_amount + 1
      Else
        item_amount = item_amount + UO.GetQuantity('finditem')
      EndIf
      UO.Ignore('finditem')
      UO.FindType(Type, Color, Cont)
    EndIf
  Until UO.FindCount()<1
  UO.IgnoreReset()
  Return item_amount
END SUB

Posted: 2004-11-24 23:55:30
by 666Man666
Спасибо АГРС, надеюсь это работает :)

Posted: 2004-11-25 00:46:06
by 666Man666
AGRS wrote:

Code: Select all

sub main()
  UO.Print(STR(get_amount('0x????','0x????','0x????????')))
end sub

SUB get_amount(Type, Color, Cont)
; Тип, Цвет, Контейнер.
  Var item_amount = 0
  UO.IgnoreReset()
  Repeat
    UO.FindType(Type, Color, Cont)
    If UO.FindCount()>0 Then
      If UO.GetQuantity('finditem')==0 Then ; Эта проверка необходима в отдельных случаях.
        item_amount = item_amount + 1
      Else
        item_amount = item_amount + UO.GetQuantity('finditem')
      EndIf
      UO.Ignore('finditem')
      UO.FindType(Type, Color, Cont)
    EndIf
  Until UO.FindCount()<2
  UO.IgnoreReset()
END SUB

К сожелению выводит "0"...
Указываю например логи или стрелы, без разницы....
указываю контейнер (сумку, возле чара на полу)....
но не получается... Выводится 0...

Posted: 2004-11-25 07:52:11
by AGRS
Хмм... Ретурн исчез. :(

Code: Select all

...
  UO.IgnoreReset()
  Return item_amount
END SUB


так должно быть.

Posted: 2004-11-25 12:56:51
by 666Man666
А вот с ретурном выводится :)
Но всёравно выводит число кучки в каторой больше итемов... сумму не хотит ((
наверно это хардкодед......

Posted: 2004-11-25 13:21:38
by AlexeyVorotnikov
Until UO.FindCount()<1

Posted: 2004-11-25 15:24:07
by 666Man666
Урааааааа :) !!!!! работает
Спасибо всем ! > Вот код если кому нужно...

Code: Select all

sub Info()
uo.TextOpen()
uo.TextPrint('All: '+STR(get_amount('0x1BDD','-1','0x40005FCB')))
end sub

SUB get_amount(Type, Color, Cont)
Var item_amount = 0
UO.IgnoreReset()
Repeat
UO.FindType(Type, Color, Cont)
If UO.FindCount()>0 Then
If UO.GetQuantity('finditem')==0 Then
item_amount = item_amount + 1
Else
item_amount = item_amount + UO.GetQuantity('finditem')
EndIf
UO.Ignore('finditem')
UO.FindType(Type, Color, Cont)
EndIf
Until UO.FindCount()<1
UO.IgnoreReset()
Return item_amount
END SUB

Posted: 2004-11-25 20:01:47
by AGRS
AlexeyVorotnikov wrote:Until UO.FindCount()<1

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