Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- exports.scoreboard:addScoreboardColumn( 'online time', root, 250, 'Online', 4 ) -- Online time is the element data
- local DB = dbConnect( "sqlite", "time.db" )
- addEventHandler("onResourceStart", resourceRoot,
- function ( ... )
- dbExec( DB, "CREATE TABLE IF NOT EXISTS online( playerACC, weeks,days, hours, minutes, seconds )")
- for i, player in ipairs( getElementsByType("player") ) do
- local accountN = getAccountName( getPlayerAccount( player ) )
- local getData = dbPoll( dbQuery( DB, "SELECT * FROM online WHERE playerACC=?", accountN), -1 )
- if ( #getData == 0 ) then
- setPlayerTime( player, 0, 0, 0, 0, 0 )
- else
- for i, data in ipairs( getData ) do
- local weeks = data.weeks or 0
- local days = data.days or 0
- local hours = data.hours or 0
- local minutes = data.minutes or 0
- local seconds = data.seconds or 0
- setPlayerTime( player, weeks ,days, hours, minutes, seconds )
- end
- end
- setTimer( updatePlayerTime, 1000, 0, player )
- end
- end)
- addEventHandler("onPlayerLogin", root,
- function ( ... )
- local accountN = getAccountName( getPlayerAccount( source ) )
- local getData = dbPoll( dbQuery( DB, "SELECT * FROM online WHERE playerACC=?", accountN), -1 )
- if ( #getData == 0 ) then
- setPlayerTime( source, 0, 0, 0, 0, 0 )
- else
- for i, data in ipairs( getData ) do
- local weeks = data.weeks or 0
- local days = data.days or 0
- local hours = data.hours or 0
- local minutes = data.minutes or 0
- local seconds = data.seconds or 0
- setPlayerTime( source, weeks ,days, hours, minutes, seconds )
- end
- end
- setTimer( updatePlayerTime, 1000, 0, source )
- end)
- function setPlayerTime( player, weeks ,days, hours, minutes, seconds )
- local accountN = getAccountName( getPlayerAccount( player ) )
- if ( accountN ) then
- local dbe = dbQuery( DB, "SELECT * FROM online WHERE playerACC=?", accountN)
- local result = dbPoll( dbe, -1 )
- local realTime = table.concat{ weeks.."w ",days.."d "..hours.."h ", minutes.."min.", seconds.."s " }
- --", seconds.."s "
- setElementData( player, "time", realTime )
- if ( #result == 0 ) then
- dbExec( DB, "INSERT INTO online( playerACC, weeks, days, hours, minutes, seconds ) VALUES( ?, ?, ?, ?, ?, ? ) ", accountN, tonumber( weeks ), tonumber( days ), tonumber( hours ), tonumber( minutes ), tonumber( seconds ) )
- else
- dbExec( DB, "UPDATE online SET playerACC=?, weeks=?, days=?, hours=?, minutes=?, seconds=?", accountN, tonumber( weeks ), tonumber( days ), tonumber( hours ), tonumber( minutes ), tonumber( seconds) )
- end
- end
- end
- function updatePlayerTime( player )
- local accountN = getAccountName( getPlayerAccount( player ) )
- if ( accountN ) then
- local getData = dbPoll( dbQuery( DB, "SELECT * FROM online WHERE playerACC=?", accountN), -1 )
- if ( getData ) then
- for index, data in ipairs( getData ) do
- data.seconds = data.seconds + 1
- if ( data.seconds == 60 ) then
- data.minutes = data.minutes + 1
- data.seconds = 0
- elseif ( data.minutes == 60 ) then
- data.hours = data.hours + 1
- data.minutes = 0
- elseif ( data.hours == 24 ) then
- data.days = data.days + 1
- data.hours = 0
- elseif ( data.days == 7 ) then
- data.weeks = data.weeks + 1
- data.days = 0
- end
- setPlayerTime( player, data.weeks, data.days, data.hours, data.minutes, data.seconds )
- end
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement