Jump to content

Problema con XML


Platin

Recommended Posts

Hola, miren estaba haciendo pruebas ya que no soy de usar XML y no me esta funcionando un for key loop.

server.lua

function venderVeh(thePlayer) 
    local rootNode = xmlLoadFile("data\\vehicles.xml") 
    local groupNode = xmlFindChild(rootNode, "group", 0) 
    local vehicleNode = xmlFindChild(groupNode, "vehicle", 0) 
    local children = xmlNodeGetChildren(vehicleNode) 
    local realId = getPedOccupiedVehicle(thePlayer)  
    for k,node in ipairs(children) do 
        newId = xmlNodeGetAttribute(node, "id") 
        if (newId == realId) then 
            outputChatBox("true") 
        else 
            outputChatBox("false") 
        end 
    end 
end 
addCommandHandler("venderveh", venderVeh) 

Simplemente no sale el mensaje en el chat, ninguno de los dos, tampoco salta error.

¿Qué podría ser?

Gracias de antemano.

Link to comment
  
        if (tonumber(newId) == getElementModel(realId)) then 
  

Además de eso (que gracias, creo que es producto del cansancio o la estupidez), sigue sin funcionar, o sea si mando un outputChatBox al inicio del for tampoco me lo manda. ¿Qué podría ser?

Link to comment
Primero que todo:
local rootNode = xmlLoadFile("data\\vehicles.xml") 

Debería ser:

local rootNode = xmlLoadFile("data/vehicles.xml") 

Pruebalo así:

    function venderVeh(thePlayer) 
        if thePlayer and isElement(thePlayer) and getElementType (thePlayer) == "player" then 
            local rootNode = xmlLoadFile("data/vehicles.xml") 
            local vehiclesNode = xmlFindChild(rootNode, "vehicles", 0) 
            local groupNode = xmlFindChild(vehiclesNode, "group", 0) 
            local vehicleNode = xmlFindChild(groupNode, "vehicle", 0) 
            local children = xmlNodeGetChildren(vehicleNode) 
            local realId = getPedOccupiedVehicle(thePlayer) 
            for k,node in ipairs(children) do 
                newId = xmlNodeGetAttribute(node, "id") 
                if (newId == realId) then 
                    outputChatBox("true", thePlayer, 0, 255, 0) 
                else 
                    outputChatBox("false", thePlayer, 255, 0, 0) 
                end 
            end 
        end 
    end 
    addCommandHandler("venderveh", venderVeh) 

Lo editaste por que estaba malo y lo mio esta bien xD.

Edit: tienes un problema con los elementos xD, para que checas si thePlayer y si él es un elemento si siempre te dara true?

Link to comment

Lo editaste por que estaba malo y lo mio esta bien xD.

Edit: tienes un problema con los elementos xD, para que checas si thePlayer y si él es un elemento si siempre te dara true?

Lo del outputChatBox creo que si no hay 2do argumento, lo toma como getRootElement(), así que si lo pones o no, siempre saldrá un outputChatBox.

  
outputChatBox ( string text [, element visibleTo=getRootElement(), int r=231, int g=217, int b=176, bool colorCoded=false ] ) 

Lo de los elements, siempre tienes que saber que dato es el que se coloca en la función.

Por eso evalúo,

if thePlayer then --Evaluación de que existe una variable 
if isElement(thePlayer) then --Evaluación si esa variable es un elemento (por si la variable es un número o un string, etc) 
if getElementType (thePlayer) then --Evaluación si es un player y no es lo contrario (ped, objecto, pickup, vehiculo, etc) 

Pero siempre va a ser true porque thePlayer es el elemento que ejecuta el comando, entonces no sería falta usarlo.

Link to comment

Pero siempre va a ser true porque thePlayer es el elemento que ejecuta el comando, entonces no sería falta usarlo.

Puedes usar la misma función desde otro lado, no solamente del comando.

Pero la esta usando mediante el comando, siempre va a darte true man.

Link to comment

Aclare al principio que era en server.lua (entiendo que no se note ya que cuando alguien me pasa un script aunque me diga que es server siempre pregunto).

Da igual que ponga data/vehicles.xml o data\\vehicles.xml, no va a cambiar.

Y no le den palo al Zorro, dentro de todo tuvo una excusa que no estuvo tan mala, si es un commandHandler y lo que quieras pero también puedo triggear la funcion desde otro lado (por ejemplo cuando entre a un ColShape).

Sigo con el problema, si pueden y quieren prueben ustedes, van a ver que no salta ni error ni mensaje, ni nada, no tengo idea de que pasa, quizá y es un problema de la 1.5 (es la versión que estoy usando ahora para hacer el RolePlay).

Link to comment

Innecesario, ineficiente, sinsentido... Y de todos modos eso no funcionaría.

Tu mente divergente no le encuentra sentido.

Quizás deberías levantarte un rato de la silla, tomar un vaso de agua y algo relacionado con GTI (lo que se te venga a la mente).

Pues la mente de quién no diverge al argumentar contigo... :lol:

¿Dónde está el sentido en agregar todo eso innecesario? Si tú le encuentras sentido podrías explicarlo, ¿no?

@Platin postea la semántica del XML que usas.

Link to comment
Aclare al principio que era en server.lua (entiendo que no se note ya que cuando alguien me pasa un script aunque me diga que es server siempre pregunto).

Da igual que ponga data/vehicles.xml o data\\vehicles.xml, no va a cambiar.

Y no le den palo al Zorro, dentro de todo tuvo una excusa que no estuvo tan mala, si es un commandHandler y lo que quieras pero también puedo triggear la funcion desde otro lado (por ejemplo cuando entre a un ColShape).

Sigo con el problema, si pueden y quieren prueben ustedes, van a ver que no salta ni error ni mensaje, ni nada, no tengo idea de que pasa, quizá y es un problema de la 1.5 (es la versión que estoy usando ahora para hacer el RolePlay).

Si no aparece nada en el debugscript, no será que no está agregado al meta.xml?

Por favor dejen de decirme cosas tan básicas. Reviso antes de hacer los posts. Obviamente esta agregado.

¿Qué diablos puede estar provocando esto?

Link to comment

Intenta con esto

function venderVeh(thePlayer) 
local rootNode = xmlLoadFile("data/vehicles.xml") 
local groupNode = xmlFindChild(rootNode, "group", 0) 
local vehicleNode = xmlNodeGetChildren(groupNode) 
local vehicle = getPedOccupiedVehicle(thePlayer) 
local realId = getElementModel(vehicle) 
for i,v in ipairs(vehicleNode) do 
local newId = tonumber(xmlNodeGetAttribute(v, "id")) 
if (newId == realId) then 
outputChatBox("true") 
else 
outputChatBox("false") 
end 
end 
end 
addCommandHandler("venderveh", venderVeh) 

Les pido a todos ustedes, hijos de **** que se pelean tanto por la eficiencia, o ineficiencia, porque se caen bien, porque se caen mal, porque si les pico el zancudo, que le bajen todos a sus huevos y dejen de decir tanta estupidez en todos los posts del subforo, y si el OTRO tiene un código que no funciona o para ti no es 'eficiente' publica el tuyo y dejate de hacerte el importante :D

Link to comment
Intenta con esto
function venderVeh(thePlayer) 
local rootNode = xmlLoadFile("data/vehicles.xml") 
local groupNode = xmlFindChild(rootNode, "group", 0) 
local vehicleNode = xmlNodeGetChildren(groupNode) 
local vehicle = getPedOccupiedVehicle(thePlayer) 
local realId = getElementModel(vehicle) 
for i,v in ipairs(vehicleNode) do 
local newId = tonumber(xmlNodeGetAttribute(v, "id")) 
if (newId == realId) then 
outputChatBox("true") 
else 
outputChatBox("false") 
end 
end 
end 
addCommandHandler("venderveh", venderVeh) 

Les pido a todos ustedes, hijos de **** que se pelean tanto por la eficiencia, o ineficiencia, porque se caen bien, porque se caen mal, porque si les pico el zancudo, que le bajen todos a sus huevos y dejen de decir tanta estupidez en todos los posts del subforo, y si el OTRO tiene un código que no funciona o para ti no es 'eficiente' publica el tuyo y dejate de hacerte el importante :D

El problema está en la tabla ya que nunca se ejecuta y su tamaño es 0.

He estado probando de varias formas y no logro hacerlo funciona, si mal no recuerdo el freeroam tenía un archivo como ese así que supongo deberías buscar ahí la solución.

Link to comment

Alto lío me tuve que hacer pero más o menos lo pude solucionar.

function venderVeh(thePlayer) 
    local rootNode = xmlLoadFile("data/vehicles.xml") 
    local groupNode = xmlFindChild(rootNode, "group", 0) 
    local vehicleNode = xmlFindChild(groupNode, "vehicle", 0) 
    local veh = getPedOccupiedVehicle(thePlayer)  
    local realId = getElementModel(veh) 
    for k,node in ipairs({groupNode}) do 
        children = xmlNodeGetChildren(node) 
        for k,chil in ipairs(children) do 
            newId = xmlNodeGetAttribute(chil, "id") 
            if (tonumber(newId) == realId) then 
                outputChatBox("true") 
            else 
                outputChatBox("false") 
            end 
        end 
    end 
end 
addCommandHandler("venderveh", venderVeh) 

alternativo:

function venderVeh(thePlayer) 
    local rootNode = xmlLoadFile("data/vehicles.xml") 
    local veh = getPedOccupiedVehicle(thePlayer)  
    local realId = getElementModel(veh) 
    for k,n in ipairs({rootNode}) do 
        groupNode = xmlNodeGetChildren(n) 
        for k,node in ipairs(groupNode) do 
            children = xmlNodeGetChildren(node) 
            for k,chil in ipairs(children) do 
                newId = xmlNodeGetAttribute(chil, "id") 
                if (tonumber(newId) == realId) then 
                    outputChatBox("true", root, 0,255,0) 
                    setTimer(outputChatBox, 5000, 1, "true", root, 0,255,0) 
                else 
                    outputChatBox("false", root, 255,0,0) 
                end 
            end 
        end 
    end 
end 
addCommandHandler("venderveh", venderVeh) 

Gracias por la ayuda, ahora solo me falta hacerlo como quería, esto solo era un test ;)

Link to comment
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...