помогите пжслта с атакои

Ask for scripts here

Moderators: Murderator+, Murderator

lavdenis
Posts: 87
Joined: 2010-03-27 06:15:56
Contact:

Re: помогите пжслта с атакои

Post by lavdenis »

вообщем пишет line ...: Parse error
ну вообщем на этои until ((timeLeft>0) OR (timeout<=0)) AND (NOT UO.GetSerial(name) == '0x00000000')
Beyonder
Expert!
Posts: 388
Joined: 2005-04-23 10:19:43
Contact:

Re: помогите пжслта с атакои

Post by Beyonder »

Иногда инжу от недостатка скобочек распирает, попробуй так:

Code: Select all

until (((timeLeft>0) OR (timeout<=0)) AND (NOT ((UO.GetSerial(name)) == '0x00000000')))
lavdenis
Posts: 87
Joined: 2010-03-27 06:15:56
Contact:

Re: помогите пжслта с атакои

Post by lavdenis »

Он не кастует сразу при первичном получении Id потому что не может получить его быстрее чем должен начаться каст(то есть каст начаться должен а id еще не вернулся) т.к. после определения даже без задержки норм кидается
Last edited by lavdenis on 2010-03-30 15:18:26, edited 3 times in total.
lavdenis
Posts: 87
Joined: 2010-03-27 06:15:56
Contact:

Re: помогите пжслта с атакои

Post by lavdenis »

Beyonder wrote:Иногда инжу от недостатка скобочек распирает, попробуй так:

Code: Select all

until (((timeLeft>0) OR (timeout<=0)) AND (NOT ((UO.GetSerial(name)) == '0x00000000')))



нет все таки не покатило. Я вообщем это

Code: Select all

AND (UO.GetSerial(name)>0) 
вообще удалил все вроде норм работает
Beyonder
Expert!
Posts: 388
Joined: 2005-04-23 10:19:43
Contact:

Re: помогите пжслта с атакои

Post by Beyonder »

Ну вообще это довольно полезная часть кода. Она проверяла если ты случайно не туда тыкнул и в таком случае снова прицел переспрашивала. Теперь не будет :)
lavdenis
Posts: 87
Joined: 2010-03-27 06:15:56
Contact:

Re: помогите пжслта с атакои

Post by lavdenis »

Тогда так и оставлю. Мож туда еще UO.Dead() воткнуть да и на касты наверно тоже ?
Last edited by lavdenis on 2010-03-30 15:42:46, edited 3 times in total.
lavdenis
Posts: 87
Joined: 2010-03-27 06:15:56
Contact:

Re: помогите пжслта с атакои

Post by lavdenis »

только че с задержкои них меня не устраивает такая пошаговая стратегия там минимум 1230 надо
Beyonder
Expert!
Posts: 388
Joined: 2005-04-23 10:19:43
Contact:

Re: помогите пжслта с атакои

Post by Beyonder »

вообще удалил все вроде норм работает

Дык, я решил что всё уже работает :)

Для начала - дай мне конечный вариант своих скриптов, я уже сбился со счёта изменений. Желательно используя таг[code]
lavdenis
Posts: 87
Joined: 2010-03-27 06:15:56
Contact:

Re: помогите пжслта с атакои

Post by lavdenis »

Проверка объекта

Code: Select all

sub addOrGetObject(name,distance,timeout) 
   var oldObject = UO.GetSerial(name)
   if ((NOT oldObject=='0x00000000') AND (UO.GetDistance(oldObject)<=distance) OR (distance==-1)) then
      return oldObject
   else
      return addObjectWait(name,timeout)
   endif
endsub


Выбор цели

Code: Select all

sub selectEnemy()
   addOrGetObject('Enemy',10,-1)
   uo.Cast('Magic Arrow','Enemy')
   UO.Attack('Enemy')
endsub


Добавление объекта

Code: Select all

ssub addObjectWait(name,timeout)
var timeLeft
repeat
   UO.AddObject(name,0)
   if uo.waiting() then
      uo.canceltarget()
   endif
   UO.AddObject(name)
   timeLeft = timeout
   while (NOT uo.Targeting()) AND (timeLeft>0)
      wait(50)
      timeLeft = timeLeft -50
   wend
   while (uo.Targeting()) AND (timeLeft>0)
      wait(50)
      timeLeft = timeLeft -50
   wend
until ((timeLeft>0) OR (timeout<=0)) AND (UO.GetSerial(name)>0)
return UO.GetSerial(name)
endsub


Эти я не проверял

Каст

Code: Select all

sub castFS()
   autoCastScroll('FlameStrike','0x1234',40)
endsub


Общии каст со скролла

Code: Select all

sub autoCastScroll(scrollName,scrollType,ManaNeed)
   if UO.Mana<ManaNeed then
      UO.Print("NO MANA!")
      manadrink('ManaPotion','0x4321')
   endif
   var Enemy = addOrGetObject('Enemy',10,-1)
   if uo.count(scrollType)<>0 then
      castScroll(scrollType,ManaNeed,'Enemy')
      uo.print(scrollName+': '+STR(UO.Count(scrollType)))
   else
      UO.Print("NO SCROLLS!")
   endif
endsub


Питье маны

Code: Select all

sub manadrink(ManaName,manaType)
   if uo.count(manaType)<>0 then
      uo.usetype(manaType)
      uo.print(ManaName+': '+STR(UO.Count(manaType)))
   else
      uo.print ("NO MANA POTIONS!")
   endsub
Last edited by lavdenis on 2010-04-01 00:10:56, edited 8 times in total.
lavdenis
Posts: 87
Joined: 2010-03-27 06:15:56
Contact:

Re: помогите пжслта с атакои

Post by lavdenis »

Да кстати что за проверка на лаги CheckLag для чего она как работает и где моно использовать?
lavdenis
Posts: 87
Joined: 2010-03-27 06:15:56
Contact:

Re: помогите пжслта с атакои

Post by lavdenis »

Я ^ там кое какие подправил
lavdenis
Posts: 87
Joined: 2010-03-27 06:15:56
Contact:

Re: помогите пжслта с атакои

Post by lavdenis »

Чет каст FS не проходит пишет NO SCROLLS где неправильно то? И Я тут кое что дописал

Code: Select all

sub autoCastScroll(scrollName,scrollType,ManaNeed)
   if UO.Mana<ManaNeed then
      UO.Print("NO MANA!")
      manadrink('ManaPotion','0x4321')
   endif
   var Enemy = addOrGetObject('Enemy',10,-1)
   if uo.count(scrollType)<>0 then
      uo.usetype(scrollType,Enemy)
      uo.print(scrollName+': '+STR(UO.Count(scrollType)))
   else
      UO.Print("NO SCROLLS!")
  if uo.waiting() then
uo.canceltarget()
endif
endif
until UO.Dead()
endsub
lavdenis
Posts: 87
Joined: 2010-03-27 06:15:56
Contact:

Re: помогите пжслта с атакои

Post by lavdenis »

Code: Select all

sub autoCastScroll(scrollName,scrollType,ManaNeed)
   if UO.Mana<ManaNeed then
      UO.Print("NO MANA!")
      manadrink('ManaPotion','0x0F08')
   endif
   var Enemy = addOrGetObject('Enemy',10,-1)
   if uo.count(scrollType)<>0 then
      uo.usetype(scrollType,'Enemy')
      uo.print(scrollName+': '+STR(UO.Count(scrollType)))
   else
      UO.Print("NO SCROLLS!")
   endif
endsub


Так тоже не хочет пишет No item found почему он их не находит то?
Beyonder
Expert!
Posts: 388
Joined: 2005-04-23 10:19:43
Contact:

Re: помогите пжслта с атакои

Post by Beyonder »

Прийду домой вечером - гляну в инже в чём проблема. Вслепую уже не получается :)
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: помогите пжслта с атакои

Post by Mirage »

Ишь нафлудили то...

неправильное использование команды uo.usetype(scrollType,'Enemy')

Описание: usetype •
Синтакс: ,usetype type [color]
none uo.usetype(type,[color])

Ищет в бекпаке и подсумках обьект по типу type (и цвету color если задано) после чего использует его (двойной щелчок).
См. так же useobject, usefromground.

ловушку прицел забыл выставить.

PS Зачем вы это делаете? Живой человек при средней прямоте рук всегда забьет скриптового бота. Такие вещи подойдут только против НПС. А там можно работать проще.
Все равно кликать на цель приходиться (если от поиска на земле отказаться) А какая разница что ты воспользуешься 2 кнопками вместо 1? Пометить объект - колдовать в последний объект.
Beyonder
Expert!
Posts: 388
Joined: 2005-04-23 10:19:43
Contact:

Re: помогите пжслта с атакои

Post by Beyonder »

неправильное использование команды uo.usetype(scrollType,'Enemy')

Действительно, как я сразу не заметил :)

PS Зачем вы это делаете? Живой человек при средней прямоте рук всегда забьет скриптового бота. Такие вещи подойдут только против НПС. А там можно работать проще.
Все равно кликать на цель приходиться (если от поиска на земле отказаться)

А мы бота и не делаем. Мы делаем просто фишку с сохранением прицела на последнем враге с проверкой на расстояние до врага.

Тоесть, чтобы один раз выбрав врага - можно было швырять в него боевые заклятия пока тот не зайдёт за 8 тайлов. Если-же это случилось - автоматически запрашивается таргет на следующего врага. И во время всего этого - скрипт проверяет ману и пьёт бутылки.
Магия для леньтяев короче :)

А какая разница что ты воспользуешься 2 кнопками вместо 1? Пометить объект - колдовать в последний объект.

Это-же вдвое больший износ клавиатуры! Не не не, надо сократить до одной кнопки :)
lavdenis
Posts: 87
Joined: 2010-03-27 06:15:56
Contact:

Re: помогите пжслта с атакои

Post by lavdenis »

PS Зачем вы это делаете? Живой человек при средней прямоте рук всегда забьет скриптового бота. Такие вещи подойдут только против НПС. А там можно работать проще.
Все равно кликать на цель приходиться (если от поиска на земле отказаться)


Не факт что он победит. Нафига все по кнопкам расладывать как на фортепиано если все умоно на одну несколько хотя бы частых деиствии сделать. Пока он будет на меня каст делать я уже и таргет возьму с атакои и кастону на него че нить или рефлект собью если на нем висит еще и ману выпью если вдруг кончится (на шарде где играю я скорость многое значит, а если я не пианист то это +). Нафига пляски с роялем устраивать. А если еще прибавить туда каст с книги то на одну кнопку можно и каст с регов сделать если скролов нет или кончились
Last edited by lavdenis on 2010-03-31 18:15:36, edited 1 time in total.
lavdenis
Posts: 87
Joined: 2010-03-27 06:15:56
Contact:

Re: помогите пжслта с атакои

Post by lavdenis »

А че отдельнои комманды на каст со скроллов нет? Тогда че остается useobject?
lavdenis
Posts: 87
Joined: 2010-03-27 06:15:56
Contact:

Re: помогите пжслта с атакои

Post by lavdenis »

[b]Снова итоги. Вообщем все сделал все работает, но в процессе теста пока каставал кончилась мана и он выпил ману автоматом после ни чего не сколдовав начались дикие лаги, я посмотрел во вкладке Script и оказывается что sub cast FS там повис. Где исправить.Мож где задержку выставить?[b]

########################################

Code: Select all

Sub selectEnemy()
     addOrGetObject('Enemy',3,-1)
     UO.Cast('Magic Arrow','Enemy')
     UO.Attack('Enemy')
Endsub

#######################################

Sub castFS()
     autoCastScroll('FlameStrike','0x1F5F',20)
Endsub

######################################

Sub addOrGetObject(name,distance,timeout)
     var oldObject = UO.GetSerial(name)
     if ((NOT oldObject=='0x00000000') AND (UO.GetDistance(oldObject)<=distance) OR (distance==-1)) then
         return oldObject
     else
         return addObjectWait(name,timeout)
     endif
Endsub

########################################

Sub autoCastScroll(scrollName,scrollType,ManaNeed)
     if UO.Mana<ManaNeed then
         UO.Print("NO MANA!")
         manadrink('ManaPotion','0x0F08')
     endif
     var Enemy = addOrGetObject('Enemy',10,-1)
     if uo.count(scrollType)<>0 then
       
         UO.UseType(scrollType)
         UO.WaitTargetObject('Enemy')
         UO.print(scrollName+': '+STR(UO.Count(scrollType)))
     else
         UO.Print("NO SCROLLS!")
     endif
Endsub

##################################

Sub addObjectWait(name,timeout)
     var timeLeft
     repeat
         UO.AddObject(name,0)
         if UO.waiting() then
             UO.canceltarget()
         endif
         UO.AddObject(name)
         timeLeft = timeout
         while (NOT UO.Targeting()) AND (timeLeft>0)
             wait(50)
             timeLeft = timeLeft -50
         wend
         while (UO.Targeting()) AND (timeLeft>0)
             wait(50)
             timeLeft = timeLeft -50
         wend
     until ((timeLeft>0) OR (timeout<=0)) AND (UO.GetSerial(name)>0)
     return UO.GetSerial(name)
Endsub

####################################

Sub manadrink(ManaName,manaType)
     if UO.count(manaType)<>0 then
        UO.usetype(manaType)
   
        UO.print(ManaName+': '+STR(UO.Count(manaType)))
       else
        UO.print ("NO MANA POTIONS!")
     endif
Endsub
Last edited by lavdenis on 2010-03-31 23:16:07, edited 4 times in total.
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: помогите пжслта с атакои

Post by Mirage »

Потому что фигачишь без отступов. :twisted:
У тебя последний if не закрыт.
Если уж пишешь скрипты пиши по правилам.
+ приведи в порядок структуру. Запускаемые скрипты вверх. Исполнительные вниз и с Sub начинай.
Post Reply