Правила сайта FAQ Мини-чат
Для добавления необходима авторизация!
11.12.2016, Воскресенье, 03:13


Страница 1 из 11
Форум » S.T.A.L.K.E.R. - Моддинг » Разбираем S.T.A.L.K.E.R. » Уроки моддинга » Создаем телепорт - SoC (Все о телепортах в ТЧ)
Создаем телепорт - SoC
Сообщение #1
Создание телепорта в ТЧ




В следующем уроке мы рассмотрим пример создания телепортов через скрипт.
Веселый Роджер
Уважение: 479
Награды: 80
Сообщение #2
Цитата Frankenshtayn
4. direction = 0,0,0 это «направление взгляда» нашего телепорта (0,0,0, - на север)

Изменяя данные координаты можно разворачивать плоскость телепорта куда угодно по горизонтали, вертикали и вокруг собственной оси. Полный разворот на 360 градусов соответствует 6 единицам.
Например, если указать координаты 0,-1.5,0 то "лицо" телепорта развернется вокруг своей вертикальной оси по часовой стрелке на 90 градусов.
Однако, не следует забывать и вот об этой части секции телепорта:
; cse_shape properties
shapes = shape0
shape0:type = sphere
shape0:offset = 0,0,0
shape0:radius = 2.5

Здесь видно, что он представляет собой сферу и если в строке шейп0 все координаты стоят равные 0, то сфера имеет правильную форму. При изменении их можно достичь получения ее разнообразной формы. К сожалению, визуально это не будет заметно, так как внешний вид телепорта задается другой секцией, при спавне которой мы и видим его изображение, которое собственно и "крутим-вертим" как нам удобно - это визуал телепорта, появляющегося в игре.
Например:

[960]
; cse_abstract properties
section_name = zone_teleport
name = teleport_visual
position = 134.899993896484,5.5,-51.5
direction = 1.5,0,0

; cse_alife_object properties
game_vertex_id = 2245
distance = 10
level_vertex_id = 75918
object_flags = 0xffffff3e

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

; cse_alife_space_restrictor properties
restrictor_type = 3

; cse_alife_custom_zone properties
max_power = 0

; cse_alife_anomalous_zone properties
offline_interactive_radius = 30
artefact_spawn_count = 32
artefact_position_offset = 0xa12b

Располагать логичнее на тех же координатах, что и сам телепорт, и "привинчивать" ту же ориентацию, что и у его невидимой "активной" части.



Такой как есть
Уважение: 285
Награды: 48
Сообщение #3
Телепорт через скрипт

Внимание! Данный телепорт действует только в пределах одной локации!!!


Итак, создадим телепорт для ТЧ через скрипт.
Что для этого надо? Немногое:

1.
По пути gamedata\scripts\ создадим скриптовый файл с именем bind_mteleport.script и в этот файл помещаем следующее:


2.
Чтобы наш телепорт работал необходимо прицепить функцию actor_update() к биндеру актера, для чего в файле bind_stalker.script найдем функцию:
function actor_binder:update(delta)
В ней найдем вызов обновления рестрикторов bind_restrictor.actor_update(delta) под которым вставим строку с вызовом нашей функции обновления: bind_mteleport.actor_update(delta)

т.е. оригинальный биндер актора выглядит так:


а так должен выглядеть правленный:



3.

Далее, открываем файл zone_teleport.ltx по пути gamedata\config\misc и в самый конец его вставляем:

Код
[m_teleport_1]:zone_teleport     
teleport   = standart
script_binding           = bind_mteleport.bind
;Параметры нашего телепорта
radius    = 1
;Высота захвата телепорта
z_radius   = 1

;Куда телепортируемся (телепортация всегда идет в пределах карты)
poz_x    = 106.72
poz_y    = 18.09
poz_z    = 169.16
; Угол зрения при появлении. Если параметра нет то не меняется
rotate = 3.8


это секция нашего телепорта

[m_teleport_1] - имя нашего телепорта(для каждого создаваемого телепорта должно быть свое)

poz_x = 106.72
poz_y = 18.09
poz_z = 169.16
--координаты куда происходит телепортация

4.

Далее создадим любой скриптовый файл, ну например ddd.script и в этот файл помещаем функцию спавна нашего телепорта:

Код
function spawn_perebros()
alife():create("m_teleport_1",vector():set(-90.52,1.23,-37.37),119023,321)
end


где:
spawn_perebros название функции(для каждого создаваемого телепорта свое)
m_teleport_1 имя телепорта в файле zone_teleport.ltx
(-90.52,1.23,-37.37),119023,321) координаты,левел и гейм вертексы точки спавна нашего телепорта

5.

Ну и последнее. Надо как-то вызвать наш телепорт. Для этого можно такую конструкцию:

Код
<action>ddd.spawn_perebros</action>

где
ddd - имя скриптового файла с нашей функцией спавна телепорта
spawn_perebros - имя нашей функции

например, вставить в любой диалог, любому НПС и после диалога с ним появится наш телепорт по заданным координатам (-90.52,1.23,-37.37),119023,321)
Веселый Роджер
Уважение: 479
Награды: 80
Сообщение #4
Frankenshtayn, а можно расписать поподробнее пятый пункт (Телепорт через скрипт), пытаюсь установить на Локации Кордон, но при диалоге с Сидоровичем ни чего не происходит, дополните пожалуста инструкцию по вызову скрипта на примере Сидоровича.
Вольный сталкер
Уважение: 161
Награды: 26
Облучение: 20%
Сообщение #5
filoret, Конструкцию наверно вставили не туда/не в тот диалог.
Куда вставляли? Если вставляли.

Уважение: 477
Награды: 88
Облучение: 0%
Сообщение #6
volazar, потому и пишу вопрос, т.к. не знаю куда ее прописать, "тыкаю" ее куда угодно и бесталку. Сейчас установлено: ТЧ 1.0004+НС+допа+ОПП+ЧШ, вот и хочу что-бы после диалога с Сидоровичем, например после получения ремкомплекта, он выдавал их и открывался самопальный телепорт.
Если идти пошагово по инструкции от Frankenshtayn:
1.В моей сборке уже присутствует;
2.В моей сборке уже присутствует;
3.Создаю свой телепорт

т.е. точка приземления на северном блок-посту
4. создал файл по инструкции ddd.script

т.е. телепорт создается прямо у выхода из бункера Сидоровича
5. <action>ddd.spawn_perebros</action> -- хочу прописать Сидоровичу

Frankenshtayn, спасибо за помощь, но как я понял, Вы привели пример на all.spawn(не) и увязали ее с подземкой агропрома, я пока с этим не работаю, почему и пытаюсь пока разобраться со скриптами и похоже удалось.
Т.к. уже на Кордоне образовался у меня Фанат и веток диалогов у него мало, я данную конструкцию привязал к нему. После обращения: «И что у Вас тут интересного?» и окончания диалога, сработал телепорт. Вот что мне нужно было:
D:\Program Files (x86)\GSC World Publishing\S.T.A.L.K.E.R\gamedata\config\gameplay\dialogs_escape.XML

Отлично сработали точки телепорта и его телепортация на северный блок-пост Кордона.


Сейчас новая проблема))), а как его сделать разовым, что-бы после использования он ликвидировался.

Ну если я, т.е мы с Frankenshtayn, включили телепорт, значит будем его вместе отключать.
Создаем новый скрипт файл например: ddd_del.SCRIPT


Опять прописываем в диалог Фанату отключение телепорта: <action>ddd_del.del_tele_lov</action>

И на заданный ему вопрос: «А что ты думаешь о ЗОНЕ?» и его диалога, телепорт отключится.
Конечно, можно бы было вообще дописать диалог Фанату вкл./выкл. телепорта, но это уже уроки моддингаот volazar – «создание диалогов».

Внимание!. Данный телепорт делался на сборке: ТЧ 1.0004+НС+допа+ОПП+(ЧШ), и координаты могут не совпать с другими сборками, лучше их устанавливать самостоятельно.

Сообщение отредактировал filoret - Пятница, 12.07.2013, 17:51

Вольный сталкер
Уважение: 161
Награды: 26
Облучение: 20%
Сообщение #7
filoret, Ну, гадая что и как ты делал, ничего путного не посоветуем... А вообще вот посмотри:
(пропустим шаг 1 и 2, т.к. если правильно понимаю, здесь все в порядке)
шаг з:

шаг4:

Профиль непися с диалогом:

Сам диалог с экшеном:

Вот результат:


Все это проделано буквально за 20 минут, и все работает. Из этого значит, что ты где-то ошибся... где?... Отгадать не могу... Проверяй все свои файлы, при отрицательном результате, выложи сюда свои правки, попробуем помочь.
Веселый Роджер
Уважение: 479
Награды: 80
Сообщение #8
Цитата (filoret)
спасибо за помощь, но как я понял, Вы привели пример на all.spawn(не) и увязали ее с подземкой агропрома, я пока с этим не работаю

filoret, эээ... Или мы не понимем друг друга, или Вы невнимательно просмотрели скрины... Там аллспавн вообще не упомянут... На первом скрине - секция телепорта в zone_teleport.ltx, на втором скрине - функция спавна этого телепорта скриптовым методом в скрипте fr_tm.script, на третьем скрине я показал, что диалог о появлении телепорта зарегестрирован в профиле НПС, ну а на четвертом - сам диалог с экшеном....
Цитата (filoret)
Отлично сработали точки телепорта и его телепортация на северный блок-пост Кордона.

Замечательно! Значит правильно и в нужное место вставлен экшен.
Цитата (filoret)
Сейчас новая проблема))), а как его сделать разовым, что-бы после использования он ликвидировался.

Удалить его можно так:
вызвать в нужный момент любым доступным способом функцию:
Код
function del_tele_lov()
for a=10,65634,1 do
local obj=alife():object(a)
if obj and string.find(obj:name(),"kordon_teleport_1") then
alife():release(obj,true)
end
end
end
Веселый Роджер
Уважение: 479
Награды: 80
Сообщение #9
Телепорт через скрипт

Телепорт с возможностью телепортации ГГ на другую локацию

Для телепортации ГГ на другую локацию создадим скриптовый файл, например abc.script и в него вставляем такой код:

Небольшое пояснение:
Функции телепортации и удаления телепорта должны лежать в одном скрипте с нетпакетом(в данном примере в abc.script)
20101 - сид нашего телепорта регестрируем в game_story_ids.ltx В общем все просто, вызываем функцию my_tele_start() и происходит телепортация на выбранную Вами локацию(естественно нужно не ошибиться с координатами и вертексами), затем необходимо удалить данный телепорт, т.к. он остается на своем месте, и в следующи раз в него можно "нечаянно вляпаться" и опять телепортироваться. Для его удаления вызываем удобным для Вас способом функцию delete_my_tele() и телепорт удалится.
Веселый Роджер
Уважение: 479
Награды: 80
Сообщение #10
Привет всем. Скопировал сдесь и хотел опробовать (Телепорт через скрипт). У меня происходит вылет при загрузке игры(тч 10004 - без модов.) все файлы прилагаю подскажите может что то упустил?




Хотел собрать телепорт появляющися после диалога, а он не заработал((((. Кому не трудно подскажите что нужно править.

Сообщение отредактировал Giznyhvatit - Среда, 13.11.2013, 19:36

Сообщение #11
Giznyhvatit, Вылет говорит об ошибке (скорей всего синтаксис) в файле bind_mteleport.
Выложи сам файл, посмотрим.

Уважение: 477
Награды: 88
Облучение: 0%
Сообщение #12
Цитата volazar ()
Вылет говорит об ошибке (скорей всего синтаксис) в файле bind_mteleport.

Володя, если в этом скрипте у Giznyhvatit, больше ничего нет, то ошибки быть не должно(то что показано под спойлером - без ошибок, проверил чекером, да и сравнил на всякий случай со своим рабочим))... А кроме синтаксической ошибки в bind_mteleport, такой вылет может говорить только об отсутствии этого скрипта...
А вообще ты прав - хотелось бы посмотреть файлы...
Веселый Роджер
Уважение: 479
Награды: 80
Сообщение #13
привет, все файлы в спойлерах <_< , то что в спойлерах вставлял в свои файлы. У меня вопрос, какие файлы отвечают за телепорт и все что с ним связано? рестриктор в алл.спавне не нужен?
Сообщение отредактировал Giznyhvatit - Вторник, 22.10.2013, 23:04

Сообщение #14
Приветствую, Сергей! Ну, не знаю, этот вылет(причем при загрузке!!!) может быть в двух случаях:
Цитата volazar ()
Вылет говорит об ошибке (скорей всего синтаксис) в файле bind_mteleport.

или
Цитата Frankenshtayn ()
вылет может говорить только об отсутствии этого скрипта...

в других случаях(если ошибка где-то "дальше") , вылет скорее всего происходил бы при диалоге.
ЗЫ... А при НИ есть вылет?
Веселый Роджер
Уважение: 479
Награды: 80
Сообщение #15
Цитата Giznyhvatit ()
У меня вопрос, какие файлы отвечают за телепорт и все что с ним связано? рестриктор в алл.спавне не нужен?

Нет... аллспавн не нужен
А файлы... Вот все подробно расписано(100% рабочее!)
http://stalker-gamers.ru/forum/10-240-1450-16-1334345945
Веселый Роджер
Уважение: 479
Награды: 80
Сообщение #16
Спасибо за помощь! очень помогли!!!

офтоп

Сообщение отредактировал Giznyhvatit - Вторник, 22.10.2013, 23:44

Форум » S.T.A.L.K.E.R. - Моддинг » Разбираем S.T.A.L.K.E.R. » Уроки моддинга » Создаем телепорт - SoC (Все о телепортах в ТЧ)
Страница 1 из 11
Поиск: