• Is this possible?
    2 replies, posted
Hi guys! Well, I've just learned how to add mySQL syntax into my gamemode, but all what I get are just errors. Here is a part of the code what I've added: cl_charactercreate.lua [lua] ... RunConsoleCommand( "eng_ccsetname", CharacterMenu.NameEntry:GetValue() ); RunConsoleCommand( "eng_ccsetage", CharacterMenu.AgeEntry:GetValue() ); RunConsoleCommand( "eng_ccsetmodel", ChosenCharacterModel ); RunConsoleCommand( "eng_ccsetstats", ClientVars["Strength"], ClientVars["Endurance"], ClientVars["Speed"], ClientVars["Aim"] ); RunConsoleCommand( "eng_createcharacter", "" ); ply:ChatPrint("Character Stuff set!"); --Begin of Saving Character Info to mySQL-- mysql.Query(db, "UPDATE player_info SET name = "..CharacterMenu.NameEntry:GetValue().." WHERE unique_id = '"..unique_id.."'"); mysql.Query(db, "UPDATE player_info SET age = "..CharacterMenu.AgeEntry:GetValue().." WHERE unique_id = '"..unique_id.."'"); mysql.Query(db, "UPDATE player_info SET model = "..ChosenCharacterModel.." WHERE unique_id = '"..unique_id.."'"); mysql.Query(db, "UPDATE player_info SET strengh = "..ClientVars["Strength"]..", endurance = "..ClientVars["Endurance"]..", speed = "..ClientVars["Speed"]..", aim = "..ClientVars["Aim"].." WHERE unique_id = '"..unique_id.."'"); ply:ChatPrint("Character has been saved!"); --End of Saving Character Info to mySQL-- end --for k,v in pairs blabla start-- local function ShowAllChar() for k, v in pairs( sql.Query("SELECT name, age, model, strengh, endurance, speed, aim, money FROM player_info WHERE unique_id = '"..SteamID.."'") ) do ply:ChatPrint("Character "..name.." has "..money.." Euros and is "..age.." old!"); --Soon, I will change it to something else! This one is just for Test-Purpose xD end end ShowAllChar() --for k,v in pairs blabla end-- ... [/lua] ...and sql_database.lua [lua] local function mysql_value_char ( ply ) unique_id = mysql.Query("SELECT unique_id FROM player_info WHERE unique_id = '"..SteamID.."'"); name = mysql.Query(db, "SELECT name FROM player_info WHERE unique_id = '"..SteamID.."'"); age = mysql.Query(db, "SELECT age FROM player_info WHERE unique_id = '"..SteamID.."'"); model = mysql.Query(db, "SELECT model FROM player_info WHERE unique_id = '"..SteamID.."'"); strengh = mysql.Query(db, "SELECT strengh FROM player_info WHERE unique_id = '"..SteamID.."'"); endurance = mysql.Query(db, "SELECT endurance FROM player_info WHERE unique_id = '"..SteamID.."'"); speed = mysql.Query(db, "SELECT speed FROM player_info WHERE unique_id = '"..SteamID.."'"); aim = mysql.Query(db, "SELECT aim FROM player_info WHERE unique_id = '"..SteamID.."'"); money = mysql.Query(db, "SELECT money FROM player_info WHERE unique_id = '"..SteamID.."'"); ------------------------------- ply:SetNWString("unique_id", unique_id); ply:SetNWString("name", name); ply:SetNWInt("age", age); ply:SetNWString("model", model); ply:SetNWInt("strengh", strengh); ply:SetNWInt("endurance", endurance); ply:SetNWInt("speed", speed); ply:SetNWInt("aim", aim); ply:SetNWInt("money", money); ------------------------------- Msg(""..unique_id..""); Msg(""..name..""); Msg(""..money..""); Msg(""..model..""); end local function SaveStat ( ply ) money = ply:GetNWInt("money"); unique_id = ply:GetNWString("unique_id"); name = ply:GetNWString("name"); age = ply:GetNWInt("age"); model = ply:GetNWString("model"); strengh = ply:GetNWInt("strengh"); endurance = ply:GetNWInt("endurance"); speed = ply:GetNWInt("speed"); aim = ply:GetNWInt("aim"); mysql.Query(db, "UPDATE player_info SET money = "..money..", name = "..name..", age = "..age..", model = "..model..", strengh = "..strengh..", endurance = "..endurance..", speed = "..speed..", aim = "..aim.." WHERE unique_id = '"..unique_id.."'"); ply:ChatPrint("Your Character has been updated!"); end function player_exists( ply ) SteamID = ply:GetNWString("SteamID") result = mysql.Query(db, "SELECT unique_id, money, name, age, model, strengh, endurance, speed, aim FROM player_info WHERE unique_id = '"..SteamID.."'"); if (result) then mysql_value_char( ply ); else ply:PrintChat("Player does not exist! Please create one though the Character Create window!"); end end function Initialize() tables_exist() end function PlayerInitialSpawn( ply ) timer.Create("Steam_id_delay", 1, 1, function() SteamID = ply:SteamID(); ply:SetNWString("SteamID", SteamID); timer.Create("SaveStat", 10, 0, function() saveStat( ply ) end); player_exists( ply ); end) end hook.Add( "PlayerInitialSpawn", "PlayerInitialSpawn", PlayerInitialSpawn ) hook.Add( "Initialize", "Initialize", Initialize ) [/lua] So, here's the problem: I want that GMod saves my SteamID (and the player's one) into the mySQL database and it should be able to call it through "unique_id" and "SteamID". But I don't get my SteamID, but for that I get a nil value. So, do you maybe know what's the problem in my script? I would really thank you, when you want to help me. P. S.: Yes, it is the Rick's leaked version of TacoScript2. I am now adding some functions and mySQL stuff into it aka I want to finish it.
I dunno about MySQL, I used the convenient [url=http://wiki.garrysmod.com/?title=Sql]SQLite[/url] built-in to Gmod. Also, two other things: Instead of directly putting the SteamID string in, you need format the string for sql use using the [url=http://wiki.garrysmod.com/?title=Sql.SQLStr]sql.SQLStr[/url] function. Also, to retrieve a value use [url=http://wiki.garrysmod.com/?title=Sql.QueryValue]sql.QueryValue[/url] instead of just Query, along with tonumber or tostring to be safe; for example: [code]unique_id = tostring(sql.Query("SELECT unique_id FROM player_info WHERE unique_id = '"..sql.SQLStr(SteamID).."'"))[/code]
[QUOTE=Entoros;16745930]I dunno about MySQL, I used the convenient [url=http://wiki.garrysmod.com/?title=Sql]SQLite[/url] built-in to Gmod. Also, two other things: Instead of directly putting the SteamID string in, you need format the string for sql use using the [url=http://wiki.garrysmod.com/?title=Sql.SQLStr]sql.SQLStr[/url] function. Also, to retrieve a value use [url=http://wiki.garrysmod.com/?title=Sql.QueryValue]sql.QueryValue[/url] instead of just Query, along with tonumber or tostring to be safe; for example: [code]unique_id = tostring(sql.Query("SELECT unique_id FROM player_info WHERE unique_id = '"..sql.SQLStr(SteamID).."'"))[/code][/QUOTE] Well, maybe this will work... I'll gunna give it a try. Thanks for helping me out! [b]EDIT:[/b] And can I use also SQLite? Hell yeah!
Sorry, you need to Log In to post a reply to this thread.