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


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

    MickeyRocknn
    MickeyRocknn
    Iniciante
    Iniciante


    Mensagens : 71
    Créditos : 9

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

    Mensagem por MickeyRocknn Sáb Abr 28, 2012 1:41 pm

    Vi Esta Aula No Aprendiz RPG É Vou Disponibilizar Aqui. Criador: Lucaswf1

    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!


    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!


    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, 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.


    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 )
    <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


    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.

      Data/hora atual: Qui Nov 21, 2024 4:19 pm