Guten tag,
Da ich noch kein tutorial über ein login/register gefunden habe das auf der normalen accountdata läuft habe ich mich mal kurz dazu entschlossen eins zu schreieben.
Materialien:
-Notepad++
-guieditor
-MTA SA
Als aller erstes zeichnen wir unser gui mit dem guieditor, beachtet bitte das es ein login/register wird das heißt das ihr auch ein register tab/window zeichnen müsst. (Achtung: Es gibt in diesen tutorial keine einführung für den guieditor!!)
Wen ihr dies gemacht habt sieht das in etwa so aus
local screenW, screenH = guiGetScreenSize()
showCursor(true) --um die maus sichtbar zu machen
--Gui
window = guiCreateWindow((screenW - 420) / 2, (screenH - 211) / 2, 420, 211, "Login Register", false)
guiWindowSetSizable(window, false)
tabpanel = guiCreateTabPanel(9, 24, 401, 177, false, window)
--login
login = guiCreateTab("Login", tabpanel)
loginname = guiCreateLabel(6, 31, 54, 18, "Name:", false, login)
loginpassword = guiCreateLabel(6, 63, 54, 18, "Password:", false, login)
usernamelogin = guiCreateEdit(45, 29, 243, 24, "", false, login)
passwordlogin = guiCreateEdit(65, 59, 243, 24, "", false, login)
loginbtn = guiCreateButton(316, 111, 75, 32, "Login", false, login)
guiSetProperty(loginbtn, "NormalTextColour", "FFAAAAAA")
--register
register = guiCreateTab("Register", tabpanel)
registername = guiCreateLabel(6, 31, 54, 18, "Name:", false, register)
registerpassword = guiCreateLabel(6, 63, 54, 18, "Password:", false, register)
usernameregister = guiCreateEdit(45, 29, 243, 24, "", false, register)
passwordregister = guiCreateEdit(65, 59, 243, 24, "", false, register)
registerbtn = guiCreateButton(316, 111, 75, 32, "Register", false, register)
guiSetProperty(loginbtn, "NormalTextColour", "FFAAAAAA")
Alles anzeigen
Dann fangen wir doch mal mit der Login funktion an (client)
--Wir erstellen eine funktion mit dem event onClientGUIClick
function onLoginClick()
if source == loginbtn then --hir fragen wir den button(Knopf) ab
local username = guiGetText(usernamelogin) --dann erstellen wir eine variable um den text aus den edits zu bekommen
local password = guiGetText(passwordlogin) --das gleiche machen wir mit dem password
triggerServerEvent("onLogin",getLocalPlayer(),username,password) --jetzt triggern wir den username und das password zum server
end --hir benden wir die abfrage
end -- bendung der funktion
addEventHandler("onClientGUIClick", loginbtn, onLoginClick) --Das event
Dann kommen wir zur serverseitigen funktion für die login funktion (server)
function onLogin(username,password) --die login fukntion, mit den args die getriggert werden
if not (username == "") then --Dies ist die abfrage um zu checken ob der user einen usernamen eingegeben hat
if not (password == "") then --Dies ist die abfrage um zu checken ob der user einen password eingegeben hat
local account = getAccount ( username, password ) --die variable um die verbindung zum account aufzubauen
if ( account ~= false ) then --die abfrage um zu schauen ob der account mit den entsprächenden daten existiert
logIn(source, account, password) --hir loggen wir den spieler in den account ein
outputChatBox("Du hast dich erfolgreich eingeloggt!",source, 255, 255, 255, true) --Eine nachricht wen der user sich eingeloggt hat
triggerClientEvent("onCloseWindow",getRootElement()) --hir triggern wir nochmal zum client zurück um das window zu schließen
else
outputChatBox("[Info]Bitte überprüfe deine angaben!",source, 255, 255, 255, true) --fals die angaben falsch sind oder der account nicht vorhanden ist
end
else
outputChatBox("[Info]Bitte trage ein password ein!",source, 255, 255, 255, true) --fals er keins eingetragen hat eine error nachricht
end
else
outputChatBox("[Info]Bitte trage einen usernamen ein!",source, 255, 255, 255, true) --fals er keinen eingetragen hat eine error nachricht
end
end
addEvent("onLogin",true) --das event zum triggern
addEventHandler("onLogin", getRootElement(), onLogin) --der eventhandler zum triggern
Alles anzeigen
Nun schreiben wir die clientseitige register funktion (client)
--Wir erstellen eine funktion mit dem event onClientGUIClick
function onRegisterClick()
if source == registerbtn then --hir fragen wir den button(Knopf) ab
local username = guiGetText(usernameregister) --dann erstellen wir eine variable um den text aus den edits zu bekommen
local password = guiGetText(passwordregister) --das gleiche machen wir mit dem password
triggerServerEvent("onRegister",getLocalPlayer(),username,password) --jetzt triggern wir den username und das password zum server
end --hir benden wir die abfrage
end -- bendung der funktion
addEventHandler("onClientGUIClick", registerbtn, onRegisterClick) --Das event
Danach die serverseitige reigster funktion
function onRegister(username,password) --die register funktion mit den getriggerten args
if not (username == "") then --Dies ist die abfrage um zu checken ob der user einen usernamen eingegeben hat
if not (password == "") then --Dies ist die abfrage um zu checken ob der user einen password eingegeben hat
local account = getAccount (username,password) --eine variable um eine verbindung mit den accounts herzustellen
if (account == false) then --eine abfrage um herauszufinden ob der account schon existiert
local addacc = addAccount(tostring(username),tostring(password)) --Eine variable um den account zu erstellen
if (addacc) then --Eine abfrage um herauszufinden ob der account erstellt wurde
outputChatBox("Du hast dir erfolgreich einen account erstellt!",source, 255, 255, 255, true) --eine chat nachricht wen der spieler den account erfolgreich erstellt hat
triggerClientEvent("onCloseWindow",getRootElement()) --hir triggern wir nochmal zum client zurück um das window zu schließen
logIn(source, getAccount (username,password), password) --hir loggen wir den spieler in den account ein
end
else
outputChatBox("[Info]Ein Account mit diesen Namen existiert bereits!",source, 255, 255, 255, true) --eine error nachricht wen der account bereits existiert
end
else
outputChatBox("[Info]Bitte trage ein password ein!",source, 255, 255, 255, true) --fals er keins eingetragen hat eine error nachricht
end
else
outputChatBox("[Info]Bitte trage einen usernamen ein!",source, 255, 255, 255, true) --fals er keinen eingetragen hat eine error nachricht
end
end
addEvent("onRegister",true) --das event zum triggern
addEventHandler("onRegister", getRootElement(), onRegister) --der eventhandler zum triggern
Alles anzeigen
Jetzt gehen wir noch mal in den client und schreiben die funktion um das window zu schließen
--Wir erstellen eine funktion mit den event zum triggern
function closewindow()
guiSetVisible(window,false) --um das login/register window verschwinden bzw nicht mehr sichtbar zu machen
showCursor(false) --um die maus nicht mehr sichtbar zu machen
end
addEvent("onCloseWindow",true) --das event
addEventHandler("onCloseWindow", getRootElement(), closewindow) --der eventhandler
Dann tragen wir die dateien noch in die meta ein und fügen die resource in die admin gruppe hinzu um auf die datenbank zugreifen zu können
<meta>
<info author="Jamie" type="script" />
<script src="client.lua" tpe="client" />
<script src="server.lua" type="server" />
</meta>
nun habt ihr ein login/register script, ich hoffe ich konnte euch helfen und das man mein tutorial verstehen kann,
bei fragen könnt ihr euch melden.
mfg.Jamie