Случайная подборка модов
Oblivion Lost Remake 2.5
4.4
Золотой Обоз 2
3.0
Новое Время
3.2
Dream Reader-TFZ 1.1
3.7
Тайный путь
3.6
SZM CoP 0.2
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
    Российская Федерация  Neptun
    Пятница, 21.02.2020, 14:20 | Сообщение # 6181
    Связной
    Статус:
    Бывалый:
    Сообщений: 672
    Награды: 9
    Регистрация: 25.03.2012

    denis2000, makdm, не работает, по-разному проверил, и так:
    Код
    [sr_idle@autosave]
    on_info = {-st_save_yan_a1_weak_up} sr_idle@nil %=scenario_autosave(st_save_yan_a1_weak_up) +st_save_yan_a1_weak_up%
    on_info2 = {+st_save_yan_a1_weak_up} sr_idle@nil

    И так:
    Код
    [sr_idle@autosave]
    on_info = %=scenario_autosave(st_save_yan_a1_weak_up)% sr_idle@nil

    Сейв крашится в любом случае. Повторяю, если ДВАЖДЫ перезагрузить, сейв крашится.
      Злобная реклама
    Пятница, 21.02.2020, 14:20
    Статус:
    Сообщений: 666
    Регистрация: 25.03.2012
    Российская Федерация  denis2000
    Пятница, 21.02.2020, 14:47 | Сообщение # 6182
    Время Альянса
    Статус:
    Ветеран:
    Сообщений: 4070
    Награды: 16
    Регистрация: 19.07.2013

    Neptun, Минус одна из возможных причин... Да логика рестриктора при сохранении игры самая частая, но далеко не единственная из причин.
    Сообщение отредактировал denis2000 - Пятница, 21.02.2020, 14:49
      Злобная реклама
    Пятница, 21.02.2020, 14:47
    Статус:
    Сообщений: 666
    Регистрация: 19.07.2013
    Российская Федерация  Neptun
    Пятница, 21.02.2020, 14:48 | Сообщение # 6183
    Связной
    Статус:
    Бывалый:
    Сообщений: 672
    Награды: 9
    Регистрация: 25.03.2012

    Быстрые сохранения работают отлично. Сохранения через диалог тоже работают отлично. А сохранки через рестриктор - ломаются.
      Злобная реклама
    Пятница, 21.02.2020, 14:48
    Статус:
    Сообщений: 666
    Регистрация: 25.03.2012
    Российская Федерация  makdm
    Пятница, 21.02.2020, 15:31 | Сообщение # 6184
    Время Альянса
    Статус:
    Опытный:
    Сообщений: 1787
    Награды: 19
    Регистрация: 22.11.2012

    Neptun, вы внимательно читали, что я вам пишу??

    Цитата makdm ()
    on_info = {-infoportion } sr_idle@save_1 %+infoportion =scenario_autosave( string)%


    Выдача инфопорции должна происходить ДО автосейва, чтобы она попала в этот сейв, как выданная.
    Только так и НИКАК по другому.
    А у вас что написано?
    Цитата Neptun ()
    n_info = {-st_save_yan_a1_weak_up} sr_idle@nil %=scenario_autosave(st_save_yan_a1_weak_up) +st_save_yan_a1_weak_up%

    Эта инфопорция НЕ попадает в сейв!!!!
    Поэтому и бьются сохранения.
    Типичная ошибка....
    Сообщение отредактировал makdm - Пятница, 21.02.2020, 15:46
      Злобная реклама
    Пятница, 21.02.2020, 15:31
    Статус:
    Сообщений: 666
    Регистрация: 22.11.2012
    Российская Федерация  denis2000
    Суббота, 22.02.2020, 14:40 | Сообщение # 6185
    Время Альянса
    Статус:
    Ветеран:
    Сообщений: 4070
    Награды: 16
    Регистрация: 19.07.2013

    Цитата makdm ()
    Эта инфопорция НЕ попадает в сейв!!!!
    Поэтому и бьются сохранения.

    То, что инфопорция не попала в сейв - это конечно печально, но не приводит к порче сохранения (в том случае если на нее не завязаны действия в других схемах логики).

    В случае загрузки этого сохранения, снова выполниться условия для сохранения и сохранение будет тут-же перезаписано новым - это тоже не хорошо, но и не фатал.
    Сообщение отредактировал denis2000 - Суббота, 22.02.2020, 14:44
      Злобная реклама
    Суббота, 22.02.2020, 14:40
    Статус:
    Сообщений: 666
    Регистрация: 19.07.2013
    Украина  AziatkaVictor
    Суббота, 22.02.2020, 14:49 | Сообщение # 6186
    Статус:
    Опытный:
    Сообщений: 1313
    Награды: 4
    Регистрация: 30.08.2018

    denis2000, ну, например в моде, который недавно вышел все как раз ломается, что печально. Тоесть, если у меня, например, идет логика:
    Код
    on_info = %=send_tip(необходимые параметры) =give_task(параметры) +infoportion% sr_idle@void
    то мое сообщение будет отправленно 3-4 раза, потому что он стоит первым в строчке? Просто столкнулся с такой проблемой и не мог понять в чем проблема...
      Злобная реклама
    Суббота, 22.02.2020, 14:49
    Статус:
    Сообщений: 666
    Регистрация: 30.08.2018
    Российская Федерация  denis2000
    Суббота, 22.02.2020, 14:57 | Сообщение # 6187
    Время Альянса
    Статус:
    Ветеран:
    Сообщений: 4070
    Награды: 16
    Регистрация: 19.07.2013

    Цитата AziatkaVictor ()
    Просто столкнулся с такой проблемой и не мог понять в чем проблема...

    А можно увидеть всю секцию, а еще лучше всю логику, чтобы оценить проблему? Я не даром оговорился, что не фатал если на это действие не завязаны другие действия в том числе в совершенно других схемах.
    Сообщение отредактировал denis2000 - Суббота, 22.02.2020, 14:59
      Злобная реклама
    Суббота, 22.02.2020, 14:57
    Статус:
    Сообщений: 666
    Регистрация: 19.07.2013
    Российская Федерация  makdm
    Суббота, 22.02.2020, 15:05 | Сообщение # 6188
    Время Альянса
    Статус:
    Опытный:
    Сообщений: 1787
    Награды: 19
    Регистрация: 22.11.2012

    Цитата denis2000 ()
    сохранение будет тут-же перезаписано новым - это тоже не хорошо, но и не фатал.

    При этом автосохранение становится "битым" и если в дальнейшем с него загрузить игру, то получаем полный фатал всей игры.
    Правильная секция логики рестриктора, в которой происходит автосохранение, здесь:

    https://ap-pro.ru/forum/21-90672-1291831-16-1582282791
      Злобная реклама
    Суббота, 22.02.2020, 15:05
    Статус:
    Сообщений: 666
    Регистрация: 22.11.2012
    Украина  AziatkaVictor
    Суббота, 22.02.2020, 15:06 | Сообщение # 6189
    Статус:
    Опытный:
    Сообщений: 1313
    Награды: 4
    Регистрация: 30.08.2018

    denis2000, Вот, простенькая логика на проигрывание звука, если ГГ в рестрикторе, при поднятии предмета логика переключается на пустую, дается квест и отправляется сообщение.
    Код
    [logic]
    active = sr_idle@wait

    [sr_idle@wait]
    on_info = {=actor_in_zone(cry_army)} %=play_sound(cry) =sg_ambient_none% sr_idle@play

    [sr_idle@play]
    on_info = {!actor_in_zone(cry_army)} %=stop_sound(cry) =sg_ambient_normal% sr_idle@wait
    on_info2 = {=actor_has_item(cry_note)} %=stop_sound(cry) =give_task(esc_family_gun) =sg_ambient_normal% sr_idle@tip
    on_info3 = %=sg_ambient_none%
    on_game_timer = 290 | sr_idle@play_again %=stop_sound(cry)%

    [sr_idle@play_again]
    on_info = %=play_sound(cry) =sg_ambient_none% sr_idle@play

    [sr_idle@tip]
    on_info = %=send_tip_new(st_actor_name:st_family_gun_start:mutant_hunter:10000)% sr_idle@stop

    [sr_idle@stop]
    Впринцыпе все нормально работает, но сообщение отправляется раз 8...
      Злобная реклама
    Суббота, 22.02.2020, 15:06
    Статус:
    Сообщений: 666
    Регистрация: 30.08.2018
    Российская Федерация  denis2000
    Суббота, 22.02.2020, 15:08 | Сообщение # 6190
    Время Альянса
    Статус:
    Ветеран:
    Сообщений: 4070
    Награды: 16
    Регистрация: 19.07.2013

    Почему эта схема, наиболее корректная:
    Код
    [sr_idle@save]
    on_info = {-infoportion } sr_idle@after_save %+infoportion =scenario_autosave( string)%
    on_info2 = {+infoportion } sr_idle@after_save

    [sr_idle@after_save]

    Это стоит просто разобрать подробнее.
    Случай до сохранения:
    1. Логика переключилась на секцию sr_idle@save и проверяет условие выполнения в первой строке on_info.
    2. Условие выполнено, поскольку инфопорция еще не выдавалась, далее выполняем действия согласно списку.
    3. Выдали инфопорцию!
    4. Производим сохранение. В сохранение попала инфопорция и сохранилась текущая секция логики этого рестриктора sr_idle@save!
    5. Переключение на секцию sr_idle@after_save.

    Случай после сохранения:
    1. Логика на секции sr_idle@save и проверяет условие выполнения в первой строке on_info.
    2. Условие НЕ выполнено, поскольку инфопорция выдавалась и это отражено в сейве.
    3. Проверяется вторая строка on_info2, условие выполнено!
    4. Переключение на секцию sr_idle@after_save
    Сообщение отредактировал denis2000 - Суббота, 22.02.2020, 15:10
      Злобная реклама
    Суббота, 22.02.2020, 15:08
    Статус:
    Сообщений: 666
    Регистрация: 19.07.2013
    Российская Федерация  makdm
    Суббота, 22.02.2020, 15:23 | Сообщение # 6191
    Время Альянса
    Статус:
    Опытный:
    Сообщений: 1787
    Награды: 19
    Регистрация: 22.11.2012

    denis2000, потому что при старте игры с автосохранения если не выдать поршень, то снова сработает автосейв игры. При этом, как я думаю, не все объекты игры успевают инициализироваться и фрагментарный снимок игры получается "битым". Глубоко в эту тему не лез, так как найденное решение позволило обойти разрушение игры при автосейве из логики рестриктора.
    Кстати, разрабы Сталкера полностью со мной согласны.
    Посмотри файлы zat_a1_logic.ltx, jup_b217_cutscene_control.ltx
    Проверка поршня - выдача поршня - и только потом автосейв. И никакой повторной перезаписи автосейва.
      Злобная реклама
    Суббота, 22.02.2020, 15:23
    Статус:
    Сообщений: 666
    Регистрация: 22.11.2012
    Российская Федерация  Крим
    Суббота, 22.02.2020, 16:13 | Сообщение # 6192
    Статус:
    Новичок:
    Сообщений: 231
    Награды: 1
    Регистрация: 21.04.2019

    Здравствуйте. Возникла проблема: изменил локацию, скомпилировал её. При тесте в игре появились дикие лаги. Нет, на фоне ничего не было запущено. До проблемы мой древней пк, который наверное жил еще при динозаврах, тянул локацию на стабильные 30 фпс [На статике, естественно.] Помогите, пожалуйста. Что добавил?

    Добавлено (23.02.2020, 02:04)
    ---------------------------------------------
    Это Крим из будущего пересобрал локацию заново, результат тот же.

    Сообщение отредактировал Крим - Суббота, 22.02.2020, 16:14
      Злобная реклама
    Суббота, 22.02.2020, 16:13
    Статус:
    Сообщений: 666
    Регистрация: 21.04.2019
    Российская Федерация  denis2000
    Воскресенье, 23.02.2020, 11:34 | Сообщение # 6193
    Время Альянса
    Статус:
    Ветеран:
    Сообщений: 4070
    Награды: 16
    Регистрация: 19.07.2013

    makdm, Дима, давай еще раз поясню свое мнение:
    1. Я в некоим случае не оспариваю единственно верное решение в схеме рестриктора при скриптовом сохранении.
    2. Я оспорил лишь заявление, что не попадание инфопорции в сейв и как следствие перезапись сейва - это причины однозначного краша сейва. Это факторы влияющие, но не причина.
    3. Причина, как ты сам заметил и как я понимаю (но видимо не мог донести свою мысль): к крашу приводят фоновые процессы во время сохранения, которые при скриптовом сохранении видимо не возможно со стороны движка корректно отразить в сейве. В отличии от сохранения игры из меню, во время которого игра находиться на паузе и таковые процессы невозможны.
    Сообщение отредактировал denis2000 - Воскресенье, 23.02.2020, 11:36
      Злобная реклама
    Воскресенье, 23.02.2020, 11:34
    Статус:
    Сообщений: 666
    Регистрация: 19.07.2013
    Российская Федерация  makdm
    Воскресенье, 23.02.2020, 11:42 | Сообщение # 6194
    Время Альянса
    Статус:
    Опытный:
    Сообщений: 1787
    Награды: 19
    Регистрация: 22.11.2012

    denis2000, Денис, согласен полностью.
    Инфопорция выступает в роли затычки, чтобы не допустить повторного сейва. А вот сама причина разрушения сохранения зарыта где-то в движке.
    Это ошибка разработчика движка, который просто не предусмотрел такую ситуацию или просто не захотел доработать движок.
    Ну а скриптеры Сталкера просто эту движковую "дыру" заткнули инфопорцией.
      Злобная реклама
    Воскресенье, 23.02.2020, 11:42
    Статус:
    Сообщений: 666
    Регистрация: 22.11.2012
    Российская Федерация  denis2000
    Воскресенье, 23.02.2020, 11:55 | Сообщение # 6195
    Время Альянса
    Статус:
    Ветеран:
    Сообщений: 4070
    Награды: 16
    Регистрация: 19.07.2013

    AziatkaVictor, Пробуйте так:
      Злобная реклама
    Воскресенье, 23.02.2020, 11:55
    Статус:
    Сообщений: 666
    Регистрация: 19.07.2013
    Поиск: