Вопросы и ответы по скриптам и редактору Alien Shooter 2, часть 3
Автор: zmpeter 01.07.2009 14:28
Предыдущие части находится здесь:Первая часть: Вопросы и ответы по скриптам и редактору Alien Shooter 2, часть 1.
Вторая часть: Вопросы и ответы по скриптам и редактору Alien Shooter 2, часть 2.
28)
Q: Некоторые виды у меня не отображаются в редакторе, как их посмотреть?
A: Список скрытых видов можно посмотреть так: menu->Options->Options. Появляется список видов. Те виды, которые выделены - не отрисовываются в редакторе. Все виды из списка можно выделять мышкой, аналогично можно снимать выделение. Выделить или снять выделение для группы однотипных объектов можно при помощи галок в группе Hide (All, Dummy, Terrains и т.д.). Например, если нужно, чтобы не отрисовывались все Dummy, нужно поставить галку Dummy.
29)
Q: У меня не работает генератор монстров.
A: Примеры ошибок с генераторами монстров:
1) генератор монстров 908(616,3044) не работает совсем потому что первой коммандой у него стоит ACT_STOP_STACK.
поэтому стека всё-равно что нет. ACT_STOP_STACK в стеке должен стоять перед первой командой ACT_MOVE.
2) генератор монстров 908 (8255,2914) работает некорректно, потому что прямо в том месте, что он стоит на карте по ошибке очень большой gridZ (высота грида). У первых двух монстров разброс выставлен достаточный, чтобы всё-таки суметь родиться, а вот у третьего монстра разброс такой, что он всё время пытается родиться в гриде, соответственно его родить не получается и весь процесс стопорится. Соответственно этот большой gridz надо убрать. Для того, чтобы такие баги было хорошо видно в будущем, в движке Zombie Shooter 2 я стал рожать монстров из генераторов не на высоте генератора, а на высоте грида (если она больше, чем z генератора). При этом монстры по корявому рожаются на этом "холмике" и никуда не могут идти, но зато причину бага сразу видно.
30)
Q: А что такое gridZ?
A: gridZ - это высота грида в текущей точке уровня. Говоря простыми словами gridZ - это высота уровня в данной конкретной точке уровня. К генератору монстров она никакого отношения не имеет. Если нажать в редакторе Shift+O, то грид начинает отрисовываться серыми линиями.
gridZ в карте не хранится, он пересчитывается каждый раз после загрузки карты. На пустом чистом уровне - gridZ везде равен нулю - то есть чистая ровная поверхность. Если посавить любой объект у которого есть свойство P_BuildSizeToGridZ или свойство P_BuildVidZToGridZ, то этот новый объект будет "влиять" на gridZ. То есть при пересчете gridZ в начале уровня, в том месте, где стоит этот объект, будет уже не ровная плоская поверхность на высоте ноль, а "возвышение" определенных размеров (в зависимости от того, каких размеров сам vid объекта).
За gridZ'ом надо следить, иначе герой будет постоянно ходить и втыкаться в невидимые препятствия.
31)
Q:Чем отличаются свойства объектов P_BuildSizeToGridZ и P_BuildVidZToGridZ?
A:P_BuildSizeToGridZ - при встраивании объект встраивает в gridZ свои размеры ,прописанные в objects.ini.
P_BuildVidZToGridZ - при встраивании объект встраивает в gridZ размеры самого отрендеренного вида.
32)
Q: Я понял, ошибка из-за gridZ. А как исправить-то?
A: Как можно исправить приведенный выше пример:
а) найти объект, из-за которого в данной точке карты большой gridZ;
б) принять решение, что сделать с объектом: сделать его невстраиваемым в gridZ или удалить его.
в) чтобы сделать его невстраиваемым - надо удалить у него свойства P_BuildSizeToGridZ и P_BuildVidZToGridZ (это могут только разработчики). Однако также надо проследить, что у него MaxHP = 0 (иногда случайно бывает, что не ноль), иначе он будет убиваемым.
г) при удалении объекта надо помнить, что gridZ пересчитывается только при загрузке карты, так что до если зачем-то нужно чтобы в редакторе изчез gridZ от только что удаленного объекта, то нужно сохранить карту и перезагрузить её
33)
Q: А как я могу узнать какой грид у данного объекта?
A: посмотреть, что у него стоит в objects.ini (но он доступен только разработчикам). Если стоит P_BuildSizeToGridZ либо P_BuildVidZToGridZ (описание этих свойств смотри выше), то объект встраивается в gridZ. В редакторе же никак не посмотреть.
34)
Q: Как узнать из какого именно объекта данный грид?
A: Посмотреть, какие объекты стоят рядом с ненужным возвышением в gridZ, попробовать догадаться, какой объект даёт его, обычно это сразу видно. посмотреть в objects.ini, есть ли у этого объекта свойство P_BuildSizeToGridZ либо P_BuildVidZToGridZ. Если нет таких свойств, тогда нужно искать другой объект. Через редактор никак не посмотреть, какой именно объект даёт gridZ.
35)
Q: Очень хочется поправить значения в файле objects.ini. Неужели никак нельзя? Ну очень хочется!
A: objects.ini есть только у разработчиков. А у обычных игроков есть файл objects.res - это objects.ini в бинарном формате. Если действительно очень хочется, то можно править его, но для этого надо обладать определенными умениями.