Случайная подборка модов
GUNSLINGER mod
4.5
The Project Medeiros
3.7
SWTC
4.1
SFZ Project: Episode Zero
4.8
NEYA Online
3.1
L.U.R.K.
4.0
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
Архив - только для чтения
Paradise Lost [ТЧ]
Российская Федерация  RETRIX
Воскресенье, 07.07.2013, 02:01 | Сообщение # 1
AP-Production
Статус:
Ветеран:
Сообщений: 9439
Награды: 12
Регистрация: 24.08.2011


Paradise Lost (в пер. с англ. Потерянный рай; обычно используют сокращение PL; также известен как Paradise Lost modification и Paradise Lost mod; полное название - S.T.A.L.K.E.R Shadow Of Chernobyl - Paradise Lost modification)модификация для игры S.T.A.L.K.E.R: Тень Чернобыля, разрабатываемая с 2007-го года, в основе которой лежит восстановление контента, который не попал в финальную версию игры.
2 января 2012 года была выпущена бета-версия модификации. С этого момента проходит открытый бета-тест, в котором может принять участие любой желающий, скачав модификацию.

Главной целью мода Paradise Lost является приближение игры "S.T.A.L.K.E.R: Тень Чернобыля" к такому образцу, который демонстрировался разработчиками GSC Game World в период с 2002-го по 2005-й год - т.е. возвратить всё то, что было утрачено в релизе, но осталось на тех старых скриншотах, трейлерах, "финальных отсчётах", статьях множества игровых журналов - то, что можно теперь увидеть в сборках процесса разработки игры (билдах), которые, к счастью, доступны для скачивания. Так вот, в задачи мода входит воплощение всего лучшего из билдов в финальную версию игры: визуальный стиль, графика и её уникальные возможности (DX8 и DX9), поведение и действия NPC, отдельные сюжетные моменты, и много чего ещё...




Основная информация о моде


Ссылки для скачивания и другие страницы мода


Важные советы и примечания. Читать обязательно!


Перечень глобальных изменений и нововведений


Видеодемонстрации и трейлеры


Галерея скриншотов

Сообщение отредактировал RETRIX - Понедельник, 30.06.2014, 16:12
  Злобная реклама
Воскресенье, 07.07.2013, 02:01
Статус:
Сообщений: 666
Регистрация: 24.08.2011
Российская Федерация  РСФСР
Суббота, 20.08.2016, 18:50 | Сообщение # 541
Статус:
Неопытный:
Сообщений: 437
Награды: 3
Регистрация: 15.01.2012

ForestOfShadows, у меня 20 сталкеров. Их всех туда прописать? честно говоря не понял в том файле ничего(
  Злобная реклама
Суббота, 20.08.2016, 18:50
Статус:
Сообщений: 666
Регистрация: 15.01.2012
Российская Федерация  RayTwitty
Суббота, 20.08.2016, 19:01 | Сообщение # 542
Phantoms Zone
Shadows Addon
DMX MOD
Статус:
Опытный:
Сообщений: 2366
Награды: 15
Регистрация: 05.07.2010

РСФСР, по идее там должна быть затычка, что если фейс не найден, то рисуем какой-нибудь универсальный. Кароче код функции в студию.
  Злобная реклама
Суббота, 20.08.2016, 19:01
Статус:
Сообщений: 666
Регистрация: 05.07.2010
Российская Федерация  merc1986
Суббота, 20.08.2016, 19:08 | Сообщение # 543
Железный человек
Статус:
Опытный:
Сообщений: 2998
Награды: 8
Регистрация: 04.12.2010

Цитата RuWar ()
Как мне кажется.PL просто местами нужно проапгрейдить.
Чтобы получился более причесанный и удобный-уютный вариант RMA


Согласен. Сделать эдакий Ремейк "Сталкера" 2004 годов, но более отполированный. LA со своими массонами никуда не годится.

Цитата RuWar ()
Возможно стоит попробовать в кое-то веки сделать дикий вариант бара 100 рентген
https://www.youtube.com/watch?v=9MAlZmnI99w - соблюдая визуалы персонажей
стиль погоды и расположение объектов. Сам этот видос брать как образец применительно ко всему.


Отличная идея, кстати. А вот Бар переносить не нужно. Можно сделать квест на зачистку локации от группы Долга, которая будет находится на Свалке. После зачистки, через определенное количество времени - появляется сам Бар.

Цитата RuWar ()
Болота
Даркскейп
Старый кардон (LA)
Старая свалка (La)
Мертвый город (La)
Генераторы (любые сгодятся)
Warlab (ЗП)


Даркскейп дурацкая локация на самом деле, без заселения и квестов - не нужна совершенно.
  Злобная реклама
Суббота, 20.08.2016, 19:08
Статус:
Сообщений: 666
Регистрация: 04.12.2010
Российская Федерация  leoberg124
Суббота, 20.08.2016, 19:19 | Сообщение # 544
Статус:
Опытный:
Сообщений: 2517
Награды: 13
Регистрация: 04.12.2012

Цитата merc1986 ()
После зачистки, через определенное количество времени - появляется сам Бар.

Надо тогда взять единый Завод Росток (Бар+ ДТ), как в ЛВО.

Тёмную долину надо тоже заменить на полную версию, к примеру из ЛА или Дрим Ридер.
Цитата merc1986 ()
Даркскейп дурацкая локация на самом деле, без заселения и квестов - не нужна совершенно.

Её надо переработать серьёзно: убрать скалы, расширить и добавить несколько заброшенных деревень, поле. Я могу даже набросать концепт, но вряд ли этим будет кто-то заниматься в рамках этого мода.
  Злобная реклама
Суббота, 20.08.2016, 19:19
Статус:
Сообщений: 666
Регистрация: 04.12.2012
Российская Федерация  РСФСР
Суббота, 20.08.2016, 19:25 | Сообщение # 545
Статус:
Неопытный:
Сообщений: 437
Награды: 3
Регистрация: 15.01.2012

leoberg124, был бы распакованый спаун - тогда можно все заменить. а еще лучше преобразованный в левел-спауны
RayTwitty,
Код
news = {
    tips_esc_trader_about_anomalies    = xr_sound.get_safe_sound_object([[characters_voice\scenario\trader\trader_tutorial_anomalies_1]]),
    gar_dolg_warning    = xr_sound.get_safe_sound_object([[characters_voice\scenario\duty\duty_warning1]]),
    esc_return_dv     = xr_sound.get_safe_sound_object([[characters_voice\scenario\trader\return_from_dv]]),
    escape_fox_quest    = xr_sound.get_safe_sound_object([[characters_voice\scenario\trader\trader_pda_fox]]),
    tip_petruha_report    = xr_sound.get_safe_sound_object([[characters_voice\scenario\escape\petruha_raport_p]]),

    tips_agr_krot_sos    = xr_sound.get_safe_sound_object([[characters_voice\scenario\agroprom\krot_help_pda_1]]),
    tips_agr_krot_sos1    = xr_sound.get_safe_sound_object([[characters_voice\scenario\agroprom\krot_help_pda_2]]),
    tips_agr_krot_sos2    = xr_sound.get_safe_sound_object([[characters_voice\scenario\agroprom\krot_help_pda_2]]),
    tips_agr_stalker_help_2   = xr_sound.get_safe_sound_object([[characters_voice\scenario\agroprom\stalker_help_2]]),
    tips_agr_stalker_help_1   = xr_sound.get_safe_sound_object([[characters_voice\scenario\agroprom\stalker_help_1]]),
    -- ghost_tips      = xr_sound.get_safe_sound_object([[characters_voice\scenario\agroprom\strelok_pda]]),
    tips_agr_trader_documents  = xr_sound.get_safe_sound_object([[characters_voice\scenario\agroprom\trader_pda_1]]),
    pass_to_1st_door                = xr_sound.get_safe_sound_object([[characters_voice\scenario\val\door1_password]]),
    pass_to_2nd_door                = xr_sound.get_safe_sound_object([[characters_voice\scenario\val\door2_password]]),

    bar_ecolog_crush_heli_down  = xr_sound.get_safe_sound_object([[characters_voice\scenario\Rostok\Heli_crush\wolfhound_pda_1]]),
    bar_freedom_attack_attract_actor= xr_sound.get_safe_sound_object([[characters_voice\scenario\Rostok\Heli_crush\wolfhound_pda_2]]),
    bar_freedom_spam_1    = xr_sound.get_safe_sound_object([[characters_voice\scenario\Rostok\Heli_crush\wolfhound_pda_6]]),
    bar_freedom_spam_2    = xr_sound.get_safe_sound_object([[characters_voice\scenario\Rostok\Heli_crush\wolfhound_pda_4]]),
    bar_freedom_spam_3    = xr_sound.get_safe_sound_object([[characters_voice\scenario\Rostok\Heli_crush\wolfhound_pda_3]]),
    bar_freedom_spam_4    = xr_sound.get_safe_sound_object([[characters_voice\scenario\Rostok\Heli_crush\wolfhound_pda_5]]),
    bar_freedom_attack    = xr_sound.get_safe_sound_object([[characters_voice\scenario\Rostok\Heli_crush\wolfhound_pda_7]]),
    bar_freedom_attack_spy   = xr_sound.get_safe_sound_object([[characters_voice\scenario\Rostok\Heli_crush\wolfhound_pda_8]]),
    bar_ecolog_crush_start_heli  = xr_sound.get_safe_sound_object([[characters_voice\scenario\Rostok\Heli_crush\kruglov_pda_1]]),
    bar_ecolog_crush_attract_actor  = xr_sound.get_safe_sound_object([[characters_voice\scenario\Rostok\Heli_crush\kruglov_pda_2]]),
    bar_ecolog_spam_1    = xr_sound.get_safe_sound_object([[characters_voice\scenario\Rostok\Heli_crush\kruglov_pda_3]]),
    bar_ecolog_spam_2    = xr_sound.get_safe_sound_object([[characters_voice\scenario\Rostok\Heli_crush\kruglov_pda_4]]),
    bar_ecolog_spam_3    = xr_sound.get_safe_sound_object([[characters_voice\scenario\Rostok\Heli_crush\kruglov_pda_5]]),
    bar_ecolog_spam_4    = xr_sound.get_safe_sound_object([[characters_voice\scenario\Rostok\Heli_crush\kruglov_pda_6]]),
    bar_ecolog_attack    = xr_sound.get_safe_sound_object([[characters_voice\scenario\Rostok\Heli_crush\kruglov_pda_7]]),
    rostok_kruglov_spam_1   = xr_sound.get_safe_sound_object([[characters_voice\scenario\Rostok\kruglov_pda_help_1]]),
    rostok_kruglov_spam_2   = xr_sound.get_safe_sound_object([[characters_voice\scenario\Rostok\kruglov_pda_help_3]]),
    bar_ecolog_escape    = xr_sound.get_safe_sound_object([[characters_voice\scenario\Rostok\volkodav_pda_kruglov_escape_1]]),
    storyline_vasilyev_tip   = xr_sound.get_safe_sound_object([[characters_voice\scenario\yantar\vasiliev_pda]]),
    storyline_ghost_tip    = xr_sound.get_safe_sound_object([[characters_voice\scenario\yantar\ghost_pda]]),
    yan_saharov_message    = xr_sound.get_safe_sound_object([[characters_voice\scenario\yantar\professor_to_actor_pda_3]]),
    yan_saharov_message_2    = xr_sound.get_safe_sound_object([[characters_voice\scenario\yantar\professor_to_actor_pda_4]]),
    yan_saharov_message_3    = xr_sound.get_safe_sound_object([[characters_voice\scenario\yantar\professor_to_actor_pda_5]]),
    
    yan_scientist_probe    = xr_sound.get_safe_sound_object([[characters_voice\scenario\yantar\kruglov_radiation_quest_13]]),
    yan_scientist_probe_1   = xr_sound.get_safe_sound_object([[characters_voice\scenario\yantar\kruglov_radiation_quest_11]]),
    yan_scientist_probe_2   = xr_sound.get_safe_sound_object([[characters_voice\scenario\yantar\kruglov_radiation_quest_12]]),
    yan_scientist_probe_3   = xr_sound.get_safe_sound_object([[characters_voice\scenario\yantar\kruglov_radiation_quest_6]]),
    
    rostok_kruglov_follow   = xr_sound.get_safe_sound_object([[characters_voice\scenario\Rostok\pda_kruglov_help_6]]),
    bar_freedom_chase   = xr_sound.get_safe_sound_object([[characters_voice\scenario\Rostok\pda_kruglov_stop_enemy_1]]),
    rostok_kruglov_follow_2   = xr_sound.get_safe_sound_object([[characters_voice\scenario\Rostok\pda_kruglov_stop_enemy_2]]),
    rostok_kruglov_follow_3   = xr_sound.get_safe_sound_object([[characters_voice\scenario\Rostok\pda_kruglov_help_5]]),
  
    bar_territory_dolg_1_hit  = xr_sound.get_safe_sound_object([[characters_voice\scenario\bar\pda\voronin_gunfire_pda_1]]),
    bar_territory_dolg_2_hit  = xr_sound.get_safe_sound_object([[characters_voice\scenario\bar\pda\voronin_gunfire_pda_2]]),
    bar_territory_dolg_3_hit  = xr_sound.get_safe_sound_object([[characters_voice\scenario\bar\pda\voronin_gunfire_pda_3]]),
    bar_territory_dolg_kill   = xr_sound.get_safe_sound_object([[characters_voice\scenario\bar\pda\voronin_gunfire_pda_4]]),

    bar_psih_come   = xr_sound.get_safe_sound_object([[characters_voice\scenario\bar\barman\barman_pda_psycho]]),
    
    tips_bun_komand                 = xr_sound.get_safe_sound_object([[characters_voice\scenario\bun\patrol_prikaz]]),

    general_ecolog_tip_1            = xr_sound.get_safe_sound_object([[characters_voice\scenario\yantar\professor_to_actor_pda_1]]),
    general_ecolog_tip_2            = xr_sound.get_safe_sound_object([[characters_voice\scenario\yantar\professor_to_actor_pda_2]]),

    tips_gar_hellcar_alarm   = xr_sound.get_safe_sound_object([[characters_voice\scenario\garbage\neutrals_commander_pda_1]]),
    gar_dolg_blokpost_warning  = xr_sound.get_safe_sound_object([[characters_voice\scenario\duty\duty_warning1]]),
    gar_dolg_monster_rush   = xr_sound.get_safe_sound_object([[characters_voice\scenario\duty\duty_request1]]),
    gar_direction_fire    = xr_sound.get_safe_sound_object([[characters_voice\scenario\garbage\junkyard_combat_ambush]]),
    gar_hellcar_victory    = xr_sound.get_safe_sound_object([[characters_voice\scenario\garbage\junkyard_combat_end]]),
    gar_actor_looser    = xr_sound.get_safe_sound_object([[characters_voice\scenario\garbage\duty_after_rush_bad]]),
    gar_actor_normal    = xr_sound.get_safe_sound_object([[characters_voice\scenario\garbage\duty_after_rush_normal]]),
    gar_actor_winner    = xr_sound.get_safe_sound_object([[characters_voice\scenario\garbage\duty_after_rush_good]]),

    esc_direction_fire    = xr_sound.get_safe_sound_object([[characters_voice\scenario\escape\lager_fanat_attack]]),
    esc_fanat_victory    = xr_sound.get_safe_sound_object([[characters_voice\scenario\escape\lager_fanat_victory]]),
    
    rad_barman_spam     = xr_sound.get_safe_sound_object([[characters_voice\scenario\radar\rad_barman_message]]),

    val_monolith_trader_pda1  = xr_sound.get_safe_sound_object([[characters_voice\scenario\val\trader_dialog1]]),
    o_soznanie_text     = xr_sound.get_safe_sound_object([[characters_voice\scenario\sarcofag\o_soznanie_call]]),

-- dublicate pda sounds for remark scheme
    val_rob_leader_jeer_1           = xr_sound.get_safe_sound_object([[characters_voice\scenario\val\rob_leader_jeer_1_p]]),
    val_rob_leader_call             = xr_sound.get_safe_sound_object([[characters_voice\scenario\val\rob_call_1_p]]),

    pri_followers_leader_phrase1_1  = xr_sound.get_safe_sound_object([[characters_voice\scenario\pri\followers_leader_phrase1_1_p]]),
    pri_followers_leader_phrase1_2  = xr_sound.get_safe_sound_object([[characters_voice\scenario\pri\followers_leader_phrase1_2_p]]),
    pri_followers_leader_phrase1_3  = xr_sound.get_safe_sound_object([[characters_voice\scenario\pri\followers_leader_phrase1_3_p]]),
}

pda_news = xr_sound.get_safe_sound_object([[device\pda\pda_news]])
pda_tips = xr_sound.get_safe_sound_object([[device\pda\pda_tip]])
pda_task = xr_sound.get_safe_sound_object([[device\pda\pda_objective]])
pda_sos = xr_sound.get_safe_sound_object([[device\pda\pda_sos]])

tips_icons = {
    default  = { 400, 150},
    trader  = { 50, 100},
    dolg  = { 150, 0},
    dolg_mask1    = { 150, 0},
    dolg_prapor    = { 150, 0},
    dolg_voronin    = { 150, 0},
    freedom  = { 0, 150},
    freedom_max    = { 150, 150},
    freedom_cap    = { 0, 150},
    freedom_lukash    = { 0, 150},
    freedom_bydlo    = { 0, 150},
    ecolog  = { 450, 100},
    ecolog_red    = { 450, 100},
    arena  = { 400, 150},
    stalker  = { 400, 150},
    krot  = { 200, 50},
    hellcar  = { 0, 50},
    barman  = { 400, 50},
    wolf  = { 0, 50},
    o_soznanie    = { 350, 50},
    monolith    = { 300, 150},
    saharov  = { 450, 150},
    prizrak  = { 350, 50},
    fanat  = { 400, 150},
    killer  = { 0, 200},
    killer_volkodav    = { 0, 200}
}

function send_tip(actor, news_id, timeout, sender, showtime, sender_id)
    if news_id == nil then return false end

    printf("try to send tips for [%s]", tostring(sender_id))
    if sender_id ~= nil then
  local sim = alife()
  if sim ~= nil then
   local npc = sim:story_object(sender_id)
   if npc ~= nil then
    if npc.online then
     --в онлайне проверяем на раненность
     if xr_wounded.is_heavy_wounded_by_id(npc.id) then
      printf("[PDA]Cannot send tips [%s], sender is heavy wounded", tostring(news_id))
      return false
     end
    end
    -- в других случаях только на смерть
    if npc:alive() == 1 then
     printf("[PDA]Cannot send tips [%s], sender is dead", tostring(news_id))
     return false
    end
   end
  end
    end

    if timeout == nil then timeout = 0 end
    if showtime == nil then showtime = 5000 end

    --' Играем дефолтный звук
    pda_tips:play(db.actor, timeout, sound_object.s2d)
    if news[news_id] ~= nil then
  --' Играем звук забитый
  news[news_id]:play(db.actor, timeout+1, sound_object.s2d)

  --' Необходимо поставить время показа по длине сцены
  local length = news[news_id]:length()
  if length > showtime then
   showtime = length
  end
    end
    
    if sender == nil then
  sender = "default"
    end
    local x = tips_icons[sender][1]
    local y = tips_icons[sender][2]
    
    local news_text = "%c[255,245,118,54]"..game.translate_string("st_tip").."\\n".."%c[255,245,118,54]"..game.translate_string(news_id)
    actor:give_game_news(news_text, "ui\\ui_icons_task", Frect():set(x,y,50,50), timeout*1000, showtime)
    return true
end

-- Отправка сообщения SOS. Спец. для новичка на заправке в Темной долине.
function send_sos(actor, news_id, timeout, sender, showtime, sender_id)
    if news_id == nil then return false end

    printf("try to send tips for [%s]", tostring(sender_id))
    if sender_id ~= nil then
  local sim = alife()
  if sim ~= nil then
   local npc = sim:story_object(sender_id)
   if npc ~= nil then
    -- в других случаях только на смерть
    if npc:alive() == 1 then
     printf("[PDA]Cannot send tips [%s], sender is dead", tostring(news_id))
     return false
    end
   end
  end
    end

    if timeout == nil then timeout = 0 end
    if showtime == nil then showtime = 5000 end

    --' Играем дефолтный звук
    pda_sos:play(db.actor, timeout, sound_object.s2d)
    if news[news_id] ~= nil then
  --' Играем звук забитый
  news[news_id]:play(db.actor, timeout+1, sound_object.s2d)

  --' Необходимо поставить время показа по длине сцены
  local length = news[news_id]:length()
  if length > showtime then
   showtime = length
  end
    end
    
    if sender == nil then
  sender = "default"
    end
    local x = tips_icons[sender][1]
    local y = tips_icons[sender][2]
    
    local news_text = "%c[255,245,118,54]"..game.translate_string("st_tip").."\\n".."%c[255,245,118,54]"..game.translate_string(news_id)
    actor:give_game_news(news_text, "ui\\ui_icons_task", Frect():set(x,y,50,50), timeout*1000, showtime)
    return true
end

Добавлено (20.08.2016, 19:25)
---------------------------------------------

Код
local level_name = {
  ["l01_escape"]   = game.translate_string("l01_escape"),
  ["l02_garbage"]   = game.translate_string("l02_garbage"),
  ["l03_agroprom"]  = game.translate_string("l03_agroprom"),
  ["l03u_agr_underground"]    = game.translate_string("l03u_agr_underground"),
  ["l04_darkvalley"]  = game.translate_string("l04_darkvalley"),
  ["l04u_labx18"]   = game.translate_string("l04u_labx18"),
  ["l05_bar"]   = game.translate_string("l05_bar"),
  ["l06_rostok"]   = game.translate_string("l06_rostok"),
  ["l07_military"]  = game.translate_string("l07_military"),
  ["l08_yantar"]   = game.translate_string("l08_yantar"),
  ["l08u_brainlab"]  = game.translate_string("l08u_brainlab"),
  ["l10_radar"]   = game.translate_string("l10_radar"),
  ["l10u_bunker"]   = game.translate_string("l10u_bunker"),
  ["l11_pripyat"]   = game.translate_string("l11_pripyat"),
  ["l12_stancia"]   = game.translate_string("l12_stancia"),
  ["l12_stancia_2"]  = game.translate_string("l12_stancia_2"),
  ["l12u_control_monolith"]    = game.translate_string("l12u_control_monolith"),
  ["l12u_sarcofag"]  = game.translate_string("l12u_sarcofag")
              }

local char_community = {
  ["neutral"]  = game.translate_string("stalker"),
  ["stalker"]  = game.translate_string("stalker"),
  ["monolith"]  = game.translate_string("monolith"),
  ["military"]    = game.translate_string("military"),
  ["killer"]    = game.translate_string("killer"),
  ["ecolog"]    = game.translate_string("ecolog"),
  ["dolg"]  = game.translate_string("dolg"),
  ["freedom"]  = game.translate_string("freedom"),
  ["bandit"]  = game.translate_string("bandit"),
  ["zombied"]    = game.translate_string("zombied"),
  ["arena_enemy"]    = game.translate_string("arena_enemy"),
  ["csky"]  = game.translate_string("csky"),
  ["sin"]  = game.translate_string("sin"),
  ["gar_dram"]  = game.translate_string("gar_dram"),
  ["agr_soldier"]  = game.translate_string("agr_soldier"),
  ["follower"]    = game.translate_string("follower"),
  ["mil_zombied"]    = game.translate_string("mil_zombied")
              }

function send_death(victim)
    if victim and IsStalker(victim) then --' and victim:character_community() ~= "zombied" then
  local death_msg ="%c[255,245,118,54]"..game.translate_string("st_death_msg").." %c[255,245,118,54]"..victim:character_name().."\\n%c[255,245,118,54]"..game.translate_string("st_dead_comm").." %c[255,245,118,54]"..char_community[victim:character_community()].."\\n%c[255,245,118,54]"..game.translate_string("st_death_loc").." %c[255,245,118,54]"..level_name[level.name()] or ""
   if victim:character_community() == "monolith" then
    db.actor:give_game_news(death_msg, "ui\\ui_icons_task", Frect():set(250,200,50,50), 1000, 5000)
   elseif victim:character_community() == "military" then
    db.actor:give_game_news(death_msg, "ui\\ui_icons_task", Frect():set(300,200,50,50), 1000, 5000)
   elseif victim:character_community() == "killer" then
    db.actor:give_game_news(death_msg, "ui\\ui_icons_task", Frect():set(150,200,50,50), 1000, 5000)
   elseif victim:character_community() == "ecolog" then
    db.actor:give_game_news(death_msg, "ui\\ui_icons_task", Frect():set(450,100,50,50), 1000, 5000)
   elseif victim:character_community() == "dolg" then
    db.actor:give_game_news(death_msg, "ui\\ui_icons_task", Frect():set(150,0,50,50), 1000, 5000)
   elseif victim:character_community() == "freedom" then
    db.actor:give_game_news(death_msg, "ui\\ui_icons_task", Frect():set(0,150,50,50), 1000, 5000)
   elseif victim:character_community() == "bandit" then
    db.actor:give_game_news(death_msg, "ui\\ui_icons_task", Frect():set(200,200,50,50), 1000, 5000)
   elseif victim:character_community() == "zombied" then
    db.actor:give_game_news(death_msg, "ui\\ui_icons_task", Frect():set(250,150,50,50), 1000, 5000)
   elseif victim:character_community() == "arena_enemy" then
    db.actor:give_game_news(death_msg, "ui\\ui_icons_task", Frect():set(0,0,50,50), 1000, 5000)
   elseif victim:character_community() == "csky" then
    db.actor:give_game_news(death_msg, "ui\\ui_icons_task", Frect():set(100,200,50,50), 1000, 5000)
   elseif victim:character_community() == "gar_dram" then
    db.actor:give_game_news(death_msg, "ui\\ui_icons_task", Frect():set(200,200,50,50), 1000, 5000)
   elseif victim:character_community() == "agr_soldier" then
    db.actor:give_game_news(death_msg, "ui\\ui_icons_task", Frect():set(300,200,50,50), 1000, 5000)
   elseif victim:character_community() == "follower" then
    db.actor:give_game_news(death_msg, "ui\\ui_icons_task", Frect():set(100,150,50,50), 1000, 5000)
   elseif victim:character_community() == "mil_zombied" then
    db.actor:give_game_news(death_msg, "ui\\ui_icons_task", Frect():set(250,150,50,50), 1000, 5000)
   elseif victim:character_community() == "stalker" then
    db.actor:give_game_news(death_msg, "ui\\ui_icons_task", Frect():set(350,200,50,50), 1000, 5000)
   else
    db.actor:give_game_news(death_msg, "ui\\ui_icons_task", Frect():set(400,150,50,50), 1000, 5000)
   end
  local snd_obj = xr_sound.get_safe_sound_object([[device\pda\pda_tip]])
  snd_obj:play_at_pos(db.actor, vector():set(0,0,0), 1, sound_object.s2d)
    end
end

function send_tip_nosound(actor, news_id, timeout, sender)
    if news_id == nil then return end

    timeout = 0

    --' Играем дефолтный звук
    pda_tips:play(db.actor, timeout, sound_object.s2d)
    local news_sound = news[news_id]

    return news_sound
end

local action_descr_by_type = {
    new = "general_new_task",
    update = "general_update_task",
    complete = "general_complete_task",
    fail = "general_fail_task"
}
function send_task(actor, type, task, objective)
    if db.actor == nil then return false end
    
    --' Берем координаты из текстуры таска
    local task_texture, task_rect = get_texture_info("ui_iconsTotal_"..task:get_id(), "ui_iconsTotal_update_task")
        
    --' Играем дефолтный звук
    pda_task:play(db.actor, 0, sound_object.s2d)

    local news_text = "%c[255,245,118,54]"..game.translate_string(action_descr_by_type[type]).."\\n".."%c[255,245,118,54]"..game.translate_string(task:get_title())
--' Отдельные иконки для нового, обновленного, выполненного и проваленного заданий.
--' Пока делал, РЕАЛЬНО ЗАЁБСЯ! Ведь я не шарю в LUA! Но таки получилось! Урра, мля!!! [ScaV 2009]

    if type == "new" then
  local task_texture_new, task_rect = get_texture_info("ui_iconsTotal_"..task:get_id(), "ui_iconsTotal_new_task")    
  if db.actor:is_talking() then
   db.actor:give_talk_message(news_text, task_texture_new, task_rect,"iconed_answer_item")
   if task:get_objectives_cnt() == objective:get_idx()+1 then
    return
   end
   news_text = game.translate_string(task:get_objective(objective:get_idx() + 1):get_description())
  end
    elseif type == "update" then
  local task_texture_update, task_rect = get_texture_info("ui_iconsTotal_"..task:get_id(), "ui_iconsTotal_update_task")
  if db.actor:is_talking() then    
   db.actor:give_talk_message(news_text, task_texture_update, task_rect,"iconed_answer_item")
   if task:get_objectives_cnt() == objective:get_idx()+1 then
    return
   end
   news_text = game.translate_string(task:get_objective(objective:get_idx() + 1):get_description())
  end
    elseif type == "complete" then
  local task_texture_complete, task_rect = get_texture_info("ui_iconsTotal_"..task:get_id(), "ui_iconsTotal_complete_task")
  if db.actor:is_talking() then    
   db.actor:give_talk_message(news_text, task_texture_complete, task_rect,"iconed_answer_item")
   if task:get_objectives_cnt() == objective:get_idx()+1 then
    return
   end
  news_text = game.translate_string(task:get_objective(objective:get_idx() + 1):get_description())
  end
    elseif type == "fail" then
  local task_texture_fail, task_rect = get_texture_info("ui_iconsTotal_"..task:get_id(), "ui_iconsTotal_fail_task")
  if db.actor:is_talking() then    
   db.actor:give_talk_message(news_text, task_texture_fail, task_rect,"iconed_answer_item")
   if task:get_objectives_cnt() == objective:get_idx()+1 then
    return
   end
   news_text = game.translate_string(task:get_objective(objective:get_idx() + 1):get_description())
  end
    else
  db.actor:give_game_news(news_text, task_texture, task_rect, 0, 3000)
end    

    local hud = get_hud()
    hud:AddCustomStatic("main_task", true)
    hud:GetCustomStatic("main_task"):wnd():SetTextST(news_text)
    hud:GetCustomStatic("main_task").m_endTime = time_global()/1000 + 5

end
function send_encyclopedy(type, title)
--Оповещаем игрока о получении новой статьи энциклопедии [ScaV]
    if type ~= "task" then
  pda_news:play(db.actor, 0, sound_object.s2d)
  --' Берем координаты из текстуры таска
  local task_texture, task_rect = get_texture_info("ui_iconsTotal_pda_info")
  local news_text = "%c[255,245,118,54]"..game.translate_string("st_found_another_pda").."\\n".."%c[255,245,118,54]"..game.translate_string(title)
  if db.actor:is_talking() then    
   db.actor:give_talk_message(news_text, task_texture, task_rect,"iconed_answer_item")
  else
   db.actor:give_game_news(news_text, task_texture, task_rect, 0, 3000)
  end    
    else
  return
    end
end
function send_treasure(name)
    pda_news:play(db.actor, 0, sound_object.s2d)
    
    local task_texture, task_rect = get_texture_info("ui_iconsTotal_found_thing")
    local location
-- Указание локации, в которой находится тайник
-- Взято (и слегка облагорожено) из 'Old Good Stalker Mod'
    if string.find(name,"esc_") then
   location = game.translate_string("l01_escape")
  elseif string.find(name,"gar_") then
   location = game.translate_string("l02_garbage")
  elseif string.find(name,"agr_secret") then
   location = game.translate_string("l03_agroprom")
  elseif string.find(name,"agr_u_secret") then
   location = game.translate_string("l03u_agr_underground")
-- Для Агропрома и подземелья дописываем "_secret", иначе обе локации
-- в сообщении о тайнике будут отмечаться как "НИИ "Агропром". [ScaV]
  elseif string.find(name,"val_") then
   location = game.translate_string("l04_darkvalley")
  elseif string.find(name,"x18_") then
   location = game.translate_string("l04u_labx18")
  elseif string.find(name,"bar_") then
   location = game.translate_string("l05_bar")
  elseif string.find(name,"ros_") then
   location = game.translate_string("l06_rostok")
  elseif string.find(name,"yan_") then
   location = game.translate_string("l08_yantar")
  elseif string.find(name,"x16_") then
   location = game.translate_string("l08u_brainlab")
  elseif string.find(name,"mil_") then
   location = game.translate_string("l07_military")
  elseif string.find(name,"rad_") then
   location = game.translate_string("l10_radar")
  elseif string.find(name,"pri_") then
   location = game.translate_string("l11_pripyat")
  else
   location = ""
    end
    
    local news_text = "%c[255,245,118,54]"..game.translate_string("st_found_new_treasure").."\\n".."%c[255,245,118,54]"..game.translate_string(name).."\\n".."%c[255,245,118,54]"..game.translate_string("st_treasure_location").."\\n".."%c[255,245,118,54]"..location
    
    db.actor:give_game_news(news_text, task_texture, task_rect, 0, 3000)
end

function get_inv_name(section)
    return system_ini():r_string(section,"inv_name")
end

function relocate_item(actor, type, item)
    if db.actor == nil then return false end
    --' Играем дефолтный звук
    if type == "in" then
  local task_texture, task_rect = get_texture_info("ui_iconsTotal_found_thing")
  local news_text = "%c[255,245,118,54]"..game.translate_string("general_in_item").."\\n".."%c[255,245,118,54]"..game.translate_string(get_inv_name(item))  
  if db.actor:is_talking() then
   db.actor:give_talk_message(news_text, task_texture, task_rect,"iconed_answer_item")
  else
   db.actor:give_game_news(news_text, task_texture, task_rect, 0, 3000)
  end  
    elseif type == "out" then
  local task_texture, task_rect = get_texture_info("ui_iconsTotal_lost_thing")
  local news_text = "%c[255,245,118,54]"..game.translate_string("general_out_item").."\\n".."%c[255,245,118,54]"..game.translate_string(get_inv_name(item))  
  if db.actor:is_talking() then
   db.actor:give_talk_message(news_text, task_texture, task_rect,"iconed_answer_item")
  else
   db.actor:give_game_news(news_text, task_texture, task_rect, 0, 3000)
  end  
    end
    
end
function relocate_money(actor, type, amount)
    if db.actor == nil then return false end

    --' Играем дефолтный звук
    if type == "in" then
  local task_texture, task_rect = get_texture_info("ui_iconsTotal_found_money")
  local news_text = "%c[255,245,118,54]"..game.translate_string("general_in_money").."\\n".."%c[255,245,118,54]"..game.translate_string(tostring(amount))
  
  if db.actor:is_talking() then
   db.actor:give_talk_message(news_text, task_texture, task_rect, "iconed_answer_item")
  else
   db.actor:give_game_news(news_text, task_texture, task_rect, 0, 3000)
  end  
    elseif type == "out" then
  local task_texture, task_rect = get_texture_info("ui_iconsTotal_lost_money")
  local news_text = "%c[255,245,118,54]"..game.translate_string("general_out_money").."\\n".."%c[255,245,118,54]"..game.translate_string(tostring(amount))
  
  if db.actor:is_talking() then
   db.actor:give_talk_message(news_text, task_texture, task_rect, "iconed_answer_item")
  else
   db.actor:give_game_news(news_text, task_texture, task_rect, 0, 3000)
  end  
    end
    
end
  Злобная реклама
Суббота, 20.08.2016, 19:25
Статус:
Сообщений: 666
Регистрация: 15.01.2012
Российская Федерация  RayTwitty
Суббота, 20.08.2016, 19:40 | Сообщение # 546
Phantoms Zone
Shadows Addon
DMX MOD
Статус:
Опытный:
Сообщений: 2366
Награды: 15
Регистрация: 05.07.2010

РСФСР, и в какой строке вылет? Лучше наверно файл залей.
  Злобная реклама
Суббота, 20.08.2016, 19:40
Статус:
Сообщений: 666
Регистрация: 05.07.2010
Российская Федерация  РСФСР
Суббота, 20.08.2016, 20:29 | Сообщение # 547
Статус:
Неопытный:
Сообщений: 437
Награды: 3
Регистрация: 15.01.2012

  Злобная реклама
Суббота, 20.08.2016, 20:29
Статус:
Сообщений: 666
Регистрация: 15.01.2012
Российская Федерация  RayTwitty
Суббота, 20.08.2016, 21:11 | Сообщение # 548
Phantoms Zone
Shadows Addon
DMX MOD
Статус:
Опытный:
Сообщений: 2366
Награды: 15
Регистрация: 05.07.2010

РСФСР,
Код
local death_msg ="%c[255,245,118,54]"..game.translate_string("st_death_msg").." %c[255,245,118,54]"..victim:character_name().."\\n%c[255,245,118,54]"..game.translate_string("st_dead_comm").." %c[255,245,118,54]"..char_community[victim:character_community()].."\\n%c[255,245,118,54]"..game.translate_string("st_death_loc").." %c[255,245,118,54]"..level_name[level.name()] or ""

замени на:
Код
local death_msg ="%c[255,245,118,54]"..game.translate_string("st_death_msg").." %c[255,245,118,54]"..victim:character_name().."\\n%c[255,245,118,54]"..game.translate_string("st_dead_comm").." %c[255,245,118,54]"..char_community[victim:character_community()] or "".."\\n%c[255,245,118,54]"..game.translate_string("st_death_loc").." %c[255,245,118,54]"..level_name[level.name()] or ""
  Злобная реклама
Суббота, 20.08.2016, 21:11
Статус:
Сообщений: 666
Регистрация: 05.07.2010
Российская Федерация  РСФСР
Воскресенье, 21.08.2016, 01:16 | Сообщение # 549
Статус:
Неопытный:
Сообщений: 437
Награды: 3
Регистрация: 15.01.2012

RayTwitty, ты случайно не в хогвртсе учился? волшебник просто)
теперь осталось заставить сталкеров на месте стоять

Добавлено (21.08.2016, 01:16)
---------------------------------------------
Scavenger, Вот локация http://muonium.rgho.st/6Hw9P4zfL запускал на твоем моде. у сталкеров стоит комбат игнор но это не помогает. сможешь их угомонить - расскажешь

  Злобная реклама
Воскресенье, 21.08.2016, 01:16
Статус:
Сообщений: 666
Регистрация: 15.01.2012
Российская Федерация  Scavenger
Понедельник, 22.08.2016, 11:28 | Сообщение # 550
Paradise Lost mod
Статус:
Опытный:
Сообщений: 1777
Награды: 6
Регистрация: 22.02.2011

Пока не могу даже запустить уровень, вылетает на этапе синхронизации с таким логом:
stack trace:
0023:040DCA22 xrGame.dll

С оригинальным xrGame лока работает, но там уже другие проблемы появляются.
Пока что пытаюсь понять, в чем проблема. На чистой игре тестить не хоцца ))
  Злобная реклама
Понедельник, 22.08.2016, 11:28
Статус:
Сообщений: 666
Регистрация: 22.02.2011
Российская Федерация  РСФСР
Понедельник, 22.08.2016, 17:50 | Сообщение # 551
Статус:
Неопытный:
Сообщений: 437
Награды: 3
Регистрация: 15.01.2012

Scavenger, может дело в news_manager.script? там Snadows что-то нахимичил чтобы не вылетало при смерти нпс. Еще я заспавнил на уровне кучу оружия патронов детекторов и одну аномалию. ах да и еще пару шкафов. может ты что-то менял из этого в сравнении с версией 2013 года?
  Злобная реклама
Понедельник, 22.08.2016, 17:50
Статус:
Сообщений: 666
Регистрация: 15.01.2012
Российская Федерация  RayTwitty
Понедельник, 22.08.2016, 19:27 | Сообщение # 552
Phantoms Zone
Shadows Addon
DMX MOD
Статус:
Опытный:
Сообщений: 2366
Награды: 15
Регистрация: 05.07.2010

Цитата РСФСР ()
может дело в news_manager.script? там Snadows что-то нахимичил чтобы не вылетало при смерти нпс.

Вероятность этого крайне мала)

Цитата Scavenger ()
0023:040DCA22 xrGame.dll

Такие логи без отладчика практически невозможно обработать. Часть адреса динамически меняется, вручную нужно много мест в движке перебирать.

Проще понять, после чего такой вылет произошел и больше так не делать.
  Злобная реклама
Понедельник, 22.08.2016, 19:27
Статус:
Сообщений: 666
Регистрация: 05.07.2010
Российская Федерация  Scavenger
Вторник, 23.08.2016, 09:04 | Сообщение # 553
Paradise Lost mod
Статус:
Опытный:
Сообщений: 1777
Награды: 6
Регистрация: 22.02.2011

RayTwitty, да вот черт его знает, из-за чего. Я эти тестовые локации обычно переношу полностью в PL и запускаю в игре через меню выбора спавна. Перед этим, конечно, подставляю в геймдату нужный game.graph. С этим уровнем поступил ровно так же. С моим xr_Game.dll он не запускается, а вот с родным - работает. Но тогда придется отключать ряд скриптов, чтобы не вылетало на каждый чих, и не будет слотов, раскачки и т.п.

Странно - что там такого может быть?.. С локами типа poorpeople и прочими такой проблемы нет.
  Злобная реклама
Вторник, 23.08.2016, 09:04
Статус:
Сообщений: 666
Регистрация: 22.02.2011
Российская Федерация  РСФСР
Вторник, 23.08.2016, 11:34 | Сообщение # 554
Статус:
Неопытный:
Сообщений: 437
Награды: 3
Регистрация: 15.01.2012

Цитата
и запускаю в игре через меню выбора спавна. Перед этим, конечно, подставляю в геймдату нужный game.graph

а config\game_graphs.ltx game_levels.ltx и game_maps_single.ltx подставлял?
Вот убрал из спавна шкафы детекторы и некоторое оружие. попробуй
http://muonium.rgho.st/8DcQ42VrT
  Злобная реклама
Вторник, 23.08.2016, 11:34
Статус:
Сообщений: 666
Регистрация: 15.01.2012
Российская Федерация  Scavenger
Вторник, 23.08.2016, 17:54 | Сообщение # 555
Paradise Lost mod
Статус:
Опытный:
Сообщений: 1777
Награды: 6
Регистрация: 22.02.2011

РСФСР, этот вариант работает. Но тут же вылезла проблема другого характера (собственно, в poorpeople она тоже была, но от нее требовался только графоний, поэтому даже внимания не обращал): не работает апдейт в bind_stalker.script. Из-за этого раскачка не работает и хитмарки не пропадают - так и висят на экране. И другие косяки по мелочи.
Может, RayTwitty что подскажет по этой теме, а то я вообще не в курсе, каким макаром игра решает, включать ей апдейт или нет ))
Сообщение отредактировал Scavenger - Вторник, 23.08.2016, 17:59
  Злобная реклама
Вторник, 23.08.2016, 17:54
Статус:
Сообщений: 666
Регистрация: 22.02.2011
Поиск: