From Multi Theft Auto: Wiki
Jump to navigation Jump to search

This function returns all children of a particular XML node, or a particular child node.


table/xmlnode xmlNodeGetChildren ( xmlnode parent, [ int index ] )

OOP Syntax Help! I don't understand this!

Method: xmlnode:getChildren(...)
Variable: .children

Required Arguments

  • parent: This is the xmlnode you want to retrieve one or all child nodes of.

Optional Arguments

  • index: If you only want to retrieve one particular child node, specify its (0-based) index here. For example if you only want the first node, specify 0; the fifth node has index 4, etc.


If index isn't specified, returns a table containing all child nodes. If index is specified, returns the corresponding child node if it exists. If no nodes are found, it returns an empty table. Returns false in case of failure.


Click to collapse [-]

Suppose you have an .xml file with random welcome messages:

    <message>Welcome to the deathmatch server, enjoy your stay.</message>
    <message>Welcome. Be sure to get your free pizza at Matt's!</message>
    <message>Party going on at the LS beach, be there</message>

To show a random message from this list to joining players, you could use the following code:

addEventHandler("onResourceStart", getResourceRootElement(),
        local xml = xmlLoadFile("welcome.xml")             -- open the XML file
        local messageNodes = xmlNodeGetChildren(xml)       -- get all child nodes of the root node (<messages>)
        g_WelcomeMessages = {}                             -- create a new global variable to store the welcome messages
        for i,node in ipairs(messageNodes) do              -- loop over all the message nodes
            g_WelcomeMessages[i] = xmlNodeGetValue(node)   -- retrieve the text in each node
        xmlUnloadFile(xml)                                 -- close the XML file

addEventHandler("onPlayerJoin", getRootElement(),
        local numMessages = #g_WelcomeMessages                        -- get the number of messages
        local message = g_WelcomeMessages[math.random(numMessages)]   -- pick a random message
        outputChatBox(message, source, 0, 255, 0)                     -- display it to the joining player

See Also