Page 3 of 4
Re: помогите пжслта с атакои
Posted: 2010-03-30 13:05:51
by lavdenis
вообщем пишет line ...: Parse error
ну вообщем на этои until ((timeLeft>0) OR (timeout<=0)) AND (NOT UO.GetSerial(name) == '0x00000000')
Re: помогите пжслта с атакои
Posted: 2010-03-30 13:21:47
by Beyonder
Иногда инжу от недостатка скобочек распирает, попробуй так:
Code: Select all
until (((timeLeft>0) OR (timeout<=0)) AND (NOT ((UO.GetSerial(name)) == '0x00000000')))
Re: помогите пжслта с атакои
Posted: 2010-03-30 14:43:05
by lavdenis
Он не кастует сразу при первичном получении Id потому что не может получить его быстрее чем должен начаться каст(то есть каст начаться должен а id еще не вернулся) т.к. после определения даже без задержки норм кидается
Re: помогите пжслта с атакои
Posted: 2010-03-30 14:55:58
by lavdenis
Beyonder wrote:Иногда инжу от недостатка скобочек распирает, попробуй так:
Code: Select all
until (((timeLeft>0) OR (timeout<=0)) AND (NOT ((UO.GetSerial(name)) == '0x00000000')))
нет все таки не покатило. Я вообщем это
вообще удалил все вроде норм работает
Re: помогите пжслта с атакои
Posted: 2010-03-30 15:27:18
by Beyonder
Ну вообще это довольно полезная часть кода. Она проверяла если ты случайно не туда тыкнул и в таком случае снова прицел переспрашивала. Теперь не будет

Re: помогите пжслта с атакои
Posted: 2010-03-30 15:37:27
by lavdenis
Тогда так и оставлю. Мож туда еще UO.Dead() воткнуть да и на касты наверно тоже ?
Re: помогите пжслта с атакои
Posted: 2010-03-30 15:39:35
by lavdenis
только че с задержкои них меня не устраивает такая пошаговая стратегия там минимум 1230 надо
Re: помогите пжслта с атакои
Posted: 2010-03-30 15:49:36
by Beyonder
вообще удалил все вроде норм работает
Дык, я решил что всё уже работает

Для начала - дай мне конечный вариант своих скриптов, я уже сбился со счёта изменений. Желательно используя таг[code]
Re: помогите пжслта с атакои
Posted: 2010-03-30 16:18:59
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
Re: помогите пжслта с атакои
Posted: 2010-03-30 18:19:19
by lavdenis
Да кстати что за проверка на лаги CheckLag для чего она как работает и где моно использовать?
Re: помогите пжслта с атакои
Posted: 2010-03-31 06:05:56
by lavdenis
Я ^ там кое какие подправил
Re: помогите пжслта с атакои
Posted: 2010-03-31 06:38:43
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
Re: помогите пжслта с атакои
Posted: 2010-03-31 07:02:55
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 почему он их не находит то?
Re: помогите пжслта с атакои
Posted: 2010-03-31 08:17:56
by Beyonder
Прийду домой вечером - гляну в инже в чём проблема. Вслепую уже не получается

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

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

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

Re: помогите пжслта с атакои
Posted: 2010-03-31 17:23:29
by lavdenis
PS Зачем вы это делаете? Живой человек при средней прямоте рук всегда забьет скриптового бота. Такие вещи подойдут только против НПС. А там можно работать проще.
Все равно кликать на цель приходиться (если от поиска на земле отказаться)
Не факт что он победит. Нафига все по кнопкам расладывать как на фортепиано если все умоно на одну несколько хотя бы частых деиствии сделать. Пока он будет на меня каст делать я уже и таргет возьму с атакои и кастону на него че нить или рефлект собью если на нем висит еще и ману выпью если вдруг кончится (на шарде где играю я скорость многое значит, а если я не пианист то это +). Нафига пляски с роялем устраивать. А если еще прибавить туда каст с книги то на одну кнопку можно и каст с регов сделать если скролов нет или кончились
Re: помогите пжслта с атакои
Posted: 2010-03-31 17:31:31
by lavdenis
А че отдельнои комманды на каст со скроллов нет? Тогда че остается useobject?
Re: помогите пжслта с атакои
Posted: 2010-03-31 20:36:34
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
Re: помогите пжслта с атакои
Posted: 2010-03-31 21:40:50
by Mirage
Потому что фигачишь без отступов.
У тебя последний if не закрыт.
Если уж пишешь скрипты пиши по правилам.
+ приведи в порядок структуру. Запускаемые скрипты вверх. Исполнительные вниз и с Sub начинай.