i did something like that ill give you the code
Client.LUA
------------------------------------------
-- Dx Login Panel --
------------------------------------------
-- Developer: Braydon Davis (xXMADEXx) --
-- File: client.lua --
-- Copyright 2013 (C) Braydon Davis --
-- All rights reserved. --
------------------------------------------
local enableGuest = true;
local sx, sy = guiGetScreenSize ( )
local pX, pY = ( sx / 2 - 485 / 2 ), ( sy / 2 - 231 / 2 )
local username = guiCreateEdit(pX+156, pY+61, 288, 33, "", false)
guiSetVisible ( username, false )
local password = guiCreateEdit(pX+156, pY+121, 288, 33, "", false)
guiSetVisible ( password, false )
guiEditSetMasked(password, true)
local window = guiCreateWindow( ( sx / 2 - 266 / 2 ), ( sy / 2 - 208 / 2 ), 266, 208, "Login Panel Message", false)
guiWindowSetMovable(window, false)
guiWindowSetSizable(window, false)
guiSetVisible ( window, false )
guiSetAlpha ( window, 1 )
local exitBtn = guiCreateButton(155, 162, 101, 36, "Exit", false, window)
local infoLbl = guiCreateLabel(18, 26, 228, 130, "Message", false, window)
local isOpen = false;
local isLoggedin = false;
local data = {
login = {
hovering = false,
alphaMode = false,
loginTextAlpha = 235,
colors = { 255, 255, 255 }
},
reg = {
hovering = false,
alphaMode = false,
loginTextAlpha = 235,
colors = { 255, 255, 255 }
},
guest = {
hovering = false,
alphaMode = false,
loginTextAlpha = 235,
colors = { 255, 255, 255 }
}
}
function dxDrawLoginPanel( )
-- default: 350, 266
if ( isOpen ) then
dxDrawRectangle(pX, pY, 485, 231, tocolor(0, 0, 0, 180), false)
dxDrawText("Login", pX, pY, 870, 314, tocolor(255, 255, 255, 255), 1.50, "bankgothic", "center", "top", false, false, false, false, false)
dxDrawLine(pX, pY+48, pX+485, pY+48, tocolor(255, 255, 255, 255), 1, false)
dxDrawText("Username:", pX+10, pY+69, 506, 368, tocolor(255, 255, 255, 255), 0.80, "bankgothic", "left", "top", false, false, false, false, false)
dxDrawText("Password:", pX+10, pY+129, 506, 428, tocolor(255, 255, 255, 255), 0.80, "bankgothic", "left", "top", false, false, false, false, false)
dxDrawLine(pX+281, pY+168, pX+281, pY+168+34, tocolor(255, 255, 255, 255), 1, false)
local r, g, b = unpack ( data.login.colors )
dxDrawText("Login", pX+166, pY+167, 600, 468, tocolor( r, g, b, data.login.loginTextAlpha), 1.00, "bankgothic", "left", "top", false, false, false, false, false)
local r, g, b = unpack ( data.reg.colors )
dxDrawText("Register", pX+305, pY+167, 794, 468, tocolor(r, g, b, data.reg.loginTextAlpha), 1.00, "bankgothic", "left", "top", false, false, false, false, false)
if ( enableGuest ) then
local r, g, b = unpack ( data.guest.colors )
dxDrawText("Guest", pX+40, pY+167, 600, 468, tocolor( r, g, b, data.guest.loginTextAlpha), 1.00, "bankgothic", "left", "top", false, false, false, false, false)
dxDrawLine(pX+155, pY+168, pX+155, pY+168+34, tocolor(255, 255, 255, 255), 1, false)
end
-- give fade effect
if ( data.login.hovering ) then
data.login.colors = { 255, 140, 0 }
local alpha = data.login.loginTextAlpha
if ( not data.login.alphaMode ) then
data.login.loginTextAlpha = alpha - 5
if ( data.login.loginTextAlpha <= 50 ) then
data.login.alphaMode = true
end
else
data.login.loginTextAlpha = alpha + 5
if ( data.login.loginTextAlpha >= 235 ) then
data.login.alphaMode = false
end
end
elseif ( data.reg.hovering ) then
data.reg.colors = { 255, 140, 0 }
local alpha = data.reg.loginTextAlpha
if ( not data.reg.alphaMode ) then
data.reg.loginTextAlpha = alpha - 5
if ( data.reg.loginTextAlpha <= 50 ) then
data.reg.alphaMode = true
end
else
data.reg.loginTextAlpha = alpha + 5
if ( data.reg.loginTextAlpha >= 235 ) then
data.reg.alphaMode = false
end
end
elseif ( data.guest.hovering ) then
data.guest.colors = { 255, 140, 0 }
local alpha = data.guest.loginTextAlpha
if ( not data.guest.alphaMode ) then
data.guest.loginTextAlpha = alpha - 5
if ( data.guest.loginTextAlpha <= 50 ) then
data.guest.alphaMode = true
end
else
data.guest.loginTextAlpha = alpha + 5
if ( data.guest.loginTextAlpha >= 235 ) then
data.guest.alphaMode = false
end
end
else
data.login.loginTextAlpha = 235
data.guest.loginTextAlpha = 235
data.reg.loginTextAlpha = 235
data.login.colors = { 255, 255, 255 }
data.guest.colors = { 255, 255, 255 }
data.reg.colors = { 255, 255, 255 }
end
end
end
function cursorMove ( _, _, x, y )
if ( isCursorShowing ( ) and not guiGetVisible ( window ) and isOpen) then
if ( y >= pY+170 and y <= pY+200 ) then
if ( x >= pX+161 and x <= pX+251 ) then
data.login.hovering = true
return
elseif ( x >= pX+305 and x <= pX+445 ) then
data.reg.hovering = true
return
elseif ( x >= pX+40 and x <= pX+135 ) then
data.guest.hovering = true
return
end
end
end
data.login.hovering = false
data.reg.hovering = false
data.guest.hovering = false
end
function openLogin ( )
addEventHandler ( "onClientPreRender", root, dxDrawLoginPanel )
addEventHandler ( 'onClientCursorMove', root, cursorMove )
addEventHandler ( "onClientClick", root, clientClicking )
guiSetInputMode ( "no_binds_when_editing" )
guiSetVisible ( password, true )
guiSetVisible ( username, true )
showCursor ( true )
addEventHandler ( 'onClientGUIClick', root, clientClosingErrorWindowEvent )
isOpen = true
showChat(false)
end
addEvent ( "onClientPlayerLogout", true )
addEventHandler ( 'onClientPlayerLogout', root, openLogin )
addEvent ( "onClientFileDownloadComplete", true )
addEventHandler ( "onClientFileDownloadComplete", root, openLogin )
function closeLogin ( )
removeEventHandler ( "onClientPreRender", root, dxDrawLoginPanel )
removeEventHandler ( 'onClientCursorMove', root, cursorMove )
removeEventHandler ( "onClientClick", root, clientClicking )
guiSetVisible ( password, false )
guiSetVisible ( username, false )
showCursor ( false )
removeEventHandler ( 'onClientGUIClick', root, clientClosingErrorWindowEvent )
guiSetVisible ( window, false )
isOpen = false
isLoggedin = true
showChat(true)
end
addEvent ( "onClientPlayerLogin", true )
addEventHandler ( "onClientPlayerLogin", root, closeLogin )
addEvent ( "onClientFileDownloadComplete", false )
addEventHandler ( "onClientFileDownloadComplete", root, closeLogin )
function sendError ( msg )
if ( not guiGetVisible ( window ) ) then
guiSetVisible ( window, true )
guiSetText ( infoLbl, msg )
guiBringToFront ( window )
end
end
addEvent ( "onPlayerLoginPanelError", true )
addEventHandler ( "onPlayerLoginPanelError", root, sendError )
function clientClicking ( btn, state, x, y )
if ( btn == 'left' and not guiGetVisible ( window ) and state == 'down' and isOpen ) then
if ( y >= pY+170 and y <= pY+200 ) then
local user, pass = guiGetText ( username ), guiGetText ( password )
-- Login Button --
if ( x >= pX+156 and x <= pX+246 ) then
if ( string.gsub ( user, ' ', '' ) ~= '' and string.gsub ( pass, ' ', '' ) ~= '' ) then
if ( string.find ( user, '%s' ) ) then
return sendError ( "Spaces (' ') are not allowed\nin the username." )
end if ( string.find ( pass, '%s' ) ) then
return sendError ( "Spaces (' ') are not allowed\nin the password." )
end
triggerServerEvent ( "Login:onClientAttemptLogin", localPlayer, user, pass )
else
sendError ( "A username and password are\nrequired to access the server." )
end
-- register button
elseif ( x >= pX+300 and x <= pX+440 ) then
if ( string.gsub ( user, ' ', '' ) ~= '' and string.gsub ( pass, ' ', '' ) ~= '' ) then
if ( string.find ( user, '%s' ) ) then
return sendError ( "Spaces are not allowed\nin the username." )
end if ( string.find ( pass, '%s' ) ) then
return sendError ( "Spaces are not allowed\nin the password." )
end if ( string.len ( user ) < 5 ) then
return sendError ( "You're username must be at\nleast 5 characters long." )
end if ( string.len ( pass ) < 6 ) then
return sendError ( "You're password must be at\nleast 6 characters long." )
end
triggerServerEvent ( "Login:onClientAttemptRegistration", localPlayer, user, pass )
else
sendError ( "A username and password are\nrequired to access the server." )
end
-- play as guest
elseif ( x >= pX+40 and x <= pX+135 ) then
closeLogin ( )
triggerServerEvent ( "Login:doClientGuestLogin", localPlayer )
end
end
end
end
function clientClosingErrorWindowEvent( )
if ( source == exitBtn ) then
guiSetVisible ( window, false )
end
end
function isClientLoggedin ( )
return isLoggedin
end
setTimer ( function ( )
openLogin ( )
end, 700, 1 )
SERVER.LUA
------------------------------------------
-- Dx Login Panel --
------------------------------------------
-- Developer: Braydon Davis (xXMADEXx) --
-- File: server.lua --
-- Copyright 2013 (C) Braydon Davis --
-- All rights reserved. --
------------------------------------------
local cameras = {
{ 329.10980224609, -2117.2749023438, 50.161201477051, 329.65179443359, -2116.4926757813, 49.853763580322 },
{ 1266.0053710938, -1965.7087402344, 114.59829711914, 1265.1549072266, -1966.1115722656, 114.25980377197 },
{ 1514.0283203125, -1716.5743408203, 39.910701751709, 1514.5087890625, -1715.865234375, 39.394691467285 },
{ 1338.7514648438, -875.66558837891, 99.84880065918, 1339.4935302734, -875.07824707031, 99.52579498291 },
{ 1426.5421142578, -725.40289306641, 120.97090148926, 1427.3695068359, -725.00805664063, 120.571434021 },
{ 1357.5914306641, -592.23327636719, 125.15190124512, 1357.1751708984, -593.02673339844, 124.70780944824 },
{ 988.01123046875, -341.88409423828, 74.752601623535, 988.70251464844, -342.45135498047, 75.200187683105 },
{ -224.32290649414, -153.71020507813, 35.085899353027, -223.61195373535, -153.04695129395, 34.852146148682 }
}
function openView( plr )
local theplr = nil
if ( source and getElementType ( source ) == 'player' ) then
theplr = source
elseif ( plr and getElementType ( plr ) == 'player' ) then
theplr = plr
end
setTimer ( function ( p )
local ind = math.random ( #cameras )
setCameraMatrix ( p, unpack ( cameras[ind] ) )
end, 700, 1, theplr )
end
addEventHandler ( "onPlayerJoin", root, openView )
addEventHandler ( "onPlayerLogout", root, openView )
--addCommandHandler ( 'view', openView )
function attemptLogin ( user, pass )
if ( user and pass and type ( user ) == 'string' and type ( pass ) == 'string' ) then
--local user = string.lower ( user )
--local pass = string.lower ( pass )
local account = getAccount ( user )
if ( account ) then
if ( not logIn ( source, account, pass ) ) then
message ( source, "Incorrect password." )
return false
end
setCameraTarget ( source, source )
triggerLogin ( source, user, pass )
else
message ( source, "Unknown account." )
return false
end
end
return false
end
addEvent ( "Login:onClientAttemptLogin", true )
addEventHandler ( "Login:onClientAttemptLogin", root, attemptLogin )
function attemptRegister ( user, pass )
if ( user and pass and type ( user ) == 'string' and type ( pass ) == 'string' ) then
--local user = string.lower ( user )
--local pass = string.lower ( pass )
local account = getAccount ( user )
if ( not account ) then
local account = addAccount ( user, pass )
if ( account ) then
if ( not logIn ( source, account, pass ) ) then
return message ( source, "Logging in has failed." )
end
setCameraTarget ( source, source )
triggerLogin ( source, user, pass )
else
message ( source, "Adding account failed.\nPlease report to an admin." )
end
else
message ( source, "This account already exists." )
end
end
return false
end
addEvent ( "Login:onClientAttemptRegistration", true )
addEventHandler ( "Login:onClientAttemptRegistration", root, attemptRegister )
function message ( source, msg )
triggerClientEvent ( source, "onPlayerLoginPanelError", source, msg )
end
function triggerLogin ( source, user, pass )
triggerClientEvent ( source, "onClientPlayerLogin", source, user, pass )
end
addEventHandler ( 'onPlayerLogout', root, function ( )
triggerClientEvent ( source, 'onClientPlayerLogout', source )
end )
addEvent ( 'Login:doClientGuestLogin', true )
addEventHandler ( 'Login:doClientGuestLogin', root, function ( )
setCameraTarget ( source )
end )
LINE 157 FOR QUICK LOOK