помогите пжслта с атакои
Moderators: Murderator+, Murderator
Re: помогите пжслта с атакои
вообщем пишет line ...: Parse error
ну вообщем на этои until ((timeLeft>0) OR (timeout<=0)) AND (NOT UO.GetSerial(name) == '0x00000000')
ну вообщем на этои until ((timeLeft>0) OR (timeout<=0)) AND (NOT UO.GetSerial(name) == '0x00000000')
Re: помогите пжслта с атакои
Иногда инжу от недостатка скобочек распирает, попробуй так:
Code: Select all
until (((timeLeft>0) OR (timeout<=0)) AND (NOT ((UO.GetSerial(name)) == '0x00000000')))
Re: помогите пжслта с атакои
Он не кастует сразу при первичном получении Id потому что не может получить его быстрее чем должен начаться каст(то есть каст начаться должен а id еще не вернулся) т.к. после определения даже без задержки норм кидается
Last edited by lavdenis on 2010-03-30 15:18:26, edited 3 times in total.
Re: помогите пжслта с атакои
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)
Re: помогите пжслта с атакои
Ну вообще это довольно полезная часть кода. Она проверяла если ты случайно не туда тыкнул и в таком случае снова прицел переспрашивала. Теперь не будет 

Re: помогите пжслта с атакои
Тогда так и оставлю. Мож туда еще UO.Dead() воткнуть да и на касты наверно тоже ?
Last edited by lavdenis on 2010-03-30 15:42:46, edited 3 times in total.
Re: помогите пжслта с атакои
только че с задержкои них меня не устраивает такая пошаговая стратегия там минимум 1230 надо
Re: помогите пжслта с атакои
вообще удалил все вроде норм работает
Дык, я решил что всё уже работает

Для начала - дай мне конечный вариант своих скриптов, я уже сбился со счёта изменений. Желательно используя таг[code]
Re: помогите пжслта с атакои
Проверка объекта
Выбор цели
Добавление объекта
Эти я не проверял
Каст
Общии каст со скролла
Питье маны
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.
Re: помогите пжслта с атакои
Да кстати что за проверка на лаги CheckLag для чего она как работает и где моно использовать?
Re: помогите пжслта с атакои
Я ^ там кое какие подправил
Re: помогите пжслта с атакои
Чет каст 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
Re: помогите пжслта с атакои
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 почему он их не находит то?
Re: помогите пжслта с атакои
Прийду домой вечером - гляну в инже в чём проблема. Вслепую уже не получается 

Re: помогите пжслта с атакои
Ишь нафлудили то...
неправильное использование команды uo.usetype(scrollType,'Enemy')
ловушку прицел забыл выставить.
PS Зачем вы это делаете? Живой человек при средней прямоте рук всегда забьет скриптового бота. Такие вещи подойдут только против НПС. А там можно работать проще.
Все равно кликать на цель приходиться (если от поиска на земле отказаться) А какая разница что ты воспользуешься 2 кнопками вместо 1? Пометить объект - колдовать в последний объект.
неправильное использование команды uo.usetype(scrollType,'Enemy')
Описание: usetype •
Синтакс: ,usetype type [color]
none uo.usetype(type,[color])
Ищет в бекпаке и подсумках обьект по типу type (и цвету color если задано) после чего использует его (двойной щелчок).
См. так же useobject, usefromground.
ловушку прицел забыл выставить.
PS Зачем вы это делаете? Живой человек при средней прямоте рук всегда забьет скриптового бота. Такие вещи подойдут только против НПС. А там можно работать проще.
Все равно кликать на цель приходиться (если от поиска на земле отказаться) А какая разница что ты воспользуешься 2 кнопками вместо 1? Пометить объект - колдовать в последний объект.
Re: помогите пжслта с атакои
неправильное использование команды uo.usetype(scrollType,'Enemy')
Действительно, как я сразу не заметил

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

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

Re: помогите пжслта с атакои
PS Зачем вы это делаете? Живой человек при средней прямоте рук всегда забьет скриптового бота. Такие вещи подойдут только против НПС. А там можно работать проще.
Все равно кликать на цель приходиться (если от поиска на земле отказаться)
Не факт что он победит. Нафига все по кнопкам расладывать как на фортепиано если все умоно на одну несколько хотя бы частых деиствии сделать. Пока он будет на меня каст делать я уже и таргет возьму с атакои и кастону на него че нить или рефлект собью если на нем висит еще и ману выпью если вдруг кончится (на шарде где играю я скорость многое значит, а если я не пианист то это +). Нафига пляски с роялем устраивать. А если еще прибавить туда каст с книги то на одну кнопку можно и каст с регов сделать если скролов нет или кончились
Last edited by lavdenis on 2010-03-31 18:15:36, edited 1 time in total.
Re: помогите пжслта с атакои
А че отдельнои комманды на каст со скроллов нет? Тогда че остается useobject?
Re: помогите пжслта с атакои
[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.
Re: помогите пжслта с атакои
Потому что фигачишь без отступов.
У тебя последний if не закрыт.
Если уж пишешь скрипты пиши по правилам.
+ приведи в порядок структуру. Запускаемые скрипты вверх. Исполнительные вниз и с Sub начинай.

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