Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

UoKit.com Форумы _ UO Pilot в Ultima Online _ Передвижения Чара И Обход Припятствий

Автор: wolter 13.5.2008, 23:53

есть такой вот скрипт, все вы наверно его встречали

set #kudax charposx
set #kuday charposy
set #hide 1
set #trevoga 0 // пока не работает!!!
set #gotovo 0

// теперь процедура встает на паузу и ждет переназначения
// переменных из тела вашего макроса
pause_script

// Начинаем работу

// Описание принципов движения - схема koord.jpg
// Для передвижения чара необходимо проверить, чтобы
// клавиши Left, Right, Up, Down, Home, End, PgUp, PgDn
// не были забиндены для других действий!

// Особенности:
// 1. Перед любым движением вызывается процедура запоминания
// текущих координат чара. Это нужно для отлова ситуаций
// когда чар уперся в препятствие (сравнение координат чара
// до шага и после) - savepos
// 2. После каждого шага вызывается процедура проверки на хайд,
// если параметр "хайд" задан - то задается пауза и проверяется
// ластмессага на предмет "revealed". Если да, чар хайдится
// снова - hide
// 3. После этого вызывается процедура проверки на препятствие.
// Если координаты не изменились при движении - чар уперся.
// Кстати, проверить - в ряде случаев при движении первое движение
// в определенном направлении означает только поворот чара
// в нужном направлении. Надо отловить в каких случаях это происходит
// и задать для них дополнительно изменение направления чара перед
// движением. Идея: можно в savepos запоминать еще и направление
// ориентации чара. Если изменилось только это - чар не уперся.
// Если же чар и впрямь уперся - то вызываем процедуру обхода
// препятствий. Проверка - baffle, а обход препятствий - unblock

:nextstep

if (charposx = #kudax ) and ( charposy = #kuday )
// прибыли
set #gotovo 1
pause_script
end_if

// Расположение чара - Вариант 2
if charposx = #kudax
if charposy > #kuday
gosub savepos
send pageup
gosub hid
gosub baffle
goto nextstep
end_if
if charposy < #kuday
gosub savepos
send end
gosub hid
gosub baffle
goto nextstep
end_if
end_if

// Вариант 1
if charposy = #kuday
if charposx > #kudax
gosub savepos
send home
gosub hid
gosub baffle
goto nextstep
end_if
if charposx < #kudax
gosub savepos
send pagedown
gosub hid
gosub baffle
goto nextstep
end_if
end_if

// Вариант 3 и 4 - сводим к 1 и 2
if charposy < #kuday
if charposx < #kudax
gosub savepos
send down
gosub hid
gosub baffle
goto nextstep
else
gosub savepos
send left
gosub hid
gosub baffle
goto nextstep
end_if
else
if charposx < #kudax
gosub savepos
send right
gosub hid
gosub baffle
goto nextstep
else
gosub savepos
send up
gosub hid
gosub baffle
goto nextstep
end_if
end_if
// если добрались до сюда - я <вырезано анти-матом>
msg donkey!
set #gotovo 9
pause_script

:savepos
set #prevx charposx
set #prevy charposy
return

:hid
if #hide = 1
// Если мы в хайде - надо паузу между шагами
wait 1000
if lastmsg been revealed
send F3
wait 4000
end_if
end_if
return

:baffle
// процедура проверки на препятствие и обход его если уперлись.
return

чар при помощи этого скрипта ходит замечательно, но он не обходит препядствия, хотелось бы чтобы после каждого шага он проверял сдвинулся он с места или нет если нет то обходил припятсвия
как это сделать помогите, плиз

Автор: uslucifer 28.5.2009, 6:25

все просто процедура есть но в ней не реализаваны функции.
к томуже фактически этот скрипт при движениии по прямой, от точки к точке, и препятствием считается единичное дерево или высота в игре( бывает когда рубишь чуток западаешь в низ что не дает дигаться в нужную сторону) чара нужно просто сдернуть оратно и все ок, вот в чем функция процедуры обхода препятствий.

Автор: Zhorzh 29.5.2009, 8:54

Цитата(wolter @ 14.5.2008, 2:53) *

чар при помощи этого скрипта ходит замечательно, но он не обходит препядствия, хотелось бы чтобы после каждого шага он проверял сдвинулся он с места или нет если нет то обходил припятсвия
как это сделать помогите, плиз

дык не проблема - давай алоритм проверки сдвинулся ли и обхода препятсвий, напишем. laugh.gif

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)