<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://stalkerin.gameru.net/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://stalkerin.gameru.net/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=178.44.189.10&amp;*</id>
		<title>S.T.A.L.K.E.R. Inside Wiki - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://stalkerin.gameru.net/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=178.44.189.10&amp;*"/>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/178.44.189.10"/>
		<updated>2026-04-30T09:57:12Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.22.6</generator>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_ACDC</id>
		<title>Работа с ACDC</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_ACDC"/>
				<updated>2011-08-19T20:27:29Z</updated>
		
		<summary type="html">&lt;p&gt;178.44.189.10: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Сегодня мы разберем основу работы с ACDC. Но... для начала небольшое отступление.&lt;br /&gt;
Вы зададите вопрос, почему же лучше работать с '''ACDC''', нежели чем с '''xrSpawner'''? Отвечаю: xrSpawner, при всех его преимуществах, имеет множество более значительных минусов. Во первых, xrSpawner не определяет не '''game_vertex''', ни '''level_vertex'''. А также он измеряет только позицию. Я думаю, работающие с xrSpawner замечали, что порой обьекты, которые они спаунят, не всегда появляются на месте. Или вообще не появляются. Потому что - повторяю - xrSpawner не определяет вертексы, т.е. точную позицию и распределение по АИ-сетке. Итак, начнём работу!&lt;br /&gt;
&lt;br /&gt;
У нас есть программа ACDC, руки и мозги в голове. Кладём '''all.spawn''' в папку '''utils''' и жмём на батник &amp;quot;распаковка&amp;quot;. Итак, all.spawn распакован! Видим файлы '''alife_***''' и '''way_***'''. В файлах alife_*** только обьекты, которые спаунятся. А в way_*** только пути. Я думаю с алайфом всё понятно. Разберем way. Пути. Путь это и есть путь. По которому может двигаться живой обьект. Сейчас мы это рассмотрим.&lt;br /&gt;
&lt;br /&gt;
Для начала устроим текстовый беспредел:)&lt;br /&gt;
&lt;br /&gt;
Найдём файл '''alife_l01_escape''', а в нём примерно такие строки:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[869]&lt;br /&gt;
; cse_abstract properties&lt;br /&gt;
section_name = actor&lt;br /&gt;
name = level_prefix_actor_0001&lt;br /&gt;
s_rp = 0&lt;br /&gt;
position = -139.449829101563,-29.6908683776855,-351.492797851563&lt;br /&gt;
direction = 0,0.00895109120756388,0&lt;br /&gt;
s_flags = 0x29&lt;br /&gt;
&lt;br /&gt;
[dont_spawn_character_supplies]&lt;br /&gt;
&lt;br /&gt;
[spawn]&lt;br /&gt;
wpn_binoc&lt;br /&gt;
novice_outfit&lt;br /&gt;
device_torch&lt;br /&gt;
END&lt;br /&gt;
&lt;br /&gt;
; cse_visual properties&lt;br /&gt;
visual_name = actors\hero\stalker_novice&lt;br /&gt;
&lt;br /&gt;
; cse_alife_creature_abstract properties&lt;br /&gt;
g_team = 0&lt;br /&gt;
g_squad = 0&lt;br /&gt;
g_group = 0&lt;br /&gt;
health = 1&lt;br /&gt;
dynamic_out_restrictions = &lt;br /&gt;
dynamic_in_restrictions = &lt;br /&gt;
&lt;br /&gt;
upd:health = 1&lt;br /&gt;
upd:timestamp = 0x75732029&lt;br /&gt;
upd:creature_flags = 0x70&lt;br /&gt;
upd:position = -139.449829101563,-29.6908683776855,-351.492797851563&lt;br /&gt;
upd:o_model = 0&lt;br /&gt;
upd:o_torso = 0.00895109120756388,0,-0.999959945678711&lt;br /&gt;
upd:g_team = 0&lt;br /&gt;
upd:g_squad = 0&lt;br /&gt;
upd:g_group = 0&lt;br /&gt;
&lt;br /&gt;
; cse_alife_trader_abstract properties&lt;br /&gt;
money = 40&lt;br /&gt;
trader_flags = 0&lt;br /&gt;
character_profile = actor&lt;br /&gt;
&lt;br /&gt;
; cse_ph_skeleton properties&lt;br /&gt;
&lt;br /&gt;
; cse_alife_creature_actor properties&lt;br /&gt;
&lt;br /&gt;
upd:actor_state = 0xd20&lt;br /&gt;
upd:actor_accel_header = 0&lt;br /&gt;
upd:actor_accel_data = 0&lt;br /&gt;
upd:actor_velocity_header = 0&lt;br /&gt;
upd:actor_velocity_data = 0&lt;br /&gt;
upd:actor_radiation = 0&lt;br /&gt;
upd:actor_weapon = 110&lt;br /&gt;
upd:num_items = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Для начала расщедримся:)&lt;br /&gt;
&lt;br /&gt;
Припишем актору в ''[dont_spawn_character_supplies]'' такие строки:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[spawn]&lt;br /&gt;
[dont_spawn_character_supplies]&lt;br /&gt;
&lt;br /&gt;
[spawn]&lt;br /&gt;
wpn_binoc&lt;br /&gt;
wpn_vintorez&lt;br /&gt;
ammo_9x39_pab9 = 20&lt;br /&gt;
wpn_usp&lt;br /&gt;
ammo_11.43x23_hydro = 22&lt;br /&gt;
novice_outfit&lt;br /&gt;
device_torch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Получится, что мы подарим Меченому при начале игры Винторез, 600 патронов к нему, пистолет USP и 420 патронов к нему.&lt;br /&gt;
Так. Теперь Меченый у нас будет крутым рэмбо:)&lt;br /&gt;
Теперь ещё и подарим ему денежек:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
; cse_alife_trader_abstract properties&lt;br /&gt;
money = 40&lt;br /&gt;
trader_flags = 0&lt;br /&gt;
character_profile = actor&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
В строке ''money'' напишем любое число. Тока астрономические не надо (не проверял).&lt;br /&gt;
Ну, теперь Меченый не только рэмбо, но и миллионер:).&lt;br /&gt;
&lt;br /&gt;
Теперь займемся кординатами. У нас они такие: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
position = -139.449829101563,-29.6908683776855,-351.492797851563&lt;br /&gt;
direction = 0,0.00895109120756388,0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Это наши позиция и дирекция.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
; cse_alife_object properties&lt;br /&gt;
game_vertex_id = 19    ;тот самый вертекс на игре&lt;br /&gt;
distance = 0.699999988079071&lt;br /&gt;
level_vertex_id = 111256    ;вертекс на уровне&lt;br /&gt;
object_flags = 0xffffffbf&lt;br /&gt;
custom_data = &amp;lt;&amp;lt;END&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
А теперь пропишем туда такие кординаты:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
position = -167.232299804688,-25.4363708496094,-354.692901611328&lt;br /&gt;
direction = 0,-0.365248799324036,0&lt;br /&gt;
&lt;br /&gt;
; cse_alife_object properties&lt;br /&gt;
game_vertex_id = 0&lt;br /&gt;
distance = 0.699999988079071&lt;br /&gt;
level_vertex_id = 82413&lt;br /&gt;
object_flags = 0xffffffbf&lt;br /&gt;
custom_data = &amp;lt;&amp;lt;END&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
upd:health = 1&lt;br /&gt;
upd:timestamp = 0x75732029&lt;br /&gt;
upd:creature_flags = 0x70&lt;br /&gt;
upd:position = -167.232299804688,-25.4363708496094,-354.692901611328&lt;br /&gt;
upd:o_model = 0&lt;br /&gt;
upd:o_torso = -0.365248799324036,0,0.930909931659698&lt;br /&gt;
upd:g_team = 0&lt;br /&gt;
upd:g_squad = 0&lt;br /&gt;
upd:g_group = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь игра начнётся в здании блокпоста на 2 этаже:).&lt;br /&gt;
С этим мы закончим.&lt;br /&gt;
&lt;br /&gt;
Теперь создадим нового НПС:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[871]&lt;br /&gt;
; cse_abstract properties&lt;br /&gt;
section_name = stalker&lt;br /&gt;
name = esc_bridge_soldier1&lt;br /&gt;
position =  -133.27989196777,-30.146812438965,-372.0263671875&lt;br /&gt;
direction = 0.028013030067086,0,0.9996075630188&lt;br /&gt;
&lt;br /&gt;
; cse_alife_trader_abstract properties&lt;br /&gt;
money = 5000&lt;br /&gt;
character_profile = esc_soldier_regular&lt;br /&gt;
&lt;br /&gt;
; cse_alife_object properties&lt;br /&gt;
game_vertex_id = 20&lt;br /&gt;
distance = 16.1000003814697&lt;br /&gt;
level_vertex_id = 118083&lt;br /&gt;
object_flags = 0xffffffbf&lt;br /&gt;
custom_data = &amp;lt;&amp;lt;END&lt;br /&gt;
[logic]&lt;br /&gt;
active = walker&lt;br /&gt;
&lt;br /&gt;
[walker]&lt;br /&gt;
path_walk = hodim_dvor&lt;br /&gt;
END&lt;br /&gt;
&lt;br /&gt;
; cse_visual properties&lt;br /&gt;
visual_name = actors\soldier\soldier_bandana_3&lt;br /&gt;
&lt;br /&gt;
; cse_alife_creature_abstract properties&lt;br /&gt;
g_team = 0&lt;br /&gt;
g_squad = 1&lt;br /&gt;
g_group = 2&lt;br /&gt;
health = 1&lt;br /&gt;
dynamic_out_restrictions = &lt;br /&gt;
dynamic_in_restrictions = &lt;br /&gt;
&lt;br /&gt;
upd:health = 1&lt;br /&gt;
upd:timestamp = 0&lt;br /&gt;
upd:creature_flags = 0&lt;br /&gt;
upd:position = -133.27989196777,-30.146812438965,-372.0263671875&lt;br /&gt;
upd:o_model = 0&lt;br /&gt;
upd:o_torso = 0.028013030067086,0,0.9996075630188&lt;br /&gt;
upd:g_team = 0&lt;br /&gt;
upd:g_squad = 1&lt;br /&gt;
upd:g_group = 2&lt;br /&gt;
&lt;br /&gt;
; cse_alife_monster_abstract properties&lt;br /&gt;
&lt;br /&gt;
upd:next_game_vertex_id = 65535&lt;br /&gt;
upd:prev_game_vertex_id = 65535&lt;br /&gt;
upd:distance_from_point = 0&lt;br /&gt;
upd:distance_to_point = 0&lt;br /&gt;
&lt;br /&gt;
; cse_alife_human_abstract properties&lt;br /&gt;
predicate5 = 1,2,2,1,2&lt;br /&gt;
predicate4 = 0,1,1,1&lt;br /&gt;
&lt;br /&gt;
; cse_ph_skeleton properties&lt;br /&gt;
&lt;br /&gt;
upd:start_dialog = &lt;br /&gt;
&lt;br /&gt;
; se_stalker properties&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так вот он наш друг НПС - солдат на блокпосте:)&lt;br /&gt;
Тут уже знакомы строки. Позиция, дирекция, вертексы... Но есть кое что новое:)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[logic]&lt;br /&gt;
active = walker&lt;br /&gt;
&lt;br /&gt;
[walker]&lt;br /&gt;
path_walk = hodim_dvor&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Элементарная логика НПС. ''hodim_dvor'' - это путь, по которому будет ходить НПС. НПС есть, всё готово. Но путя то у нас нет:)&lt;br /&gt;
Создадим его в файле '''way_l01_escape'''. Припишем вот такие строчки:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[hodim_dvor]&lt;br /&gt;
points = p0,p1&lt;br /&gt;
p0:name = name00&lt;br /&gt;
p0:position = -120.44634246826,-30.15016746521,-363.68786621094&lt;br /&gt;
p0:game_vertex_id = 24&lt;br /&gt;
p0:level_vertex_id = 132887&lt;br /&gt;
p0:links = p1(1)&lt;br /&gt;
&lt;br /&gt;
p1:name = name01    ;номер точки&lt;br /&gt;
p1:position = -132.61611938477,-30.142726898193,-363.87365722656 - только позиция &lt;br /&gt;
p1:game_vertex_id = 19    ;вертекс на игре&lt;br /&gt;
p1:level_vertex_id = 118862    ;вертекс на уровне&lt;br /&gt;
p1:links = p0(1)    ;на какую точку после этой перейдёт НПС (тут он будет ходить туда-сюда, если не написать линкс, то он остановится&lt;br /&gt;
на месте.)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Всё! Вгоняем в '''way_***''' эти строки (тока мои коментарии  писать не надо).&lt;br /&gt;
Всё готово, можно тестить изменения :_))))). Как снимать координаты и работать с '''PI''', расскажу в следующей статье. Теперь жмём на батник &amp;quot;запаковка&amp;quot;  и усё! Пихаем all.spawn в игру. Только лучше ещё поправить отношения актора к военным и наоборот в лучшую сторону. Чтобы непись сразу пошёл по своему пути. Он будет ходить от казармы до дома (там поймёте).&lt;br /&gt;
&lt;br /&gt;
===Автор===&lt;br /&gt;
&lt;br /&gt;
Статью написал [[Rez@niy]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Trash]]&lt;/div&gt;</summary>
		<author><name>178.44.189.10</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%90%D0%BB%D1%8C%D1%82%D0%B5%D1%80%D0%BD%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B9_%D1%81%D0%BF%D0%BE%D1%81%D0%BE%D0%B1_%D1%81%D0%B2%D1%8F%D0%B7%D0%BA%D0%B8_%D0%BB%D0%BE%D0%BA%D0%B0%D1%86%D0%B8%D0%B9</id>
		<title>Альтернативный способ связки локаций</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%90%D0%BB%D1%8C%D1%82%D0%B5%D1%80%D0%BD%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B9_%D1%81%D0%BF%D0%BE%D1%81%D0%BE%D0%B1_%D1%81%D0%B2%D1%8F%D0%B7%D0%BA%D0%B8_%D0%BB%D0%BE%D0%BA%D0%B0%D1%86%D0%B8%D0%B9"/>
				<updated>2011-08-19T19:28:37Z</updated>
		
		<summary type="html">&lt;p&gt;178.44.189.10: заслуженно трешовая стотья&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Итак, порассскинув мозгами и ниасилив последний урок лохотрона, мне пришла в голову следующая мысль.&lt;br /&gt;
&lt;br /&gt;
== Теория ==&lt;br /&gt;
У вас есть собственный уровень, годный для сингла? Есть level_changer на билдовые локации и вы хотите объеденить его с ними?&lt;br /&gt;
Итак, мой метод основан на том, что &lt;br /&gt;
# нужно разобрать одну из билдовых локаций(ту, куда вы хотите вставить переход).&lt;br /&gt;
# Вставить секцию с уровнем в файлы конфигов.&lt;br /&gt;
# Вставить туда нужные граф поинты и левел чейнджер.&lt;br /&gt;
# Собрать локацию и скомпилировать.&lt;br /&gt;
# Собрать графы уровней и графы игры, собрать алл.спавн и вставить всё это в игру.&lt;br /&gt;
Преимущества данного метода:&lt;br /&gt;
*Сравнительно прост для среднего мододела.&lt;br /&gt;
*При отсутствии нужного граф поинта или левел ченжера его можно легко добавить.&lt;br /&gt;
*Позволяет создать нормальный, продуманный переход между уровнями&lt;br /&gt;
*Не требуется ЛВИД_ГВИД скрипта.&lt;br /&gt;
Недостатки:&lt;br /&gt;
*Требуется замена файлов уровня.&lt;br /&gt;
*Игра иногда вылетает, но работает при загрузке последнего сейва (авто сейв при переходе с локации на локацию)&lt;br /&gt;
&lt;br /&gt;
== Практика ==&lt;br /&gt;
&lt;br /&gt;
=== Радар ===&lt;br /&gt;
Итак, я разобрал локацию &amp;quot;радар&amp;quot; - что же мне делать дальше?&lt;br /&gt;
Первым делом, я поставлю переход на мою локацию, скажем на росток из мультиплеера.&lt;br /&gt;
Создаю 2 graph point. &lt;br /&gt;
*1-й обзываю exit_radar_25(ну я не думаю, что на радаре 24 перехода, но все же лучше перестраховаться)и в его опциях выбераем location - &amp;quot;Радар&amp;quot; и в Conection в level to change выбираем наш уромень и в poin to change пишем точку,exit_sp_rostok_01&lt;br /&gt;
*2-й - start_actor_25. &lt;br /&gt;
* создаю level_changer для смены локаций. Туда вписываю уровень для смены(не забывайте перед началом работ править конфиги!!!), и точку для появления игрока на локации: start_actor_01.&lt;br /&gt;
*Затем идем в кастом дату лвл чейнжера и пишем ему&lt;br /&gt;
[pt_move_if_reject]&lt;br /&gt;
path = sp_rostok_way_if_reject - это вей поинт в случае отказа игрока от перехода&lt;br /&gt;
*затем создаем собственно этот вей поинт - sp_rostok_way_if_reject (он должен состоять из двух точек, связанных стрелкой(линком)). Так, на радаре вроде всё, в настройках уровня выбираю драфт-качество, сохраняю и строю.&lt;br /&gt;
&lt;br /&gt;
=== Росток ===&lt;br /&gt;
Далее загружаю росток(из мультиплеера), и создаю поинты start_actor_01, exit_sp_rostok_01 (в нем выбираем локэйшн - &amp;quot;наш уровень&amp;quot;, в конекшн левел то чейнж - радар и поинт то чейнж exit_radar_25. Тем самым мы создали аи связь между локациями)&lt;br /&gt;
*затем создаем лвл чейнжер, в нем пишем&lt;br /&gt;
*Кастом дата -[pt_move_if_reject]&lt;br /&gt;
path = sp_rostok_if_reject_way&lt;br /&gt;
*создаем путь sp_rostok_if_reject_way&lt;br /&gt;
*level to change - радар&lt;br /&gt;
*point to change - start_actor_25&lt;br /&gt;
Все, ставим качество на драфт и билдим, затем проходим все стадии в аи враппере и копируем алл спавн в АСДС.&lt;br /&gt;
&lt;br /&gt;
=== АСДС ===&lt;br /&gt;
Теперь требуется подправить конфиги в АСДС (лвл эдитор не просчитывает некоторые параметры, поэтому раньше имелся вылет при переходе.)&lt;br /&gt;
Распаковываем Алл спавн и ищем ваш лвл ченжер 1, в его секцие ищем такие строки&lt;br /&gt;
&lt;br /&gt;
*position = -183.81120300293,2.23819088935852,-289.468292236328&lt;br /&gt;
*direction = 0,-0.69812798500061,0&lt;br /&gt;
и&lt;br /&gt;
*game_vertex_id = 0&lt;br /&gt;
*level_vertex_id = 436&lt;br /&gt;
копируем эти значения. Затем ищем лвл чеинжер 2 с которым связанн чейнжер 1 и вставляем скопированное по соответсвующим позициям&lt;br /&gt;
*dest_game_vertex_id = 0  &amp;lt;== сдюда копируем значения game_vertex_id&lt;br /&gt;
*dest_level_vertex_id = 436 &amp;lt;== сдюда копируем значения level_vertex_id&lt;br /&gt;
*dest_position = 0,0,0 &amp;lt;== сдюда копируем значения position&lt;br /&gt;
*dest_direction = 0,0,0 &amp;lt;== сдюда копируем значения direction (по желанию)&lt;br /&gt;
&lt;br /&gt;
затем повторяем все эти действия только наоборот (значения чейнжера 1 заменяем значениями чейинжера 2)&lt;br /&gt;
*Примечание. dest_position это точка позиция для спавна игрока на новом уровне. Желательно записать координаты не из лвл чейнжера а свои, что игрок спавнился не в лвл чейнжере а рядом с ним. (это можно сделать по желанию и не обязательно)&lt;br /&gt;
&lt;br /&gt;
=== Подправил статью - Sine ===&lt;br /&gt;
&lt;br /&gt;
[[Категория:Trash]]&lt;/div&gt;</summary>
		<author><name>178.44.189.10</name></author>	</entry>

	</feed>