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

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


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

Где можно посмотреть свойства нет-пакетов? Типа health и т.д. В справочнике что-то не нашел.

Осенний каламбур. Сентябрь - лето.

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

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

 

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.

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

@mole venomous Это-то понятно, но в ридми там свойств не указано. Или надо непосредственно искать в файлах?

Осенний каламбур. Сентябрь - лето.

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

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

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

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

    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	

 

  • Полезно 1

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

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

@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
Ссылка на комментарий
54 минуты назад, Kirgudu сказал:

В m_netpk есть встроенный метод print

Ну вот это я уже не знал/забыл :)

Помню что когда дорос до применения Артосо-модулей, функции для вывода в лог чего угодно у меня уже были свои.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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

Ну вот это я уже не знал/забыл

Я тоже не знал до поры до времени. :) В своё время полез внутрь для исправления разных выявленных недочётов, ну и заметил.

В модулях Артоса есть довольно много полезных вещей, не выставленных публично и не описанных ни в какой инструкции, но для того, чтобы их найти, надо, конечно, изучить модули глазами от и до.

 

@Balavnik, дополню свой предыдущий ответ, поскольку вчера забыл о ещё одной возможности m_netpk.

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

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

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

Скрытый текст
! Cannot find saved game ~:print_table:m_netpk:netpacket(af_gold_fish26566):~~~~~~~>
! Cannot find saved game ~:netpacket.level_vertex_id = [49746]
! Cannot find saved game ~:netpacket.spawn_story_id = [-1]
! Cannot find saved game ~:netpacket.upgrades. = <<zero_table>>
! Cannot find saved game ~:netpacket.distance = [0]
! Cannot find saved game ~:netpacket.condition = [1]
! Cannot find saved game ~:netpacket.game_vertex_id = [135]
! Cannot find saved game ~:netpacket.visual_name = [dynamics\artefacts\af_gold_fish]
! Cannot find saved game ~:netpacket.object_flags = [-65]
! Cannot find saved game ~:netpacket.visual_flags = [0]
! Cannot find saved game ~:netpacket.upd.num_items = [0]
! Cannot find saved game ~:netpacket.story_id = [-1]
! Cannot find saved game ~:netpacket.custom_data = [<<userdata>>]
! Cannot find saved game ~:netpacket.direct_control = [1]
! Cannot find saved game ~:print_table:m_netpk:netpacket(af_gold_fish26566):~~~~~~~<

 

Но что если тебе нужно узнать не текущее содержимое, а полный возможный состав нет-пакета данного типа объекта и какого типа каждое его свойство?

Для этого существует метод dumpDesc(), явно описанный в инструкции к модулю (см. пункт 3.2). Этот метод возвращает строку с полным читабельным описанием нет-пакета, которую, в свою очередь, можно самостоятельно вывести в лог. Но так как строка скорее всего будет слишком длинной для вывода в один приём, потребуется дополнительная обвязка для разбиения на части:

local pk = get_netpk(obj) -- получаем нет-пакет объекта
local description = pk:dumpDesc() -- получаем его описание
-- бьём на части по 200 символов максимум и выводим в лог
local console = get_console()
local pattern = "(."..string.rep(".?", 199)..")"
for line in description:gmatch("[^\n]+") do
	for part in line:gmatch(pattern) do
		console:execute("load ~:"..part)
	end
end

Результат:

Скрытый текст
! Cannot find saved game ~:<<< dump of cse_alife_item_artefact desctiption >>>
! Cannot find saved game ~:;-- cse_alife_object part ---
! Cannot find saved game ~: game_vertex_id => u16
! Cannot find saved game ~: distance => f32
! Cannot find saved game ~: direct_control => u32
! Cannot find saved game ~: level_vertex_id => u32
! Cannot find saved game ~: object_flags => h32
! Cannot find saved game ~: custom_data => cd
! Cannot find saved game ~: story_id => s32
! Cannot find saved game ~: spawn_story_id => s32
! Cannot find saved game ~:;-- cse_visual part ---
! Cannot find saved game ~: visual_name => sz
! Cannot find saved game ~: visual_flags => u8
! Cannot find saved game ~:;-- cse_alife_dynamic_object_visual part ---
! Cannot find saved game ~:;-- cse_alife_inventory_item part ---
! Cannot find saved game ~: condition => f32
! Cannot find saved game ~: upgrades => l32szv
! Cannot find saved game ~: upd.num_items => h8
! Cannot find saved game ~: upd.force => f32v3
! Cannot find saved game ~: upd.torque => f32v3
! Cannot find saved game ~: upd.ph_position => f32v3
! Cannot find saved game ~: upd.ph_rotation => q8v4
! Cannot find saved game ~: upd.ph_angular_vel => q8v3
! Cannot find saved game ~: upd.ph_linear_vel => q8v3
! Cannot find saved game ~: upd.enabled => b8
! Cannot find saved game ~:;-- cse_alife_item_artefact part ---
! Cannot find saved game ~:<<< dump end >>>

 

 

Изменено пользователем Kirgudu
  • Нравится 1
  • Полезно 2
Ссылка на комментарий
24 минуты назад, Balavnik сказал:

За что отвечает xr_motivator?

Они действительно служат примерно одним и тем же целям, только xr_motivator используется для сталкеров, тогда как bind_stalker - для героя.

См. разницу между bind_stalker.init() и bind_stalker.actor_init(), которые прописаны в свойстве script_binding в, соответственно, m_stalker.ltx и actor.ltx

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

xr_motivator?

Это биндер нпс.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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 А для монстров какой биндер?

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

Во избежание начала ящиков, детекторов и прочего.

script_binding = ... - вот это в конфиге для объекта определяет что, куда , почему. Также здесь рекомендуется к ознакомлению.

  • Смешно 1

Осенний каламбур. Сентябрь - лето.

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

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

Ничего не понимаю, создал я квест (предварительно удалил оригинальную сюжетную линию, всё работает) , квест рабочий это 100% но хрен знает от куда вылез этот вылет, он или айди или инфопоршень найти не может я так и не понял по этому проверил и то и другое, всё на месте (esc_tutorial_secret_place это короче тайник который Шустрый на АТП даёт за спасение). Удивительно что ничего связано с этим моментом (esc_tutorial_secret_place) я не трогал, его выдаёт Шустрый, Шустрому я диалог этот закомментировал в character_desc_escape и вроде бы как всё работало. Я ничего не понимаю...
Expression    : no_assert
Function      : CXML_IdToIndex<class CInfoPortion>::GetById
File          : s:\sources\xrgame\xml_str_id_loader.h
Line          : 112
Description   : item not found, id
Arguments     : esc_tutorial_secret_place

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

Перемещено.

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

@Kaban312 , это не

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

короче тайник который Шустрый на АТП даёт за спасение

а

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

чёрт знает от куда вылез

section_name = stalker
name = esc_stalker_corpse
character_profile = esc_bandit_novice

[known_info]
esc_tutorial_secret_place

Боюсь ошибиться за давностью лет - труп бандита на элеваторе.

  • Полезно 1
Ссылка на комментарий
1 час назад, Купер сказал:
2 часа назад, Kaban312 сказал:

чёрт знает от куда вылез

section_name = stalker name = esc_stalker_corpse character_profile = esc_bandit_novice [known_info] esc_tutorial_secret_place

section_name = stalker
name = esc_stalker_corpse
character_profile = esc_bandit_novice

[known_info]
esc_tutorial_secret_place

Боюсь ошибиться за давностью лет - труп бандита на элеваторе.

Да, я ошибся, не внимательно я как то. Оказывается не за тем я бегал за чем нужно.. В общем удалил я выдачу информации у бандита на АТП (после его смерти падает информация про труп бандита на элеваторе), потом удалил в логика бандита на АТП выдачу информацию тайника

esc_tutorial_secret_place

(через жд дорогу от упавшего локомотива)  , потом проверил и игра жаловалась на труп сталкера около тоннеля с электрами он там тоже как то замешан, в итоге я его удалил и всё начало работать... Спасибо, что глаза мне открыли!

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

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

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

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

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

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

Войти

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

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

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