tim260 Posted May 27, 2013 Posted May 27, 2013 Hello fellow MTA'ers, I am having the following problem. I have had a spawn menu for ages now and this problem has been bothering me for some time. I have a grid list called Spawn. And an XML file where its loaded from. the XML looks like this < just an example > <city name="North"> <class name="Admin" r="200" g="200" b="200"> <spawn name="Admin 1" all the info... > <skin>217</skin> </spawn> <spawn name="Admin 2" all the info... > <skin>217</skin> </spawn> <spawn name="Admin 3" all the info... > <skin>217</skin> </spawn> </class> </city> Instead of outputting the Grid like this - Admin 1 - Admin 2 - Admin 3 it outputs it like: - Admin 1 - Admin 3 - Admin 2 How is this possible? the script wich creates te list is below. function onClassClick(button) if source == classGridList and button == "left" then if guiGridListGetSelectedCount(cityGridList) > 0 and guiGridListGetSelectedCount(classGridList) > 0 then guiGridListClear(spawnGridList) local selectedRow, selectedCol = guiGridListGetSelectedItem( cityGridList ); local cityName = guiGridListGetItemText( cityGridList, selectedRow, selectedCol ) local selectedRow, selectedCol = guiGridListGetSelectedItem( classGridList ); local className = guiGridListGetItemText( classGridList, selectedRow, selectedCol ) local classSkins = cities[cityName][className] for x, y in pairs(classSkins) do local row = guiGridListAddRow(spawnGridList) guiGridListSetItemText(spawnGridList, row, 1, x, false, false) end guiSetProperty(spawnScreenOKButton, "Disabled", "True") guiSetProperty(skinPrevButton, "Disabled", "True") guiSetProperty(skinNextButton, "Disabled", "True") guiSetText(skinNumberLabel, 1) unRenderSkin() end end end
Moderators IIYAMA Posted May 27, 2013 Moderators Posted May 27, 2013 I don't know why, why don't you sort the table? and how many items do you have in there?
50p Posted May 27, 2013 Posted May 27, 2013 Make the table an index table and then sort it before you populate the grid list. You can also use table.insert function to insert each class to the table in the same order it was loaded from the xml file. Once you have an index table iterate it with ipairs instead of pairs, this way the order will always be the same since pairs does not always iterate in the same order.
tim260 Posted May 28, 2013 Author Posted May 28, 2013 Make the table an index table and then sort it before you populate the grid list. You can also use table.insert function to insert each class to the table in the same order it was loaded from the xml file. Once you have an index table iterate it with ipairs instead of pairs, this way the order will always be the same since pairs does not always iterate in the same order.Sorry i dont work with those index and table stuff alot could you give me a brief example, much aprreciated.
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