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

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

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

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

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