Спавн телепортов через скрипт

Материал из Mod Wiki.

(Различия между версиями)
Перейти к: навигация, поиск
Версия 13:24, 11 августа 2007 (править)
Imp (Обсуждение | вклад)
(Новая: == Создаем телепорт == === Теория этого дела === В игре существует такой объект как "zone_teleport", но если мы его ...)
← К предыдущему изменению
Версия 13:25, 11 августа 2007 (править) (отменить)
Imp (Обсуждение | вклад)
(Реализация.)
К следующему изменению →
Строка 14: Строка 14:
Все с программной частью закончили, теперь задаем данные телепорта. Все с программной частью закончили, теперь задаем данные телепорта.
-В каталоге gamedata\config\misc открываем файл zone_teleport.ltx и в конце файла добавляем следующие строки описывающие конкретный телепорт:+В каталоге gamedata\config\misc открываем файл [[zone_teleport.ltx]] и в конце файла добавляем следующие строки описывающие конкретный телепорт:
[m_teleport_1]:zone_teleport [m_teleport_1]:zone_teleport

Версия 13:25, 11 августа 2007

Содержание

Создаем телепорт

Теория этого дела

В игре существует такой объект как "zone_teleport", но если мы его создадим через create, то он будет выглядеть и переливаться как настоящий телепорт, но телепортировать нас куда-либо увы не сможет. Связано это с тем что, у аномалий ( а телепорт это такая разновидность аномалии ) параметры задаються хитромудро через all.spawn. Вобщем штатным способом телепорты без полнофункционального редактора карт не получить (хотя возможно я не прав уже после написания этого текста появились идеи как это сделать через all.spawn). Значит на нашу долю остаються способы "не штатные" ;) Реализуем самый простой. Будем считать что у нас на карте есть квадрат с заданными координатами при попадании в который актера должно переместить в точку с другими координатами. Для этого будем периодически проверять координаты актера, и если он в квадрате - перемещяем. Вот в краце принцип действия нашего "самодельного" телепорта.

Реализация.

В каталоге gamedata\scripts\ Создадим файл bind_mteleport.script с логикой работы нашего телепорта.

Для постоянного обновления нужно прицепить функцию actor_update() к биндеру актера, для чего в файле bind_stalker.script найдем функцию: function actor_binder:update(delta)

В ней найдем вызов обновления рестрикторов bind_restrictor.actor_update(delta) под которым вставим строку с вызовом нашей функции обновления: bind_mteleport.actor_update(delta)

Все с программной частью закончили, теперь задаем данные телепорта. В каталоге gamedata\config\misc открываем файл zone_teleport.ltx и в конце файла добавляем следующие строки описывающие конкретный телепорт:

[m_teleport_1]:zone_teleport teleport = standart script_binding = bind_mteleport.bind

Параметры нашего телепорта

radius = 2

Высота захвата телепорта

z_radius = 2

Куда телепортируемся (телепортация всегда идет в пределах карты)

poz_x = 22.78 poz_y = 20.35 poz_z = 659.24

Угол зрения при появлении. Если параметра нет то не меняется.

rotate = 1.5

Параметры нашего телепорта: radius - на самом деле не радиус, а половина длинны стороны нашего квадрата (в начале я хотел сделать его кругом, но посчитал, что лучше не тратить процессорное врямя по пусту) Центром квадрата является точка респавна телепорта.

z_radius - высота нашего телепорта.

poz_x, poz_y, poz_z - координаты точки телепортации.

rotate - Угол поворота после телепортации от оси X (я не разбирался в каких единицах задается, но 1.5 примерно равно 90 градусов) Если параметр удалить то будет оставатья угол под которым актер вошел в телепорт.

Использование

Теперь с помощью create создадим наш телепорт: Пример: local obj local a = vector() a.x = -244.55 a.y = -19.46 a.z = -125.42 obj = alife():create("m_teleport_1",a,12829,8,65535) Создаст телепорт возле выхода из "бункера" Сидоровича. Наш телепорт перебрасывает нас в вышку блок-поста перед выходом с уровня.

Все! Вот тут http://www.imp.webhost.ru/stalker/ вы можете взять готовый мод с двумя телепортами. (не выкладываю прямую ссылку так как запрещено)


Желаю удачь в модостроении Imp.

Личные инструменты