Platin Posted March 30, 2016 Share Posted March 30, 2016 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
Tomas Posted March 30, 2016 Share Posted March 30, 2016 if (tonumber(newId) == getElementModel(realId)) then Link to comment
Platin Posted March 30, 2016 Author Share Posted March 30, 2016 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
Platin Posted March 31, 2016 Author Share Posted March 31, 2016 Muestra como lo tienes organizado en xml. "2 puertas" type="Car"> "602" price="15000" /> --obviamente sigue pero no quiero floodear esto Link to comment
Enargy, Posted March 31, 2016 Share Posted March 31, 2016 Si tu script es cliente, entonces en el argumento de la función, thePlayer esta siendo el comando que ejecutaste y no el jugador, quita eso y usa solo localPlayer, si es server pues olvidaste agregar el elemento que pueda ver el mensaje. Link to comment
Enargy, Posted March 31, 2016 Share Posted March 31, 2016 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 . Edit: tienes un problema con los elementos , para que checas si thePlayer y si él es un elemento si siempre te dara true? Link to comment
Enargy, Posted March 31, 2016 Share Posted March 31, 2016 Lo editaste por que estaba malo y lo mio esta bien . Edit: tienes un problema con los elementos , 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
Enargy, Posted March 31, 2016 Share Posted March 31, 2016 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
Platin Posted March 31, 2016 Author Share Posted March 31, 2016 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
Tomas Posted March 31, 2016 Share Posted March 31, 2016 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... ¿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
Platin Posted April 1, 2016 Author Share Posted April 1, 2016 Ya la postee antes: -- primer node "2 puertas" type="Car"> -- el grupo que me sirve para los concesionarios "602" price="15000" /> -- el vehiculo y el precio Link to comment
Platin Posted April 1, 2016 Author Share Posted April 1, 2016 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
Guest Posted April 1, 2016 Share Posted April 1, 2016 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 Link to comment
Tomas Posted April 2, 2016 Share Posted April 2, 2016 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 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
Platin Posted April 2, 2016 Author Share Posted April 2, 2016 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
Recommended Posts