Случайная подборка модов
Пропавшая экспедиция
2.4
Paradise Lost
3.7
SGM 1.7: Geonezis Addon
4.0
Смерти Вопреки. Послушник
3.4
Кровавый закат 2
3.2
Ночь перед Рождеством
3.3
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
  • Страница 1 из 1
  • 1
Модератор форума: FanG, Аdmin, FantomICW, Overfirst  
Форум » S.T.A.L.K.E.R. Модификации » Помощь в моддинге » Скрипты, конфиги, логика, движок » [SoC] Телепортация через скрипт (Этот способ из ТТ2)
[SoC] Телепортация через скрипт
Российская Федерация  Stalker_Monstr
Пятница, 15.11.2013, 12:56 | Сообщение # 1
Статус:
Отмычка:
Сообщений: 194
Награды: 8
Регистрация: 30.01.2013

Обязательно, к прочтению:


Создаем скрипт, в него вставляем:
Цитата
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


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


Информация:


Функцию телепортации, можно вызывать любым способом.
Сообщение отредактировал Stalker_Monstr - Пятница, 15.11.2013, 12:58
  Злобная реклама
Пятница, 15.11.2013, 12:56
Статус:
Сообщений: 666
Регистрация: 30.01.2013
Российская Федерация  R0D23
Пятница, 15.11.2013, 13:01 | Сообщение # 2
Мертвый Путь 3
Статус:
Опытный:
Сообщений: 1491
Награды: 1
Регистрация: 23.06.2013

Смотри

И это еще.

что ты назвал "Хорошо"?
  Злобная реклама
Пятница, 15.11.2013, 13:01
Статус:
Сообщений: 666
Регистрация: 23.06.2013
Российская Федерация  Stalker_Monstr
Пятница, 15.11.2013, 13:04 | Сообщение # 3
Статус:
Отмычка:
Сообщений: 194
Награды: 8
Регистрация: 30.01.2013

R0D23, Тут бы не получилось, все под одну тему.
  Злобная реклама
Пятница, 15.11.2013, 13:04
Статус:
Сообщений: 666
Регистрация: 30.01.2013
Российская Федерация  R0D23
Пятница, 15.11.2013, 13:06 | Сообщение # 4
Мертвый Путь 3
Статус:
Опытный:
Сообщений: 1491
Награды: 1
Регистрация: 23.06.2013

Stalker_Monstr, в чем проблема?
Сделал один урок, отчеркнул линией и новый
  Злобная реклама
Пятница, 15.11.2013, 13:06
Статус:
Сообщений: 666
Регистрация: 23.06.2013
Российская Федерация  Stalker_Monstr
Пятница, 15.11.2013, 13:08 | Сообщение # 5
Статус:
Отмычка:
Сообщений: 194
Награды: 8
Регистрация: 30.01.2013

R0D23, Хорошо, следующие уроки - будет сделаны, строго по твоему совету.
  Злобная реклама
Пятница, 15.11.2013, 13:08
Статус:
Сообщений: 666
Регистрация: 30.01.2013
Российская Федерация  R0D23
Пятница, 15.11.2013, 13:09 | Сообщение # 6
Мертвый Путь 3
Статус:
Опытный:
Сообщений: 1491
Награды: 1
Регистрация: 23.06.2013

Stalker_Monstr, это не совет. Ты сказал в предыдущей теме что сделаешь что все уроки будешь делать в одной теме и вот делаешь новую тему
  Злобная реклама
Пятница, 15.11.2013, 13:09
Статус:
Сообщений: 666
Регистрация: 23.06.2013
Российская Федерация  strchi
Воскресенье, 08.12.2013, 01:41 | Сообщение # 7
Статус:
Опытный:
Сообщений: 2467
Награды: 13
Регистрация: 05.10.2012

cry Спасибо тебе, я так долго искал этот метод, только вот как сделать чтобы сначала (перед телепортацией) следовали удар и падение ГГ на землю?
  Злобная реклама
Воскресенье, 08.12.2013, 01:41
Статус:
Сообщений: 666
Регистрация: 05.10.2012
Российская Федерация  Stalker_Monstr
Воскресенье, 08.12.2013, 09:30 | Сообщение # 8
Статус:
Отмычка:
Сообщений: 194
Награды: 8
Регистрация: 30.01.2013

strchi, Нанеси хит через скрипт и прокрути эффект.
  Злобная реклама
Воскресенье, 08.12.2013, 09:30
Статус:
Сообщений: 666
Регистрация: 30.01.2013
Российская Федерация  strchi
Среда, 11.12.2013, 05:03 | Сообщение # 9
Статус:
Опытный:
Сообщений: 2467
Награды: 13
Регистрация: 05.10.2012

Извиняйте нуба но...
y_level.create_level_changer(20015, vector():set(293.04870605469,6.9405741691589,67.496566772461),1785536,4398
418002,
118,
Эти 4 числа что значат? Последние 2 это level id и vertex id, но первые два...?
  Злобная реклама
Среда, 11.12.2013, 05:03
Статус:
Сообщений: 666
Регистрация: 05.10.2012
Украина  BozKurt
Среда, 11.12.2013, 11:40 | Сообщение # 10
Статус:
Опытный:
Сообщений: 1753
Награды: 3
Регистрация: 25.05.2012

strchi, первые два числа - это левел и гейм вертексы для спавна самого перехода, а последние два числа - это тоже левел и гейм вертексы, только уже места назначения.
  Злобная реклама
Среда, 11.12.2013, 11:40
Статус:
Сообщений: 666
Регистрация: 25.05.2012
Казахстан  Max_Warlock
Среда, 11.12.2013, 12:38 | Сообщение # 11
Clear Sky - Remake
Статус:
Опытный:
Сообщений: 1552
Награды: 4
Регистрация: 18.01.2013

А можно такой же для ЧН? Всегда интересовался телепортацией на другой уровень.
  Злобная реклама
Среда, 11.12.2013, 12:38
Статус:
Сообщений: 666
Регистрация: 18.01.2013
Российская Федерация  Stalker_Monstr
Четверг, 12.12.2013, 14:56 | Сообщение # 12
Статус:
Отмычка:
Сообщений: 194
Награды: 8
Регистрация: 30.01.2013

Max_Warlock, В all.spawn'e есть точки, за пределами карты, которые могут перемещают ГГ на другие локации. Пример:
Цитата
[6797]
; cse_abstract properties
section_name = level_changer
name = mar_teloport_to_agr
position = 589.656860351563,1.99556005001068,-202.973937988281
direction = 0.00536799989640713,-0.000534999999217689,0.0993589982390404

; cse_alife_object properties
game_vertex_id = 238
distance = 4.19999980926514
level_vertex_id = 519716
object_flags = 0xffffff3e

; cse_shape properties
shapes = shape0
shape0:type = box
shape0:axis_x = 1.96840000152588,0,0
shape0:axis_y = 0,6.52600002288818,0
shape0:axis_z = 0,0,1.96840000152588
shape0:offset = 0,0,0

; cse_alife_space_restrictor properties
restrictor_type = 3

; cse_alife_level_changer properties
dest_game_vertex_id = 1068
dest_level_vertex_id = 357157
dest_position = 248.253326416016,26.470796585083,147.669708251953
dest_direction = 0,0,0
dest_level_name = agroprom
dest_graph_point = mar_teleport_to_agr_graph_point
silent_mode = 1

; se_level_changer properties
name = mar_teloport_to_agr -- Это значит, что телепортация идет с Болот на Агропром, эта телепортация тихая и была создана, для того что бы быстро передвигаться по локации.
  Злобная реклама
Четверг, 12.12.2013, 14:56
Статус:
Сообщений: 666
Регистрация: 30.01.2013
Российская Федерация  Pro100The-Best
Пятница, 23.01.2015, 20:16 | Сообщение # 13
Статус:
Зевака:
Сообщений: 7
Награды: 0
Регистрация: 06.10.2014

Спасибо. Очень помогло!
  Злобная реклама
Пятница, 23.01.2015, 20:16
Статус:
Сообщений: 666
Регистрация: 06.10.2014
Форум » S.T.A.L.K.E.R. Модификации » Помощь в моддинге » Скрипты, конфиги, логика, движок » [SoC] Телепортация через скрипт (Этот способ из ТТ2)
  • Страница 1 из 1
  • 1
Поиск: