Space restrictor — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
ДжЭдай (обсуждение | вклад) |
|||
Строка 244: | Строка 244: | ||
Статью написал джЭдай,SGMTeam. | Статью написал джЭдай,SGMTeam. | ||
+ | |||
+ | [Категория:Скрипты] |
Версия 13:05, 21 февраля 2010
space restrictor
значит распаковываем алл.спавн с помощью ACDC...Распаковали. Откроем,например,alife_l02_garbage.ltx. в самом конце допишем:
[2145]
- cse_abstract properties
section_name = space_restrictor name = sgm_kvest position = 41.297409057617,0.44233170151711,-299.86953735352 direction = 0,0,0
- cse_alife_object properties
game_vertex_id = 253 distance = 0 level_vertex_id = 214760 object_flags = 0xffffff3e custom_data = <<END [logic] active = sr_idle
[sr_idle] on_actor_inside = %+story_sgm_kvest2_3%
END
- cse_shape properties
shapes = shape0 shape0:type = box shape0:axis_x = 6.5,0,0 shape0:axis_y = 0,6.5,0 shape0:axis_z = 0,0,6.5 shape0:offset = 0,0,0
- cse_alife_space_restrictor properties
restrictor_type = 3
где: [2145] - порядковый номер; section_name = space_restrictor - имя секции(HаM надо space_restrictor); name = svalka_prikol - имя(задаём любое); position = - позици(место где будем спавнить его); direction = - поворот рестриктра(не трогаем..); game_vertex_id = гейм вертекс; level_vertex_id = - левел вертекс;
Примечание: координаты спавна, game_vertex_id и level_vertex_id можно получить с помощью функции:
function main_menu:OnButton_credits_clicked() local text local vid local gvid local a = vector() local text a = db.actor:position() vid = db.actor:level_vertex_id() gvid = db.actor:game_vertex_id() text = "Позиция:\\nX= "..a.x.."\\nY= "..a.y.."\\nZ= "..a.z.."\\nlevel_vertex= "..vid.."\\ngame_vertex_id= "..gvid news_manager.send_tip(db.actor, text, nil, nil, 30000) end
просто допишите её в ui_main_menu.script,в самом конце.
object_flags = не трогаем (оставим 0xffffff3e) custom_data = не трогаем (тоесть оставляем <<END )
теперь логика для рестриктра:
[logic] active = sr_idle
[sr_idle] on_actor_inside = %+имя инфопоршня% END
С такой логикой рестриктор будет выдавать ГГ инфопоршень.
[logic]
active = sr_idle
[sr_idle] on_timer = 100000| %=start_small_reject% sr_idle2
[sr_idle2] on_timer = 100000| %=start_small_reject% sr_idle END
такая логика будет запускатькаждые 100 сек,эффекты выброса.
[logic] active = sr_idle [sr_idle] on_actor_inside = {=имя_инфопоршня_3 +имя_инфопоршня_2} nil %+имя_инфопоршня_1% END
{=имя_инфопоршня_3 +имя_инфопоршня_2} - это проверка(условие) что у ГГ есть нужный инфопоршень.Если есть,то рестриктор выдаст нужный инфопоршень.
Двигаем дальше. shapes = тут вписываем названия шейпов Пример: shapes = shape0
shape0:type = - это тип шейпа.Ставить или box,или sphere. box - коробка sphere - сфера
shape0:axis_x = ваша цифра,0,0 shape0:axis_y = 0,ваша цифра,0 shape0:axis_z = 0,0,ваша цифра - размеры шейпа.
restrictor_type - тип рестриктра.
я везде ставлю restrictor_type = 3,поэтому сказать не могу на что влияет значение. Ну вот и всё.Думаю всё чётко и ясно.Будут вопросы обращайтесь. ПС: спасибо р-09 за обьяснение некоторых моментов с логикой.
space restrictor
значит распаковываем алл.спавн с помощью ACDC...Распаковали. Откроем,например,alife_l02_garbage.ltx. в самом конце допишем:
[2145]
- cse_abstract properties
section_name = space_restrictor name = sgm_kvest position = 41.297409057617,0.44233170151711,-299.86953735352 direction = 0,0,0
- cse_alife_object properties
game_vertex_id = 253 distance = 0 level_vertex_id = 214760 object_flags = 0xffffff3e custom_data = <<END [logic] active = sr_idle
[sr_idle] on_actor_inside = %+story_sgm_kvest2_3%
END
- cse_shape properties
shapes = shape0 shape0:type = box shape0:axis_x = 6.5,0,0 shape0:axis_y = 0,6.5,0 shape0:axis_z = 0,0,6.5 shape0:offset = 0,0,0
- cse_alife_space_restrictor properties
restrictor_type = 3
где: [2145] - порядковый номер section_name = space_restrictor - имя секции(ман надо space_restrictor ) name = svalka_prikol - имя(задаём любое) position = - позици(место где будем спавнить его) direction = - поворот рестриктра(не трогаем..) game_vertex_id = гейм вертекс level_vertex_id = - левел вертекс
Примечание: координаты спавна, game_vertex_id и level_vertex_id можно получить с помощью функции:
function main_menu:OnButton_credits_clicked() local text local vid local gvid local a = vector() local text a = db.actor:position() vid = db.actor:level_vertex_id() gvid = db.actor:game_vertex_id() text = "Позиция:\\nX= "..a.x.."\\nY= "..a.y.."\\nZ= "..a.z.."\\nlevel_vertex= "..vid.."\\ngame_vertex_id= "..gvid news_manager.send_tip(db.actor, text, nil, nil, 30000) end
просто допишите её в ui_main_menu.script,в самом конце.
object_flags = не трогаем (оставим 0xffffff3e) custom_data = не трогаем (тоесть оставляем <<END )
теперь логика для рестриктра:
[logic] active = sr_idle
[sr_idle] on_actor_inside = %+имя инфопоршня% END
С такой логикой рестриктор будет выдавать ГГ инфопоршень.
[logic]
active = sr_idle
[sr_idle] on_timer = 100000| %=start_small_reject% sr_idle2
[sr_idle2] on_timer = 100000| %=start_small_reject% sr_idle END
такая логика будет запускатькаждые 100 сек,эффекты выброса.
[logic] active = sr_idle [sr_idle] on_actor_inside = {=имя_инфопоршня_3 +имя_инфопоршня_2} nil %+имя_инфопоршня_1% END
{=имя_инфопоршня_3 +имя_инфопоршня_2} - это проверка(условие) что у ГГ есть нужный инфопоршень.Если есть,то рестриктор выдаст нужный инфопоршень.
Двигаем дальше. shapes = тут вписываем названия шейпов Пример: shapes = shape0
shape0:type = - это тип шейпа.Ставить или box,или sphere. box - коробка sphere - сфера
shape0:axis_x = ваша цифра,0,0 shape0:axis_y = 0,ваша цифра,0 shape0:axis_z = 0,0,ваша цифра - размеры шейпа.
restrictor_type - тип рестриктра.
я везде ставлю restrictor_type = 3,поэтому сказать не могу на что влияет значение. Ну вот и всё.Думаю всё чётко и ясно.Будут вопросы обращайтесь. ПС: спасибо р-09 за обьяснение некоторых моментов с логикой.
Статью написал джЭдай,SGMTeam.
[Категория:Скрипты]