gokalpfirat Posted February 5, 2013 Share Posted February 5, 2013 exports.scoreboard:addScoreboardColumn('PlayTime') local t = { } addEventHandler( 'onResourceStart', resourceRoot, function( ) executeSQLQuery( 'CREATE TABLE IF NOT EXISTS SerialData ( serialPlayer TEXT, key STRING, value TEXT )' ) end ) aType = { [ 'number' ] = true ; [ 'string' ] = true ; } function setPlayerSerialData( player, key, value ) if not isElement( player ) then return end if type( key ) == 'string' and aType[ type( value ) ] then if getPlayerSerialData( player, key ) then executeSQLQuery( 'UPDATE SerialData SET serialPlayer = ?, key = ?, value = ?', getPlayerSerial( player ), key, value ) return true else executeSQLQuery( 'INSERT INTO SerialData( serialPlayer, key, value ) VALUES( ?, ?, ? )', getPlayerSerial( player ), key, value ) return true end end end function getPlayerSerialData( player, key ) if not isElement( player ) then return end if type( key ) == 'string' then result = executeSQLQuery( 'SELECT value FROM SerialData WHERE key = ? AND serialPlayer = ?', key, getPlayerSerial( player ) ) end if result and type( result ) == 'table' and #result > 0 then if result[ 1 ][ 'value' ] then return result[ 1 ][ 'value' ] else return false end end return false end function removePlayerSerialData( player, key ) if not isElement( player ) then return end if type( key ) == 'string' then if getPlayerSerialData( player, key ) then executeSQLQuery( 'DELETE FROM SerialData WHERE key = ? AND serialPlayer = ?', key, getPlayerSerial( player ) ) return true end end end function getAllPlayerSerialData( player ) if not isElement( player ) then return end if type( key ) == 'string' then aResult = executeSQLQuery( 'SELECT * FROM SerialData WHERE serialPlayer = ?', getPlayerSerial( player ) ) end if aResult and type( aResult ) == 'table' and #aResult > 0 then return aResult[ 1 ] else return false end return false end function checkValues( source,arg1,arg2) if (arg2 >= 60) then t[ source ][ 'min' ] = tonumber( t[ source ][ 'min' ] or 0 ) + 1 t[ source ][ 'sec' ] = 0 end if (arg1 >= 60) then t[ source ][ 'min' ] = 0 t[ source ][ 'hour' ] = tonumber( t[ source ][ 'hour' ] or 0 ) + 1 end return arg1, arg2 end setTimer( function( ) for _, v in pairs( getElementsByType( "player" ) ) do if (not t[ v ]) then t[ v ] = { ["hour"] = 0, ["min"] = 0, ["sec"] = 0 } end t[ v ][ 'sec' ] = tonumber( t[ v ][ 'sec' ] or 0 ) + 1 local min,sec = checkValues ( v, t[ v ][ 'min' ] or 0, t[ v ][ 'sec' ] or 0 ) local hour = tonumber( t[ v ][ 'hour' ] or 0 ) setElementData( v, "PlayTime", tostring( hour )..':'..tostring( min )..':'..tostring( sec ) ) end end, 1000, 0 ) function onPlayerQuit ( ) local sValue = getElementData( source,'PlayTime' ) local hour = tonumber( t[ source ][ 'hour' ] or 0 ) local min = tonumber( t[ source ][ 'min' ] or 0 ) local sec = tonumber( t[ source ][ 'sec' ] or 0 ) setPlayerSerialData (source, "PlayTime-hour", tostring(hour) ) setPlayerSerialData (source, "PlayTime-min", tostring(min) ) setPlayerSerialData (source, "PlayTime-sec", tostring(sec) ) setPlayerSerialData (source, "PlayTime", tostring(sValue) ) t[ source ] = nil end function onPlayerJoin ( ) if ( playeraccount ) then local time = getPlayerSerialData(source,"PlayTime") local hou = getPlayerSerialData(source,"PlayTime-hour") local min = getPlayerSerialData(source,"PlayTime-min") local sec = getPlayerSerialData(source,"PlayTime-sec") if ( time ) then setElementData ( source, "PlayTime", time ) t[ source ]["hour"] = tonumber(hou) t[ source ]["min"] = tonumber(min) t[ source ]["sec"] = tonumber(sec) else setElementData ( source, "PlayTime",0 ) setPlayerSerialData (source, "PlayTime", 0 ) end end end addEventHandler ( "onPlayerQuit", root, onPlayerQuit ) addEventHandler ( "onPlayerJoin", root, onPlayerJoin ) When i quit and join again it wont saves. Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now