Kirgudu 1 255 Опубликовано 13 Мая 2017 @Graff46, в этом плане ничего не поменялось, конфигурационный файл m_netpk.ltx требуется и включён в комплект соотв. модуля. Инструмент Поделиться этим сообщением Ссылка на сообщение
Kirgudu 1 255 Опубликовано 13 Июня 2017 @dsh, спасибо, обновил комплекты для скачивания. Инструмент Поделиться этим сообщением Ссылка на сообщение
Kirgudu 1 255 Опубликовано 25 Января 2018 (изменено) @Graff46 только я б либо оставил аборт с выводом в лог, как он был в оригинале (а также добавил проверку наличия распарсенной функции, и туда тоже аборт), либо убрал аборт во всей функции pick_section_from_condlist (если ты в принципе от них избавляешься и потому как вылет и без аборта будет на отсутствующих функциях). Ну и ещё в _G[spc][fname](actor, npc, infop.params or nil) "or nil" - лишнее, так как там и без того либо таблица, либо nil. Upd: раз здесь "сборочный цех", будет неплохо представить исправленные функции для всех трёх частей игры, так как они хоть и незначительно, но емнип отличаются. Изменено 25 Января 2018 пользователем Kirgudu 1 Инструмент Поделиться этим сообщением Ссылка на сообщение
Kirgudu 1 255 Опубликовано 23 Июня 2018 Ишь, какую версию ты откопал. Мультиплатформа отсутствует и, скорее всего, предназначено только для ТЧ. Но вот насколько сие творение работоспособно и лишено ошибок - сказать не могу. У Артоса 2 версии модулей нетпакетов: более старый m_net_utils и более новый m_netpk. Но даже более старый m_net_utils, наличествующий у меня, имеет дату редактирования 27.10.2011 (у тебя же - 22.05.2009, на 2 с половиной года раньше) и предназначен уже для всех трёх платформ игры. Инструмент Поделиться этим сообщением Ссылка на сообщение
Kirgudu 1 255 Опубликовано 26 Ноября 2023 (изменено) Скриптовый парсер XML https://disk.yandex.ru/d/1ecmI-oPY5b11A Может пригодиться тем, кто, во-первых, хочет иметь возможность читать и понимать в игре файлы xml формата, а во-вторых, по ряду причин не хочет или не может пользоваться другими механизмами, в том числе модифицированными движками. Скрытый текст Парсинг всех xml с игровыми инфопорциями. Предусловие в данном случае: псевдоним $gameplay$ для доступа к соотв. папке заранее добавлен в fsgame.ltx ($gameplay$ = true| false| $game_config$| gameplay\) -- получение таблицы инфопорций из соотв. файлов xml local tInfos = parseInfos() function parseInfos() local tResult = {} local f = getFS() local flist = f:file_list_open_ex("$gameplay$", FS.FS_ListFiles, "info_*.xml") local fcnt = flist:Size() local xml2lua = xml_utils.get_xml2lua() local handler_tree = xml_utils.get_tree_handler() if fcnt > 0 then for i = 0, fcnt - 1 do local filepath = f:update_path("$gameplay$", flist:GetAt(i):NameFull()) if xml2lua.fileExists(filepath) then local handler = handler_tree:new() local parser = xml2lua.parser(handler) parser:parse(xml2lua.loadFile(filepath)) local infos = handler.root.game_information_portions if type(infos.info_portion) == "table" and #infos.info_portion > 1 then infos = infos.info_portion end if infos then if #infos > 1 then for _,v in ipairs(infos) do table.insert(tResult, { info = v._attr.id, has_article = v.article ~= nil, has_action = v.action ~= nil }) end else table.insert(tResult, { info = infos._attr.id, has_article = infos.article ~= nil, has_action = infos.action ~= nil }) end end end end end return tResult end Результат после вышеописанного парсинга будет примерно таким: tInfos = { [1] = { info = "esc_kill_gunslinger", has_article = true, has_action = false }, [2] = { info = "mil_cook_map_spot", has_article = false, has_action = true }, -- и т. д. } Скрытый текст Парсеру необходимо скармливать готовую xml строку. Её можно подготовить самому, либо использовать встроенную в модуль функцию чтения из файла, см. строку: parser:parse(xml2lua.loadFile(filepath)) Но как я ни старался, прочесть xml из игрового архива мне так и не удалось. Теоретически можно было бы использовать что-то типа такого: local f, filename = getFS(), "filename.xml" local fsfile = f:exist("$gameplay$", filename) if fsfile and fsfile.size_real > 0 then local reader = f:r_open("$gameplay$", flist:GetAt(i):NameFull()) local xml_string = string.sub(reader:r_stringZ(), 1, fsfile.size_real) parser:parse(xml_string) -- и т. д. Однако на ванильном движке ЧН (как и у malandrinus-а в своё время в ТЧ) это приводит к вылетам при первом же чтении файла, содержащегося в архиве, да и рабочего метода закрытия потока нет. Скрытый текст Все благодарности сюда:https://github.com/manoelcampos/xml2lua (с) Manoel Campos da Silva Filho & Paul Chakravarti Ваш покорный слуга лишь доработал парсер так, чтобы его можно было использовать в игре. @Zander_driver, если думаешь, что тема мертва и реанимировать её не стоит, попросим модераторов перенести пост куда-нибудь ещё. Изменено 27 Ноября 2023 пользователем Kirgudu 2 5 Инструмент Поделиться этим сообщением Ссылка на сообщение