Guest
Public paste!

Untitled

By: a guest | Mar 21st, 2010 | Syntax: Lua | Size: 6.42 KB | Hits: 96 | Expires: Never
This paste has a previous version, view the difference. Copy text to clipboard
  1. local function showLoginScreen( player, callEvent )
  2.         -- remove the player from his vehicle if any
  3.         if isPedInVehicle( player ) then
  4.                 removePedFromVehicle( player )
  5.         end
  6.        
  7.         -- hide the current view (will be faded in client-side)
  8.         fadeCamera( player, false, 0 )
  9.         toggleAllControls( player, false, true, false )
  10.        
  11.         -- spawn the player etc.
  12.         spawnPlayer( source, 2000.6, 1577.6, 16.5 )
  13.         setPedFrozen( source, true )
  14.         setElementAlpha( source, 0 )
  15.        
  16.         setElementInterior( source, 0 )
  17.         setCameraInterior( source, 0 )
  18.         setElementDimension( source, 1 )
  19.        
  20.         setCameraMatrix( source, 1999.8, 1580.95, 17.6, 2000, 1580, 17.5 )
  21.        
  22.         if callEvent then
  23.                 triggerClientEvent( player, getResourceName( resource ) .. ":spawnscreen", player )
  24.         end
  25. end
  26.  
  27. addEvent( getResourceName( resource ) .. ":ready", true )
  28. addEventHandler( getResourceName( resource ) .. ":ready", root,
  29.         function( )
  30.                 if source == client then
  31.                         showLoginScreen( source, true )
  32.                 end
  33.         end
  34. )
  35.  
  36. addEvent( getResourceName( resource ) .. ":setToSpawnScreen", true )
  37. addEventHandler( getResourceName( resource ) .. ":setToSpawnScreen", root
  38.         function( )
  39.                 if source == client then
  40.                         showLoginScreen( source, false )
  41.                 end
  42.         end
  43. )
  44.  
  45. --
  46.  
  47. local p = { }
  48.  
  49. addEvent( getResourceName( resource ) .. ":login", true )
  50. addEventHandler( getResourceName( resource ) .. ":login", root,
  51.         function( username, password )
  52.                 if source == client then
  53.                         if username and password and #username > 0 and #password > 0 then
  54.                                 local info = exports.sql:query_assoc_single( "SELECT userID, banned, activationCode FROM wcf1_user WHERE `username` = '%s' AND password = SHA1(CONCAT(salt, SHA1(CONCAT(salt, SHA1('%s'))))) LIMIT 1", username, password )
  55.                                
  56.                                 p[ source ] = nil
  57.                                 if not info then
  58.                                         triggerClientEvent( source, getResourceName( resource ) .. ":loginResult", source, 1 ) -- Wrong username/password
  59.                                 else
  60.                                         if info.banned == 1 then
  61.                                                 triggerClientEvent( source, getResourceName( resource ) .. ":loginResult", source, 2 ) -- Banned
  62.                                         elseif info.activationCode > 0 then
  63.                                                 triggerClientEvent( source, getResourceName( resource ) .. ":loginResult", source, 3 ) -- Requires activation
  64.                                         else
  65.                                                 -- check if another user is logged in on that account
  66.                                                 for player, data in pairs( p ) do
  67.                                                         if data.userID == info.userID then
  68.                                                                 triggerClientEvent( source, getResourceName( resource ) .. ":loginResult", source, 5 ) -- another player with that account found
  69.                                                                 return
  70.                                                         end
  71.                                                 end
  72.                                                 p[ source ] = { userID = info.userID, username = username }
  73.                                                
  74.                                                 local chars = exports.sql:query_assoc( "SELECT characterID, characterName, skin FROM characters WHERE userID = " .. info.userID )
  75.                                                 triggerClientEvent( source, getResourceName( resource ) .. ":characters", source, chars, true )
  76.                                                 -- login successful, do something!
  77.                                         end
  78.                                 end
  79.                         end
  80.                 end
  81.         end
  82. )
  83.  
  84. local function savePlayer( player )
  85.         if not player then
  86.                 for key, value in ipairs( getElementsByType( "player" ) ) do
  87.                         savePlayer( value )
  88.                 end
  89.         else
  90.                 if isLoggedIn( source ) then
  91.                         -- save character since it's logged in
  92.                         local x, y, z = getElementPosition( source )
  93.                         exports.sql:query_free( "UPDATE characters SET x = " .. x .. ", y = " .. y .. ", z = " .. z .. ", dimension = " .. getElementDimension( source ) .. ", interior = " .. getElementInterior( source ) .. ", rotation = " .. getPedRotation( source ) .. ", health = " .. math.ceil( getElementHealth( source ) ) .. ", armor = " .. math.ceil( getPedArmor( source ) ) .. " WHERE characterID = " .. tonumber( p[ source ].charID ) )
  94.                 end
  95.         end
  96. end
  97. setTimer( savePlayer, 300000, 0 ) -- Auto-Save every five minutes
  98. addEventHandler( "onResourceStop", resourceRoot, function( ) savePlayer( ) end )
  99.  
  100. addEvent( getResourceName( resource ) .. ":logout", true )
  101. addEventHandler( getResourceName( resource ) .. ":logout", root,
  102.         function( )
  103.                 if source == client then
  104.                         savePlayer( source )
  105.                         p[ source ] = nil
  106.                         showLoginScreen( source )
  107.                 end
  108.         end
  109. )
  110.  
  111. addEventHandler( "onPlayerQuit", root,
  112.         function( )
  113.                 savePlayer( source )
  114.                 p[ source ] = nil
  115.         end
  116. )
  117.  
  118. addEvent( getResourceName( resource ) .. ":spawn", true )
  119. addEventHandler( getResourceName( resource ) .. ":spawn", root,
  120.         function( charID )
  121.                 if source == client then
  122.                         local userID = p[ source ] and p[ source ].userID
  123.                         if tonumber( userID ) and tonumber( charID ) then
  124.                                 -- if the player is logged in, save him
  125.                                 savePlayer( source )
  126.                                 p[ source ].charID = nil
  127.                                
  128.                                 --
  129.                                 local char = exports.sql:query_assoc_single( "SELECT characterName, x, y, z, dimension, interior, skin, rotation, health, armor FROM characters WHERE userID = " .. tonumber( userID ) .. " AND characterID = " .. tonumber( charID ) )
  130.                                 if char then
  131.                                         local mtaCharName = char.characterName:gsub( " ", "_" )
  132.                                         local otherPlayer = getPlayerFromName( mtaCharName )
  133.                                         if otherPlayer and otherPlayer ~= source then
  134.                                                 kickPlayer( otherPlayer )
  135.                                         end
  136.                                         p[ source ].charID = nil
  137.                                         setPlayerName( source, mtaCharName )
  138.                                         setPlayerNametagText( source, "[" .. getID( source ) .. "] " .. char.characterName )
  139.                                        
  140.                                         -- spawn the player, as it's a valid char
  141.                                         spawnPlayer( source, char.x, char.y, char.z, char.rotation, char.skin, char.interior, char.dimension )
  142.                                         fadeCamera( source, true )
  143.                                         setCameraTarget( source, source )
  144.                                         setCameraInterior( source, char.interior )
  145.                                        
  146.                                         toggleAllControls( source, true, true, false )
  147.                                         setPedFrozen( source, false )
  148.                                         setElementAlpha( source, 255 )
  149.                                        
  150.                                         setElementHealth( source, char.health )
  151.                                         setPedArmor( source, char.armor )
  152.                                        
  153.                                         p[ source ].charID = tonumber( charID )
  154.                                        
  155.                                         triggerClientEvent( source, getResourceName( resource ) .. ":onSpawn", source )
  156.                                 end
  157.                         end
  158.                 end
  159.         end
  160. )
  161.  
  162. addEventHandler( "onPlayerWasted", root,
  163.         function( )
  164.                 if isLoggedIn( source ) then
  165.                         local x, y, z = getElementPosition( source )
  166.                         spawnPlayer( source, x, y, z, getPedRotation( source ), getElementModel( source ), getElementInterior( source ), getElementDimension( source ) )
  167.                         fadeCamera( source, true )
  168.                         setCameraTarget( source, source )
  169.                         setCameraInterior( source, getElementInterior( source ) )
  170.                 end
  171.         end
  172. )
  173.  
  174. addEventHandler( "onPlayerChangeNick", root,
  175.         function( )
  176.                 if isLoggedIn( source ) then
  177.                         cancelEvent( )
  178.                 end
  179.         end
  180. )
  181.  
  182. -- exports
  183. function isLoggedIn( player )
  184.         return player and p[ player ] and p[ player ].charID
  185. end