Перейти к контенту
Halford

[SoC] Ковыряемся в файлах

Рекомендуемые сообщения

Да. Минимальные требования:

• ссылка в [game_tasks_by_vendor.xml] под каждого заказчика (можно только заголовок task_id=type_parent, остальное скриптом, но потребуется новая игра)

• значение text ~= nil (описание/метка), иначе будет вылет при создании диалога

• значение target и новая проверка в check_task_props() (при старых проверках часто требуется значение определенного типа или хотя бы ~= nil)

  • Согласен 1
  • Полезно 2

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

Ссылка на комментарий

Такой вопрос, у меня OGSR, но это так, к слову.

Не могу изменить размер карты теней, то есть меняю условно с 1536 на 2048, жму применить, но остаётся 1536.

Если править через user.ltx - меняется.

Проблема лишь с размерами карт теней.

В чём может быть проблема?

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий
10 часов назад, imcrazyhoudini сказал:

В чём может быть проблема?

половина настроек в Сталкере работает только после перезахода в игру, да и вообще файл user окончательно записывается только после неаварийного выхода из игры, так Сталкера работает, по крайней мере без правок движка.

  • Согласен 1
Ссылка на комментарий
2 часа назад, CiberZold сказал:

только после перезахода в игру

Да даже если перезайти в игру то ничего не меняется.

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий
2 часа назад, imcrazyhoudini сказал:

Да даже если перезайти в игру то ничего не меняется.

то есть скрипт не меняет user файл я так понимаю, тогда надо разбираться что-там за косяки с ui скриптами от мода и как они заменяют оригинальные.

 

сейчас проверил на ОГСР не самый последний билд правда, но всё прекрасно работает, смена настройки карты теней при выходе из игры переписывает user, нужно если ты адаптируешь мод или оригинальную игру на ОГСр обязательно перенести все скрипты ui и ui_mm_opt.xml из самого gamedata билда движка, может они конечно накосячили что-то в последних билдах, но думаю вряд ли скорее ты что-то не так сделал)

Изменено пользователем CiberZold
Ссылка на комментарий
16 часов назад, CiberZold сказал:

но думаю вряд ли скорее ты что-то не так сделал)

Сравнивал с рабочими скриптами и конфигами, всё идентично, ерунда какая-то, не пойму что к чему.

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий

В своем, в чужом, в трупе, в коробке, в границах онлайна или нет? Если у себя, то obj:condition(), где obj – ссылка на объект через секцию db.actor:object(sect) или перебором от 0 до db.actor:object_count() -1.

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

Ссылка на комментарий

Привет всем. Извините, вы не могли бы подсказать как называется текстура потолка в баре 100 ренген. Которая над барменом. Хотел заменить ее, но уже голова кругом идет =)... не могу ее найти .

bbcec38f805b.png
Ссылка на комментарий

Добрейшего, граждане. Тему с багами ы вылетами закрыли уже лет десять, как, спросил совета в "курилке" - послали сюда. Ну и вот - пишу сюда, не бейте ногами.

 

У меня - старая, как сам Свалкер, проблема: что-то тормошит функцию в Мотиваторе, она и фалломорфирует, убивая попутно сейв.

 

Если это важно - сама функция вот: 

 

self.npc_script_version = alife():object(self.object:id()).script_version

 

Я сравнил с "чистой" распакованной гейдатой - функция, вроде, не менялась. Отсюда и пошёл вывод о том, что её кто-то извне некорректно вызывает. Но это, как понимаете, не точно.

 

Лог ошибки непосредственно выглядит вот так:
 

[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: ...ow of chernobyl\gamedata\scripts\xr_motivator.script:513: attempt to index a nil value

 

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

 

Методом научного тыка было установлено, что некоторое время после перехода с локации на локацию можно сохраняться безопасно, а вот конкретно момент, когда сейвы начинают умирать, пока не установлен. Буквально, два сейва с разницей в полминуты и расстоянием шагов в тридцать, первый - живой, второй - битый. Dafuq.

 

Так вот, сопссна: как бы так определить, кто её тормошит и что конкретно идёт не так? Чтобы, значица, залезть уже грязными сапожищами в корень проблемы и думать далее?

Изменено пользователем St_Tongor
Ссылка на комментарий
2 часа назад, St_Tongor сказал:

функция, вроде, не менялась

Чтобы точно, используй программы для сравнения папок / файлов.

 

2 часа назад, St_Tongor сказал:
self.npc_script_version = alife():object(self.object:id()).script_version

Для версии 1.0006 будет 7 (в system.ltx параметр current_server_entity_version), в предыдущих патчах могло быть 6 /  5.

В оригинале, только в этих скриптах есть проверки: dialog_manager / se_stalker / se_monster (блок load).

Ссылка на комментарий
1 час назад, h0N0r сказал:

Чтобы точно, используй программы для сравнения папок / файлов.

 

Для версии 1.0006 будет 7 (в system.ltx параметр current_server_entity_version), в предыдущих патчах могло быть 6 /  5.

В оригинале, только в этих скриптах есть проверки: dialog_manager / se_stalker / se_monster (блок load).

 

Версию сервера чекнул - семёрка. Файлы сравнил Блокнотом++ - скрипты в "рабочей" гейдате и в "контрольной" нетронутой распаковке отличаются только длиной табуляции перед ними. Однако!

Чуть ниже идёт вот такой скрипт:
 

function motivator_binder:hear_callback(victim, who, sound_type, sound_position, sound_power)
  --if who:id() == self:id() then
	--dbg.log("motivator_binder:hear_callback who:id() == self:id()")  
    --return
  --end
  local type = "NIL"
  if bit_and(sound_type, snd_type.weapon) == snd_type.weapon then
	type = "WPN"
<и дальше еще куча вариантов>

 

"В оригинале" это безобразие сильно скромнее и выглядит так:
 

function motivator_binder:hear_callback(self, who, sound_type, sound_position, sound_power)
	if who:id() == self:id() then
		return
			
	end
	local type = "NIL"
	<и далее опять куча вариантов>

 

Соот-нно, в "рабочке" - закомментированный кусок и переменная "self" заменена на переменную "victim" (и там еще в конце есть строчка - в ней тоже селф на виктим поменян), что бы это значило? "Проблемная" функция, если я хоть что-то понимаю, обращается как раз к "self"-у, не?

Ссылка на комментарий

@St_Tongor 

По слухам, в огср лучше отлавливать ошибки, лог детальнее и прочее.

 

1 час назад, St_Tongor сказал:

что бы это значило?

У тебя стоят какие-то правки / моды, добавляющие данный вылет :biggrin:

 

Можешь сделать так:

	get_console():execute("load log:"..string.format("npc: %s, version: %d", tostring(self.object:name()), tostring(alife():object(self.object:id()).script_version)))

	self.npc_script_version = alife():object(self.object:id()).script_version

Выведет в лог имена нпс с версией. Часто, перед самим FATAL ERROR, будет имя последнего объекта его вызвавший.

  • Нравится 2
Ссылка на комментарий

Ребятки, вопросик такой, возможно не по теме, Собирал модельки через OGF Tools, НПС перестали реагировать на что либо, в диалог не вступают, если по ним начать стрелять-просто сковь проходят пули и всё, как исправить?

Ссылка на комментарий
8 часов назад, St_Tongor сказал:

там написано "найдите функцию в строке, она неправильная, исправьте". Вот только она и в оригинале - такая же точно

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

 

в оригинальном, имею ввиду до 6 патча, xr_motivator.script кстати вообще при загрузке нет проверки скриптовой версии НПС там просто строка

dialog_manager.load(self.object, reader)  - объект вызывается без всяких проверок версии скриптов, возможно у тебя как раз такая солянка из старых скриптов и правленных под 6 патч, отсюда и проблемы.

Изменено пользователем CiberZold
Ссылка на комментарий
7 часов назад, h0N0r сказал:

@St_Tongor 

 

Можешь сделать так:

get_console():execute("load log:"..string.format("npc: %s, version: %d", tostring(self.object:name()), tostring(alife():object(self.object:id()).script_version))) self.npc_script_version = alife():object(self.object:id()).script_version

	get_console():execute("load log:"..string.format("npc: %s, version: %d", tostring(self.object:name()), tostring(alife():object(self.object:id()).script_version)))

	self.npc_script_version = alife():object(self.object:id()).script_version

Выведет в лог имена нпс с версией. Часто, перед самим FATAL ERROR, будет имя последнего объекта его вызвавший.

 

Эта строка дописывается в мотиватор перед "проблемной", я всё верно понимаю?

 

4 часа назад, CiberZold сказал:

возможно у тебя как раз такая солянка из старых скриптов и правленных под 6 патч, отсюда и проблемы.

 

Да там не "возможно", там определённо точно - лютая солянка. Я по какой-то причине не могу скачать сборку АМК непосредственно с данного сайта, нажимаю на ссылку - и не происходит ничего. Через это мной был найден наименее подозрительный сторонний установщик, однако ж - уже имеющий унутре сам АМК, два патча с правками к нему, некий третий бета-патч, а также - "различные правки и улучшения", начиная от двух потерянных рецептов и заканчивая Интеллектуальным Мародёром (он, скорее всего - и есть корень проблемы, я не помню, чтобы его официально адаптировали к шестому патчу, а как его пришивали к данной сборке - сие тайна великая есть). 

Из того, что лично я приколхозил - это перепаковщик патронов и бабло с трупов, но битие сейвов наблюдалось и до этого.

Ссылка на комментарий
5 часов назад, St_Tongor сказал:

но битие сейвов наблюдалось и до этого

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

Ссылка на комментарий
15 минут назад, CiberZold сказал:

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

 

В этом и весь прикол. Запихал я строку-логгер в мотиватора, провёл эксперимент: загрузился с "нормального" сейва, дошёл до того места, где "точно вылетит", сохранился, загрузился - вылетело (кто бы мог подумать). Посмотрел в лог - там что-то такое:
 

! Cannot find saved game log:npc: esc_lager4, version: 7
! Cannot find saved game log:npc: esc_lager5, version: 7
! Cannot find saved game log:npc: esc_lager6, version: 7
! Cannot find saved game log:npc: esc_wolf, version: 7
! Cannot find saved game log:npc: esc_vagon_wounded, version: 7
! Cannot find saved game log:npc: esc_novice_attacker1, version: 7
! Cannot find saved game log:npc: esc_novice_attacker2, version: 7
! Cannot find saved game log:npc: esc_factory_bandit1, version: 7
<перечисление кучи живого и мёртвого народу на Кордоне>
и почему-то всё заканчивается вообще другой локой:
! Cannot find saved game log:npc: gar_stalker_respawn_13488, version: 7

 

Однако, для чистоты эксперимента, я снова загрузился с "нормального" сейва, после чего не сходя с места вышел в Шындошс, и полез в логи. А там - та же фигня (только не в конце, а в середине), что нифига не помешало сейв прогрузить! Нелогично.

Отсюда вывод: дело не только в этом. Есть смутное наблюдение: вылетает, в основном, при попытке прогрузиться рядом с большим скоплением сталкеров. Видимо - кто-то или что-то в оффлайне себя нормально чувствует, а в А-Лайфе кобенится. Но это - вообще не точно.

Добавлено  Купер,

Правила форума, п. 2.6 (оверквотинг).
Рекомендуется к ознакомлению: здесь и здесь.

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    Ни один зарегистрированный пользователь не просматривает эту страницу.

AMK-Team.ru

×
×
  • Создать...