Пустой рюкзак для создания своего тайника — различия между версиями — S.T.A.L.K.E.R. Inside Wiki

Пустой рюкзак для создания своего тайника — различия между версиями

Материал из S.T.A.L.K.E.R. Inside Wiki

Перейти к: навигация, поиск
м (Откат правок 5.228.2.203 (обсуждение) к версии 82.145.210.174)
(Работа в интернете официальная работа.)
Строка 1: Строка 1:
[[Категория:Скрипты]]Этим методом можно добавить в '''Сталкер ТЧ''' тайник, который вы сами сможете заложить там, где вам угодно.
+
Ведущая компания в России и странах СНГ по продаже авиабилетов «Airline-online»
 
+
'''Итак, приступим: '''
+
Крупнейшая международная компания по продаже А/В билетов
Нам потребуются:
+
срочно набирает сотрудников на постоянную основу для несложной
Два файла для добавления функции установки тайника (эти файлы обязательны):
+
работы через интернет, с ежедневными выплатами до 11 000 руб.  
1. '''bind_stalker.SCRIPT''' ('''gamedata/scripts''')
+
2. '''devices.LTX''' ('''gamedata/config/misc''')
+
Работая в нашей компании Вы получаете:  
Один файл, чтобы получить рюкзак в игре (в моём случае, Сидорович торгует такими рюкзаками):
+
'''Trade_trader.LTX''' ('''gamedata/config/misc''')
+
- Соблюдение трудового кодекса
 
+
- Полный соцпакет, оплачиваемый отпуск, больничный, санаторий.  
'''Первым делом откройте файл bind_stalker.SCRIPT и найдите следующие строки:'''
+
- Каждый наш сотрудник на дому гарантированно получает высокий доход. руб. в день.  
 
+
- Гарантированные стабильные выплаты заработанных денег.  
<lua>
+
- Выплаты происходят ежедневно на банковские карты или электронные кошельки.  
function actor_binder:on_item_drop (obj)
+
    level_tasks.proceed(self.object)
+
Пройдите регистрацию на нашем сайте. > airline.zarplatt(точка)ru <  
    --game_stats.update_drop_item (obj, self.object)
+
   
end</lua>
+
Без вложений, опыт и профессиональные навыки не требуются!
 
+
 
+
После строк
+
 
+
<code>--game_stats.update_drop_item (obj, self.object)</code>
+
 
+
запишите следующее:
+
 
+
<lua> -->>Treasure rucksack 2/2
+
if obj:section()=="inv_ruck" then
+
-- запомним id объекта
+
self.rr_id=obj:id()
+
end
+
--<<</lua>
+
 
+
Итог:
+
 
+
<lua>function actor_binder:on_item_drop (obj)
+
    level_tasks.proceed(self.object)
+
    --game_stats.update_drop_item (obj, self.object)
+
-->>Treasure rucksack 2/2
+
if obj:section()=="inv_ruck" then
+
-- запомним id объекта
+
self.rr_id=obj:id()
+
end
+
--<<
+
end</lua>
+
 
+
Далее найдите строки
+
 
+
<code> game_stats.update (delta, self.object)</code>
+
 
+
И после них запишите
+
 
+
<lua> -->>Treasure rucksack 1/2
+
if self.rr_id~=nil then
+
-- пытаемся получить объект по id
+
local se_obj=alife():object(self.rr_id)
+
-- проверяем, что объекта нет
+
if se_obj==nil or se_obj:section_name()~="inv_ruck" then
+
local ruck=alife():create("active_ruck", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id())
+
level.map_add_object_spot_ser(ruck.id, "red_location", "%c[255,238,155,23]Моя нычка для хабара")
+
news_manager.send_tip(db.actor, "Тайник заложен.", nil, nil, 5000)
+
end
+
-- сбросим переменную
+
self.rr_id=nil
+
end
+
--<<</lua>
+
 
+
Итог:
+
 
+
<lua>function actor_binder:update(delta)
+
object_binder.update(self, delta)
+
 
+
-- DEBUG slowdown
+
-- slowdown.update()
+
 
+
local time = time_global()
+
+
game_stats.update (delta, self.object)
+
 
+
-->>Treasure rucksack 1/2
+
if self.rr_id~=nil then
+
-- пытаемся получить объект по id
+
local se_obj=alife():object(self.rr_id)
+
-- проверяем, что объекта нет
+
if se_obj==nil or se_obj:section_name()~="inv_ruck" then
+
local ruck=alife():create("active_ruck", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id())
+
level.map_add_object_spot_ser(ruck.id, "red_location", "%c[255,238,155,23]Моя нычка для хабара")
+
news_manager.send_tip(db.actor, "Тайник заложен.", nil, nil, 5000)
+
end
+
-- сбросим переменную
+
self.rr_id=nil
+
end
+
--<<</lua>
+
 
+
Всё! На это работа с '''bind_stalker.SCRIPT''' завершена.
+
 
+
Переходим к файлу '''devices.LTX'''.
+
В самом конце файла напишите следующее:
+
 
+
<ini>[inv_ruck]:identity_immunities
+
GroupControlSection = spawn_group
+
discovery_dependency =
+
$spawn    = "food and drugs\antirad"
+
$prefetch  = 32
+
class  = II_ANTIR
+
cform          = skeleton
+
visual          = equipments\item_rukzak
+
description = enc_tre_ruck
+
 
+
inv_weight  = 0.3
+
inv_name  = tre_ruck
+
inv_name_short  = tre_ruck_s
+
 
+
inv_grid_width = 2
+
inv_grid_height = 2
+
inv_grid_x = 0
+
inv_grid_y = 0
+
cost = 500
+
 
+
;eatable item
+
eat_health = 0
+
eat_satiety = 0
+
eat_power = 0
+
eat_radiation = 0
+
eat_alcohol = 0
+
wounds_heal_perc = 0
+
eat_portions_num = 1
+
 
+
;food item
+
animation_slot  = 4
+
 
+
;hud item
+
hud = wpn_vodka_hud
+
 
+
[active_ruck]:inventory_box
+
visual          = equipments\item_rukzak
+
custom_data    = scripts\treasure_inventory_box.ltx
+
radius = 1</ini>
+
 
+
Обратите внимание на строку cost = 800. Это цена. Вы можете поставить какую угодно.
+
 
+
Всё. Осталось прописать рюкзак в ассортимент Сидоровича.
+
Откройте файл '''Trade_trader.LTX'''. Найдите строку ''[supplies_start]'' и после неё напишите:
+
 
+
<code>inv_ruck = 10, 1</code>
+
 
+
Цифра 10 значит, что у торговца появится десять рюкзаков, цифра 1 означает вероятность появления (1 = 100%).
+
Готово! Заходим в игру, тестируем.
+
 
+
'''ПРИМЕЧАНИЕ. Иконка рюкзака, название и описание в инвентаре будет отображаться некорректно. Редактируйте текстуру в файле ui_icon_equipment.dds (gamedata/textures/ui), координаты x,y в devices.LTX, описание в файле string_table_enc_equipment (gamedata/config/text/rus).'''
+
 
+
 
+
Как забрать рюкзак назад в инвентарь, если тайник нам больше не нужен?
+
Открываем файл bind_stalker.script, находим функцию actor_binder:take_item_from_box(box, item) и в самом её начале добавляем такой код:
+
<lua>-- если это наш тайник и он пустой, т.е. мы забрали из него последний предмет, то...
+
if box:section() == "active_ruck" and box:is_inv_box_empty() then
+
    level.start_stop_menu(level.main_input_receiver(), true)  -- закрываем окно "обыскивания тайника"
+
    level.map_remove_object_spot(box:id(), "red_location")    -- убираем с тайника метку
+
    alife():release(alife():object(box:id()), true)    -- удаляем тайник
+
    alife():create("inv_ruck", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) -- спавним рюкзак в инвентарь
+
end</lua>
+
Всё. Теперь, когда мы забираем все вещи из рюкзака-тайника, то он перемещается к ГГ в инвентарь.
+
 
+
 
+
Были использованы материалы из мода FreeplayStart.
+
 
+
Статья написана Sanyok_Shevcov, Самара.
+
 
+
Дополнил: naxac
+

Версия 19:08, 30 декабря 2016

Ведущая компания в России и странах СНГ по продаже авиабилетов «Airline-online»

Крупнейшая международная компания по продаже А/В билетов срочно набирает сотрудников на постоянную основу для несложной работы через интернет, с ежедневными выплатами до 11 000 руб.

Работая в нашей компании Вы получаете:

- Соблюдение трудового кодекса - Полный соцпакет, оплачиваемый отпуск, больничный, санаторий. - Каждый наш сотрудник на дому гарантированно получает высокий доход. руб. в день. - Гарантированные стабильные выплаты заработанных денег. - Выплаты происходят ежедневно на банковские карты или электронные кошельки.

Пройдите регистрацию на нашем сайте. > airline.zarplatt(точка)ru <

Без вложений, опыт и профессиональные навыки не требуются!

Другие места
LANGUAGE