Verificação da versão do cliente  Hitskin_logo Hitskin.com

Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o temaVoltar para a ficha do tema

Aldeia RPG
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Verificação da versão do cliente

2 participantes

Ir para baixo

Verificação da versão do cliente  Empty Verificação da versão do cliente

Mensagem por gladistony Seg Set 29, 2014 11:25 pm

I. Introdução

      Esse é apenas um pequeno sistema que permite ao servidor desconectar o cliente que não esteja usando a versão atual do jogo. Esse sistema também pode ser usado para evitar que outras versões do netplay se conectem ao seu servidor.
      Vale lembrar que, esse sistema depende dos demais sistemas de segurança para funcionar corretamente. Caso seu jogo seja destravado, a eficacia desse sistema cai por terra. Além disso o sistema impede apenas que clientes que se utilizam dos Netplays de se conectar ao servidor, outros programas podem não ser bloqueados.
      A principal vantagem de se utilizar esse método, é que a verificação é feita pelo servidor e não pelo cliente.

II. Compatibilidade

     O procedimento é valido para qualquer o Master 4.0.7 ou versões anteriores, para o Netplay Cristal ou qualquer outro netplay que seja baseado no antigo Netplay Plus e que tenha mantido o mesmo servidor e métodos de autenticação.
     Em todos os casos, o procedimento de instalação é o mesmo, assim como os comandos.

III. Instalação no cliente

     Primeiramente em seu neyplay, vá nos scripts e busque pelo que esta nomeado como Network. Dependendo da sua versão pode haver pequenas diferenças de nomenclatura. Nele você deve busca o comando que contem o seguinte:
Código:
@socket.send("<0>'e'</0>/n")
     Apague essa linha e substitua ela por:
Código:
@socket.send("<0>#{User_Edit::VERSION.to_s}</0>\n")
     Agora, se você não esta usando o NPC nem a versão 4.0.7 do NPM, você dever procurar o script nomeado como User Edits e abaixo de:
Código:
module User_Edit
     Cole isso:
Código:
  #---------------------Client------------------------------------
  VERSION           = 0.1
  #---------------------------------------------------------------
     No caso do NPC e do NPM 4.0.7 esse código já esta inserido no User Edits, basta você procura-lo.

IV. Instalação no servidor

     Para realizar a instalação do script no servidor, você deve primeiramente se certifica que o mesmo esta fechado. Depois disso, dentro das pastas do mesmo ache a pasta Scripts e dentro dela abra o arquivo: functions.lua
     Se você não tiver nenhum programa para ler esse formato, apenas arraste o arquivo para dentro de um bloco de notas.
     Com o arquivo functions aberto, procure pelos seguintes códigos:
Código:
  elseif cmd == "<0>" then
    do local sname = NP():GetServerName()
    NP():SendToUser(user.id,"<0 "..user.id..">'e' n="..sname.."</0>") end
     Apague essas 3 linhas e coloque no mesmo local essas novas:
Código:
  elseif cmd == "<0>" then
    do
      local sname = NP():GetServerName()
      local ndata = string.gsub(data,"<0>","")
      ndata = string.gsub(ndata,"</0>","")
      if ndata ~= sname then
        NP():CloseSocket(user.ip)
      else
        NP():SendToUser(user.id,"<0 "..user.id..">'e' n="..sname.."</0>")
      end
    end
     Depois disso basta salvar o arquivo e o sistema estará instalado.

V. Utilização

     Com esse sistema o servidor irá verificar se o cliente esta com a mesma versão que o servidor na hora que ele cria a conexão com o mesmo.
     Para isso, é verificado pelo servidor, se o valor da variável VERSION que fica no User Edits está igual ao nome atual do servidor. Caso isso seja verdade, o cliente continua conectado normalmente, do contrario ele é desconectado imediatamente.
     Recomendo fortemente que, junto a versão atual do seu jogo, você adicione uma senha para identificar o seu jogo (VERSION = 'HgRR22s_1.0'). Assim apenas os clientes que tiverem a senha e que estiverem com a versão correta, podem jogar. Não esqueça que o nome do servidor deve ser exatamente igual ao que esta na variável VERSION (Nesse caso seria: HgRR22s_1.0)

VI. Resposta do cliente

     Esse script ainda não exibe nenhum tipo de mensagem informando que o cliente esta desatualizado. O que acontece caso você esteja usando uma versão não atual vai depender muito do netplay utilizado. Por exemplo, no NPM será exibido uma mensagem de não autenticado, já o NPC deve travar e exibir a mensagem: Script is Hanging.
     É provável que futuramente eu faça algum tipo de mensagem de aviso, mas por hora isso fica a cargo dos utilizadores.

VII. Créditos

Gladistony Silva - Criador

_________________
Verificação da versão do cliente  252057
gladistony
gladistony
Membro Ativo
Membro Ativo

Mensagens : 336
Créditos : 217

http://gladistony.blogspot.com

Ir para o topo Ir para baixo

Verificação da versão do cliente  Empty Re: Verificação da versão do cliente

Mensagem por Valentine Ter Set 30, 2014 9:48 am

Muito bom gladistony, parabéns.

+ 1 crédito

É uma pena que não dê pra fazer a condição:
Código:
if user.group == "admin" then
A coisa mais importante de se usar no server.
Valentine
Valentine
Administrador
Administrador

Medalhas : Verificação da versão do cliente  ZgLkiRU
Mensagens : 5345
Créditos : 1164

https://www.aldeiarpg.com/

Ir para o topo Ir para baixo

Verificação da versão do cliente  Empty Re: Verificação da versão do cliente

Mensagem por gladistony Ter Set 30, 2014 11:21 am

Você já tentou em vez de usar o user.group, usar o user.profile? porque no script do servidor lá esta assim:
Código:
    if user.profile == nil then
     do NP():SendToUser(user.id,"<3>'standard'</3>") end
    else
     do NP():SendToUser(user.id,"<3>"..user.profile.."</3>") end
    end

_________________
Verificação da versão do cliente  252057
gladistony
gladistony
Membro Ativo
Membro Ativo

Mensagens : 336
Créditos : 217

http://gladistony.blogspot.com

Ir para o topo Ir para baixo

Verificação da versão do cliente  Empty Re: Verificação da versão do cliente

Mensagem por Valentine Qua Out 01, 2014 9:43 am

gladistony escreveu:Você já tentou em vez de usar o user.group, usar o user.profile? porque no script do servidor lá esta assim:
Código:
    if user.profile == nil then
     do NP():SendToUser(user.id,"<3>'standard'</3>") end
    else
     do NP():SendToUser(user.id,"<3>"..user.profile.."</3>") end
    end
Também não funciona. O cliente envia a tag < check > e recebe a mesma tag do servidor, no entanto, não há essa parte no functions.lua, o que impossibilita saber que código foi usado pra retornar o grupo.
Valentine
Valentine
Administrador
Administrador

Medalhas : Verificação da versão do cliente  ZgLkiRU
Mensagens : 5345
Créditos : 1164

https://www.aldeiarpg.com/

Ir para o topo Ir para baixo

Verificação da versão do cliente  Empty Re: Verificação da versão do cliente

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos