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

Wysłany: 2017-12-23, 23:24


MassUUUU

Primary MTA






Wiek: 24
Na forum: 3916 dni
Posty: 123
Nick w MP: CooqieEZ

Piwa: 5093

Respekt: 28,3

Cze??, na serwer mo?e zalogowa? si? jedna osoba, ale druga ju? ni uja. Wtedy pojawia si? co? takiego:
logowanie/s.lua:52: attempt to call global 'getTimestamp' (a nil value)


Dobra, teraz wrzuc? kodzik:


    local haslo2 = false
local haslo3 = false


addEvent("domy", true)
addEventHandler("domy", root, function()
    local result = false
    if getElementData(source, "organizacja") then
        result = exports.mysql:wykonaj("SELECT * FROM domy WHERE (nwlasciciel=? OR organizacja=?)", getPlayerName(source), getElementData(source, "organizacja"))
    else
        result = exports.mysql:wykonaj("SELECT * FROM domy WHERE nwlasciciel=?", getPlayerName(source))
    end
    if #result > 0 then
        triggerClientEvent(source, "domy", source, result)
    end
end)

addEvent("sprawdz:pozycje", true)
addEventHandler("sprawdz:pozycje", root, function()
    local result = exports.mysql:wykonaj("SELECT * FROM konta WHERE dbid=?", getElementData(source, "dbid"))
    if #result > 0 and result[1].pos:len() > 1 then
        local pozycja = split(result[1].pos, ",")
        triggerClientEvent("sprawdz:pozycje", source, pozycja[1], pozycja[2], pozycja[3])
    else
        triggerClientEvent("sprawdz:pozycje", source, 1721.72, -1695.66, 13.50)
    end
end)

addEvent("zaloguj", true)
addEventHandler("zaloguj", root, function(login, haslo)
    haslo = escapeStrings(haslo)
    login = escapeStrings(login)
    haslo2 = haslo
    local haslo = base64Encode(haslo)
    local spr = exports.mysql:wykonaj("SELECT * FROM konta WHERE login=? AND haslo=?", login, haslo)
    if #spr > 1 then
        triggerClientEvent(client, "zmienPowiadomienie", client, "Dane s? nieprawid?owe b?d? takie konto nie istnieje.")
    return
    end
    if #spr < 1 then
        triggerClientEvent(client, "zmienPowiadomienie", client, "Dane s? nieprawid?owe b?d? takie konto nie istnieje.")
    return
    end
    for _, p in ipairs(getElementsByType("player")) do
    if getElementData(p, "dbid") == spr[1].dbid then
    timestamp = getTimestamp()
    czas = timestamp + 14*86400
    time = getRealTime(czas)
    data = (time.year+1900).."-"..(time.month+1).."-"..(time.monthday).." "..(time.hour+1)..":"..(time.minute)..":"..(time.second)
    exports.mysql:wykonaj("INSERT INTO bany SET nick=?, serial=?, ip=?, data=?, admin=?, tresc=?", getPlayerName(client),getPlayerSerial(client),getPlayerIP(client),data,'SYSTEM','Wyja?nij co? na forum')
        kickPlayer(client, "Zaloguj si? ponownie.")
    return
    end
    end
    local konto = getAccount(login, haslo2)
    if konto then
        logIn(client, konto, haslo2)
    end
    triggerClientEvent(client, "usunElementyLogowania", root)
    wczytajDane(client, login)
end)

addEvent("zarejestruj", true)
addEventHandler("zarejestruj", root, function(login, haslo, email)
    haslo = escapeStrings(haslo)
    login = escapeStrings(login)
    local sprxd = exports.mysql:wykonaj("SELECT * FROM konta WHERE serial=?", getPlayerSerial(client))
    if sprxd and #sprxd >= 2 then
           triggerClientEvent(client, "zmienPowiadomienie", client, "Na twoim serialu zarejestrowano ju? maksymaln? liczb? kont (2).")
        return 
    end
    haslo3 = haslo
    local haslo = base64Encode(haslo)
    local spr = exports.mysql:wykonaj("SELECT * FROM konta WHERE login=?", login)
    if #spr > 0 then
        triggerClientEvent(client, "zmienPowiadomienie", client, "Konto o takim loginie ju? istnieje.")
    return
    end
    local wyk = exports.mysql:wykonaj("INSERT INTO konta SET login=?, haslo=?, email=?, serial=?, rejestracja=NOW()", login, haslo, email, getPlayerSerial(client))
    if wyk then
        addAccount(login, haslo2)
        local konto = getAccount(login, haslo2)
        if konto then
            logIn(client, konto, haslo2)
        end
        triggerClientEvent(client, "usunElementyLogowania", root, true)
        wczytajDane(client, login)
    end
end)

addEvent("spawn", true)
addEventHandler("spawn", root, function(l, x, y, z)
    if not l then return end
    if l ~= true then
        if l == "spawn" then
            spawnPlayer(client, -2671.75, -5.04, 6.13, 0, getElementData(client, "skin"), 0)
        elseif l == "angelpine" then
            spawnPlayer(client, -2108.19, -2448.56, 30.62, 0, getElementData(client, "skin"), 0)
        elseif l == "urzad" then
            spawnPlayer(client, -2713.565, 127.12, 4.33, 0, getElementData(client, "skin"), 0)
    --[[elseif l == "pos" then
            local spr = exports.mysql:wykonaj("SELECT * FROM konta WHERE dbid=?", getElementData(client, "dbid"))
            if spr[1].pos:len() > 1 then
                local pozycja = split(spr[1].pos, ",")
                local x, y, z = pozycja[1], pozycja[2], pozycja[3]
                spawnPlayer(client, x, y, z, 0, getElementData(client, "skin"), 0)
            else
                spawnPlayer(client, 1721.72, -1695.66, 13.50, 0, getElementData(client, "skin"), 0)
            end]]
        end
    else
        spawnPlayer(client, x, y, z, 0, getElementData(client, "skin"), 0)
    end
    setElementData(client, "zalogowany", true)
    setCameraTarget(client, client)
    toggleControl(client, "fire", false)
    toggleControl(client, "aim_weapon", false)
end)

function wczytajDane(p, l)
    if not p and not l then return end
    local spr = exports.mysql:wykonaj("SELECT * FROM konta WHERE login=?", l)
    setPlayerName(p, spr[1].login)
    setElementData(p, "dbid", spr[1].dbid)
    setElementData(p, "pieniadze", spr[1].kasa)
    setElementData(p,'grosze',spr[1].grosze)
    setElementData(p, "punkty", spr[1].punkty)
    setElementData(p, "bkasa", spr[1].bkasa)
    setElementData(p, "online", spr[1].online)
    setElementData(p, "rejestracja", spr[1].rejestracja)
    setElementData(p, "prawko_a", spr[1].prawko_a)
    setElementData(p, "prawko_b", spr[1].prawko_b)
    if spr[1].urzedowka ~= "" then
        setElementData(p, "urzedowka", spr[1].urzedowka)
    end
    setElementData(p, "prawko_c", spr[1].prawko_c)
    setElementData(p, "skin", spr[1].skin)
    local q = exports.mysql:wykonaj("SELECT * FROM organizacje WHERE id=?", spr[1].org)
    if #q > 0 then
        setElementData(p, "organizacja", q[1].nazwa)
        setElementData(p, "oranga", spr[1].oranga)
        setElementData(p, "org", spr[1].org)
      else
        setElementData(p, "organizacja", false)
        setElementData(p, "oranga", false)
        setElementData(p, "org", false)
       end
       if spr[1].premium == "0000-00-00" then return end
       if spr[1].premium > data() then
        setElementData(p, "premium", true)
        setElementData(p, "premium:date", spr[1].premium)
        setPlayerNametagColor(p, 255, 255, 0)
    else
        setElementData(p, "premium", false)
        setPlayerNametagColor(p, 255, 255, 255)
        exports.mysql:wykonaj("UPDATE konta SET premium=? WHERE dbid=?", "0000-00-00", spr[1].dbid)
    end
end

addEventHandler("onPlayerQuit", root, function()
    if getElementData(source, "dbid") then
        local kasa = getElementData(source, "pieniadze")
        local grosze = getElementData(source, "grosze")
        local online = tonumber(getElementData(source, "online"))
        local dbid = getElementData(source, "dbid")
        local pkt = getElementData(source, "punkty")
        local skin = getElementData(source, "skin")
        local x, y, z = getElementPosition(source)
        local pos = x..", "..y..", "..z
        local wyk = exports.mysql:wykonaj("UPDATE konta SET kasa=?, grosze=?, online=?, punkty=?, skin=?, pos=? WHERE dbid=?", kasa, grosze, online, pkt, skin, pos, dbid)
        if not wyk then
            outputDebugString("Nie udalo sie zapisac gracza o dbid "..dbid)
        end
    end
end)

function data()
    local t = getRealTime()
    local r = t.year
    local m = t.month
    local t = t.monthday
    r = r+1900
    m = m+1
    local time = getRealTime()
    local hours = time.hour
    local minutes = time.minute
    local c = hours..":"..minutes
    return r.."-"..m.."-"..t.." "..c
end

addEvent("sprawdzBana", true)
addEventHandler("sprawdzBana", root, function()
    local g = source
    local serial = getPlayerSerial(g)
    local spr = exports.mysql:wykonaj("SELECT * FROM bany WHERE serial=? AND data>NOW()", serial)
    if #spr > 0 then
        triggerClientEvent(g, "oknoZbanowany", root, g, spr[1].ip, spr[1].serial, spr[1].data, spr[1].admin, spr[1].nick)
        triggerClientEvent(g, "bShowedLogin", root)
    else
        exports.mysql:wykonaj("DELETE FROM bany WHERE serial=?", serial)
    end
end)

addEvent("banWyrzuc", true)
addEventHandler("banWyrzuc", root, function()
    kickPlayer(source, "Tw?j serial zosta? zablokowany na tym serwerze.")
end)

function escapeStrings(str)
 local String = string.gsub(tostring(str),"'","")
 String = string.gsub(String,'"',"")
 String = string.gsub(String,';',"")
 String = string.gsub(String,"\","")
 String = string.gsub(String,"/*","")
 String = string.gsub(String,"*/","")
 String = string.gsub(String,"'","")
 String = string.gsub(String,"`","")
 return String
end


Ostatnio zmieniony przez MassUUUU 2017-12-24, 00:08, w całości zmieniany 1 raz  
Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-12-23, 23:33


marcin778

Krytyk serwerów MTA






Wiek: 24
Na forum: 4291 dni
Posty: 2268
Nick w MP: Marcineg

Piwa: 4661

Respekt: 1436,8
Respekt: 1436,8


Więcej informacji znajdziesz w Wikipedii MTA:

getTimestamp





function isLeapYear(year)
    if year then year = math.floor(year)
    else year = getRealTime().year + 1900 end
    return ((year % 4 == 0 and year % 100 ~= 0) or year % 400 == 0)
end

function getTimestamp(year, month, day, hour, minute, second)
    -- initiate variables
    local monthseconds = { 2678400, 2419200, 2678400, 2592000, 2678400, 2592000, 2678400, 2678400, 2592000, 2678400, 2592000, 2678400 }
    local timestamp = 0
    local datetime = getRealTime()
    year, month, day = year or datetime.year + 1900, month or datetime.month + 1, day or datetime.monthday
    hour, minute, second = hour or datetime.hour, minute or datetime.minute, second or datetime.second
    
    -- calculate timestamp
    for i=1970, year-1 do timestamp = timestamp + (isLeapYear(i) and 31622400 or 31536000) end
    for i=1, month-1 do timestamp = timestamp + ((isLeapYear(year) and i == 2) and 2505600 or monthseconds[i]) end
    timestamp = timestamp + 86400 * (day - 1) + 3600 * hour + 60 * minute + second
    
    timestamp = timestamp - 3600 --GMT+1 compensation
    if datetime.isdst then timestamp = timestamp - 3600 end
    
    return timestamp
end
Wrzu? to na g?r? kodu.

Podpis
Moje prace: https://www.youtube.com/c...MuaWGHPp1mhlGnw

-- obecnie
-- obecnie
-- dawniej
-- dawniej
-- dawniej
Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-12-24, 00:07


MassUUUU

Primary MTA






Wiek: 24
Na forum: 3916 dni
Posty: 123
Nick w MP: CooqieEZ

Piwa: 5093

Respekt: 28,3

marcin778, nope nie dzia?a. Zaktualizowa?em kod o ca?y kod S.lua

[ Dodano: 2017-12-24, 00:36 ]
do zamkni?cia - zapomnia?em wype?niania DBID od 1, 2, 3 etc doda? w sqlu.

Postaw piwo autorowi tego posta
 

 
Tagi: gettimestamp :: zmora :: logowania...
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » LUA 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