Сейчас попробовал по тестировать это дело, и как оказывается в движке есть баг. critter_attempt_placement/override_map_start в map_enter_proc для игрока вообще не работают.
имеем такую конструкцию в скрипте карты.
| CODE |
|
map_enter_proc begin display_msg("map_enter:" + dude_tile); critter_attempt_placement(dude_obj, 20100, 0); display_msg("map_enter:" + dude_tile); end map_update_p_proc begin display_msg("map_update:" + dude_tile); end |
в логе у нас появляется такая последовательность:
| CODE |
|
"map_enter: 26000" //координаты захода на карту указанные в самой карте (стартовых координатах карты) "map_enter: 20100" //координаты куда переместился наш игрок - "map_update:" 20100" // ну да так и есть стоит там где надо "map_update:" 26000" // и тут БАЦ!!! что-то щелкнуло в движке, и игрока перекидывает обратно в стартовые координаты карты (или на координаты на которые указываю сетки перехода). |
critter_attempt_placement в маппере работает корректно только при первом заходе на карту, в самой игре нет.
critter_attempt_placement/override_map_start работает если их применять только в map_update.
это тесты для DUDE, для криттеров с critter_attempt_placement вроде проблем с этим нет.
а set_map_start вообще какой-то не рабочий что-ли (тупо не меняет координаты карты еще и в дебаг-логе ошибку выдает) или я не понял как и где его можно правильно применить.
Отправлено: 13 мая 17 18:25
Вот еще тест с использованием добавочного криттера.
| CODE |
|
map_enter_proc begin display_msg("Critter map_enter:" + dude_tile); end map_update_p_proc begin display_msg("Critter map_update:" + dude_tile); end |
скрипт карты тот-же только без critter_attempt_placement
Просто заходим на карту из другой карты на координаты 11000, лог такой:
| CODE |
|
"MAP map_enter: 26000" //стартовые координаты указанные в самой карте. "Critter map_enter: 26000" - "MAP map_update: 26000" "Critter map_update: 26000" //второй проход update "MAP map_update: 11000" //координаты указанные в сетке перехода из другой карты. "Critter map_update: 11000" |
Вот о чем я говорил, не можем получить в map_enter_proc координаты игрока при заходе на карту, также сразу не можем получить и в map_update_proc, а только со второго прохода.
Можно с этим что-то сделать, или это специфика работы такая? и нафига нужен этот двух проходный map_update может один удалить
а еще у криттеров обработчик start тоже всегда два раза под ряд выполняется.
И кстати заметил что стартовые координаты всегда открывают на авто-картах кусочек карты, как будто игрок там уже побывал видимо по причине того что игрок всегда заходит на стартовые координаты, а потом его перемещает куда нужно.
Это сообщение отредактировано Fakeman - 14 мая 2017 | 03:25













