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

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%80%D0%B5%D0%BC%D0%BE%D0%BD%D1%82_%D0%BA%D0%BE%D0%BC%D0%BF%D0%BB%D0%B5%D0%BA%D1%82%D0%BE%D0%B2</id>
		<title>SoC. Создание ремонт комплектов</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%80%D0%B5%D0%BC%D0%BE%D0%BD%D1%82_%D0%BA%D0%BE%D0%BC%D0%BF%D0%BB%D0%B5%D0%BA%D1%82%D0%BE%D0%B2"/>
				<updated>2013-06-18T14:41:07Z</updated>
		
		<summary type="html">&lt;p&gt;212.66.38.80: /* Работа со скриптами */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Создание ремонт комплекта===&lt;br /&gt;
Я опишу пример создания ремонт комплекта для костюмов, а для оружия в конце статьи сделаю пару заметок. Дело в том, что различия в создании ремонт комплектов почти нет.&lt;br /&gt;
 &lt;br /&gt;
1. Для начала нам нужно создать сам ремонт комплект, то есть предмет, а уже потом вешать на него функцию при использование. Для этого в config\misc\items.ltx в конец добавляем конфиг нашего предмета:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;[repair_kit_outfit]:identity_immunities&lt;br /&gt;
GroupControlSection	= spawn_group&lt;br /&gt;
discovery_dependency    =&lt;br /&gt;
$spawn 			= &amp;quot;food and drugs\repair kit outfit&amp;quot;&lt;br /&gt;
$prefetch 		= 32&lt;br /&gt;
class			= II_ANTIR ;класс не трогаем!&lt;br /&gt;
cform                   = skeleton&lt;br /&gt;
visual                  = equipments\item_merger.ogf ;модель&lt;br /&gt;
description		= enc_equipment_repair_kit_outfit ;ссылка на описание в config\text\rus\....xml&lt;br /&gt;
&lt;br /&gt;
inv_name		= repair_kit_outfit_name ;ссылка на название в config\text\rus\....xml&lt;br /&gt;
inv_name_short		= repair_kit_outfit_name ;тоже самое, что и inv_name&lt;br /&gt;
inv_weight		= 6.0 ;вес&lt;br /&gt;
&lt;br /&gt;
inv_grid_width		= 2 ;ширина иконки&lt;br /&gt;
inv_grid_height		= 1 ;высота иконки&lt;br /&gt;
inv_grid_x		= 8 ;координата x иконки&lt;br /&gt;
inv_grid_y		= 18 ;координата y иконки&lt;br /&gt;
cost			= 10000 ;цена&lt;br /&gt;
;всё ниже написанное не трогаем, оно нам и не нужно&lt;br /&gt;
eat_health = 0&lt;br /&gt;
eat_satiety = 0&lt;br /&gt;
eat_power = 0&lt;br /&gt;
eat_radiation = 0&lt;br /&gt;
wounds_heal_perc = 0&lt;br /&gt;
eat_portions_num = 1&lt;br /&gt;
animation_slot = 4&lt;br /&gt;
hud = wpn_vodka_hud&amp;lt;/pre&amp;gt;&lt;br /&gt;
2. Теперь добавим название и описание. Для этого в файле config\text\rus\string_table_enc_equipment.xml в конец между &amp;lt;/string&amp;gt; и &amp;lt;/string_table&amp;gt; добавляем строки по аналогии с уже написсанными: &lt;br /&gt;
       &amp;lt;pre&amp;gt;&amp;lt;string id=&amp;quot;repair_kit_outfit_name&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;text&amp;gt;Ремонт комплект ДПК&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;/string&amp;gt;&lt;br /&gt;
        &amp;lt;string id=&amp;quot;enc_equipment_repair_kit_outfit&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;text&amp;gt;Новинка от Вани Болта - ремонт комплект ДПК для быстрой и эффективной починки костюмов. При его создании были учтены все недочёты и, следовательно, удалены. Благодаря улучшенным инструментам и деталям, а также облегченному весу весьма ценен. С его помощью можно увеличить состояние костюма до 100%, если он повреждён не больше 30%. Незаменимая вещь во время вылазки.&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;/string&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Отлично, с предметом закончили. Теперь приступим к самому главному - скриптам. &lt;br /&gt;
===Работа со скриптами===&lt;br /&gt;
1.Вешаем функцию починки при использовании нашего ремонт комплекта. &lt;br /&gt;
Для этого в файле '''scripts\bind_stalker.script''' &lt;br /&gt;
находим функцию:&lt;br /&gt;
&lt;br /&gt;
function actor_binder:net_destroy() и после строки &lt;br /&gt;
&lt;br /&gt;
self.object:set_callback(callback.take_item_from_box, nil) пишем: &lt;br /&gt;
&lt;br /&gt;
self.object:set_callback(callback.use_object, nil)&lt;br /&gt;
&lt;br /&gt;
И теперь находим функцию&lt;br /&gt;
&lt;br /&gt;
function actor_binder:reinit() и после строки &lt;br /&gt;
&lt;br /&gt;
self.object:set_callback(callback.take_item_from_box, self.take_item_from_box, self) пишем: &lt;br /&gt;
&lt;br /&gt;
self.object:set_callback(callback.use_object, self.repair_outfit_start, self)&lt;br /&gt;
&lt;br /&gt;
Теперь в папке scripts создаёте свой скриптовой фаил ваше_название_скрипта.script. Но! Название должно быть написано на английском языке и вместо пробелов должен стоять знак &amp;quot;_&amp;quot;. Опять открываем bind_stalker.script и в самый конец добавляем эту функцию: &lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:repair_outfit_start(obj, who)&lt;br /&gt;
    if obj then &lt;br /&gt;
        if obj:section() == &amp;quot;repair_kit_outfit&amp;quot; then --здесь указываем предмет, при использование которого будет срабатывать функция ниже&lt;br /&gt;
        ваше_название_скрипта.repair_outfit() --здесь указываем ссылку на функцию. Сначала скрипт, в котором она написана, потом название самой функции&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&amp;lt;/lua&amp;gt;&lt;br /&gt;
2. Добавляем саму функцию ремонта. &lt;br /&gt;
Для этого в файле ваше_название_скрипта.script пишем: &lt;br /&gt;
&amp;lt;lua&amp;gt; -- Ремонт комплект для костюмов&lt;br /&gt;
function repair_outfit()&lt;br /&gt;
local item_s6 = db.actor:item_in_slot(6) --объявляем переменную (item_s6)&lt;br /&gt;
    if item_s6 ~= nil and item_s6:condition() &amp;gt;=0.30 and item_s6:condition() ~=1 then --когда костюм можно чинить (состояние больше или равно 30%)&lt;br /&gt;
        item_s6:set_condition(1)&lt;br /&gt;
        local snd_obj = xr_sound.get_safe_sound_object([[interface\inv_detach_addon]])&lt;br /&gt;
        snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)&lt;br /&gt;
        local news_text = &amp;quot;%c[255,160,160,160]Ремонт комплект:\\n%c[255,0,255,0]Ремонт костюма завершен.&amp;quot;&lt;br /&gt;
        db.actor:give_game_news(news_text, &amp;quot;ui\\ui_iconsTotal&amp;quot;, Frect():set(83,470,83,47), 1000, 5000)&lt;br /&gt;
    elseif item_s6 == nil then --когда костюма нет &lt;br /&gt;
        local news_text = &amp;quot;%c[255,160,160,160]Ремонт комплект:\\n%c[255,255,0,0]Ремонт невозможен: нужно одеть коcтюм.&amp;quot;&lt;br /&gt;
        db.actor:give_game_news(news_text, &amp;quot;ui\\ui_iconsTotal&amp;quot;, Frect():set(83,470,83,47), 1000, 5000)&lt;br /&gt;
        alife():create(&amp;quot;repair_kit_outfit&amp;quot;, db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id())&lt;br /&gt;
    elseif item_s6:condition() &amp;lt;0.30 then --когда костюм нельзя чинить (состояние меньше 30%)&lt;br /&gt;
        local news_text = &amp;quot;%c[255,160,160,160]Ремонт комплект:\\n%c[255,255,0,0]Ремонт невозможен: костюм слишком сильно повреждён.&amp;quot;&lt;br /&gt;
        db.actor:give_game_news(news_text, &amp;quot;ui\\ui_iconsTotal&amp;quot;, Frect():set(83,470,83,47), 1000, 5000)&lt;br /&gt;
        alife():create(&amp;quot;repair_kit_outfit&amp;quot;, db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id())&lt;br /&gt;
    elseif item_s6:condition() ==1 then --когда костюм в отличном состояние&lt;br /&gt;
        local news_text = &amp;quot;%c[255,160,160,160]Ремонт комплект:\\n%c[255,255,0,0]Ремонт невозможен: %c[255,0,255,0]костюм в отличном состояние.&amp;quot;&lt;br /&gt;
        db.actor:give_game_news(news_text, &amp;quot;ui\\ui_iconsTotal&amp;quot;, Frect():set(83,470,83,47), 1000, 5000)&lt;br /&gt;
        alife():create(&amp;quot;repair_kit_outfit&amp;quot;, db.actor:position(), 1, db.actor:game_vertex_id(), db.actor:id())&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;
1. Чтобы сделать ремонт комплект для оружия проделываем тоже самое, только переименовываем всё вместо outfit на weapon и в функцие починки ставим слот 1 или 2 (оружейные слота) вместо 6 (слот костюмов).&lt;br /&gt;
Ещё нужно заменить переменную item_s6 например на item_s1 или item_s2.&lt;br /&gt;
&lt;br /&gt;
2. Число 0.30 - минимальное состояние костюма, следовательно его можно менять на любое вам угодное.&lt;br /&gt;
Простите за такое оформление, это моя вторая статья. В будущем, если будет больше свободного времени, постораюсь расписать все моменты подробно. Автор статьи: Бага.&lt;br /&gt;
&lt;br /&gt;
Данный метод создания ремонт комплектов не работает! (проверено)&lt;br /&gt;
ЗЫ: StalkerNew2012 этот скрипт подправил теперь всё работает :)&lt;br /&gt;
Ремонтный комплект без лишних сообщений просто съедается!:(&lt;br /&gt;
&lt;br /&gt;
3.Ремонт оружия и брони:&lt;br /&gt;
{| class=&amp;quot;collapsible collapsed&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;code lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--     bind_stalker.script&lt;br /&gt;
function actor_binder:repair_outfit_start(obj, who)&lt;br /&gt;
    if obj then &lt;br /&gt;
        if obj:section() == &amp;quot;repair_kit_outfit&amp;quot; then&lt;br /&gt;
                remkomplekt.action_repair() &lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--     remkomplekt.script&lt;br /&gt;
function action_repair()&lt;br /&gt;
&lt;br /&gt;
	-- нет ли рядом врагов и монстров&lt;br /&gt;
	local apos = db.actor:position()&lt;br /&gt;
	for obj_id,_ in pairs (db.storage)do&lt;br /&gt;
		local obj = level.object_by_id(obj_id)&lt;br /&gt;
		if obj and (IsStalker(obj) or IsMonster(obj)) and obj:alive() &lt;br /&gt;
		and obj:relation(db.actor) == game_object.enemy and obj:position():distance_to(apos)&amp;lt;30 then&lt;br /&gt;
			send_tip(&amp;quot;Нельзя чинить костюм, когда враги слишком близко.&amp;quot;)&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- пробуем чинить предмет в &lt;br /&gt;
	repair_item_in_slot(1) -- первом&lt;br /&gt;
	repair_item_in_slot(2) -- втором&lt;br /&gt;
	repair_item_in_slot(6) -- шестом слоте&lt;br /&gt;
	&lt;br /&gt;
	-- эмулируем возврат ремкомплекта в инвентарь&lt;br /&gt;
	alife():create(&amp;quot;repair_kit_outfit&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;
function repair_item_in_slot(num)&lt;br /&gt;
	local item = db.actor:item_in_slot(num)&lt;br /&gt;
	if item then&lt;br /&gt;
		local cond = item:condition()&lt;br /&gt;
		if cond &amp;lt; 0.3 then&lt;br /&gt;
			send_tip(&amp;quot;%c[255,255,0,0]Ремонт невозможен: предмет в слоте &amp;quot;..num.. &amp;quot; сильно повреждён.&amp;quot;)&lt;br /&gt;
		elseif cond &amp;gt; 0.95 then&lt;br /&gt;
			send_tip(&amp;quot;%c[255,255,0,0]Ремонт невозможен: %c[255,0,255,0]предмет в слоте &amp;quot;..num.. &amp;quot; в отличном состоянии.&amp;quot;)&lt;br /&gt;
		else&lt;br /&gt;
			item:set_condition(1)&lt;br /&gt;
			send_tip(&amp;quot;%c[255,0,255,0]Ремонт предмета в слоте &amp;quot;..num.. &amp;quot; завершен.&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		send_tip(&amp;quot;%c[255,255,0,0]В слоте &amp;quot;..num..&amp;quot; нет предмета для починки.&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function send_tip(news_text)&lt;br /&gt;
	db.actor:give_game_news(news_text, &amp;quot;ui\\ui_iconsTotal&amp;quot;, Frect():set(83,470,83,47), 1000, 5000)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
4. Для многоразового использования ремкомплекта можно не доспавнивать новый предмет при съедании, а в его конфиге указать для параметра '''eat_portions_num''' большое число.&lt;br /&gt;
&amp;lt;lua&amp;gt;eat_portions_num = 100500&amp;lt;/lua&amp;gt;&lt;br /&gt;
[[Категория:Скрипты]]&lt;/div&gt;</summary>
		<author><name>212.66.38.80</name></author>	</entry>

	</feed>