Wolfie!
16.08.2009, 21:08
Hallo GMod.de Community!
Naja, seit eine Woche lerne ich etwas über mySQL in GMod. Ist nicht sehr schwer, aber man muss was über mySQL wissen.
Weil ich schon fast ein Profi in Lua bin, habe ich mir mal Rick's geleakte Version von TacoScript 2 genommen. So, jetzt hab ich dieses Problem: Ich will, dass GMod meine SteamID her nimmt, dann soll es in meine Datenbank speichern und dann soll man meine SteamID unter "SteamID" und "unique_id" herholen. Naja, das klappt aber nicht.
Hier ist mal der Code:
cl_charactercreate.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--
...
...und sql_database.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 )
So, habt ihr vielleicht ne Ahnung wie man das Problem lösen kann? Ich werd glücklich, wenn ihr mir helfen könnt. :)
Naja, seit eine Woche lerne ich etwas über mySQL in GMod. Ist nicht sehr schwer, aber man muss was über mySQL wissen.
Weil ich schon fast ein Profi in Lua bin, habe ich mir mal Rick's geleakte Version von TacoScript 2 genommen. So, jetzt hab ich dieses Problem: Ich will, dass GMod meine SteamID her nimmt, dann soll es in meine Datenbank speichern und dann soll man meine SteamID unter "SteamID" und "unique_id" herholen. Naja, das klappt aber nicht.
Hier ist mal der Code:
cl_charactercreate.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--
...
...und sql_database.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 )
So, habt ihr vielleicht ne Ahnung wie man das Problem lösen kann? Ich werd glücklich, wenn ihr mir helfen könnt. :)