Par rapport a la version, si elle est utilisée une fois de plus, je te l'accorde, autrement, encore une fois, seule la "lisibilité" défend la classe que tu utilises une seule fois dans ton code, j'ai pas mal de pratique derrière moi, notamment en c / c++, je préfère clairement 8 writebytes bien commentés a une classe. Après, tu me dis que j'en aurai besoin à d'autres moment, je la code, sinon, ça se vaut très largement, notamment grâce au fait que ces 8 writebytes se trouvent eux mêmes dans une méthodes de 10 - 12 lignes elle même dans une classe spécifique au message (dans le fin fond du code). Encore une fois, c'est une attitude née du fait que mon manque d'expérience du protocole D2 m'a poussé à croire que ce serait unique dans le programme.
Pour moi, du code sale non redondant bien encapsulé convertissant deux fichiers en 8 lignes se justifie. En l’occurrence ici, ce n'est pas le cas => je recommence, et il semble que comme tu le dise, un bot doit être plus rigoureusement codé que je ne le pensais, je ferai plus attention à l'avenir =)
Merci ^^
PS : Parler de son code avec d'autres personne pour connaître son point de vu, perso, ça m'intéresse =)
EDIT :
Après quelques recherches, j'ai trouvé deux trois choses intéressantes mais j'aimerai avoir confirmation par rapport au message 4.
En regardant le .as, on trouve ça :
Cliquez pour révéler
Cliquez pour masquer
public function serializeAs_IdentificationMessage(param1:IDataOutput) : void {
var _loc2_:uint = 0;
_loc2_=BooleanByteWrapper.setFlag(_loc2_,0,this.autoconnect);
_loc2_=BooleanByteWrapper.setFlag(_loc2_,1,this.useCertificate);
_loc2_=BooleanByteWrapper.setFlag(_loc2_,2,this.useLoginToken);
param1.writeByte(_loc2_);
this.version.serializeAs_VersionExtended(param1);
param1.writeUTF(this.lang);
param1.writeShort(this.credentials.length);
var _loc3_:uint = 0;
while(_loc3_ < this.credentials.length)
{
param1.writeByte(this.credentials[_loc3_]);
_loc3_++;
}
param1.writeShort(this.serverId);
param1.writeDouble(this.sessionOptionalSalt);
return;
}
Après, je regarde mon message :
(00) (02 0d 04 00 01 26 23 01) (00 01 01) (00 02 66 72) (jusqu'à la langue)
On retrouve le boolean, la version, ???, la langue. Mais que se trouve t-il entre la version et la langue ?
Autre chose, a quoi correspondent useCertificate et useLoginToken ?
Par rapport a cipherRsa, param1 et param2 correspondent ils bien aux idents ? TrustCertificatate est à traduire uniquement dans le cas où useCertificate est valide non ? useCertificate servant à mon avis à valider l'ordinateur via certificat, faut au moins l'utiliser au premier lancement du bot non ?
Beaucoup de question :D