Jump to content

Login\Register panel help


TwiX!

Recommended Posts

Помогите сделать так, чтобы логин и пароль записывался в файл при нажатом CheckBox, при перезаходе на сервер игроку не надо будет вводить данные, а просто нажать логин , у меня это не работает :?

blackLoginScreen = true 
enableKickPlayer = true 
disallowLogout = false 
removeBlackScreenTime = 4 
maxLoginAttempts = 3 
local isChecked = false 
  
x,y = guiGetScreenSize() 
  
LoginWin = guiCreateWindow(219,182,414,237,"Login Panel v.2 by *Qwerty",false) 
  
TabPanel = guiCreateTabPanel(9,20,396,208,false,LoginWin) 
  
TabLogin = guiCreateTab("Login",TabPanel) 
LblUsername = guiCreateLabel(26,17,83,16,"Username",false,TabLogin) 
  
LoginUsername = guiCreateEdit(25,34,158,29,"",false,TabLogin) 
guiSetAlpha(LoginUsername,1) 
LblPassword = guiCreateLabel(26,65,84,16,"Password",false,TabLogin) 
LoginPassword = guiCreateEdit(24,82,162,30,"",false,TabLogin) 
guiSetAlpha(LoginPassword,1) 
myImage1 = guiCreateStaticImage(234,52,149,47,"images/loginpanel.png",false,TabLogin) 
remember = guiCreateCheckBox(26,127,17,19,"Remember me?",isChecked,false,TabLogin) 
myLabelRemember = guiCreateLabel(49,128,114,17,"Remember me?",false,TabLogin) 
guiSetAlpha(remember,1) 
guiCheckBoxSetSelected(remember,true) 
BtnAction = guiCreateButton(248,136,137,39,"Login",false,TabLogin) 
guiEditSetMasked(LoginPassword,true) 
  
TabRegister = guiCreateTab("Register",TabPanel) 
LblRegisterUsername = guiCreateLabel(27,17,128,22,"Username",false,TabRegister) 
EditRegisterUsername = guiCreateEdit(26,35,143,31,"",false,TabRegister) 
LblRegisterPassword = guiCreateLabel(29,67,79,17,"Password",false,TabRegister) 
EditRegisterPassword = guiCreateEdit(26,84,144,32,"",false,TabRegister) 
guiEditSetMasked(EditRegisterPassword,true) 
LblRegisterEmail = guiCreateLabel(26,115,35,16,"E-Mail",false,TabRegister) 
EditRegisterEmail = guiCreateEdit(26,130,144,32,"",false,TabRegister) 
myImage2 = guiCreateStaticImage(234,52,149,47,"images/loginpanel.png",false,TabRegister) 
  
BtnAction1 = guiCreateButton(250,135,135,40,"Register",false,TabRegister) 
guiSetFont(BtnAction,"default-bold-small") 
  
guiSetVisible(LoginWin, false) 
  
addEventHandler("onClientResourceStart", gResRoot, 
    function () 
        checkForRemember( ); 
    end 
) 
  
local localPlayer = getLocalPlayer() 
  
function receiveVars( allow, email) 
  
    local playername = getPlayerName(localPlayer) 
  
    guiSetText(LoginUsername, "") 
    guiSetText(EditRegisterUsername, "") 
  
    if (email == "false") then 
        guiSetVisible(LblRegisterEmail, false) 
        guiSetVisible(EditRegisterEmail, false) 
    end 
  
    if (allow == "false") then 
        guiDeleteTab(TabRegister, TabPanel) 
    end 
  
    guiSetSelectedTab(TabPanel, TabLogin) 
    guiSetText(LoginUsername, playername) 
    guiSetText(EditRegisterUsername, playername) 
  
    guiSetVisible(LoginWin, true) 
    guiBringToFront(LoginWin) 
  
    guiSetInputEnabled(true) 
    showCursor(true) 
end 
addEvent( "onSendVars", true ) 
addEventHandler( "onSendVars", getRootElement(), receiveVars ) 
  
function windowHandler() 
    triggerServerEvent("onNeedVars", getLocalPlayer()) 
end 
addEventHandler("onClientResourceStart", getResourceRootElement(getThisResource()), windowHandler) 
function onClickBtn(button, state) 
    if(button == "left" and state == "up") then 
        if(source == BtnAction) then 
            if(guiGetSelectedTab(TabPanel) == TabLogin) then 
                triggerServerEvent("Login", getRootElement(), localPlayer, guiGetText(LoginUsername), guiGetText(LoginPassword)) 
            else 
                triggerServerEvent("Register", getRootElement(), localPlayer, guiGetText(EditRegisterUsername), guiGetText(EditRegisterPassword), guiGetText(EditRegisterEmail)) 
            end 
        end 
    end 
end 
  
addEventHandler("onClientGUIClick", BtnAction, onClickBtn, false) 
  
function onClickBtn1(button, state) 
    if(button == "left" and state == "up") then 
        if(source == BtnAction1) then 
            if(guiGetSelectedTab(TabPanel) == TabLogin) then 
                triggerServerEvent("Login", getRootElement(), localPlayer, guiGetText(LoginUsername), guiGetText(LoginPassword)) 
            else 
                triggerServerEvent("Register", getRootElement(), localPlayer, guiGetText(EditRegisterUsername), guiGetText(EditRegisterPassword), guiGetText(EditRegisterEmail)) 
            end 
        end 
    end 
end 
addEventHandler("onClientGUIClick", BtnAction1, onClickBtn1, false) 
  
function hideLoginWindow() 
    guiSetInputEnabled(false) 
    guiSetVisible(LoginWin, false) 
    showCursor(false) 
end 
addEvent("hideLoginWindow", true) 
addEventHandler("hideLoginWindow", getRootElement(), hideLoginWindow) 
  
function onServerAuthComplete() 
    closeEverything() 
    --triggerServerEvent( "onJoinLoginComplete", rootElement, localPlayer) 
        isChecked = guiCheckBoxGetSelected(remember) 
    if isChecked then 
        saveForRemember( guiGetText(LoginUsername), guiGetText(LoginPassword)) 
    end 
end 
addEvent("onServerAuthComplete", true) 
addEventHandler("onServerAuthComplete", rootElement, onServerAuthComplete) 
  
function saveForRemember( rememberUser, rememberPass ) 
  
    local xml = xmlCreateFile( "rememberMe.xml", "remember" ); 
  
    if ( xml ~= false ) then 
  
        local child = xmlCreateChild (xml, "user" ); 
        if( child ~= false ) then xmlNodeSetAttribute( child, "rem", rememberUser ); end 
  
        child = xmlCreateChild (xml, "pass" ); 
        if( child ~= false ) then xmlNodeSetAttribute( child, "rem", rememberPass ); end 
  
        xmlSaveFile ( xml ); 
        xmlUnloadFile ( xml ); 
  
    end 
  
end 
  
function checkForRemember( ) 
  
    local xml = xmlLoadFile ( "rememberMe.xml" ); 
    if ( xml ~= false ) then 
  
        local child = xmlFindChild (xml, "user", 0 ); 
        if( child ~= false ) then 
  
            user = xmlNodeGetAttribute( child, "rem" ); 
  
        end 
  
        child = xmlFindChild( xml, "pass", 0 ); 
        if( child ~= false ) then 
  
            pass = xmlNodeGetAttribute( child, "rem" ); 
            isChecked = true; 
  
        end 
  
        xmlUnloadFile ( xml ); 
    end 
  
end 
  
  

Edited by Guest
Link to comment

мне именно нужно, чтобы пароль и ник записывался в файл если галка стоит в чекбоксе, и при перезаходе его не надо было вводить, просто нажать кнопку логин, поля уже заполнены с паролем и акаунт ником,

Debug Script :

8fdffdd1f904.png

45:

addEventHandler("onClientResourceStart", gResRoot, 

130:

addEventHandler("onServerAuthComplete", rootElement, onServerAuthComplete) 

help?

Edited by Guest
Link to comment

Я бы не советовал сохранять пароли в файл на клиенте. Почему? Потому что ничего мне не мешает, взглянув на твой ресурс, создать свой с таким же именем, но который читает этот файл и отправляет пароль на сервер. Игроки будут заходить ко мне на сервер, а я буду складировать их пароли. Если ты зайдешь ко мне на сервер, я вообще пароль админа получу.

Link to comment
Потому что ничего мне не мешает, взглянув на твой ресурс, создать свой с таким же именем, но который читает этот файл и отправляет пароль на сервер.

Мм, где-то на вики видел статейку про то, что можно защитить файл от чтения на других серверах, или не прокатит?

Link to comment
Я бы не советовал сохранять пароли в файл на клиенте. Почему? Потому что ничего мне не мешает, взглянув на твой ресурс, создать свой с таким же именем, но который читает этот файл и отправляет пароль на сервер. Игроки будут заходить ко мне на сервер, а я буду складировать их пароли. Если ты зайдешь ко мне на сервер, я вообще пароль админа получу.

как тогда сделать автологин и сохранить пароли на сервере?

но если их созранять на сервере админ будет знать пароли игроков? :?::?

Link to comment

В МТА уже всё давно сделано. В сервер конфиге есть тэг autologin, включи его и всё. Далее, панель логина при старте ресурса на клиенте должна делать запрос на сервер, нужна ли авторизация, и если сервер ответил что нужна, ты её показываешь.

Link to comment

Если все-таки хочется сохранить данные в клиенте, как это обычно делает браузер (сохраняет файлы cookie), не надо хранить их в открытом виде (хотя бы в зашифрованном). А клиентские скрипты, связанные с сохранением лучше скомпилировать с системой защиты от запуска на других серверах. Но это куда сложней чем autologin в самом mtasa.

Link to comment
пример можно? раньше этого не было :D вроде

пример стандартного autologin'a ?

да..

тоесть ты зарегистрирован - 1 раз вводишь логин и пароль, 2 раз при перезаходе уже логин вводить не надо

Link to comment

и есть другая проблема, не прибавляет poins и wins

function DestructionMoney() 
local alivePlayers = getAlivePlayers() 
if info == "Destruction derby" then 
   if #alivePlayers == 1 then 
   local playername = getPlayerName(alivePlayers[1]) 
   local serial = getPlayerSerial(alivePlayers[1]) 
   givePlayerMoney(alivePlayers[1], 1200) 
   local oldData = executeSQLSelect( "RaceStats", "RaceWins","serial = '" .. serial .. "'") 
   newData = tonumber(oldData[1]["RaceWins"]) + 1 
   setElementData(alivePlayers[1],"Points",tonumber(getElementData(alivePlayers[1],"Points"))+5) 
   setElementData(alivePlayers[1],"Race Wins",tonumber(getElementData(alivePlayers[1],"Race Wins"))+1) 
   executeSQLUpdate ( "RaceStats", "RaceWins = '"..newData.."'","serial = '" .. serial .. "'") 
   outputChatBox(playername ( alivePlayers[1] ) .. " has won $1200 as last player alive!",rootElement,0,255,0) 
      end 
   end 
end 
  
addEventHandler("onPlayerWasted",rootElement, 
function () 
setElementData(source,"Race Loses",tonumber(getElementData(source,"Race Loses"))+1) 
setElementData(source,"Points",tonumber(getElementData(source,"Points"))-2) 
local serial = getPlayerSerial(source) 
local oldData = executeSQLSelect( "RaceStats", "RaceLoses","serial = '" .. serial .. "'") 
newData = tonumber(oldData[1]["RaceWins"]) + 1 
setElementData(alivePlayers[1],"Race Wins",tonumber(getElementData(alivePlayers[1],"Race Wins"))+1) 
executeSQLUpdate ( "RaceStats", "RaceLoses = '"..newData.."'","serial = '" .. serial .. "'") 
end 
) 

Link to comment

Другую проблему, пожалуйста - в другой теме (: А про автологин..

КЛИЕНТ

-- ответ от сервера об автологине игрока 
addEvent( 'autologinDataAnswer', true ) 
addEventHandler( 'autologinDataAnswer', root, 
    function ( autologged ) 
        -- если игрок еще не залогинен 
        if not autologged then 
            -- ПОКАЗАТЬ ОКНО ВХОДА В АККАУНТ -- 
        end 
    end 
) 
  
-- при старте клиентского ресурса спросим у сервера 
-- об автологине игрока 
addEventHandler( 'onClientResourceStart', resourceRoot, 
    function() 
        triggerServerEvent( 'autologinDataRequest', localPlayer ) 
    end 
) 

СЕРВЕР

-- при автологине игрока, сохраним инфу об этом в его серверных данных 
addEventHandler( 'onPlayerLogin', root, 
    function ( prevAcc, curAcc, autologged ) 
        if autologged then 
            setElementData( source, 'autologged', true, false ) 
        end 
    end 
) 
  
-- при запросе от клиента инфы об автологине, 
-- отправим ему ответ 
addEvent( 'autologinDataRequest', true ) 
addEventHandler( 'autologinDataRequest', root, 
    function () 
        if source and isElement(source) and getElementType(source) == 'player' then 
            triggerClientEvent( source, 'autologinDataAnswer', root, getElementData( source, 'autologged' ) ) 
        end 
    end 
) 

Эти коды не проверены и являются просто моей идеей.

Link to comment
blackLoginScreen = true 
enableKickPlayer = true 
disallowLogout = false 
removeBlackScreenTime = 3 
maxLoginAttempts = 3 
local localPlayer = getLocalPlayer() 
gResRoot = getResourceRootElement(getThisResource()) 
  
x,y = guiGetScreenSize() 
  
function createLoginWindow() 
  
LoginWin = guiCreateWindow(219,182,414,237,"Login Panel v.2 by *Qwerty",false) 
  
TabPanel = guiCreateTabPanel(9,20,396,208,false,LoginWin) 
  
TabLogin = guiCreateTab("Login",TabPanel) 
LblUsername = guiCreateLabel(26,17,83,16,"Username",false,TabLogin) 
  
LoginUsername = guiCreateEdit(25,34,158,29,"",false,TabLogin) 
guiSetAlpha(LoginUsername,1) 
LoginPassword = guiCreateEdit(24,82,162,30,"",false,TabLogin) 
guiSetAlpha(LoginPassword,1) 
myImage1 = guiCreateStaticImage(234,52,149,47,"images/loginpanel.png",false,TabLogin) 
--guiCreateCheckBox(26,127,17,19,"Remember",false,TabLogin) 
--myLabelRemember = guiCreateLabel(49,128,114,17,"Remember me?",false,TabLogin) 
BtnAction = guiCreateButton(248,136,137,39,"Login",false,TabLogin) 
guiEditSetMasked(LoginPassword,true) 
  
TabRegister = guiCreateTab("Register",TabPanel) 
LblRegisterUsername = guiCreateLabel(27,17,128,22,"Username",false,TabRegister) 
EditRegisterUsername = guiCreateEdit(26,35,143,31,"",false,TabRegister) 
LblRegisterPassword = guiCreateLabel(29,67,79,17,"Password",false,TabRegister) 
EditRegisterPassword = guiCreateEdit(26,84,144,32,"",false,TabRegister) 
guiEditSetMasked(EditRegisterPassword,true) 
LblRegisterEmail = guiCreateLabel(26,115,35,16,"E-Mail",false,TabRegister) 
EditRegisterEmail = guiCreateEdit(26,130,144,32,"",false,TabRegister) 
myImage2 = guiCreateStaticImage(234,52,149,47,"images/loginpanel.png",false,TabRegister) 
  
BtnAction1 = guiCreateButton(250,135,135,40,"Register",false,TabRegister) 
guiSetFont(BtnAction,"default-bold-small") 
  
guiSetVisible(LoginWin, false) 
end 
  
function receiveVars( allow, email) 
  
    local playername = getPlayerName(localPlayer) 
  
    --guiSetText(LoginUsername, "") 
    --guiSetText(EditRegisterUsername, "") 
  
    if (email == "false") then 
        guiSetVisible(LblRegisterEmail, false) 
        guiSetVisible(EditRegisterEmail, false) 
    end 
  
    if (allow == "false") then 
        guiDeleteTab(TabRegister, TabPanel) 
    end 
  
    guiSetSelectedTab(TabPanel, TabLogin) 
    --guiSetText(LoginUsername, playername) 
    --guiSetText(EditRegisterUsername, playername) 
  
    guiSetVisible(LoginWin, true) 
    guiBringToFront(LoginWin) 
  
    guiSetInputEnabled(true) 
    showCursor(true) 
end 
addEvent( "onSendVars", true ) 
addEventHandler( "onSendVars", getRootElement(), receiveVars ) 
  
function windowHandler() 
    triggerServerEvent("onNeedVars", getLocalPlayer()) 
end 
  
addEvent("autologinDataAnswer", true) 
addEventHandler("autologinDataAnswer", root, 
function ( autologged ) 
    hideLoginWindow() 
  --isChecked = guiCheckBoxGetSelected(remember) 
    if not autologged then 
        createLoginWindow() 
    end 
end 
) 
  
addEventHandler( 'onClientResourceStart', gResRoot, 
    function() 
        createLoginWindow() 
        addEventHandler("onClientGUIClick", BtnAction, onClickBtn, false) 
        addEventHandler("onClientGUIClick", BtnAction1, onClickBtn1, false) 
        triggerServerEvent( 'autologinDataRequest', localPlayer ) 
    end 
) 
  
--addEventHandler("onClientResourceStart", getResourceRootElement(getThisResource()), windowHandler) 
function onClickBtn(button, state) 
    if(button == "left" and state == "up") then 
        if(source == BtnAction) then 
            if(guiGetSelectedTab(TabPanel) == TabLogin) then 
                triggerServerEvent("Login", getRootElement(), localPlayer, guiGetText(LoginUsername), guiGetText(LoginPassword)) 
          --else 
                --triggerServerEvent("Register", getRootElement(), localPlayer, guiGetText(EditRegisterUsername), guiGetText(EditRegisterPassword), guiGetText(EditRegisterEmail)) 
            end 
        end 
    end 
end 
  
--addEventHandler("onClientGUIClick", BtnAction, onClickBtn, false) 
  
function onClickBtn1(button, state) 
    if(button == "left" and state == "up") then 
        if(source == BtnAction1) then 
            if(guiGetSelectedTab(TabPanel) == TabLogin) then 
                triggerServerEvent("Register", getRootElement(), localPlayer, guiGetText(LoginUsername), guiGetText(LoginPassword)) 
            --else 
                --triggerServerEvent("Register", getRootElement(), localPlayer, guiGetText(EditRegisterUsername), guiGetText(EditRegisterPassword), guiGetText(EditRegisterEmail)) 
            end 
        end 
    end 
end 
--addEventHandler("onClientGUIClick", BtnAction1, onClickBtn1, false) 
  
function hideLoginWindow() 
    guiSetInputEnabled(false) 
    guiSetVisible(LoginWin, false) 
    showCursor(false) 
end 
addEvent("hideLoginWindow", true) 
addEventHandler("hideLoginWindow", getRootElement(), hideLoginWindow) 
  

поправьте .. вроде без ошибок, панель не открывает :D

Link to comment

Исправил

  
blackLoginScreen = true 
enableKickPlayer = true 
disallowLogout = false 
removeBlackScreenTime = 3 
maxLoginAttempts = 3 
local localPlayer = getLocalPlayer() 
gResRoot = getResourceRootElement(getThisResource()) 
  
x,y = guiGetScreenSize() 
  
function createLoginWindow() 
  
LoginWin = guiCreateWindow(219,182,414,237,"Login Panel v.2 by *Qwerty",false) 
  
TabPanel = guiCreateTabPanel(9,20,396,208,false,LoginWin) 
  
TabLogin = guiCreateTab("Login",TabPanel) 
LblUsername = guiCreateLabel(26,17,83,16,"Username",false,TabLogin) 
  
LoginUsername = guiCreateEdit(25,34,158,29,"",false,TabLogin) 
guiSetAlpha(LoginUsername,1) 
LoginPassword = guiCreateEdit(24,82,162,30,"",false,TabLogin) 
guiSetAlpha(LoginPassword,1) 
myImage1 = guiCreateStaticImage(234,52,149,47,"images/loginpanel.png",false,TabLogin) 
--guiCreateCheckBox(26,127,17,19,"Remember",false,TabLogin) 
--myLabelRemember = guiCreateLabel(49,128,114,17,"Remember me?",false,TabLogin) 
BtnAction = guiCreateButton(248,136,137,39,"Login",false,TabLogin) 
guiEditSetMasked(LoginPassword,true) 
  
TabRegister = guiCreateTab("Register",TabPanel) 
LblRegisterUsername = guiCreateLabel(27,17,128,22,"Username",false,TabRegister) 
EditRegisterUsername = guiCreateEdit(26,35,143,31,"",false,TabRegister) 
LblRegisterPassword = guiCreateLabel(29,67,79,17,"Password",false,TabRegister) 
EditRegisterPassword = guiCreateEdit(26,84,144,32,"",false,TabRegister) 
guiEditSetMasked(EditRegisterPassword,true) 
LblRegisterEmail = guiCreateLabel(26,115,35,16,"E-Mail",false,TabRegister) 
EditRegisterEmail = guiCreateEdit(26,130,144,32,"",false,TabRegister) 
myImage2 = guiCreateStaticImage(234,52,149,47,"images/loginpanel.png",false,TabRegister) 
  
BtnAction1 = guiCreateButton(250,135,135,40,"Register",false,TabRegister) 
guiSetFont(BtnAction,"default-bold-small") 
end 
  
function receiveVars( allow, email) 
  
    local playername = getPlayerName(localPlayer) 
  
    --guiSetText(LoginUsername, "") 
    --guiSetText(EditRegisterUsername, "") 
  
    if (email == "false") then 
        guiSetVisible(LblRegisterEmail, false) 
        guiSetVisible(EditRegisterEmail, false) 
    end 
  
    if (allow == "false") then 
        guiDeleteTab(TabRegister, TabPanel) 
    end 
  
    guiSetSelectedTab(TabPanel, TabLogin) 
    --guiSetText(LoginUsername, playername) 
    --guiSetText(EditRegisterUsername, playername) 
  
    guiSetVisible(LoginWin, true) 
    guiBringToFront(LoginWin) 
  
    guiSetInputEnabled(true) 
    showCursor(true) 
end 
addEvent( "onSendVars", true ) 
addEventHandler( "onSendVars", getRootElement(), receiveVars ) 
  
function windowHandler() 
    triggerServerEvent("onNeedVars", getLocalPlayer()) 
end 
  
addEvent("autologinDataAnswer", true) 
addEventHandler("autologinDataAnswer", root, 
function ( autologged ) 
    hideLoginWindow() 
  --isChecked = guiCheckBoxGetSelected(remember) 
    if not autologged then 
        createLoginWindow() 
    end 
end 
) 
  
addEventHandler( 'onClientResourceStart', gResRoot, 
    function() 
        createLoginWindow() 
        addEventHandler("onClientGUIClick", BtnAction, onClickBtn, false) 
        addEventHandler("onClientGUIClick", BtnAction1, onClickBtn1, false) 
        triggerServerEvent( 'autologinDataRequest', localPlayer ) 
    end 
) 
  
--addEventHandler("onClientResourceStart", getResourceRootElement(getThisResource()), windowHandler) 
function onClickBtn(button, state) 
    if(button == "left" and state == "up") then 
        if(source == BtnAction) then 
            if(guiGetSelectedTab(TabPanel) == TabLogin) then 
                triggerServerEvent("Login", getRootElement(), localPlayer, guiGetText(LoginUsername), guiGetText(LoginPassword)) 
          --else 
                --triggerServerEvent("Register", getRootElement(), localPlayer, guiGetText(EditRegisterUsername), guiGetText(EditRegisterPassword), guiGetText(EditRegisterEmail)) 
            end 
        end 
    end 
end 
  
--addEventHandler("onClientGUIClick", BtnAction, onClickBtn, false) 
  
function onClickBtn1(button, state) 
    if(button == "left" and state == "up") then 
        if(source == BtnAction1) then 
            if(guiGetSelectedTab(TabPanel) == TabLogin) then 
                triggerServerEvent("Register", getRootElement(), localPlayer, guiGetText(LoginUsername), guiGetText(LoginPassword)) 
            --else 
                --triggerServerEvent("Register", getRootElement(), localPlayer, guiGetText(EditRegisterUsername), guiGetText(EditRegisterPassword), guiGetText(EditRegisterEmail)) 
            end 
        end 
    end 
end 
--addEventHandler("onClientGUIClick", BtnAction1, onClickBtn1, false) 
  
function hideLoginWindow() 
    guiSetInputEnabled(false) 
    guiSetVisible(LoginWin, false) 
    showCursor(false) 
end 
addEvent("hideLoginWindow", true) 
addEventHandler("hideLoginWindow", getRootElement(), hideLoginWindow) 
  

У тебя проблема была с

  
guiSetVisible(LoginWin, false) 
  

в функции createLoginWindow

Тоесть когда клиент защёл на сервер ты делаешь окно не видимым.

Очевидно не ты делал этот логин а взял из комьюнити и переделал.

Link to comment

Client

blackLoginScreen = true 
enableKickPlayer = true 
disallowLogout = false 
removeBlackScreenTime = 3 
maxLoginAttempts = 3 
local localPlayer = getLocalPlayer() 
gResRoot = getResourceRootElement(getThisResource()) 
  
x,y = guiGetScreenSize() 
  
function createLoginWindow() 
  
LoginWin = guiCreateWindow(219,182,414,237,"Login Panel v.2 by *Qwerty",false) 
  
TabPanel = guiCreateTabPanel(9,20,396,208,false,LoginWin) 
  
TabLogin = guiCreateTab("Login",TabPanel) 
LblUsername = guiCreateLabel(26,17,83,16,"Username",false,TabLogin) 
  
LoginUsername = guiCreateEdit(25,34,158,29,"",false,TabLogin) 
guiSetAlpha(LoginUsername,1) 
LoginPassword = guiCreateEdit(24,82,162,30,"",false,TabLogin) 
guiSetAlpha(LoginPassword,1) 
myImage1 = guiCreateStaticImage(234,52,149,47,"images/loginpanel.png",false,TabLogin) 
--guiCreateCheckBox(26,127,17,19,"Remember",false,TabLogin) 
--myLabelRemember = guiCreateLabel(49,128,114,17,"Remember me?",false,TabLogin) 
BtnAction = guiCreateButton(248,136,137,39,"Login",false,TabLogin) 
guiEditSetMasked(LoginPassword,true) 
  
TabRegister = guiCreateTab("Register",TabPanel) 
LblRegisterUsername = guiCreateLabel(27,17,128,22,"Username",false,TabRegister) 
EditRegisterUsername = guiCreateEdit(26,35,143,31,"",false,TabRegister) 
LblRegisterPassword = guiCreateLabel(29,67,79,17,"Password",false,TabRegister) 
EditRegisterPassword = guiCreateEdit(26,84,144,32,"",false,TabRegister) 
guiEditSetMasked(EditRegisterPassword,true) 
LblRegisterEmail = guiCreateLabel(26,115,35,16,"E-Mail",false,TabRegister) 
EditRegisterEmail = guiCreateEdit(26,130,144,32,"",false,TabRegister) 
myImage2 = guiCreateStaticImage(234,52,149,47,"images/loginpanel.png",false,TabRegister) 
  
BtnAction1 = guiCreateButton(250,135,135,40,"Register",false,TabRegister) 
guiSetFont(BtnAction,"default-bold-small") 
end 
  
function receiveVars( allow, email) 
  
    local playername = getPlayerName(localPlayer) 
  
    --guiSetText(LoginUsername, "") 
    --guiSetText(EditRegisterUsername, "") 
  
    if (email == "false") then 
        guiSetVisible(LblRegisterEmail, false) 
        guiSetVisible(EditRegisterEmail, false) 
    end 
  
    if (allow == "false") then 
        guiDeleteTab(TabRegister, TabPanel) 
    end 
  
    guiSetSelectedTab(TabPanel, TabLogin) 
    --guiSetText(LoginUsername, playername) 
    --guiSetText(EditRegisterUsername, playername) 
  
    guiSetVisible(LoginWin, true) 
    guiBringToFront(LoginWin) 
  
    guiSetInputEnabled(true) 
    showCursor(true) 
end 
addEvent( "onSendVars", true ) 
addEventHandler( "onSendVars", getRootElement(), receiveVars ) 
  
function windowHandler() 
    triggerServerEvent("onNeedVars", getLocalPlayer()) 
end 
  
addEvent("autologinDataAnswer", true) 
addEventHandler("autologinDataAnswer", root, 
function ( autologged ) 
    hideLoginWindow() 
  --isChecked = guiCheckBoxGetSelected(remember) 
    if not autologged then 
        createLoginWindow() 
    end 
end 
) 
  
addEventHandler( 'onClientResourceStart', gResRoot, 
    function() 
        createLoginWindow() 
        addEventHandler("onClientGUIClick", BtnAction, onClickBtn, false) 
        addEventHandler("onClientGUIClick", BtnAction1, onClickBtn1, false) 
        triggerServerEvent( 'autologinDataRequest', localPlayer ) 
    end 
) 
  
--addEventHandler("onClientResourceStart", getResourceRootElement(getThisResource()), windowHandler) 
function onClickBtn(button, state) 
    if(button == "left" and state == "up") then 
        if(source == BtnAction) then 
            if(guiGetSelectedTab(TabPanel) == TabLogin) then 
                triggerServerEvent("Login", getRootElement(), localPlayer, guiGetText(LoginUsername), guiGetText(LoginPassword)) 
            else 
                triggerServerEvent("Register", getRootElement(), localPlayer, guiGetText(EditRegisterUsername), guiGetText(EditRegisterPassword), guiGetText(EditRegisterEmail)) 
            end 
        end 
    end 
end 
  
--addEventHandler("onClientGUIClick", BtnAction, onClickBtn, false) 
  
function onClickBtn1(button, state) 
    if(button == "left" and state == "up") then 
        if(source == BtnAction1) then 
            if(guiGetSelectedTab(TabPanel) == TabLogin) then 
                triggerServerEvent("Register", getRootElement(), localPlayer, guiGetText(LoginUsername), guiGetText(LoginPassword)) 
            else 
                  triggerServerEvent("Register", getRootElement(), localPlayer, guiGetText(EditRegisterUsername), guiGetText(EditRegisterPassword), guiGetText(EditRegisterEmail)) 
            end 
        end 
    end 
end 
--addEventHandler("onClientGUIClick", BtnAction1, onClickBtn1, false) 
  
function hideLoginWindow() 
    guiSetInputEnabled(false) 
    guiSetVisible(LoginWin, false) 
    showCursor(false) 
end 
addEvent("hideLoginWindow", true) 
addEventHandler("hideLoginWindow", getRootElement(), hideLoginWindow) 

Server

function Login ( player, user, pass ) 
    local account = getAccount ( user, pass ) 
    if ( account ~= false ) then 
        if ( not isGuestAccount ( account ) ) then -- For every player that's logged in.... 
            logOut ( player ) -- Log them out. 
        end 
  
        if (logIn ( player, account, pass ) == true) then 
            triggerClientEvent ( player, "hideLoginWindow", getRootElement()) 
        else 
            outputChatBox ( "Login error!", player, 255, 255, 0 ) -- Output they got the details wrong. 
        end 
    else 
        outputChatBox ( "Wrong username or password!", player, 255, 255, 0 ) -- Output they got the details wrong. 
    end 
end 
addEvent( "Login", true ) 
addEventHandler( "Login", getRootElement(), Login ) 
  
function Register ( player, user, pass, email ) 
    local account = getAccount ( user, pass ) 
    if ( account ~= false ) then 
        if (logIn ( player, account, pass ) == true) then 
            triggerClientEvent ( player, "hideLoginWindow", getRootElement()) 
        else 
            outputChatBox ( "Login error!", player, 255, 255, 0 ) -- Output they got the details wrong. 
        end 
    else 
        account = addAccount ( user, pass ) 
        setAccountData ( account, "email", email) 
        if (logIn ( player, account, pass ) == true) then 
            triggerClientEvent ( player, "hideLoginWindow", getRootElement()) 
        else 
            outputChatBox ( "Register/Login error!", player, 255, 255, 0 ) -- Output they got the details wrong. 
        end 
    end 
end 
addEvent( "Register", true ) 
addEventHandler( "Register", getRootElement(), Register ) 
  
function needVars() 
    local allow_register = get("allow_register") 
    local email_on_register = get("email_on_register") 
    triggerClientEvent(source, "onSendVars", getRootElement(), allow_register, email_on_register) 
end 
addEvent("onNeedVars", true) 
addEventHandler("onNeedVars", getRootElement(), needVars) 
  
  

Meta

    type="script" version="3.4" name="loginpanel" description="v3.4" /> 
    

Link to comment

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...