Participe do fórum, é rápido e fácil

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

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

2 participantes

Ir para baixo

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

Mensagem por lucaswf1 Sex Ago 27 2010, 19:09

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.
lucaswf1
lucaswf1
Estudante
Estudante

Mensagens : 22
Masculino

Ir para o topo Ir para baixo

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

Mensagem por dl_thunder Qui Dez 09 2010, 11:25

Cara,primeiramente:Seus tutos sao otimos,eu li todos eles,voce esplica bem de mais!

Segundo:EI NAO ACREDITO que ninguem posta aqui nos seus tutos,tenho certeza que voce gasta muito do seu tempo fazendo eles,mas pode ter certeza que nao é pq esta ruim,pelo contrario,esta otimo.E pelo visto ninguem se interessa por RGSS,so eu e vc (Laughing)

Mas voce é um scripter experiente.
Parabens.
dl_thunder
dl_thunder
Novato
Novato

Mensagens : 1
Masculino

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