Случайная подборка модов
Legend Returns 0.9.2
4.0
Dragon`s MOD
2.5
Народная Солянка 2010
4.0
Радиоактивное мясо. Схватка
3.0
Another Zone Mod
4.3
Новый Арсенал 6. Революция
3.5
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
Модератор форума: 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
    Поиск: