<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://modfaq.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D0%B5%D0%BB%D0%B8_%D0%BF%D0%BE%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F_NPC</id>
	<title>Модели поведения NPC - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://modfaq.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D0%B5%D0%BB%D0%B8_%D0%BF%D0%BE%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F_NPC"/>
	<link rel="alternate" type="text/html" href="https://modfaq.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D0%B5%D0%BB%D0%B8_%D0%BF%D0%BE%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F_NPC&amp;action=history"/>
	<updated>2026-07-04T21:58:51Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://modfaq.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D0%B5%D0%BB%D0%B8_%D0%BF%D0%BE%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F_NPC&amp;diff=1701&amp;oldid=prev</id>
		<title>Aka sektor: Перезагрузил картинки</title>
		<link rel="alternate" type="text/html" href="https://modfaq.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D0%B5%D0%BB%D0%B8_%D0%BF%D0%BE%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F_NPC&amp;diff=1701&amp;oldid=prev"/>
		<updated>2022-06-29T20:39:06Z</updated>

		<summary type="html">&lt;p&gt;Перезагрузил картинки&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 23:39, 29 июня 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l14&quot;&gt;Строка 14:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 14:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;В прошлых статьях по модифицированию &amp;#039;&amp;#039;&amp;#039;S.T.A.L.K.E.R.&amp;#039;&amp;#039;&amp;#039; мы изучили такие сложные темы, как разработка новых уровней и миссий для игры. Сегодня же мы поговорим о редактировании моделей &amp;#039;&amp;#039;&amp;#039;NPC&amp;#039;&amp;#039;&amp;#039;, реализованных в S.T.A.L.K.E.R. - разберем устройство файлов, в которых хранится информация о схемах поведения обитателей «Зоны»&amp;lt;ref&amp;gt;[http://old.igromania.ru/articles/55340/DVD-MANIYa_12_123.htm «DVD-МАНИЯ» №12(123)]&amp;lt;/ref&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;В прошлых статьях по модифицированию &amp;#039;&amp;#039;&amp;#039;S.T.A.L.K.E.R.&amp;#039;&amp;#039;&amp;#039; мы изучили такие сложные темы, как разработка новых уровней и миссий для игры. Сегодня же мы поговорим о редактировании моделей &amp;#039;&amp;#039;&amp;#039;NPC&amp;#039;&amp;#039;&amp;#039;, реализованных в S.T.A.L.K.E.R. - разберем устройство файлов, в которых хранится информация о схемах поведения обитателей «Зоны»&amp;lt;ref&amp;gt;[http://old.igromania.ru/articles/55340/DVD-MANIYa_12_123.htm «DVD-МАНИЯ» №12(123)]&amp;lt;/ref&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=&lt;/del&gt;== General Problem Solver (GPS)&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=&lt;/del&gt;==  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== General Problem Solver (GPS)==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:left; margin-right:0.8em; clear:left; width: 250px;&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:left; margin-right:0.8em; clear:left; width: 250px;&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| style=&quot;text-align:center&quot; | &amp;lt;span class=&quot;plainlinks&quot;&amp;gt;[https://&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;images&lt;/del&gt;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;gameru.net/image&lt;/del&gt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;7a3788a0ff5de81.jpg.html &lt;/del&gt;https://&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;images&lt;/del&gt;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;gameru&lt;/del&gt;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;net&lt;/del&gt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;thumb&lt;/del&gt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;7a3788a0ff5de81&lt;/del&gt;.jpg]&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| style=&quot;text-align:center&quot; | &amp;lt;span class=&quot;plainlinks&quot;&amp;gt;[https://&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;postimg&lt;/ins&gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;cc&lt;/ins&gt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v1HV7q54 &lt;/ins&gt;https://&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;i&lt;/ins&gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;postimg&lt;/ins&gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;cc&lt;/ins&gt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v1HV7q54&lt;/ins&gt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;1&lt;/ins&gt;.jpg]&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Примерно так можно интерпретировать процесс нахождения решения системой GPS графически.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Примерно так можно интерпретировать процесс нахождения решения системой GPS графически.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l29&quot;&gt;Строка 29:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 29:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;В &amp;#039;&amp;#039;&amp;#039;1969 &amp;#039;&amp;#039;&amp;#039;году проект GPS был заморожен. Спустя какое-то время разработка чудо-системы была возобновлена, но специалисты уже не ставили перед собой глобальной цели - разработать мощную модель AI для решения самых разнообразных задач. Ограничились созданием так называемого GPS-навигатора для ориентирования на карте местности. Кстати, реализация современных навигационных приборов стала возможной лишь с появлением другой не менее интересной системы &amp;#039;&amp;#039;&amp;#039;STRIPS&amp;#039;&amp;#039;&amp;#039;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;В &amp;#039;&amp;#039;&amp;#039;1969 &amp;#039;&amp;#039;&amp;#039;году проект GPS был заморожен. Спустя какое-то время разработка чудо-системы была возобновлена, но специалисты уже не ставили перед собой глобальной цели - разработать мощную модель AI для решения самых разнообразных задач. Ограничились созданием так называемого GPS-навигатора для ориентирования на карте местности. Кстати, реализация современных навигационных приборов стала возможной лишь с появлением другой не менее интересной системы &amp;#039;&amp;#039;&amp;#039;STRIPS&amp;#039;&amp;#039;&amp;#039;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=&lt;/del&gt;== Алгоритмы поведения NPC &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=&lt;/del&gt;==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Алгоритмы поведения NPC ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Возвращаемся к S.T.A.L.K.E.R. Система поиска решений в данном тайтле получила незатейливое название «планировщик» и унаследовала все самое лучшее от УРЗ, т.е. также позволяла выполнять разумный поиск решений на основе заданных команд и условий.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Возвращаемся к S.T.A.L.K.E.R. Система поиска решений в данном тайтле получила незатейливое название «планировщик» и унаследовала все самое лучшее от УРЗ, т.е. также позволяла выполнять разумный поиск решений на основе заданных команд и условий.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l37&quot;&gt;Строка 37:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 37:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width: 250px;&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width: 250px;&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;span class=&quot;plainlinks&quot;&amp;gt;[https://&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;images&lt;/del&gt;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;gameru.net&lt;/del&gt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;image/69082d165472995.jpg.html &lt;/del&gt;https://&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;images&lt;/del&gt;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;gameru&lt;/del&gt;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;net&lt;/del&gt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;thumb&lt;/del&gt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;69082d165472995&lt;/del&gt;.jpg]&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;span class=&quot;plainlinks&quot;&amp;gt;[https://&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;postimg&lt;/ins&gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;cc&lt;/ins&gt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;7GjJkqdz &lt;/ins&gt;https://&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;i&lt;/ins&gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;postimg&lt;/ins&gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;cc&lt;/ins&gt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;7GjJkqdz&lt;/ins&gt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;2&lt;/ins&gt;.jpg]&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;span class=&quot;plainlinks&quot;&amp;gt;[https://&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;images.gameru&lt;/del&gt;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;net&lt;/del&gt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;image/1f086ffafb87095.jpg.html &lt;/del&gt;https://&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;images&lt;/del&gt;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;gameru&lt;/del&gt;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;net&lt;/del&gt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;thumb&lt;/del&gt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;1f086ffafb87095&lt;/del&gt;.jpg]&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;lt;span class=&quot;plainlinks&quot;&amp;gt;[https://&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;postimg&lt;/ins&gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;cc&lt;/ins&gt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;r0DR3Dnc &lt;/ins&gt;https://&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;i&lt;/ins&gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;postimg&lt;/ins&gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;cc&lt;/ins&gt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;r0DR3Dnc&lt;/ins&gt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;3&lt;/ins&gt;.jpg]&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Редактирование моделей поведения персонажей &amp;quot;Сталкера&amp;quot; выполняется... совершенно верно - в &amp;quot;Блокноте&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Редактирование моделей поведения персонажей &amp;quot;Сталкера&amp;quot; выполняется... совершенно верно - в &amp;quot;Блокноте&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l114&quot;&gt;Строка 114:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 114:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:left; margin-right:0.8em; clear:left; width: 250px;&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:left; margin-right:0.8em; clear:left; width: 250px;&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| style=&quot;text-align:center&quot; | &amp;lt;span class=&quot;plainlinks&quot;&amp;gt;[https://&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;images&lt;/del&gt;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;gameru.net/image&lt;/del&gt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;5a89903869a143c.jpg.html &lt;/del&gt;https://&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;images&lt;/del&gt;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;gameru&lt;/del&gt;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;net&lt;/del&gt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;thumb&lt;/del&gt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;5a89903869a143c&lt;/del&gt;.jpg]&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| style=&quot;text-align:center&quot; | &amp;lt;span class=&quot;plainlinks&quot;&amp;gt;[https://&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;postimg&lt;/ins&gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;cc&lt;/ins&gt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;R3sng7TX &lt;/ins&gt;https://&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;i&lt;/ins&gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;postimg&lt;/ins&gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;cc&lt;/ins&gt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;R3sng7TX&lt;/ins&gt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;4&lt;/ins&gt;.jpg]&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Чтобы создать и подключить к игре новые алгоритмы поведения персонажей, нужно в совершенстве владеть скриптовым языком LUA.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Чтобы создать и подключить к игре новые алгоритмы поведения персонажей, нужно в совершенстве владеть скриптовым языком LUA.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l120&quot;&gt;Строка 120:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 120:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=&lt;/del&gt;== *** &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=&lt;/del&gt;==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== *** ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;На сегодня все. В настоящей статье мы разобрали структуру файлов, содержащих информацию о моделях поведения NPC, а также изучили предназначение основных команд, фигурирующих в алгоритмах поведения персонажей. Полученных из статьи знаний вам с лихвой хватит для редактирования оригинальных схем поведения обитателей зоны. Для создания же своих собственных AI-модов придется выучить азы программирования на скриптовом языке &amp;#039;&amp;#039;&amp;#039;LUA&amp;#039;&amp;#039;&amp;#039;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;На сегодня все. В настоящей статье мы разобрали структуру файлов, содержащих информацию о моделях поведения NPC, а также изучили предназначение основных команд, фигурирующих в алгоритмах поведения персонажей. Полученных из статьи знаний вам с лихвой хватит для редактирования оригинальных схем поведения обитателей зоны. Для создания же своих собственных AI-модов придется выучить азы программирования на скриптовом языке &amp;#039;&amp;#039;&amp;#039;LUA&amp;#039;&amp;#039;&amp;#039;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Источники ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Источники ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;References&lt;/del&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;reflist|3&lt;/ins&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Архив]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Архив]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Aka sektor</name></author>
	</entry>
	<entry>
		<id>https://modfaq.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D0%B5%D0%BB%D0%B8_%D0%BF%D0%BE%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F_NPC&amp;diff=330&amp;oldid=prev</id>
		<title>Aka sektor: Новая страница: «{| class=&quot;wikitable&quot; style=&quot;float:right; margin-left:0.8em; clear:right; text-align: center; font-size:12px; width: 300px;&quot; |- | colspan=2 style=&quot;font-size:20px;&quot;…»</title>
		<link rel="alternate" type="text/html" href="https://modfaq.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D0%B5%D0%BB%D0%B8_%D0%BF%D0%BE%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F_NPC&amp;diff=330&amp;oldid=prev"/>
		<updated>2019-02-25T08:30:07Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right; margin-left:0.8em; clear:right; text-align: center; font-size:12px; width: 300px;&amp;quot; |- | colspan=2 style=&amp;quot;font-size:20px;&amp;quot;…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right; margin-left:0.8em; clear:right; text-align: center; font-size:12px; width: 300px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 style=&amp;quot;font-size:20px;&amp;quot;|&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Модели поведения NPC&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Дата публикации&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|&lt;br /&gt;
{{Дата рождения|27|11|2007|лет}}&amp;lt;ref&amp;gt;[https://www.igromania.ru/magazine/122/ Страница &amp;quot;Игромания №12/2007&amp;quot; на сайте igromania.ru]&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Автор&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Эдуард Клишин&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
В прошлых статьях по модифицированию &amp;#039;&amp;#039;&amp;#039;S.T.A.L.K.E.R.&amp;#039;&amp;#039;&amp;#039; мы изучили такие сложные темы, как разработка новых уровней и миссий для игры. Сегодня же мы поговорим о редактировании моделей &amp;#039;&amp;#039;&amp;#039;NPC&amp;#039;&amp;#039;&amp;#039;, реализованных в S.T.A.L.K.E.R. - разберем устройство файлов, в которых хранится информация о схемах поведения обитателей «Зоны»&amp;lt;ref&amp;gt;[http://old.igromania.ru/articles/55340/DVD-MANIYa_12_123.htm «DVD-МАНИЯ» №12(123)]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== General Problem Solver (GPS)=== &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:left; margin-right:0.8em; clear:left; width: 250px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://images.gameru.net/image/7a3788a0ff5de81.jpg.html https://images.gameru.net/thumb/7a3788a0ff5de81.jpg]&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Примерно так можно интерпретировать процесс нахождения решения системой GPS графически.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Но для начала небольшое отступление. Знаете ли вы, о товарищи игростроители, что в основу моделей поведения NPC, реализованных в S.T.A.L.K.E.R. были положены специальные алгоритмы, которые впервые были разработаны &amp;#039;&amp;#039;&amp;#039;Гербертом Саймоном&amp;#039;&amp;#039;&amp;#039; и &amp;#039;&amp;#039;&amp;#039;Алленом Ньюэллом&amp;#039;&amp;#039;&amp;#039; и применены в программе с кодовым названием &amp;#039;&amp;#039;&amp;#039;GPS&amp;#039;&amp;#039;&amp;#039;, что расшифровывается, как &amp;#039;&amp;#039;&amp;#039;General Problem Solver&amp;#039;&amp;#039;&amp;#039; или &amp;#039;&amp;#039;&amp;#039;Универсальный Решатель Задач &amp;#039;&amp;#039;&amp;#039;(&amp;#039;&amp;#039;&amp;#039;УРЗ&amp;#039;&amp;#039;&amp;#039;). GPS - это такой программный комплекс, специальная ПК-модель, созданная для моделирования всех или практически всех способов решения задач, которые использует человек.&lt;br /&gt;
&lt;br /&gt;
Работал GPS по следующей схеме. На входе УРЗ получал «пакет» определенных условий, операторов и описаний начального и конечного состояний системы. Вся эта информация тщательно анализировалась - выполнялся поиск такой последовательности команд, которая позволяла бы привести начальное состояние системы в конечное или, проще говоря, найти решение поставленной пользователем задачи. При чем, что интересно - система GPS самостоятельно выбирала наиболее перспективный путь, по которому можно было продолжить поиск решения. Как только GPS обнаруживал, что выбранный путь является бесперспективным, он выполнял откат к одной из предыдущих ветвей. Такая методология получила название «Анализ средств и целей».&lt;br /&gt;
&lt;br /&gt;
В &amp;#039;&amp;#039;&amp;#039;1969 &amp;#039;&amp;#039;&amp;#039;году проект GPS был заморожен. Спустя какое-то время разработка чудо-системы была возобновлена, но специалисты уже не ставили перед собой глобальной цели - разработать мощную модель AI для решения самых разнообразных задач. Ограничились созданием так называемого GPS-навигатора для ориентирования на карте местности. Кстати, реализация современных навигационных приборов стала возможной лишь с появлением другой не менее интересной системы &amp;#039;&amp;#039;&amp;#039;STRIPS&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
=== Алгоритмы поведения NPC ===&lt;br /&gt;
Возвращаемся к S.T.A.L.K.E.R. Система поиска решений в данном тайтле получила незатейливое название «планировщик» и унаследовала все самое лучшее от УРЗ, т.е. также позволяла выполнять разумный поиск решений на основе заданных команд и условий.&lt;br /&gt;
&lt;br /&gt;
Все алгоритмы поведения персонажей в «Сталкере» зашиты в файлы с расширением &amp;#039;&amp;#039;&amp;#039;.script&amp;#039;&amp;#039;&amp;#039; и представляют собой банальную последовательность скриптовых команд (операторов). Проживают такие документы в каталоге &amp;#039;&amp;#039;\gamedata\scripts&amp;#039;&amp;#039; с распакованной игрой. Давайте изучим структуру одного из таких документов, например, скрипта &amp;#039;&amp;#039;&amp;#039;xr_kamp.script&amp;#039;&amp;#039;&amp;#039;. Подгрузите подопытный файл в произвольный текстовый редактор, например, в «Блокнот».&lt;br /&gt;
&lt;br /&gt;
При беглом просмотре документа нетрудно заметить, что алгоритм поведения NPC делится на несколько составных блоков. В первой части файла - от комментария &amp;lt;code&amp;gt;--Evaluators&amp;lt;/code&amp;gt; до кейворда &amp;lt;code&amp;gt;--Actions&amp;lt;/code&amp;gt; прописаны так называемые эвалуаторы или «оценщики». Это такие скриптовые конструкции, которые служат для динамической постановки условий во время игры. Так, например, они используются для определения уровня здоровья и сытости персонажей. Приведем конкретный пример. NPC «Петя» при разговоре с одним из сталкеров жутко проголодался, эвалуатор возвратил значение истины (&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;) и «Петин» собеседник предложил сделать паузу и пообедать, мол, на сытый желудок думается лучше. Во второй части скрипта - после ключевого слова &amp;lt;code&amp;gt;--Actions&amp;lt;/code&amp;gt; до пункта &amp;lt;code&amp;gt;--Kamp binder&amp;lt;/code&amp;gt; размещаются действия, которые должен выполнить обитатель «Зоны» - отобедать, убить сталкера, «затравить» очередную байку или анекдот. Ну и, наконец, в третьей части документа, после комментария &amp;lt;code&amp;gt;--Kamp binder&amp;lt;/code&amp;gt;, объявляются различные активаторы. Вот, в принципе, и все.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; width: 250px;&amp;quot;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://images.gameru.net/image/69082d165472995.jpg.html https://images.gameru.net/thumb/69082d165472995.jpg]&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://images.gameru.net/image/1f086ffafb87095.jpg.html https://images.gameru.net/thumb/1f086ffafb87095.jpg]&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Редактирование моделей поведения персонажей &amp;quot;Сталкера&amp;quot; выполняется... совершенно верно - в &amp;quot;Блокноте&amp;quot;&lt;br /&gt;
| Специальных утилит для моддинга AI пока просто нет.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Чтобы разобраться в предназначении большинства операторов, достаточно просто уметь читать «меж строк». Все дело в том, что создатели игры, наши с вами соотечественники, не сочли за труд прокомментировать некоторые свои действия. Так, в теле большинства скриптовых конструкций встретить комментарии вида  &amp;lt;code&amp;gt;-- могут ли сталкеры в лагере юзаться игроком.&amp;lt;/code&amp;gt;,  &amp;lt;code&amp;gt;--&amp;#039; Находимся ли мы на заданной позиции&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--&amp;#039; Просто сидит и втыкает&amp;lt;/code&amp;gt;. Все эти авторские заметки позволяют быстро вникнуть в смысл определенных скриптовых блоков или отдельно взятых операторов. Таким образом, мы не будем детально разбирать предназначение каждой команды, фигурирующей в модели поведения NPC - рассмотрим лишь основные функции и операторы, которые встречаются в каждой схеме поведения персонажей. На начальном этапе работы интерес для нас представляют лишь скриптовые конструкции из блока &amp;lt;code&amp;gt;--Kamp binder&amp;lt;/code&amp;gt; - именно в них содержатся основные действия и условия, определенные для данной схемы поведения персонажей.&lt;br /&gt;
&lt;br /&gt;
Команда &amp;lt;code&amp;gt;class &amp;quot;evaluator_kamp_end&amp;quot; (property_evaluator)&amp;lt;/code&amp;gt; служит для объявления класса «оценщика» - эвалуатора. Оператор &amp;lt;code&amp;gt;function evaluator_kamp_end:__init(name, storage) super (nil, name) self.a = storage end&amp;lt;/code&amp;gt; инициализирует функцию эвалуатора. Управление игровым планировщиком осуществляется через специальную функцию &amp;lt;code&amp;gt;add_to_binder (function add_to_binder(object, ini, scheme, section, storage))&amp;lt;/code&amp;gt;, которая имеет 6 параметров.&lt;br /&gt;
&lt;br /&gt;
{{цитата|автор=Эдуард Клишин|Научить компьютерных соперников уму-разуму - дело пяти минут.}}&lt;br /&gt;
&lt;br /&gt;
Первая характеристика данной функции - &amp;lt;code&amp;gt;Object&amp;lt;/code&amp;gt; - отвечает за персонажа/объект, для которого создается планировщик. Второй, третий и четвертый атрибуты (&amp;lt;code&amp;gt;ini&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;scheme&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;section&amp;lt;/code&amp;gt;) указывают на файл инициализации, наименование схемы поведения и название блока конфигурационного файла соответственно. Наконец, пятый и последний параметр - &amp;lt;code&amp;gt;storage&amp;lt;/code&amp;gt; - служит для определения таблицы, в которой будут храниться характеристики данного алгоритма. Команда &amp;lt;code&amp;gt;local manager = object:motivation_action_manager()&amp;lt;/code&amp;gt; служит для активации менеджера действий (планировщика) для объекта &amp;lt;code&amp;gt;object&amp;lt;/code&amp;gt;. Следующий блок команд, начинающихся с ключевых слов &amp;lt;code&amp;gt;properties&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;operators&amp;lt;/code&amp;gt; применяется для присвоения идентификаторов операторов и условий элементам массива. В нашем «лагерном» скрипте эта конструкция имеет следующий вид:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
properties[&amp;quot;kamp_end&amp;quot;] = xr_evaluators_id.stohe_kamp_base+1&lt;br /&gt;
properties[&amp;quot;on_position&amp;quot;] = xr_evaluators_id.stohe_kamp_base+2&lt;br /&gt;
properties[&amp;quot;contact&amp;quot;] = xr_evaluators_id.stohe_meet_base+1&lt;br /&gt;
operators[&amp;quot;go_position&amp;quot;] = xr_actions_id.stohe_kamp_base+1&lt;br /&gt;
operators[&amp;quot;wait&amp;quot;] = xr_actions_id.stohe_kamp_base+3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При этом стоит отметить, что в качестве значений идентификаторов должны использоваться только целые числа. Две следующие строки кода, расположенные после комментария &amp;lt;code&amp;gt;-- Evaluators&amp;lt;/code&amp;gt;, определяют два динамических условия - закончить «посиделки» и пришел ли сталкер на свое место у костерка:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
manager:add_evaluator (properties[&amp;quot;kamp_end&amp;quot;], 		this.evaluator_kamp_end	 (&amp;quot;kamp_end&amp;quot;, storage, &amp;quot;kamp_end&amp;quot;))&lt;br /&gt;
manager:add_evaluator (properties[&amp;quot;on_position&amp;quot;],	this.evaluator_on_position (&amp;quot;kamp_on_position&amp;quot;, storage, &amp;quot;kamp_on_position&amp;quot;))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Следом за данными командами идет большой блок с внутренним названием &amp;lt;code&amp;gt;-- Actions&amp;lt;/code&amp;gt; - действия. Вот он-то нас интересует больше всего. В данной категории фигурирует всего лишь один составной оператор и цепочка условий, выполнение которых является обязательным для активации данной команды:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local action = this.action_wait (object:name(),&amp;quot;action_kamp_wait&amp;quot;, storage)&lt;br /&gt;
action: add_precondition	(world_property(stalker_ids.property_alive, true))&lt;br /&gt;
action: add_precondition	(world_property(stalker_ids.property_danger,false)&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Прокомментируем все действия, реализованные в данном скрипте:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Жив ли сталкер?&lt;br /&gt;
action:add_precondition (world_property(stalker_ids.property_alive, true))&lt;br /&gt;
-- Угрожает ли персонажу опасность?&lt;br /&gt;
action:add_precondition (world_property(stalker_ids.property_danger,false))&lt;br /&gt;
-- Есть ли поблизости неприятели?&lt;br /&gt;
action:add_precondition (world_property(stalker_ids.property_enemy, false))&lt;br /&gt;
-- Замечены ли аномалии вблизи героя?&lt;br /&gt;
action:add_precondition (world_property(stalker_ids.property_anomaly,false))&lt;br /&gt;
-- Выполняются ли другие важные условия, не обозначенные выше?&lt;br /&gt;
xr_motivator.addCommonPrecondition (action)&lt;br /&gt;
-- Находится ли герой на позиции - вблизи костра?&lt;br /&gt;
action:add_precondition (world_property(properties[&amp;quot;on_position&amp;quot;], true))&lt;br /&gt;
action:add_effect  (world_property(properties[&amp;quot;kamp_end&amp;quot;], 	true))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если все эти предусловия выполняются, то значение динамического условия &amp;lt;code&amp;gt;manager:add_evaluator (properties[&amp;quot;kamp_end&amp;quot;], this.evaluator_kamp_end (&amp;quot;kamp_end&amp;quot;, storage, &amp;quot;kamp_end&amp;quot;))&amp;lt;/code&amp;gt; станет истинным и планировщик завершит работу оператора:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
action: add_effect (world_property(properties[&amp;quot;kamp_end&amp;quot;],   true))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Добавление созданного оператора в планировщик выполняется командой:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
manager:add_action (operators[&amp;quot;wait&amp;quot;], action)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Что происходит дальше? Все просто - объявление специальной команды, которая передает персонажу определенные уведомления (смерть NPC, попадание пули в тело товарища и т.д.):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
xr_logic.subscribe_action_for_events(object, storage, action)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Перемещение актера (NPC) в сторону костра производится при помощи такой вот незатейливой команды:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
action = this.action_go_position (object:name(),&amp;quot;action_go_kamp&amp;quot;, storage)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее вновь происходит инициализация предварительных условий, проверки и добавление очередного оператора в планировщик. Строкой &amp;lt;code&amp;gt;end&amp;lt;/code&amp;gt; скрипт завершает свою работу...  &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:left; margin-right:0.8em; clear:left; width: 250px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://images.gameru.net/image/5a89903869a143c.jpg.html https://images.gameru.net/thumb/5a89903869a143c.jpg]&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Чтобы создать и подключить к игре новые алгоритмы поведения персонажей, нужно в совершенстве владеть скриптовым языком LUA.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== *** ===&lt;br /&gt;
На сегодня все. В настоящей статье мы разобрали структуру файлов, содержащих информацию о моделях поведения NPC, а также изучили предназначение основных команд, фигурирующих в алгоритмах поведения персонажей. Полученных из статьи знаний вам с лихвой хватит для редактирования оригинальных схем поведения обитателей зоны. Для создания же своих собственных AI-модов придется выучить азы программирования на скриптовом языке &amp;#039;&amp;#039;&amp;#039;LUA&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
{{References}}&lt;br /&gt;
&lt;br /&gt;
[[Категория:Архив]]&lt;/div&gt;</summary>
		<author><name>Aka sektor</name></author>
	</entry>
</feed>