Перейти к контенту

Уроки по модостроению


Zeka1996Korneev

Рекомендуемые сообщения

(изменено)

Сложность:

средне.
Что потребуется: программа для снятия координат (Position Informer или любая другая), распаковщик-запаковщик all.spawn – ACDC конвертер от bardak’а, несколько файлов из ЗП.
Для начала снимаем координаты того места, где нужно поставить метку. Желательно снимать метку, находясь в центре нужного объекта. Записываем координаты x,y,z, level- и game-vertex'ы.
Распаковываем all.spawn необходимой версией распаковщика. Открываем блокнотом алайф.лтх нужной нам локации и в конце файла создаём секцию вида:
[номер, следующий за номером предыдущей секции]
; cse_abstract properties
section_name = space_restrictor
name = st_pri_b302
position = 135.845,16.680,219.551 ;подставляем нужные координаты
direction = 0,0,0

; cse_alife_object properties
game_vertex_id = 3764 ;пишем нужный гейм-вертекс
distance = 0
level_vertex_id = 340694 ;пишем нужный левел-вертекс
object_flags = 0xffffff3e
story_id = 16000 ;присваиваем стори_айди

; cse_shape properties
shapes = shape0
shape0:type = sphere
shape0:offset = 0,0,0
shape0:radius = 1

; cse_alife_space_restrictor properties
restrictor_type = 3

Стори_айди не должны повторяться, для этого открываем блокнотом файл game_story_ids.ltx – смотрим, каких цифр нет, и дописываем в конец файла все вновь присвоенные стори_айди по типу уже существующих. Очень большие числа не брать, достаточно предела 10000-15000, допустим, хватит для чего угодно.
В итоге в конце файла дописываем строки вида:

16000           = "st_pri_b306_name"

где число – это айди, в кавычках имя, в принципе можно ставить любое, названия меток у нас будут прямо в скрипте.
Далее открываем блокнотом файл level.tasks.script (gamedata/scripts…)
Видим там функцию:

function add_lchanger_location()
    local sim = alife()
    if sim then
        -- escape
        local obj = sim:story_object(91)
        if obj then
            level.map_add_object_spot(obj.id, "level_changer", "to_garbage")
        end…
-- и.т.д…
--    Для каждой нужной нам метки создаём секцию вида:
        local obj = sim:story_object(91) –- номер стори_айди метки
        if obj then
            level.map_add_object_spot(obj.id, "тип метки", "название метки, например Мост им. Преображенского")
        end…

Далее, по типам меток. В принципе, можно использовать стандартные ТЧ-метки.
Например:
crlc_big – большой белый круг;
crlc_mdl – средних размеров круг;
crlc_small – маленький кружок.
Но можно сделать метки объектов из ЗП. Для этого открываем блокнотом файлик map_spots.xml (config/ui) и дописываем перед финальным </map_spots> секцию вида:

<primary_object>
    <level_map spot="primary_object_spot"    pointer="quest_pointer"/>
</primary_object>
<primary_object_spot  x="0" y="0" width="15" height="15" alignment="c" scale="1" scale_min="1" scale_max="6" stretch="1">
    <texture x="0" y="585" width="205" height="205">ui\ui_actor_sleep_screen</texture>
</primary_object_spot>

Теперь можно тип метки указывать ”primary_object”.
Закидываем по адресу textures/ui файлик ui_actor_sleep_screen.dds из ЗП, заходим в игру, начинаем НИ и любуемся метками… Метки через данный способ будут отображаться постоянно.
Описал вроде всё, текстурку ui_actor_sleep_screen.dds берём из файлов ЗП.

 

Изменено пользователем World_Stalker
  • Полезно 1

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    Ни один зарегистрированный пользователь не просматривает эту страницу.

AMK-Team.ru

×
×
  • Создать...