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

Ask for scripts here

Moderators: Murderator+, Murderator

Post Reply
mont
Posts: 23
Joined: 2006-10-24 01:51:41
Location: Middle Earth
Contact:

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

Post 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
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

i=i+1

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

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

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

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

Которое не совсем понятно зачем нужно.
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
mont
Posts: 23
Joined: 2006-10-24 01:51:41
Location: Middle Earth
Contact:

Post 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 тогда он показывает таргет на следующий итем.
Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Post 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 в чат?
mont
Posts: 23
Joined: 2006-10-24 01:51:41
Location: Middle Earth
Contact:

Post 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
Post Reply