Помогите, скрипт не пишется -)

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Помогите, скрипт не пишется -)

Post by Destruction »

Есть у меня вредная привычка - писать каждый раз новые скрипты -))

Задача: На полу разные инготы, добрать так, чтобы в сумме в бекпаке их было 20-21, и при этом не было ресов, которых меньше 3ёх.

Итак, пишу скрипт на БС, пока проблема с добором ресурсов:

Code: Select all

sub BlackSmithing()
Des.GetResource("0x1BF2", "-1", 20, "backpack", "ground")
while Des.FixResource("0x1BF2", "-1", 3, "backpack")
   Des.GetResource("0x1BF2", "-1", 20, "backpack", "ground")
wend
endsub

; Функция выкидывает кучки в которых слишком мало итемов
; type - тип предмета
; color - цвет предмета
; count - нужное количество
; cont - где проверять
Sub Des.FixResource(type, color, count, cont)
uo.ignorereset()
uo.findtype(type, color, cont)
while uo.findcount()
   if uo.getQuantity("finditem") < count then
      Des.KillItem( uo.getSerial( "finditem" ) )
      return true
   endif
   uo.ignore("finditem")
   uo.findtype(type, color, cont)
wend
return false
endsub

; Функция докладывает нужное количество ресурсов
; type - тип предмета
; color - цвет предмета
; count - нужное количество
; cont - куда класть
; from - где искать
Sub Des.GetResource(type, color, count, cont, from)
var current = Des.GetQuantity(type, color, cont)
if count - current == 1 then
   current = count - 2
endif
if count - current <= 0 then
   return
endif
uo.ignorereset()
uo.findtype(type, color, from)
while uo.findcount()
   if uo.getQuantity( "finditem" ) > 0 then
      uo.moveitem("finditem", str(count-current), cont)
      checklag()
      current = Des.GetQuantity(type, color, cont)
      if count - current == 1 then
         current = count - 2
      endif
      if count - current <= 0 then
         return true
      endif
   endif
   uo.ignore("finditem") ; откуда-то берётся 0xFFFFFFF
   ; и самое странное - лезет invalid object !!!
   uo.findtype(type, color, from)
wend
die( "No resource" )
endsub

; Функция возвращает количество предметов
; type - тип предмета
; color - цвет предмета
; cont - где проверять
Sub Des.GetQuantity(type, color, cont)
var count = 0;
uo.findtype(type, color, cont)
while uo.findcount()
   count = count + uo.getQuantity( "finditem" )
   uo.ignore("finditem")
   uo.findtype(type, color, cont)
wend
uo.ignorereset()
return count
endsub


Где проблема - пометил в скрипте. Спать наверное пора, подскажите кто-нибудь свежую мысль, что не так ?..

Причём проблема вылезает после второго запуска скрипта, видимо инжект в память какую-то лабуду себе записывает..

PS: Пробывал заюзать форгет - не помог.
YokoInjection 505.18 VeNdOr
script.dll из стандартной поставки
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

аха..

Кажись просто кранты инже -)

Code: Select all

Sub deljournal(msg)
   while uo.injournal(msg)
      uo.setjournalline(uo.injournal(msg)-1,'') ; ошибка - незнаем, что такое msg !!! Бгагага -) Безобразие -(
   wend
endsub

Sub checklag()
   deljournal('ackpack')
   uo.click("backpack")
   repeat
      wait(100)
   until uo.injournal('ackpack')
endsub
Nmy
Expert!
Posts: 2152
Joined: 2005-09-14 15:31:58
Location: Latvia

Post by Nmy »

:)
viewtopic.php?p=50653#50653
вот возьми как пример... все оказывается намного кароче :roll:
Mihail
Expert!
Posts: 548
Joined: 2005-05-20 20:30:10
Contact:

Post by Mihail »

самый короткий скрипт такого рода там последним постом :P

а вообще - примерно это надо?

Code: Select all

var sunduk='0x0000000'

sub regs(Reg,kol)
var i=0, k=0
UO.FindType(Reg,-1,sunduk)
k= kol - uo.count(Reg)
if k>0 and uo.findcount()>0 then
uo.grab(str(k),'finditem')
wait(500+uo.random(3)*100)
checklag()
end if
end sub
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

NMY wrote::)
viewtopic.php?p=50653#50653
вот возьми как пример... все оказывается намного кароче :roll:

Мне не надо коротко, готов поспорить, что тот скрипт не делает всё, что мне надо -)
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Mihail wrote:самый короткий скрипт такого рода там последним постом :P

а вообще - примерно это надо?

Code: Select all

var sunduk='0x0000000'

sub regs(Reg,kol)
var i=0, k=0
UO.FindType(Reg,-1,sunduk)
k= kol - uo.count(Reg)
if k>0 and uo.findcount()>0 then
uo.grab(str(k),'finditem')
wait(500+uo.random(3)*100)
checklag()
end if
end sub


Аха, почти. Надо мой скрипт исправить, а не чужие вталкивать -)

Впринципе, стоило дописать мне процедуру ковки, как проблема себя исчерпала, но теперь мне жутко любопытно, откуда взялась экая проблема -)
Post Reply