SSO Moderador.G
Mensagens : 83 Moeda : 117 Pontos : 6 Data de inscrição : 06/01/2013
| Assunto: [Tutorial] Recuperando senha Seg Jan 07, 2013 8:42 am | |
| Bem, nao sei por onde começar entao vou começar com o basico, acho importante organizar como se fossem os primeiros passos pra quem nunca mecheu ou nao tem muita experiencia, começar engatinhando depois andar pra nao confundir. - É de extrema importancia que preste atençao no que esta removendo/adicione e aonde, caso contrario, pode perder uma adiçao anterior sobre outro sistema, provocando problemas como erros e etc no seu jogo -Créditos: Raijenki pelo que sei. - Spoiler:
recuperar senha Dificuldade: 2/5 (É necessário saber um pouco de Visual Basic) ~ Primeira Parte (Estética) - Client-side Essa parte é muito opcional. Primeiramente, crie um botão (ou uma label) que você queira que o jogador clique para ir ao formulário de " Recuperar Senha". No meu caso, eu coloquei uma lblRecup no frmLoginAgora crie um formulário chamado frmRecuperar; não se preocupe em deixá-lo bonitinho ainda. Volte para onde você criou a label (ou o botão), dê duplo clique. A janela de código abrirá com o seguinte código: - Código:
-
Private Sub lblRecup_Click(Index As Integer)
End Sub Acima do End Sub, coloque: - Código:
-
frmRecuperar.Visible = true Bom, volte agora para o frmRecuperar, primeiramente deixe bem como você quiser. É vital você criar duas textboxes (chame uma de txtLoginRec e a outra de txtSecretRec) e um button ( btnRecover). Ah, não esqueça de fazer um botão de fechar. Acabou a primeira parte. ~ Parte 2 (Programação) - Client-side Vá ao modClientTCP, procure por: - Código:
-
Sub SendDelAccount(ByVal Name As String, ByVal Password As String) Dim Packet As String Packet = "delimaccounted" & SEP_CHAR & Trim(Name) & SEP_CHAR & Trim(Password) & END_CHAR Call SendData(Packet) End Sub Abaixo, adicione: - Código:
-
Sub SendCodigo(ByVal Name As String, ByVal Codigo As String) Dim Packet As String Packet = "sendcodigo" & SEP_CHAR & Trim(Name) & SEP_CHAR & Trim(Codigo) & END_CHAR Call SendData(Packet) End Sub Agora volte ao frmRecuperar, dê double-clique no botão e insira o seguinte código acima do End Sub: - Código:
-
Call SendCodigo(frmRecuperar.txtLoginRec.Text, frmRecuperar.txtSecretRec.Text)
Bom, essa é a parte Client-side. Vamos ao server-side. ~ Parte 3 (Programação) - Server-side Procure: - Código:
-
[b] Call ClearPlayer(Index) FileName = App.Path & "\Contas\" & Trim$(Name) & ".ini" Player(Index).Login = GetVar(FileName, "GENERAL", "Login") Player(Index).Password = GetVar(FileName, "GENERAL", "Password") Player(Index).Pet.Alive = NO [/b] Substitua por: - Código:
-
[b] Call ClearPlayer(Index) FileName = App.Path & "\Contas\" & Trim$(Name) & ".ini" Player(Index).Login = GetVar(FileName, "GENERAL", "Login") Player(Index).Password = GetVar(FileName, "GENERAL", "Password") Player(Index).Codigo = GetVar(FileName, "GENERAL", "Codigo") Player(Index).Pet.Alive = NO
[/b] Procure: - Código:
-
[b]Sub SavePlayer(ByVal Index As Long) Dim FileName As String Dim i As Long Dim N As Long
FileName = App.Path & "\Contas\" & Trim$(Player(Index).Login) & ".ini" Call PutVar(FileName, "GENERAL", "Login", Trim$(Player(Index).Login)) Call PutVar(FileName, "GENERAL", "Password", Trim$(Player(Index).Password)) [/b] Abaixo, adicione: - Código:
-
[b]Call PutVar(FileName,"GENERAL","Codigo",Trim(Player(Index).Codigo)) [/b] Procure: - Código:
-
[b]Sub AddAccount(ByVal Index As Long, _ ByVal Name As String, _ ByVal Password As String) Dim i As Long
Player(Index).Login = Name Player(Index).Password = Password[/b] Substitua por: - Código:
-
[b]Sub AddAccount(ByVal Index As Long, _ ByVal Name As String, _ ByVal Password As String, _ ByVal Codigo As String) Dim i As Long
Player(Index).Login = Name Player(Index).Password = Password Player(Index).Codigo = Codigo [/b] Procure: - Código:
-
' Conta Login As String * NAME_LENGTH Password As String * NAME_LENGTH[/b]
Abaixo, adicione: - Código:
-
Codigo As String * NAME_LENGTH
Procure: - Código:
-
Sub ClearPlayer(ByVal Index As Long) Dim i As Long Dim N As Long
Player(Index).Login = vbNullString Player(Index).Password = vbNullString
Abaixo, adicione: - Código:
-
Player(Index).Codigo = vbNullString Procure: - Código:
-
Sub HandleData(ByVal Index As Long, ByVal Data As String) Dim Parse() As String ' MODO DE SEGURANÇA -- "Descomente" para DESLIGÁ-LO, comente para LIGÁ-LO Dim Name As String Dim Password As String Dim Sex As Long Dim Class As Long Dim CharNum As Long Dim Msg As String Dim MsgTo As Long Dim Dir As Long Dim InvNum As Long Dim Amount As Long Dim Damage As Long Dim PointType As Byte Dim PointQuant As Integer Dim Movement As Long Dim i As Long, N As Long, x As Long, y As Long, f As Long Dim MapNum As Long Dim s As String Dim ShopNum As Long, ItemNum As Long Dim DurNeeded As Long, GoldNeeded As Long Dim z As Long Dim Packet As String Dim o As Long Abaixo, adicione: - Código:
-
Dim Codigo As String
Procure: Case "logination"Acima, adicione: - Código:
-
Case "sendcodigo" If Not IsLoggedIn(Index) Then Name = Parse(1) Codigo = Parse(2) If Not AccountExist(Name) Then Call PlainMsg(Index, "Essa conta não existe.", 2) Exit Sub End If If Not CodigoOK(Name, Codigo) Then Call PlainMsg(Index, "Código incorreto.", 2) Exit Sub End If Call AddLog("Conta " & Trim$(Name) & " teve senha recuperada.", PLAYER_LOG) Dim FileName As String FileName = App.Path & "\Contas\" & Name & ".ini" Password = GetVar(FileName, "GENERAL", "Password") Call PlainMsg(Index, "Sua senha é " & Password, 2) End If
Exit Sub
Procure: - Código:
-
If Not AccountExist(Name) Then Call AddAccount(Index, Name, Password) Call TextAdd(frmServer.txtText(0), "Conta " & Name & " foi criada.", True) Call AddLog("Conta " & Name & " foi criada.", PLAYER_LOG) Call PlainMsg(Index, "Sua conta foi criada!!", 1) Else Call PlainMsg(Index, "Desculpe, essa conta já foi pega!", 1) End If End If
Exit Sub
Substitua por: - Código:
-
If Not AccountExist(Name) Then Call AddAccount(Index, Name, Password, Codigo) Call TextAdd(frmServer.txtText(0), "Conta " & Name & " foi criada.", True) Call AddLog("Account " & Name & " foi criada.", PLAYER_LOG) Call PlainMsg(Index, "Sua conta foi criada!!", 1) Else Call PlainMsg(Index, "Desculpe, essa conta já foi pega!", 1) End If End If
Exit Sub Procure por: - Código:
-
Function PasswordOK(ByVal Name As String, ByVal Password As String) As Boolean
Acima, adicione: - Código:
-
Function CodigoOK(ByVal Name As String, ByVal Codigo As String) As Boolean Dim FileName As String Dim RightCodigo As String
CodigoOK = False
If AccountExist(Name) Then FileName = App.Path & "\Contas\" & Trim$(Name) & ".ini" RightCodigo = GetVar(FileName, "GENERAL", "Codigo")
If UCase$(Trim$(Codigo)) = UCase$(Trim$(RightCodigo)) Then CodigoOK = True End If End If
End Function
Procure por: - Código:
-
Case "newfaccountied"
If Not IsLoggedIn(Index) Then Name = Parse(1) Password = Parse(2) Abaixo adicione: - Código:
-
Codigo = Parse(3)
Ufa... terminou o servidor. Voltemos ao client-side. Bom, vá ao frmNewAccount, crie uma nova txt com o nome txtCodigoCadastro; coloque uma label dizendo também "Código Secreto". Etc, etc, etc. Procure: - Código:
-
Case MENU_STATE_NEWACCOUNT frmNewAccount.Visible = False If ConnectToServer = True Then Call SetStatus("Conectado, enviando informações da nova conta...") Call SendNewAccount(frmNewAccount.txtName.Text, frmNewAccount.txtPassword.Text) End If
Substitua por: - Código:
-
Case MENU_STATE_NEWACCOUNT frmNewAccount.Visible = False If ConnectToServer = True Then Call SetStatus("Conectado, enviando informações da nova conta...") Call SendNewAccount(frmNewAccount.txtName.Text, frmNewAccount.txtPassword.Text, frmNewAccount.txtCodigoCadastro.Text) End If
Procure: - Código:
-
Sub SendNewAccount(ByVal Name As String, ByVal Password As String) Dim Packet As String
Packet = "newfaccountied" & SEP_CHAR & Trim(Name) & SEP_CHAR & Trim(Password) & END_CHAR Call SendData(Packet) End Sub
Substitua por: - Código:
-
Sub SendNewAccount(ByVal Name As String, ByVal Password As String, ByVal Codigo As String) Dim Packet As String
Packet = "newfaccountied" & SEP_CHAR & Trim(Name) & SEP_CHAR & Trim(Password) & SEP_CHAR & Trim(Codigo) & END_CHAR Call SendData(Packet) End Sub
Procure: (há 3 desses códigos, mas você deve substituir apenas o encontrado no frmNewAccount) - Código:
-
If Len(Trim(txtName.Text)) < 3 Or Len(Trim(txtPassword.Text)) < 3 Then MsgBox "Sua conta e senha precisam ser no mínimo de 3 caracteres." Exit Sub End If
Substitua por: - Código:
-
If Len(Trim(txtName.Text)) < 3 Or Len(Trim(txtPassword.Text)) < 3 Or Len(Trim(txtCodigoCadastro.Text)) < 3 Then MsgBox "Sua conta, senha e código precisam ter no mínimo de 3 caracteres." Exit Sub End If No modClientTCP procure por: - Código:
-
Sub HandleData(ByVal Data As String) Dim Parse() As String Dim Name As String Dim Password As String
Abaixo, adicione: - Código:
-
Dim Codigo As String Bom, é só isso. Deve pegar; se não pegar, vamos tentar resolver o problema. De qualquer forma, esse é um sistema muito simples. Supus que a pessoa saiba qual é o código secreto que ele registrou, mas você pode estender isso.
[b][u] | |
|