Случайная подборка модов
Dollchan 7: Inception
2.9
SRP mod
3.9
Dead Autumn
4.1
Pain of The Past
2.8
Legend Returns 0.9.2
4.0
АльтернативА 1.3.2
3.2
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
Архив - только для чтения
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
Поиск: