Aldeia RPG

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

Suporte ao desenvolvimento de jogos


2 participantes

    Verificação da versão do cliente

    gladistony
    gladistony
    Membro Ativo
    Membro Ativo


    Mensagens : 336
    Créditos : 217

    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
    Valentine
    Valentine
    Administrador
    Administrador


    Medalhas : Verificação da versão do cliente  ZgLkiRU
    Mensagens : 5336
    Créditos : 1163

    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.
    gladistony
    gladistony
    Membro Ativo
    Membro Ativo


    Mensagens : 336
    Créditos : 217

    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
    Valentine
    Valentine
    Administrador
    Administrador


    Medalhas : Verificação da versão do cliente  ZgLkiRU
    Mensagens : 5336
    Créditos : 1163

    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.

    Conteúdo patrocinado


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

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Dom Abr 28, 2024 5:26 am