SoundWave Posted March 8, 2011 Share Posted March 8, 2011 (edited) Hello, I have a userpanel where you can buy maps i wanted to add a search option to it but that didnt went so good. When i type something in the search bar (ResourceListSearch) all maps go away and when i delete everything i typed maps dont show again. Plz help me Client Sided: triggerServerEvent('getMaps', g_Root) addEvent('sendMaps', true) addEventHandler('sendMaps', g_Root, function(name) local row = guiGridListAddRow(Shop) guiGridListSetItemText(Shop, row, 1, name, false, false) end ) -- Map search function mapSearch() guiGridListClear(Shop) local searchString = string.lower(guiGetText(ResourceListSearch)) if ( searchString == "" ) then for id,gamemode in pairs (aGamemodeMapTable) do if (gamemode.name == "Race") then for id,map in ipairs (gamemode.maps) do local row = guiGridListAddRow (Shop) guiGridListSetItemText(Shop, row, 1, map.name, false, false) end end end else for id,gamemode in pairs (aGamemodeMapTable) do if (gamemode.name == "Race") then local noMapsFound = true for id,map in ipairs (gamemode.maps) do if string.find(string.lower(map.name.." "..map.resname), searchString, 1, true) then local row = guiGridListAddRow (Shop) guiGridListSetItemText(Shop, row, 1, map.name, false, false) noMapsFound = false end end if noMapsFound == true then local row = guiGridListAddRow(Shop) guiGridListSetItemText (Shop, row, 1, "No maps matching your search query!", false, false) guiGridListSetItemColor (Shop, row, 1, 0,0,255) end end end end end addEventHandler("onClientGUIChanged",ResourceListSearch,mapSearch) Server sided: function mapsList() local resourceTable = getResources() for resourceKey, resourceValue in ipairs(resourceTable) do local name = getResourceInfo(resourceValue, "name") local type = getResourceInfo(resourceValue, "type") local game = getResourceInfo(resourceValue, "gamemodes") if type == "map" and game == "race" then triggerClientEvent("sendMaps", g_Root, name) else cancelEvent() end end end addEvent("getMaps", true) addEventHandler("getMaps", g_Root, mapsList) Edited March 8, 2011 by Guest Link to comment
Castillo Posted March 8, 2011 Share Posted March 8, 2011 This makes no sense, where's this table? aGamemodeMapTable Link to comment
SoundWave Posted March 8, 2011 Author Share Posted March 8, 2011 What do you mean SolidSnake? its for Race Everything works accept the search part. What is wrong with that? Link to comment
Castillo Posted March 8, 2011 Share Posted March 8, 2011 Ur kidding me? i know how to read, i'm asking, where is that table? Link to comment
SoundWave Posted March 8, 2011 Author Share Posted March 8, 2011 you mean this table.insert(tableOut[countGmodes]["maps"] ,{name = getResourceInfo(map, "name") or getResourceName(map), resname = getResourceName(map)}) Link to comment
Castillo Posted March 8, 2011 Share Posted March 8, 2011 You are using this table "aGamemodeMapTable" but i don't see it on the script you posted, is the full script? Link to comment
SoundWave Posted March 8, 2011 Author Share Posted March 8, 2011 well before all that i used this script: client sided: function loadMaps(gamemodeMapTable, gamemode, map) guiGridListClear(Shop) local totalServerMaps = 0 if gamemodeMapTable then aGamemodeMapTable = gamemodeMapTable for id,gamemode in pairs (gamemodeMapTable) do if (gamemode.name == "Race") then for id,map in ipairs (gamemode.maps) do local row = guiGridListAddRow (Shop) guiGridListSetItemText(Shop, row, 1, map.name, false, false) totalServerMaps = totalServerMaps + 1 end end end end end triggerServerEvent('getMaps', g_Root) addEvent("sendMaps",true) addEventHandler("sendMaps",getRootElement(),loadMaps) -- Map search function mapSearch() guiGridListClear(Shop) local searchString = string.lower(guiGetText(ResourceListSearch)) if ( searchString == "" ) then for id,gamemode in pairs (aGamemodeMapTable) do if (gamemode.name == "Race") then for id,map in ipairs (gamemode.maps) do local row = guiGridListAddRow (Shop) guiGridListSetItemText(Shop, row, 1, map.name, false, false) end end end else for id,gamemode in pairs (aGamemodeMapTable) do if (gamemode.name == "Race") then local noMapsFound = true for id,map in ipairs (gamemode.maps) do if string.find(string.lower(map.name.." "..map.resname), searchString, 1, true) then local row = guiGridListAddRow (Shop) guiGridListSetItemText(Shop, row, 1, map.name, false, false) noMapsFound = false end end if noMapsFound == true then local row = guiGridListAddRow(Shop) guiGridListSetItemText (Shop, row, 1, "No maps matching your search query!", false, false) guiGridListSetItemColor (Shop, row, 1, 0,0,255) end end end end end addEventHandler("onClientGUIChanged",ResourceListSearch,mapSearch) Server sided: -- GET SERVER MAPS function getMaps (loadList) if checkClient( true, source, 'getServerMaps' ) then return end local tableOut if loadList then tableOut = {} -- local deletedMaps = {} local gamemodes = {} gamemodes = call(getResourceFromName("mapmanager"), "getGamemodes") for id,gamemode in ipairs (gamemodes) do tableOut[id] = {} tableOut[id].name = getResourceInfo(gamemode, "name") or getResourceName(gamemode) tableOut[id].resname = getResourceName(gamemode) tableOut[id].maps = {} local maps = call(getResourceFromName("mapmanager"), "getMapsCompatibleWithGamemode" , gamemode) for _,map in ipairs (maps) do table.insert(tableOut[id]["maps"] ,{name = getResourceInfo(map, "name") or getResourceName(map), resname = getResourceName(map)}) end table.sort(tableOut[id]["maps"], sortCompareFunction) end table.sort((tableOut), sortCompareFunction) table.insert(tableOut, {name = "no gamemode", resname = "no gamemode", maps = {}}) local countGmodes = #tableOut local maps = call(getResourceFromName("mapmanager"), "getMapsCompatibleWithGamemode") for id,map in ipairs (maps) do -- if fileOpen(":"..getResourceName(map).."/deleted") then -- table.insert(deletedMaps ,{name = getResourceInfo(map, "name") or getResourceName(map), resname = getResourceName(map)}) -- else table.insert(tableOut[countGmodes]["maps"] ,{name = getResourceInfo(map, "name") or getResourceName(map), resname = getResourceName(map)}) -- end end -- table.sort(deletedMaps, sortCompareFunction) table.sort(tableOut[countGmodes]["maps"], sortCompareFunction) -- table.insert(tableOut, {name = "deleted maps", resname = "deleted maps", maps = {}}) -- local countGmodes = countGmodes + 1 -- tableOut[countGmodes]["maps"] = deletedMaps end local map = call(getResourceFromName("mapmanager"), "getRunningGamemodeMap") local gamemode = call(getResourceFromName("mapmanager"), "getRunningGamemode") gamemode = gamemode and getResourceName(gamemode) or "N/A" map = map and getResourceName(map) or "N/A" triggerClientEvent(source ,"loadMaps", source, tableOut, gamemode, map) end function sortCompareFunction(s1, s2) if type(s1) == "table" and type(s2) == "table" then s1, s2 = s1.name, s2.name end s1, s2 = s1:lower(), s2:lower() if s1 == s2 then return false end local byte1, byte2 = string.byte(s1:sub(1,1)), string.byte(s2:sub(1,1)) if not byte1 then return true elseif not byte2 then return false elseif byte1 < byte2 then return true elseif byte1 == byte2 then return sortCompareFunction(s1:sub(2), s2:sub(2)) else return false end end addEvent("getMaps", true) addEventHandler("getMaps", g_Root, getMaps) -- END GET SERVER MAPS But then it didnt show the maps but the map search worked Link to comment
Moderators Citizen Posted March 8, 2011 Moderators Share Posted March 8, 2011 The table is "tableOut" in the server-side Solidsnake ^^ I will see your system later SoundWave 'cause I'm not at home. Link to comment
SoundWave Posted March 10, 2011 Author Share Posted March 10, 2011 dont need help any more i fixed it Link to comment
Castillo Posted March 10, 2011 Share Posted March 10, 2011 Well, i had it done by my own way (less code) working, didn't wanted to post it because i wanted to leave you to fix it yourself. 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