[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 |
|
|
|
|
|
Время Альянса
Статус: |
 |
Ветеран: |
 |
Сообщений: |
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 |
|
|
|
|
|
Время Альянса
Статус: |
 |
Ветеран: |
 |
Сообщений: |
4070 |
Награды: |
16 |
Регистрация: |
19.07.2013 |
|
Цитата makdm (  ) Эта инфопорция НЕ попадает в сейв!!!! Поэтому и бьются сохранения. То, что инфопорция не попала в сейв - это конечно печально, но не приводит к порче сохранения (в том случае если на нее не завязаны действия в других схемах логики).
В случае загрузки этого сохранения, снова выполниться условия для сохранения и сохранение будет тут-же перезаписано новым - это тоже не хорошо, но и не фатал.
Сообщение отредактировал denis2000 - Суббота, 22.02.2020, 14:44
|
|
Суббота, 22.02.2020, 14:40
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
19.07.2013 |
|
|
|
|
|
Статус: |
 |
Опытный: |
 |
Сообщений: |
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 |
|
|
|
|
|
Время Альянса
Статус: |
 |
Ветеран: |
 |
Сообщений: |
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 |
|
|
|
|
|
Статус: |
 |
Опытный: |
 |
Сообщений: |
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 |
|
|
|
|
|
Время Альянса
Статус: |
 |
Ветеран: |
 |
Сообщений: |
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 |
|
|
|
|
|
Время Альянса
Статус: |
 |
Ветеран: |
 |
Сообщений: |
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 |
|
|
|
|
|
Время Альянса
Статус: |
 |
Ветеран: |
 |
Сообщений: |
4070 |
Награды: |
16 |
Регистрация: |
19.07.2013 |
|
AziatkaVictor, Пробуйте так:
|
|
Воскресенье, 23.02.2020, 11:55
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
19.07.2013 |
|
|
|
|