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

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


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

Подскажите пожалуйста! quest_items.ltx прописал каждому предмету can_trade= true но квестовые предметы не скидываются в ящик, не там смотрю чтоль?

 

Нужно quest_item = false

Cyclone

Верю, что могу...

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

Много вопросов...

Сделал смарты - чисто чтобы от Выброса спасали, только кажется где-то не дописал.

Не подскажете что именно?

[smart_terrain]

squad_id = 22

max_population = 1

safe_restr = surge_forester_cave_hide_smart_1; surge_forester_cave_hide_smart_2

 

 

 

 

 

 

Словил вылет - возникает при переходе на новую локу или завершению игры:

stack trace:

 

001B:06CA62E5 xrGame.dll, CxIOFile::Scanf()

 

[error][ 183] : Невозможно создать файл, так как он уже существует.

 

 

Перегонял через СДК музон, в игре схватил вылет:

Expression : ovi->rate==44100

Function : CSoundRender_Source::LoadWave

File : D:\prog_repository\sources\trunk\xrSound\SoundRender_Source_loader.cpp

Line : 71

Description : Invalid source rate:

Arguments : e:\games\gsc world public\s.t.a.l.k.e.r. - Зов Припяти\gamedata\sounds\music\lustmord_1.ogg

 

 

Попробовал заспавнить сюжетный смарт, но ничего не вышло, объясните, в чём причина.

Логика смарта и пропись отряда:

[smart_terrain]

squad_id = 21

max_population = 1

 

; Здесь содержатся дескрипшены сквадов, которые потом можно создавать используя спец функции.

 

[hospital_military_squad]:online_offline_group

faction = army

npc = hospital_military_leader, hospital_military_soldier_1, hospital_military_soldier_2, hospital_military_mexanik

target_smart = military_smart_1

story_id = hospital_military_squad

spawn_point = hospital_military_point_1

relationship = friend

invulnerable = true

always_arrived = true

 

 

 

И последнее. Вот я заспавнил сквады через смарты, вот только они у меня адятся в странных позах и нкуда не ходят. Как сделать, чтобы ни принимали анимпоинты верные (знаю, что надо что-то в точках прописать) и почему симуляционные сквады в гости не ходят?

 

Выводы модмейкера:

1)Вылетает - это хорошо. Значит, работает :)

2) Если хочешь сделать что-то хорошо, делай сам!

3) Если падёшь духом, падёт и мод.

4) Он живой... :o

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

SibireaStalker,

Перегонял через СДК музон, в игре схватил вылет:

Частота должна быть строго равна 44100 Гц

 

Логика смарта и пропись отряда:

В конфиг смарта нужно прописать сквад, в эксклюзивы.

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

Вопросы по ЗП версии 1.6.00

1) Как можно уменьшить количество нпс находящихся на локации?

 

2) Как изменить период респавна нпс?

Ссылка на комментарий
KD87, а по остальному не поможешь?

Выводы модмейкера:

1)Вылетает - это хорошо. Значит, работает :)

2) Если хочешь сделать что-то хорошо, делай сам!

3) Если падёшь духом, падёт и мод.

4) Он живой... :o

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

Добрый вечер всем.

У меня такой вопрос. Можно ли каким нибудь образом удалить, приостановить, деактивировать, функцию(функции).

Зараннее благодарен.

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

SibireaStalker

По вылету "[error][ 183] : Невозможно создать файл, так как он уже существует." - или некорректный вывод в лог-файл или ищи коды стороннего мода, который пытается работать после (или в моменты) удаления объектов из игры при переходах/выходах.

Особенно грешат моды непрекращающейся обработкой коллбэков на дром предметов ...

 

Добавлено через 5 мин.:

shurik

Удалить функцию? В принципе можно.

Но зачем сложности? Или не вноси ее в коды или не вызывай ее. Какова цель удаления?

 

Приостановить функцию можно, если она является частью подпрограммы. См. метод 'coroutine' в теме "Справочник по классам и функциям".

 

Деактивировать функцию? А енто что за зверь такой? Поясни, плз.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

Эт я чтоб меня поняли :ny_rolleyes:

Цель моя такова. Допустим есть функция на проверку определённого инфопоршня при положительном результате которой, допустим, спавнится ..... монстр. При этом функция эта работает всегда. Мне её надо остановить, чтоб не работала, ВООБЩЕ, можно ли както это сделать?

Совершенное не требуется цитировать весь предыдущий пост. Это и нарушение правил. --/ Artos

Изменено пользователем Artos
Ссылка на комментарий

shurik

Тебе функцию НЕ останавливать, а НЕ вызывать нужно.

Если ты самолично ставишь вызов своей функции куда-нибудь в апдейт актору, что она всю игру каждые ~20ms вызывается - так и сам виноват.

Коды твоего вызова никто за тебя же не вырежет.

Для НЕ вызова функции и пишут алгоритмы такими, чтобы вызывать нужную функцию именно тогда, когда требуется, а не 'лишь бы работало'.

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

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

1. В этой ошибке главное не "[error][ 183] : Невозможно создать файл, так как он уже существует", а "001B:06CA62E5 xrGame.dll, CxIOFile::Scanf()"

Если он одинаковый - тогда ошибка одна и та же. Если разный - то и ошибки разные. Зачем все валить на лог - неясно.

 

2. Чем бы мне помог вотчдог в моем случае? он даже не определил бы, что вылет при выходе НПЦ в онлайн.

 

Сообщение от модератора ColR_iT
До конкретного человека доводи мысли в ЛС.
Изменено пользователем ColR_iT
Ссылка на комментарий
Строгое предупреждение от модератора ColR_iT
abramcumner и Artos что Вы устроили? Это - так, то - не так!? Если будете публично начинаете друг другу перечить - будем цитировать пункты правил. Приводите, пожалуйста, конкретные факты, а не противоречие оппонента.
Изменено пользователем ColR_iT
Ссылка на комментарий
[error][ 183] : Невозможно создать файл, так как он уже существует.

Такого не должно быть от get_console():execute("logtext"), т.к. при этом лог на диск не скидывается.

Если используется команда get_console():execute("flush"), тогда другое дело. Может быть, после каких-то действий, не связанных с модом, изменились права доступа к файлу лога, или он стал "read-only" - надо проверить.

 

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

Полтергейст

1. В вопросе говорится - в моменты переходов на локации или при вызоде из игры. В эти моменты лог из буфера пишется в лог-файл.

2. Не известно каким способом реализован вывод в лог у каждого модмейкера. Если с 'get_console():execute("flush")' - то вылет неизбежен сразу.

3. С фактом наиличия какого-то уже файла или правами доступа эта запись не связана. Это (ИМХО) всего лишь сообщение-заглушка движка на неидентифицированные ошибки.

 

Добавлено через 16 мин.:

abramcumner: Чем бы мне помог вотчдог в моем случае? он даже не определил бы, что вылет при выходе НПЦ в онлайн.
1. Если вспомнить - динамические аномалии пошли именно из АМК. Допущенная тобою ошибка в их кодах была бы невозможна, т.к. имеется все, чтобы чистить "аномальные" рестрикторы при уходе в оффлайн.

2. Ими (АМК) расставлены в их скрипте спавна и обработки динамический аномалий точки ватчдога.

3. Расставленные точки ватчдока позволили бы определить место сбоя.

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

(дальше уже оффтопик ...)

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

Вопросы по ЗП версии 1.6.00

 

1) Как можно уменьшить количество нпс находящихся на локации?

 

2) Как изменить период респавна нпс?

 

 

Ссылка на комментарий
[error][ 183] : Невозможно создать файл, так как он уже существует.

Эта ошибка никогда не связана с какими-либо файлами. Все файлы, которые движок сталкера пишет на диск, можно перечислить по пальцам одной руки: лог, сохранения, файл настроек. Что ещё забыл? Никаких проблем с ними ведь не возникает, не так ли? Проблема может быть в чём угодно. Такой вылет я видел много раз, и каждый раз причина была разная. Могу только предположить, что просто срабатывает общий механизм исключений, и где-то как-то передаётся код ошибки, который в ряде случаев видимо корректно не передаётся и остаётся каким-то: случайным или значением по умолчанию, что возможно соответствует вот этому сообщению. Ещё раз, это только предположения.

 

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

 

Увы, модостроителю большая часть этого богатства недоступна по причине отсутствия отладочных файлов *.pdb и тем паче исходников. При их отсутствии конечно место вылета всё равно есть и состояние окружения можно посмотреть, но понять что там и зачем уже не так просто. Сначала надо по сути делать реверсинг, что в общем непрактично для простой отладки банального вылета.

 

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

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

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

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

 

Предложение модераторам:

Создать тему (общую) типа: "Методы поиска ошибок в игре/модах".

Подобных тем немало, это и "Безлоговые вылеты" и темы по ошибкам в конкретных модах ...

Но все они слишком частные и для большинства начинающих модмейкеров чаще всего не дают полезной информации.

 

У многих модмейкеров отсутствует и нормальный вывод в лог-файл о причинах ошибок, зачастую не используются (завуалированы) принудительные прерывания (abort).

Многие не подозревают о вариантах использования методов 'watchdog' (АМК) или того же Lua-перехватчика (by aplet) ...

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

В общей теме можно было бы и рассказывать об общих методах поиска ошибок и об их устранении.

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

Artos,

Предложение модераторам:

Создать тему (общую) типа: "Методы поиска ошибок в игре/модах".

Я рискну усомниться в жизнеспособности такой темы. Слишком узко. И какой ведь смысл? По идее, чтобы все отладочные методики были наконец-то собраны в одном месте. Так? Но там материала при всей полезности не больше чем на одну статью. Если этого до сих пор никто не сделал, то и при наличии такой темы всё равно никто не сделает. В теме будет в лучшем случае трёп не по теме, в худшем - просто уйдёт вниз за неактивностью.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

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

malandrinus, смысл/цель не собрать что-то в одном месте, а дать всем (а не только по конкретному моду) место, где можно почитать, научиться отлавливать ошибки или делать моды, с дебаг-системой, облегчающей как сам процесс создания, так и сопровождения мода.

Я очень негативно отношусь ко многим статьям, которые дают зачастую только однобокое толкование в достаточно узком/частном случае.

Для поиска ошибок невозможно (ИМХО) написать статью, т.к. она либо будет куцей и оставит еще больше вопросов, либо будет частной, годящейся для конкретной реализации кодов.

Да и наличие "учебников" не делает ненужным общение как с "учителями", так и с себе подобными ...

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

Ну и неактивность - не смертельный недостаток. Не будет востребована - уйдет в отвал как немало уже ушло иных ... или уйдет (см. "[soC] Вылеты без лога, Некоторые соображения").

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

Tris,

1. Респавн настраивается в конфигах смарт-террейнов в папке config/script/локация/smart

2. Период респавна можно изменить, только если править smart_terrain.script

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

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

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

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

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

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

Войти

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

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

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