Початок
Значить, розпаковуємо алл.спавн за допомогою 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 _ ; 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 = %+ 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 sha ; _ _ _ _ cse_alife_space_restrictor properties restrictor_type = 3
Де
[ 2145 ] - порядковий номер
. ) 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 = " ..ax. \ \ nY = " ..ay. \ \ nZ = " ..az. \\ 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 за пояснення деяких моментів з логікою.