Перейти к содержанию
Hardtmuth

[SoC] Телепортация через скрипт

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

 

[SoC] Телепортация через скрипт

Функция доступна только для Тень Чернобыля, в остальных сериях наблюдаются вылеты!

Создаем скрипт, в него вставляем:

Спойлер

function create_level_changer(
p_story_id, -- STORY_ID нового level_changer (понадобится нам позже)
p_position, -- вектор, координаты точки, в которой будет располагаться центр нового level_changer
p_lvertex_id, -- level_vertext_id - идентифицируют уровень, на котором будет создан level_changer
p_gvertex_id, -- game_vertext_id

p_dest_lv, -- level_vertex_id - идентифицируют уровень, на который level_changer будет перебрасывать игрока
p_dest_gv, -- game_vertex_id
p_dest_pos, -- координаты точки, в которой на новом уровне окажется игрок
p_dest_dir, -- направрение взгляда игрока
p_dest_level, -- название уровня, например "L11_Pripyat"
p_silent -- следует задать 1, чтобы подавить вопрос о смене уровня (автоматический переход)
)
local obj = alife():create("level_changer", p_position, p_lvertex_id, p_gvertex_id)

level.map_add_object_spot(obj.id, "level_changer", "")

local packet = net_packet()
obj:STATE_Write(packet)

-- свойства cse_alife_object
local game_vertex_id = packet:r_u16()
local cse_alife_object__unk1_f32 = packet:r_float()
local cse_alife_object__unk2_u32 = packet:r_u32()
local level_vertex_id = packet:r_u32()
local object_flags = packet:r_u32()
local custom_data = packet:r_stringZ()
local story_id = packet:r_u32()
local spawn_story_id = packet:r_u32()

-- свойства cse_shape
local shape_count = packet:r_u8()
for i=1,shape_count do
local shape_type = packet:r_u8()
if shape_type == 0 then
-- sphere
local center = packet:r_vec3()
local radius = packet:r_float()
else
-- box
local axis_x_x = packet:r_float()
local axis_x_y = packet:r_float()
local axis_x_z = packet:r_float()
local axis_y_x = packet:r_float()
local axis_y_y = packet:r_float()
local axis_y_z = packet:r_float()
local axis_z_x = packet:r_float()
local axis_z_y = packet:r_float()
local axis_z_z = packet:r_float()
local offset_x = packet:r_float()
local offset_y = packet:r_float()
local offset_z = packet:r_float()
end
end

-- свойства cse_alife_space_restrictor
local restrictor_type = packet:r_u8()

-- свойства cse_level_changer
local dest_game_vertex_id = packet:r_u16()
local dest_level_vertex_id = packet:r_u32()
local dest_position = packet:r_vec3()
local dest_direction = packet:r_vec3()
local dest_level_name = packet:r_stringZ()
local dest_graph_point = packet:r_stringZ()
local silent_mode = packet:r_u8()

packet:w_begin(game_vertex_id) -- game_vertex_id
packet:w_float(cse_alife_object__unk1_f32)
packet:w_u32(cse_alife_object__unk2_u32)
packet:w_u32(level_vertex_id) -- level_vertex_id
packet:w_u32( bit_not(193) ) -- object_flags = -193 = 0xFFFFFF3E
packet:w_stringZ(custom_data)
packet:w_u32(p_story_id) -- story_id
packet:w_u32(spawn_story_id)

packet:w_u8(1) -- количество фигур
-- packet:w_u8(0) -- тип фигуры: сфера
-- packet:w_vec3(vector():set(0, 0, 0)) -- sphere_center
-- packet:w_float(3.0)
packet:w_u8(1) -- тип фигуры: box
packet:w_float(2) -- axis_x_x
packet:w_float(0) -- axis_x_y
packet:w_float(0) -- axis_x_z
packet:w_float(0) -- axis_y_x
packet:w_float(4) -- axis_y_y
packet:w_float(0) -- axis_y_z
packet:w_float(0) -- axis_z_x
packet:w_float(0) -- axis_z_y
packet:w_float(4) -- axis_z_z
packet:w_float(0) -- offset_x
packet:w_float(0) -- offset_y
packet:w_float(0) -- offset_z

packet:w_u8(3) -- restrictor_type

packet:w_u16(p_dest_gv) -- destination game_vertex_id
packet:w_s32(p_dest_lv) -- destination level_vertex_id
packet:w_vec3(p_dest_pos) -- destination position
packet:w_vec3(p_dest_dir) -- destination direction (направление взгляда)
packet:w_stringZ(p_dest_level) -- destination level name
packet:w_stringZ("start_actor_02") -- some string, always const
packet:w_u8(p_silent) -- 1 for silent level changing

packet:r_seek(0)
obj:STATE_Read(packet, packet:w_tell())
level.add_pp_effector ("teleport.ppe", 2006, false)
end

 

Телепортация:

Функция телепортации:

function poleteli()
create_level_changer(20101, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(),
10193,
2437,
vector():set(66.210,15.040,4.250),
vector():set(0.0, 0.0, 0.0),
"l12u_sarcofag",
1)
end

Функция удаления:

function delete_poleteli() -- функция удаления(если нужно)
local sim = alife()
local se_obj = sim:story_object(20101)
if se_obj then
sim:release(se_obj, true)
end
local actor = db.actor
end

Информация:

20101 - STORY_ID нового level_changer
10193 - level_vertex_id
2437 - game_vertex_id
vector():set(66.210,15.040,4.250)
- координаты
vector():set(0.0, 0.0, 0.0) - направление взгляда актёра
"l12u_sarcofag" - название локации

Функцию телепортации, можно вызывать любым способом.

  • Спасибо 2

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


Ссылка на сообщение
Поделиться на другие сайты
 

.del

 

Изменено пользователем ScR1pt

ed1c85bd8aba2500209219c6df96c254.png |  Verge                                                                            

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


Ссылка на сообщение
Поделиться на другие сайты
 
В 21.07.2020 в 22:38, Hardtmuth сказал:

Функция доступна только для Тень Чернобыля

А что, в ЧН и ЗП телепорты делаются не скриптами, а как-то по-другому? Как?


294404326_-1.png.b174b8675b96f1eea9aed038584779b1.png

                    Паблик ВК       

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


Ссылка на сообщение
Поделиться на другие сайты
 

 

9 минут назад, Stepan_sovok1917 сказал:

А что, в ЧН и ЗП телепорты делаются не скриптами, а как-то по-другому? Как?

через all.spawn.

В ТЧ все телепорты тоже там прописаны.

По моему мнению вся эта тягомотина со скриптами того не стоит. Легче всё делать через спавн, а ещё легче через СДК(кто умеет). А вообще, лучше всего, скачать правленныq exe-шник с включенной функцией jump_to_level.


Внимание! Ищу любые фиксы/исправления для оригинального ТЧ.

Спойлер

Или людей, которые желают помочь с этим делом.

 

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


Ссылка на сообщение
Поделиться на другие сайты
 
1 час назад, oleg19966 сказал:

через all.spawn.

Уффф... Понятия не имею, что это. Буду изучать.

 

1 час назад, oleg19966 сказал:

а ещё легче через СДК

А вот это уже звучит вкусно. Распишешь поподробнее?

 

1 час назад, oleg19966 сказал:

jump_to_level

Слышал про такую фишку в билдах. Но она же вроде о телепортах между локациями. А я говорю про телепорты в пределах одной локации


294404326_-1.png.b174b8675b96f1eea9aed038584779b1.png

                    Паблик ВК       

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


Ссылка на сообщение
Поделиться на другие сайты
 
1 час назад, Stepan_sovok1917 сказал:

А вот это уже звучит вкусно. Распишешь поподробнее?

Вбивай в гугле уроки по sdk и учись.

 

1 час назад, Stepan_sovok1917 сказал:

Слышал про такую фишку в билдах. Но она же вроде о телепортах между локациями. А я говорю про телепорты в пределах одной локации

Если нужно в пределах одной локации, то тогда разблокировать перемещение с помощью demo_record. В билдах с его помощью можно перемещаться в любую точку на карте, даже под карту можно)))

 


Внимание! Ищу любые фиксы/исправления для оригинального ТЧ.

Спойлер

Или людей, которые желают помочь с этим делом.

 

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


Ссылка на сообщение
Поделиться на другие сайты
 
12 часов назад, oleg19966 сказал:

Если нужно в пределах одной локации, то тогда разблокировать перемещение с помощью demo_record. В билдах с его помощью можно перемещаться в любую точку на карте, даже под карту можно)))

А, ну это телепорты во время игрового процесса. А я сейчас занят разработкой мода в специфическом жаре, где будет очень много телепортов во время диалога с персонажем, причём желательно без выкидывания из диалога. Такое можно сделать через сдк?


294404326_-1.png.b174b8675b96f1eea9aed038584779b1.png

                    Паблик ВК       

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


Ссылка на сообщение
Поделиться на другие сайты
 

Stepan_sovok1917 тогда только через скрипт. Смотри скрипты проводников в ЧН и ЗП + моды для ТЧ.


Внимание! Ищу любые фиксы/исправления для оригинального ТЧ.

Спойлер

Или людей, которые желают помочь с этим делом.

 

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


Ссылка на сообщение
Поделиться на другие сайты
 

oleg19966 Хорошо, большое спасибо за информацию


294404326_-1.png.b174b8675b96f1eea9aed038584779b1.png

                    Паблик ВК       

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


Ссылка на сообщение
Поделиться на другие сайты
 
В 17.01.2021 в 00:05, oleg19966 сказал:

тогда разблокировать перемещение с помощью demo_record

Это в конфиге движка делается?

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


Ссылка на сообщение
Поделиться на другие сайты
 

Alex Kireev да.


Внимание! Ищу любые фиксы/исправления для оригинального ТЧ.

Спойлер

Или людей, которые желают помочь с этим делом.

 

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


Ссылка на сообщение
Поделиться на другие сайты
 

Что то почитал.Так нефига не понял.А как выбрать какую кнопу назначить для полёта.

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


Ссылка на сообщение
Поделиться на другие сайты
 

WARHAMER1977 так это телепорт же? Но можно и полет сделать, если нужно, но толково назначить на кнопку в обычном тч это навряд ли.


76561198152189716.png

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


Ссылка на сообщение
Поделиться на другие сайты
 
В 15.03.2023 в 05:16, ian98 сказал:

WARHAMER1977 так это телепорт же? Но можно и полет сделать, если нужно, но толково назначить на кнопку в обычном тч это навряд ли.

Да всё сделал.И кнопу как переназначить.Подсказали вумные люди.

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


Ссылка на сообщение
Поделиться на другие сайты
 

WARHAMER1977 и все в оригинальном движке? Ты прямов игре по кнопке, какой хоч, летаешь в оригинальном тч? А как?

Изменено пользователем ian98

76561198152189716.png

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


Ссылка на сообщение
Поделиться на другие сайты
 

ian98 http://stalkerin.gameru.net/wiki/index.php?title=Назначение_скриптам_горячих_кнопок._Часть_3.

Есть еще способ повесить на tab, на апдейте ловится статик активного задания. Но наверно он поставил себе моддвижок, кто сейчас будет такими извращениями заниматься

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


Ссылка на сообщение
Поделиться на другие сайты
 

Всё верно через scripts там два текстовые исправил ну где и три править надо.Букву меняешь.На какую хочешь.


Дополнено 17 минуты спустя
21 час назад, ian98 сказал:

WARHAMER1977 и все в оригинальном движке? Ты прямов игре по кнопке, какой хоч, летаешь в оригинальном тч? А как?

Так файлы править на букву надо.На ютубе находил.Там 3 архива скачиваешь.Там или ТЧ или ЗП закидываешь.И на V нажал и полетел.Просто если вникнуть так понять не сложно.Я умею править.Так быстро понял.

Изменено пользователем WARHAMER1977

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


Ссылка на сообщение
Поделиться на другие сайты
 

oleg19966 насчет demo_record. А какой файл движка за это отвечает? Или может знаешь где его взять?

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


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу