<?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=Clayman</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=Clayman"/>
		<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/Clayman"/>
		<updated>2026-04-29T22:03:04Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.22.6</generator>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BA%D0%B2%D0%B5%D1%81%D1%82%D0%B0_%D0%BD%D0%B0_%D1%83%D0%BD%D0%B8%D1%87%D1%82%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BE%D1%82%D1%80%D1%8F%D0%B4%D0%B0</id>
		<title>CoP. Создание квеста на уничтожение отряда</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BA%D0%B2%D0%B5%D1%81%D1%82%D0%B0_%D0%BD%D0%B0_%D1%83%D0%BD%D0%B8%D1%87%D1%82%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BE%D1%82%D1%80%D1%8F%D0%B4%D0%B0"/>
				<updated>2012-07-12T12:29:05Z</updated>
		
		<summary type="html">&lt;p&gt;Clayman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Здравствуйте, уважаемые фанаты модинга ЗП, сегодня я попробую объяснить создание квеста на уничтожение отряда в ЗП на основе моего способа.&lt;br /&gt;
Способ предполагает, что вы умеете хоть немного работать с логикой\скриптами игры.&lt;br /&gt;
Итак, я не буду описывать все подробно, в обычных местах, таких, как &amp;quot;создадим диалог и прочее&amp;quot;. Я надеюсь это вы итак писать умеете. Просто отмечу, что в диалог нужно будет повесить активатор скрипта для выдачи задания и немного поколдовать с инфопоршнями, чтобы, когда выдан инфопоршень(на выдачу квеста или, что квест выполнен, и работает &amp;quot;таймер перезапуска квеста&amp;quot;), квест нельзя было брать повторно.&lt;br /&gt;
&lt;br /&gt;
'''Первое, создадим отряд на который будет вестись охота.''' &lt;br /&gt;
Идем например в squad_descr_zaton.ltx(если отряд будет на Затоне, можете добавить в другие секции squad_descr_название локации или создать отдельный squad_descr файл для мода(я так и сделал))&lt;br /&gt;
Создаем там отряд, к примеру, псевдогиганта&lt;br /&gt;
&lt;br /&gt;
''[zat_giant_for_quest]:online_offline_group''&lt;br /&gt;
&lt;br /&gt;
''story_id = zat_b52_giant_for_quest_squad'' -- важно дать id, чтобы по квесту отслеживать отряд по метке	&lt;br /&gt;
&lt;br /&gt;
''faction = monster_predatory_day''&lt;br /&gt;
&lt;br /&gt;
''npc = gigant_normal''&lt;br /&gt;
&lt;br /&gt;
''on_death = %+zat_giant_for_quest_death%''	-- необходимая инфа, чтобы засчитать квест, после гибели отряда и для перезапуска &lt;br /&gt;
&lt;br /&gt;
'''Второе, распаковываем all.spawn и создаем секцию-рестриктор для логики квеста''' &lt;br /&gt;
&lt;br /&gt;
''[1868]&lt;br /&gt;
; cse_abstract properties&lt;br /&gt;
&lt;br /&gt;
section_name = space_restrictor&lt;br /&gt;
&lt;br /&gt;
name = zat_giant_quest_logic -- название рестриктора&lt;br /&gt;
&lt;br /&gt;
position = 150.076538085938,1.77096498012543,94.8425521850586&lt;br /&gt;
&lt;br /&gt;
direction = 0.00209100008942187,3,-0.00126799999270588&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; cse_alife_object properties&lt;br /&gt;
&lt;br /&gt;
game_vertex_id = 0&lt;br /&gt;
&lt;br /&gt;
distance = 0&lt;br /&gt;
&lt;br /&gt;
level_vertex_id = 293223&lt;br /&gt;
&lt;br /&gt;
object_flags = 0xffffff3e&lt;br /&gt;
&lt;br /&gt;
custom_data = &amp;lt;&amp;lt;END&lt;br /&gt;
&lt;br /&gt;
[logic]&lt;br /&gt;
&lt;br /&gt;
cfg = scripts\zaton\zat_giant_quest_logic.ltx -- ! логика задания, которая будет обрабатывать инфопоршни и запускать таймер&lt;br /&gt;
&lt;br /&gt;
END&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; cse_shape properties&lt;br /&gt;
&lt;br /&gt;
shapes = shape0&lt;br /&gt;
&lt;br /&gt;
shape0:type = sphere&lt;br /&gt;
&lt;br /&gt;
shape0:offset = 0,0,0&lt;br /&gt;
&lt;br /&gt;
shape0:radius = 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; cse_alife_space_restrictor properties&lt;br /&gt;
&lt;br /&gt;
restrictor_type = 3''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Третье, пишем логику''' &lt;br /&gt;
[logic]&lt;br /&gt;
&lt;br /&gt;
active = sr_idle -- думаю понятно, логика ждет активации&lt;br /&gt;
&lt;br /&gt;
[sr_idle]&lt;br /&gt;
&lt;br /&gt;
on_info = {+zat_b52_giant_quest_give('''это выданный в диалоге инфопоршень старта, который запускает логику!''')} sr_idle2 %=create_squad(zat_stalker_for_quest:zat_sim_13)(ну тут понятно - мы создали только что отряд для квеста на точке zat_sim_13, можно бежать и валить))%&lt;br /&gt;
&lt;br /&gt;
[sr_idle2]&lt;br /&gt;
&lt;br /&gt;
on_info = {+zat_b52_giant_quest_done} sr_idle@timer -- тоже понятно, в диалоге, после получения инфопоршня '''zat_giant_for_quest_death''' от убитого отряда, я просто выдал еще один поршень, который &amp;quot;выключает квест&amp;quot;, пока не пройдет таймер&lt;br /&gt;
&lt;br /&gt;
[sr_idle@timer]&lt;br /&gt;
on_game_timer = 6000 | %-zat_giant_quest_target1 -zat_b52_giant_quest_give -zat_b52_giant_quest_done -zat_giant_for_quest_death -zat_giant_quest_begin% -- здесь видно, что после отработки таймера, все инфопоршни обнулились и неизвестны игроку, а значит квест вновь свободен для выполнения&lt;br /&gt;
on_info = {-zat_b52_giant_quest_give} sr_idle -- автоматическое возвращение на начало логики &lt;br /&gt;
&lt;br /&gt;
Добавлю, что в логике можно играться с поршнями  создавать отряды в помощь, убивать отряды, давать им разные цели после\во время квеста и т.д., все зависит от вашей фантазии и грамотности в написании диалога и выдаче инфопоршней с помощью логики\скриптов&lt;br /&gt;
&lt;br /&gt;
П.С. Можно создавать квест и на убийство отдельного сталкера, без регистрации в '''squad_descr''' и создания логики, просто создав НПС с '''story_id''' в '''spawn_sections''', чтобы можно было вешать метку и спавнить его через диалог путем  скрипта '''alife():create'''(через таблицу кординат можно создать иллюзию рандом-спавна путем команды '''math.random'''&lt;br /&gt;
Нужно только тоже прописать ему '''on_death = %+инфопоршень о смерти%''' и играть с таймером и поршнем в диалоге, так можно не трогать '''алл.спавн'''&lt;br /&gt;
&lt;br /&gt;
'''Автор: ZeeK'''&lt;br /&gt;
&lt;br /&gt;
Добавлю: функция create_squad из xr_effects.script работает только в том случае, если у смарт-террейна в котором вы собираетесь спанить сквад, есть точка спавна way_point, котороя прописана в конфиге смарта. Ну и для просто спавна сквада, не обязательно создавать рестриктор в аллспавне, можно вызвать эту функцию из своей, которая вызывается через action диалога:&lt;br /&gt;
xr_effects.create_squad(zat_stalker_for_quest:zat_sim_13)&lt;br /&gt;
&lt;br /&gt;
by Clayman.&lt;/div&gt;</summary>
		<author><name>Clayman</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B2%D0%BE%D1%80%D0%BE%D0%BD_%D0%BD%D0%B0_%D0%BB%D0%BE%D0%BA%D0%B0%D1%86%D0%B8%D0%B8</id>
		<title>CoP. Создание ворон на локации</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B2%D0%BE%D1%80%D0%BE%D0%BD_%D0%BD%D0%B0_%D0%BB%D0%BE%D0%BA%D0%B0%D1%86%D0%B8%D0%B8"/>
				<updated>2011-07-05T07:49:03Z</updated>
		
		<summary type="html">&lt;p&gt;Clayman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В один прекрасный момент я заметил, что на моём новом уровне абсолютно нет птиц, иже ворон.&lt;br /&gt;
Чтобы исправить это недоразумение, я посмотрел в оригинальном all.spawn'е ЗП на секцию одного спейс-рестриктора:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[1014]&lt;br /&gt;
; cse_abstract properties&lt;br /&gt;
section_name = space_restrictor&lt;br /&gt;
name = zat_crow_spawner&lt;br /&gt;
position = 247.531219482422,14.0710906982422,468.518585205078&lt;br /&gt;
direction = 0.044149000197649,-0.00105199997778982,0.0238349996507168&lt;br /&gt;
&lt;br /&gt;
; cse_alife_object properties&lt;br /&gt;
game_vertex_id = 0&lt;br /&gt;
distance = 0&lt;br /&gt;
level_vertex_id = 293223&lt;br /&gt;
object_flags = 0xffffff3e&lt;br /&gt;
custom_data = &amp;lt;&amp;lt;END&lt;br /&gt;
[logic]&lt;br /&gt;
cfg = scripts\zaton\zat_crow_spawner.ltx ;конфиг логики, задаётся относительно папки configs&lt;br /&gt;
END&lt;br /&gt;
&lt;br /&gt;
; cse_shape properties&lt;br /&gt;
shapes = shape0&lt;br /&gt;
shape0:type = sphere&lt;br /&gt;
shape0:offset = 0,0,0&lt;br /&gt;
shape0:radius = 1&lt;br /&gt;
&lt;br /&gt;
; cse_alife_space_restrictor properties&lt;br /&gt;
restrictor_type = 3&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создав точно такой же спейс у себя на локации, я прописал ему свой конфиг логики:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;&lt;br /&gt;
[logic]&lt;br /&gt;
active = sr_crow_spawner&lt;br /&gt;
&lt;br /&gt;
[sr_crow_spawner]&lt;br /&gt;
max_crows_on_level = 7 ;максимальное количество ворон&lt;br /&gt;
spawn_path = my_crow_path_1, my_crow_path_2, my_crow_path_3 ;сосбна точки пути (way_point'ы) где эти самые вороны будут спауниться&lt;br /&gt;
&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь собираем\пакуем all.spawn (в случае со сбором all.spawn'а, подразумевается, что вы работали в СДК, и перед тем как собрать спаун, не забудьте сделать '''Make Game''') и любуемся нашими воронами в небе.&lt;br /&gt;
P.S.: GSC спаунили ворон на земле, отчего при загрузке сохранений они не успевали взлететь, и синхронно вылетали из одной точки, эту проблему можно частично решить, создав точки, в которых буду спауниться вороны, где-нибуть в небе.&lt;br /&gt;
&lt;br /&gt;
Вообще-то, way-точки спавна ворон должны быть на AI-сетке, поэтому расположив их в небе, ворон можно так и не дождаться.&lt;br /&gt;
''by Clayman.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Участник: IDreD]]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Конфигурационные файлы]]&lt;/div&gt;</summary>
		<author><name>Clayman</name></author>	</entry>

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A0%D0%B0%D0%B7%D0%B1%D0%BE%D1%80_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B9_xr_effects</id>
		<title>CoP. Разбор функций xr effects</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=CoP._%D0%A0%D0%B0%D0%B7%D0%B1%D0%BE%D1%80_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B9_xr_effects"/>
				<updated>2011-05-13T19:40:43Z</updated>
		
		<summary type="html">&lt;p&gt;Clayman: Добавлено описание новой функции&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В ЗП появилось несколько новых шаблонов для функций вызываемых из логики объектов. Сейчас я опишу некоторые из них.&lt;br /&gt;
&lt;br /&gt;
1.	'''spawn_object_in(id_объекта(предмета):имя_коробки_в_которую_спауним_предмет)'''&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&amp;lt;code&amp;gt;=spawn_object_in(zat_b12_key_1:zat_b12_key_1_box)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''!ВНИМАНИЕ!''' Эта функция спаунит предметы ''только'' в коробки\тайники и прочие объекты с классом inventory_box!&lt;br /&gt;
&lt;br /&gt;
2.	'''=scenario_autosave(ссылка_на_текстовую_таблицу_из_папки_text\rus)'''&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&amp;lt;code&amp;gt;=scenario_autosave(st_save_zat_b14_got_altered_wheel)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В данном случае функция автоматически сохранит игру с указанным именем.&lt;br /&gt;
&lt;br /&gt;
3.	'''=teleport_npc_by_story_id(стори_айди_телепортируемого_нпс:точка_way_в_которую_телепортируем)'''      &lt;br /&gt;
&lt;br /&gt;
Пример использования:              &amp;lt;code&amp;gt;=teleport_npc_by_story_id(zat_stalker_friend_1_id:zat_b14_smart_terrain_zat_b14_stalker_3_walk_1)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В данном примере мы телепортируем НПС со story_id zat_stalker_friend_1_id в точку пути zat_b14_smart_terrain_zat_b14_stalker_3_walk_1.&lt;br /&gt;
&lt;br /&gt;
4.	'''=create_squad(id_сквада:имя_смарт_террейна_в_котором_данный_сквад_будет_создан)'''&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&amp;lt;code&amp;gt;=create_squad(zat_b14_stalkers:zat_b14_smart_terrain)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В данном случае мы создадим сквад zat_b14_stalkers в смарт террейне zat_b14_smart_terrain.&lt;br /&gt;
&lt;br /&gt;
'''!ВНИМАНИЕ!''' Эта функция создаст сквад ''только'' в том случае, если в настройках смарт террейна указана точка way, в которой мы должны спаунить отряд.&lt;br /&gt;
&lt;br /&gt;
5. '''=remove_item(id_забираемого_у_актора_предмета)'''&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&amp;lt;code&amp;gt;=remove_item(zat_b12_key_2)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В данном примере мы заберём у актора предмет с именем zat_b12_key_2.&lt;br /&gt;
&lt;br /&gt;
6.	'''= или !actor_has_item(id_предмета_наличие\отсутсвие_которого_мы_проверяем_у_актора)'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&amp;lt;code&amp;gt;=actor_has_item(zat_b12_key_1) ;проверяем есть ли у актора предмет&lt;br /&gt;
&lt;br /&gt;
!actor_has_item(zat_b12_key_1) ;проверяем нет ли у актора предмета&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7.	'''=play_sound(имя_проигрываемого_звука_id_которого_записан_в_script_sounds.ltx)'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&amp;lt;code&amp;gt;=play_sound(power_switch)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В данном примере проиграется звук power_switch. Как зарегистрировать звук в этом файле написано в официальном хэлпе от разработчиков.&lt;br /&gt;
&lt;br /&gt;
8.	'''=is_squad_enemy_to_actor(id_сквада)'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&amp;lt;code&amp;gt;=is_squad_enemy_to_actor(zat_b7_stalkers_raiders)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В данном случае мы проверим сквад zat_b7_stalkers_raiders на враждебное отношение к актору. Так же можно узнать обратное значение (враждебен ли сквад к актору?) поставив вместо «=» «!».&lt;br /&gt;
&lt;br /&gt;
'''!ВНИМАНИЕ!''' Эту функцию можно использовать ''только'' как проверку события, тоесть в логике объекта она должны стоять в фигурных скобках «{}» (без кавычек естественно).&lt;br /&gt;
&lt;br /&gt;
9.	'''=kill_squad(id_сквада)'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
               &amp;lt;code&amp;gt;=kill_squad(zat_b7_stalkers_victims_1)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В данном примере мы убьём разом весь сквад zat_b7_stalkers_victims_1.&lt;br /&gt;
&lt;br /&gt;
10.	'''! или =squad_exist(id_сквада)'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
                 &amp;lt;code&amp;gt;!squad_exist(zat_b7_stalkers_victims_1)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В данном примере мы проверим существует ли в игре (тобишь находится ли онлайн) сквад с id zat_b7_stalkers_victims_1.&lt;br /&gt;
&lt;br /&gt;
11.	'''=send_tip(message)'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
                 &amp;lt;code&amp;gt;=send_tip(message)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вывести сообщение на экран. &amp;quot;message&amp;quot; должно быть как обычно зарегестрированно в текстовом конфиге, иначе будет выводится без пробелов.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;By Clayman.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Дополнения приветствуются&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Участник: IDreD]]&lt;br /&gt;
[[Категория: Конфигурационные файлы]]&lt;/div&gt;</summary>
		<author><name>Clayman</name></author>	</entry>

	</feed>