Space restrictor — различия между версиями — S.T.A.L.K.E.R. Inside Wiki

Space restrictor — различия между версиями

Материал из S.T.A.L.K.E.R. Inside Wiki

Перейти к: навигация, поиск
 
(не показаны 24 промежуточных версий 12 участников)
Строка 1: Строка 1:
space restrictor
+
==Начало==
 
----------------------------------------------------------
 
----------------------------------------------------------
значит распаковываем алл.спавн с помощью ACDC...Распаковали.
+
Значит, распаковываем алл.спавн с помощью 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>
где:
+
[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()
+
Где<br>
local text
+
<code>[2145] - порядковый номер
local vid
+
section_name = space_restrictor - имя секции (нам надо space_restrictor)
local gvid
+
name = svalka_prikol - личное имя (задаём любое)
local a = vector()  
+
position = - позиции (место, где будем спавнить его)
local text
+
direction = - поворот рестриктра (не трогаем...)
a = db.actor:position()  
+
game_vertex_id = - геймвертекс
vid = db.actor:level_vertex_id()  
+
level_vertex_id = - левелвертекс</code>
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,в самом конце.
+
Если вы хотите сделать сферический space_restrictor, то вместо
----------------------------------------------------------
+
<code>shape0:axis_x = 6.5,0,0
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_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>
  
; cse_alife_space_restrictor properties
+
''Примечание: координаты спавна, game_vertex_id и level_vertex_id можно получить с помощью следующей функции:''<br>
restrictor_type = 3
+
<lua>
----------------------------------------------------------
+
function main_menu:OnButton_credits_clicked()
где:
+
if level.present() and (db.actor ~= nil) and db.actor:alive() then
[2145] - порядковый номер
+
local vid = db.actor:level_vertex_id()
section_name = space_restrictor - имя секции(ман надо space_restrictor )
+
local gvid = db.actor:game_vertex_id()
name = svalka_prikol - имя(задаём любое)
+
local a = db.actor:position()
position = - позици(место где будем спавнить его)
+
local text = "Позиция:\\nX = "..a.x.."\\nY = "..a.y.."\\nZ = "..a.z.."\\nlevel_vertex_id = "..vid.."\\ngame_vertex_id = "..gvid
direction = - поворот рестриктра(не трогаем..)
+
news_manager.send_tip(db.actor, text, nil, nil, 30000)
game_vertex_id = гейм вертекс
+
self:OnButton_return_game()
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
 
end
 +
end
 +
</lua>
  
просто допишите её в ui_main_menu.script,в самом конце.
+
просто допишите её в ui_main_menu.script, в самом конце.
----------------------------------------------------------
+
 
object_flags = не трогаем (оставим 0xffffff3e)
+
==Логика==
custom_data = не трогаем (тоесть оставляем <<END )
+
----------------------------------------------------------
+
теперь логика для рестриктра:
+
  
 +
===Выдача 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 сек,эффекты выброса.
+
Такая логика будет запускать каждые 100 сек. эффекты выброса.
----------------------------------------------------------
+
  
 +
===Проверка на наличие и выдача infoportion===
 +
<ini>
 
[logic]
 
[logic]
 
active = sr_idle
 
active = sr_idle
 +
 
[sr_idle]
 
[sr_idle]
on_actor_inside = {=имя_инфопоршня_3 +имя_инфопоршня_2} nil %+имя_инфопоршня_1%
+
on_actor_inside = {+test_condition} nil %+test_result%
 
END
 
END
 +
</ini>
 +
 +
''{+test_condition}'' - это проверка (условие) наличия у ГГ инфопоршня ''test_condition''. Если у ГГ данный инфопоршень есть, то рестриктор выдаст новый инфопоршень (''test_result'').
 +
 +
==Shapes==
 +
Двигаем дальше.<br>
 +
shapes = тут вписываем названия шейпов<br>
  
{=имя_инфопоршня_3 +имя_инфопоршня_2} - это проверка(условие) что у ГГ есть нужный инфопоршень.Если есть,то рестриктор выдаст нужный инфопоршень.
 
----------------------------------------------------------
 
Двигаем дальше.
 
shapes = тут вписываем названия шейпов
 
 
Пример:
 
Пример:
 +
<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 - тип рестриктра.
+
  
я везде ставлю restrictor_type = 3,поэтому сказать не могу на что влияет значение.
+
restrictor_type - тип рестриктра.</code>
Ну вот и всё.Думаю всё чётко и ясно.Будут вопросы обращайтесь.
+
Про тип рестрикторов можно подробно посмотреть тут: [[Resrtictor type]].<br />
ПС: спасибо р-09 за обьяснение некоторых моментов с логикой.
+
Ну вот и всё.Думаю всё чётко и ясно.Будут вопросы обращайтесь.<br />
 +
ПС: спасибо р-09 за объяснение некоторых моментов с логикой.<br />
  
Статью написал джЭдай,SGMTeam.
+
Статью написал:
 +
'''джЭдай, 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

Другие места
LANGUAGE