Blaawee Posted December 11, 2012 Share Posted December 11, 2012 i'm trying to get vehicle id and name from the freeroam resource and inserted in table, but it seems not working i'm not good in Xml g_id = {} g_name = {} addEventHandler("onResourceStart", root, function() local index = 0 xml = xmlLoadFile( ":Ws_freeroam/xml/vehicles.xml" ) tag = xmlFindChild( xml, "group", index ) cars = xmlFindChild( tag, "vehicle", index ) while cars do table.insert( g_id, tonumber( xmlNodeGetAttribute( cars, "id" ) ) ) table.insert( g_name, xmlNodeGetAttribute( cars, "name" ) ) index = index + 1 end xmlUnloadFile( xml ) end ) addEventHandler ("onPlayerVehicleEnter", root, function( vehicle ) for id, name in ipairs( g_id ) do if name == getElementModel( vehicle ) then triggerClientEvent( source, "ShowCarName", root, g_name[id] ) end end end ) Link to comment
uhm Posted December 11, 2012 Share Posted December 11, 2012 your error is here: -- first you execute it on the first element (index 0) tag = xmlFindChild( xml, "group", index ) cars = xmlFindChild( tag, "vehicle", index ) -- then you go into a loop while cars do table.insert( g_id, tonumber( xmlNodeGetAttribute( cars, "id" ) ) ) table.insert( g_name, xmlNodeGetAttribute( cars, "name" ) ) -- index ups, but it has no effect since you need to redefine 'cars' index = index + 1 end this isnt supposed to look like a half assed reply, I hope this budges you in the right direction since it's not really a XML skills related thing but more a logical error edit: actually that double xmlFindChild doesn't make sense either, only if every has only one . you'll need to add a second loop Link to comment
Blaawee Posted December 11, 2012 Author Share Posted December 11, 2012 (edited) you mean like this ?! g_id = {} g_name = {} addEventHandler("onResourceStart", root, function() local index = 0 local xml = xmlLoadFile( ":Ws_freeroam/xml/vehicles.xml" ) local tag = xmlFindChild( xml, "group", index ) local idName = xmlNodeGetAttribute( tag, "name" ) while idName do tag = xmlFindChild( xml, "group", index ) idName = xmlNodeGetAttribute( tag, "name" ) index = index + 1 end index = 0 local cars = xmlFindChild( tag, "vehicle", index ) while cars do table.insert( g_id, tonumber( xmlNodeGetAttribute( cars, "id" ) ) ) table.insert( g_name, xmlNodeGetAttribute( cars, "name" ) ) index = index + 1 cars = xmlFindChild( tag, "vehicle", index ) end xmlUnloadFile( xml ) end ) addEventHandler ("onPlayerVehicleEnter", root, function( vehicle ) for id, name in ipairs( g_id ) do if name == getElementModel( vehicle ) then triggerClientEvent( source, "ShowCarName", root, g_name[id] ) end end end ) that's what i did ! Edited December 15, 2012 by Guest Link to comment
uhm Posted December 11, 2012 Share Posted December 11, 2012 I was thinking of this: (tested for syntax, but not for functionality) g_id = {} g_name = {} addEventHandler("onResourceStart", root, function() local iG = 0 local iC = 0 local xml = xmlLoadFile( ":Ws_freeroam/xml/vehicles.xml" ) local group -- for every in your xml file.... group = xmlFindChild( xml, "group", iG ) while group do local cars local idName = xmlNodeGetAttribute( group, "name" ) -- this is an unused variable btw -- check every car element in that group... cars = xmlFindChild( group, "vehicle", iC ) while cars do -- insert it into this table table.insert( g_id, tonumber( xmlNodeGetAttribute( cars, "id" ) ) ) table.insert( g_name, xmlNodeGetAttribute( cars, "name" ) ) -- go to the next car in the group iC = iC + 1 cars = xmlFindChild( group, "vehicle", iC ) end -- go to the next group in the xml file iG = iG + 1 group = xmlFindChild( xml, "group", iG ) end xmlUnloadFile( xml ) end ) addEventHandler ("onPlayerVehicleEnter", root, function( vehicle ) for id, name in ipairs( g_id ) do if name == getElementModel( vehicle ) then triggerClientEvent( source, "ShowCarName", root, g_name[id] ) end end end ) Link to comment
Blaawee Posted December 11, 2012 Author Share Posted December 11, 2012 it's seems loping for one group when i try out pot the 'g_id' table it's give this : Ambulance: 416 Barracks: 433 Enforcer: 427 FBI rancher: 490 FBI truck: 528 Fire truck: 407 Fire truck (ladder): 544 Police car (LS): 596 Police car (LV): 598 Police car (SF): 597 Police ranger: 599 S.W.A.T.: 601 here is the .xml type="vehicle"> "Modded Vehicles"> "Vehicles"> "507" name="1. Camry [2005]" /> "436" name="2. Camry [2010]" /> "426" name="3. Camry [2002]" /> "555" name="4. Cheverlot Aveo" /> "547" name="5. Ford Crown Victoria" /> "579" name="6. GMC" /> "492" name="7. Panorama" /> "550" name="8. Lexus [550]" /> "527" name="9. BMW" /> "445" name="10. Toyota Aiuron" /> "479" name="11. Toyota Hilux" /> "560" name="12. Hundai Ellentra" /> "546" name="13. Nissan Detsun" /> "529" name="14. Chevrlot Capris" /> "Bikes"> "Motorbikes"> "581" name="BF-400" /> "462" name="Faggio" /> "521" name="FCR-900" /> "463" name="Freeway" /> "523" name="HPV1000" /> "522" name="NRG-500" /> "461" name="PCJ-600" /> "448" name="Pizza Boy" /> "468" name="Sanchez" /> "586" name="Wayfarer" /> "471" name="Quadbike" /> "Bicycles"> "509" name="Bike" /> "481" name="BMX" /> "510" name="Mountain bike" /> "Cars"> "Sports Cars"> "602" name="Alpha" /> "429" name="Banshee" /> "541" name="Bullet" /> "415" name="Cheetah" /> "480" name="Comet" /> "562" name="Elegy" /> "587" name="Euros" /> "565" name="Flash" /> "411" name="Infernus" /> "559" name="Jester" /> "603" name="Phoenix" /> "506" name="Super GT" /> "451" name="Turismo" /> "558" name="Uranus" /> "555" name="Windsor" /> "477" name="ZR-350" /> "Lowriders"> "536" name="Blade" /> "575" name="Broadway" /> "518" name="Buccaneer" /> "419" name="Esperanto" /> "534" name="Remington" /> "567" name="Savanna" /> "535" name="Slamvan" /> "576" name="Tornado" /> "412" name="Voodoo" /> "2-Door"> "496" name="Blista Compact" /> "401" name="Bravura" /> "527" name="Cadrona" /> "542" name="Clover" /> "533" name="Feltzer" /> "526" name="Fortune" /> "474" name="Hermes" /> "545" name="Hustler" /> "517" name="Majestic" /> "410" name="Manana" /> "436" name="Previon" /> "475" name="Sabre" /> "549" name="Tampa" /> "491" name="Virgo" /> "4-Door"> "445" name="Admiral" /> "438" name="Cabbie" /> "585" name="Emperor" /> "466" name="Glendale" /> "492" name="Greenwood" /> "546" name="Intruder" /> "551" name="Merit" /> "516" name="Nebula" /> "467" name="Oceanic" /> "426" name="Premier" /> "405" name="Sentinel" /> "409" name="Stretch" /> "550" name="Sunrise" /> "566" name="Tahoma" /> "420" name="Taxi" /> "540" name="Vincent" /> "421" name="Washington" /> "529" name="Willard" /> "Emergency"> "416" name="Ambulance" /> "433" name="Barracks" /> "427" name="Enforcer" /> "490" name="FBI rancher" /> "528" name="FBI truck" /> "407" name="Fire truck" /> "544" name="Fire truck (ladder)" /> "596" name="Police car (LS)" /> "598" name="Police car (LV)" /> "597" name="Police car (SF)" /> "599" name="Police ranger" /> "601" name="S.W.A.T." /> "Heavy Vehicles"> "Industrial"> "524" name="Cement truck" /> "578" name="DFT-30" /> "486" name="Dozer" /> "406" name="Dumper" /> "573" name="Dune" /> "455" name="Flatbed" /> "530" name="Forklift" /> "403" name="Linerunner" /> "443" name="Packer" /> "515" name="Roadtrain" /> "574" name="Sweeper" /> "514" name="Tanker" /> "525" name="Towtruck" /> "408" name="Trashmaster" /> "552" name="Utility van" /> "Trailers"> "606" name="Baggage trailer (covered)" /> "607" name="Baggage trailer (Uncovered)" /> "610" name="Farm trailer" /> "537" name="Freight train" /> "590" name="Freight train boxcar" /> "569" name="Freight train flatbed" /> "611" name="Street Clean trailer" /> "584" name="Gas trailer" /> "608" name="Trailer 1" /> "435" name="Trailer 2" /> "450" name="Trailer 3" /> "591" name="Trailer 4" /> "Trucks"> "499" name="Benson" /> "609" name="Black Boxville" /> "422" name="Bobcat" /> "498" name="Boxville" /> "414" name="Mule" /> "600" name="Picador" /> "543" name="Sadler" /> "428" name="Securicar" /> "478" name="Walton" /> "456" name="Yankee" /> "554" name="Yosemite" /> "Vans"> "459" name="Berkley's RC van" /> "482" name="Burrito" /> "483" name="Camper" /> "508" name="Journey" /> "418" name="Moonbeam" /> "582" name="News van" /> "413" name="Pony" /> "440" name="Rumpo" /> "Misc"> "Other"> "485" name="Baggage" /> "568" name="Bandito" /> "424" name="BF Injection" /> "504" name="Bloodring Banger" /> "538" name="Brownstreak Engine" /> "431" name="Bus" /> "457" name="Caddy" /> "437" name="Coach" /> "532" name="Combine harvester" /> "588" name="Hotdog" /> "434" name="Hotknife" /> "494" name="Hotring racer" /> "502" name="Hotring racer 2" /> "503" name="Hotring racer 3" /> "444" name="Monster" /> "556" name="Monster 2" /> "557" name="Monster 3" /> "572" name="Mower" /> "423" name="Mr. Whoopee" /> "570" name="Kart" /> "531" name="Tractor" /> "449" name="Trolly" /> "583" name="Tug" /> "539" name="Vortex" /> "SUVs and Wagons"> "589" name="Club" /> "579" name="Huntley" /> "400" name="Landstalker" /> "500" name="Mesa" /> "470" name="Patriot" /> "489" name="Rancher" /> "479" name="Regina" /> "442" name="Romero" /> "495" name="Sandking" /> "458" name="Solair" /> "561" name="Stratum" /> and it's only insert Emergency group any Help ? Link to comment
Blaawee Posted December 15, 2012 Author Share Posted December 15, 2012 sorry for dump, but i realy need help with this ! Link to comment
Techial Posted December 15, 2012 Share Posted December 15, 2012 You should do a for loop of the "" Link to comment
Blaawee Posted December 15, 2012 Author Share Posted December 15, 2012 you mean like this ?! g_id = {} g_name = {} addEventHandler("onResourceStart", root, function() local index = 0 local xml = xmlLoadFile( ":Ws_freeroam/xml/vehicles.xml" ) local tag = xmlFindChild( xml, "group", index ) local idName = xmlNodeGetAttribute( tag, "name" ) while idName do tag = xmlFindChild( xml, "group", index ) idName = xmlNodeGetAttribute( tag, "name" ) index = index + 1 end index = 0 local cars = xmlFindChild( tag, "vehicle", index ) while cars do table.insert( g_id, tonumber( xmlNodeGetAttribute( cars, "id" ) ) ) table.insert( g_name, xmlNodeGetAttribute( cars, "name" ) ) index = index + 1 cars = xmlFindChild( tag, "vehicle", index ) end xmlUnloadFile( xml ) end ) addEventHandler ("onPlayerVehicleEnter", root, function( vehicle ) for id, name in ipairs( g_id ) do if name == getElementModel( vehicle ) then triggerClientEvent( source, "ShowCarName", root, g_name[id] ) end end end ) that's what i did Link to comment
Blaawee Posted December 16, 2012 Author Share Posted December 16, 2012 thx for the help =) Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now