Forums » RGSS

Aula Avançada 4: Introdução aos sistemas online

    • 683 posts
    4 de junho de 2015 13h06min44s ART

    Posted Image

    Introdução

    Finalmente estamos chegando nas partes mais esperadas do curso! Posso dizer que agora sim vamos para os conteúdos avançados de RGSS. Hoje começaremos a aprender os segredos por trás dos NPs que tanto usamos, vocês verão que é muito simples criar e alterar comandos dentro de um NP. ATENÇÃO: para simplificar as coisas e para permitir a todos a compreenção do novo X-NP, esta aula será direcionada ao XRGSS, irei mostar detalhes de uso e desenvolvimento!

    Posted Image


    Posted Image

    A Base
    Como na maioria dos NPs, o X-NP usa para todas as operações de troca de dados com o servidor o modulo Network que nada mais é que um pacote de funções prontas que podem ser utilizadas pelos desenvolvedores, para a troca de dados em especial, usamos um socket, que é o responsável direto pelo funcionamento do NP.
    Para você ter uma idéia, no X-NP, são os seguintes scripts os responsáveis pelo funcionamento do próprio:
    [NET] Win32 Library
    [NET] Winsock
    [NET] Socket Library
    [NET] TCPSocket
    [X-NET] Network
    Todos os demais são apenas scripts de funcionalidade, isso não significa que você pode removê-los, apenas saiba que estes são a BASE, o esqueleto de tudo!

    Posted Image


    Posted Image

    Enviando dados
    Todas as funcionalidades do NP são baseadas em Strings, ou seja, todos os comandos nada são além de linhas de texto, mensagens trocadas entre o servidor e os clients. Para distinguir as mensagens, o Network utiliza códigos especiais nas mensagens, todos esses códigos, por padrão, são enviados entre <>, por exemplo, para dizer que o jogador de id 32545 esta desconectando, a mensagem é <9>32545</9>, veja que os <> funcionam como tags html, 9 é o código para desconecção, dentro, apenas a id é o suficiente, isso facilita e muito a vida de todos os programadores e agiliza a troca de dados. SEMPRE que você criar um sistema online, dê preferencia para mensagens curtas, quanto mais compacto, melhor!

    Para enviar você mesmo uma mensagem, basta usar:
    Network::Main.socket.send("mensagem\n") if $online
    É totalmente aconselhável que você use o "if $online", isso porque uma das especialidades do X-NP é rodar On e Offline, só que se você enviar uma mensagem offline da erro e o game fecha! No fim das mensagens sempre use um \n, isso é o mesmo que apertar enter em um texto, ou seja, ele pula uma linha, assim la no servidor, fica uma mensagem por linha e não uma montanha de dados em uma linha só. Todas as mensagens devem ser textos, para mandar variáveis ou switches, use um ".to_s" para converter.

    Posted Image


    Posted Image

    Tipos de código
    Segue abaixo a lista completa de mensagens, não as use sem saber exatamente o que você esta fazendo, a mais usada é a 10, essa sim você pode usar bastante, mas as outras tome cuidado ou pode dar pau em seu game!

    <0> : serve para a autenticação
    <1> : serve para pedir um id de usuário net
    <2> : serve para pegar o nome de usuário
    <3> : atualmente substituido por "check", serve para pegar o grupo
    <5> : envia status do personagem, a posição do mesmo no mapa ou o gold
    <6> : mapa que o char se encontra
    <9> : fecha a concecção(diz que o personagem saiu)(antes era <4>)
    *** <10> : manda comandos como em um chamar script net global, é o mais útil e usável
    <11> : para alterar a mensagem do dia
    <12a> : manda a id na execução de um trade
    <12> : envia itens do trade
    <13a> : chama para o private chat (não feche com o </13a>)
    <13> : envia uma mensagem no chat privado
    <18> : comandos de admin, serve para dar "dc"
    <20> : testa a conecção com o servidor
    <21a> : mesmo que 13a, porém com 2 parâmetros
    <21> : equivalente ao 13 para o 12a
    <22a> : verifica se há pms
    <22d> : envia pms
    <22e> : deleta a lista de pms
    <23> : meche nas local switches (pode usar o 10 tb)
    <24> : chama o usuário para o trade
    <24c> : envia a "trade_id"
    <24d> : sai do trade
    <25> : chama a função de adicionar item ao trade (envia o id)
    <25a> : envia os dados do item adicionado
    <25b> : remove um item do trade
    <25d> : pede para trocar
    <25e> : executa o trade
    <25f> : cancela o trade

    senha : cria uma nova conta com os dados enviados(não é recomendado usar)
    : envia a versão do client
    : pede a mensagem do dia
    senha : envia o login do jogador
    : envia erros ocorridos (fica salvo em errorlog)
    : manda a id(para pvp)
    : novamente a id? (pvp)
    : atualiza o status do personagem (pvp)
    : efeito de dano de ataque (pvp)
    : personagem morreu (pvp)
    : mensagens de chat global
    : salvar as Server Variables
    : requisitar do servidor as Server Variables
    : salvar as Server Switches
    : carregar do servidor as Server Switches

    Posted Image


    Posted Image

    Como funciona a conversão de String para código?
    Você ja percebeu que todos os conteúdos trocados com o servidor são meros textos, porém esses textos são interpretados pelo Network e convertidos em códigos que são executados em seguida, para localizar essas conversões, procure pelo método update_ingame e analise a conversão de textos para códigos, iremos nos aprofundar mais nisso na próxima aula.

    Posted Image


    Tags de Busca

    • Net Play
    • X-RGSS
    • String
    • socket
    • Network