KariiiM Posted August 24, 2015 Posted August 24, 2015 Hello guys, i have a small problem maybe you know how to handle it, i tried to convert the money number to string to shows it in the gridlist like that $1,000, it shows in the gridlist but when i try to buy something it returns with this Error, Error: attempt to compare nil with number the Error is in this line: guiGridListSetItemText (Grid, row, 2, convertNumber(v[2]), false, false) Here's the part of my code: client side: function convertNumber ( number ) local formatted = number while true do formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1,%2') if ( k==0 ) then break end end formatted = "$"..tostring(formatted) return formatted end addEvent("callGUI",true) addEventHandler("callGUI",root, function (Table) if not guiGetVisible(window) then guiSetVisible(window,true) showCursor(true) guiGridListClear(Grid) for i,v in ipairs (Table) do local weapName = getWeaponNameFromID (v[1]) local row = guiGridListAddRow (Grid) guiGridListSetItemText (Grid, row, 1, weapName, false, false) guiGridListSetItemText (Grid, row, 2, convertNumber(v[2]), false, false) guiGridListSetItemText (Grid, row, 3, v[3], false, false) end end end) addEventHandler ("onClientGUIClick", root, function () if (source == cancel) then guiSetVisible(window,false) showCursor(false) elseif (source == create) then local row,col = guiGridListGetSelectedItem(Grid) if row and col and row ~= -1 and col ~= -1 then guiSetVisible(window,false) showCursor(false) if (guiGridListGetSelectedItem (Grid)) then local Name = guiGridListGetItemText (Grid, guiGridListGetSelectedItem (Grid), 1) local ID = getWeaponIDFromName (Name) local Cost = guiGridListGetItemText (Grid, guiGridListGetSelectedItem (Grid), 2) local Ammount = guiGridListGetItemText (Grid, guiGridListGetSelectedItem (Grid), 3) triggerServerEvent ("buy", getLocalPlayer(), ID, Cost, Name, Ammount) end else outputChatBox("You didn't selecte the item.",255,0,0) end end end) --Server side: (Thetable) local Table = { {31,100,250},{30,100,250},{28,100,100},{32,100,100},{34,700,150},{33,400,100},{16,500,50} } function onMarkerHit(hitPlayer) if getElementType(hitPlayer) == "player" then triggerClientEvent(hitPlayer,"callGUI",hitPlayer,Table) end end addEvent ("buy", true) addEventHandler ("buy", getRootElement(), function(id, cost, name, ammo) local id = tonumber(id) local cost = tonumber(cost) local name = tostring(name) local ammo = tonumber(ammo) if (getPlayerMoney (source) >= cost) then Timer = setTimer(takePlayerMoney,22500,1,source,cost) triggerClientEvent("progress",source) TimerX = setTimer(giveWeapon,22500,1,source, id,ammo) setElementData(source, "name", name) setElementData(source, "ammo", ammo) else triggerClientEvent("remove",source) outputChatBox ("You need "..cost.."$ to buy"..name..".", source, 255, 0, 0, false) end end) Regards, KariM
KariiiM Posted August 24, 2015 Author Posted August 24, 2015 string.gsub already used, in the convertnumber function i think no need to do it two time function convertNumber ( number ) local formatted = number while true do formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1,%2') if ( k==0 ) then break end end formatted = "$"..tostring(formatted) return formatted end
Walid Posted August 24, 2015 Posted August 24, 2015 lol i mean you need to use string.gsub to remove the ($ and , ) before you buy something. Example: local text = "$5000" string.gsub(text,"$"," ")
KariiiM Posted August 24, 2015 Author Posted August 24, 2015 Now i have how to start, thanks i will try it out
JR10 Posted August 24, 2015 Posted August 24, 2015 You shouldn't check for money on the client-side, use the table to check for the price server-side.
KariiiM Posted August 24, 2015 Author Posted August 24, 2015 You shouldn't check for money on the client-side, use the table to check for the price server-side. I tried something like that but i failed, can you please give an example?
GTX Posted August 24, 2015 Posted August 24, 2015 money = tonumber(money:gsub("$", ""):gsub(",", ""))
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