function LoginButton(Player, Username, Password) local Password = sha256(Password) local CheckUsernamePassword = mysql_query(Database,\"SELECT * FROM `accounts` WHERE `Username` = \'\"..Username..\"\' AND `Password` = \'\"..Password..\"\'\") if (mysql_num_rows (CheckUsernamePassword) > 0) then local Fetch = mysql_fetch_assoc(CheckUsernamePassword) outputChatBox(Fetch.Money) setPlayerMoney(Player, Fetch.Money) else outputChatBox(\"Rossz!\") end end addEvent(\"Login\", true) addEventHandler(\"Login\", resourceRoot, LoginButton) [/quote] Client oldal: function LoginButton(Player) Username = guiGetText(GUIEditor.edit[1]) Password = guiGetText(GUIEditor.edit[2]) triggerServerEvent (\"Login\", resourceRoot, Player, Username, Password, client) end [/quote] Hiba: Bad argument @ \'setPlayerMoney\' [Expected element at argument 1, got string \'left\'] [/quote]
function LoginButton(Player) Username = guiGetText(GUIEditor.edit[1]) Password = guiGetText(GUIEditor.edit[2]) triggerServerEvent (\"Login\", resourceRoot, Player, Username, Password, client) end [/quote] Hiba: Bad argument @ \'setPlayerMoney\' [Expected element at argument 1, got string \'left\'] [/quote]
Bad argument @ \'setPlayerMoney\' [Expected element at argument 1, got string \'left\'] [/quote]
Én saját titkosítási módszert használnék, de ez már a Te döntésed. A SHA256 nem a legbiztonságosabb, de még az egyszerű MD5-ök is feltörhetőek már. :/
Amikor átviszem server oldalról a client oldalra a \'Player\' - t, az Event segítségével akkor nem tudja, hogy kinek kell adni a pénzt.
@DrAkE nem minden esetben célszerű megoldás a client, például ha egy triggert le akarsz védeni a módosított mta kliensek elől akkor resoureRoot-al érdemes triggerelni, és szerveroldalon ha a client változó él akkor a scriptet megállítani, ezáltal nem fognak tudni semmit sem csinálni a módosított kliensekkel.
Módosított MTA klienssel fel se enged az alap MTA szerverekre. Másik meg: Warning: You should use the global variable client serverside instead of passing the localPlayer by parameter or source. Otherwise event faking (passing another player instead of the localPlayer) would be possible. More information at addEventHandler