Ir para conteúdo
Faça parte da equipe! (2024) ×
Conheça nossa Beta Zone! Novas áreas a caminho! ×
  • Quem está por aqui   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.

source Calculo de Keys enviados no P_10A(CharList)


DwarfDev
 Compartilhar

Posts Recomendados

Legal, alguém começando a entender um pouco mais do protocolo. 

Sobre seu edit posterior, o WYD é feito sobre protocolo TCP/IP, isso não é do "WYD". É diferente de um protocolo UDP, por exemplo.

O cliente não vai comer pacote algum. Se algum pacote não chegar, é por falha de conexão, apenas, porque o protocolo TCP/IP garante certas coisas de acordo com sua especificação. Além disso, após o 16° pacote, a Key não muda, então não é um motivo de queda (não após mover um pouco dentro do jogo). 

O uso de WPE foi corrigido implementando timestamp. Onde pacotes deveriam respeitar o tempo do servidor. Pacotes enviados com WPE são sempre com o mesmo timestamp.

Editado por Shepher
Link para o comentário
Compartilhar em outros sites

31 minutos atrás, Shepher disse:

Legal, alguém começando a entender um pouco mais do protocolo. 

Sobre seu edit posterior, o WYD é feito sobre protocolo TCP/IP, isso não é do "WYD". É diferente de um protocolo UDP, por exemplo.

O cliente não vai comer pacote algum. Se algum pacote não chegar, é por falha de conexão, apenas, porque o protocolo TCP/IP garante certas coisas de acordo com sua especificação. Além disso, após o 16° pacote, a Key não muda, então não é um motivo de queda (não após mover um pouco dentro do jogo). 

Sabe, eu sempre tive uma duvida. Eu não entendo muito de rede(comecei a estudar há pouco tempo), mas eu percebi que quando estou lendo os pacotes, acontece caso em que chega vários pacotes no mesmo buffer, ou pelo menos é isso que o servidor me mostra. E quando isso acontece, em uma source que vi onde foi refeito o recv, ele lê o primeiro pacote e ignora o resto. 

 

Sobre a 16° key não mudar, estou ciente. Mas o DC que acontece quando você acaba de logar, é exatamente por não ter chegado na 16° key, e o client incrementou o contador sem que o servidor tenha recebido o pacote(falha de rede?). Por isso, disse que além do timestamp existe outra maneira, apesar de não ser tão eficiente quanto e ser mais perigosa de se colocar. Seria enviando um pacote pro client, solicitando que ele mude o keyCount para X valor(menor que 16). São só ideias :v

Editado por DwarfDev
Link para o comentário
Compartilhar em outros sites

12 minutos atrás, DwarfDev disse:

Sabe, eu sempre tive uma duvida. Eu não entendo muito de rede(comecei a estudar há pouco tempo), mas eu percebi que quando estou lendo os pacotes, acontece caso em que chega vários pacotes no mesmo buffer, ou pelo menos é isso que o servidor me mostra. E quando isso acontece, em uma source que vi onde foi refeito o recv, ele lê o primeiro pacote e ignora o resto. 

É o modo como o WYD implementou o sistema de pacotes. Ele acumula todos os pacotes e em 500ms envia. Nesse intervalo pro próximo envio, ele vai acumulando todos os pacotes e os envia todos em ordem.

Isso não foi inventado pela equipe do WYD. O nome disso é Algoritmo de Nagle (Nagle-Algorithm).

Deve ser implementado o método contrário. Lê pacote por pacote dentro do mesmo buffer.

Link para o comentário
Compartilhar em outros sites

3 minutos atrás, Shepher disse:

É o modo como o WYD implementou o sistema de pacotes. Ele acumula todos os pacotes e em 500ms envia. Nesse intervalo pro próximo envio, ele vai acumulando todos os pacotes e os envia todos em ordem.

Isso não foi inventado pela equipe do WYD. O nome disso é Algoritmo de Nagle (Nagle-Algorithm).

Deve ser implementado o método contrário. Lê pacote por pacote dentro do mesmo buffer.

Hm... não tinha ouvido falar desse Algoritmo, apesar de já ter usado várias vezes, hehe.

No meu caso que uso a base do open-wyd (em c#), eu salvo todos os pacotes em uma lista do tipo List<byte> e vou lendo/removendo de acordo com a size informada no header, e caso esteja faltando um "pedaço" do pacote(o que acontece as vezes) eu espero o client mandar o resto, pois na leitura feita pelo sistema do @Rechdan DOD estava simplesmente ignorando uma porrada de pacote. 

 

 

Editado por DwarfDev
Link para o comentário
Compartilhar em outros sites

18 minutos atrás, DwarfDev disse:

Hm... não tinha ouvido falar desse Algoritmo, apesar de já ter usado várias vezes, hehe.

No meu caso que uso a base do open-wyd (em c#), eu salvo todos os pacotes em uma lista do tipo List<byte> e vou lendo/removendo de acordo com a size informada no header, e caso esteja faltando um "pedaço" do pacote(o que acontece as vezes) eu espero o client mandar o resto, pois na leitura feita pelo sistema do @Rechdan DOD estava simplesmente ignorando uma porrada de pacote. 

 

 

É o jeito de se fazer. O recv tem que ser byte a byte. Ler 4 bytes, pegar o valor deles, ler o tamanho lido anteriormente e assim sucessivamente. 

Detalhe: a implementação do IList<T> no C# é como um std::vector no C++.
Sempre que um item é adicionado, e este item supera o size que já havia previamente alocado, ele aloca um novo espaço com o dobro do tamanho, depois move todos os elementos para a nova área. Isso pode ocorrer perda de performance, não sei se tão notória para o mundo do WYD, mas pode ser melhor feito. 

Link para o comentário
Compartilhar em outros sites

uma vez deu uma treta com o xbenny e o skinf4xi no tempo da cb que o skin postou o bot dele pra derrubar o wyd da ongame
ai o benny postou a src, isso em 2015- se não me engano
o raphaelxd tbm soltou na src do bot dele 

 

É necessário se cadastrar para acessar o conteúdo.



em delphi eu fiz assim
 

É necessário se cadastrar para acessar o conteúdo.

 

Editado por thebad.cb
Link para o comentário
Compartilhar em outros sites

8 horas atrás, thebad.cb disse:

uma vez deu uma treta com o xbenny e o skinf4xi no tempo da cb que o skin postou o bot dele pra derrubar o wyd da ongame
ai o benny postou a src, isso em 2015- se não me engano
o raphaelxd tbm soltou na src do bot dele 

 

É necessário se cadastrar para acessar o conteúdo.



em delphi eu fiz assim
 

É necessário se cadastrar para acessar o conteúdo.

 

Esses viciados em Delphi. Parece até o Fabio kk

Link para o comentário
Compartilhar em outros sites

Participe da Conversa

Você pode postar agora e se cadastrar mais tarde. Cadastre-se Agora para publicar com Sua Conta.
Observação: sua postagem exigirá aprovação do moderador antes de ficar visível.

Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.

 Compartilhar

×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.