Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Передвижения Чара И Обход Припятствий
wolter
сообщение 13.5.2008, 23:53
Сообщение #1


*

Registred
Сообщений: 1
Регистрация: 13.5.2008
Группа: Пользователи
Наличность: 0
Пользователь №: 10.751
Возраст: 25



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

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

чар при помощи этого скрипта ходит замечательно, но он не обходит препядствия, хотелось бы чтобы после каждого шага он проверял сдвинулся он с места или нет если нет то обходил припятсвия
как это сделать помогите, плиз
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
uslucifer
сообщение 28.5.2009, 6:25
Сообщение #2


*

Registred
Сообщений: 2
Регистрация: 9.3.2008
Группа: Пользователи
Наличность: 0
Пользователь №: 10.588
Возраст: 26



все просто процедура есть но в ней не реализаваны функции.
к томуже фактически этот скрипт при движениии по прямой, от точки к точке, и препятствием считается единичное дерево или высота в игре( бывает когда рубишь чуток западаешь в низ что не дает дигаться в нужную сторону) чара нужно просто сдернуть оратно и все ок, вот в чем функция процедуры обхода препятствий.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zhorzh
сообщение 29.5.2009, 8:54
Сообщение #3


***

Novice
Сообщений: 58
Регистрация: 2.5.2009
Группа: Пользователи
Наличность: 0
Пользователь №: 11.821



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

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

дык не проблема - давай алоритм проверки сдвинулся ли и обхода препятсвий, напишем. (IMG:style_emoticons/default/laugh.gif)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 15.5.2024, 8:53
Designed by Nickostyle