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

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


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

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
Ссылка на комментарий

Возникла проблема с логикой нпс, вот логика:
 

[logic]
active = walker@sky

[walker@sky]
path_walk = sky_walk 
path_look = sky_look

Так же 2 вей поинта с очевидными названиями. Нпс стоит на месте в напуганном состояние. Ничего не понимаю.
https://yadi.sk/d/cMC8XZDCwEZXyQ (ФОТО)

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

 вэйпоинты показывай.

А что их показывать?  Опишу просто как есть. 
1. Вей поинт с именем sky_walk  на нём нпс стоит. 
Стоит нулевой флажок.
2. Вей поинт с именем sky_look на него нпс смотрит.
Стоит нулевой флажок.

Вейп поинты стоят  строго на аи-сетке, расстояние между ними метров 5-8.

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

А что их показывать?

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

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

@Kaban312 но скринами было бы лучше)))

Логика в кастом дате прописана или в ltx файле?

Покажи так же скрином логику.

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

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

А вот интересно. Выдам я неписям везде, где нужно новую еду, как будет выглядеть её поедание в руках? Стандартная еда-то немного единообразной формы, цилиндрической... Есть у кого скрины/видео?

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

а поинты нет

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

 

13 часов назад, dPlayer сказал:

примитивную логику в три строчки

А какая не примитивная? Я дал необходимое что бы он просто стоял. 

6 часов назад, imcrazyhoudini сказал:

Логика в кастом дате прописана или в ltx файле?

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

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

@Balavnik , подгляди, как реализовано в АМК-моде. Найди секцию рюкзака и поиском пробей скрипты. Используется предмет, спавнится нычка по координатам актёра.

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

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

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

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

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

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

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

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

Войти

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

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

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