Случайная подборка модов
Shadows Addon 0.8
4.1
Doomed to Eternal Torment
3.9
Время Перемен 2.5
4.0
Old Episodes. Epilogue
3.2
Хроники Кайдана. Вторая серия
4.0
Lost World Requital
3.9
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
Модератор форума: FanG, Аdmin, FantomICW, Overfirst  
[CoP] Модострой: вопросница
Российская Федерация  Overfirst
Воскресенье, 31.12.2017, 13:17 | Сообщение # 1
Статус:
Бывалый:
Сообщений: 1081
Награды: 19
Регистрация: 11.06.2015

[CoP] Модострой: вопросница

Тема посвящена моддингу на платформе Зов Припяти.

Соседние темы: Тень Чернобыля / Чистое небо.


  • Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском по разделу, ответ на него, вероятно, уже есть.

  • Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода.

  • Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа).

  • Благодарность выражаем в личке или же ставим плюсик в историю репутации. Подобные посты будут удаляться.
  •   Злобная реклама
    Воскресенье, 31.12.2017, 13:17
    Статус:
    Сообщений: 666
    Регистрация: 11.06.2015
    Российская Федерация  Lektorrr
    Суббота, 14.03.2020, 10:17 | Сообщение # 6256
    Статус:
    Новичок:
    Сообщений: 266
    Награды: 5
    Регистрация: 09.01.2013

    Цитата makdm ()
    Я знаю ответ.
    Просто не считаю нужным отвечать тому, кто сам ничего для решения вопроса не сделал, а ждет готового решения.

    Насколько я знаю, в ЗП неписи, в частности симуляционные незаскриптованные, вообще между локациями не перемещаются и нигде эта фича в аддоне не используется.

    Я искал искал ответ на свой вопрос в Гугле и на форумах, но так и не нашел решения. Если в ЗП переход НПС не вырезан и просто не задействуется - значит я признаю, что виноват и не попробовал перевести вручную НПС через граф.

    Однако, я все еще не понимаю: а как же заставить симуляционные отряды самостоятельно ходить между уровнями?
    Сообщение отредактировал Lektorrr - Суббота, 14.03.2020, 10:27
      Злобная реклама
    Суббота, 14.03.2020, 10:17
    Статус:
    Сообщений: 666
    Регистрация: 09.01.2013
    Российская Федерация  Neptun
    Суббота, 14.03.2020, 11:22 | Сообщение # 6257
    Связной
    Статус:
    Бывалый:
    Сообщений: 672
    Награды: 9
    Регистрация: 25.03.2012

    Цитата Lektorrr ()
    Однако, я все еще не понимаю: а как же заставить симуляционные отряды самостоятельно ходить между уровнями?

    К чему такая принципиальность? Как вообще можно узнать, что какой-то отряд перешёл на другую локацию? Если вы имеете в виду каких-нибудь сюжетных неписей, которых вам нужно сопроводить по локациям, то в оригинале это сделано так: удаляем сквад на Затоне, спавним новый сквад на Юпитере. Только так. А для создания симуляции жизни в ЗП достаточно инструментов.
    Сообщение отредактировал Neptun - Воскресенье, 15.03.2020, 13:48
      Злобная реклама
    Суббота, 14.03.2020, 11:22
    Статус:
    Сообщений: 666
    Регистрация: 25.03.2012
    Российская Федерация  Lektorrr
    Суббота, 14.03.2020, 12:51 | Сообщение # 6258
    Статус:
    Новичок:
    Сообщений: 266
    Награды: 5
    Регистрация: 09.01.2013

    Цитата Neptun ()
    для создания симуляции жизни в ЗП достаточно инструментов.

    Интересует именно путешествие рандомных НПС по игровому миру, а не только в рамках одной локации. Например, однажды встретив сталкера на кордоне, мы могли бы увидеть его уже на свалке.
    Сообщение отредактировал Lektorrr - Суббота, 14.03.2020, 12:51
      Злобная реклама
    Суббота, 14.03.2020, 12:51
    Статус:
    Сообщений: 666
    Регистрация: 09.01.2013
    Сомали  WolfHeart
    Суббота, 14.03.2020, 13:03 | Сообщение # 6259
    Статус:
    Опытный:
    Сообщений: 3154
    Награды: 18
    Регистрация: 06.06.2017

    Цитата Lektorrr ()
    Интересует именно путешествие рандомных НПС по игровому миру, а не только в рамках одной локации.

    Посмотри как это реализованно в СоС.
      Злобная реклама
    Суббота, 14.03.2020, 13:03
    Статус:
    Сообщений: 666
    Регистрация: 06.06.2017
    Российская Федерация  Lektorrr
    Суббота, 14.03.2020, 13:50 | Сообщение # 6260
    Статус:
    Новичок:
    Сообщений: 266
    Награды: 5
    Регистрация: 09.01.2013

    Цитата WolfHeart ()
    Посмотри как это реализованно в СоС.

    В СоС тотально перелопачены практически все скрипты и симуляция в целом. Достать что-то оттуда отдельно довольно проблематично.

    Кстати, похожая фича есть и в моде "Ветер Времени", но там вроде как нет исходников движка.
      Злобная реклама
    Суббота, 14.03.2020, 13:50
    Статус:
    Сообщений: 666
    Регистрация: 09.01.2013
    Польша  BL00Der
    Воскресенье, 15.03.2020, 14:41 | Сообщение # 6261
    Статус:
    Гость:
    Сообщений: 33
    Награды: 0
    Регистрация: 26.11.2017

    Я создал мутанта на основе тушкана. Мутант, однако, не борется со мной и убегает. Какие параметры в его конфиге должны быть изменены, чтобы он не убежал от боя?
      Злобная реклама
    Воскресенье, 15.03.2020, 14:41
    Статус:
    Сообщений: 666
    Регистрация: 26.11.2017
    Российская Федерация  Dalavier
    Воскресенье, 15.03.2020, 16:00 | Сообщение # 6262
    Статус:
    Зевака:
    Сообщений: 8
    Награды: 0
    Регистрация: 27.02.2018

    Здравствуйте, подскажите простой скрипт на закрытие окна КПК во время выброса (не на CoP, а на CoC, но разницы нет). Что-то я по всякому пробую, не получается. Платформа СоС 1.4.22, если начался выброс, а в это время открыт КПК (карта) нужно ее просто автоматически закрыть.

    Зачем нужно: есть такой скрипт pda_off, который во время выброса вместо КПК показывает картинку. Так вот если открыть КПК ДО начала выброса, а потом его закрыть игра вылетит, потому что hud = nil,

    Вот кусок кода:


    Нужно или в Surge_manager добавить проверку на открытый ПДА и принудительно его закрыть или в этом коде дописать эту проверку. Подскажите решение пожалйуста.
      Злобная реклама
    Воскресенье, 15.03.2020, 16:00
    Статус:
    Сообщений: 666
    Регистрация: 27.02.2018
    Украина  molodoy_chelovek
    Воскресенье, 15.03.2020, 17:06 | Сообщение # 6263
    Статус:
    Новичок:
    Сообщений: 316
    Награды: 2
    Регистрация: 14.07.2019

    Цитата Dalavier ()
    открыт КПК (карта) нужно ее просто автоматически закрыть.

    карта открывается/закрывается консольной командой "map"(user.ltx). Вызвать консольную команду можно функцией get_console():execute("команда"). А по поводу hud = nil думаю можно сделать проверку перед вызовом hud функций:
    Цитата
    if hud ~= nil then
    вызов hud функции
    else
    повторяем действия с переменными hud и window из вашего куска кода (после первых проверок)
    .
    Сообщение отредактировал molodoy_chelovek - Воскресенье, 15.03.2020, 17:13
      Злобная реклама
    Воскресенье, 15.03.2020, 17:06
    Статус:
    Сообщений: 666
    Регистрация: 14.07.2019
    Российская Федерация  Dalavier
    Воскресенье, 15.03.2020, 17:29 | Сообщение # 6264
    Статус:
    Зевака:
    Сообщений: 8
    Награды: 0
    Регистрация: 27.02.2018

    Что-то ничего не получается, пробовал в surge_manager в список
    Код
        if (self.started == true) then
      xr_statistic.inc_counter("surges")
      self:kill_all_unhided()
      self:respawn_artefacts_and_replace_anomaly_zone()
      self:toggle_level_artefact_respawns()

    добавить команду закрытия ПДА - не работает, не закрывается, если на старте выброса он открыт

    Любые условия запихиваю в код подмены ПДА на картинку, скрипт просто перестает работать - открывается обычный ПДА, что-то я не так делаю. В скриптах я полный ноль, по аналогии могу что-то склепать, а тут прямо затык

    Нарисовал вот такое:
    Код
    if (pdaoff_blowpsi) then
        if actor then
      if info_id == "ui_pda" and (surge_manager.is_started() or psi_storm_manager.is_started()) then
       if hud ~= nil then
        get_hud():RemoveDialogToRender(hud)
        HUD = nil
        elseif info_id == "ui_pda" and (surge_manager.is_started() or psi_storm_manager.is_started()) then
        hud = get_hud()
       window = PdaNoiseWnd()
       hud:AddDialogToRender(window)
        elseif info_id == "ui_pda_hide" and (surge_manager.is_started() or psi_storm_manager.is_started()) then
       hud:RemoveDialogToRender(window)
       window = nil
       hud = nil
       end
      end
        end
    end

    Теперь вылета нет, открытый ПДА закрывается во время выброса, открывается окно window, но теперь ПДА не закрывается, окно висит все время, а повторное нажание на кнопку вызова ПДА открывает обычный ПДА поверх window. Что-то я намудрил
    Сообщение отредактировал Dalavier - Воскресенье, 15.03.2020, 18:31
      Злобная реклама
    Воскресенье, 15.03.2020, 17:29
    Статус:
    Сообщений: 666
    Регистрация: 27.02.2018
    Украина  molodoy_chelovek
    Воскресенье, 15.03.2020, 19:50 | Сообщение # 6265
    Статус:
    Новичок:
    Сообщений: 316
    Награды: 2
    Регистрация: 14.07.2019

    Цитата Dalavier ()
    get_hud():RemoveDialogToRender(hud)

    Я думаю эта строка должна выглядеть так
    Цитата Dalavier ()
    hud:RemoveDialogToRender(window)
      Злобная реклама
    Воскресенье, 15.03.2020, 19:50
    Статус:
    Сообщений: 666
    Регистрация: 14.07.2019
    Российская Федерация  Dalavier
    Воскресенье, 15.03.2020, 19:57 | Сообщение # 6266
    Статус:
    Зевака:
    Сообщений: 8
    Награды: 0
    Регистрация: 27.02.2018

    Цитата molodoy_chelovek ()
    Я думаю эта строка должна выглядеть так

    Так окно подмены window появляется единожды, закрываешь ПДА, и при следующих открытиях ПДА (во время выброса) уже открывается обычный.

    Уже много перепробовал разных вариантов, почти получилось, но все равно какие-то затыки есть. Может быть все-таки лучший вариант это принудительное закрытие ПДА при начале выброса, но опять-таки в surge_manager.script в том списке, где перечислены
    Код
    xr_statistic.inc_counter("surges")
      self:kill_all_unhided()
      self:respawn_artefacts_and_replace_anomaly_zone()
      self:toggle_level_artefact_respawns()

    как добавить это условие принудительного закрытия ПДА. Мне кажется это решило бы проблему на корню.
    Сообщение отредактировал Dalavier - Воскресенье, 15.03.2020, 20:40
      Злобная реклама
    Воскресенье, 15.03.2020, 19:57
    Статус:
    Сообщений: 666
    Регистрация: 27.02.2018
    Украина  molodoy_chelovek
    Воскресенье, 15.03.2020, 20:58 | Сообщение # 6267
    Статус:
    Новичок:
    Сообщений: 316
    Награды: 2
    Регистрация: 14.07.2019

    Цитата Dalavier ()
      if info_id == "ui_pda"

    это как я понимаю проверка на активное окно ПДА. Проверяется оно (опять же как я понял)апдейтом. В прошлом апдейте вы вывели на экран window, переменная худ не равна nil. Следующий апдейт проходит проверку hud ~= nil в связи с чем и удаляет с экрана window. И таким образом получается цикл - окно создаётся и мгновенно удаляется.

    Добавлено (15.03.2020, 21:02)
    ---------------------------------------------
    и вообще, почему вы ВНУТРИ этой проверки
    Цитата Dalavier ()
    if info_id == "ui_pda"
    проверяете еще и это?...
    Цитата Dalavier ()
    elseif info_id == "ui_pda_hide"
    Если по логике это должно быть отдельной проверкой
    Сообщение отредактировал molodoy_chelovek - Воскресенье, 15.03.2020, 21:03
      Злобная реклама
    Воскресенье, 15.03.2020, 20:58
    Статус:
    Сообщений: 666
    Регистрация: 14.07.2019
    Российская Федерация  Dalavier
    Воскресенье, 15.03.2020, 21:50 | Сообщение # 6268
    Статус:
    Зевака:
    Сообщений: 8
    Награды: 0
    Регистрация: 27.02.2018

    В общем, единственное до чего тупая бащка додумалась, это вот такая конструкция, хотя бы не вылетает, но и работает неправильно:
    Код
    if (pdaoff_blowpsi) then
        if actor then
      if info_id == "ui_pda" and (surge_manager.is_started() or psi_storm_manager.is_started()) then
       if hud ~= nil then
        hud = get_hud()
        hud:RemoveDialogToRender(hud)
        hud:RemoveDialogToRender(window)
        window = nil
        hud = nil
         elseif info_id == "ui_pda_hide" and (surge_manager.is_started() or psi_storm_manager.is_started()) then
          hud:RemoveDialogToRender(window)
          hud:RemoveDialogToRender(hud)
          window = nil
          hud = nil
       else
        if info_id == "ui_pda" and (surge_manager.is_started() or psi_storm_manager.is_started()) then
         hud = get_hud()
         window = PdaNoiseWnd()
         hud:AddDialogToRender(window)
          elseif info_id == "ui_pda_hide" and (surge_manager.is_started() or psi_storm_manager.is_started()) then
           hud:RemoveDialogToRender(window)
           hud:RemoveDialogToRender(hud)
           window = nil
           hud = nil
        end
       end
      end
        end
    end

    При начале выброса не вылетет, но каждое повторное нажатие кнопки вызова ПДА, сначала вылазит окно-заглушка, потом под ним появляется худ, потом открывается обычный ПДА с картой, а потом закрывается все. И так по циклу. Хрень какая-то.
      Злобная реклама
    Воскресенье, 15.03.2020, 21:50
    Статус:
    Сообщений: 666
    Регистрация: 27.02.2018
    Российская Федерация  Prostomod
    Воскресенье, 15.03.2020, 22:15 | Сообщение # 6269
    Статус:
    Новичок:
    Сообщений: 266
    Награды: 4
    Регистрация: 27.02.2018

    Всем здравствуйте. Вот захотелось мне восстановить систему лута из ящиков при их разбитии. Известно ли, какие скрипты из ТЧ или ЧН отвечают за эту систему. Думаю найти их и перенести в ЗП. Либо же в каком моде это уже восстановлено?
      Злобная реклама
    Воскресенье, 15.03.2020, 22:15
    Статус:
    Сообщений: 666
    Регистрация: 27.02.2018
    Российская Федерация  sergej5500
    Воскресенье, 15.03.2020, 23:28 | Сообщение # 6270
    Статус:
    Новичок:
    Сообщений: 290
    Награды: 4
    Регистрация: 09.01.2017

    Цитата Prostomod ()
    Вот захотелось мне восстановить систему лута из ящиков при их разбитии.


    Насколько я знаю, эту систему никто не трогал. Все настраивается в логике объектов. Например, так:

    [logic]
    active = nil
    [drop_box]
    items = medkit,1,bandage,3

    или

    [logic]
    active = nil
    [drop_box]
    community = small_box_generic

    Прописывайте это ящикам в алл.спавн. И все работает.
      Злобная реклама
    Воскресенье, 15.03.2020, 23:28
    Статус:
    Сообщений: 666
    Регистрация: 09.01.2017
    Поиск: