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

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D1%81%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BE_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B0%D1%85</id>
		<title>Начальные сведения о скриптах</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D1%81%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BE_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B0%D1%85"/>
				<updated>2013-08-01T12:44:55Z</updated>
		
		<summary type="html">&lt;p&gt;95.135.223.167: Поправил недочёты. --# ColR_iT&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ПРЕДИСЛОВИЕ&lt;br /&gt;
{{Message_box|&lt;br /&gt;
id	=pseudoscience|&lt;br /&gt;
align = left|&lt;br /&gt;
backgroundcolor	= #f9f9f9|&lt;br /&gt;
image	=Lamp.gif|&lt;br /&gt;
heading	= Для чего нужны срипты и сведения и их использовании - Rez@niy aka Oxygenium|&lt;br /&gt;
message = В скриптах содержаться данные для выполнения по условиям.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Итак, начнём. Создадим в папке '''gamedata/scripts''' файл с любым названием и расширением '''.script'''. Пускай, '''my_test.script'''. В нем будем прописывать функции.   &lt;br /&gt;
Рассмотрим простой скрипт спавна предмета в рюкзак ГГ. Пропишем:&amp;lt;lua&amp;gt;--*********************************************&lt;br /&gt;
--**TESTING**&lt;br /&gt;
--*********************************************&lt;br /&gt;
--&lt;br /&gt;
-- Создает в рюкзаке ГГ &amp;quot;калаш&amp;quot;&lt;br /&gt;
function ak_create()&lt;br /&gt;
    alife():create(&amp;quot;wpn_ak74&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Давайте разбирать.&lt;br /&gt;
Игра считывает весь код из файла, поэтому не удивляйтесь, если игра вылетит при наличии лишнего текста, символов и прочего ненужного в скрипте. Однако, подобных проблем возникать не будет, если мы ''закомментируем'' лишнее. Чтобы игра не считывала текст, перед ним мы ставим две черточки, два минуса, два дефиса, в общем называйте как угодно:&amp;lt;lua&amp;gt;--&amp;lt;/lua&amp;gt;&lt;br /&gt;
Часто таким образом оставляют словесную подсказку того, что делает данный участок кода, либо комментируют код, который на данный момент не нужен, но возможно пригодится в дальнейшем. В общем, зачастую комментарий - это пояснения к исходному тексту программы. В данном случае, система не будет считывать следующие строки:&amp;lt;lua&amp;gt;--*********************************************&lt;br /&gt;
--**TESTING**&lt;br /&gt;
--*********************************************&lt;br /&gt;
--&lt;br /&gt;
-- Создает в рюкзаке ГГ &amp;quot;калаш&amp;quot;&amp;lt;/lua&amp;gt;&lt;br /&gt;
Идем дальше.  &lt;br /&gt;
''function'' - всегда обязательное начало, это что-то в роде id в языке '''LUA'''. После ''function'' отступаем и пишем текст. Данный текст может состоять из букв латинского алфавита и цифр, при этом важно, чтобы этот текст начинался с буквы и в нём не содержалось пробелов. Этот текст будет названием функции. Не забываем в конце названия функции дописать две круглые скобки:&lt;br /&gt;
&amp;lt;lua&amp;gt;()&amp;lt;/lua&amp;gt; &lt;br /&gt;
Это обязательный элемент. В нем указываются переменные функции, с которыми идет работа. В нашем случае таковых нету, но элемент обязателен.  &lt;br /&gt;
Дальше идёт сам спавн объекта:&lt;br /&gt;
&amp;lt;lua&amp;gt;alife():create(&amp;quot;wpn_ak74&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())&amp;lt;/lua&amp;gt;&lt;br /&gt;
В конце функции обязательно наличие ''end''. Он означает конец функции. Логично, правда? :)&lt;br /&gt;
 &lt;br /&gt;
Напоминаю, при таком раскладе АК-74 заспавнится в рюкзак ГГ. &lt;br /&gt;
Если же мы пожелаем заспавнить калаш где-нибудь на локации, вызов спавна приобретет следующий вид:&lt;br /&gt;
&amp;lt;lua&amp;gt;alife():create(&amp;quot;wpn_ak74&amp;quot;, vector():set(-81.800, -4.980, -72.739), 186578, 76)&amp;lt;/lua&amp;gt;&lt;br /&gt;
АК заспавнится в вагончике, недалеко от Деревни новичков.&lt;br /&gt;
&lt;br /&gt;
Но без детального разбора мы дальше, пожалуй,не пойдем. В целом, скелет функции спавна таким методом выглядит так:&lt;br /&gt;
&amp;lt;lua&amp;gt;function название_функции()&lt;br /&gt;
    alife():create(&amp;quot;имя_секции_предмета&amp;quot;, vector():set(x,y,z), level_vertex_id, game_vertex_id)&lt;br /&gt;
end&amp;lt;/lua&amp;gt; &lt;br /&gt;
Про конкретные значения.&lt;br /&gt;
''alife():create'' - стандартный вызов спавна&lt;br /&gt;
''vector():set'' - инициализация координат &lt;br /&gt;
''x,y,z'' - координаты места по долготе, высоте, ширине&lt;br /&gt;
''level_vertex_id'' и ''game_vertex_id'' - дополнительные координаты относительно локации &lt;br /&gt;
Все это нужно снимать в игре. Есть множество способов.&lt;br /&gt;
Что касается спавна в рюкзак ГГ, тут с координатами действует немного другая схема. Объект актора можно получить посредством вот такой записи: ''db.actor'', а получить его данные можно вот так:&lt;br /&gt;
&lt;br /&gt;
''db.actor:position()'' - координаты x,y,z актера&lt;br /&gt;
&lt;br /&gt;
''db.actor:level_vertex_id(),db.actor:game_vertex_id()'' - думаю, понятно&lt;br /&gt;
&lt;br /&gt;
''db.actor:id()'' - дополнительный параметр, сам id актера, нужен, чтоб предмет заспавнился именно в рюкзак.&lt;br /&gt;
&lt;br /&gt;
На самом деле, для спавна в инвентарь атору, значение координат, левел и гейм вертексов не важны, а ключевым является последний параметр - '''''id''''' актора, в игре оно всегда равно нулю. Т.е. заспавнить тот же &amp;quot;Калаш&amp;quot; в рюкзак можно и так:&amp;lt;lua&amp;gt;alife():create(&amp;quot;wpn_ak74&amp;quot;, vector(), 0, 0, 0)&amp;lt;/lua&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Написали? Отлично!&lt;br /&gt;
&amp;lt;br&amp;gt;Теперь осталось только подключить это к игре, то есть вызвать функцию спавна.  &lt;br /&gt;
&amp;lt;br&amp;gt;Идём в файл '''dialogs_escape.xml''' и выбираем какой-нибудь диалог. &lt;br /&gt;
&amp;lt;br&amp;gt;Там, после поля ''text'', одной из фраз диалога приписываем: &lt;br /&gt;
&amp;lt;xml&amp;gt;&amp;lt;action&amp;gt;my_test.ak_create&amp;lt;/action&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
Как это понимать:&lt;br /&gt;
&amp;lt;xml&amp;gt;&amp;lt;action&amp;gt;название_скрипта.название_функции&amp;lt;/action&amp;gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Всё, сохраняем и тестируем. В итоге, когда вы в игре нажмёте на фразу после которой находится ''action'', заспауниться калаш на указанных координатах.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Message_box|&lt;br /&gt;
id	=pseudoscience1|&lt;br /&gt;
align = left|&lt;br /&gt;
backgroundcolor	= #f9f9f9|&lt;br /&gt;
image	=Lamp.gif|&lt;br /&gt;
heading	= Углублённое изучение - Rez@niy|&lt;br /&gt;
message = Далее идём в более углублённое изучение. Изучаем построение}}&lt;br /&gt;
&lt;br /&gt;
Прописываем функцию. Задаём условие:&lt;br /&gt;
&amp;lt;code&amp;gt;if =&amp;lt;/code&amp;gt;&lt;br /&gt;
Для закрытия тэга:&lt;br /&gt;
&amp;lt;code&amp;gt;end&amp;lt;/code&amp;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;
''О'' - Цикл это повторение одного и того же действие n-ое кол-во раз&lt;br /&gt;
выглядит так&lt;br /&gt;
&amp;lt;pre&amp;gt;for i=1,n do&lt;br /&gt;
&lt;br /&gt;
end&amp;lt;/pre&amp;gt;&lt;br /&gt;
За место i может быть любая переменная ,за место n - число которое больше первоначального значения(i)&lt;br /&gt;
'''В''' - А для чего можно использовать цикл?&lt;br /&gt;
''О'' - много для чего можно.см. ниже&lt;br /&gt;
Пример 1.Перебор по id/Узнаем монстор ли объект,если да ,то функция возвращает истину(true)&lt;br /&gt;
&amp;lt;lua&amp;gt;for id=1,65535 do&lt;br /&gt;
local obj = level.object_by_id(id)&lt;br /&gt;
if obj~= nil then&lt;br /&gt;
if IsMonster(obj) then&lt;br /&gt;
return true&lt;br /&gt;
else&lt;br /&gt;
return false&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Пример 2.Спавн/&lt;br /&gt;
&amp;lt;lua&amp;gt;for i=1,5 do --функция повторится 5 раз,следовательно будет заспавнено 5 АК &lt;br /&gt;
	local a = vector() &lt;br /&gt;
	a.x = -220.21&lt;br /&gt;
	a.y = -19.93&lt;br /&gt;
	a.z = -158.98&lt;br /&gt;
	alife():create(&amp;quot;wpn_ak47&amp;quot;,a,33447,47,65535)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
и т.п.&lt;br /&gt;
существует ещё цикл  с предусловием (while a,n do),но об этом позже&lt;br /&gt;
'''В''' - Какие параметры ГГ можно корректировать  скриптами?&lt;br /&gt;
''О'' - Таких не много, запись будет такой :&lt;br /&gt;
&amp;lt;pre&amp;gt;db.actor.параметр&amp;lt;/pre&amp;gt;&lt;br /&gt;
Параметры:&lt;br /&gt;
&amp;lt;pre&amp;gt;radiation&lt;br /&gt;
health&lt;br /&gt;
psy_health&lt;br /&gt;
power&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''В''' - а можно ли спавнить в рандомной точке предмет,если да,то как?&lt;br /&gt;
''О'' - можно&lt;br /&gt;
Для этого нам понадобится таблица максимальных значений ''level_vertex_id'' и ''game_vertex_id''&lt;br /&gt;
выглядит она так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;local level_vertexes={&lt;br /&gt;
l01_escape = {lvid=595580, gvid=44},&lt;br /&gt;
l02_garbage = {lvid=384039, gvid=265},&lt;br /&gt;
l03_agroprom = {lvid=438379, gvid=693},&lt;br /&gt;
l04_darkvalley = {lvid=392517, gvid=813},&lt;br /&gt;
l06_rostok = {lvid=69283, gvid=1311},&lt;br /&gt;
l07_military = {lvid=915663, gvid=1546},&lt;br /&gt;
l10_radar = {lvid=796328, gvid=1868},&lt;br /&gt;
l11_pripyat = {lvid=295965, gvid=2269}&lt;br /&gt;
}&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ЗЫ:Извините ,что не для всех уровней,исправлюсь &lt;br /&gt;
Так,таблица у нас есть ,теперь нам нужно написать функцию спавна.Давайте покажу на Монстрах&lt;br /&gt;
создадим таблицу с секциями спавна монстров:&lt;br /&gt;
(Я буду использовать свои наработки ,поэтому таких секции у вас не будет ,эта таблица -пример)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;local mutants = {&lt;br /&gt;
&amp;quot;zombie_ghost_hell&amp;quot;,&lt;br /&gt;
&amp;quot;zombie_normal_hell&amp;quot;,&lt;br /&gt;
&amp;quot;zombie_immortal_hell&amp;quot;,&lt;br /&gt;
&amp;quot;bloodsucker_weak_hell&amp;quot;,&lt;br /&gt;
&amp;quot;tushkano_normal_hell&amp;quot;,&lt;br /&gt;
&amp;quot;snork_weak_hell&amp;quot;,&lt;br /&gt;
&amp;quot;burer_weak_hell&amp;quot;,&lt;br /&gt;
&amp;quot;cat_weak_hell&amp;quot;,&lt;br /&gt;
&amp;quot;chimera_weak_hell&amp;quot;,&lt;br /&gt;
&amp;quot;gigant_strong_hell&amp;quot;&lt;br /&gt;
}&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Таблицу записали ,наконец приступим к оформлению главной функции&lt;br /&gt;
&amp;lt;lua&amp;gt;function random_spawn()&lt;br /&gt;
local count = math.random(5,20) --выбираем кол-во заспавненых мобов&lt;br /&gt;
local section = mutants[math.random(table.getn(mutants))] -- выбираем секцию моба&lt;br /&gt;
local lv = math.random(level_vertexes[level.name()][&amp;quot;lvid&amp;quot;]) --выбираем левел вертекс&lt;br /&gt;
local gv = level_vertexes[level.name()][&amp;quot;gvid&amp;quot;] --выбираем гэйм вертекс&lt;br /&gt;
for ind = 1, count do&lt;br /&gt;
alife():create(section, level.vertex_position(lv), lv, gv)--\\level.vertex_position(lv) - позиция левел вертекса&lt;br /&gt;
end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее помещаем вызов функции в '''bind_stalker.script''' в ''net_spawn()'' и при каждой загрузке будут спавнится мобы в рандомной точке&lt;br /&gt;
[[Категория:Скрипты]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Вступление ГГ в группировку!&amp;lt;/big&amp;gt;&lt;br /&gt;
1.Создаем файл '''ваше_название_скприпта.script''' в папке '''gamedata/scripts'''&lt;br /&gt;
2. Открываем его и пишем:&lt;br /&gt;
--меняем группировку ГГ&lt;br /&gt;
&amp;lt;lua&amp;gt;function new_group(actor, npc)&lt;br /&gt;
if npc:character_community() ~= &amp;quot;(dolg)&amp;quot; then &lt;br /&gt;
npc:set_character_community(&amp;quot;dolg&amp;quot;, 0, 0) &lt;br /&gt;
end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Выдаём функцию при разговоре с НПС&lt;br /&gt;
&lt;br /&gt;
НПС вступает в группировку&lt;br /&gt;
&amp;lt;pre&amp;gt;function ваше_название_функции(npc, actor)&amp;lt;/pre&amp;gt;&lt;br /&gt;
Вызываем также, из любого диалога&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Нельзя взять оружие без брони&amp;lt;/big&amp;gt;&lt;br /&gt;
Пишем функцию в любом скрипе:&lt;br /&gt;
&amp;lt;lua&amp;gt;function ваше_название_функции()&lt;br /&gt;
local armor = db.actor:item_in_slot(6) --слот брони (НЕ ТРОГАТЬ!)&lt;br /&gt;
local weapon = db.actor:item_in_slot(2) --слот оружия (для пистолетов в оригинале слот 1)&lt;br /&gt;
&lt;br /&gt;
if db.actor:active_slot()==2 and weapon then -- за место 2 пишем слот оружия еще раз&lt;br /&gt;
local tmp&lt;br /&gt;
if armor then&lt;br /&gt;
tmp = armor:section()&lt;br /&gt;
else&lt;br /&gt;
tmp = &amp;quot;none&amp;quot;&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;if (not string.find(tmp, &amp;quot;пишем_название_брони&amp;quot; )) and (weapon:section()==&amp;quot;пишем_название_оружия1&amp;quot; or weapon:section()==&amp;quot;пишем_название_оружия2&amp;quot; or weapon:section()==&amp;quot;пишем_название_оружия3&amp;quot;) then --если необходима проверка одного оружия то надо писать так: if (not string.find(tmp, &amp;quot;exo&amp;quot; )) and weapon:section()==&amp;quot;wpn_pkm&amp;quot; then&lt;br /&gt;
db.actor:drop_item(weapon)&lt;br /&gt;
local tmpw = amk.spawn_item_in_inv(weapon:section())&lt;br /&gt;
db.actor:transfer_item(weapon,db.actor)&lt;br /&gt;
alife():release(tmpw)&lt;br /&gt;
news_manager.send_tip(db.actor,&amp;quot;Невозможно взять пулемёт в руки без экзы&amp;quot;,nil,nil,10000)&lt;br /&gt;
end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее идем по пути '''gamedata/script/bind_stalker.script'''&lt;br /&gt;
Функция: &lt;br /&gt;
&amp;lt;pre&amp;gt;function actor_binder:update(delta)&amp;lt;/pre&amp;gt;&lt;br /&gt;
Сразу ниже неё пиши вызов в формате :&lt;br /&gt;
&amp;lt;code&amp;gt;название_файла.название_функции&amp;lt;/code&amp;gt;&lt;br /&gt;
Можешь написать эту функцию в любом файле из папки '''scripts''', а можешь создать свой файл и назвать, скажем, '''my_script''', и написать там.&lt;br /&gt;
Должно быть так :&lt;br /&gt;
Код&lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:update(delta)&lt;br /&gt;
my_script.check_armor()&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Удаление предмета из инвентаря&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function name_function()&lt;br /&gt;
local se_obj = alife():object(&amp;quot;сюда_пишем_что_удалять_будем&amp;quot;)&lt;br /&gt;
if se_obj then&lt;br /&gt;
alife():release(se_obj, true)&lt;br /&gt;
end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ПРИМЕР&lt;br /&gt;
--' убираем финального Клыка&lt;br /&gt;
&amp;lt;lua&amp;gt;function dell_kluk_final()&lt;br /&gt;
local se_obj = alife():object(&amp;quot;final_kluk&amp;quot;)&lt;br /&gt;
if se_obj then&lt;br /&gt;
alife():release(se_obj, true)&lt;br /&gt;
end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Я добвлю может кому и пригодится.'''Болотный Доктор'''&lt;br /&gt;
&lt;br /&gt;
         ВЫДАЁМ ПРЕДМЕТ АКТОРУ&lt;br /&gt;
&amp;lt;lua&amp;gt;function название функции (first_speaker, second_speaker)&lt;br /&gt;
dialogs.relocate_item_section(second_speaker, &amp;quot;название предмета&amp;quot;, &amp;quot;in&amp;quot;) &lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Размещается в файлах скрипт.&lt;br /&gt;
&lt;br /&gt;
Выдача поршня вставляется под строку действия.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Примечание, что бы выдать два одинаковых предмета пишем&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function название функции (first_speaker, second_speaker)&lt;br /&gt;
dialogs.relocate_item_section(second_speaker, &amp;quot;название предмета&amp;quot;, &amp;quot;in&amp;quot;,2) &lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если надо больше меняем цифру 2 на нужную нам.&lt;br /&gt;
&lt;br /&gt;
      ОТБИРАЕМ ПРЕДМЕТ У АКТОРА.&lt;br /&gt;
&amp;lt;lua&amp;gt;function название функции(first_speaker, second_speaker)&lt;br /&gt;
    dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, &amp;quot;название предмета&amp;quot;)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
размещается в файлах скрипт&lt;br /&gt;
&lt;br /&gt;
выдача поршня вставляется под строку действия:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Примечание, что бы отобрать два одинаковых предмета пишем&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function название функции(first_speaker, second_speaker)&lt;br /&gt;
    dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, &amp;quot;название предмета&amp;quot;,2)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
Если надо больше меняем цифру 2 на нужную нам.&lt;br /&gt;
&lt;br /&gt;
      СПАВНИМ ВЕЩЬ В РЮКЗАК гг&lt;br /&gt;
&amp;lt;lua&amp;gt;function название функции()&lt;br /&gt;
local obj = alife():create(&amp;quot;ВЕЩЬ&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В диалог:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ПРОВЕРКА НАЛИЧИЯ У АКТОРА ПРЕДМЕТА&lt;br /&gt;
Вариант первый&lt;br /&gt;
&amp;lt;lua&amp;gt;function Название функции()&lt;br /&gt;
    if db.actor:object(&amp;quot;название предмета&amp;quot;) then&lt;br /&gt;
        return true&lt;br /&gt;
    end&lt;br /&gt;
    return false&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
в диалог:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;precondition&amp;gt;имя скрипта.название функции&amp;lt;/precondition&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;---------Вариант второй)------------------&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function название функции(first_speaker, second_speaker)&lt;br /&gt;
    return first_speaker:object(&amp;quot;название предмета&amp;quot;) ~= nil&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
в диалог:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;precondition&amp;gt;имя скрипта.название функции&amp;lt;/precondition&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ПРОВЕРКА ВЕЩЕЙ У ГГ&lt;br /&gt;
&amp;lt;lua&amp;gt;function Название функции(first_speaker, second_speaker)&lt;br /&gt;
    return first_speaker:object(&amp;quot;название предмета&amp;quot;) ~= nil or&lt;br /&gt;
             first_speaker:object(&amp;quot;название предмета&amp;quot;) ~= nil or&lt;br /&gt;
             first_speaker:object(&amp;quot;название предмета&amp;quot;) ~= nil&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
в диалог:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;precondition&amp;gt;имя скрипта.название функции&amp;lt;/precondition&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
описание... если есть хотя бы одна вещь, то мы получим фразу, если нет всех нет разговора&lt;br /&gt;
&lt;br /&gt;
ПРОВЕРКА ДЕНЕГ У ГГ&lt;br /&gt;
Вариант первый(используют ПЫС)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function название функции(first_speaker, second_speaker)&lt;br /&gt;
    return first_speaker:money() &amp;gt;= 2000&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
в диалог: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;precondition&amp;gt;имя скрипта.название функции&amp;lt;/precondition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;-----------Вариант два--------------&amp;gt;&lt;br /&gt;
Использовал на ТЧ, но и в ЗП работает&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function название функции()&lt;br /&gt;
return db.actor:money()&amp;gt;=10000&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
В диалог: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;precondition&amp;gt;имя скрипта.название функции&amp;lt;/precondition&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
СПАВН ПРЕДМЕТА&lt;br /&gt;
&amp;lt;lua&amp;gt;function spawn_vintar()&lt;br /&gt;
alife():create(&amp;quot;Название предмета&amp;quot;,vector():set(24.725412368774,-3.6072344779968,173.83030700684),993926,210)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В диалог:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
МГНОВЕННАЯ СМЕРТЬ ГГ&lt;br /&gt;
&amp;lt;lua&amp;gt;function название функции(npc, actor)&lt;br /&gt;
    npc:kill(actor)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В диалог:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ПРОВЕРКА КОЛ_ВА ОДИНАКОВЫХ ПРЕДМЕТОВ&lt;br /&gt;
&amp;lt;lua&amp;gt;function название функции(first_speaker, second_speaker)&lt;br /&gt;
        local item_sections = {&amp;quot;Предмет&amp;quot;} &lt;br /&gt;
        local needed = количество одинаковых предметов, ставится цифра без знаков &lt;br /&gt;
        local count = 0&lt;br /&gt;
        local item_section&lt;br /&gt;
    local function calc(temp, item)&lt;br /&gt;
        if item:section() == item_section then&lt;br /&gt;
        count = count + 1&lt;br /&gt;
end&lt;br /&gt;
end&lt;br /&gt;
    for k,v in pairs(item_sections) do&lt;br /&gt;
    item_section = v&lt;br /&gt;
    get_story_object(&amp;quot;actor&amp;quot;):iterate_inventory(calc, actor)&lt;br /&gt;
end&lt;br /&gt;
    return count &amp;gt;= needed&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В диалог:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;precondition&amp;gt;имя скрипта.название функции&amp;lt;/precondition&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ЛЕЧЕНИЕ ГГ &lt;br /&gt;
Вставим этот актион в диалог:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;action&amp;gt;dialogs.medic_magic_potion&amp;lt;/action&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ВЫДАЧА ДЕНЕГ от НПС ГГ&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function название функции(first_speaker, second_speaker)&lt;br /&gt;
    dialogs.relocate_money_to_actor(first_speaker, second_speaker, 2000)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В диалог:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ВЫДАЧА ДЕНЕГ от ГГ  НПС&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function название функции(actor, npc)&lt;br /&gt;
   dialogs.relocate_money(npc,кол-во,&amp;quot;out&amp;quot;)   &lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В диалог:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
НПС становится врагом после определенной ветки диалона или другом  -5000 враг  5000 друг&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function название скрипта(actor, npc)                                            &lt;br /&gt;
    npc:force_set_goodwill(-5000, actor)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ПРОВЕРКА СМЕРТИ NPC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function название функции проверки(actor,npc)&lt;br /&gt;
   return has_alife_info(&amp;quot;инфо смерти&amp;quot;)&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В диалог: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;precondition&amp;gt;имя скрипта.название функции&amp;lt;/precondition&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Авторы ==&lt;br /&gt;
'''Оригинальный вид статьи:'''&lt;br /&gt;
*Rez@nyi&lt;br /&gt;
*Меченый&lt;br /&gt;
*Болотный Доктор&lt;br /&gt;
'''Переоформление, перестройка, дополнение статьи:''' &lt;br /&gt;
*FantomICW&lt;/div&gt;</summary>
		<author><name>95.135.223.167</name></author>	</entry>

	</feed>