Случайная подборка модов
Dead City Mod v. 4.80
3.7
Call of Misery
4.1
Время Альянса
2.9
Блудный сын
2.8
MISERY 2.2
4.1
Радиоактивное мясо. Схватка
3.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
Российская Федерация  Scavenger
Четверг, 21.07.2016, 16:17 | Сообщение # 526
Paradise Lost mod
Статус:
Опытный:
Сообщений: 1777
Награды: 6
Регистрация: 22.02.2011

PL's not dead. Только тс-с-с...
P.S. На moddb недавно не отписывался о_0
Сообщение отредактировал Scavenger - Четверг, 21.07.2016, 16:20
  Злобная реклама
Четверг, 21.07.2016, 16:17
Статус:
Сообщений: 666
Регистрация: 22.02.2011
Российская Федерация  Enclave
Четверг, 21.07.2016, 16:35 | Сообщение # 527
Ветеран Спецназа
Статус:
Ветеран:
Сообщений: 5827
Награды: 17
Регистрация: 24.01.2012

FOL, Scavenger, Спасибо за ответ, а то переживал.

P.S. Было хорошо, если видео про локации снова показали.
Сообщение отредактировал Enclave - Четверг, 21.07.2016, 20:10
  Злобная реклама
Четверг, 21.07.2016, 16:35
Статус:
Сообщений: 666
Регистрация: 24.01.2012
Украина  Бот_Николай
Четверг, 21.07.2016, 18:34 | Сообщение # 528
Legend Returns и другие проекты
Статус:
Опытный:
Сообщений: 1752
Награды: 15
Регистрация: 27.09.2015

Цитата Scavenger ()
P.S. На moddb недавно не отписывался о_0



Извиняюсь, это, видимо, куратор отписывался. Он просто подписан как Creator.
  Злобная реклама
Четверг, 21.07.2016, 18:34
Статус:
Сообщений: 666
Регистрация: 27.09.2015
Российская Федерация  РСФСР
Пятница, 19.08.2016, 20:05 | Сообщение # 529
Статус:
Неопытный:
Сообщений: 437
Награды: 3
Регистрация: 15.01.2012

Scavenger, тебе еще нужна физ. горка с неписями? их я заспавнил и вывел логику во внешние файлы. спокойно умирать только не хотят)(
  Злобная реклама
Пятница, 19.08.2016, 20:05
Статус:
Сообщений: 666
Регистрация: 15.01.2012
Российская Федерация  Scavenger
Суббота, 20.08.2016, 07:48 | Сообщение # 530
Paradise Lost mod
Статус:
Опытный:
Сообщений: 1777
Награды: 6
Регистрация: 22.02.2011

РСФСР, да, нужна =) Лучше способа тестить рэгдолл нету.
  Злобная реклама
Суббота, 20.08.2016, 07:48
Статус:
Сообщений: 666
Регистрация: 22.02.2011
Российская Федерация  РСФСР
Суббота, 20.08.2016, 10:17 | Сообщение # 531
Статус:
Неопытный:
Сообщений: 437
Награды: 3
Регистрация: 15.01.2012

Scavenger, вылетает при смерти сталкеров правда
Код
[error]Expression    : fatal error
[error]Function      : CScriptEngine::lua_error
[error]File          : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
[error]Line          : 73
[error]Description   : <no expression>
[error]Arguments     : LUA error: ...:\s.t.a.l.k.e.r\gamedata\scripts\news_manager.script:273: attempt to concatenate field '?' (a nil value)
явно что-то с сообщениями о смерти
запускал непосредственно в твоем моде. От этого вылета избавлюсь и выложу
  Злобная реклама
Суббота, 20.08.2016, 10:17
Статус:
Сообщений: 666
Регистрация: 15.01.2012
Российская Федерация  ForestOfShadows
Суббота, 20.08.2016, 16:18 | Сообщение # 532
Статус:
Новичок:
Сообщений: 233
Награды: 0
Регистрация: 21.05.2012

Цитата РСФСР ()
явно что-то с сообщениями о смерти
Отсутствует иконка сообщения на смерть.
  Злобная реклама
Суббота, 20.08.2016, 16:18
Статус:
Сообщений: 666
Регистрация: 21.05.2012
Российская Федерация  РСФСР
Суббота, 20.08.2016, 16:26 | Сообщение # 533
Статус:
Неопытный:
Сообщений: 437
Награды: 3
Регистрация: 15.01.2012

ForestOfShadows, где она прописывается?
  Злобная реклама
Суббота, 20.08.2016, 16:26
Статус:
Сообщений: 666
Регистрация: 15.01.2012
Российская Федерация  ForestOfShadows
Суббота, 20.08.2016, 17:16 | Сообщение # 534
Статус:
Новичок:
Сообщений: 233
Награды: 0
Регистрация: 21.05.2012

В news_manager.script
  Злобная реклама
Суббота, 20.08.2016, 17:16
Статус:
Сообщений: 666
Регистрация: 21.05.2012
Российская Федерация  РСФСР
Суббота, 20.08.2016, 18:50 | Сообщение # 535
Статус:
Неопытный:
Сообщений: 437
Награды: 3
Регистрация: 15.01.2012

ForestOfShadows, у меня 20 сталкеров. Их всех туда прописать? честно говоря не понял в том файле ничего(
  Злобная реклама
Суббота, 20.08.2016, 18:50
Статус:
Сообщений: 666
Регистрация: 15.01.2012
Российская Федерация  RayTwitty
Суббота, 20.08.2016, 19:01 | Сообщение # 536
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 | Сообщение # 537
Железный человек
Статус:
Опытный:
Сообщений: 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 | Сообщение # 538
Статус:
Опытный:
Сообщений: 2517
Награды: 13
Регистрация: 04.12.2012

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

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

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

Её надо переработать серьёзно: убрать скалы, расширить и добавить несколько заброшенных деревень, поле. Я могу даже набросать концепт, но вряд ли этим будет кто-то заниматься в рамках этого мода.
  Злобная реклама
Суббота, 20.08.2016, 19:19
Статус:
Сообщений: 666
Регистрация: 04.12.2012
Российская Федерация  РСФСР
Суббота, 20.08.2016, 19:25 | Сообщение # 539
Статус:
Неопытный:
Сообщений: 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 | Сообщение # 540
Phantoms Zone
Shadows Addon
DMX MOD
Статус:
Опытный:
Сообщений: 2366
Награды: 15
Регистрация: 05.07.2010

РСФСР, и в какой строке вылет? Лучше наверно файл залей.
  Злобная реклама
Суббота, 20.08.2016, 19:40
Статус:
Сообщений: 666
Регистрация: 05.07.2010
Поиск: