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/08/22 14:22] – [Étape 0 : Enregistrer un nouveau compte] PreWRAP sur le code YannK | fr:toutcommenceparlereseau [2021/12/03 19:19] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 53: | Ligne 53: | ||
Ce qui suit n'est pas clair. Je propose une reformulation, | Ce qui suit n'est pas clair. Je propose une reformulation, | ||
- | --- //[[wiki:user: | + | --- // |
</ | </ | ||
+ | |||
+ | <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 90: | Ligne 102: | ||
**1. Client -> Serveur** | **1. Client -> Serveur** | ||
- | Demande le grain de sable((Le sel du mot de passe? Je ne suis pas sûre de comprendre... | + | Demande |
URL formatée de la façon suivante : | URL formatée de la façon suivante : | ||
Ligne 409: | Ligne 421: | ||
N' | N' | ||
- | On lit les trois paquets (A, B & C, ici tous nommé Z) | + | On lit les trois paquets (A, B & C, que j'ai converti/nommé Z), car je ne vois pas très bien l' |
Ligne 417: | Ligne 429: | ||
+---------+ | +---------+ | ||
- | Puis pour chaque paquet Z on lit paquet Z((Ici, je ne suis pas sûre de mon ajout de '' | + | Puis pour chaque paquet Z on lit le champ '' |
+----------+ | +----------+ | ||
- | | Packet Z | | next | ActionFactory | + | | Packet Z | | next | ActionFactory |
| X bits | --> | 1 bit | X bits | 1 bit | X bits | 1 bit | | | X bits | --> | 1 bit | X bits | 1 bit | X bits | 1 bit | | ||
+----------+ | +----------+ | ||
Ligne 445: | Ligne 457: | ||
+------+ | +------+ | ||
- | === Action === | + | Voir la section Action pour ActionCode. |
+ | |||
+ | |||
+ | ==== Paquet envoyé par le client ==== | ||
+ | |||
+ | < | ||
+ | Il faut remarqué ici, que la taille d'un paquet envoyé par le client est limité, si on dépasse, le serveur ignore le message. | ||
+ | </ | ||
+ | |||
+ | === Corps du message === | ||
+ | |||
+ | +-------------------+------------+--- | ||
+ | | CurrentSendNumber | SystemMode | . . . | ||
+ | | 32 bits | 1 bit | | ||
+ | +-------------------+------------+--- | ||
+ | 1 -> system mode | ||
+ | 0 -> normal mode | ||
+ | |||
+ | |||
+ | |||
+ | * CurrentSendNumber : un compteur qui s' | ||
+ | * SystemMode : Informe que le type de message est dit " | ||
+ | |||
+ | |||
+ | === Message système === | ||
+ | |||
+ | |||
+ | +-------------------+------------+---------+--- | ||
+ | | CurrentSendNumber | SystemMode | Message | . . . | ||
+ | | 32 bits | 1 bit | 8 Bits | | ||
+ | +-------------------+------------+---------+--- | ||
+ | | xxxxxxxxxxxxxxxx | | ||
+ | |||
+ | Suivant la valeur du message, nous avons des paramètres spécifiques. | ||
+ | |||
+ | Notez qu'ici nous utilisons 8 bits, on aurait pu réduire la taille afin d' | ||
+ | |||
+ | À savoir qu'il y a 5 types de messages provenant du client & 5 types de messages provenant du serveur, soit une taille de 3 bits. | ||
+ | |||
+ | == Message 0 : SYSTEM_LOGIN_CODE == | ||
+ | Message émis par le client. | ||
+ | |||
+ | +-------------------+------------+---------+-----------+----------+----------+-------- / ---------+ | ||
+ | | CurrentSendNumber | SystemMode | Message | User Addr | User Key | User ID | Langue | ||
+ | | 32 bits | 1 bit | 8 Bits | 32 bits | 32 bits | 32 bits | String | ||
+ | | | ||
+ | +-------------------+------------+---------+-----------+----------+----------+-------- / ---------+ | ||
+ | | xxxxxxxxxxxxxxxx | | ||
+ | |||
+ | |||
+ | |||
+ | == Message 2 : SYSTEM_ACK_SYNC_CODE == | ||
+ | Message émis par le client. | ||
+ | Message utilisé pour acquitter d'une demande de synchronisation. | ||
+ | |||
+ | +-------------------+------------+---------+-----------+----------+-----------------+----------+ | ||
+ | | CurrentSendNumber | SystemMode | Message | frontack | ||
+ | | 32 bits | 1 bit | 8 Bits | 32 bits | 32 bits | 1024 bits | 32 bits | | ||
+ | | | ||
+ | +-------------------+------------+---------+-----------+----------+-----------------+----------+ | ||
+ | | xxxxxxxxxxxxxxxx | | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | |||
+ | == Message 4 : SYSTEM_ACK_PROBE_CODE == | ||
+ | Message émis par le client. | ||
+ | |||
+ | Acquitte des messages PROBE envoyés. | ||
+ | |||
+ | +-------------------+------------+---------+-------------+---------+---------+-- / --+---------+ | ||
+ | | CurrentSendNumber | SystemMode | Message | Taille : X | Probe 1 | Probe 2 | | Probe X | | ||
+ | | 32 bits | 1 bit | 8 Bits | 32 bits | 32 bits | 32 bits | | 32 bits | | ||
+ | | | ||
+ | +-------------------+------------+---------+-------------+---------+---------+-- / --+---------+ | ||
+ | | xxxxxxxxxxxxxxxx | | ||
+ | |||
+ | |||
+ | == Message 5 : SYSTEM_DISCONNECTION_CODE == | ||
+ | Message émis par le client. | ||
+ | |||
+ | +-------------------+------------+---------+ | ||
+ | | CurrentSendNumber | SystemMode | Message | | ||
+ | | 32 bits | 1 bit | 8 Bits | | ||
+ | | | ||
+ | +-------------------+------------+---------+ | ||
+ | | xxxxxxxxxxxxxxxx | | ||
+ | |||
+ | |||
+ | == Message 8 : SYSTEM_QUIT_CODE == | ||
+ | Message émis par le client. | ||
+ | |||
+ | +-------------------+------------+---------+---------+ | ||
+ | | CurrentSendNumber | SystemMode | Message | Quit Id | | ||
+ | | 32 bits | 1 bit | 8 Bits | 32 bits | | ||
+ | | | ||
+ | +-------------------+------------+---------+---------+ | ||
+ | | xxxxxxxxxxxxxxxx | | ||
+ | |||
+ | |||
+ | |||
+ | === Message normal === | ||
+ | |||
+ | |||
+ | +-------------------+------------+---- | ||
+ | | CurrentSendNumber | SystemMode | . . . | ||
+ | | 32 bits | 1 bit | | ||
+ | +-------------------+------------+---- | ||
+ | | xxxxxxxxxxxxxxxx | | ||
+ | |||
+ | À remplir. | ||
+ | |||
+ | ===== Les différents groupes de données ===== | ||
+ | |||
+ | ==== Action | ||
Nous avons différents type '' | Nous avons différents type '' | ||
Ligne 584: | Ligne 713: | ||
- | === Impulse === | + | ==== Impulse |
+ | |||
+ | === Comment ça marche | ||
Ici, nous allons utilisé la structure '' | Ici, nous allons utilisé la structure '' | ||
Ligne 654: | Ligne 785: | ||
- | == Décodage Impulse == | ||
- | Les messages impulses sont construits suivant le format suivant : | + | == Lecture |
- | * premier champ contenant le code '' | + | |
- | * champs suivants : les paramètres | + | |
- | Cela donne le schéma suivant : | + | 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 msg.xml | paramètres | | + | |
- | | x bits | x bits | | + | |
- | | unsigned | + | |
- | +--------------+---- / -----+ | + | |
- | == STRING_MANAGER: | + | <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=" | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
- | Commande utilisée pour initialiser | + | Nous trouvons |
- | Ici, on vérifie que notre tableau interne au client a la même date que le tableau du serveur. Sinon, on efface le tableau | + | Ici le premier niveau qui nous interrese est database_description, puis ensuite |
+ | Pour la partie branche, cet élément peut contenir d' | ||
- | Code actuel : '' | + | Si une branch contient le mot de clef " |
- | <WRAP center round important 60%> | + | Ensuite, nous avons la possibilité d'avoir le mot clef 'atom', s'il est à 1, cela implique une gestion différente |
- | Attention : dépend de la version que vous avez de '' | + | |
- | </WRAP> | + | |
+ | L' | ||
- | +----------------+--------------+------------------+ | + | Un petit exemple: |
- | | STRING_MANAGER | RELOAD_CACHE | timestamp | + | |
- | | 6 bits | 3 bits | uint32 | + | |
- | | 011011 | + | |
- | +----------------+--------------+------------------+ | + | |
- | * '' | + | <code xml> |
+ | < | ||
+ | | ||
+ | | ||
+ | <branch name=" | ||
+ | count=" | ||
+ | < | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | </ | ||
+ | < | ||
+ | bank=" | ||
+ | atom=" | ||
+ | <leaf name=" | ||
+ | type=" | ||
+ | <branch name=" | ||
+ | count=" | ||
+ | <leaf name=" | ||
+ | type=" | ||
+ | </ | ||
+ | <branch name=" | ||
+ | count=" | ||
+ | <leaf name=" | ||
+ | type=" | ||
+ | </ | ||
+ | </ | ||
- | == STRING_MANAGER: | + | < |
+ | bank=" | ||
+ | <branch name="" | ||
+ | count=" | ||
+ | atom=" | ||
+ | <leaf name=" | ||
+ | type=" | ||
+ | <leaf name=" | ||
+ | type=" | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
- | Le serveur envoie un message, plus précisément le pointeur sur le message. | + | < |
+ | * 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) | ||
+ | </ | ||
- | Code actuel | + | 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'élément) | ||
+ | * 10 : <P1> le 3ème niveau, nous avons ici le choix entre P0, P1 & P2 (2 bits suffisent pour trouver l'élément) | ||
+ | * 11111111 : <I8> le 4ème niveau, la valeur de la branche | ||
+ | * Résumé : | ||
+ | * Entities: | ||
+ | |||
+ | 2ème exemple : | ||
+ | 01.0010100.11111111111111111111111111111111.01111111111111111111111111111111 | ||
- | <WRAP center round important 60%> | + | * 01 : <USER> le 1er nieveau est sur 2 bit (on a trois elements 0,1 & 2) => 2 bit pour sélectionner celui que l'on veut. |
- | Attention : dépend de la version | + | * 0010100 : < |
- | </WRAP> | + | * 11111111111111111111111111111111 : <VALUE> 4294967295 |
- | | + | * 01111111111111111111111111111111 : < |
- | | STRING_MANAGER | PHRASE_SEND | + | |
- | | + | |
- | | + | |
- | +----------------+--------------+------------------+------------------+ | + | |
- | * '' | + | 3ème exemple |
- | * '' | + | 10.010.0.1 |
+ | * 10 : < | ||
+ | * 010 : < | ||
+ | * 0 : < | ||
+ | * 1 : VALUE = 1 | ||
- | == STRING_MANAGER:STRING_RQ == | + | |
+ | 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é) | ||
- | Le client demande le message complet en fonction du pointeur. | ||
- | Code actuel : '' | ||
- | +----------------+--------------+------------------+ | ||
- | | STRING_MANAGER | STRING_RQ | ||
- | | 6 bits | 3 bits | uint32 | ||
- | | 011011 | ||
- | +----------------+--------------+------------------+ | ||
- | * '' | ||
- | Le serveur va répondre à ce message par '' | + | == Décodage Impulse == |
- | == STRING_MANAGER:STRING_RESP == | + | Les messages impulses sont construits suivant le format suivant |
+ | * premier champ contenant le code '' | ||
+ | * champs suivants : les paramètres du code '' | ||
- | Le serveur renvoie | + | Cela donne le schéma suivant : |
- | Code actuel : '' | + | +--------------+---- / -----+ |
+ | | code msg.xml | paramètres | | ||
+ | | x bits | x bits | | ||
+ | | unsigned | ||
+ | +--------------+---- / -----+ | ||
- | +----------------+--------------+------------------+--------------+ | + | === Commande impulse === |
- | | STRING_MANAGER | STRING_RESP | + | |
- | | 6 bits | 3 bits | uint32 | + | |
- | | 011011 | + | |
- | +----------------+--------------+------------------+--------------+ | + | |
- | * '' | + | == TARGET:PARTY == |
- | * '' | + | |
- | On remarque ici l' | + | == TARGET: |
+ | == TARGET: | ||
- | == CONNECTION:ASK_NAME | + | == TARGET:NO_FOLLOW |
- | + | ||
- | Le client donne le nom et son ID (zone ?) et demande une vérification côté serveur. | + | |
- | + | ||
- | Code actuel : '' | + | |
- | + | ||
- | <WRAP center round important 60%> | + | |
- | Attention : dépend de la version que vous avez de msg.xml, suceptible de changer. | + | |
- | </ | + | |
- | + | ||
- | +----------------+--------------+------------------+------------------+ | + | |
- | | CONNECTION | + | |
- | | 6 bits | 5 bits | X bits | Uint32 | + | |
- | | 000001 | + | |
- | +----------------+--------------+------------------+------------------+ | + | |
- | + | ||
- | + | ||
- | * Name (String-UTF-16) | + | |
- | * HomeSessionId (Uint32) | + | |
- | + | ||
- | Retour attendu : '' | + | |
- | + | ||
- | + | ||
- | == CONNECTION: | + | |
- | + | ||
- | Le serveur répond à une requête '' | + | |
- | + | ||
- | + | ||
- | Code actuel : '' | + | |
- | + | ||
- | <WRAP center round important 60%> | + | |
- | Attention: dépend de la version que vous avez de msg.xml, susceptible de changer.</ | + | |
- | + | ||
- | + | ||
- | +----------------+--------------+-----------------+ | + | |
- | | CONNECTION | + | |
- | | 6 bits | 5 bits | 8 bits | | + | |
- | | 000001 | + | |
- | +----------------+--------------+-----------------+ | + | |
- | + | ||
- | + | ||
- | * valide (Uint8) : 1 => valide, sinon non valide | + | |
- | + | ||
- | + | ||
- | == CONNECTION: | + | |
- | + | ||
- | Le client sélectionne un personnage. | + | |
- | + | ||
- | Code actuel : '' | + | |
- | + | ||
- | <WRAP center round important 60%> | + | |
- | Attention: dépend de la version que vous avez de msg.xml, susceptible de changer. | + | |
- | </ | + | |
- | + | ||
- | + | ||
- | +----------------+--------------+-----------------+ | + | |
- | | CONNECTION | + | |
- | | 6 bits | 5 bits | 8 bits | | + | |
- | | 000001 | + | |
- | +----------------+--------------+-----------------+ | + | |
- | + | ||
- | + | ||
- | * SelectCharMsg (Uint8) : id du personnage (entre 0 et 4, actuellement on ne peut avoir que 5 personnages maximum) | + | |
- | + | ||
- | En retour de cette commande, le serveur va répondre '' | + | |
== CONNECTION: | == CONNECTION: | ||
Ligne 840: | Ligne 1017: | ||
- | == CONNECTION:READY == | + | == CONNECTION:NO_USER_CHAR |
- | Le serveur informe au client qu'il est prêt, puis le client informe ensuite au serveur qu'il est prêt. | + | == CONNECTION: |
- | Code actuel : '' | ||
- | |||
- | <WRAP center round important 60%> | ||
- | Attention : dépend de la version que vous avez de msg.xml, susceptible de changer. | ||
- | </ | ||
- | |||
- | |||
- | +------------+------------+--------------+ | ||
- | | CONNECTION | READY | LanguageCode | | ||
- | | 6 bits | 5 bits | String | ||
- | | 000001 | ||
- | +------------+------------+--------------+ | ||
- | |||
- | * LanguageCode (String) | ||
- | |||
- | |||
- | == CONNECTION: | ||
Liste tous les paramètres de l' | Liste tous les paramètres de l' | ||
Ligne 908: | Ligne 1068: | ||
== CONNECTION: | == CONNECTION: | ||
+ | |||
Création d'un nouveau personnage. | Création d'un nouveau personnage. | ||
Ligne 959: | Ligne 1120: | ||
- | == GUILD:USE_FEMALE_TITLES | + | == CONNECTION:SELECT_CHAR |
- | Le serveur signale que la guilde((Le MMORPG utilise | + | Le client sélectionne |
- | Code actuel : '' | + | Code actuel : '' |
+ | |||
+ | <WRAP center round important 60%> | ||
+ | Attention: dépend de la version que vous avez de msg.xml, susceptible de changer. | ||
+ | </ | ||
+ | |||
+ | |||
+ | +----------------+--------------+-----------------+ | ||
+ | | CONNECTION | ||
+ | | 6 bits | 5 bits | 8 bits | | ||
+ | | 000001 | ||
+ | +----------------+--------------+-----------------+ | ||
+ | |||
+ | |||
+ | * SelectCharMsg (Uint8) : id du personnage (entre 0 et 4, actuellement on ne peut avoir que 5 personnages maximum) | ||
+ | |||
+ | En retour de cette commande, le serveur va répondre '' | ||
+ | |||
+ | |||
+ | == CONNECTION: | ||
+ | |||
+ | == CONNECTION: | ||
+ | |||
+ | == CONNECTION: | ||
+ | |||
+ | == CONNECTION: | ||
+ | |||
+ | Le serveur informe au client qu'il est prêt, puis le client informe ensuite au serveur qu'il est prêt. | ||
+ | |||
+ | Code actuel : '' | ||
<WRAP center round important 60%> | <WRAP center round important 60%> | ||
Ligne 969: | Ligne 1159: | ||
</ | </ | ||
- | +------------+-------------------+--------------------+ | ||
- | | GUILD | USE_FEMALE_TITLES | UseFemaleTitles | ||
- | | 6 bits | 5 bits | bool | | ||
- | | 011100 | ||
- | +------------+-------------------+--------------------+ | ||
- | | + | +------------+------------+--------------+ |
+ | | CONNECTION | READY | LanguageCode | | ||
+ | | 6 bits | 5 bits | String | ||
+ | | 000001 | ||
+ | +------------+------------+--------------+ | ||
+ | |||
+ | * LanguageCode | ||
+ | |||
+ | |||
+ | == CONNECTION: | ||
+ | |||
+ | == CONNECTION: | ||
+ | |||
+ | Le client donne le nom et son ID (zone ?) et demande une vérification côté serveur. | ||
+ | |||
+ | Code actuel : '' | ||
+ | |||
+ | <WRAP center round important 60%> | ||
+ | Attention : dépend de la version que vous avez de msg.xml, suceptible de changer. | ||
+ | </ | ||
+ | |||
+ | +----------------+--------------+------------------+------------------+ | ||
+ | | CONNECTION | ||
+ | | 6 bits | 5 bits | X bits | Uint32 | ||
+ | | 000001 | ||
+ | +----------------+--------------+------------------+------------------+ | ||
+ | |||
+ | |||
+ | * Name (String-UTF-16) | ||
+ | * HomeSessionId (Uint32) | ||
+ | |||
+ | Retour attendu : '' | ||
+ | |||
+ | |||
+ | == CONNECTION: | ||
+ | |||
+ | Le serveur répond à une requête '' | ||
+ | |||
+ | |||
+ | Code actuel : '' | ||
+ | |||
+ | <WRAP center round important 60%> | ||
+ | Attention: dépend de la version que vous avez de msg.xml, susceptible de changer.</ | ||
+ | |||
+ | |||
+ | +----------------+--------------+-----------------+ | ||
+ | | CONNECTION | ||
+ | | 6 bits | 5 bits | 8 bits | | ||
+ | | 000001 | ||
+ | +----------------+--------------+-----------------+ | ||
+ | |||
+ | |||
+ | * valide (Uint8) : 1 => valide, sinon non valide | ||
+ | |||
+ | |||
+ | == CONNECTION: | ||
+ | |||
+ | == CONNECTION: | ||
+ | |||
+ | == CONNECTION: | ||
+ | |||
+ | == CONNECTION: | ||
+ | |||
+ | == CONNECTION: | ||
+ | |||
+ | == CONNECTION: | ||
+ | |||
+ | == CONNECTION: | ||
+ | |||
+ | == CONNECTION: | ||
+ | |||
+ | == CONNECTION: | ||
+ | |||
+ | == CONNECTION: | ||
+ | |||
+ | == CONNECTION: | ||
+ | |||
+ | == CONNECTION: | ||
+ | |||
+ | == CONNECTION: | ||
+ | |||
+ | == DB_INIT:PLR == | ||
+ | |||
+ | == DB_INIT:INV == | ||
+ | |||
+ | == DB_GROUP: | ||
+ | |||
+ | == DB_GROUP: | ||
+ | |||
+ | == DB_GROUP: | ||
+ | |||
+ | == HARVEST: | ||
+ | |||
+ | == HARVEST: | ||
+ | |||
+ | == HARVEST: | ||
+ | |||
+ | == HARVEST: | ||
+ | |||
+ | == JOB: | ||
+ | |||
+ | == JOB: | ||
+ | |||
+ | == CASTING: | ||
+ | |||
+ | == CASTING: | ||
+ | |||
+ | == FABER:OPEN == | ||
+ | |||
+ | == FABER:CLOSE == | ||
+ | |||
+ | == FABER: | ||
+ | |||
+ | == FABER: | ||
+ | |||
+ | == FABER: | ||
+ | |||
+ | == FABER: | ||
+ | |||
+ | == FABER: | ||
+ | |||
+ | == FABER: | ||
+ | |||
+ | == FABER: | ||
+ | |||
+ | == FABER: | ||
+ | |||
+ | == FABER: | ||
+ | |||
+ | == FABER: | ||
+ | |||
+ | == COMBAT: | ||
+ | |||
+ | == COMBAT: | ||
+ | |||
+ | == COMBAT: | ||
+ | |||
+ | == COMBAT: | ||
+ | |||
+ | == COMBAT: | ||
+ | |||
+ | == COMBAT: | ||
+ | |||
+ | == COMBAT: | ||
+ | |||
+ | == COMBAT: | ||
+ | |||
+ | == COMBAT: | ||
+ | |||
+ | == COMBAT: | ||
+ | |||
+ | == COMBAT: | ||
+ | |||
+ | == STRING:TELL == | ||
+ | |||
+ | == STRING: | ||
+ | |||
+ | == STRING:CHAT == | ||
+ | |||
+ | == STRING: | ||
+ | |||
+ | == STRING: | ||
+ | |||
+ | == STRING: | ||
+ | |||
+ | == STRING: | ||
+ | |||
+ | == STRING: | ||
+ | |||
+ | == STRING: | ||
+ | |||
+ | == STRING: | ||
+ | |||
+ | == STRING: | ||
+ | |||
+ | == STRING: | ||
+ | |||
+ | == STUN:STUN == | ||
+ | |||
+ | == STUN: | ||
+ | |||
+ | == SENTENCE: | ||
+ | |||
+ | == SENTENCE: | ||
+ | |||
+ | == SENTENCE: | ||
+ | |||
+ | == SENTENCE: | ||
+ | |||
+ | == SENTENCE: | ||
+ | |||
+ | == SENTENCE: | ||
+ | |||
+ | == SENTENCE: | ||
+ | |||
+ | == SENTENCE: | ||
+ | |||
+ | == SENTENCE: | ||
+ | |||
+ | == SENTENCE: | ||
+ | |||
+ | == SENTENCE: | ||
+ | |||
+ | == SENTENCE: | ||
+ | |||
+ | == TEAM:JOIN == | ||
+ | |||
+ | == TEAM:LEAVE == | ||
+ | |||
+ | == TEAM: | ||
+ | |||
+ | == TEAM: | ||
+ | |||
+ | == TEAM: | ||
+ | |||
+ | == TEAM:KICK == | ||
+ | |||
+ | == TEAM: | ||
+ | |||
+ | == TEAM: | ||
+ | |||
+ | == TEAM: | ||
+ | |||
+ | == TEAM: | ||
+ | |||
+ | == TEAM: | ||
+ | |||
+ | == TEAM: | ||
+ | |||
+ | == TEAM: | ||
+ | |||
+ | == TEAM: | ||
+ | |||
+ | == TEAM: | ||
+ | |||
+ | == TEAM: | ||
+ | |||
+ | == TEAM: | ||
+ | |||
+ | == TEAM: | ||
+ | |||
+ | == TEAM: | ||
+ | |||
+ | == TEAM: | ||
+ | |||
+ | == ITEM:DROP == | ||
+ | |||
+ | == ITEM: | ||
+ | |||
+ | == ITEM: | ||
+ | |||
+ | == ITEM:SWAP == | ||
+ | |||
+ | == ITEM: | ||
+ | |||
+ | == ITEM: | ||
+ | |||
+ | == ITEM: | ||
+ | |||
+ | == ITEM:GIVE == | ||
+ | |||
+ | == ITEM: | ||
+ | |||
+ | == ITEM:EQUIP == | ||
+ | |||
+ | == ITEM: | ||
+ | |||
+ | == ITEM: | ||
+ | |||
+ | == ITEM: | ||
+ | |||
+ | == ITEM: | ||
+ | |||
+ | == ITEM: | ||
+ | |||
+ | == ITEM: | ||
+ | |||
+ | == ITEM: | ||
+ | |||
+ | == ITEM: | ||
+ | |||
+ | == ITEM: | ||
+ | |||
+ | == TP:RESPAWN == | ||
+ | |||
+ | == TP:BOT == | ||
+ | |||
+ | == TP:WANTED == | ||
+ | |||
+ | == TP:DEST == | ||
+ | |||
+ | == TP: | ||
+ | |||
+ | == TP:ACK == | ||
+ | |||
+ | == TP:CORRECT == | ||
+ | |||
+ | == DEATH: | ||
+ | |||
+ | == DEATH: | ||
+ | |||
+ | == DEATH: | ||
+ | |||
+ | == ANIMALS: | ||
+ | |||
+ | == ANIMALS: | ||
+ | |||
+ | == EXCHANGE: | ||
+ | |||
+ | == EXCHANGE: | ||
+ | |||
+ | == EXCHANGE: | ||
+ | |||
+ | == EXCHANGE: | ||
+ | |||
+ | == EXCHANGE: | ||
+ | |||
+ | == EXCHANGE: | ||
+ | |||
+ | == EXCHANGE: | ||
+ | |||
+ | == EXCHANGE: | ||
+ | |||
+ | == EXCHANGE: | ||
+ | |||
+ | == EXCHANGE: | ||
+ | |||
+ | == EXCHANGE: | ||
+ | |||
+ | == DEBUG:WHERE == | ||
+ | |||
+ | == DEBUG:WHO == | ||
+ | |||
+ | == DEBUG: | ||
+ | |||
+ | == DEBUG: | ||
+ | |||
+ | == DEBUG:CMD == | ||
+ | |||
+ | == DEBUG:PING == | ||
+ | |||
+ | == DEBUG: | ||
+ | |||
+ | == COMMAND: | ||
+ | |||
+ | == COMMAND: | ||
+ | |||
+ | == COMMAND: | ||
+ | |||
+ | == COMMAND: | ||
+ | |||
+ | == COMMAND: | ||
+ | |||
+ | == COMMAND: | ||
+ | |||
+ | == COMMAND: | ||
+ | |||
+ | == COMMAND:SIT == | ||
+ | |||
+ | == COMMAND:AFK == | ||
+ | |||
+ | == COMMAND: | ||
+ | |||
+ | == COMMAND: | ||
+ | |||
+ | == MP_EVAL: | ||
+ | |||
+ | == MP_EVAL: | ||
+ | |||
+ | == MP_EVAL: | ||
+ | |||
+ | == MP_EVAL: | ||
+ | |||
+ | == BOTCHAT: | ||
+ | |||
+ | == BOTCHAT: | ||
+ | |||
+ | == BOTCHAT: | ||
+ | |||
+ | == BOTCHAT: | ||
+ | |||
+ | == BOTCHAT: | ||
+ | |||
+ | == BOTCHAT: | ||
+ | |||
+ | == BOTCHAT: | ||
+ | |||
+ | == BOTCHAT: | ||
+ | |||
+ | == BOTCHAT:BUY == | ||
+ | |||
+ | == BOTCHAT: | ||
+ | |||
+ | == BOTCHAT: | ||
+ | |||
+ | == BOTCHAT: | ||
== BOTCHAT: | == BOTCHAT: | ||
+ | |||
Le client informe de certains filtres. | Le client informe de certains filtres. | ||
Ligne 988: | Ligne 1569: | ||
Bref, pour en savoir plus, il va falloir faire des tests ! S'il y a des exemples de filtres, demander à des joueuses de Ryzom (il y en a sur le canal XMPP Khaganat) si ça leur évoque quelque chose. S'il n'y a aucun exemple, donner la piste pour les trouver, et on demandera à quelqu' | Bref, pour en savoir plus, il va falloir faire des tests ! S'il y a des exemples de filtres, demander à des joueuses de Ryzom (il y en a sur le canal XMPP Khaganat) si ça leur évoque quelque chose. S'il n'y a aucun exemple, donner la piste pour les trouver, et on demandera à quelqu' | ||
- | --- //[[wiki:user: | + | --- // |
</ | </ | ||
<WRAP center round tip 60%> | <WRAP center round tip 60%> | ||
En fait, tout ce qui est ' | En fait, tout ce qui est ' | ||
- | --- //[[wiki:user: | + | --- // |
</ | </ | ||
Ligne 1019: | Ligne 1600: | ||
* itemType (Uint8) | * itemType (Uint8) | ||
- | === Visual Property === | + | |
+ | == BOTCHAT: | ||
+ | |||
+ | == BOTCHAT: | ||
+ | |||
+ | == BOTCHAT: | ||
+ | |||
+ | == BOTCHAT: | ||
+ | |||
+ | == BOTCHAT: | ||
+ | |||
+ | == BOTCHAT: | ||
+ | |||
+ | == BOTCHAT: | ||
+ | |||
+ | == BOTCHAT: | ||
+ | |||
+ | == BOTCHAT: | ||
+ | |||
+ | == BOTCHAT:END == | ||
+ | |||
+ | == BOTCHAT: | ||
+ | |||
+ | == BOTCHAT: | ||
+ | |||
+ | == BOTCHAT: | ||
+ | |||
+ | == BOTCHAT: | ||
+ | |||
+ | == BOTCHAT: | ||
+ | |||
+ | == BOTCHAT: | ||
+ | |||
+ | == BOTCHAT: | ||
+ | |||
+ | == BOTCHAT: | ||
+ | |||
+ | == BOTCHAT: | ||
+ | |||
+ | == BOTCHAT: | ||
+ | |||
+ | == BOTCHAT: | ||
+ | |||
+ | == BOTCHAT: | ||
+ | |||
+ | == JOURNAL: | ||
+ | |||
+ | == JOURNAL: | ||
+ | |||
+ | == JOURNAL: | ||
+ | |||
+ | == JOURNAL: | ||
+ | |||
+ | == JOURNAL: | ||
+ | |||
+ | == JOURNAL: | ||
+ | |||
+ | == JOURNAL: | ||
+ | |||
+ | == JOURNAL: | ||
+ | |||
+ | == STRING_MANAGER: | ||
+ | |||
+ | == STRING_MANAGER: | ||
+ | |||
+ | Le serveur envoie un message, plus précisément le pointeur sur le message. | ||
+ | |||
+ | Code actuel : '' | ||
+ | |||
+ | <WRAP center round important 60%> | ||
+ | Attention : dépend de la version que vous avez de '' | ||
+ | </ | ||
+ | +----------------+--------------+------------------+------------------+ | ||
+ | | STRING_MANAGER | PHRASE_SEND | ||
+ | | 6 bits | 3 bits | uint32 | ||
+ | | 011011 | ||
+ | +----------------+--------------+------------------+------------------+ | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | |||
+ | == STRING_MANAGER: | ||
+ | |||
+ | Le client demande le message complet en fonction du pointeur. | ||
+ | |||
+ | Code actuel : '' | ||
+ | |||
+ | +----------------+--------------+------------------+ | ||
+ | | STRING_MANAGER | STRING_RQ | ||
+ | | 6 bits | 3 bits | uint32 | ||
+ | | 011011 | ||
+ | +----------------+--------------+------------------+ | ||
+ | |||
+ | * '' | ||
+ | |||
+ | Le serveur va répondre à ce message par '' | ||
+ | |||
+ | == STRING_MANAGER: | ||
+ | |||
+ | Le serveur renvoie le message complet. | ||
+ | |||
+ | Code actuel : '' | ||
+ | |||
+ | +----------------+--------------+------------------+--------------+ | ||
+ | | STRING_MANAGER | STRING_RESP | ||
+ | | 6 bits | 3 bits | uint32 | ||
+ | | 011011 | ||
+ | +----------------+--------------+------------------+--------------+ | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | On remarque ici l' | ||
+ | |||
+ | |||
+ | == STRING_MANAGER: | ||
+ | |||
+ | Commande utilisée pour initialiser le tableau de message. | ||
+ | |||
+ | Ici, on vérifie que notre tableau interne au client a la même date que le tableau du serveur. Sinon, on efface le tableau interne du client, et à chaque nouveau message le client demandera à quoi il correspond. | ||
+ | |||
+ | Code actuel : '' | ||
+ | |||
+ | <WRAP center round important 60%> | ||
+ | Attention : dépend de la version que vous avez de '' | ||
+ | </ | ||
+ | |||
+ | |||
+ | +----------------+--------------+------------------+ | ||
+ | | STRING_MANAGER | RELOAD_CACHE | timestamp | ||
+ | | 6 bits | 3 bits | uint32 | ||
+ | | 011011 | ||
+ | +----------------+--------------+------------------+ | ||
+ | |||
+ | * '' | ||
+ | |||
+ | |||
+ | == GUILD: | ||
+ | |||
+ | == GUILD: | ||
+ | |||
+ | == GUILD: | ||
+ | |||
+ | == GUILD: | ||
+ | |||
+ | == GUILD: | ||
+ | |||
+ | == GUILD: | ||
+ | |||
+ | == GUILD: | ||
+ | |||
+ | == GUILD: | ||
+ | |||
+ | == GUILD: | ||
+ | |||
+ | == GUILD: | ||
+ | |||
+ | == GUILD: | ||
+ | |||
+ | == GUILD: | ||
+ | |||
+ | == GUILD: | ||
+ | |||
+ | == GUILD: | ||
+ | |||
+ | == GUILD: | ||
+ | |||
+ | == GUILD:QUIT == | ||
+ | |||
+ | == GUILD: | ||
+ | |||
+ | == GUILD: | ||
+ | |||
+ | == GUILD: | ||
+ | |||
+ | Le serveur signale que la guilde((Le MMORPG utilise un système de " | ||
+ | |||
+ | Code actuel : '' | ||
+ | |||
+ | <WRAP center round important 60%> | ||
+ | Attention : dépend de la version que vous avez de msg.xml, susceptible de changer. | ||
+ | </ | ||
+ | |||
+ | +------------+-------------------+--------------------+ | ||
+ | | GUILD | USE_FEMALE_TITLES | UseFemaleTitles | ||
+ | | 6 bits | 5 bits | bool | | ||
+ | | 011100 | ||
+ | +------------+-------------------+--------------------+ | ||
+ | |||
+ | * UseFemaleTitles (bool) : 1 = Oui, 0 = Non | ||
+ | |||
+ | == GUILD: | ||
+ | |||
+ | == GUILD: | ||
+ | |||
+ | == GUILD: | ||
+ | |||
+ | == GUILD: | ||
+ | |||
+ | == OUTPOST: | ||
+ | |||
+ | == OUTPOST: | ||
+ | |||
+ | == OUTPOST: | ||
+ | |||
+ | == OUTPOST: | ||
+ | |||
+ | == OUTPOST: | ||
+ | |||
+ | == OUTPOST: | ||
+ | |||
+ | == OUTPOST: | ||
+ | |||
+ | == OUTPOST: | ||
+ | |||
+ | == OUTPOST: | ||
+ | |||
+ | == OUTPOST: | ||
+ | |||
+ | == OUTPOST: | ||
+ | |||
+ | == OUTPOST: | ||
+ | |||
+ | == OUTPOST: | ||
+ | |||
+ | == OUTPOST: | ||
+ | |||
+ | == OUTPOST: | ||
+ | |||
+ | == OUTPOST: | ||
+ | |||
+ | == OUTPOST: | ||
+ | |||
+ | == OUTPOST: | ||
+ | |||
+ | == PHRASE: | ||
+ | |||
+ | == PHRASE: | ||
+ | |||
+ | == PHRASE: | ||
+ | |||
+ | == PHRASE: | ||
+ | |||
+ | == PHRASE: | ||
+ | |||
+ | == PHRASE: | ||
+ | |||
+ | == PHRASE: | ||
+ | |||
+ | == PHRASE: | ||
+ | |||
+ | == PHRASE:BUY == | ||
+ | |||
+ | == PHRASE: | ||
+ | |||
+ | == PHRASE: | ||
+ | |||
+ | == PHRASE: | ||
+ | |||
+ | == PHRASE: | ||
+ | |||
+ | == PHRASE: | ||
+ | |||
+ | == PHRASE: | ||
+ | |||
+ | == PHRASE: | ||
+ | |||
+ | == PHRASE: | ||
+ | |||
+ | == ITEM_INFO: | ||
+ | |||
+ | == ITEM_INFO: | ||
+ | |||
+ | == ITEM_INFO: | ||
+ | |||
+ | == MISSION_PREREQ: | ||
+ | |||
+ | == MISSION_PREREQ: | ||
+ | |||
+ | == MISSION: | ||
+ | |||
+ | == MISSION: | ||
+ | |||
+ | == MISSION: | ||
+ | |||
+ | == MISSION: | ||
+ | |||
+ | == MISSION: | ||
+ | |||
+ | == DUEL:ASK == | ||
+ | |||
+ | == DUEL:ACCEPT == | ||
+ | |||
+ | == DUEL:REFUSE == | ||
+ | |||
+ | == DUEL: | ||
+ | |||
+ | == DUEL: | ||
+ | |||
+ | == DUEL: | ||
+ | |||
+ | == PVP_CHALLENGE: | ||
+ | |||
+ | == PVP_CHALLENGE: | ||
+ | |||
+ | == PVP_CHALLENGE: | ||
+ | |||
+ | == PVP_CHALLENGE: | ||
+ | |||
+ | == PVP_CHALLENGE: | ||
+ | |||
+ | == PVP_CHALLENGE: | ||
+ | |||
+ | == PVP:PVP_TAG == | ||
+ | |||
+ | == PVP: | ||
+ | |||
+ | == PVP: | ||
+ | |||
+ | == PVP_FACTION: | ||
+ | |||
+ | == PVP_FACTION: | ||
+ | |||
+ | == PVP_FACTION: | ||
+ | |||
+ | == ENCYCLOPEDIA: | ||
+ | |||
+ | == ENCYCLOPEDIA: | ||
+ | |||
+ | == USER:BARS == | ||
+ | |||
+ | == USER:POPUP == | ||
+ | |||
+ | == EVENT: | ||
+ | |||
+ | == EVENT:DUMMY == | ||
+ | |||
+ | == TOTEM:BUILD == | ||
+ | |||
+ | == TOTEM:DUMMY == | ||
+ | |||
+ | == MODULE_GATEWAY: | ||
+ | |||
+ | == MODULE_GATEWAY: | ||
+ | |||
+ | == MODULE_GATEWAY: | ||
+ | |||
+ | == SEASON:SET == | ||
+ | |||
+ | == SEASON: | ||
+ | |||
+ | == DM_GIFT: | ||
+ | |||
+ | == DM_GIFT: | ||
+ | |||
+ | == RING_MISSION: | ||
+ | |||
+ | == RING_MISSION: | ||
+ | |||
+ | == NPC_ICON: | ||
+ | |||
+ | == NPC_ICON: | ||
+ | |||
+ | == NPC_ICON: | ||
+ | |||
+ | == NPC_ICON: | ||
+ | |||
+ | |||
+ | |||
+ | ==== Visual Property | ||
Et oui, nous avons encore une autre structure pour envoyer des informations du serveur vers le client. | Et oui, nous avons encore une autre structure pour envoyer des informations du serveur vers le client. | ||
Ligne 1025: | Ligne 1976: | ||
Ici le codage/ | Ici le codage/ | ||
- | ==== Paquet envoyé par le client ==== | + | Pourquoi cette structure? |
- | === Corps du message === | + | * Peut-etre pour réduire la taille des info, mais on perd la modularité de msg.xml |
- | +-------------------+------------+--- | + | * l' |
- | | CurrentSendNumber | SystemMode | . . . | + | |
- | | 32 bits | 1 bit | | + | |
- | +-------------------+------------+--- | + | |
- | 1 -> system mode | + | |
- | 0 -> normal mode | + | |
+ | Visiblement, | ||
+ | Le début de la structure: | ||
- | | + | +----------+-----------------+------------------+----------------+------------------+ |
- | * SystemMode : Informe que le type de message est dit " | + | | Slot | associationBits | timestampIsThere | timestampDelta | VisualProperties | |
+ | | 8 Bits | ||
+ | | unsigned | | ||
+ | +----------+-----------------+------------------+----------------+------------------+ | ||
+ | |||
+ | * slot : position/ | ||
+ | * associationBits : un indicateur (sorte de clef de hachage) pour savoir si on parle de la même donnée, sinon l' | ||
+ | * timestampIsThere : active le delta sur le timestamp (0: non, 1:oui) | ||
+ | * timestampDelta : permet d' | ||
+ | * VisualProperties : ici nous avons une nouvelle structure qui fonctionne par branche (et feuille pour les terminaison) | ||
+ | | ||
+ | === VisualProperties === | ||
- | === Message système === | + | Il s'agit d'une liste sans fin de VisualProperty |
+ | +----------------+----------------+ | ||
+ | | VisualProperty | VisualProperty | . . . | ||
+ | +----------------+----------------+ | ||
- | +-------------------+------------+---------+--- | + | === VisualProperty === |
- | | CurrentSendNumber | SystemMode | Message | . . . | + | |
- | | 32 bits | 1 bit | 8 Bits | | + | |
- | +-------------------+------------+---------+--- | + | |
- | | xxxxxxxxxxxxxxxx | | + | |
- | Suivant la valeur du message, nous avons des paramètres spécifiques. | + | Il s'agit d'un arbre qui se sépare à chaque fois en deux branch VPA et VPB. |
- | Notez qu'ici nous utilisons 8 bits, on aurait pu réduire la taille afin d'être en adéquation avec les messages envoyés. | + | Pour chacune des branches (on commence par VPA, puis VPB), on lit un bit (0: pas de donnée, 1: des données), si un branch contient une autre branche, on refait de comme précédement (lecture VPA puis VPB). |
+ | puis on continue jusqu'à atteindre la feille, là suivant le type de propriété on va lire un certain nombre debit. | ||
- | À savoir qu'il y a 5 types de messages provenant du client & 5 types de messages provenant du serveur, soit une taille de 3 bits. | + | {{: |
- | == Message 0 : SYSTEM_LOGIN_CODE == | + | Dans les faits, ils utilisent ACTION_SINT64 pour toutes les valeurs, mais avec une taille différents pour chaque éléments (et cerise sur le gâteau, PROPERTY_ORIENTATION n'est pas un entier mais un flotant) |
- | Message émis par le client. | + | |
- | +-------------------+------------+---------+-----------+----------+----------+-------- / ---------+ | + | === Les différents Property === |
- | | CurrentSendNumber | SystemMode | Message | User Addr | User Key | User ID | Langue | + | |
- | | 32 bits | 1 bit | 8 Bits | 32 bits | 32 bits | 32 bits | String | + | |
- | | | + | |
- | +-------------------+------------+---------+-----------+----------+----------+-------- / ---------+ | + | |
- | | xxxxxxxxxxxxxxxx | | + | |
+ | == POSITION_CODE == | ||
+ | +----------+----------+----------+ | ||
+ | | px | py | pz | | ||
+ | | 16 Bits | 16 Bits | 16 Bits | | ||
+ | | unsigned | unsigned | unsigned | | ||
+ | +----------+----------+----------+ | ||
- | == Message 2 : SYSTEM_ACK_SYNC_CODE == | ||
- | Message émis par le client. | ||
- | Message utilisé pour acquitter d'une demande de synchronisation. | ||
- | +-------------------+------------+---------+-----------+----------+-----------------+----------+ | + | |
- | | CurrentSendNumber | SystemMode | Message | frontack | + | |
- | | 32 bits | 1 bit | 8 Bits | 32 bits | + | |
- | | + | |
- | | + | |
- | | xxxxxxxxxxxxxxxx | | + | |
- | * '' | + | +-------------------------------+ |
- | * '' | + | | pz | |
- | * '' | + | | 14 bit | |
- | * '' | + | | | | | | | | | | | | | | | | | | | | |
+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||
+ | + Interior | ||
+ | + IsRelative | ||
+ | == PROPERTY_ORIENTATION == | ||
- | == Message 4 : SYSTEM_ACK_PROBE_CODE == | + | Indique la rotation (par rapport à quoi ?, le nord ?) |
- | Message émis par le client. | + | |
- | Acquitte des messages PROBE envoyés. | + | +-------------+ |
+ | | Orientation | | ||
+ | | 32 Bits | | ||
+ | | float | | ||
+ | +-------------+ | ||
- | +-------------------+------------+---------+-------------+---------+---------+-- / --+---------+ | + | == PROPERTY_BEHAVIOUR == |
- | | CurrentSendNumber | SystemMode | Message | Taille : X | Probe 1 | Probe 2 | | Probe X | | + | |
- | | 32 bits | 1 bit | 8 Bits | 32 bits | 32 bits | 32 bits | | 32 bits | | + | |
- | | | + | |
- | +-------------------+------------+---------+-------------+---------+---------+-- / --+---------+ | + | |
- | | xxxxxxxxxxxxxxxx | | + | |
+ | +-------------+ | ||
+ | | Behaviour | ||
+ | | 48 Bits | | ||
+ | | Unsigned | ||
+ | +-------------+ | ||
- | == Message 5 : SYSTEM_DISCONNECTION_CODE | + | == PROPERTY_OWNER_PEOPLE |
- | Message émis par le client. | + | |
- | +-------------------+------------+---------+ | + | +--------------+ |
- | | CurrentSendNumber | SystemMode | Message | + | | Owner People |
- | | 32 bits | 1 bit | 8 Bits | | + | | 3 Bits |
- | | | | | | + | | Unsigned |
- | +-------------------+------------+---------+ | + | +--------------+ |
- | | xxxxxxxxxxxxxxxx | | + | |
+ | == PROPERTY_NAME_STRING_ID == | ||
- | == Message 8 : SYSTEM_QUIT_CODE == | + | +----------------+ |
- | Message émis par le client. | + | | Name String Id | |
+ | | 32 Bits | | ||
+ | | Unsigned | ||
+ | +----------------+ | ||
- | +-------------------+------------+---------+---------+ | + | == PROPERTY_CONTEXTUAL == |
- | | CurrentSendNumber | SystemMode | Message | Quit Id | | + | |
- | | 32 bits | 1 bit | 8 Bits | 32 bits | | + | |
- | | | + | |
- | +-------------------+------------+---------+---------+ | + | |
- | | xxxxxxxxxxxxxxxx | | + | |
+ | +------------+ | ||
+ | | Contextual | | ||
+ | | 16 Bits | | ||
+ | | Unsigned | ||
+ | +------------+ | ||
- | + | == PROPERTY_TARGET_LIST | |
- | === Message normal === | + | |
+ | +-------------+ | ||
+ | | Target List | | ||
+ | | 32 Bits | | ||
+ | | Unsigned | ||
+ | +-------------+ | ||
- | +-------------------+------------+---- | + | == PROPERTY_TARGET_ID == |
- | | CurrentSendNumber | SystemMode | . . . | + | |
- | | 32 bits | 1 bit | | + | |
- | +-------------------+------------+---- | + | |
- | | xxxxxxxxxxxxxxxx | | + | |
- | À remplir. | + | +-----------+ |
+ | | Target ID | | ||
+ | | 8 Bits | | ||
+ | | Unsigned | ||
+ | +-----------+ | ||
+ | |||
+ | == PROPERTY_MODE == | ||
+ | |||
+ | +-----------+ | ||
+ | | Mode | | ||
+ | | 44 Bits | | ||
+ | | Unsigned | ||
+ | +-----------+ | ||
+ | |||
+ | == PROPERTY_VPA == | ||
+ | |||
+ | +-----------+ | ||
+ | | VPA | | ||
+ | | 64 Bits | | ||
+ | | Unsigned | ||
+ | +-----------+ | ||
+ | |||
+ | == PROPERTY_BARS == | ||
+ | |||
+ | +-----------+ | ||
+ | | BARS | | ||
+ | | 32 Bits | | ||
+ | | Unsigned | ||
+ | +-----------+ | ||
+ | |||
+ | <WRAP center round help 60%> | ||
+ | Avec le petit commentaire du code source : please do not lower it (or tell Olivier: used for forage sources) | ||
+ | </ | ||
+ | |||
+ | == PROPERTY_VISUAL_FX == | ||
+ | |||
+ | +-----------+ | ||
+ | | VISUAL FX | | ||
+ | | 11 Bits | | ||
+ | | Unsigned | ||
+ | +-----------+ | ||
+ | |||
+ | <WRAP center round help 60%> | ||
+ | Avec le petit commentaire du code source : please do not lower it (or tell Olivier: used for forage sources) | ||
+ | </ | ||
+ | |||
+ | == PROPERTY_VPB == | ||
+ | |||
+ | +-----------+ | ||
+ | | VPB | | ||
+ | | 47 Bits | | ||
+ | | Unsigned | ||
+ | +-----------+ | ||
+ | |||
+ | == PROPERTY_VPC == | ||
+ | |||
+ | +-----------+ | ||
+ | | VPC | | ||
+ | | 58 Bits | | ||
+ | | Unsigned | ||
+ | +-----------+ | ||
+ | |||
+ | == PROPERTY_EVENT_FACTION_ID == | ||
+ | |||
+ | +------------------+ | ||
+ | | Event Faction ID | | ||
+ | | 32 Bits | | ||
+ | | Unsigned | ||
+ | +------------------+ | ||
+ | |||
+ | == PROPERTY_PVP_MODE == | ||
+ | |||
+ | +----------+ | ||
+ | | PvP Mode | | ||
+ | | 10 Bits | | ||
+ | | Unsigned | | ||
+ | +----------+ | ||
+ | |||
+ | == PROPERTY_PVP_CLAN == | ||
+ | |||
+ | +----------+ | ||
+ | | PvP Clan | | ||
+ | | 32 Bits | | ||
+ | | Unsigned | | ||
+ | +----------+ | ||
+ | |||
+ | == PROPERTY_ENTITY_MOUNTED_ID == | ||
+ | |||
+ | +-------------------+ | ||
+ | | Entity Mounted ID | | ||
+ | | 8 Bits | | ||
+ | | Unsigned | ||
+ | +-------------------+ | ||
+ | |||
+ | == PROPERTY_RIDER_ENTITY_ID == | ||
+ | |||
+ | +-----------------+ | ||
+ | | Rider Entity ID | | ||
+ | | 8 Bits | | ||
+ | | Unsigned | ||
+ | +-----------------+ | ||
+ | |||
+ | == PROPERTY_OUTPOST_INFOS == | ||
+ | |||
+ | +---------------+ | ||
+ | | Outpost Infos | | ||
+ | | 16 Bits | | ||
+ | | Unsigned | ||
+ | +---------------+ | ||
+ | |||
+ | == PROPERTY_GUILD_SYMBOL == | ||
+ | |||
+ | +--------------+ | ||
+ | | Guild Symbol | | ||
+ | | 60 Bits | | ||
+ | | Unsigned | ||
+ | +--------------+ | ||
+ | |||
+ | == PROPERTY_GUILD_NAME_ID == | ||
+ | |||
+ | +---------------+ | ||
+ | | Guild Name ID | | ||
+ | | 32 Bits | | ||
+ | | Unsigned | ||
+ | +---------------+ | ||
+ | |||
+ | === Exemple === | ||
+ | A faire ... | ||
===== Annexe : Format des messages ===== | ===== Annexe : Format des messages ===== | ||
Ligne 1138: | Ligne 2227: | ||
==== bool : 1 bit ==== | ==== bool : 1 bit ==== | ||
- | Juste un bit, vrai ou faux (true/ | + | Juste un bit, vrai ou faux (true [1]/ |
+-------+ | +-------+ | ||
Ligne 1236: | 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> |