Page 1 of 1

Помогите улучшить скрипт на Poisoning

Posted: 2008-07-14 17:04:55
by mont
Скрипт на Poisoning для шарда Middle-Earth.
если можно то пожалуйсто сделайте что-бы скрипт брал любой вепон из контейнера "а" пойзонил егт Х зарядами, и клал в контейнер "б"
заранее спасибо.
Я не знаю что в этом скрипте не так, но он пишет, то что ошибка на 31 линии, но инжа показывает то что всего 30 строк в скрипте.

Code: Select all

sub main()
var i=1
var x=10 #количество бутылок на каждый вепон
item_select()
	while not uo.dead()
		poison()
		uo.sayu(str(i))
		if uo.injournal(str(x)) then
			item_select()
		endif
	wend
end sub

sub item_select()
	uo.addobject('item')
	uo.print("Выбери что травим")
	while uo.targeting()
		wait(1000)
	wend
end sub

sub poison()
uo.waittargettype(0x0F0E, 0x0694)
uo.waittargetobejct('item')
uo.useskill("Poisoning")
while not uo.injournal('You succeed in poisoning the item.)
wait(10)
wend
i=i+1
end sub

Posted: 2008-07-14 17:20:11
by Destruction
i=i+1

Это зачем? Переменная не объявлена в контексте функции poison.

Отсюда: uo.sayu(str(i))

Будет всегда говорить единицу.

Плюс цикл без паузы, если не пройдёт условие:
if uo.injournal(str(x)) then

Которое не совсем понятно зачем нужно.

Posted: 2008-07-14 20:07:17
by mont
Destruction wrote:i=i+1

Это зачем? Переменная не объявлена в контексте функции poison.

Отсюда: uo.sayu(str(i))

Будет всегда говорить единицу.

Плюс цикл без паузы, если не пройдёт условие:
if uo.injournal(str(x)) then

Которое не совсем понятно зачем нужно.
i=i+1 это чтобы он считал сколько пойзонов уже закинул.
а когда проходит if uo.injournal(str(x)) then тогда он показывает таргет на следующий итем.

Posted: 2008-07-14 20:33:28
by Scripts Writer

Code: Select all

sub main() 
var i=1 
var x=10 #количество бутылок на каждый вепон 
item_select() 
   while not uo.dead() 
      poison() 
      uo.sayu(str(i)) 
      if uo.injournal(str(x)) then 
         item_select() 
      endif 
   wend 
end sub
Ты хочешь сказать, у тебя он пишет 1,2,3,...10 в чат?

Posted: 2008-07-14 23:06:04
by mont
да :)
мну помог Beyonder, за что ему большое спасибо :)

Code: Select all

var from_bag=0x716B7BE8
var to_bag=0x7169A58C
var ptype=0x0f0e
var pcolor=0x0694

var maxPoisonItem = 10
 
sub main()
	var item
	var ppotion

	var poisonNum

	while (true)
		uo.findtype(-1,-1,from_bag)
	    item=uo.getserial('finditem')

		#no items
		if (UO.FindCount() == 0) then
			return
		endif
		
		for poisonNum = 1 to maxPoisonItem
			DeleteJournalLine('You succeed in poisoning the item')
			uo.findtype(ptype,pcolor)
	    	ppotion=uo.getserial('finditem')

			#no poison left
			if (UO.FindCount() == 0) then
				return
			endif

	    	uo.grab(1,item)
	        uo.waittargetobject(ppotion,item)
	    
		    uo.useskill('Poisoning')

	    	WaitJournal('You succeed in poisoning the item',7000)
		wait(10000)
		next

	    uo.moveitem(item,1,to_bag)
	wend
end sub
 
sub WaitJournal(Line,maxWait)
        if (maxWait < 0) then
                maxWait = 60*60*24*30*12
        end if
 
        while (not UO.InJournal(Line)) and (maxWait > 0)
                wait(100)
                maxWait = maxWait - 100
        wend
        wait(100)
end sub
 
Sub DeleteJournalLine(msg)
        while uo.injournal(msg)
                uo.setjournalline(uo.injournal(msg)-1,"")
        wend
end sub