• Страница 1 из 1
  • 1
Архив - только для чтения
Форум » Архив » Моддинг - Архив » [ТЧ] Рандомные тайники (Автор: AuReN)
[ТЧ] Рандомные тайники
Российская Федерация  Stalker_Monstr
Четверг, 14.11.2013, 17:27 | Сообщение # 1
Статус:
Отмычка:
Сообщений: 194
Награды: 8
Регистрация: 30.01.2013

Изменяемые файлы: treasure_manager.script
Сложность: Средне

В самом начале файла пишем:
Цитата

local option_treasure = true

Далее листаем вниз, до функции:
Цитата

function CTreasure:give_treasure(k)

И после строчки
Цитата

level.map_add_object_spot_ser(obj.id, "treasure", text)

Пишем
Цитата

if option_treasure == true and self:named_treasure(v) == false then
v.items = self:give_item_list(v)
end

Тут мы указали на две функции, которые пока не создали. Исправим это.
В самом конце файла пишем:
Цитата

function CTreasure:give_item_list(v)
local tabla = {}
local i = math.random(1, 2)
local cnt = 0
local spawn = {}

for j = 1, i, 1 do
if string.find(v.name, "esc_" ) or string.find(v.name, "gar_" ) then
spawn.section = subjects_list.level_C1[math.random(table.getn(subjects_list.level_C1))]
elseif string.find(v.name, "agr_" ) or string.find(v.name, "val_" ) or string.find(v.name, "bar_" ) then
spawn.section = subjects_list.level_C2[math.random(table.getn(subjects_list.level_C2))]
elseif string.find(v.name, "ros_" ) or string.find(v.name, "yan_" ) or string.find(v.name, "mil_" ) then
spawn.section = subjects_list.level_C3[math.random(table.getn(subjects_list.level_C3))]
elseif string.find(v.name, "rad_" ) or string.find(v.name, "pri_" ) then
spawn.section = subjects_list.level_C4[math.random(table.getn(subjects_list.level_C4))]
else
spawn.section = subjects_list.level_U0[math.random(table.getn(subjects_list.level_U0))]
end
end

if ammo_section[spawn.section] == true then
local ini = system_ini()
local num_in_box = ini:r_u32(spawn.section, "box_size" )
local h = math.random(1, 5)
cnt = math.random(1, h) * num_in_box
else
local s = tostring(spawn.section)
if string.find(s, "outfit" ) ~= nil or string.find(s, "wpn" ) ~= nil then
cnt = 1
elseif string.find(s, "addon" ) ~= nil or string.find(s, "af" ) ~= nil or string.find(s, "mutant" ) ~= nil then
cnt = math.random(1, 3)
else
cnt = math.random(1, 5)
end
end

-- сохраняем инфу о текущем предмете
spawn.prob = cnt
table.insert(tabla, spawn)

return tabla
end

function CTreasure:named_treasure(v)
-- проверка, является ли тайник именным. Если да, то его наполнение не меняется
if v.name == "agr_secret_0000_name" --Тайник Серого
or v.name == "bar_secret_0011_name" --Тайник Арни
or v.name == "esc_secret_0013_name" --Тайник Ворпала
or v.name == "gar_secret_0002_name" --Вещи Гризли
or v.name == "gar_secret_0011_name" --Склад группы Стрелка
or v.name == "gar_secret_0021_name" --Рюкзак Дохляка
or v.name == "pri_secret_0003_name" --Хабар Клыка
or v.name == "pri_secret_0004_name" --Запасы лидера Свободы
or v.name == "rad_secret_0000_name" --Клад Угрюмого
or v.name == "rad_secret_0004_name" --Запас группы отчаянных
or v.name == "ros_secret_0015_name" --Тайник Счастливчика
or v.name == "ros_secret_0018_name" --Ящик с медикаментами
or v.name == "val_secret_0028_name" --Тайник Борова
or v.name == "x18_secret_0000_name" --Тайник Копченого
or v.name == "yan_secret_0011_name" --Тайник учёного
then
return true
else
return false
end
end

Далее создадим таблицы с секциями предметов которые будут выдаваться на тех или иных локациях. После local option_treasure = true пишем
Цитата


local subjects_list = {
--Подземные уровни
level_U0 = {
"af_ameba_mica",
"af_soul",
"af_cristall",
"specops_outfit",
"ammo_5.56x45_ap",
"ammo_9x39_sp5",
},
--Кордон, Свалка
level_C1 = {
"af_drops",
"af_ameba_slime",
"af_rusty_thorn",
"af_electra_sparkler",
"medkit",
"vodka"
},
--Агропром, Темная долина, Бар
level_C2 = {
"af_electra_flash",
"af_rusty_kristall",
"af_ameba_slug",
"af_rusty_sea-urchin",
"af_ameba_mica",
"ammo_12x76_zhekan",
"ammo_5.45x39_fmj",
"ammo_5.45x39_ap",
"wpn_fort",
"wpn_ak74",
"medkit",
"antirad"
},
--Росток, Янтарь, Милитари
level_C3 = {
"af_electra_moonlight",
"af_rusty_sea-urchin",
"af_ameba_mica",
"af_cristall",
"af_dummy_glassbeads",
"ammo_9x19_fmj",
"ammo_9x19_pbp",
"ammo_vog-25p",
},
--Припять
level_C4 = {
"af_dummy_glassbeads",
"af_dummy_pellicle",
"ammo_11.43x23_hydro",
"ammo_12x76_dart",
"ammo_7.62x54_ap",
}
}

Содержимое таблиц можно поменять на нужное.
Чтобы отключить рандомность тайников задайте значение option_treasure = false
  Злобная реклама
Четверг, 14.11.2013, 17:27
Статус:
Сообщений: 666
Регистрация: 30.01.2013
Российская Федерация  RETRIX
Четверг, 14.11.2013, 18:43 | Сообщение # 2
AP-Production
Статус:
Ветеран:
Сообщений: 9439
Награды: 12
Регистрация: 24.08.2011

Stalker_Monstr, думаю, многим новичкам будет полезно smile
Российская Федерация  Stalker_Monstr
Четверг, 14.11.2013, 18:46 | Сообщение # 3
Статус:
Отмычка:
Сообщений: 194
Награды: 8
Регистрация: 30.01.2013

RETRIX, Я тоже, так думаю.
Форум » Архив » Моддинг - Архив » [ТЧ] Рандомные тайники (Автор: AuReN)
  • Страница 1 из 1
  • 1
Поиск: