Ergebnis 1 bis 2 von 2

Thema: Brauche Hilfe für mein Gamemode

  1. #1
    Avatar von Wolfie!
    Registriert seit
    13.08.2009
    Ort
    Graz, Austria

    Lightbulb Brauche Hilfe für mein Gamemode

    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
    Lua Code:
    1. ...
    2. 		RunConsoleCommand( "eng_ccsetname", CharacterMenu.NameEntry:GetValue() );
    3. 		RunConsoleCommand( "eng_ccsetage", CharacterMenu.AgeEntry:GetValue() );
    4. 		RunConsoleCommand( "eng_ccsetmodel", ChosenCharacterModel );
    5. 		RunConsoleCommand( "eng_ccsetstats", ClientVars["Strength"], ClientVars["Endurance"], ClientVars["Speed"], ClientVars["Aim"] );
    6. 		RunConsoleCommand( "eng_createcharacter", "" );
    7. 		ply:ChatPrint("Character Stuff set!");
    8.  
    9. 		--Begin of Saving Character Info to mySQL--
    10. 		mysql.Query(db, "UPDATE player_info SET name = "..CharacterMenu.NameEntry:GetValue().." WHERE unique_id = '"..unique_id.."'");
    11. 		mysql.Query(db, "UPDATE player_info SET age = "..CharacterMenu.AgeEntry:GetValue().." WHERE unique_id = '"..unique_id.."'");
    12. 		mysql.Query(db, "UPDATE player_info SET model = "..ChosenCharacterModel.." WHERE unique_id = '"..unique_id.."'");
    13. 		mysql.Query(db, "UPDATE player_info SET strengh = "..ClientVars["Strength"]..", endurance = "..ClientVars["Endurance"]..", speed = "..ClientVars["Speed"]..", aim = "..ClientVars["Aim"].." WHERE unique_id = '"..unique_id.."'");
    14. 		ply:ChatPrint("Character has been saved!");
    15. 		--End of Saving Character Info to mySQL--
    16.  
    17. 	end
    18.  
    19. 	--for k,v in pairs blabla start--
    20. 	local function ShowAllChar()
    21. 		for k, v in pairs( sql.Query("SELECT name, age, model, strengh, endurance, speed, aim, money FROM player_info WHERE unique_id = '"..SteamID.."'") ) do
    22. 			ply:ChatPrint("Character "..name.." has "..money.." Euros and is "..age.." old!");
    23. 			--Soon, I will change it to something else! This one is just for Test-Purpose xD
    24. 		end
    25. 	end
    26. 	ShowAllChar()
    27. 	--for k,v in pairs blabla end--
    28. ...

    ...und sql_database.lua
    Lua Code:
    1.  
    2. local function mysql_value_char ( ply )
    3. 	unique_id = mysql.Query("SELECT unique_id FROM player_info WHERE unique_id = '"..SteamID.."'");
    4. 	name = mysql.Query(db, "SELECT name FROM player_info WHERE unique_id = '"..SteamID.."'");
    5. 	age = mysql.Query(db, "SELECT age FROM player_info WHERE unique_id = '"..SteamID.."'");
    6. 	model = mysql.Query(db, "SELECT model FROM player_info WHERE unique_id = '"..SteamID.."'");
    7. 	strengh = mysql.Query(db, "SELECT strengh FROM player_info WHERE unique_id = '"..SteamID.."'");
    8. 	endurance = mysql.Query(db, "SELECT endurance FROM player_info WHERE unique_id = '"..SteamID.."'");
    9. 	speed = mysql.Query(db, "SELECT speed FROM player_info WHERE unique_id = '"..SteamID.."'");
    10. 	aim = mysql.Query(db, "SELECT aim FROM player_info WHERE unique_id = '"..SteamID.."'");
    11. 	money = mysql.Query(db, "SELECT money FROM player_info WHERE unique_id = '"..SteamID.."'");
    12. 	-------------------------------
    13. 	ply:SetNWString("unique_id", unique_id);
    14. 	ply:SetNWString("name", name);
    15. 	ply:SetNWInt("age", age);
    16. 	ply:SetNWString("model", model);
    17. 	ply:SetNWInt("strengh", strengh);
    18. 	ply:SetNWInt("endurance", endurance);
    19. 	ply:SetNWInt("speed", speed);
    20. 	ply:SetNWInt("aim", aim);
    21. 	ply:SetNWInt("money", money);
    22. 	-------------------------------
    23. 	Msg(""..unique_id.."");
    24. 	Msg(""..name.."");
    25. 	Msg(""..money.."");
    26. 	Msg(""..model.."");
    27. end
    28.  
    29. local function SaveStat ( ply )
    30. 	money = ply:GetNWInt("money");
    31. 	unique_id = ply:GetNWString("unique_id");
    32. 	name = ply:GetNWString("name");
    33. 	age = ply:GetNWInt("age");
    34. 	model = ply:GetNWString("model");
    35. 	strengh = ply:GetNWInt("strengh");
    36. 	endurance = ply:GetNWInt("endurance");
    37. 	speed = ply:GetNWInt("speed");
    38. 	aim = ply:GetNWInt("aim");
    39. 	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.."'");
    40. 	ply:ChatPrint("Your Character has been updated!");
    41. end
    42.  
    43. function player_exists( ply )
    44.  
    45. 	SteamID = ply:GetNWString("SteamID")
    46.  
    47. 	result = mysql.Query(db, "SELECT unique_id, money, name, age, model, strengh, endurance, speed, aim FROM player_info WHERE unique_id = '"..SteamID.."'");
    48. 	if (result) then
    49. 		mysql_value_char( ply );
    50. 	else
    51. 		ply:PrintChat("Player does not exist! Please create one though the Character Create window!");
    52. 	end
    53. end
    54.  
    55. function Initialize()
    56. 	tables_exist()
    57. end
    58.  
    59. function PlayerInitialSpawn( ply )
    60.  
    61. 	timer.Create("Steam_id_delay", 1, 1, function()
    62. 		SteamID = ply:SteamID();
    63. 		ply:SetNWString("SteamID", SteamID);
    64. 		timer.Create("SaveStat", 10, 0, function() saveStat( ply ) end);
    65. 		player_exists( ply );
    66. 	end)
    67.  
    68. end
    69.  
    70. hook.Add( "PlayerInitialSpawn", "PlayerInitialSpawn", PlayerInitialSpawn )
    71. 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.

  2. #2

    Standard AW: Brauche Hilfe für mein Gamemode

    Also,erstmal nen paar grundlegende Sachen zu der Server/Client Relation.

    Dein erstes Stück Code ist anscheinend Clientseitig, wieso benutzt du mysql.query dort?
    Ich denke mal nicht, dass jeder User ne Sql Datenbank bei sich installiert hat, bzw. das überhaupt deine Absicht ist dort zu speichern.

    Dann kommt hinzu, dass der Code komplett unoptimiert ist, zum einen da du kein Threaded Mysql verwendest, und dein Server im richtigen Betrieb damit für wahrscheinlich mehrere Sekunden komplett gestoppt wird.

    Zum anderen, wieso query'st du so often?
    Den ganzen Code könnte man locker auf 5 Query's reduzieren.
    Die ganzen Update/Select Blöcke könnte man zu jeweils einen Query zusammenfassen.

    Auch verwendest du unnötig viele NetworkedVars, was sehr viel lag produzieren wird, und auch damit jederman auch die Werte von anderen Spieler auslesen kann. ( Du willst nicht wissen was für Scripts ich deswegen schon alles für DarkRp gemacht habe )

    Erstmal das, aber eine wirkliche Lösung ich dir leider nicht liefern, da der Code aus obrigen gründen viel zu unübersichtlich ist, als das man auf die schnelle das mal eben gerade biegen könnte

    Bitte korrigiere doch mal die obrigen Fehler, danach kann man sich den Code wahrscheinlich besser anschauen.

  3. Folgende 2 Benutzer sagen Danke zu BennyG für den nützlichen Beitrag:


Ähnliche Themen

  1. Brauche Hilfe
    Von Zitrone™ im Forum GMod Allgemein
    Antworten: 4
    Letzter Beitrag: 28.09.2008, 19:54
  2. Hilfe für mein gamemode.
    Von commander2040 im Forum Lua
    Antworten: 13
    Letzter Beitrag: 04.07.2008, 18:56
  3. Brauche Hilfe!
    Von SuperGman im Forum Allgemeine Diskussionen
    Antworten: 9
    Letzter Beitrag: 16.04.2008, 14:12
  4. Mein Gmod läuft nicht flüssig? Brauche Hilfe
    Von Benny im Forum Hilfe & Support
    Antworten: 10
    Letzter Beitrag: 26.10.2007, 23:58
  5. Brauche mal hilfe
    Von Teddy545 im Forum Hilfe & Support
    Antworten: 3
    Letzter Beitrag: 03.03.2007, 19:27

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •