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

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


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

@Recluse , первая часть - стандартная "заглушка": приложение неожиданно :biggrin: прекратило работу. Вторая более предметная.

Если вылеты "плавающие" и логи разные, то - сам понимаешь - нужна какая-то статистическая коллекция :biggrin:. Гадать по случайному огрызку практически бесполезно. Для OGSR, кстати, именно полные логи предпочтительнее, так как там добавлен очень подробный отладчик и отслеживаются практически все игровые события и ошибки.

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

старый пост

 

Добавил еще один тег <class> в существующий профиль именного NPC, запустил спавн известного отряда новичков с таким классом:

• если новый класс на втором месте, отряд спавнится в старом составе, то есть тег не учитывается;

• если новый класс на первом месте, игра вылетает с ошибкой "no default specific character set for class" со ссылкой на класс именного NPC, у которого не осталось ни одного профиля, то есть второй тег снова не учитывается.

 

Как должен работать спавн NPC с одним и тем же профилем через разные классы, и работает ли он вообще?

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

Шпаргалка

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

одним и тем же профилем через разные классы, и работает ли он вообще?

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

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

Это вообще другой эксперимент. Ради интереса отключил класс в базовом и полном профиле Сидора, оставил только ссылку <specific_character> – спавнится успешно.

 

Исходный вопрос: очень давно очень опытный сталкер написал, что две ссылки <class> в профиле учитываются, но тест показывает, что, как и во всех конфигах, читается только первое из двух значений с одним именем. И то ли условия теста неправильные, то ли тот сталкер ошибся.

  • Полезно 1

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

Шпаргалка

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

@Norman Eisenherz куда именно добавлял второй класс: в <character> (npc_profile.xml) или <specific_character> (например, character_desc_garbage.xml)?

В упомянутом посте речь идёт о втором.

  • Нравится 1
Ссылка на комментарий
2 часа назад, Norman Eisenherz сказал:

Ради интереса отключил класс в базовом и полном профиле Сидора, оставил только ссылку <specific_character> – спавнится успешно

Как понять - отключил? Не совсем понял, как сие выглядит в файлах (давно не модил, поэтому мог многое забыть).

Сталкер - наше всё!

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

Проблема возникла странная, заспавнил нпс для квеста, сделал ему профиль, проверил квест, всё работает и решил я прописать ему логику:

[smart_terrains]

none = true

[logic]

active = walker@britva

[walker@britva]

path_walk = britva_walk 

path_look = britva_look   

 

поставил два вей поинта вставил им значения britva_walk и britva_look. Захожу в игру в момент загрузки игры на этапе "Клиент Синхронизации" происходит вылет, сначала он был без лога совсем. Потом с помощью какой то функции в _g_script мне дали огромный лог весь я его не скину, скину конец:

* Log file has been saved successfully!

! Unknown command:  HIT_SECTION_[nil]

* Log file has been saved successfully!

! Unknown command:  DEBUG:_object_'esc_physic_destroyable_object_0000':_activate_by_section:_looking_for_section_'nil'

* Log file has been saved successfully!

! Unknown command:  _bp:_reset_generic_schemes_on_scheme_switch:_npc:name()='esc_physic_destroyable_object_0000'

* Log file has been saved successfully!

! Unknown command:  _bp:_enable_scripts:_object_'esc_physic_destroyable_object'_has_NO_external_configuration_file,_using_'<customdata>'

* Log file has been saved successfully!

! Unknown command:  HIT_SECTION_[nil]

* Log file has been saved successfully!

! Unknown command:  DEBUG:_object_'esc_physic_destroyable_object':_activate_by_section:_looking_for_section_'nil'

* Log file has been saved successfully!

! Unknown command:  _bp:_reset_generic_schemes_on_scheme_switch:_npc:name()='esc_physic_destroyable_object'

* Log file has been saved successfully!

! Unknown command:  _bp:_path_parse_waypoints:_pathname='britva_walk'

 

Функция эта по идее записывает в лог всё что происходит в игре, и вот всё прерывается на вей поинте britva_walk. Всё прописано верно, сверял кучу раз, и имя менял как в логике как и в вей поинтах но всё равно.  Помогите, ничего не понимаю.

И да. как только я удаляю ему эту функцию всё начинает работать.

Изменено пользователем Kaban312
Ссылка на комментарий
11 минут назад, Kaban312 сказал:

_bp:_path_parse_waypoints:_pathname='britva_walk'

А с параметрами пути все хорошо? (Подозреваю что нет. Для проверки скопируй все данные с заведомо рабочего пути)

13 минут назад, Kaban312 сказал:

как только я удаляю ему эту функцию всё начинает работать.

Не понял. Какую функцию? В твоем посте только "какая-то функция в _g.script для вывода лога" упоминается. Но ты говорил что без нее вылет безлоговый...

Короче пока ничего не понятно.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

Это вообще другой эксперимент

эксперимент провести такой, заспавнит нпс у которого есть character id, по нему заспавнить, при этом этому character id вообще не задан класс, что будет? я не проверял но скорее всего будет вылет ,как в твоём начальном примере второй случай,  значит класс должен быть обязательно задан, и тут второй эксперимент, чтоб игра не вылетала класс должен быть любой заданный для любого character id, который прописан в игре, либо класс должен быть строго который задан в профиле нпс, тут я думаю скорее всего подойдёт любой зарегистрированный класс.

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

_npc:name()='esc_physic_destroyable_object

вопрос почему у тебя имя нпс = physic_destroyable_object, ты нпс пытаешься задать логику физического объекта?:)

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

@Kirgudu Добавил класс одного из новичков одному из именных в [character_desc_…xml]: на второй позиции не учитывается, на первой занимает единственный профиль класса именного NPC и приводит к вылету.

@AndrewMor Просто закомментировал строку <class>trader</class> в [npc_profile.xml] и [character_desc_escape.xml], оставив только прямую привязку к единственному профилю specific_character.

@CiberZold Вот это и сделал с Сидором. В тех же старых постах сказано, что профиль можно создавать прямой привязкой <specific_character> или указанием класса для выбора из нескольких индивидуальных профилей. Вопрос с возможностью двойной ссылки на один профиль при разных классах остается.

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

Шпаргалка

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

 

11 часов назад, CiberZold сказал:

вопрос почему у тебя имя нпс = physic_destroyable_object, ты нпс пытаешься задать логику физического объекта?:)


Понятия не имею, имя нпс совсем другое и это я проверял.

16 часов назад, Zander_driver сказал:
16 часов назад, Kaban312 сказал:

_bp:_path_parse_waypoints:_pathname='britva_walk'

А с параметрами пути все хорошо?

Не понял, будьте добры проще, пути чего?

16 часов назад, Zander_driver сказал:

Не понял. Какую функцию? В твоем посте только "какая-то функция в _g.script для вывода лога" упоминается. Но ты говорил что без нее вылет безлоговый...

Короче пока ничего не понятно.

Эту функцию где то на форумах нашёл.
function printf(fmt,...)
local con = get_console()
con:execute(string.gsub(string.format(fmt,...), " ", "_"))
con:execute("flush")
end

И извините забыл главный момент указать, если я захожу в игру через СДК то всё почему то работает, как только я переношу все нужные файлы в саму игру (Тень Чернобыля) то всё перестаёт работать. Все файлы файлы нужные и в которых я работал перенёс и пересматривал раз 5 точно, всё ли я перенёс в игру..

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

@Balavnik , если нет-пакеты, вот из сборки Артоса:

https://disk.yandex.ru/d/bh0gKdBu1KTqSA

Может там найдёшь ответы на свои вопросы.

  • Нравится 4
  • Согласен 1

Здесь могла быть ваша реклама.

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

пути чего?

Естественно, вот это

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

britva_walk

 

18 часов назад, Kaban312 сказал:

И да. как только я удаляю ему эту функцию всё начинает работать.

Сомневаюсь чтобы такое могло происходить из-за реанимированного printf.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

Ну если понятно, то чего искать то? 

Спавним оружие и задаём некоторые свойства:

    local pk = get_netpk(obj,1)	
	if pk:isOk() then
	    local data = pk:get() 
		if data then
		    data.condition    = condition
            data.ammo_elapsed = ammo_count  
            data.ammo_type    = ammo_type 			
			data.addon_flags  = flag  -- 1 - scope, 2 - grenade_launcher, 3 - scope + grenade_launcher, 4 - silencer, 5 - scope + silencer, 
				                      -- 6 - grenade_launcher + silencer, 7 - scope + grenade_launcher + silencer  	
	        pk:set(data) 
		end	
	end	

 

Здесь могла быть ваша реклама.

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

@mole venomous Мне интересны именно сами свойства. Например у тебя в примере condition, а мне допустим захотелось поменять другой параметр, а имени этого параметра я не знаю. 

Устал.

img.php?nick=Balavnik&sert=2&text=t6

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

а имени этого параметра я не знаю.

Взять нетпакет интересующего класса объектов, (у разных классов и параметры разные), и вывести его в лог полностью.

Там и будут все ключи и значения...

  • Нравится 1
  • Полезно 1

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

@Zander_driver Получается просто пробежать for по data.upd и выводить в лог "k = v"?

 

Изменено пользователем Balavnik
Добавлено Zander_driver,

Ну да, именно так.

Устал.

img.php?nick=Balavnik&sert=2&text=t6

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

Получается просто пробежать for по data.upd

Можно проще. В m_netpk есть встроенный метод print, который выведет в лог все имеющиеся свойства конкретного нет-пакета:

local pk = get_netpk(obj)
pk:print()

Единственное, для вывода в лог там используется метод table.print. Если правильно помню, в штатном lua его нет, поэтому потребуется также подключить артосовский расширитель lua_extension (lua_helper) или аналог.

Изменено пользователем Kirgudu
  • Нравится 1
  • Полезно 3
Ссылка на комментарий

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

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

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

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

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

Войти

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

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

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