|  
|  |   
|  
 
  
  
  
 | 
 
 
 
 
 
 
  
  
 | Статус: |  |   
 | Отмычка: |  |   
 | Сообщений: | 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 |  |  |  |  | 
|  
|  |   
|  
 
 
 Четверг, 14.11.2013, 18:43 | Сообщение # 2 RETRIX  
  
 | 
 
 
 
 
 
AP-Production  
  
 | Статус: |  |   
 | Ветеран: |  |   
 | Сообщений: | 9439 |   
 | Награды: | 12 |   
 | Регистрация: | 24.08.2011 |  | Stalker_Monstr, думаю, многим новичкам будет полезно  |  |  Четверг, 14.11.2013, 18:43   
|  |   
|  
 
  
  
  
 | 
 
  
  
 | Статус: |  |   
 | Сообщений: | 666 |   
 | Регистрация: | 24.08.2011 |  |  |  |  | 
|  
|  |   
|  
 
  
  
  
 | 
 
 
 
 
 
 
  
  
 | Статус: |  |   
 | Отмычка: |  |   
 | Сообщений: | 194 |   
 | Награды: | 8 |   
 | Регистрация: | 30.01.2013 |  | RETRIX, Я тоже, так думаю. |  |  Четверг, 14.11.2013, 18:46   
|  |   
|  
 
  
  
  
 | 
 
  
  
 | Статус: |  |   
 | Сообщений: | 666 |   
 | Регистрация: | 30.01.2013 |  |  |  |  |