Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| fr:toutcommenceparlereseau [2020/11/28 20:28] – [Factory] aleajactaest | fr:toutcommenceparlereseau [2021/12/03 18:19] (Version actuelle) – modification externe 127.0.0.1 | ||
|---|---|---|---|
| Ligne 55: | Ligne 55: | ||
| --- // | --- // | ||
| </ | </ | ||
| + | |||
| + | <WRAP center round help 60%> | ||
| + | Mise à jour afin de voir si cela convient | ||
| + | --- // | ||
| + | </ | ||
| + | |||
| + | On lance une requette WEB avec la forme suivante | ||
| Le lien dans l' | Le lien dans l' | ||
| Ligne 67: | Ligne 74: | ||
| * '' | * '' | ||
| * '' | * '' | ||
| + | |||
| + | |||
| + | Exemple: | ||
| + | |||
| + | | ||
| Ligne 771: | Ligne 783: | ||
| Maintenant, vous savez comment décoder l' | Maintenant, vous savez comment décoder l' | ||
| + | |||
| + | |||
| + | |||
| + | == Lecture du fichier database.xml == | ||
| + | |||
| + | En complément des messages provenant de msg.xml, nous avons une autre référence database.xml qui a un mode de fonctionnement un peu différent. | ||
| + | Certainne commande Impulse (msg.xml), auront un message encodé via database.xml | ||
| + | |||
| + | Structure du fichier: | ||
| + | |||
| + | <code xml> | ||
| + | < | ||
| + | <!-- dans cette zone existe des informations non utilisés par le client --> | ||
| + | </ | ||
| + | <branch name=x1 bank=" | ||
| + | < | ||
| + | </ | ||
| + | <branch name=x3 bank=" | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | <branch name=x6 bank=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | Nous trouvons le mot de clef branch, que l'on va traduire par branche, et le mot de clef leaf que l'on traduit par feuille. | ||
| + | |||
| + | Ici le premier niveau qui nous interrese est database_description, | ||
| + | Pour la partie branche, cet élément peut contenir d' | ||
| + | |||
| + | Si une branch contient le mot de clef " | ||
| + | |||
| + | Ensuite, nous avons la possibilité d' | ||
| + | |||
| + | L' | ||
| + | |||
| + | Un petit exemple: | ||
| + | |||
| + | <code xml> | ||
| + | < | ||
| + | | ||
| + | | ||
| + | <branch name=" | ||
| + | count=" | ||
| + | < | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | bank=" | ||
| + | atom=" | ||
| + | <leaf name=" | ||
| + | type=" | ||
| + | <branch name=" | ||
| + | count=" | ||
| + | <leaf name=" | ||
| + | type=" | ||
| + | </ | ||
| + | <branch name=" | ||
| + | count=" | ||
| + | <leaf name=" | ||
| + | type=" | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | bank=" | ||
| + | <branch name="" | ||
| + | count=" | ||
| + | atom=" | ||
| + | <leaf name=" | ||
| + | type=" | ||
| + | <leaf name=" | ||
| + | type=" | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | * Entities | ||
| + | * E0 | ||
| + | * P0 (type : I8) | ||
| + | * P1 (type : I8) | ||
| + | * P2 (type : I8) | ||
| + | * E1 | ||
| + | * P0 (type : I8) | ||
| + | * P1 (type : I8) | ||
| + | * P2 (type : I8) | ||
| + | * USER (Atom) | ||
| + | * SKILL_POINTS_0 | ||
| + | * VALUE (type : I32) | ||
| + | * SKILL_POINTS_1 | ||
| + | * VALUE (type : I32) | ||
| + | * SKILL_POINTS_2 | ||
| + | * VALUE (type : I32) | ||
| + | * SKILL_POINTS_3 | ||
| + | * VALUE (type : I32) | ||
| + | * FACTION_POINTS_0 | ||
| + | * VALUE (type : I32) | ||
| + | * FACTION_POINTS_1 | ||
| + | * VALUE (type : I32) | ||
| + | * FACTION_POINTS_2 | ||
| + | * VALUE (type : I32) | ||
| + | * FACTION_POINTS_3 | ||
| + | * VALUE (type : I32) | ||
| + | * FACTION_POINTS_4 | ||
| + | * VALUE (type : I32) | ||
| + | * FACTION_POINTS_5 | ||
| + | * VALUE (type : I32) | ||
| + | * FACTION_POINTS_6 | ||
| + | * VALUE (type : I32) | ||
| + | * GROUP | ||
| + | * 0 (Atom) | ||
| + | * PRESENT (Type : I1 == Booléen) | ||
| + | * UID (Type I20) | ||
| + | * 1 (Atom) | ||
| + | * PRESENT (Type : I1 == Booléen) | ||
| + | * UID (Type I20) | ||
| + | * 2 (Atom) | ||
| + | * PRESENT (Type : I1 == Booléen) | ||
| + | * UID (Type I20) | ||
| + | * 3 (Atom) | ||
| + | * PRESENT (Type : I1 == Booléen) | ||
| + | * UID (Type I20) | ||
| + | * 4 (Atom) | ||
| + | * PRESENT (Type : I1 == Booléen) | ||
| + | * UID (Type I20) | ||
| + | </ | ||
| + | |||
| + | Par exemple le message suivant : | ||
| + | 00.0.10.11111111 | ||
| + | * 00 : < | ||
| + | * 0 : <E0> le 2ème niveau, nous avons ici le choix entre E0 & E1, (1 bit suffit pour trouver l' | ||
| + | * 10 : <P1> le 3ème niveau, nous avons ici le choix entre P0, P1 & P2 (2 bits suffisent pour trouver l' | ||
| + | * 11111111 : <I8> le 4ème niveau, la valeur de la branche | ||
| + | * Résumé : | ||
| + | * Entities: | ||
| + | | ||
| + | 2ème exemple : | ||
| + | 01.0010100.11111111111111111111111111111111.01111111111111111111111111111111 | ||
| + | |||
| + | * 01 : < | ||
| + | * 0010100 : < | ||
| + | * 11111111111111111111111111111111 : < | ||
| + | * 01111111111111111111111111111111 : < | ||
| + | * Résumé: | ||
| + | * USER.SKILL_POINTS_2 = 4294967295 | ||
| + | * USER.SKILL_POINTS_4 = 2147483647 | ||
| + | |||
| + | 3ème exemple : | ||
| + | 10.010.0.1 | ||
| + | |||
| + | * 10 : < | ||
| + | * 010 : < | ||
| + | * 0 : < | ||
| + | * 1 : VALUE = 1 | ||
| + | |||
| + | |||
| + | Les types : | ||
| + | * Ixxx : Entier non signé ou xxx et le nombre de bit à récupèrer | ||
| + | * Sxxx : Entier signé, ou xxx et le nombre de bit à récupèrer | ||
| + | * TEXT : Entier non-signé de 32 bit (dont le bit de poids fort est forcé à zero (jamais négatif - si signé) | ||
| + | |||
| + | |||
| + | |||
| Ligne 2135: | Ligne 2325: | ||
| + | |||
| + | ===== Annexe : Exemple de communication ===== | ||
| + | |||
| + | ==== Exemple d' | ||
| + | |||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Source -> Dest. | Message | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | CONNECTION/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Client -> Serveur | CONNECTION/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | CONNECTION/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Client -> Serveur | CONNECTION/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | CONNECTION/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Client -> Serveur | CONNECTION/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | CONNECTION/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Client -> Serveur | CONNECTION/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | CONNECTION/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | TEAM/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | PHRASE/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | GUILD/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Client -> Serveur | BOTCHAT/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Client -> Serveur | POSITION (X, Y, Z, Heading) | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Client -> Serveur | DEBUG/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | DEATH/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | STRING/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | PHRASE/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | ENCYCLOPEDIA/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | DB_INIT/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Client -> Serveur | NPC_ICON/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | STRING_MANAGER/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | USER/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | NPC_ICON/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | VisualProperty/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | DB_INIT/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | DB_GROUP/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | DB_UPD_PLR | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | PVP_EFFECTS/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | DB_UPD_PLR/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | |||
| + | |||
| + | ==== Exemple d' | ||
| + | |||
| + | Dans les faits, le serveur envoie des identifiant pour le message, si le client ne connais pas l' | ||
| + | |||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Source -> Dest. | Message | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | STRING_MANAGER/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Client -> Serveur | STRING_MANAGER/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | STRING_MANAGER/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | |||
| + | Ex.: | ||
| + | Le serveur demande d' | ||
| + | 7705 : & | ||
| + | 7849 : Dispensaire | ||
| + | 7859 : Terres Contrôlées | ||
| + | | ||
| + | Cela donne le message : & | ||
| + | |||
| + | |||
| + | |||
| + | ===== Annexe : Exemple de communication ===== | ||
| + | |||
| + | ==== Exemple d' | ||
| + | |||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Source -> Dest. | Type de message | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | CONNECTION/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Client -> Serveur | CONNECTION/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | CONNECTION/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Client -> Serveur | CONNECTION/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | CONNECTION/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Client -> Serveur | CONNECTION/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | CONNECTION/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Client -> Serveur | CONNECTION/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | CONNECTION/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | TEAM/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | PHRASE/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | GUILD/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Client -> Serveur | BOTCHAT/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Client -> Serveur | POSITION (X, Y, Z, Heading) | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Client -> Serveur | DEBUG/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | DEATH/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | STRING/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | PHRASE/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | ENCYCLOPEDIA/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | DB_INIT/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Client -> Serveur | NPC_ICON/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | STRING_MANAGER/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | USER/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | NPC_ICON/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | VisualProperty/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | DB_INIT/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | DB_GROUP/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | DB_UPD_PLR | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | PVP_EFFECTS/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | DB_UPD_PLR/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | |||
| + | ==== Exemple d' | ||
| + | |||
| + | Dans les faits, le serveur envoie des identifiant pour le message, si le client ne connais pas l' | ||
| + | |||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Source -> Dest. | Type de message | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | STRING_MANAGER/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Client -> Serveur | STRING_MANAGER/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | | Serveur -> Client | STRING_MANAGER/ | ||
| + | +-------------------+--------------------------------+-------------- | ||
| + | |||
| + | Ex.: | ||
| + | Le serveur demande d' | ||
| + | 7705 : & | ||
| + | 7849 : Dispensaire | ||
| + | 7859 : Terres Contrôlées | ||
| + | | ||
| + | Cela donne le message : & | ||
| + | |||
| + | |||
| + | ===== Annexe : Analyse des structures ===== | ||
| + | |||
| + | ==== Structure du personnage ==== | ||
| + | |||
| + | La structure du personnage est différente entre la création et l' | ||
| + | Il en résulte une contrainte sur les paramètres pour faire coincidé les deux structures. | ||
| + | Dans un premier cas, on retrouve toutes les propriétés sur un mutltiple de 8 bits, and le deuxième cas, on contracte les données en trois entier de 64 bits. (bref moins de place donc certain paramètres on pas la possibilité d' | ||
| + | De plus quand on recharge les personnages, | ||
| + | * * Liste à puce | ||
| + | === Structure création du personnage === | ||
| + | |||
| + | == Structure création du personnage == | ||
| + | |||
| + | Type de message : CONNECTION/ | ||
| + | |||
| + | * (Uint8) Slot | ||
| + | * (Uint32) SheetId | ||
| + | * (Uint32) CSessionId | ||
| + | * (Uint32) name:size | ||
| + | * (UString) name: | ||
| + | * (Uint8) People | ||
| + | * (Uint8) Sex | ||
| + | * (Uint8) NbPointFighter | ||
| + | * (Uint8) NbPointCaster | ||
| + | * (Uint8) NbPointCrafter | ||
| + | * (Uint8) NbPointHarvester | ||
| + | * (Sint32) StartPoint | ||
| + | * (Sint8) HairType | ||
| + | * (Sint8) HairColor | ||
| + | * (Sint8) GabaritHeight | ||
| + | * (Sint8) GabaritTorsoWidth | ||
| + | * (Sint8) GabaritArmsWidth | ||
| + | * (Sint8) GabaritLegsWidth | ||
| + | * (Sint8) GabaritBreastSize | ||
| + | * (Sint8) MorphTarget1 | ||
| + | * (Sint8) MorphTarget2 | ||
| + | * (Sint8) MorphTarget3 | ||
| + | * (Sint8) MorphTarget4 | ||
| + | * (Sint8) MorphTarget5 | ||
| + | * (Sint8) MorphTarget6 | ||
| + | * (Sint8) MorphTarget7 | ||
| + | * (Sint8) MorphTarget8 | ||
| + | * (Sint8) EyesColor | ||
| + | * (Sint8) Tattoo | ||
| + | * (Sint8) JacketColor | ||
| + | * (Sint8) TrousersColor | ||
| + | * (Sint8) HatColor | ||
| + | * (Sint8) ArmsColor | ||
| + | * (Sint8) HandsColor | ||
| + | * (Sint8) FeetColor | ||
| + | |||
| + | Source : | ||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | |||
| + | === Structure reception pour les autres joueurs === | ||
| + | |||
| + | Ils existent plusieurs messages qui receptionne les caractèristiques. | ||
| + | |||
| + | * Les messages du type CONNECTION/ | ||
| + | * Utilise la structure VPA, VPB & VPC | ||
| + | * Les messages du type VisualProperty (on réception les caractèristiques des différentes entités [personnages d' | ||
| + | * Utilise la structure VPA & VPC (pas la VPB - étrange) | ||
| + | |||
| + | == Structure VisualPropA == | ||
| + | |||
| + | VPA: VisualPropA est de type Uint64 (unsigned int 64 bits). | ||
| + | |||
| + | [Source: khanat-opennel-code/ | ||
| + | |||
| + | * Sex : 1 bit/ | ||
| + | * JacketModel : 8 bits (max: 255) | ||
| + | * JacketColor : 3 bits (max: 7) | ||
| + | * TrouserModel : 8 bits (max 255) | ||
| + | * TrouserColor : 3 bits (max: 7) | ||
| + | * WeaponRightHand : 10 bits (max: 1023) | ||
| + | * WeaponLeftHand : 8 bits (max: 255) | ||
| + | * ArmModel : 8 bits (max: 255) | ||
| + | * ArmColor : 3 bits (max: 7) | ||
| + | * HatModel : 9 bits (max: 511) | ||
| + | * HatColor : 3 bits (max: 7) | ||
| + | |||
| + | Remarque concernant le sexe : | ||
| + | On peut noter qu'il n'y a que 2 possibilités pour le sexe, mâle ou femelle. | ||
| + | (on peut dire adieu aux autres formes de reproduction (asexuée, clonnage, changement de sexe suivant l' | ||
| + | |||
| + | == Structure VisualPropB == | ||
| + | |||
| + | VPB: VisualPropB est de type Uint64 (unsigned int 64 bits). | ||
| + | |||
| + | [Source: khanat-opennel-code/ | ||
| + | |||
| + | * Name : 16 bits (max: 65535) -> ID qui permettrant de retrouver dans la liste des mots stockés | ||
| + | * HandsModel : 9 bits (max: 511) | ||
| + | * HandsColor : 3 bits (max: 7) | ||
| + | * FeetModel : 9 bits (max: 511) | ||
| + | * FeetColor : 3 bits (max: 7) | ||
| + | * RTrail : 4 bits (max: 15) | ||
| + | * LTrail : 3 bits (max: 7) | ||
| + | * Reste : 17 bits non utilisée | ||
| + | |||
| + | == Structure VisualPropC == | ||
| + | |||
| + | VPC: VisualPropC est de type Uint64 (unsigned int 64 bits). | ||
| + | |||
| + | [Source: khanat-opennel-code/ | ||
| + | |||
| + | * MorphTarget1 : 3 bits (max: 7) | ||
| + | * MorphTarget2 : 3 bits (max: 7) | ||
| + | * MorphTarget3 : 3 bits (max: 7) | ||
| + | * MorphTarget4 : 3 bits (max: 7) | ||
| + | * MorphTarget5 : 3 bits (max: 7) | ||
| + | * MorphTarget6 : 3 bits (max: 7) | ||
| + | * MorphTarget7 : 3 bits (max: 7) | ||
| + | * MorphTarget8 : 3 bits (max: 7) | ||
| + | * EyesColor : 3 bits (max: 7) | ||
| + | * Tattoo : 7 bits (max: 127) | ||
| + | * CharacterHeight : 4 bits (max: 15) | ||
| + | * TorsoWidth : 4 bits (max: 15) | ||
| + | * ArmsWidth : 4 bits (max: 15) | ||
| + | * LegsWidth : 4 bits (max: 15) | ||
| + | * BreastSize : 4 bits (max: 15) | ||
| + | * Reste : 10 bits non utilisée | ||
| {{tag> | {{tag> | ||





