<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://stalkerin.gameru.net/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://stalkerin.gameru.net/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=178.129.188.56&amp;*</id>
		<title>S.T.A.L.K.E.R. Inside Wiki - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://stalkerin.gameru.net/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=178.129.188.56&amp;*"/>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/178.129.188.56"/>
		<updated>2026-04-30T05:43:17Z</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>2010-10-29T13:25:45Z</updated>
		
		<summary type="html">&lt;p&gt;178.129.188.56: &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;
&amp;lt;pre&amp;gt;Итак начнём. Рассмотрим простой скрипт спавна предмета:&lt;br /&gt;
--*********************************************&lt;br /&gt;
--**TESTING**&lt;br /&gt;
--*********************************************&lt;br /&gt;
--&lt;br /&gt;
-- Создает в заданном месте калаш&lt;br /&gt;
function ak_create()&lt;br /&gt;
	local a = vector() -- db.actor:position()&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;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;ИМЯ ФУНКЦИИ&amp;lt;/big&amp;gt;&lt;br /&gt;
function - всегда обязательное поле, это что то вроде id, в языке LUA. После поля function отступаем и пишем текст произвольный. &lt;br /&gt;
Дальше идёт функциия о позиции, она обязательна для спавна скриптом.&lt;br /&gt;
Ниже кординаты. Для снятия кординат используем в консоли rs_stats on.&lt;br /&gt;
После кординат идёт сама функция спавна. &amp;lt;big&amp;gt;alife():create(&amp;quot;СИСТЕМНОЕ ИМЯ ОБЬЕКТА&amp;quot;,a,33447,47,65535)&amp;lt;/big&amp;gt;&lt;br /&gt;
Цифры пусть остануться такие же. Для обьекта спавна возмём wpn_ak47. Кординаты какие то левые, лучше снимите кординаты сами. И ещё кое что важное. В папке scripts, создаём файл main.script и пишем туда готовый текст, только со своими кординатами.&lt;br /&gt;
&amp;lt;pre&amp;gt;--*********************************************&lt;br /&gt;
--**TESTING**&lt;br /&gt;
--*********************************************&lt;br /&gt;
--&lt;br /&gt;
-- Создает в заданном месте калаш&lt;br /&gt;
function ak_create()&lt;br /&gt;
	local a = vector() -- db.actor:position()&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;/pre&amp;gt;&lt;br /&gt;
Написали? Отлично!. Теперь осталось только подключить это к игре.  Идём в файл dialogs_escape.xml и выбираем какое нить диалог. Там после поля text в диалоге приписываем &amp;lt;action&amp;gt;main.ak_create&amp;lt;/action&amp;gt;&lt;br /&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;
if =&lt;br /&gt;
Для закрытия тэга end&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;pre&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;/pre&amp;gt;&lt;br /&gt;
Пример 2.Спавн/&lt;br /&gt;
&amp;lt;pre&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;/pre&amp;gt;&lt;br /&gt;
и т.п.&lt;br /&gt;
существует ещё цикл  с предусловием (while a,n do),но об этом позже&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;pre&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;/pre&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;pre&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;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Таблицу записали ,наконец приступим к оформлению главной функции&lt;br /&gt;
&amp;lt;pre&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;/pre&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;pre&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;/pre&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;
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&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&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;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее идем по этому пути &amp;lt;pre&amp;gt;gamedata/script/bind_stalker.script&amp;lt;/pre&amp;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;
название_файла.название_функции.&lt;br /&gt;
Можешь написать эту функцию в любом файле из папки scripts, а можешь создать свой файл и назвать скажем my_script и написать там.&lt;br /&gt;
Должно быть так :&lt;br /&gt;
Код&lt;br /&gt;
&amp;lt;pre&amp;gt;function actor_binder:update(delta)&lt;br /&gt;
my_script.check_armor()&amp;lt;/pre&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;pre&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;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ПРИМЕР&lt;br /&gt;
--' убираем финального Клыка&lt;br /&gt;
&amp;lt;pre&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;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Я добвлю может кому и пригодится.'''Болотный Доктор'''&lt;br /&gt;
&lt;br /&gt;
         ВЫДАЁМ ПРЕДМЕТ АКТОРУ&lt;br /&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&lt;br /&gt;
&lt;br /&gt;
Размещается в файлах скрипт.&lt;br /&gt;
&lt;br /&gt;
Выдача поршня вставляется под строку действия.&lt;br /&gt;
&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Примечание, что бы выдать два одинаковых предмета пишем&lt;br /&gt;
&lt;br /&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&lt;br /&gt;
&lt;br /&gt;
Если надо больше меняем цифру 2 на нужную нам.&lt;br /&gt;
&lt;br /&gt;
      ОТБИРАЕМ ПРЕДМЕТ У АКТОРА.&lt;br /&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&lt;br /&gt;
&lt;br /&gt;
размещается в файлах скрипт&lt;br /&gt;
&lt;br /&gt;
выдача поршня вставляется под строку действия&lt;br /&gt;
&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Примечание, что бы отобрать два одинаковых предмета пишем&lt;br /&gt;
&lt;br /&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&lt;br /&gt;
&lt;br /&gt;
Если надо больше меняем цифру 2 на нужную нам.&lt;br /&gt;
&lt;br /&gt;
      СПАВНИМ ВЕЩЬ В РЮКЗАК гг&lt;br /&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&lt;br /&gt;
&lt;br /&gt;
В диалог&lt;br /&gt;
&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ПРОВЕРКА НАЛИЧИЯ У АКТОРА ПРЕДМЕТА&lt;br /&gt;
Вариант первый&lt;br /&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&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;
function название функции(first_speaker, second_speaker)&lt;br /&gt;
    return first_speaker:object(&amp;quot;название предмета&amp;quot;) ~= nil&lt;br /&gt;
end&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;
ПРОВЕРКА ВЕЩЕЙ У ГГ&lt;br /&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&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;
описание... если есть хотя бы одна вещь, то мы получим фразу, если нет всех нет разговора&lt;br /&gt;
&lt;br /&gt;
ПРОВЕРКА ДЕНЕГ У ГГ&lt;br /&gt;
Вариант первый(используют ПЫС)&lt;br /&gt;
&lt;br /&gt;
function название функции(first_speaker, second_speaker)&lt;br /&gt;
    return first_speaker:money() &amp;gt;= 2000&lt;br /&gt;
end&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;
function название функции()&lt;br /&gt;
return db.actor:money()&amp;gt;=10000&lt;br /&gt;
end&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;
СПАВН ПРЕДМЕТА&lt;br /&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&lt;br /&gt;
&lt;br /&gt;
В диалог&lt;br /&gt;
&lt;br /&gt;
&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
МГНОВЕННАЯ СМЕРТЬ ГГ&lt;br /&gt;
function название функции(npc, actor)&lt;br /&gt;
    npc:kill(actor)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
В диалог&lt;br /&gt;
&lt;br /&gt;
&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ПРОВЕРКА КОЛ_ВА ОДИНАКОВЫХ ПРЕДМЕТОВ&lt;br /&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;
&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;
ЛЕЧЕНИЕ ГГ &lt;br /&gt;
Вставим этот актион в диалог&lt;br /&gt;
&lt;br /&gt;
&amp;lt;action&amp;gt;dialogs.medic_magic_potion&amp;lt;/action&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ВЫДАЧА ДЕНЕГ от НПС ГГ&lt;br /&gt;
&lt;br /&gt;
function название функции(first_speaker, second_speaker)&lt;br /&gt;
    dialogs.relocate_money_to_actor(first_speaker, second_speaker, 2000)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
В диалог&lt;br /&gt;
&lt;br /&gt;
&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ВЫДАЧА ДЕНЕГ от ГГ  НПС&lt;br /&gt;
&lt;br /&gt;
function название функции(actor, npc)&lt;br /&gt;
   dialogs.relocate_money(npc,кол-во,&amp;quot;out&amp;quot;)   &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
В диалог&lt;br /&gt;
&lt;br /&gt;
&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&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;
function название скрипта(actor, npc)                                            &lt;br /&gt;
    npc:force_set_goodwill(-5000, actor)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ПРОВЕРКА СМЕРТТИ NPS&lt;br /&gt;
&lt;br /&gt;
function название функции проверки(actor,npc)&lt;br /&gt;
   return has_alife_info(&amp;quot;инфо смерти&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
в диалог &lt;br /&gt;
&lt;br /&gt;
&amp;lt;precondition&amp;gt;имя скрипта.название функции&amp;lt;/precondition&amp;gt;&lt;/div&gt;</summary>
		<author><name>178.129.188.56</name></author>	</entry>

	<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>2010-10-29T13:23:58Z</updated>
		
		<summary type="html">&lt;p&gt;178.129.188.56: &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;
&amp;lt;pre&amp;gt;Итак начнём. Рассмотрим простой скрипт спавна предмета:&lt;br /&gt;
--*********************************************&lt;br /&gt;
--**TESTING**&lt;br /&gt;
--*********************************************&lt;br /&gt;
--&lt;br /&gt;
-- Создает в заданном месте калаш&lt;br /&gt;
function ak_create()&lt;br /&gt;
	local a = vector() -- db.actor:position()&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;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;ИМЯ ФУНКЦИИ&amp;lt;/big&amp;gt;&lt;br /&gt;
function - всегда обязательное поле, это что то вроде id, в языке LUA. После поля function отступаем и пишем текст произвольный. &lt;br /&gt;
Дальше идёт функциия о позиции, она обязательна для спавна скриптом.&lt;br /&gt;
Ниже кординаты. Для снятия кординат используем в консоли rs_stats on.&lt;br /&gt;
После кординат идёт сама функция спавна. &amp;lt;big&amp;gt;alife():create(&amp;quot;СИСТЕМНОЕ ИМЯ ОБЬЕКТА&amp;quot;,a,33447,47,65535)&amp;lt;/big&amp;gt;&lt;br /&gt;
Цифры пусть остануться такие же. Для обьекта спавна возмём wpn_ak47. Кординаты какие то левые, лучше снимите кординаты сами. И ещё кое что важное. В папке scripts, создаём файл main.script и пишем туда готовый текст, только со своими кординатами.&lt;br /&gt;
&amp;lt;pre&amp;gt;--*********************************************&lt;br /&gt;
--**TESTING**&lt;br /&gt;
--*********************************************&lt;br /&gt;
--&lt;br /&gt;
-- Создает в заданном месте калаш&lt;br /&gt;
function ak_create()&lt;br /&gt;
	local a = vector() -- db.actor:position()&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;/pre&amp;gt;&lt;br /&gt;
Написали? Отлично!. Теперь осталось только подключить это к игре.  Идём в файл dialogs_escape.xml и выбираем какое нить диалог. Там после поля text в диалоге приписываем &amp;lt;action&amp;gt;main.ak_create&amp;lt;/action&amp;gt;&lt;br /&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;
if =&lt;br /&gt;
Для закрытия тэга end&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;pre&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;/pre&amp;gt;&lt;br /&gt;
Пример 2.Спавн/&lt;br /&gt;
&amp;lt;pre&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;/pre&amp;gt;&lt;br /&gt;
и т.п.&lt;br /&gt;
существует ещё цикл  с предусловием (while a,n do),но об этом позже&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;pre&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;/pre&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;pre&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;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Таблицу записали ,наконец приступим к оформлению главной функции&lt;br /&gt;
&amp;lt;pre&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;/pre&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;pre&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;/pre&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;
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&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&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;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее идем по этому пути &amp;lt;pre&amp;gt;gamedata/script/bind_stalker.script&amp;lt;/pre&amp;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;
название_файла.название_функции.&lt;br /&gt;
Можешь написать эту функцию в любом файле из папки scripts, а можешь создать свой файл и назвать скажем my_script и написать там.&lt;br /&gt;
Должно быть так :&lt;br /&gt;
Код&lt;br /&gt;
&amp;lt;pre&amp;gt;function actor_binder:update(delta)&lt;br /&gt;
my_script.check_armor()&amp;lt;/pre&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;pre&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;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ПРИМЕР&lt;br /&gt;
--' убираем финального Клыка&lt;br /&gt;
&amp;lt;pre&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;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Я добвлю может кому и пригодится.'''Болотный Доктор'''&lt;br /&gt;
&lt;br /&gt;
         ВЫДАЁМ ПРЕДМЕТ АКТОРУ&lt;br /&gt;
&lt;br /&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&lt;br /&gt;
&lt;br /&gt;
Размещается в файлах скрипт.&lt;br /&gt;
&lt;br /&gt;
Выдача поршня вставляется под строку действия.&lt;br /&gt;
&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Примечание, что бы выдать два одинаковых предмета пишем&lt;br /&gt;
&lt;br /&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&lt;br /&gt;
&lt;br /&gt;
Если надо больше меняем цифру 2 на нужную нам.&lt;br /&gt;
&lt;br /&gt;
      ОТБИРАЕМ ПРЕДМЕТ У АКТОРА.&lt;br /&gt;
&lt;br /&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&lt;br /&gt;
&lt;br /&gt;
размещается в файлах скрипт&lt;br /&gt;
&lt;br /&gt;
выдача поршня вставляется под строку действия&lt;br /&gt;
&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Примечание, что бы отобрать два одинаковых предмета пишем&lt;br /&gt;
&lt;br /&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&lt;br /&gt;
&lt;br /&gt;
Если надо больше меняем цифру 2 на нужную нам.&lt;br /&gt;
&lt;br /&gt;
      СПАВНИМ ВЕЩЬ В РЮКЗАК гг&lt;br /&gt;
&lt;br /&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&lt;br /&gt;
&lt;br /&gt;
В диалог&lt;br /&gt;
&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ПРОВЕРКА НАЛИЧИЯ У АКТОРА ПРЕДМЕТА&lt;br /&gt;
&lt;br /&gt;
Вариант первый&lt;br /&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&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;
function название функции(first_speaker, second_speaker)&lt;br /&gt;
    return first_speaker:object(&amp;quot;название предмета&amp;quot;) ~= nil&lt;br /&gt;
end&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;
ПРОВЕРКА ВЕЩЕЙ У ГГ&lt;br /&gt;
&lt;br /&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&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;
описание... если есть хотя бы одна вещь, то мы получим фразу, если нет всех нет разговора&lt;br /&gt;
&lt;br /&gt;
ПРОВЕРКА ДЕНЕГ У ГГ&lt;br /&gt;
&lt;br /&gt;
Вариант первый(используют ПЫС)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function название функции(first_speaker, second_speaker)&lt;br /&gt;
    return first_speaker:money() &amp;gt;= 2000&lt;br /&gt;
end&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;
function название функции()&lt;br /&gt;
return db.actor:money()&amp;gt;=10000&lt;br /&gt;
end&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;
СПАВН ПРЕДМЕТА&lt;br /&gt;
&lt;br /&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&lt;br /&gt;
&lt;br /&gt;
В диалог&lt;br /&gt;
&lt;br /&gt;
&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
МГНОВЕННАЯ СМЕРТЬ ГГ&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function название функции(npc, actor)&lt;br /&gt;
    npc:kill(actor)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
В диалог&lt;br /&gt;
&lt;br /&gt;
&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ПРОВЕРКА КОЛ_ВА ОДИНАКОВЫХ ПРЕДМЕТОВ&lt;br /&gt;
&lt;br /&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;
&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;
ЛЕЧЕНИЕ ГГ &lt;br /&gt;
&lt;br /&gt;
Вставим этот актион в диалог&lt;br /&gt;
&lt;br /&gt;
&amp;lt;action&amp;gt;dialogs.medic_magic_potion&amp;lt;/action&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ВЫДАЧА ДЕНЕГ от НПС ГГ&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function название функции(first_speaker, second_speaker)&lt;br /&gt;
    dialogs.relocate_money_to_actor(first_speaker, second_speaker, 2000)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
В диалог&lt;br /&gt;
&lt;br /&gt;
&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ВЫДАЧА ДЕНЕГ от ГГ  НПС&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function название функции(actor, npc)&lt;br /&gt;
   dialogs.relocate_money(npc,кол-во,&amp;quot;out&amp;quot;)   &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
В диалог&lt;br /&gt;
&lt;br /&gt;
&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&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;
function название скрипта(actor, npc)                                            &lt;br /&gt;
    npc:force_set_goodwill(-5000, actor)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;action&amp;gt;название скрипта.название функции&amp;lt;/action&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ПРОВЕРКА СМЕРТТИ NPS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function название функции проверки(actor,npc)&lt;br /&gt;
   return has_alife_info(&amp;quot;инфо смерти&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
в диалог &lt;br /&gt;
&lt;br /&gt;
&amp;lt;precondition&amp;gt;имя скрипта.название функции&amp;lt;/precondition&amp;gt;&lt;/div&gt;</summary>
		<author><name>178.129.188.56</name></author>	</entry>

	</feed>