Функции хождения (при включенном always run будет шустро бегать) через Изи.
1. Запускаем изю, привязываем к окну ультимы (если клиент только один запущен - привяжется сама).
В Изю загружаем и запускаем такой скрипт:
Code:
; Процедура перемещения чара для скриптов инжекта
; Считывает все параметры из регистри
;
; v.1.02 (c) Edred
;
initevents
set *1 0
set *2 0
set *3 0
set *4 0
loop:
if *1 <> 0
{
wait 2
move *1 *2 *3 *4
set *1 0
}
goto loop
2. В инжектовский скрипт добавляем такую процедурку:
Code:
Sub GotoRail( Rail, Direct, GuardFlag )
; Функция перемещения по маршруту. Маршрут - в Rail. Перемещение - через Изи.
; Direct - направление перемещения по маршруту: 1 - прямое, 0 - обратное.
; GuardFlag - вызывать гвардов между перемещением по узловым точкам маршрута
; или нет. Гварды вызываются если здоровья меньше MaxLife.
;
; (c) Edred
;
VAR MyX, MyY, NStep = 1, RailBack = ''
VAR tm = '60s' ; таймаут на перемещение
VAR toler = '0' ; толерантность
;
Rail = Rail + ' end end '
If Direct == 0 Then
; Обратное перемещение - вывернем маршрут "наизнанку"
repeat
MyX = GetWord( Rail, NStep )
MyY = GetWord( Rail, NStep + 1 )
If MyX <> 'end' AND MyY <> 'end' Then
RailBack = MyX + ' ' + MyY + ' ' + RailBack
Endif
NStep = NStep + 2
until MyX == 'end' OR MyY == 'end'
Rail = RailBack + 'end end '
Endif
;
NStep = 1
repeat
MyX = GetWord( Rail, NStep )
MyY = GetWord( Rail, NStep + 1 )
If MyX <> 'end' AND MyY <> 'end' Then
If GuardFlag == 1 Then
If UO.Life < MaxLife AND NOT UO.Dead() Then
UO.Say( 'GUARDS' )
wait(100)
Endif
Endif
UO.SetEasyUO( 4, tm )
UO.SetEasyUO( 3, toler )
UO.SetEasyUO( 2, MyY )
UO.SetEasyUO( 1, MyX )
repeat
wait( 50 )
until UO.GetEasyUO( 1 ) == '0'
NStep = NStep + 2
Else
return
Endif
until MyX == 'end' OR MyY == 'end'
return
endsub
Sub GetWord( st, nom )
; (c) Edred
; Возвращает слово из строки str за номером num
; если такого слова нет - возвращаем ''
;
; Разделителем слов считаем пробел. Несколько пробелов подряд считаются за один.
; Функция сделана без рекурсии специально для считывания слов из сверхдлинных строк!
;
VAR tmpst, i, dlin, kol = 0, start = 0
dlin = len( st )
For i=0 To dlin - 1
If mid( st, i, 1 ) == ' ' OR i == dlin - 1 Then
kol = kol + 1
If kol == nom Then
; это первый пробел после нужного нам слова
tmpst = mid( st, start, i - start )
return tmpst
Else
While mid( st, i, 1 ) == ' '
i = i + 1
Wend
If kol == nom - 1 Then
start = i
Endif
Endif
Endif
Next
tmpst = ''
return tmpst
endsub
Как использовать процедурку в скрипте? В принципе, в комментах написано. Но поясню на примере:
Code:
VAR tmprail = '1350 2828 1351 2827 1370 2827 1370 2820 1376 2814 1376 2804 1368 2804'
GotoRail( tmprail, 0, 1 )
переместит чара по данному маршруту в обратном порядке, бегом и обходя мелкие препятствия, если чара бьют - в узловых точках будет кричать гвардов.
Наслаждайтесь.
_________________
Ни один скрипт не работает? Пора обновить
Инжект...
Все работает, но хочется большего? Пора переходить на
стелс...