Помогите улучшить скрипт на 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