Space restrictor — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
RedPython (обсуждение | вклад) (:hhoorroorr:) |
|||
Строка 1: | Строка 1: | ||
==Начало== | ==Начало== | ||
---------------------------------------------------------- | ---------------------------------------------------------- | ||
− | Значит распаковываем алл.спавн с помощью ACDC...Распаковали. | + | Значит, распаковываем алл.спавн с помощью ACDC...Распаковали. |
− | Откроем,например,alife_l02_garbage.ltx. | + | Откроем, например, alife_l02_garbage.ltx. |
− | + | В самом конце допишем: | |
− | [2145] | + | <pre> |
− | + | [2145] | |
− | section_name = space_restrictor | + | ; cse_abstract properties |
− | name = sgm_kvest | + | section_name = space_restrictor |
− | position = 41.297409057617,0.44233170151711,-299.86953735352 | + | name = sgm_kvest |
− | direction = 0,0,0 | + | position = 41.297409057617,0.44233170151711,-299.86953735352 |
− | + | direction = 0,0,0 | |
− | game_vertex_id = 253 | + | |
− | distance = 0 | + | ; cse_alife_object properties |
− | level_vertex_id = 214760 | + | game_vertex_id = 253 |
− | object_flags = 0xffffff3e | + | distance = 0 |
− | custom_data = <<END | + | level_vertex_id = 214760 |
− | [logic] | + | object_flags = 0xffffff3e |
− | active = sr_idle | + | custom_data = <<END |
− | + | [logic] | |
− | [sr_idle] | + | active = sr_idle |
− | on_actor_inside = %+story_sgm_kvest2_3% | + | [sr_idle] |
− | + | on_actor_inside = %+story_sgm_kvest2_3% | |
− | END | + | END |
− | + | ||
− | + | ; cse_shape properties | |
− | shapes = shape0 | + | shapes = shape0 |
− | shape0:type = box | + | shape0:type = box |
− | 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 |
− | + | ; cse_alife_space_restrictor properties | |
− | restrictor_type = 3< | + | restrictor_type = 3 |
− | + | </pre> | |
− | + | ||
− | [2145] - порядковый номер | + | Где<br> |
− | section_name = space_restrictor - имя секции( | + | [2145] - порядковый номер<br> |
− | name = svalka_prikol - имя(задаём любое) | + | section_name = space_restrictor - имя секции (нам надо space_restrictor)<br> |
− | position = - позиции(место где будем спавнить его) | + | name = svalka_prikol - личное имя (задаём любое)<br> |
− | direction = - поворот рестриктра(не трогаем..) | + | position = - позиции (место, где будем спавнить его)<br> |
− | game_vertex_id = | + | direction = - поворот рестриктра (не трогаем...)<br> |
− | level_vertex_id = - | + | game_vertex_id = - геймвертекс <br> |
− | + | level_vertex_id = - левелвертекс <br> | |
− | + | ||
− | Примечание: | + | ''Примечание: координаты спавна, game_vertex_id и level_vertex_id можно получить с помощью следующей функции:''<br> |
− | координаты спавна, game_vertex_id и level_vertex_id можно получить с помощью функции:<br | + | <lua> |
− | < | + | function main_menu:OnButton_credits_clicked() |
− | function main_menu:OnButton_credits_clicked() | + | local text |
− | local text | + | local vid |
− | local vid | + | local gvid |
− | local gvid | + | local a = vector() |
− | local a = vector() | + | local text |
− | local text | + | a = db.actor:position() |
− | a = db.actor:position() | + | vid = db.actor:level_vertex_id() |
− | vid = db.actor:level_vertex_id() | + | |
gvid = db.actor:game_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 | + | 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) | + | news_manager.send_tip(db.actor, text, nil, nil, 30000) |
− | end< | + | end |
+ | </lua> | ||
+ | |||
+ | просто допишите её в ui_main_menu.script, в самом конце. | ||
+ | |||
+ | ==Логика== | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
===Выдача infoportions=== | ===Выдача infoportions=== | ||
− | + | Теперь логика для рестриктора: | |
− | < | + | |
− | [logic] | + | <pre> |
− | active = sr_idle | + | [logic] |
− | + | active = sr_idle | |
+ | |||
[sr_idle] | [sr_idle] | ||
− | on_actor_inside = %+имя инфопоршня% | + | on_actor_inside = %+имя инфопоршня% |
− | END | + | END |
− | < | + | </pre> |
− | С такой логикой рестриктор будет выдавать ГГ инфопоршень. | + | |
− | + | С такой логикой рестриктор будет выдавать ГГ инфопоршень. | |
+ | |||
===Эффекты выброса=== | ===Эффекты выброса=== | ||
− | < | + | |
− | [logic] | + | <pre> |
− | + | [logic] | |
− | active = sr_idle | + | active = sr_idle |
− | + | ||
− | [sr_idle] | + | [sr_idle] |
− | on_timer = 100000| %=start_small_reject% sr_idle2 | + | on_timer = 100000| %=start_small_reject% sr_idle2 |
− | + | ||
− | [sr_idle2] | + | [sr_idle2] |
− | on_timer = 100000| %=start_small_reject% sr_idle | + | on_timer = 100000| %=start_small_reject% sr_idle |
− | END< | + | END |
− | + | </pre> | |
− | + | ||
− | + | Такая логика будет запускать каждые 100 сек. эффекты выброса. | |
− | ===Проверка на наличие и выдача | + | |
− | < | + | ===Проверка на наличие и выдача infoportion=== |
− | [logic] | + | <pre> |
− | active = sr_idle | + | [logic] |
− | [sr_idle] | + | active = sr_idle |
− | on_actor_inside = {=имя_инфопоршня_3 +имя_инфопоршня_2} nil %+имя_инфопоршня_1% | + | |
− | END | + | [sr_idle] |
− | < | + | on_actor_inside = {=имя_инфопоршня_3 +имя_инфопоршня_2} nil %+имя_инфопоршня_1% |
− | {=имя_инфопоршня_3 +имя_инфопоршня_2} - это проверка(условие) что у ГГ есть нужный инфопоршень.Если есть,то рестриктор выдаст нужный инфопоршень. | + | END |
− | + | </pre> | |
+ | |||
+ | {=имя_инфопоршня_3 +имя_инфопоршня_2} - это проверка(условие) что у ГГ есть нужный инфопоршень.Если есть,то рестриктор выдаст нужный инфопоршень. | ||
+ | |||
==Shapes== | ==Shapes== | ||
− | Двигаем дальше.<br | + | Двигаем дальше.<br> |
− | shapes = тут вписываем названия шейпов<br | + | shapes = тут вписываем названия шейпов<br> |
− | Пример:< | + | |
− | shapes = shape0 | + | Пример: |
− | < | + | <pre> |
− | shape0:type = - это тип шейпа.Ставить или box,или sphere.<br | + | shapes = shape0 |
− | box - коробка<br | + | </pre> |
− | sphere - сфера<br | + | |
+ | shape0:type = - это тип шейпа. Ставить или box,или sphere.<br> | ||
+ | box - коробка<br> | ||
+ | sphere - сфера<br> | ||
+ | |||
+ | shape0:axis_x = ваша цифра,0,0<br> | ||
+ | shape0:axis_y = 0,ваша цифра,0<br> | ||
+ | shape0:axis_z = 0,0,ваша цифра<br> | ||
+ | - это размеры шейпа.<br> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
restrictor_type - тип рестриктра.<br /> | restrictor_type - тип рестриктра.<br /> | ||
− | + | Я везде ставлю restrictor_type = 3, поэтому сказать не могу на что влияет значение.<br /> | |
− | + | ||
Ну вот и всё.Думаю всё чётко и ясно.Будут вопросы обращайтесь.<br /> | Ну вот и всё.Думаю всё чётко и ясно.Будут вопросы обращайтесь.<br /> | ||
ПС: спасибо р-09 за объяснение некоторых моментов с логикой.<br /> | ПС: спасибо р-09 за объяснение некоторых моментов с логикой.<br /> | ||
− | |||
− | |||
− | Статью написал джЭдай,SGMTeam.<br | + | Статью написал: |
+ | '''джЭдай, SGMTeam.'''<br> | ||
Статью преобразовывал в вики (неправильный перенос строк, ошибки с отсутствием некоторых знаков, запись в категорию) - '''Rekongstor''' | Статью преобразовывал в вики (неправильный перенос строк, ошибки с отсутствием некоторых знаков, запись в категорию) - '''Rekongstor''' | ||
[[Категория:Скрипты]] | [[Категория:Скрипты]] |
Версия 13:37, 30 июня 2010
Содержание
Начало
Значит, распаковываем алл.спавн с помощью 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, в самом конце.
Логика
Выдача 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 = {=имя_инфопоршня_3 +имя_инфопоршня_2} nil %+имя_инфопоршня_1% END
{=имя_инфопоршня_3 +имя_инфопоршня_2} - это проверка(условие) что у ГГ есть нужный инфопоршень.Если есть,то рестриктор выдаст нужный инфопоршень.
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 - тип рестриктра.
Я везде ставлю restrictor_type = 3, поэтому сказать не могу на что влияет значение.
Ну вот и всё.Думаю всё чётко и ясно.Будут вопросы обращайтесь.
ПС: спасибо р-09 за объяснение некоторых моментов с логикой.
Статью написал:
джЭдай, SGMTeam.
Статью преобразовывал в вики (неправильный перенос строк, ошибки с отсутствием некоторых знаков, запись в категорию) - Rekongstor