Как определить конец каста ?
Moderators: Murderator+, Murderator
неумеит инжа определять такие вещи, можно занести спелы в массив + время каждого спела, получется +\- нормально...
Уроки языка Injection
Основные команды языка Injection
Yoko Injection Code Sweeper
Drw (2009) скрипты
2017 Начал играть на Uorpg.net
Основные команды языка Injection
Yoko Injection Code Sweeper
Drw (2009) скрипты
2017 Начал играть на Uorpg.net
-
Scripts Writer
- Posts: 2259
- Joined: 2005-04-19 18:00:29
- Location: Московская область
- Contact:
-
Scripts Writer
- Posts: 2259
- Joined: 2005-04-19 18:00:29
- Location: Московская область
- Contact:
You Must Die wrote:NMY wrote:неумеит инжа определять такие вещи, можно занести спелы в массив + время каждого спела, получется +\- нормально...
Я думаю ты не всё знаешь )
А вот что касается спелов + одноимённых им элементов другого массива со временем -неплохая вроде мысль. Ну вот что получится?!
Разве что при получении слов каста в журнале, инжект в цикле с вейтом на проверку журнала проверяет эти слова на наличие подобных в одном из элементов массива с кастами.
Затем если нашёл то сравнивает значение элемента другого массива под тем же номером
Code: Select all
(
cast[10]= uo.GetName('laststatus') + ': Kal Vas Flam'
time[10]=3.5 )Вот это уже на чтото похоже разумное ,- но ближе к автоботу. Вопрос тогда как быть ,если есть еще 3ий массив с ИД врагов в мясе(5-10 человек). Проверка каждого следующего на каст, может задевать предыдущего- тем самым физлы. То, что выше описал скорее может подойти к 1х1- если конечно грамотно написать-но эт многого стоит =\
п.с.
В этом не уверен, но думаю если будет желание и востребованность- как то воплотить в жизнь можно будет.
Code: Select all
(
cast[10]= uo.GetName('laststatus') + ': Kal Vas Flam'
time[10]=3.5 )Destruction как всегда, спросил так спросил…
Вот примерно так можно
Вот примерно так можно
Code: Select all
myAntiCast(Circle)
var LTimer = UO.Timer(), a, time = 0
repeat
if a = UO.GetSerial(UO.InJournal("Uus Jux|Rel Wis|In Por Ylem|Des Mani")-1) <> "self" then
time = UO.Timer() + (0.5 + 0.25 * 1)
endif
if a = UO.GetSerial(UO.InJournal("An Mani")-1) <> "self" then
time = UO.Timer() + (0.5 + 0.25 * 2)
endif
if a = UO.GetSerial(UO.InJournal("Vas Flam|In Nox")-1) <> "self" then
time = UO.Timer() + (0.5 + 0.25 * 3)
endif
if a = UO.GetSerial(UO.InJournal("Des Sanct|Por Ort|Ort Rel")-1) <> "self" then
time = UO.Timer() + (0.5 + 0.25 * 4)
endif
if a = UO.GetSerial(UO.InJournal("In Jux Hur Ylem|Por Corp Wis|An Ex Por")-1) <> "self" then
time = UO.Timer() + (0.5 + 0.25 * 5)
endif
if a = UO.GetSerial(UO.InJournal("Corp Por|Vas Ort Flam")-1) <> "self" then
time = UO.Timer() + (0.5 + 0.25 * 6)
endif
if a = UO.GetSerial(UO.InJournal("Vas Ort Grav|Kal Vas Flam|Ort Sanct|Flam Kal Des Ylem")-1) <> "self" then
time = UO.Timer() + (0.5 + 0.25 * 7)
endif
if a = UO.GetSerial(UO.InJournal("In Vas Por|Vas Corp Por")-1) <> "self" then
time = UO.Timer() + (0.5 + 0.25 * 8)
endif
until LTimer + (0.5 + 0.25 * Circle) > UO.Timer() || time <> 0
if LTimer + (0.5 + 0.25 * Circle) - time > 0.5 + 0.25 * 1 then
UO.Cast("", a)
endif
endsub-
Destruction
- Junior Expert
- Posts: 3221
- Joined: 2004-06-24 22:08:56
-
Destruction
- Junior Expert
- Posts: 3221
- Joined: 2004-06-24 22:08:56
Я поступаю проще, смотрю исходники сервера.
Там все точно - сколько, чего, кому и когда.
Единственный вариант это время.
Но конструкция будет корявой и ненадежной.
Как минимум нужно еще учитывать пинг.
Свой резист, кол-во хп, шанс что это кастуют на тебя.
Скриптом такую задачу решать почти бесполезно, скорости не хватит.
Там все точно - сколько, чего, кому и когда.
Единственный вариант это время.
Но конструкция будет корявой и ненадежной.
Как минимум нужно еще учитывать пинг.
Свой резист, кол-во хп, шанс что это кастуют на тебя.
Скриптом такую задачу решать почти бесполезно, скорости не хватит.
-
Destruction
- Junior Expert
- Posts: 3221
- Joined: 2004-06-24 22:08:56
1. Мне пофиг на резист. Говорю же - для массовых сражений -)
2. Коннект сколько не учитывай, а конструкция такая:
Погрешность коннекта как раз учтётся чеклагом -)
3. Там точно кромь времени ничего нету? -( И всё-таки я не понимаю, када кастуют ФС - появляется анимация ФСа, почему вы говорите, что низя через неё сделать ?
2. Коннект сколько не учитывай, а конструкция такая:
Code: Select all
set timer
checklag
some action
check timerПогрешность коннекта как раз учтётся чеклагом -)
3. Там точно кромь времени ничего нету? -( И всё-таки я не понимаю, када кастуют ФС - появляется анимация ФСа, почему вы говорите, что низя через неё сделать ?
-
Scripts Writer
- Posts: 2259
- Joined: 2005-04-19 18:00:29
- Location: Московская область
- Contact:
Destruction wrote:1. Мне пофиг на резист. Говорю же - для массовых сражений -)
2. Коннект сколько не учитывай, а конструкция такая:Code: Select all
set timer
checklag
some action
check timer
Погрешность коннекта как раз учтётся чеклагом -)
3. Там точно кромь времени ничего нету? -( И всё-таки я не понимаю, када кастуют ФС - появляется анимация ФСа, почему вы говорите, что низя через неё сделать ?
1А у тебя на каждый каст своя анимация?
2Сядь на лошадь и одень щит и оружие и посмотри на свою анимацию.
-
Destruction
- Junior Expert
- Posts: 3221
- Joined: 2004-06-24 22:08:56
-
Scripts Writer
- Posts: 2259
- Joined: 2005-04-19 18:00:29
- Location: Московская область
- Contact:
Destruction wrote:1. Своя или нет - не принципиально, разве uo.journalserial() отменили ?
2. Я говорю про конец каста, помнишь как летит болт? -)) А как файр стрелка ? -) Ты ещё скажи, что на каждый каст одна анимация
Нет, но на нек. шардах (ФОрестВарс,пвп) к примеру-я запускал скрипт который кастовал 3 подряд каста максимально быстро-тоесть была проверка на ману и реги потраченные вроде. Так смысл в том-что когда еще не было 1ой анимации, уже начинался каст второго спела( ~ 1 сек задержки )
-
Destruction
- Junior Expert
- Posts: 3221
- Joined: 2004-06-24 22:08:56
-
Scripts Writer
- Posts: 2259
- Joined: 2005-04-19 18:00:29
- Location: Московская область
- Contact:
Это что бы нельзя было кастовать как из пулемета..
private static TimeSpan NextSpellDelay = TimeSpan.FromSeconds( 0.75 );
Это время анимации, самих анимаций несколько.
private static TimeSpan AnimateDelay = TimeSpan.FromSeconds( 1.5 );
То что сервер послал анимацию не значит что ее клиент произведет полностью, на оси кастующий будет обездвижен, у клиента нет задачи следить за этим. На сфере заморозки нет, действия игрока будут обрывать анимацию.
Есть еще звук, но его шлют только кастующему.
Визуальные эфекты шлют только после каста.
Остается только время. Но чисто по нему погрешность сильно большая.
Чтобы построить автоматику на бой, нужно просчитывать всех участников разом.
Взгляд на поле боя глазами каждого участника. Если объект А ведет сражение с Б, вряд ли он будет кастовать на В. И т.д.
Только так можно построить бота, способного уложить людей пачками. Вариантов действий у персонажа управляемого человеком не так уж много, просчитать можно. Только это не сделать скриптом.
Руки по прежнему рулят.
private static TimeSpan NextSpellDelay = TimeSpan.FromSeconds( 0.75 );
Это время анимации, самих анимаций несколько.
private static TimeSpan AnimateDelay = TimeSpan.FromSeconds( 1.5 );
То что сервер послал анимацию не значит что ее клиент произведет полностью, на оси кастующий будет обездвижен, у клиента нет задачи следить за этим. На сфере заморозки нет, действия игрока будут обрывать анимацию.
Есть еще звук, но его шлют только кастующему.
Визуальные эфекты шлют только после каста.
Остается только время. Но чисто по нему погрешность сильно большая.
Чтобы построить автоматику на бой, нужно просчитывать всех участников разом.
Взгляд на поле боя глазами каждого участника. Если объект А ведет сражение с Б, вряд ли он будет кастовать на В. И т.д.
Только так можно построить бота, способного уложить людей пачками. Вариантов действий у персонажа управляемого человеком не так уж много, просчитать можно. Только это не сделать скриптом.
Руки по прежнему рулят.
-
Destruction
- Junior Expert
- Posts: 3221
- Joined: 2004-06-24 22:08:56