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

	<entry>
		<id>http://stalkerin.gameru.net/wiki/index.php?title=%D0%9F%D1%83%D1%81%D1%82%D0%BE%D0%B9_%D1%80%D1%8E%D0%BA%D0%B7%D0%B0%D0%BA_%D0%B4%D0%BB%D1%8F_%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%B2%D0%BE%D0%B5%D0%B3%D0%BE_%D1%82%D0%B0%D0%B9%D0%BD%D0%B8%D0%BA%D0%B0</id>
		<title>Пустой рюкзак для создания своего тайника</title>
		<link rel="alternate" type="text/html" href="http://stalkerin.gameru.net/wiki/index.php?title=%D0%9F%D1%83%D1%81%D1%82%D0%BE%D0%B9_%D1%80%D1%8E%D0%BA%D0%B7%D0%B0%D0%BA_%D0%B4%D0%BB%D1%8F_%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%B2%D0%BE%D0%B5%D0%B3%D0%BE_%D1%82%D0%B0%D0%B9%D0%BD%D0%B8%D0%BA%D0%B0"/>
				<updated>2016-07-24T21:45:28Z</updated>
		
		<summary type="html">&lt;p&gt;46.162.28.159: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Категория:Скрипты]]Этим методом можно добавить в '''Сталкер ТЧ''' тайник, который вы сами сможете заложить там, где вам угодно.&lt;br /&gt;
&lt;br /&gt;
'''Итак, приступим: '''&lt;br /&gt;
Нам потребуются:&lt;br /&gt;
Два файла для добавления функции установки тайника (эти файлы обязательны):&lt;br /&gt;
1. '''bind_stalker.SCRIPT''' ('''gamedata/scripts''')&lt;br /&gt;
2. '''devices.LTX''' ('''gamedata/config/misc''')&lt;br /&gt;
Один файл, чтобы получить рюкзак в игре (в моём случае, Сидорович торгует такими рюкзаками):&lt;br /&gt;
'''Trade_trader.LTX''' ('''gamedata/config/misc''')&lt;br /&gt;
&lt;br /&gt;
'''Первым делом откройте файл bind_stalker.SCRIPT и найдите следующие строки:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;&lt;br /&gt;
function actor_binder:on_item_drop (obj)&lt;br /&gt;
    level_tasks.proceed(self.object)&lt;br /&gt;
    --game_stats.update_drop_item (obj, self.object)&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;--game_stats.update_drop_item (obj, self.object)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	запишите следующее:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;	--&amp;gt;&amp;gt;Treasure rucksack 2/2&lt;br /&gt;
	if obj:section()==&amp;quot;inv_ruck&amp;quot; then&lt;br /&gt;
		-- запомним id объекта&lt;br /&gt;
		self.rr_id=obj:id()&lt;br /&gt;
	end&lt;br /&gt;
	--&amp;lt;&amp;lt;&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Итог:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:on_item_drop (obj)&lt;br /&gt;
    level_tasks.proceed(self.object)&lt;br /&gt;
    --game_stats.update_drop_item (obj, self.object)&lt;br /&gt;
	--&amp;gt;&amp;gt;Treasure rucksack 2/2&lt;br /&gt;
	if obj:section()==&amp;quot;inv_ruck&amp;quot; then&lt;br /&gt;
		-- запомним id объекта&lt;br /&gt;
		self.rr_id=obj:id()&lt;br /&gt;
	end&lt;br /&gt;
	--&amp;lt;&amp;lt;&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;	game_stats.update (delta, self.object)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И после них запишите&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;	--&amp;gt;&amp;gt;Treasure rucksack 1/2&lt;br /&gt;
	if self.rr_id~=nil then&lt;br /&gt;
		-- пытаемся получить объект по id&lt;br /&gt;
		local se_obj=alife():object(self.rr_id)&lt;br /&gt;
		-- проверяем, что объекта нет&lt;br /&gt;
		if se_obj==nil or se_obj:section_name()~=&amp;quot;inv_ruck&amp;quot; then&lt;br /&gt;
			local ruck=alife():create(&amp;quot;active_ruck&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id())&lt;br /&gt;
			level.map_add_object_spot_ser(ruck.id, &amp;quot;red_location&amp;quot;, &amp;quot;%c[255,238,155,23]Моя нычка для хабара&amp;quot;)&lt;br /&gt;
			news_manager.send_tip(db.actor, &amp;quot;Тайник заложен.&amp;quot;, nil, nil, 5000)&lt;br /&gt;
		end&lt;br /&gt;
		-- сбросим переменную&lt;br /&gt;
		self.rr_id=nil&lt;br /&gt;
	end&lt;br /&gt;
	--&amp;lt;&amp;lt;&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Итог:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lua&amp;gt;function actor_binder:update(delta)&lt;br /&gt;
	object_binder.update(self, delta)&lt;br /&gt;
&lt;br /&gt;
	-- DEBUG slowdown&lt;br /&gt;
--	slowdown.update()&lt;br /&gt;
&lt;br /&gt;
	local time = time_global()&lt;br /&gt;
	&lt;br /&gt;
	game_stats.update (delta, self.object)&lt;br /&gt;
&lt;br /&gt;
	--&amp;gt;&amp;gt;Treasure rucksack 1/2&lt;br /&gt;
	if self.rr_id~=nil then&lt;br /&gt;
		-- пытаемся получить объект по id&lt;br /&gt;
		local se_obj=alife():object(self.rr_id)&lt;br /&gt;
		-- проверяем, что объекта нет&lt;br /&gt;
		if se_obj==nil or se_obj:section_name()~=&amp;quot;inv_ruck&amp;quot; then&lt;br /&gt;
			local ruck=alife():create(&amp;quot;active_ruck&amp;quot;, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id())&lt;br /&gt;
			level.map_add_object_spot_ser(ruck.id, &amp;quot;red_location&amp;quot;, &amp;quot;%c[255,238,155,23]Моя нычка для хабара&amp;quot;)&lt;br /&gt;
			news_manager.send_tip(db.actor, &amp;quot;Тайник заложен.&amp;quot;, nil, nil, 5000)&lt;br /&gt;
		end&lt;br /&gt;
		-- сбросим переменную&lt;br /&gt;
		self.rr_id=nil&lt;br /&gt;
	end&lt;br /&gt;
	--&amp;lt;&amp;lt;&amp;lt;/lua&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Всё! На это работа с '''bind_stalker.SCRIPT''' завершена.&lt;br /&gt;
&lt;br /&gt;
Переходим к файлу '''devices.LTX'''.&lt;br /&gt;
В самом конце файла напишите следующее:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ini&amp;gt;[inv_ruck]:identity_immunities&lt;br /&gt;
GroupControlSection = spawn_group&lt;br /&gt;
discovery_dependency =&lt;br /&gt;
$spawn    = &amp;quot;food and drugs\antirad&amp;quot;&lt;br /&gt;
$prefetch   = 32&lt;br /&gt;
class   = II_ANTIR&lt;br /&gt;
cform           = skeleton&lt;br /&gt;
visual          = equipments\item_rukzak&lt;br /&gt;
description  = enc_tre_ruck&lt;br /&gt;
&lt;br /&gt;
inv_weight   = 0.3&lt;br /&gt;
inv_name   = tre_ruck&lt;br /&gt;
inv_name_short  = tre_ruck_s&lt;br /&gt;
&lt;br /&gt;
inv_grid_width		= 2&lt;br /&gt;
inv_grid_height		= 2&lt;br /&gt;
inv_grid_x		= 0&lt;br /&gt;
inv_grid_y		= 0&lt;br /&gt;
cost = 500&lt;br /&gt;
&lt;br /&gt;
;eatable item&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;
eat_alcohol = 0&lt;br /&gt;
wounds_heal_perc = 0&lt;br /&gt;
eat_portions_num = 1&lt;br /&gt;
&lt;br /&gt;
;food item&lt;br /&gt;
animation_slot  = 4&lt;br /&gt;
&lt;br /&gt;
;hud item&lt;br /&gt;
hud = wpn_vodka_hud&lt;br /&gt;
&lt;br /&gt;
[active_ruck]:inventory_box&lt;br /&gt;
visual          = equipments\item_rukzak&lt;br /&gt;
custom_data     = scripts\treasure_inventory_box.ltx&lt;br /&gt;
radius = 1&amp;lt;/ini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание на строку cost = 800. Это цена. Вы можете поставить какую угодно.&lt;br /&gt;
&lt;br /&gt;
Всё. Осталось прописать рюкзак в ассортимент Сидоровича.&lt;br /&gt;
Откройте файл '''Trade_trader.LTX'''. Найдите строку ''[supplies_start]'' и после неё напишите:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;inv_ruck			= 10,	1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Цифра 10 значит, что у торговца появится десять рюкзаков, цифра 1 означает вероятность появления (1 = 100%).&lt;br /&gt;
Готово! Заходим в игру, тестируем.&lt;br /&gt;
&lt;br /&gt;
'''ПРИМЕЧАНИЕ. Иконка рюкзака, название и описание в инвентаре будет отображаться некорректно. Редактируйте текстуру в файле ui_inventory.dds (gamedata/textures/ui), координаты x,y в devices.LTX, описание в файле string_table_enc_equipment (gamedata/config/text/rus).'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Как забрать рюкзак назад в инвентарь, если тайник нам больше не нужен?&lt;br /&gt;
Открываем файл bind_stalker.script, находим функцию actor_binder:take_item_from_box(box, item) и в самом её начале добавляем такой код:&lt;br /&gt;
&amp;lt;lua&amp;gt;-- если это наш тайник и он пустой, т.е. мы забрали из него последний предмет, то...&lt;br /&gt;
if box:section() == &amp;quot;active_ruck&amp;quot; and box:is_inv_box_empty() then&lt;br /&gt;
    level.start_stop_menu(level.main_input_receiver(), true)   -- закрываем окно &amp;quot;обыскивания тайника&amp;quot;&lt;br /&gt;
    level.map_remove_object_spot(box:id(), &amp;quot;red_location&amp;quot;)    -- убираем с тайника метку&lt;br /&gt;
    alife():release(alife():object(box:id()), true)    -- удаляем тайник&lt;br /&gt;
    alife():create(&amp;quot;inv_ruck&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;
&lt;br /&gt;
Были использованы материалы из мода FreeplayStart.&lt;br /&gt;
&lt;br /&gt;
Статья написана Sanyok_Shevcov, Самара.&lt;br /&gt;
&lt;br /&gt;
Дополнил: naxac&lt;/div&gt;</summary>
		<author><name>46.162.28.159</name></author>	</entry>

	</feed>