Space restrictor — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
ДжЭдай (обсуждение | вклад) |
|||
(не показаны 26 промежуточные версии 13 участников) | |||
Строка 1: | Строка 1: | ||
− | + | ==Начало== | |
---------------------------------------------------------- | ---------------------------------------------------------- | ||
− | + | Значит, распаковываем алл.спавн с помощью ACDC...Распаковали. | |
− | Откроем,например,alife_l02_garbage.ltx. | + | Откроем, например, alife_l02_garbage.ltx. |
− | + | В самом конце допишем: | |
+ | <ini> | ||
[2145] | [2145] | ||
; cse_abstract properties | ; cse_abstract properties | ||
Строка 20: | Строка 21: | ||
[logic] | [logic] | ||
active = sr_idle | active = sr_idle | ||
− | |||
[sr_idle] | [sr_idle] | ||
on_actor_inside = %+story_sgm_kvest2_3% | on_actor_inside = %+story_sgm_kvest2_3% | ||
− | |||
END | END | ||
Строка 33: | Строка 32: | ||
shape0:axis_z = 0,0,6.5 | shape0:axis_z = 0,0,6.5 | ||
shape0:offset = 0,0,0 | shape0:offset = 0,0,0 | ||
− | |||
; cse_alife_space_restrictor properties | ; cse_alife_space_restrictor properties | ||
restrictor_type = 3 | restrictor_type = 3 | ||
− | + | </ini> | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | Где<br> | |
− | + | <code>[2145] - порядковый номер | |
− | + | section_name = space_restrictor - имя секции (нам надо space_restrictor) | |
− | + | name = svalka_prikol - личное имя (задаём любое) | |
− | + | position = - позиции (место, где будем спавнить его) | |
− | + | direction = - поворот рестриктра (не трогаем...) | |
− | + | game_vertex_id = - геймвертекс | |
− | + | level_vertex_id = - левелвертекс</code> | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | Если вы хотите сделать сферический space_restrictor, то вместо | |
− | + | <code>shape0:axis_x = 6.5,0,0 | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | shape0:axis_x = 6.5,0,0 | + | |
shape0:axis_y = 0,6.5,0 | shape0:axis_y = 0,6.5,0 | ||
shape0:axis_z = 0,0,6.5 | shape0:axis_z = 0,0,6.5 | ||
− | shape0:offset = 0,0,0 | + | shape0:offset = 0,0,0</code> |
+ | пишем: | ||
+ | <code>shape0:offset = 0,0,0 | ||
+ | shape0:radius = 44.6438484191895</code> | ||
− | + | ''Примечание: координаты спавна, game_vertex_id и level_vertex_id можно получить с помощью следующей функции:''<br> | |
− | + | <lua> | |
− | + | function main_menu:OnButton_credits_clicked() | |
− | + | if level.present() and (db.actor ~= nil) and db.actor:alive() then | |
− | + | local vid = db.actor:level_vertex_id() | |
− | + | local gvid = db.actor:game_vertex_id() | |
− | + | local a = db.actor:position() | |
− | + | local text = "Позиция:\\nX = "..a.x.."\\nY = "..a.y.."\\nZ = "..a.z.."\\nlevel_vertex_id = "..vid.."\\ngame_vertex_id = "..gvid | |
− | + | news_manager.send_tip(db.actor, text, nil, nil, 30000) | |
− | + | self:OnButton_return_game() | |
− | + | ||
− | + | ||
− | Примечание: | + | |
− | координаты спавна, game_vertex_id и level_vertex_id можно получить с помощью функции: | + | |
− | + | ||
− | function main_menu:OnButton_credits_clicked() | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | vid = db.actor:level_vertex_id() | + | |
− | gvid = db.actor:game_vertex_id() | + | |
− | text = "Позиция:\\nX= "..a.x.."\\nY= "..a.y.."\\nZ= "..a.z.."\\ | + | |
− | news_manager.send_tip(db.actor, text, nil, nil, 30000) | + | |
end | end | ||
+ | end | ||
+ | </lua> | ||
− | просто допишите её в ui_main_menu.script,в самом конце. | + | просто допишите её в ui_main_menu.script, в самом конце. |
− | + | ||
− | + | ==Логика== | |
− | + | ||
− | + | ===Выдача infoportions=== | |
− | + | Теперь логика для рестриктора: | |
+ | <ini> | ||
[logic] | [logic] | ||
active = sr_idle | active = sr_idle | ||
Строка 197: | Строка 82: | ||
on_actor_inside = %+имя инфопоршня% | on_actor_inside = %+имя инфопоршня% | ||
END | END | ||
+ | </ini> | ||
С такой логикой рестриктор будет выдавать ГГ инфопоршень. | С такой логикой рестриктор будет выдавать ГГ инфопоршень. | ||
− | |||
+ | ===Эффекты выброса=== | ||
+ | |||
+ | <ini> | ||
[logic] | [logic] | ||
− | |||
active = sr_idle | active = sr_idle | ||
Строка 211: | Строка 98: | ||
on_timer = 100000| %=start_small_reject% sr_idle | on_timer = 100000| %=start_small_reject% sr_idle | ||
END | END | ||
+ | </ini> | ||
− | + | Такая логика будет запускать каждые 100 сек. эффекты выброса. | |
− | + | ||
+ | ===Проверка на наличие и выдача infoportion=== | ||
+ | <ini> | ||
[logic] | [logic] | ||
active = sr_idle | active = sr_idle | ||
+ | |||
[sr_idle] | [sr_idle] | ||
− | on_actor_inside = { | + | on_actor_inside = {+test_condition} nil %+test_result% |
END | END | ||
+ | </ini> | ||
+ | |||
+ | ''{+test_condition}'' - это проверка (условие) наличия у ГГ инфопоршня ''test_condition''. Если у ГГ данный инфопоршень есть, то рестриктор выдаст новый инфопоршень (''test_result''). | ||
+ | |||
+ | ==Shapes== | ||
+ | Двигаем дальше.<br> | ||
+ | shapes = тут вписываем названия шейпов<br> | ||
− | |||
− | |||
− | |||
− | |||
Пример: | Пример: | ||
+ | <pre> | ||
shapes = shape0 | shapes = shape0 | ||
+ | </pre> | ||
− | shape0:type = - это тип шейпа.Ставить или box,или sphere. | + | <code>shape0:type = - это тип шейпа. Ставить или box,или sphere. |
box - коробка | box - коробка | ||
sphere - сфера | sphere - сфера | ||
− | shape0:axis_x = ваша цифра,0,0 | + | shape0:axis_x = ваша цифра,0,0 |
shape0:axis_y = 0,ваша цифра,0 | shape0:axis_y = 0,ваша цифра,0 | ||
shape0:axis_z = 0,0,ваша цифра | shape0:axis_z = 0,0,ваша цифра | ||
− | - размеры шейпа. | + | - это размеры шейпа. |
+ | |||
+ | restrictor_type - тип рестриктра.</code> | ||
+ | Про тип рестрикторов можно подробно посмотреть тут: [[Resrtictor type]].<br /> | ||
+ | Ну вот и всё.Думаю всё чётко и ясно.Будут вопросы обращайтесь.<br /> | ||
+ | ПС: спасибо р-09 за объяснение некоторых моментов с логикой.<br /> | ||
− | + | Статью написал: | |
+ | '''джЭдай, SGMTeam.'''<br> | ||
+ | Статью преобразовывал в вики (неправильный перенос строк, ошибки с отсутствием некоторых знаков, запись в категорию) - '''Rekongstor''' | ||
− | + | [[Категория:Конфигурационные файлы]] [[Категория:Скрипты]] | |
− | + | ||
− | + |
Текущая версия на 14:11, 21 декабря 2014
Содержание
Начало
Значит, распаковываем алл.спавн с помощью 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 = - левелвертекс
Если вы хотите сделать сферический space_restrictor, то вместо
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
пишем:
shape0:offset = 0,0,0
shape0:radius = 44.6438484191895
Примечание: координаты спавна, game_vertex_id и level_vertex_id можно получить с помощью следующей функции:
function main_menu:OnButton_credits_clicked() if level.present() and (db.actor ~= nil) and db.actor:alive() then local vid = db.actor:level_vertex_id() local gvid = db.actor:game_vertex_id() local a = db.actor:position() local text = "Позиция:\\nX = "..a.x.."\\nY = "..a.y.."\\nZ = "..a.z.."\\nlevel_vertex_id = "..vid.."\\ngame_vertex_id = "..gvid news_manager.send_tip(db.actor, text, nil, nil, 30000) self:OnButton_return_game() end end
просто допишите её в ui_main_menu.script, в самом конце.
Логика
Выдача infoportions
Теперь логика для рестриктора:
[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 сек. эффекты выброса.
Проверка на наличие и выдача infoportion
[logic] active = sr_idle [sr_idle] on_actor_inside = {+test_condition} nil %+test_result% END
{+test_condition} - это проверка (условие) наличия у ГГ инфопоршня test_condition. Если у ГГ данный инфопоршень есть, то рестриктор выдаст новый инфопоршень (test_result).
Shapes
Двигаем дальше.
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 - тип рестриктра.
Про тип рестрикторов можно подробно посмотреть тут: Resrtictor type.
Ну вот и всё.Думаю всё чётко и ясно.Будут вопросы обращайтесь.
ПС: спасибо р-09 за объяснение некоторых моментов с логикой.
Статью написал:
джЭдай, SGMTeam.
Статью преобразовывал в вики (неправильный перенос строк, ошибки с отсутствием некоторых знаков, запись в категорию) - Rekongstor