---==================================================================================================================--- --- --- --- Original Author(s) : NLTP_ASHES --- --- Edited : N/A --- --- Date : 14/02/2024 --- --- License : Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) --- --- --- --- DXML script used to modify some XML files according to some criteria. --- --- Modifying these files allows Western Goods to power some features. --- --- --- ---==================================================================================================================--- -- --------------------------------------------------------------------------------------------------------------------- -- DXML for game_tutorials.xml -- --------------------------------------------------------------------------------------------------------------------- function dxml_game_tutorials(xml_file_name, xml_obj) -- Only execute on gamedata\configs\ui\game_tutorials.xml if xml_file_name ~= [[ui\game_tutorials.xml]] then return end -- Query the file to get the node(s) to modify local query = "tutorial_campfire_ignite > item" local query_res = xml_obj:query(query) -- Expect one, and only one match if size_table(query_res) ~= 1 then printf("~[WG] WARNING | DXML | Aborting. Invalid number of results for '%s', got '%s', expected '%s'.", query, size_table(query_res), 1) return end -- Get the resulting element local xml_elem = query_res[1] -- XML Code to inject local xml_inject = [[western_goods_core.use_campfire]] -- Inject XML Code xml_obj:insertFromXMLString(xml_inject, xml_elem, #xml_elem.kids) end -- --------------------------------------------------------------------------------------------------------------------- -- DXML for character_desc_deadcity.xml -- --------------------------------------------------------------------------------------------------------------------- function dxml_character_desc_deadcity(xml_file_name, xml_obj) -- Only execute on gamedata\configs\gameplay\character_desc_deadcity.xml if xml_file_name ~= [[gameplay\character_desc_deadcity.xml]] then return end -- Query the file to get the node(s) to modify local query = "specific_character[id=cit_killers_merc_trader_stalker]" local query_res = xml_obj:query(query) -- Expect one, and only one match if size_table(query_res) ~= 1 then printf("~[WG] WARNING | DXML | Aborting. Invalid number of results for '%s', got '%s', expected '%s'.", query, size_table(query_res), 1) return end -- Get the resulting element local xml_elem = query_res[1] -- XML Code to inject local xml_inject = [[ western_goods_act_2_task_1_start western_goods_act_2_task_1_end western_goods_act_2_task_2_differed_opt_in ]] -- Inject XML Code xml_obj:insertFromXMLString(xml_inject, xml_elem, #xml_elem.kids) end -- --------------------------------------------------------------------------------------------------------------------- -- DXML for ui_barter.xml -- --------------------------------------------------------------------------------------------------------------------- function dxml_barter_ui_background_size(xml_file_name, xml_obj) -- Only execute on gamedata\configs\ui\ui_barter.xml if xml_file_name ~= [[ui\ui_barter.xml]] then return end -- Query the file to get the node(s) to modify local query = "barter > background" local query_res = xml_obj:query(query) -- Expect one, and only one match if size_table(query_res) ~= 1 then printf("~[WG] WARNING | DXML | Aborting. Invalid number of results for '%s', got '%s', expected '%s'.", query, size_table(query_res), 1) return end -- Get the resulting element local xml_elem = query_res[1] -- Change node attributes xml_obj:setElementAttr(xml_elem, {x=-228, y=-47, width=1024, height=768}) end function dxml_barter_ui_background_texture(xml_file_name, xml_obj) -- Only execute on gamedata\configs\ui\ui_barter.xml if xml_file_name ~= [[ui\ui_barter.xml]] then return end -- Query the file to get the node(s) to modify local query = "background > texture" local query_res = xml_obj:query(query) -- Expect one, and only one match if size_table(query_res) ~= 1 then printf("~[WG] WARNING | DXML | Aborting. Invalid number of results for '%s', got '%s', expected '%s'.", query, size_table(query_res), 1) return end -- Get the resulting element local xml_elem = query_res[1] -- Change node text content xml_obj:setText(xml_elem, "ui\\barter\\ui_barter_background.dds") end -- --------------------------------------------------------------------------------------------------------------------- -- Callbacks registration -- --------------------------------------------------------------------------------------------------------------------- --- Function used to register callbacks. --- @return nil function on_xml_read() RegisterScriptCallback("on_xml_read", dxml_game_tutorials) RegisterScriptCallback("on_xml_read", dxml_character_desc_deadcity) RegisterScriptCallback("on_xml_read", dxml_barter_ui_background_size) RegisterScriptCallback("on_xml_read", dxml_barter_ui_background_texture) end