Logo Khaganat

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
Prochaine révisionLes deux révisions suivantes
fr:toutcommenceparlereseau [2020/08/26 18:42] – [VisualProperties] aleajactaestfr:toutcommenceparlereseau [2020/11/28 22:59] – Ajout du décodage de Database.xml aleajactaest
Ligne 53: Ligne 53:
 Ce qui suit n'est pas clair. Je propose une reformulation, mais je n'ai peut-être pas tout compris. Ce qui suit n'est pas clair. Je propose une reformulation, mais je n'ai peut-être pas tout compris.
  
- --- //[[wiki:user:zatalyz|zatalyz]] 2020/08/21 12:58//+ --- //[[user:zatalyz|zatalyz]] 2020/08/21 12:58//
 </WRAP> </WRAP>
  
Ligne 90: Ligne 90:
 **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...  --- //[[wiki:user:zatalyz|zatalyz]] 2020/08/21 12:58//)) (clef à utiliser pour l'envoi du mot de passe).+Demande un mot clef pour permettre le salage du mot de passe.(( nous allons renvoyer le mot de passe via une fonction de hachage, à chaque fois le serveur va renvoyer un mot de clef différent, le hachage aura comme source le mot de passe et le mot clef du serveur, le client enverra donc un hachage différentAvec cette méthode, on rend plus difficile la recherche du mot de passe --- //[[user:aleajactaest|aleajactaest]] 2020/11/28 21:20//))
  
 URL formatée de la façon suivante : URL formatée de la façon suivante :
Ligne 417: Ligne 417:
     +---------+      +----------+----------+----------+     +---------+      +----------+----------+----------+
  
-Puis pour chaque paquet Z on lit paquet Z((Ici, je ne suis pas sûre de mon ajout de ''Z'', mais sinon il doit manquer un truc pour comprendre ?  --- //[[wiki:user:zatalyz|zatalyz]] 2020/08/21 12:58//)) (tant que ''next'' égale 1, on continue de lire) +Puis pour chaque paquet Z on lit le champ ''next'' et si ert à '1' on lit ActionFactory Xpuis on lit ''next'' suivant
  
     +----------+     +-------+-----------------+-------+-----------------+-------+     +----------+     +-------+-----------------+-------+-----------------+-------+
-    | Packet Z |     | next  | ActionFactory | next  | ActionFactory | next  | . . .+    | Packet Z |     | next  | ActionFactory | next  | ActionFactory | next  | . . .
     | 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 773: Ligne 773:
  
  
-== Décodage Impulse == 
  
-Les messages impulses sont construits suivant le format suivant : +== Lecture du fichier database.xml ==
- * premier champ contenant le code ''impulse'' +
- * champs suivants : les paramètres du code ''impulse''+
  
-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                [ +
-    +--------------+---- / -----++
  
-=== Commande impulse ===+<code xml>    <database_description> 
 +      <bank_superclass> 
 +        <!-- dans cette zone existe des informations non utilisés par le client --> 
 +      </bank_superclass> 
 +      <branch name=x1 bank="PLR" clientonly="1"> 
 +         <leaf name=x2 type=t1/> 
 +      </branch> 
 +      <branch name=x3 bank="PLR" count="c3"> 
 +         <leaf name=x4 type=t4/> 
 +         <leaf name=x5 type=t5/> 
 +      </branch> 
 +      <branch name=x6 bank="PLR" atom="1"> 
 +         <branch name=x7 atom="1" count="c7"> 
 +           <leaf name=x8 type=t8/> 
 +           <leaf name=x9 type=t9/> 
 +           <leaf name=x10 type=t10/> 
 +         </branch> 
 +         <leaf name=x11 type=t11/> 
 +         <leaf name=x12 type=t12/> 
 +         <leaf name=x13 type=t13/> 
 +         <leaf name=x14 type=t14/> 
 +      </branch> 
 +    </database_description> 
 +</code>
  
-== STRING_MANAGER:RELOAD_CACHE ==+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.
  
-Commande utilisée pour initialiser le tableau de message.+Ici le premier niveau qui nous interrese est database_description, puis ensuite on ne garde que les branches ayant le parametre bank égale "PLR"
 +Pour la partie branche, cet élément peut contenir d'autres branches (zero, une, ..., X) et/ou des feuilles (de 0, 1 ou X). Dans sa structure interne, ces deux entités (branches & feuilles) sont séparées, et on regardera d'abord dans les branches puis ensuite dans les feuilles.
  
-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 clientet à chaque nouveau message le client demandera à quoi il correspond.+Si une branch contient le mot de clef "count"cela implique une duplication de cette branche X fois (avec pour nom le numéro de position commençant par 0)
  
-Code actuel : ''STRING_MANAGER:RELOAD_CACHE => 011011.100''+Ensuite, nous avons la possibilité d'avoir le mot clef 'atom', s'il est à 1, cela implique une gestion différente de l'agragation des données. (dans ce cas, on considère que l'on aura une structure pouvant envoyer toutes les données [dans en premier temps on envoie un booléen pour chaque feuille disponible dans la branche/sous-branche, puis pour chaque booléen ayant la valeur 1/Vrai, on lira la donnée de la feuille correspondante)
  
-<WRAP center round important 60%> +L'association de count & atom m'a particulièrement posé des problèmes, dans les fait 'countest prioritaireensuite on gère le cas de 'atom'.
-Attention : dépend de la version que vous avez de ''msg.xml'', susceptible de changer ! +
-</WRAP>+
  
 +Un petit exemple:
  
-    +----------------+--------------+------------------+ +<code xml>    <database_description> 
-    | STRING_MANAGER | RELOAD_CACHE | timestamp        | +       <branch name="Entities" 
-    | 6 bits         | 3 bits       | uint32           | +               bank="PLR" 
-    | 011011         | 100          | 32 bits unsigned | +               clientonly="1"> 
-    +----------------+--------------+------------------++          <branch name="E" 
 +                  count="2"> 
 +             <leaf name="P" 
 +                   count="3" 
 +                   type="I8" /> 
 +          </branch> 
 +       </branch>
  
-   * ''timestamp (uint32)'' : date du tableau de message+       <branch name="USER" 
 +              bank="PLR" 
 +              atom="1"> 
 +        <leaf name="HAIR_TYPE" 
 +              type="I8" /> 
 +          <branch name="SKILL_POINTS_" 
 +                  count="4"> 
 +              <leaf name="VALUE" 
 +                    type="I32" /> 
 +          </branch> 
 +          <branch name="FACTION_POINTS_" 
 +                  count="7"> 
 +              <leaf name="VALUE" 
 +                    type="I32" /> 
 +          </branch> 
 +       </branch>
  
 +       <branch name="GROUP"
 +              bank="PLR">
 +        <branch name=""
 +                count="5"
 +                atom="1">
 +          <leaf name="PRESENT"
 +                type="I1" />
 +          <leaf name="UID"
 +                type="I20" />
 +        </branch>
 +      </branch>
 +    </database_description>
 +</code>
  
-== STRING_MANAGER:PHRASE_SEND ==+<code> 
 + * 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>
  
-Le serveur envoie un message, plus précisément le pointeur sur le message.+Par exemple le message suivant : 
 +00.0.10.11111111 
 +  * 00 : <Entities> le 1er nieveau est sur 2 bit (on a trois elements 0,1 & 2) => 2 bit pour sélectionner celui que l'on veut. 
 +  * 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:E0:P1 = 255 
 +   
 +2ème exemple : 
 +01.0010100.11111111111111111111111111111111.01111111111111111111111111111111
  
-Code actuel : ''STRING_MANAGER:PHRASE_SEND =011011.001''+  * 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. 
 +  * 0010100 <SKILL_POINTS_2,SKILL_POINTS_4USER est du type atom, donc on compte le nombre de tous les feuilles ici 7, et pour chaque bit à 1, on doit récupèrer la valeur 
 +  * 11111111111111111111111111111111 : <VALUE> 4294967295 
 +  * 01111111111111111111111111111111 : <VALUE> 2147483647 
 +  * Résumé: 
 +    * USER.SKILL_POINTS_2 = 4294967295 
 +    * USER.SKILL_POINTS_4 = 2147483647
  
-<WRAP center round important 60%> +3ème exemple 
-Attention dépend de la version que vous avez de ''msg.xml'', susceptible de changer ! +10.010.0.1
-</WRAP> +
-    +----------------+--------------+------------------+------------------+ +
-    | STRING_MANAGER | PHRASE_SEND  | dyn_id           | string_id        | string_id . . . +
-    | 6 bits         | 3 bits       | uint32           | uint32           | tant que l'on a au moins 32 bits, on lit un autre string_id +
-    | 011011         | 001          | 32 bits unsigned | 32 bits unsigned | +
-    +----------------+--------------+------------------+------------------++
  
-   ''dyn_id'' (Uint32l'ID du groupe de message +  10 : <GROUP> le 1er nieveau est sur 2 bit (on a trois elements 0,1 & 2=> 2 bit pour sélectionner celui que l'on veut. 
-   * ''string_id'' (Uint32) le pointeur sur le message+  010 : <2>  La branche suivante à count à 5, donc on doit lire 3 bits pour savoir qu'elle est l'element 
 +  * 0 <PRESENT> 
 +  * 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é) 
  
-== STRING_MANAGER:STRING_RQ == 
  
-Le client demande le message complet en fonction du pointeur. 
  
-Code actuel : ''STRING_MANAGER:STRING_RQ => 011011.010''. 
  
-    +----------------+--------------+------------------+ 
-    | STRING_MANAGER | STRING_RQ    | string_id        | 
-    | 6 bits         | 3 bits       | uint32           | 
-    | 011011         | 010          | 32 bits unsigned | 
-    +----------------+--------------+------------------+ 
  
-   * ''string_id'' (Uint32) : le pointeur sur le message+== Décodage Impulse ==
  
-Le serveur va répondre à ce message par ''STRING_MANAGER:STRING_RESP''.+Les messages impulses sont construits suivant le format suivant : 
 + * premier champ contenant le code ''impulse'' 
 + * champs suivants les paramètres du code ''impulse''
  
-== STRING_MANAGER:STRING_RESP ==+Cela donne le schéma suivant :
  
-Le serveur renvoie le message complet.+    +--------------+---- / -----+ 
 +    | code msg.xml | paramètres | 
 +    | x bits       | x bits     | 
 +    | unsigned                [ 
 +    +--------------+---- / -----+
  
-Code actuel : ''STRING_MANAGER:STRING_RESP => 011011.011''.+=== Commande impulse ===
  
-    +----------------+--------------+------------------+--------------+ +== TARGET:PARTY ==
-    | STRING_MANAGER | STRING_RESP  | string_id        | MessageUtf8 +
-    | 6 bits         | 3 bits       | uint32           | String-UTF-8 | +
-    | 011011         | 011          | 32 bits unsigned | X bits       | +
-    +----------------+--------------+------------------+--------------++
  
-   * ''string_id'' (Uint32) le pointeur sur le message. +== TARGET:INVENTORY ==
-   * ''MessageUtf8'' (String-UTF-8) : la chaîne de caractère en UTF-8.+
  
-On remarque ici l'utilisation de la chaîne de caractère au format UTF-8 (alors qu’ailleurs nous avons UTF-16). +== TARGET:FOLLOW ==
- +
- +
-== CONNECTION:ASK_NAME == +
- +
-Le client donne le nom et son ID (zone ?) et demande une vérification côté serveur. +
- +
-Code actuel : ''CONNECTION:ASK_NAME => 000001.01010''+
- +
-<WRAP center round important 60%> +
-Attention : dépend de la version que vous avez de msg.xml, suceptible de changer. +
-</WRAP> +
- +
-    +----------------+--------------+------------------+------------------+ +
-    | CONNECTION     | ASK_NAME     | Name             | HomeSessionId    | +
-    | 6 bits         | 5 bits       | X bits           | Uint32           | +
-    | 000001         | 01010        | String-UTF-16    | 32 bits unsigned | +
-    +----------------+--------------+------------------+------------------+ +
- +
- +
-   * Name (String-UTF-16) +
-   * HomeSessionId (Uint32) +
- +
-Retour attendu : ''CONNECTION:VALID_NAME''+
- +
- +
-== CONNECTION:VALID_NAME == +
- +
-Le serveur répond à une requête ''CONNECTION:ASK_NAME''+
- +
- +
-Code actuel : ''CONNECTION:VALID_NAME => 000001.01011'' +
- +
-<WRAP center round important 60%> +
-Attention: dépend de la version que vous avez de msg.xml, susceptible de changer.</WRAP> +
- +
- +
-    +----------------+--------------+-----------------+ +
-    | CONNECTION     | VALID_NAME   | valide          | +
-    | 6 bits         | 5 bits       | 8 bits          | +
-    | 000001         | 01011        | 8 bits unsigned | +
-    +----------------+--------------+-----------------+ +
- +
- +
-   * valide (Uint8) : 1 => valide, sinon non valide +
- +
- +
-== CONNECTION:SELECT_CHAR == +
- +
-Le client sélectionne un personnage. +
- +
-Code actuel : ''CONNECTION:SELECT_CHAR => 000001.00100''+
- +
-<WRAP center round important 60%> +
-Attention: dépend de la version que vous avez de msg.xml, susceptible de changer. +
-</WRAP> +
- +
- +
-    +----------------+--------------+-----------------+ +
-    | CONNECTION     | SELECT_CHAR  | SelectCharMsg   | +
-    | 6 bits         | 5 bits       | 8 bits          | +
-    | 000001         | 00100        | 8 bits unsigned | +
-    +----------------+--------------+-----------------+ +
- +
- +
-   * 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:USER_CHAR''.+
  
 +== TARGET:NO_FOLLOW ==
  
 == CONNECTION:USER_CHAR == == CONNECTION:USER_CHAR ==
Ligne 961: Ligne 1005:
  
  
-== 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:USER_CHARS ==
  
-Code actuel : ''CONNECTION:READY => 000001.01000''. 
- 
-<WRAP center round important 60%> 
-Attention : dépend de la version que vous avez de msg.xml, susceptible de changer. 
-</WRAP> 
- 
- 
-    +------------+------------+--------------+ 
-    | CONNECTION | READY      | LanguageCode | 
-    | 6 bits     | 5 bits     | String       | 
-    | 000001     | 01000      |              | 
-    +------------+------------+--------------+ 
- 
-   * LanguageCode (String) 
- 
- 
-== CONNECTION:USER_CHARS == 
  
 Liste tous les paramètres de l'utilisateur, les personnages, les domaines, ... Liste tous les paramètres de l'utilisateur, les personnages, les domaines, ...
Ligne 1029: Ligne 1056:
  
 == CONNECTION:CREATE_CHAR == == CONNECTION:CREATE_CHAR ==
 +
  
 Création d'un nouveau personnage. Création d'un nouveau personnage.
Ligne 1080: Ligne 1108:
  
  
-== GUILD:USE_FEMALE_TITLES ==+== CONNECTION:SELECT_CHAR ==
  
-Le serveur signale que la guilde((Le MMORPG utilise un système de "guilde". Voir l'évolution en "[[fr:gamedesign:khanat:start#communaute|organisation]]" pour Khaganat)) utilise le féminin dans les titres.+Le client sélectionne un personnage.
  
-Code actuel : ''GUILD:USE_FEMALE_TITLES => 011100.10010''+Code actuel : ''CONNECTION:SELECT_CHAR => 000001.00100''
 + 
 +<WRAP center round important 60%> 
 +Attention: dépend de la version que vous avez de msg.xml, susceptible de changer. 
 +</WRAP> 
 + 
 + 
 +    +----------------+--------------+-----------------+ 
 +    | CONNECTION     | SELECT_CHAR  | SelectCharMsg   | 
 +    | 6 bits         | 5 bits       | 8 bits          | 
 +    | 000001         | 00100        | 8 bits unsigned | 
 +    +----------------+--------------+-----------------+ 
 + 
 + 
 +   * 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:USER_CHAR''
 + 
 + 
 +== CONNECTION:DELETE_CHAR == 
 + 
 +== CONNECTION:RENAME_CHAR == 
 + 
 +== CONNECTION:ENTER == 
 + 
 +== CONNECTION:READY == 
 + 
 +Le serveur informe au client qu'il est prêt, puis le client informe ensuite au serveur qu'il est prêt. 
 + 
 +Code actuel : ''CONNECTION:READY => 000001.01000''.
  
 <WRAP center round important 60%> <WRAP center round important 60%>
Ligne 1090: Ligne 1147:
 </WRAP> </WRAP>
  
-    +------------+-------------------+--------------------+ 
-    | GUILD      | USE_FEMALE_TITLES | UseFemaleTitles    | 
-    | 6 bits     | 5 bits            | bool               | 
-    | 011100     | 10010             | 1 bit              | 
-    +------------+-------------------+--------------------+ 
  
-   UseFemaleTitles (bool) : 1 = OuiNon+    +------------+------------+--------------+ 
 +    | CONNECTION | READY      | LanguageCode | 
 +    | 6 bits     | 5 bits     | String       | 
 +    | 000001     | 01000      |              | 
 +    +------------+------------+--------------+ 
 + 
 +   LanguageCode (String) 
 + 
 + 
 +== CONNECTION:TIME_DATE_SYNCHRO == 
 + 
 +== CONNECTION:ASK_NAME == 
 + 
 +Le client donne le nom et son ID (zone ?) et demande une vérification côté serveur. 
 + 
 +Code actuel : ''CONNECTION:ASK_NAME => 000001.01010''
 + 
 +<WRAP center round important 60%> 
 +Attention : dépend de la version que vous avez de msg.xml, suceptible de changer. 
 +</WRAP> 
 + 
 +    +----------------+--------------+------------------+------------------+ 
 +    | CONNECTION     | ASK_NAME     | Name             | HomeSessionId    | 
 +    | 6 bits         | 5 bits       | X bits           | Uint32           | 
 +    | 000001         | 01010        | String-UTF-16    | 32 bits unsigned | 
 +    +----------------+--------------+------------------+------------------+ 
 + 
 + 
 +   * Name (String-UTF-16) 
 +   * HomeSessionId (Uint32) 
 + 
 +Retour attendu : ''CONNECTION:VALID_NAME''
 + 
 + 
 +== CONNECTION:VALID_NAME == 
 + 
 +Le serveur répond à une requête ''CONNECTION:ASK_NAME''
 + 
 + 
 +Code actuel : ''CONNECTION:VALID_NAME => 000001.01011'' 
 + 
 +<WRAP center round important 60%> 
 +Attention: dépend de la version que vous avez de msg.xml, susceptible de changer.</WRAP> 
 + 
 + 
 +    +----------------+--------------+-----------------+ 
 +    | CONNECTION     | VALID_NAME   | valide          | 
 +    | 6 bits         | 5 bits       | 8 bits          | 
 +    | 000001         | 01011        | 8 bits unsigned | 
 +    +----------------+--------------+-----------------+ 
 + 
 + 
 +   * valide (Uint8) : 1 => validesinon non valide 
 + 
 + 
 +== CONNECTION:CREATE_CHAR_ERROR == 
 + 
 +== CONNECTION:RECONNECT == 
 + 
 +== CONNECTION:SERVER_RECONNECT_OK == 
 + 
 +== CONNECTION:SHARD_ID == 
 + 
 +== CONNECTION:SERVER_QUIT_OK == 
 + 
 +== CONNECTION:SERVER_QUIT_ABORT == 
 + 
 +== CONNECTION:CLIENT_QUIT_REQUEST == 
 + 
 +== CONNECTION:MAIL_AVAILABLE == 
 + 
 +== CONNECTION:GUILD_MESSAGE_AVAILABLE == 
 + 
 +== CONNECTION:PERMANENT_BAN == 
 + 
 +== CONNECTION:UNBAN == 
 + 
 +== CONNECTION:FAR_TP == 
 + 
 +== CONNECTION:RET_MAINLAND == 
 + 
 +== DB_INIT:PLR == 
 + 
 +== DB_INIT:INV == 
 + 
 +== DB_GROUP:UPDATE_BANK == 
 + 
 +== DB_GROUP:INIT_BANK == 
 + 
 +== DB_GROUP:RESET_BANK == 
 + 
 +== HARVEST:DEPOSIT == 
 + 
 +== HARVEST:CORPSE == 
 + 
 +== HARVEST:INTERRUPT == 
 + 
 +== HARVEST:CLOSE_TEMP_INVENTORY == 
 + 
 +== JOB:SET_JOB_STATUS == 
 + 
 +== JOB:SWAP_JOB_STATUS == 
 + 
 +== CASTING:BEGIN == 
 + 
 +== CASTING:INTERRUPT == 
 + 
 +== FABER:OPEN == 
 + 
 +== FABER:CLOSE == 
 + 
 +== FABER:EXECUTE == 
 + 
 +== FABER:SET_NUM_ITEM == 
 + 
 +== FABER:START_CREATE == 
 + 
 +== FABER:START_REPAIR == 
 + 
 +== FABER:START_REFINE == 
 + 
 +== FABER:SET_MP_QUALITY == 
 + 
 +== FABER:SET_MP_REFINE == 
 + 
 +== FABER:SET_TOOL == 
 + 
 +== FABER:RESET_TOOL == 
 + 
 +== FABER:INTERRUPT == 
 + 
 +== COMBAT:ENGAGE == 
 + 
 +== COMBAT:DISENGAGE == 
 + 
 +== COMBAT:DEFAULT_ATTACK == 
 + 
 +== COMBAT:ENGAGE_FAILED == 
 + 
 +== COMBAT:VALIDATE_MELEE == 
 + 
 +== COMBAT:PARRY == 
 + 
 +== COMBAT:DODGE == 
 + 
 +== COMBAT:PROTECTED_SLOT == 
 + 
 +== COMBAT:FLYING_ChaScore1_DELTA == 
 + 
 +== COMBAT:FLYING_TEXT_ISE == 
 + 
 +== COMBAT:FLYING_TEXT == 
 + 
 +== STRING:TELL == 
 + 
 +== STRING:FAR_TELL == 
 + 
 +== STRING:CHAT == 
 + 
 +== STRING:CHAT_TEAM == 
 + 
 +== STRING:ADD_DYN_STR == 
 + 
 +== STRING:FILTER == 
 + 
 +== STRING:CHAT_MODE == 
 + 
 +== STRING:CHAT2 == 
 + 
 +== STRING:TELL2 == 
 + 
 +== STRING:DYN_STRING == 
 + 
 +== STRING:DYN_STRING_GROUP == 
 + 
 +== STRING:AFK_TXT == 
 + 
 +== STUN:STUN == 
 + 
 +== STUN:WAKE_UP == 
 + 
 +== SENTENCE:EXECUTE == 
 + 
 +== SENTENCE:CANCEL == 
 + 
 +== SENTENCE:CANCEL_CURRENT == 
 + 
 +== SENTENCE:CANCEL_ALL == 
 + 
 +== SENTENCE:CLEAR == 
 + 
 +== SENTENCE:MEMORIZE == 
 + 
 +== SENTENCE:FORGET == 
 + 
 +== SENTENCE:EVALUATE == 
 + 
 +== SENTENCE:ADD_BRICK == 
 + 
 +== SENTENCE:REMOVE_BRICK == 
 + 
 +== SENTENCE:START == 
 + 
 +== SENTENCE:STOP == 
 + 
 +== TEAM:JOIN == 
 + 
 +== TEAM:LEAVE == 
 + 
 +== TEAM:INVITATION == 
 + 
 +== TEAM:JOIN_PROPOSAL == 
 + 
 +== TEAM:JOIN_PROPOSAL_DECLINE == 
 + 
 +== TEAM:KICK == 
 + 
 +== TEAM:SET_SUCCESSOR == 
 + 
 +== TEAM:SHARE_OPEN == 
 + 
 +== TEAM:SHARE_VALID_ITEM == 
 + 
 +== TEAM:SHARE_INVALID_ITEM == 
 + 
 +== TEAM:SHARE_VALID == 
 + 
 +== TEAM:SHARE_INVALID == 
 + 
 +== TEAM:SHARE_CLOSE == 
 + 
 +== TEAM:CONTACT_INIT == 
 + 
 +== TEAM:CONTACT_ADD == 
 + 
 +== TEAM:CONTACT_DEL == 
 + 
 +== TEAM:CONTACT_MOVE == 
 + 
 +== TEAM:CONTACT_CREATE == 
 + 
 +== TEAM:CONTACT_STATUS == 
 + 
 +== TEAM:CONTACT_REMOVE == 
 + 
 +== ITEM:DROP == 
 + 
 +== ITEM:PICK_UP == 
 + 
 +== ITEM:PICK_UP_CLOSE == 
 + 
 +== ITEM:SWAP == 
 + 
 +== ITEM:ACTIVATE_SHEATH == 
 + 
 +== ITEM:HARVEST == 
 + 
 +== ITEM:HARVEST_CLOSE == 
 + 
 +== ITEM:GIVE == 
 + 
 +== ITEM:DESTROY == 
 + 
 +== ITEM:EQUIP == 
 + 
 +== ITEM:UNEQUIP == 
 + 
 +== ITEM:TEMP_TO_BAG == 
 + 
 +== ITEM:ALL_TEMP == 
 + 
 +== ITEM:NO_TEMP == 
 + 
 +== ITEM:ENCHANT == 
 + 
 +== ITEM:OPEN_ROOM_INVENTORY == 
 + 
 +== ITEM:CLOSE_ROOM_INVENTORY == 
 + 
 +== ITEM:USE_ITEM == 
 + 
 +== ITEM:STOP_USE_XP_CAT == 
 + 
 +== TP:RESPAWN == 
 + 
 +== TP:BOT == 
 + 
 +== TP:WANTED == 
 + 
 +== TP:DEST == 
 + 
 +== TP:DEST_WITH_SEASON == 
 + 
 +== TP:ACK == 
 + 
 +== TP:CORRECT == 
 + 
 +== DEATH:RESPAWN_POINT == 
 + 
 +== DEATH:ASK_RESPAWN == 
 + 
 +== DEATH:RESPAWN == 
 + 
 +== ANIMALS:BEAST == 
 + 
 +== ANIMALS:MOUNT_ABORT == 
 + 
 +== EXCHANGE:INVITATION == 
 + 
 +== EXCHANGE:CLOSE_INVITATION == 
 + 
 +== EXCHANGE:PROPOSAL == 
 + 
 +== EXCHANGE:ACCEPT_INVITATION == 
 + 
 +== EXCHANGE:DECLINE_INVITATION == 
 + 
 +== EXCHANGE:VALIDATE == 
 + 
 +== EXCHANGE:INVALIDATE == 
 + 
 +== EXCHANGE:END == 
 + 
 +== EXCHANGE:SEEDS == 
 + 
 +== EXCHANGE:ADD == 
 + 
 +== EXCHANGE:REMOVE == 
 + 
 +== DEBUG:WHERE == 
 + 
 +== DEBUG:WHO == 
 + 
 +== DEBUG:REPLY_WHERE == 
 + 
 +== DEBUG:SERVICES == 
 + 
 +== DEBUG:CMD == 
 + 
 +== DEBUG:PING == 
 + 
 +== DEBUG:COUNTER == 
 + 
 +== COMMAND:EMOTE == 
 + 
 +== COMMAND:CUSTOM_EMOTE == 
 + 
 +== COMMAND:WHERE == 
 + 
 +== COMMAND:ADMIN == 
 + 
 +== COMMAND:ADMIN_OFFLINE == 
 + 
 +== COMMAND:REMOTE_ADMIN == 
 + 
 +== COMMAND:REMOTE_ADMIN_ANSWER == 
 + 
 +== COMMAND:SIT == 
 + 
 +== COMMAND:AFK == 
 + 
 +== COMMAND:RANDOM == 
 + 
 +== COMMAND:GUILDMOTD == 
 + 
 +== MP_EVAL:SET_MP == 
 + 
 +== MP_EVAL:SET_MP_LEVEL == 
 + 
 +== MP_EVAL:SET_MARKET == 
 + 
 +== MP_EVAL:EXECUTE == 
 + 
 +== BOTCHAT:NEXT_PAGE_ITEM == 
 + 
 +== BOTCHAT:NEXT_PAGE_MISSION == 
 + 
 +== BOTCHAT:START_TRADE_ITEM == 
 + 
 +== BOTCHAT:START_TRADE_TELEPORT == 
 + 
 +== BOTCHAT:START_TRADE_FACTION == 
 + 
 +== BOTCHAT:START_TRADE_SKILL == 
 + 
 +== BOTCHAT:START_TRADE_PACT == 
 + 
 +== BOTCHAT:START_TRADE_ACTION == 
 + 
 +== BOTCHAT:BUY == 
 + 
 +== BOTCHAT:SELL == 
 + 
 +== BOTCHAT:DESTROY_ITEM == 
 + 
 +== BOTCHAT:REFRESH_TRADE_LIST ==
  
 == BOTCHAT:SET_FILTERS == == BOTCHAT:SET_FILTERS ==
 +
 Le client informe de certains filtres. Le client informe de certains filtres.
  
Ligne 1109: Ligne 1557:
  
 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'un ayant accès au code sous NDA de Ryzom pour trouver plus de détail. 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'un ayant accès au code sous NDA de Ryzom pour trouver plus de détail.
- --- //[[wiki:user:zatalyz|zatalyz]] 2020/08/21 13:46//+ --- //[[user:zatalyz|zatalyz]] 2020/08/21 13:46//
 </WRAP> </WRAP>
  
 <WRAP center round tip 60%> <WRAP center round tip 60%>
 En fait, tout ce qui est 'botchat' c'est les échanges avec les PNJ. Les filtres des botchat sont donc les filtres des fenêtres d'achats/vente avec les PNJ. En fait, tout ce qui est 'botchat' c'est les échanges avec les PNJ. Les filtres des botchat sont donc les filtres des fenêtres d'achats/vente avec les PNJ.
- --- //[[wiki:user:siela1915|siela1915]] 2020/08/22 00:15//+ --- //[[user:siela1915|siela1915]] 2020/08/22 00:15//
 </WRAP> </WRAP>
  
Ligne 1139: Ligne 1587:
    * itemPart (Uint8)    * itemPart (Uint8)
    * itemType (Uint8)    * itemType (Uint8)
 +
 +
 +== BOTCHAT:START_CHOOSE_MISSION ==
 +
 +== BOTCHAT:START_DYNAMIC_MISSION ==
 +
 +== BOTCHAT:CONTINUE_MISSION ==
 +
 +== BOTCHAT:VALIDATE_PLAYER_GIFT ==
 +
 +== BOTCHAT:PICK_MISSION ==
 +
 +== BOTCHAT:DM_CHOICE ==
 +
 +== BOTCHAT:DM_ACCEPT ==
 +
 +== BOTCHAT:START_NEWS ==
 +
 +== BOTCHAT:START_CREATE_GUILD ==
 +
 +== BOTCHAT:END ==
 +
 +== BOTCHAT:FORCE_END ==
 +
 +== BOTCHAT:START_CHOOSE_DUTY ==
 +
 +== BOTCHAT:NEXT_PAGE_DUTY ==
 +
 +== BOTCHAT:DUTY_APPLY ==
 +
 +== BOTCHAT:DUTY_CANCEL_APPLY ==
 +
 +== BOTCHAT:START_TRADE_GUILD_OPTIONS ==
 +
 +== BOTCHAT:BUY_GUILD_OPTION ==
 +
 +== BOTCHAT:START_GUILD_RESEARCH ==
 +
 +== BOTCHAT:DESTROY_BUILDING ==
 +
 +== BOTCHAT:DYNCHAT_OPEN ==
 +
 +== BOTCHAT:DYNCHAT_CLOSE ==
 +
 +== BOTCHAT:DYNCHAT_SEND ==
 +
 +== JOURNAL:INIT_COMPLETED_MISSIONS ==
 +
 +== JOURNAL:UPDATE_COMPLETED_MISSIONS ==
 +
 +== JOURNAL:MISSION_ABANDON ==
 +
 +== JOURNAL:GROUP_MISSION_ABANDON ==
 +
 +== JOURNAL:ADD_COMPASS ==
 +
 +== JOURNAL:ADD_COMPASS_BOT ==
 +
 +== JOURNAL:REMOVE_COMPASS ==
 +
 +== JOURNAL:REMOVE_COMPASS_BOT ==
 +
 +== STRING_MANAGER:SET_LANGUAGE ==
 +
 +== STRING_MANAGER:PHRASE_SEND ==
 +
 +Le serveur envoie un message, plus précisément le pointeur sur le message.
 +
 +Code actuel : ''STRING_MANAGER:PHRASE_SEND => 011011.001''
 +
 +<WRAP center round important 60%>
 +Attention : dépend de la version que vous avez de ''msg.xml'', susceptible de changer !
 +</WRAP>
 +    +----------------+--------------+------------------+------------------+
 +    | STRING_MANAGER | PHRASE_SEND  | dyn_id           | string_id        | string_id . . .
 +    | 6 bits         | 3 bits       | uint32           | uint32           | tant que l'on a au moins 32 bits, on lit un autre string_id
 +    | 011011         | 001          | 32 bits unsigned | 32 bits unsigned |
 +    +----------------+--------------+------------------+------------------+
 +
 +   * ''dyn_id'' (Uint32) : l'ID du groupe de message
 +   * ''string_id'' (Uint32) : le pointeur sur le message
 +
 +
 +== STRING_MANAGER:STRING_RQ ==
 +
 +Le client demande le message complet en fonction du pointeur.
 +
 +Code actuel : ''STRING_MANAGER:STRING_RQ => 011011.010''.
 +
 +    +----------------+--------------+------------------+
 +    | STRING_MANAGER | STRING_RQ    | string_id        |
 +    | 6 bits         | 3 bits       | uint32           |
 +    | 011011         | 010          | 32 bits unsigned |
 +    +----------------+--------------+------------------+
 +
 +   * ''string_id'' (Uint32) : le pointeur sur le message
 +
 +Le serveur va répondre à ce message par ''STRING_MANAGER:STRING_RESP''.
 +
 +== STRING_MANAGER:STRING_RESP ==
 +
 +Le serveur renvoie le message complet.
 +
 +Code actuel : ''STRING_MANAGER:STRING_RESP => 011011.011''.
 +
 +    +----------------+--------------+------------------+--------------+
 +    | STRING_MANAGER | STRING_RESP  | string_id        | MessageUtf8  |
 +    | 6 bits         | 3 bits       | uint32           | String-UTF-8 |
 +    | 011011         | 011          | 32 bits unsigned | X bits       |
 +    +----------------+--------------+------------------+--------------+
 +
 +   * ''string_id'' (Uint32) : le pointeur sur le message.
 +   * ''MessageUtf8'' (String-UTF-8) : la chaîne de caractère en UTF-8.
 +
 +On remarque ici l'utilisation de la chaîne de caractère au format UTF-8 (alors qu’ailleurs nous avons UTF-16).
 +
 +
 +== STRING_MANAGER:RELOAD_CACHE ==
 +
 +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 : ''STRING_MANAGER:RELOAD_CACHE => 011011.100''
 +
 +<WRAP center round important 60%>
 +Attention : dépend de la version que vous avez de ''msg.xml'', susceptible de changer !
 +</WRAP>
 +
 +
 +    +----------------+--------------+------------------+
 +    | STRING_MANAGER | RELOAD_CACHE | timestamp        |
 +    | 6 bits         | 3 bits       | uint32           |
 +    | 011011         | 100          | 32 bits unsigned |
 +    +----------------+--------------+------------------+
 +
 +   * ''timestamp (uint32)'' : date du tableau de message
 +
 +
 +== GUILD:CREATE ==
 +
 +== GUILD:ABORT_CREATION ==
 +
 +== GUILD:OPEN_GUILD_WINDOW ==
 +
 +== GUILD:INVITATION ==
 +
 +== GUILD:ACCEPT_INVITATION ==
 +
 +== GUILD:REFUSE_INVITATION ==
 +
 +== GUILD:JOIN_PROPOSAL ==
 +
 +== GUILD:SET_GRADE ==
 +
 +== GUILD:SET_LEADER ==
 +
 +== GUILD:KICK_MEMBER ==
 +
 +== GUILD:TELEPORT ==
 +
 +== GUILD:ASCENSOR ==
 +
 +== GUILD:FIRST_ASCENSOR_PAGE ==
 +
 +== GUILD:NEXT_ASCENSOR_PAGE ==
 +
 +== GUILD:LEAVE_ASCENSOR ==
 +
 +== GUILD:QUIT ==
 +
 +== GUILD:SET_PLAYER_TITLE ==
 +
 +== GUILD:UPDATE_PLAYER_TITLE ==
 +
 +== GUILD:USE_FEMALE_TITLES ==
 +
 +Le serveur signale que la guilde((Le MMORPG utilise un système de "guilde". Voir l'évolution en "[[fr:gamedesign:khanat:start#communaute|organisation]]" pour Khaganat)) utilise le féminin dans les titres.
 +
 +Code actuel : ''GUILD:USE_FEMALE_TITLES => 011100.10010''
 +
 +<WRAP center round important 60%>
 +Attention : dépend de la version que vous avez de msg.xml, susceptible de changer.
 +</WRAP>
 +
 +    +------------+-------------------+--------------------+
 +    | GUILD      | USE_FEMALE_TITLES | UseFemaleTitles    |
 +    | 6 bits     | 5 bits            | bool               |
 +    | 011100     | 10010             | 1 bit              |
 +    +------------+-------------------+--------------------+
 +
 +   * UseFemaleTitles (bool) : 1 = Oui, 0 = Non
 +
 +== GUILD:PUT_MONEY ==
 +
 +== GUILD:TAKE_MONEY ==
 +
 +== GUILD:OPEN_INVENTORY ==
 +
 +== GUILD:CLOSE_INVENTORY ==
 +
 +== OUTPOST:GIVEUP_OUTPOST ==
 +
 +== OUTPOST:SELECT ==
 +
 +== OUTPOST:UNSELECT ==
 +
 +== OUTPOST:DECLARE_WAR_START ==
 +
 +== OUTPOST:DECLARE_WAR_ACK ==
 +
 +== OUTPOST:DECLARE_WAR_VALIDATE ==
 +
 +== OUTPOST:SET_DEF_PERIOD ==
 +
 +== OUTPOST:SET_SQUAD ==
 +
 +== OUTPOST:SET_SQUAD_SPAWN ==
 +
 +== OUTPOST:INSERT_SQUAD ==
 +
 +== OUTPOST:REMOVE_SQUAD ==
 +
 +== OUTPOST:SET_SQUAD_CAPITAL ==
 +
 +== OUTPOST:CHOOSE_SIDE ==
 +
 +== OUTPOST:SIDE_CHOSEN ==
 +
 +== OUTPOST:BANISH_PLAYER ==
 +
 +== OUTPOST:BANISH_GUILD ==
 +
 +== OUTPOST:BUY_BUILDING ==
 +
 +== OUTPOST:DESTROY_BUILDING ==
 +
 +== PHRASE:DELETE ==
 +
 +== PHRASE:LEARN ==
 +
 +== PHRASE:MEMORIZE ==
 +
 +== PHRASE:FORGET ==
 +
 +== PHRASE:EXECUTE ==
 +
 +== PHRASE:EXECUTE_CYCLIC ==
 +
 +== PHRASE:EXECUTE_FABER ==
 +
 +== PHRASE:DOWNLOAD ==
 +
 +== PHRASE:BUY ==
 +
 +== PHRASE:CONFIRM_BUY ==
 +
 +== PHRASE:BUY_SHEET ==
 +
 +== PHRASE:CANCEL_LINK ==
 +
 +== PHRASE:CANCEL_TOP ==
 +
 +== PHRASE:CANCEL_ALL ==
 +
 +== PHRASE:CRISTALIZE ==
 +
 +== PHRASE:EXEC_CYCLIC_ACK ==
 +
 +== PHRASE:EXEC_NEXT_ACK ==
 +
 +== ITEM_INFO:GET ==
 +
 +== ITEM_INFO:SET ==
 +
 +== ITEM_INFO:REFRESH_VERSION ==
 +
 +== MISSION_PREREQ:GET ==
 +
 +== MISSION_PREREQ:SET ==
 +
 +== MISSION:ENTER_CRITICAL ==
 +
 +== MISSION:ASK_ENTER_CRITICAL ==
 +
 +== MISSION:CLOSE_ENTER_CRITICAL ==
 +
 +== MISSION:WAKE ==
 +
 +== MISSION:GROUP_WAKE ==
 +
 +== DUEL:ASK ==
 +
 +== DUEL:ACCEPT ==
 +
 +== DUEL:REFUSE ==
 +
 +== DUEL:ABANDON ==
 +
 +== DUEL:INVITATION ==
 +
 +== DUEL:CANCEL_INVITATION ==
 +
 +== PVP_CHALLENGE:ASK ==
 +
 +== PVP_CHALLENGE:ACCEPT ==
 +
 +== PVP_CHALLENGE:REFUSE ==
 +
 +== PVP_CHALLENGE:ABANDON ==
 +
 +== PVP_CHALLENGE:INVITATION ==
 +
 +== PVP_CHALLENGE:CANCEL_INVITATION ==
 +
 +== PVP:PVP_TAG ==
 +
 +== PVP:SET_NEUTRAL_ALLEGIANCE ==
 +
 +== PVP:SET_NEUTRAL_ALLEGIANCE_GUILD ==
 +
 +== PVP_FACTION:PUSH_FACTION_WAR ==
 +
 +== PVP_FACTION:POP_FACTION_WAR ==
 +
 +== PVP_FACTION:FACTION_WARS ==
 +
 +== ENCYCLOPEDIA:UPDATE ==
 +
 +== ENCYCLOPEDIA:INIT ==
 +
 +== USER:BARS ==
 +
 +== USER:POPUP ==
 +
 +== EVENT:SET_ITEM_CUSTOM_TEXT ==
 +
 +== EVENT:DUMMY ==
 +
 +== TOTEM:BUILD ==
 +
 +== TOTEM:DUMMY ==
 +
 +== MODULE_GATEWAY:FEOPEN ==
 +
 +== MODULE_GATEWAY:GATEWAY_MSG ==
 +
 +== MODULE_GATEWAY:FECLOSE ==
 +
 +== SEASON:SET ==
 +
 +== SEASON:DUMMY ==
 +
 +== DM_GIFT:BEGIN ==
 +
 +== DM_GIFT:VALIDATE ==
 +
 +== RING_MISSION:MISSION_RING_SELECT ==
 +
 +== RING_MISSION:DSS_DOWN ==
 +
 +== NPC_ICON:GET_DESC ==
 +
 +== NPC_ICON:SET_DESC ==
 +
 +== NPC_ICON:SVR_EVENT_MIS_AVL ==
 +
 +== NPC_ICON:SET_TIMER ==
  
  
CC Attribution-Share Alike 4.0 International Driven by DokuWiki
fr/toutcommenceparlereseau.txt · Dernière modification : 2021/12/03 19:19 de 127.0.0.1

Licences Mentions légales Accueil du site Contact