Главная Тайные Тропы Регистрация

Вход

Приветствую Вас Гость | RSSСуббота, 20.04.2024, 09:50
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: antreg, dimos  
Форум » Школа моддинга » Уроки по модостроительству на конкретных примерах из ТТ2 » Как всё это было сделано ((уроки моддинга на примерах из ТТ2))
Как всё это было сделано
antregДата: Пятница, 18.02.2011, 16:38 | Сообщение # 1
Генерал-майор
Группа: Администраторы
Сообщений: 416
Репутация: 124
Статус: Offline
В этой теме будет выкладываться подробный разбор реализации тех или иных решений по созданию сюжетного мода на конкретных примерах из модификации "Тайные Тропы 2".

Вот небольшое руководство по некоторым скриптовым моментам:
http://rghost.ru/4767095
По всем остальным моментам - задавайте вопросы в теме "Вопросы-ответы" - ответим. И всё что знаем - разъясним обязательно и подробно.
В этой теме будут собираться и архивироваться наиболее важные и интересные решения по моддингу для ТЧ.
 
antregДата: Суббота, 26.02.2011, 09:22 | Сообщение # 2
Генерал-майор
Группа: Администраторы
Сообщений: 416
Репутация: 124
Статус: Offline
Спавн аномалий скриптовым методом без использования all.spawn, а соответственно без необходимости начинать новую игру:

1) Создаём в папке \gamedata\scripts скриптовый файл с любым именем, напрмер, anomaliya_spawn.script и заполняем этот файл следующим содержанием:

2) Всё, теперь остаётся вызвать функции спавна из диалога или из инфопоршня и три наши аномалии заспавнятся на заданных координатах в нужный игровой момент.
 
antregДата: Суббота, 26.02.2011, 09:45 | Сообщение # 3
Генерал-майор
Группа: Администраторы
Сообщений: 416
Репутация: 124
Статус: Offline
Спавн и удаление переходов между локациями скриптовым методом.

1) Спавн переходов:
Создаём в папке \gamedata\scripts скриптовый файл с любым именем, например, y_level.script и вписываем в него следующее:

2) Далее, в самый конец этого файла вписываем собственно функцию спавна перехода, которую потом надо будет вызвать либо из диалога либо из инфопоршня либо по какому-нибудь условию. Например, создадим двухсторонний переход в тайник Стрелка с Агропрома и обратно на Агропром:

--Обратите внимание, что название фашего скриптового файла необходимо ставить в функцию спавна. В представленном варианте - это y_level, у Вас может быть другое имя.
--Обратите внимание, что каждомому создаваемому переходу необходимо присвоить свой уникальный story_id и зарегистрировать его в файле: game_story_ids.ltx (путь: \gamedata\config ). В примере заданы для каждого из двух новых переходов стори_айди 20015 и 20016 соответственно. Важно, чтобы создаваемые стори_айди не повторяли уже существующие, иначе будет вылет. Лучше брать значения больше 20000, а лучше внимательно просмотреть существующие номера стори_айди в файле: game_story_ids.ltx
3) Кроме этого, чтобы переход отображался на карте и у него было название, необходимо прописать его в файл: level_tasks.script (путь: \gamedata\scripts) по аналогии с остальными и дать новому переходу название.
Вот так:
obj = sim:story_object(20015)
if obj then
level.map_add_object_spot(obj.id, "level_changer", "В Тайник Стрелка")
end
obj = sim:story_object(20016)
if obj then
level.map_add_object_spot(obj.id, "level_changer", "На Агропром")
end
Следите, чтобы в конце функции, в которую добавляете новые регистрации переходов (особенно, если добавляете в самый конец функции), обязательно было, как и изначально, три end
4) В функции спавна переходов выдаются инфопоршни. По одному на каждый создаваемый переход. Эти инфопоршни необходимо прописать в вашем файле с инфопоршнями. В примере это два инфопоршня: teleport_to_taynik и teleport_from_taynik
5) Чтобы заспавнить переход только в один конец, то действуем по аналогии, но сама функция спавна будет немного другой. Например, тайная тропа с Ростока на Армейские Склады:

6) В функции спавна переходов можно так же задать направление взгяда актёра, когда он оказывается в точке после перехода. Это задаётся в строке: vector():set( 0.0,2.0,0.0 ),"l07_military",0)
Имеет значение только вторая координата. Она задаёт как раз ориентацию на местности. Показатели очень просты: 0.0 (по умолчанию) это смотреть на север. -1.5 - это 45 градусов вправо (на восток). 3.0 - это 90 градусов (смотреть будет строго на юг). 1.5 - это 45 градусов влево (на запад).
7) Если нужно удалить какой-нибудь переход, то в том же файле вписывем функцию, где указываем стори_айди перехода, который нужно удалить. Пример:

Всё. Вызываем данную функцию из удобного для Вас места (диалог или инфопоршень) и переход исчезнет.
 
antregДата: Суббота, 26.02.2011, 19:59 | Сообщение # 4
Генерал-майор
Группа: Администраторы
Сообщений: 416
Репутация: 124
Статус: Offline
Скриптовый метод спавна спейс_рестриктора (space_restrictor) и работа с ним.

При создании сюжетного мода, обойтись без использования спейс_рестрикторов, практически невозможно. Масса сюжетных действий актёра и НПС происходят именно при помощи рестрикторов. раньше, создание рестрикторов было возможно только в аллспавне. А это, как известно, всегда новая игра и возможность гибкого написания сюжета весьма затруднена этим. Теперь есть возможность скриптовым методом создавать спейс_рестрикторы в любой удобный момент.
1) Создаём в папке \gamedata\scripts скриптовый файл с любым именем, например, my_restrictor.script и вписываем в него следующее:

2) Далее, в этом же файле (в самом конце файла) будем создавать функции спавна нужных нам спейс_рестрикторов, с последующим вызовом этих функций откуда угодно.
Пример номер один. Спавним рестриктор, в котором, при попадании в него актёра, должно произойти какое-то событие. Для примера взят рестриктор, созданный в Х-16, при попадании в который, спавнятся пауки.

Функция готова. Вызываем её в нужный нам момент, прописав в диалог или по какому-либо условию.
Далее, создаём ltx файл логики рестриктора, с указанным именем и по указанному в функции пути и пишем туда следующее:

В логике, при наличии инфопоршня potapov_first_dialog_start, вызывается функция спавна паука из скриптового файла: esc_graf.script
При установленном nil, инфопоршень сработает только один раз.
Точно так же, по аналогии, вместо активации функции, можно выдать просто какой-угодно инфопоршень для нужных вам целей.
В этом случае в логике рестриктора будет немного другая строка:

3) Пример 2. При попадании актёра в рестриктор, активируется какой-то звуковой эффект (или анимация, по выбору):

4) Пример 3. Более сложная логика рестриктора.

В данном примере логики рестриктора, при попадании в него актёра выдаётся два инфопоршня, звучит музыкальный фрагмент и включается следующая схема работы рестриктора, в которой:
1) Если актёр внутри рестриктора и находится там 5 секунд и есть нужный инфопоршень, то выдаётся ещё один нужный инфопоршень и активируется какая-нибудь нужная функция.
2) Если актёр до истечения 5 секунд покинул рестриктор, то удаляется ранее выданный инфопоршень.
Данный пример - это работа спейс_рестриктора в ТТ2 в саомом конце, когда формируются две разные концовки: замешкался - одна концовка, если вышел из рестриктора, то другая концовка ждёт актёра.

Далее. Другой вариант спавна спейс_рестриктора. В спейс_рестриктор должен попасть какой-нибудь нужный нам НПС.
Функция спавна рестриктора в этом случае будет выглядеть несколько иначе:

--Обратите внимание, что здесь в рестриктор вписывается стори_айди нашего НПС.
В данном случае это Лесник с номером story_id = 30159.
И при попадании в рестриктор с радиусом = 1 метр, выдаётся инфопоршень lesnik_mesto.
Далее всё по аналогии. Можно активировать функции, вставлять музыкальные фрагменты и т.д.
Создавать отдельный файл с логикой рестриктора в этом случае не надо. Всё прописывается в самой функции спавна рестриктора.
 
Форум » Школа моддинга » Уроки по модостроительству на конкретных примерах из ТТ2 » Как всё это было сделано ((уроки моддинга на примерах из ТТ2))
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2024Создать бесплатный сайт с uCoz