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

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 »

:)
https://yoko.uokit.com/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
[url=http://forum.yoko.com.ua/viewtopic.php?t=7379&start=15#69595][b]"плагины" для инжекта[/b][/url]
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

NMY wrote::)
https://yoko.uokit.com/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