Sziasztok!
Nem tudok belépni ezeket írja Console-ban:
https://p1.picsto.re/gNXqB.PNG
https://p1.picsto.re/UdRet.PNG
A file:
function playerRegister(player, username, password, password2)
local md5password = md5(password)
if(password~=password2)then
triggerClientEvent(\"info\",player,\"A felhasználónév túl rövid!\", \"red\")
return
end
if(string.len(username)<5)then
triggerClientEvent(\"info\",player,\"A felhasználónév túl rövid!\", \"red\")
return
end
if(string.len(password)<5)then
triggerClientEvent(\"info\", player, \"A jelszó túl rövid!\", \"red\")
return
end
serial = getPlayerSerial(player)
dbQuery(function(qh, player, username, md5password)
local a, b, c = dbPoll(qh, 0)
if b > 0 then
outputChatBox(\"Neked már van accountod\")
regisztalhat = false
return
end
end, {player,username,md5password}, mysql:getConnection(), (\"SELECT * FROM characters WHERE charactername=\'\" .. safecharname .. \"\' AND account=\'\" .. mysql:escape_string(id) .. \"\' AND cked = 0\")
dbQuery(function(qh, player, username, md5password)
local result, rows, errorMsg = dbPoll(qh, 0)
if not regisztalhat then return end
if rows > 0 then
exports.sg_box:addNotification(\"Ez a felhasználónév már foglalt!\",\"red\")
else
local _, id = mysql:query_free(\"INSERT INTO accounts SET serial = \'\".. serial ..\"\', username = \'\"..tostring(username)..\"\', password = \'\"..tostring(md5password)..\"\'\", true)
exports.sg_box:addNotification(\"Sikeresen regisztráltál!\",\"green\")
end
end, {player,username,md5password}, mysql:getConnection(), \"SELECT * FROM accounts WHERE username = ? LIMIT 1\", username)
end
addEvent(\"playerRegister\", true)
addEventHandler(\"playerRegister\", getRootElement(), playerRegister)
Előre is köszi a segítséget!
Hali,
A 26. sorba nem zártad be az egyik zárójelet, a második képről meg annyit ha triggelsz egy eventet a másik oldalra, akkor hozzá kell adni az eventet amit triggeltél pl.
Client side:
triggerServerEvent(\"asd\", source)
Server side:
addEvent(\"asd\", true)
addEventHandler(\"asd\", root, funkcio)
Először is köszönöm a választ!
Nem tudok rájönni, hogy hol nincsen lezárva a zárójel, próbálkoztam vele de akkor is hibákba ütköztem.
A server.luában benne van ez:
addEvent(\"playerLogin\", true)
addEventHandler(\"playerLogin\", getRootElement(), playerLogin)
a client.luában pedig ez:
triggerServerEvent(\"playerLogin\", getLocalPlayer(), getLocalPlayer(), guiGetText(user), guiGetText(pw))
, és továbbra is arra panaszkodik :(
Ez a kódsor úgy ahogy van kuka.
Nem is értem hogy miért szerver oldalon ellenőrzöd hogy a két jelszó egyezik-e, illetve hogy a felhasználónév tartalmaz-e minimum 5 karaktert.
A dbQuery rész is úgy ahogy van rossz, ha callback-et használsz a kód ugyan úgyfutni fog tovább, csak jelen esetben mivel egyedül teszteled nem lesz elváltozás. Ilyen esetekben közvetlenül a callback-be írd azt hogy mi fusson le akkor ha például a játékos még nem regisztrált, illetve a felhasználónevet és a serial ellenőrzés is megoldható egyetlen sql query-ben.
A másik, hogy az az id is amivel a játékos regisztrál rosszul van lekérdezve, mivel az az exportált \"query_free\" callback nélkül kéri le az értéket, így nagyobb lesz a szerver oldali cpu használat, erre az mta wiki is figyelmezetet. Ilyen esetben dbExec-el vidd be az adatot, majd dbQuery-vel kérdezd le az utoljára bevitt ID-t. (Ahogy látom, te nem csinálsz semmit az ID-vel szóval feleslegesen kérezed le, szóval a példában lévő dbQuery rész hanyagolható)
Példa:
dbExec(sql, \"INSERT INTO test SET a=1, b=2\")
dbQuery(function(qh)
local res,rows,err=dbPoll(qh,0)
if rows > 0 then
local id = res[1][\"id\"]
outputChatBox(id)
end
end, sql, \"SELECT id FROM test WHERE id = LAST_INSERT_ID()\")
Amúgy pedig a 24. sorodban ott egy ( szóval ne csodálkozz ha hiba üzenetet ír a debug.
Valamint, az mta adatbázis funkcióknál teljesen felesleges az escape string, mivel alapból megteszi helyetted ha jól írod meg a query-t.
Példa:
dbExec(sql, \"INSERT INTO test SET a=?,b=?\", 1, 2)