Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2015-08-12, 20:06


sebik2303

Mapper :)






Wiek: 25
Na forum: 4301 dni
Posty: 298
Nick w MP: sebik2303

Piwa: 899

Respekt: 55,3

Witam, mam pytanie dlaczego mi ten skrypt zapisuje wszystko na nick, nie na has?o ?


local polaczenie = dbConnect ( "sqlite", "db.db" )

addEventHandler ( "onPlayerQuit", root, function ()
    if polaczenie then
        plr = source
        konto = getPlayerAccount ( plr )
        dbExec ( polaczenie, "CREATE TABLE IF NOT EXISTS OP_Players ( login VARCHAR, skin INTEGER, portfel INTEGER, interior INTEGER, dimension INTEGER, punkty INTEGER, posx FLOAT, posy FLOAT, posz FLOAT )" )
        local zapytanie = dbQuery ( polaczenie, "SELECT login FROM OP_Players WHERE login = ?", getPlayerName ( plr ) )
        local wynik = dbPoll ( zapytanie, -1 )
        dbFree ( zapytanie )
        local x,y,z = getElementPosition ( plr )
        local punkty = getAccountData ( konto, "punkty" ) or 0
        if #wynik == 0 then
            dbQuery ( polaczenie, "INSERT INTO OP_Players ( login, skin, portfel, interior, dimension, punkty, posx, posy, posz ) VALUES ( ?,?,?,?,?,?,?,?,? )", getPlayerName ( plr ), getElementModel ( plr ), getPlayerMoney ( plr ), getElementInterior ( plr ), getElementDimension ( plr ), punkty, x, y, z )
        elseif #wynik == 1 then
            dbQuery ( polaczenie, "UPDATE OP_Players SET skin = '?', portfel = '?', interior = '?', dimension = '?', punkty = '?', posx = '?', posy = '?', posz = '?' WHERE login = ?", getElementModel ( plr ), getPlayerMoney ( plr ), getElementInterior ( plr ), getElementDimension ( plr ), punkty, x, y, z, getPlayerName ( plr ) )
        end
    end
end)

addEventHandler ( "onPlayerLogin", root, function ( _, konto )
    if polaczenie then
        plr = source
        local zapis = dbQuery ( polaczenie, "SELECT * FROM OP_Players WHERE login = ?", getPlayerName ( plr ) )
        local result = dbPoll ( zapis, -1 )
        dbFree ( zapis )
        if #result == 0 then
            outputChatBox ( "Twoje dane nie zosta?y wczytane poniewa? nie znajduj? si? w bazie danych. Po wyj?ciu z serwera zostan? one wgrane", plr, 255, 255, 255 )
        return end
        for _,v in ipairs ( result ) do
            setElementPosition ( plr, v.posx, v.posy, v.posz )
            setPlayerMoney ( plr, v.portfel )
            setElementInterior ( plr, v.interior )
            setElementDimension ( plr, v.dimension )
            setElementModel ( plr, v.skin )
            setAccountData ( konto, "punkty", v.punkty )
        end
    end
end)


Za pomoc daje zimne tyskie :piwo: oraz trochu R*

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-08-12, 20:08


#404







Wiek: 27
Na forum: 4913 dni
Posty: 1438

Piwa: 2512

Respekt: 833,5
Respekt: 833,5Respekt: 833,5

Ostrzeżeń: 60%

local zapytanie = dbQuery ( polaczenie, "SELECT login FROM OP_Players WHERE login = ?", getPlayerName ( plr ) )

dbQuery ( polaczenie, "INSERT INTO OP_Players ( login, skin, portfel, interior, dimension, punkty, posx, posy, posz ) VALUES ( ?,?,?,?,?,?,?,?,? )", getPlayerName ( plr ), getElementModel ( plr ), getPlayerMoney ( plr ), getElementInterior ( plr ), getElementDimension ( plr ), punkty, x, y, z )

dbQuery ( polaczenie, "UPDATE OP_Players SET skin = '?', portfel = '?', interior = '?', dimension = '?', punkty = '?', posx = '?', posy = '?', posz = '?' WHERE login = ?", getElementModel ( plr ), getPlayerMoney ( plr ), getElementInterior ( plr ), getElementDimension ( plr ), punkty, x, y, z, getPlayerName ( plr ) )

local zapis = dbQuery ( polaczenie, "SELECT * FROM OP_Players WHERE login = ?", getPlayerName ( plr ) )



Przyjrzyj si? temu getPlayerName :) Zamiast tego, powinna by? funkcja pobieraj?ca nazw? konta gracza ;)

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-08-12, 20:13


sebik2303

Mapper :)






Wiek: 25
Na forum: 4301 dni
Posty: 298
Nick w MP: sebik2303

Piwa: 899

Respekt: 55,3

DestroY, getAccountData ?

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-08-12, 20:15


#404







Wiek: 27
Na forum: 4913 dni
Posty: 1438

Piwa: 2512

Respekt: 833,5
Respekt: 833,5Respekt: 833,5

Ostrzeżeń: 60%
"sebik2303" napisał/a:

DestroY, getAccountData ?


Tym pobierasz jaki? zapis do konta...

U?yj

Więcej informacji znajdziesz w Wikipedii MTA:

getPlayerAccount

Aby pobra? konto gracza


Więcej informacji znajdziesz w Wikipedii MTA:

getAccountName

A tym pobierz nazw? konta gracza z konta, uzyskanego t? pierwsz? podan? funkcj?

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-08-12, 20:31


sebik2303

Mapper :)






Wiek: 25
Na forum: 4301 dni
Posty: 298
Nick w MP: sebik2303

Piwa: 899

Respekt: 55,3

DestroY, a pomo?esz bo sql i zapisy to czarna magia
:)

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-08-12, 20:34


#404







Wiek: 27
Na forum: 4913 dni
Posty: 1438

Piwa: 2512

Respekt: 833,5
Respekt: 833,5Respekt: 833,5

Ostrzeżeń: 60%
Po prostu w miejsca getPlayerName ( plr ) musisz doda? nazw? konta gracza, kt?r? to pobierzesz za pomoc? podanych wy?ej funkcji.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-08-12, 23:11


sebik2303

Mapper :)






Wiek: 25
Na forum: 4301 dni
Posty: 298
Nick w MP: sebik2303

Piwa: 899

Respekt: 55,3

jutro pokombinuje jak co? napisze ;)

Postaw piwo autorowi tego posta
 

 
Tagi: dlaczego :: zapisuje :: nick :: nie :: login
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » LUA » dlaczego zapisuje na nick nie na login Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi

Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku