Случайная подборка модов
Lost World Troops of Doom
4.1
Sigerous Mod 2.2
4.1
Время перемен v1.0
3.8
Paradise Lost
3.7
Oblivion Lost 3.0
3.0
Последний день
3.5
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
  • Страница 1 из 1
  • 1
Архив - только для чтения
[ТЧ] Рандомные тайники
Российская Федерация  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
  Злобная реклама
Четверг, 14.11.2013, 18:43
Статус:
Сообщений: 666
Регистрация: 24.08.2011
Российская Федерация  Stalker_Monstr
Четверг, 14.11.2013, 18:46 | Сообщение # 3
Статус:
Отмычка:
Сообщений: 194
Награды: 8
Регистрация: 30.01.2013

RETRIX, Я тоже, так думаю.
  Злобная реклама
Четверг, 14.11.2013, 18:46
Статус:
Сообщений: 666
Регистрация: 30.01.2013
  • Страница 1 из 1
  • 1
Поиск: