// *************************************************************************** // *************************************************************************** // INTERFACE COMMANDS // *************************************************************************** // *************************************************************************** Fichier de definition des commandes et paramtres de l'interface Note: dans la syntaxe et la description des parmptres, la valeur indique est la valeur par dffaut Note: le X va vers la droite, le Y vers le haut. Les valeurs sont en pixels Note: DERIVANT DE veut dire qu'on peut mettre les meme parametres que celui de qui on derive les modifiables sont aussi herites Note: MODIFIABLE veut dire que l'on peut modifier un paramtres dans le script (avec un link par exemple) Note: OBLIGATOIRE veut dire que l'option doit tre presente sinon il y a crash ou non fonctionnement Note: Identifiant de localisation local de type string (fait reference a un id de en.uxt par exemple) Identifiant de localisation reseau de type integer // *************************************************************************** // *************************************************************************** // BASICS // *************************************************************************** // *************************************************************************** chaque vue, control, ou group DERIVE DE interface_element et peut avoir les parametres suivant: <view_ctrl_group id="" // id de l element. OBLIGATOIRE active="true" // affiche ou pas x="0" // position en X relative posref et posparent y="0" // position en Y relative posref et posparent w="0" // Taille de l element. Si l element possde un parent, prend le W du parent par defaut h="0" // Taille de l element. Si l element possde un parent, prend le H du parent par defaut posref="BL BL" // position de reference (Bottom Left, MiddleMiddle etc...) // Se lit "PositionDuParent MaPosition" // Ex: "BL TR" signifie "mon Top Right est fix� sur le Bottom Left du parent" posparent="parent" // Definit le parent de l element pour ce qui est du positionnement sizeref="" // valeurs possibles: "w", "h", "wh", "w?h?" ou ? est un facteur entre 1 et 9. // Dans ce cas la taille du parent est multiplie par ce facteur puis divisee par 10. // Au moment de l affichage, ajoute la taille du parent W ou/et H a celle definit par // w="" et h="". example: "w2h" implique que WAffiche = W + 2*parentW/10 et que // HAffiche = H + parentH sizeparent="" // Indique le parent que l on prend pour le calcul des tailles WAffiche et HAffiche si cette // valeur n est pas specifiee alors on prends le posparent pour le calcul de la taille global_color="true" // si true modulate la couleur par la couleur globale render_layer="0" // valeur de -16 � +14 decale l ordre de rendu de l �lement. avoid_resize_parent="false" // Si cette valeur est mise a true, un group ayant un child_resize_x ne // prendra pas en compte cet element pour se resizer /> MODIFIABLE: active (bool) x, y, w, h (int) // *************************************************************************** // *************************************************************************** // VIEWS // *************************************************************************** // *************************************************************************** Une vue a un type qui est dfinit par le parametre type="". <view type="" /> MODIFIABLE: alpha (int) // *************************************************************************** // <view type="bitmap" /> // *************************************************************************** BUT: affiche une bitmap SYNTAXE: <view type="bitmap" color="255 255 255 255" // couleur (modulate) de la bitmap texture="" // fichier de la texture scale="false" // si false, le W et le H sont forcs 7 etre de la taille de la texture rot="0" // definit valeur de rotation de la bitmap flip="false" tile="false" align="0" /> MODIFIABLE: color (string) color_as_int (int) color_rgba (rgba) texture (string) alpha (int) // *************************************************************************** // <view type="background" /> // *************************************************************************** Vue DERIVANT DE <view type="bitmap" /> BUT: affiche une bitmap dans des textures non condenses (plusieurs textures dans une seule) SYNTAXE: <view type="background" txtoffsetx="0" // offset dans la texture (en haut a gauche et positif vers le bas a droite) txtoffsety="24" // offset dans la texture txtwidth="800" // taille de la texture txtheight="488" /> texture sert pour le nom de la texture toute seule // *************************************************************************** // <view type="text" /> // *************************************************************************** BUT: affiche un text SYNTAXE: <view type="text" color="255 255 255 255" // couleur (modulate) du text fontsize="12" shadow="false" shadow_color="0 0 0 255" // la couleur de l ombre du texte hardtext="" // si present definit le text afficher. (Identifiant de localisation local) multi_line="false" multi_line_space="8" justification="dont_clip_word" // clip_word : pas de justification // dont_clip_word : Mots non coup�s et non justifi�s // justified : Mots non coup�s et justifi�s underlined="false" // sous ligne la phrase case_mode="0" // Regle de majuscule // 0 : CaseNormal Pas de modification majuscule minuscule // 1 : CaseLower Toutes les lettres sont force en minuscule // 2 : CaseUpper Toutes les lettres sont forcees en majuscule // 3 : CaseFirstStringLetterUp La premiere lettre de la string est en majuscule // 4 : CaseFirstSentenceLetterUp La premiere lettre de la string et des phrases // suivantes (separes par un .) sont en majuscule // 5 : CaseFirstWordLetterUp La premiere lettre de chaque mot est en majuscule line_maxw="16384" // maximum size of the line (multiline: minimized with the current wreal of the parent) multi_line_maxw_only="false" // multiline: don t minimize linemaxw with parent wreal. Use only linemaxw over_extend_view_text="false" // usefull only if some line_maxw specified. if true and if the text is clipped cause // of line_maxw, and if the mouse over the view text, then a special tooltip will be // displayed over, to show all the text over_extend_parent_rect="false" // true to use in conjunction of over_extend_view_text: the over area is the parent, not the view auto_clamp="true" // when set to true, dots '...' will be added to the end of the line if the text is clipped by its parent (single line only) continuous_update="true" // multiline text justification is recomputed continuously as the window parent is resized (not when the left button is released only) // default is "false" /> MODIFIABLE: hardtext (string) uc_hardtext (ucstring) color (string ('#r #g #b #a')) color_rgba (rgba) alpha (int) NOTE: IL NE FAUT PAS mettre de sizeref sur une vue texte. NOTE: Les vue textes peuvent prendre la forme de "TextFormatTagged". MAIS SEULES les vues textes multilignes interpr�tent correctement les tags. Les Tags possibles sont: @{F3DF} Tag De couleur (en hexadecimal, d�fintion avec 0 � F (0 � 15 maxi only donc) pour chaque composante RGBA) @{T10} Tag de Tabulation. Le chiffre indique l'espacement minimum (en nombre de caract�re '_') NOTE: Il n'est pas posssible de pr�ciser un TextFormatTaged, autrement que par code C++, ou via la fonction LUA: setTextFormatTaged() // *************************************************************************** // <view type="text_id" /> // *************************************************************************** BUT: Vue DERIVANT DE <view type="text" /> affiche un text en fonction d'un identifiant reseau (c'est une chaine de character equivalent a set_server_string (ah)) SYNTAXE: <view type="text" textid="" // lien database vers un identifiant ("UI:TEMP:VAR1") ou identifiant lui meme ("654123") dynamic_string="true" // si true la phrase est composee (CStringManagerClient::getDynString), // sinon c est un identifiant server (CStringManagerClient::getString) /> MODIFIABLE: textid (int) textid_dblink (string) // *************************************************************************** // <view type="text_number" /> // *************************************************************************** BUT: Vue DERIVANT DE <view type="text" /> Affiche une entre de la database (un nombre entier) sous forme de text SYNTAXE: <view type="text_number" value="" // Lien vers la database pour lire la valeur OBLIGATOIRE. positive="true" suffix="" prefix="" /> // *************************************************************************** // <view type="text_formated" /> // *************************************************************************** BUT: Vue DERIVANT DE <view type="text" /> Affiche un texte. Si le texte contient les caracteres speciaux suivant, il y a un traitement particulier $p -> remplace par le nom du joueur $P -> remplace par le nom du joueur en lettre capitale $b -> remplace par le nom du NPC auquel le joueur est en train de parler $s -> remplace par le nom du NPC auquel le joueur est en train de parler (sans le titre) ui... -> remplace par la traduction i18n (puis effectue les remplacements precedent) SYNTAXE: <view type="text_formated" format="$b" // chaine a remplacer (par defaut chaine vide) /> // *************************************************************************** // <view type="text_id_formated" /> // *************************************************************************** BUT: Vue DERIVANT DE <view type="text_id" /> Un peu dans le meme esprit que la vue text_formated. Elle possede les memes traitements particuliers que text_formated auxquels il faut y rajouter : $t -> remplace par la valeur du text id SYNTAXE: <view type="text_id_formated" format="$t" // Par defaut textid="SERVER:BOTCHAT:DM_CHOICE2:TITLE" /> // *************************************************************************** // <view type="text_quantity" /> // *************************************************************************** BUT: Vue DERIVANT DE <view type="text" /> Affiche un nombre de la database sous la forme "8/10" (avec donc une valeur max de la database). Si le nombre est 0, cela affiche la string emptytext. Par defaut emptytext="", et dans ce cas, "0/80" est affich (80 est la vraie valeur max en fait) SYNTAXE: <view type="text_quantity" value="" // Lien vers la database pour lire la valeur OBLIGATOIRE. valuemax="" // Lien vers la database pour lire la valeur Max. OBLIGATOIRE. emptytext="" // quand valeur==0, string afficher. "" veut dire affiche 0/valeurMax /> NB : emptytext contient un identifiant de localization local // *************************************************************************** // <view type="digit" /> // *************************************************************************** BUT: Vue speciale qui affiche un nombre avec des digits speciaux (bitmaps). SYNTAXE: <view type="digit" value="SERVER:...." // lien sur la database. OBLIGATOIRE numdigit="2" // nombre de digit affichs (eg 00 si la valeur est nulle). Defaut:2. Min:1 et Max: 10 wspace="-1" // espacement en pixel entre chaque digit. Defaut: -1 color="255 255 255 255" // comme les boutons, blanc par defaut /> La taille totale est automatiquement calcule en fonction du digit 0 et du nombre de digit. bien sur, x,y,posref etc... marche toujours // *************************************************************************** // <view type="bar" /> // *************************************************************************** BUT: Vue DERIVANT DE <view type="bitmap" /> affiche une valeur sous forme de bar. Pour l instant 4 versions : (normal, mini, ultra_mini et mini_thick) les bitmaps utilisees sont hardcodees en c++ SYNTAXE: <view type="bar" value="" // valeur courante (Valeur ou Lien DB) range="" // range (Valeur ou Lien DB) reference="" // Valeur soustraire de value et range (exemple: gestion de temps).(Valeur ou Lien DB) color_negative="" // couleur quand les valeurs sont negatives mini="true" // Affiche la version mini ultra_mini="true" // Affiche la version ultra mini mini_thick="true" // Affiche la version mini thick /> MODIFIABLE: value (int) range (int) reference (int) value_dblink (string) range_dblink (string) reference_dblink (string) // *************************************************************************** // <view type="bar3" /> // *************************************************************************** BUT: Vue DERIVANT DE <view type="bitmap" /> un peu dans le meme esprit que "bar" mais affiche directement 3 barres SYNTAXE: <view type="bar3" value1="" value2="" value3="" range1="" range2="" range3="" color1="" color2="" color3="" color1_negative="" color2_negative="" color3_negative="" mini="true" /> MODIFIABLE: value1 (int) value2 (int) value3 (int) range1 (int) range2 (int) range3 (int) // *************************************************************************** // *************************************************************************** // CONTROLS // *************************************************************************** // *************************************************************************** DERIVE DE <view type="" /> Un control a un type qui est d�finit par le param�tre type="". <ctrl type="" tooltip="" // aide contextuelle par defuat tooltip_i18n="" // idem tooltip, mais cherche forc�ment la d�finition dans le wk.uxt, // m�me si le texte ne commence pas par "ui" on_tooltip="" // action handler qui permet de mettre une autre aide contextuelle on_tooltip_params="" // les parametres de l action handler instant_help="true" // Est ce que l aide contextuelle a affichee est affichee directement tooltip_parent="ctrl" // "ctrl", "win" ou "mouse". D�finit le parent relatif lors de l affichage // du tooltip. "ctrl" veut dire que le tooltip est call� par rapport � ce control "win" veut dire que le tooltip est affich� par rapport � la fenetre contenant le control "mouse" veut dire que le tooltip est call� par rapport � la souris tooltip_posref="auto" // Position de r�f�rence du tooltip par rapport � son parent (cf tooltip_parent) "auto" la posution de r�f�rence est chosie intelligement suivant le type de parent: "ctrl": "TL BR" ou "TR BL" suivant que la fenetre contenant le control est plus � gauche ou � droite "win": "TL BL" ou "BL TL" suivant que la fenetre contenant le control est plus en haut ou en bas "mouse": "BL BL" "TL BR" (ou toute autre position de r�f�rence possible): calage fixe /> MODIFIABLE: alpha (int) // *************************************************************************** // <ctrl type="tooltip" /> // *************************************************************************** BUT: Control qui d�rive simplement de ctrl_base, et qui ne g�re aucun �venement et n'affiche rien. Son seul but est d'avoir une zone pour afficher un tooltip quand on passe dessus. SYNTAXE: <ctrl type="tooltip" /> // *************************************************************************** // <ctrl type="button" /> // *************************************************************************** BUT: boutton, push, radio ou toggle. SYNTAXE: <ctrl type="button" button_type="toggle_button" // type du boutton: "toggle_button", "push_button" ou "radio_button" pushed="false" // etat pushed par defaut color="255 255 255 255" // couleur etat normal col_pushed="255 255 255 255" // couleur quand pushed col_over="255 255 255 255" // couelur quand over global_color_normal="" // remplace le setup global_color pour l etat normal du bouton global_color_pushed="" // remplace le setup global_color pour l etat pushed du bouton global_color_over="" // remplace le setup global_color pour l etat over du bouton tx_normal="" // texture etat normal tx_pushed="" // texture etat pushed tx_over="" // texture etat over scale="false" onclick_l="" // action � lancer sur un click gauche params_l="" // parametres de l action � lancer sur un click gauche onlongclick_l="" // action a lancer sur un click long params_longclick_l="" onclick_r="" // action � lancer sur un click droit params_r="" // parametres de l action � lancer sur un click droit align="" // si pas de scale et que zone d�finie plus grande que l image menu_l="" // context menu � afficher sur un click bouton gauche (voir group de type menu) menu_r="" // context menu � afficher sur un click bouton droit (voir group de type menu) menu_b="" // context menu � afficher sur un click bouton droit ou gauche (voir group de type menu) frozen="false" // button is frozen /> MODIFIABLE: pushed (bool) col_normal (string ('#r #g #b #a')) col_over (string ('#r #g #b #a')) col_pushed (string ('#r #g #b #a')) col_normal_rgba (rgba) col_over_rgba (rgba) col_pushed_rgba (rgba) frozen (bool) params_l (string) texture (string) texture_pushed (string) texture_over (string) // *************************************************************************** // <ctrl type="text_button" /> // *************************************************************************** BUT: boutton, push, radio ou toggle. SYNTAXE: <ctrl type="text_button" button_type="toggle_button" // type du boutton: "toggle_button", "push_button" ou "radio_button" pushed="false" // etat pushed par defaut color="255 255 255 255" // couleur etat normal col_pushed="255 255 255 255" // couleur quand pushed col_over="255 255 255 255" // couelur quand over global_color_normal="" // remplace le setup global_color pour l etat normal du bouton global_color_pushed="" // remplace le setup global_color pour l etat pushed du bouton global_color_over="" // remplace le setup global_color pour l etat over du bouton // Textures: // contrairement aux boutons, ici il faut mettre seulement "textb_normal" par exemple. // les "_l.tga", "_m.tga", "_r.tga" etant ajoutees automatiquement pour trouver respectivement les parties // gauches, millieu (celle qui est scal�e en X) et droite. tx_normal="" // texture etat normal. tx_pushed="" // texture etat pushed. tx_over="" // texture etat over. onclick_l="" // action � lancer sur un click gauche params_l="" // parametres de l action � lancer sur un click gauche onlongclick_l="" // action a lancer sur un click long params_longclick_l="" onclick_r="" // action � lancer sur un click droit params_r="" // parametres de l action � lancer sur un click droit menu_l="" // context menu � afficher sur un click bouton gauche (voir group de type menu) menu_r="" // context menu � afficher sur un click bouton droit (voir group de type menu) menu_b="" // context menu � afficher sur un click bouton droit ou gauche (voir group de type menu) // Texte infos: hardtext="" fontsize="" shadow="" underlined="" // Comportement Special des Couleurs des Textes text_color_normal="255 255 255 255" text_color_pushed="255 255 255 255" text_color_over="255 255 255 255" text_shadow_color_normal="0 0 0 255" text_shadow_color_pushed="0 0 0 255" text_shadow_color_over="0 0 0 255" text_global_color_normal="" text_global_color_pushed="" text_global_color_over="" // Special: text_y="" // d�calage du texte en Y rapport au bouton (-2) wmargin="" // taille � ajouter au texte pour avoir la taille du bouton wmin="" // taille minimum du bouton /> MODIFIABLE: pushed (bool) col_normal (string ('#r #g #b #a')) col_over (string ('#r #g #b #a')) col_pushed (string ('#r #g #b #a')) col_normal_rgba (rgba) col_over_rgba (rgba) col_pushed_rgba (rgba) frozen (bool) params_l (string) uc_hardtext (ucstring telle quelle) hardtext (string qui va etre localisee) // *************************************************************************** // <ctrl type="scroll" /> // *************************************************************************** BUT: scroll bar. SYNTAXE: <ctrl type="scroll" tx_bottomleft="" // Les textures du bouton (pas de background affiche) (bottom or left) tx_middle="" tx_topright="" // top or right (ca depends si la sb est verticale) vertical="" // Est ce que c est une sb verticale ou horizontale align="" // T, B, L ou R value="" // Value entree de DB ou nombre (si pas present alors la sb est linke a une target) min="" // Si la sb n est pas linke a une target alors le nombre qu elle // represente varie de min a max tracksize="" // Taille de la track bar (le boutton) onscroll="" // Action Handler appele lorsque la sb est deplacee onscrollend="" // Appele quand on arrete de scroller params="" target="" // Si la sb n est pas linke a une value alors elle peut etre linke a un group. Dans ce cas // le group est se deplace dans la limite de ses max_w et max_h relativement a ses w et h. target_stepx="" // Donne la quantite de pixel a deplacer en une fois. Ce qui permet par exemple dans les target_stepy="" // listes de sheet d etre cale sur un sheet step_value="" /> // *************************************************************************** // <ctrl type="sheet" /> // *************************************************************************** BUT: affiche un boutton sp�cial d'item, brique etc... SYNTAXE: <ctrl type="sheet" value="" // Lien vers la database. OBLIGATOIRE. // example: SERVER:INVENTORY:8:1. NB: lien vers une branche de la database // qui DOIT contenir SHEET, et peut avoir QUANTITY et/ou QUALITY nature="item" // "item", "brick", "spell" brick_type="" // "COMBAT", "MAGIC". may be important for some filter (memory...) // Can also put multiple filter like this: "COMBAT|MAGIC|HARVEST" tx_noitem="" col_noitem="true" // "true": quand pas d item, modulate la couleur avec la couelur globale onclick_l="" // action � lancer sur un click gauche params_l="" // parametres de l action � lancer sur un click gauche onclick_r="" // action � lancer sur un click droit params_r="" // parametres de l action � lancer sur un click droit menu_l="" // context menu � afficher sur un click bouton gauche (voir group de type menu) menu_r="" // context menu � afficher sur un click bouton droit (voir group de type menu) menu_b="" // context menu � afficher sur un click bouton droit ou gauche (voir group de type menu) dragable="false" // drag and drop able? oncandrop="" // Action a lancer pour savoir si on peut Droper sur moi. params_candrop="" ondrop="" // Action a lancer sur un drop sur moi params_drop="" use_quantity="true" // display the Item Quantity use_quality="true" // display the Item Quality duplicate_on_drag="false" // when drag a sheet (item only), leave the bitmap in the original slot use_slot_type_db_entry="false" // Automatic Type. grayed="false" // init the sheet as grayed or not auto_grayed="false" // Gray auto the sheet according to Item LOCKED state or Brick LATENT state slot="true" // Draw the slot /> MODIFIABLE: sheet (string) (correspond a la value le lien vers la DB) color1 (rgba) color2 (rgba) back (int) symbol (int) invert_symbol (bool) // *************************************************************************** // <ctrl type="colpick" /> // *************************************************************************** BUT: affiche une image pour choisir que l on puisse choisir une couleur dedans SYNTAXE: <ctrl type="colpick" texture="color_palette.tga" // La texture a utiliser (texture non groupee!) onchange="proc" // Action a lancer des que la couleur selectionnee change onchange_params="proc_col_change" // Les parametres de l action dbcolr="UI:TEMP:COL:R" // . dbcolg="UI:TEMP:COL:G" // . dbcolb="UI:TEMP:COL:B" // . dbcola="UI:TEMP:COL:A" // Liens direct avec la database de la couleur selectionnee /> MODIFIABLE: r, g, b, a (int) les composantes de la couleur selectionnee color (string ('#r #g #b #a')) // *************************************************************************** // *************************************************************************** // GROUPS // *************************************************************************** // *************************************************************************** // *************************************************************************** // <group> // *************************************************************************** BUT: DERIVE DE <ctrl type=""/> D�finit un group qui pourra contenir des groups, des controls ou des vues. Aucun affichage n'est fait sinon celui des fils Pour qu'un groupe soit affich�, il faut qu'il apparaisse dans les <tree node=""> SYNTAXE: <group overlappable="true" // Recupere les evenements child_resize_w="false" // si true, resize le groupe en W selon ses fils. child_resize_h="false" // si true, resize le groupe en H selon ses fils. child_resize_wmargin="0" // si child_resize_w="true" ajoute une marge � la largeur totale des fils child_resize_hmargin="0" // si child_resize_h="true" ajoute une marge � la hauteur totale des fils on_active="" // nom d un handler appel� quand la fenetre est activ�e on_active_params="" // parametre pass� au handler quand la fenetre est activ�e on_deactive="" // nom d un handler appel� quand la fenetre est d�sactiv�e on_deactive_params="" // parametre pass� au handler quand la fenetre est sactiv�e on_enter="" // windows et modal only: Gere l evenement entree : Quand on appuie sur enter (return) on_enter_params="" // windows et modal only: Les parametres de l evenement entree escapable="false" // windows only: true : ferme la fenetre si ESC appuy�e. max_w="" // max_w et max_h definisse la taille maximum a afficher tandis que w et h definsse la max_h="" // taille du document (qui est a l interieur et peut donc etre scolle) max_sizeref="" max_sizeparent="" group_onclick_r="" group_params_r="" group_onclick_l="" group_params_l="" win_priority="" use_cursor="" /> MODIFIABLE: ofsx (int) ofsy (int) // *************************************************************************** // <group type="list"> // *************************************************************************** BUT: SYNTAXE: <group type="list" maxelements="10" addelt="B" // "B", "T", "L" ou "R" align="L" // "B", "T", "L" ou "R" space="0" chat="false" // Text options color="" fontsize="" shadow="" shadow_color="" line_at_bottom="" multi_line="" justification="" multi_line_space="" over="false" // doit on afficher la selection sous la souris col_over="255 255 255 32" // la couleur de la selection // Initial text hardtext="uiAZE" // init la liste avec un texte a identifiant de localisation local textid="654" // init la liste avec un texte a identifiant de localisation reseau /> // *************************************************************************** // <group type="container"> // *************************************************************************** Herite de group BUT: Afficher un container SYNTAXE: <group type="container" localize="" // Def:true est ce que le titre doit etre localise ? title="" title_opened="" title_closed="" header_active="true" header_color="UI:SAVE:MYCOLOR" // db col entry right_button="true" movable="false" // true == on peut bouger la fenetre popable="false" // true == la fenetre peut se detacher de son container parent lockable="" // Def:true locked="" // Def:false openable="true" // peut on ouvrir le container en clickant sur la barre de titre opened="false" // l etat initial en ouverture open_when_popup="false" // Ouvre le container quand on le popup (le ferme quand popin) resizer="true" // est ce que l on peut resizer la fenetre on_open="" // nom dun handler appel� quand le container est ouvert on_open_params="" // parametre pass� au handler quand le container est ouvert on_close="" // nom dun handler appel� quand le container est ferm� on_close_params="" // parametre pass� au handler quand le container est ferm� on_deactive_check="" on_deactive_check_params="" max_w="" min_w="" pop_max_w="" pop_min_w="" pop_max_h="" pop_min_h="" movable_in_parent_list="" savable="true" // true == la fenetre est sauvegard�e sur disque et est d�pendente des modes. active_savable="" modal_parent="" options="" // nom des options a utilisees (pas fonction d un layer) /> MODIFIABLE: title, title_opened, title_closed (string) uc_title_opened, uc_title_closed, uc_title (ucstring) title_color (string) pop_max_h (int) openable, opened (bool) lockable, locked (bool) Note: si global_color est � true le bouton et le titre sont color�s par la couleur globale // *************************************************************************** // <group type="frame"> // *************************************************************************** Herite de group BUT: comme un group mais affiche un cadre et un fond (fix�: bitmaps de la modal). SYNTAXE: <group type="frame" display="false" // si false n affiche pas la frame (true par defaut) color="255 255 255 255" /> MODIFIABLE: color (string ('#r #g #b #a')) // *************************************************************************** // <group type="modal"> // *************************************************************************** Herite du group de type "frame" (affiche donc un cadre) BUT: Affiche une fenetre qui pourra etre ouverte sur une action. Cach�e par defaut (active=false) NOTE: un group modal NE DOIT PAS �tre d�fini dans les <tree node="">. En fait ils sont automatiquement ajout�s NB: par defaut les modals sont ESCAPABLE SYNTAXE: <group type="modal" mouse_pos="true" // si "true", Spawn la fenetre sur la position de la souris, en suivant posref"" // par exemple posref="BL TL" positionnera le coin TL de la fenetre sur la souris. // NB: BL (posref du parent) est donc ignor�e ici exit_click_out="true" // si "true" la fenetre modal est ferme� si on clique � l exteriru exit_click_l="false" // si "true" la fenetre modal est ferme� si on clique sur le bouton gauche // (apr�s lancement eventuelle action de la modal) exit_click_r="false" // si "true" la fenetre modal est ferme� si on clique sur le bouton droit // (apr�s lancement eventuelle action de la modal) exit_click_b="false" // equivalent � exit_click_l="val" ET exit_click_r="val" (val: true ou false) exit_key_pushed="false" // Close the modal if a key is pushed force_inside_screen="false" // Clip la fenetre � l interieur de l ecran. Note: automatique si mouse_pos="true" onclick_out="" onclick_out_params="" /> certains actions handlers prennent un id de window en param�tre (eg: "ui:interface:taskbar"). L'id sp�cial se nommant "ctrl_launch_modal" d�signe en fait le bouton ou le control qui a fait ouvrir la fenetre modal. eg: Un control sheet dans une fenetre modal echange son sheet id avec le ctrl sheet qui a ouvert la modal: <ctrl type="sheet" onclick_l="exchange" params_l="src=ctrl_launch_modal"> Dans le xml, il faut bien faire attention a ce que les modals soient a la racine sinon elles peuvent etre affich�es plusieurs fois. Il ne faut pas non plus qu'elles soient ajout�es en tant que node dans un <tree> // *************************************************************************** // <group type="menu"> // *************************************************************************** Herite du groupe de type "modal" BUT: Affiche un menu contextuel Cach� par d�faut SYNTAXE: <group type="menu" id="cm_byes" context="true" // "false" si doit etre utilis� (et donc affich�) dans un autre groupe // et non tout seul (sur un menu_r de bouton par exemple) color="255 255 255 255" // couleur du texte shadow_color="0 0 0 255" // couleur de l ombre du texte (noire par defaut) fontsize="12" shadow="false" color_over="255 255 255 255" // couleur du texte quand survole de la souris dessus shadow_color_over="0 0 0 255" // couleur de l ombre du texte quand survole de la souris (noire par defaut) highlight_over="128 0 0 255" // higlight sous le texte quand survol�. Mettre A=0 pour rien. color_grayed="128 128 128 255" // couleur du texte quand celui ci est inactif shadow_color_grayed="0 0 0 255" // couleur de l ombre du texte quand celui ci est inactif > <action // Une action est une ligne de menu (ou de sous menu) (ici cette action poss�de un sous menu) id="aze" // Identifiant facultatif si absent, l id est la position dans le menu (a partir de 0) name="Action1" // Nom localise et affiche handler="" // handler appele si la ligne est clickee (meme en cas de sous menu) params="" // Les param�tres du handler grayed="true" // est ce que la ligne est gris�e ? facultatif usergroup_l="" // Nom d un template pour mettre un groupe a gauche du texte usergroup_params_l="" // Parametres du template delimites par des | (...params_l="posref=TL TL|x=5" ) usergroup_r="" // Pareil a droite usergroup_params_r="" > <action name="imbriquee" handler="" params="" /> // Ligne simple </action> ... </group> MODIFIABLE: pour une action : grayed, checked et tous les modifiables d une vue texte on peut recuperer les usergroup en faisant comme d'habitude menuid:actionid:usergroupid // *************************************************************************** // <group type="list_sheet"> // *************************************************************************** BUT: affiche une liste variable de ctrl_sheet SYNTAXE: <group type="list_sheet" id="pipo0" value="SERVER:INVENTORY:8" // Pointe sur une branche de la database. OBLIGATOIRE // Les fils doivent etre de type #number:SHEET (optionnel #number:QUALITY et #number:QUANTITY). wspace="2" hspace="2" // donne l espacement entre chaque slot. 0 par defaut maxitem="12" // donne le nombre maximum d item lu dans la branch (eg: 6 pour un bag). // Nb: temporaire??, normalement c la database qui donne ce nombre. Defaut: infini startitem="12" // donne l id de d�part dans la database. utile pour les bag (bag0: 0, bag1: 6, bag2: 12, etc...) array="false" // si "false", les sheet vides ne sont pas affich�s. defaut: "true" lmargin="12" // Marges left, right Top et bottom des slots par rapport au group. Defaut:0. Il Faut en mettre si ya une scrollBar et des bouton +- forc�ment... rmargin="2" tmargin="12" bmargin="2" rowmin="0" // Nombre de ligne minium affich�es. Defaut: 1. // Important si on veut par exemple afficher la liste des malus vide sans que le groupe se resize � H=0 (vide) rowmax="2" // Nombre de ligne maximum affich�s. Defaut: infini. // Important si on veut afficher qu une seule ligne toujours (pour les malus par exemple) // quelque soit la largeur du parent. C est cette valeur qui est �dit�e par les boutons +- (si pr�sents) column_max="4294967295" // taille maximum du nombre de sheet par ligne column_factor="1" // si 3 par exemple, le nombre de sheet par ligne ne pourra etre que 3,6,9... column_center="false" // si true, centre les sheet en X suivant le WReal donn�e par list_sheet // Param�tres communs au ctrl type="sheet". Voir ce control pour les d�tails nature="" tx_noitem="" onclick_l="" params_l="" onclick_r="" params_r="" dragable="" oncandrop="" params_candrop="" ondrop="" params_drop="" menu_l="" menu_r="" menu_b="" // Filters onfilter="" params_filter="" > // Le mode "Resize" n'existe pas en fait. Le scripteur est libre de mettre ou pas une scroll bar et/ou des boutons qui permettent de changer rowmax <ctrl type="button" id="add_row" button_type="push_button" posref="TR TR" tx_normal="W_arrow_up_3.tga" tx_pushed="W_arrow_up_3.tga" tx_over="W_button_08_over.tga" /> <ctrl type="button" id="sub_row" button_type="push_button" posparent="add_row" posref="TL TR" tx_normal="W_arrow_down_3.tga" tx_pushed="W_arrow_down_3.tga" tx_over="W_button_08_over.tga" /> // Setup tyipque de scrollBar. L'alignement est hardoc� pour etre Top. Le y devrait etre egal � "-tmargin" du group list_sheet <ctrl type="scroll" id="scroll_row" posref="TL TL" w="8" x="2" y="12" <!-- choix des textures de la scroll --> tx_bottomleft= "w_scroll_l123_b.tga" tx_middle= "w_scroll_l123_m.tga" tx_topright= "w_scroll_l123_t.tga" /> </group> MODIFIABLE: nbelt (int en lecture seul !) le nombre d'element valide si array=false sinon maxelt // *************************************************************************** // <group type="list_job"> // *************************************************************************** BUT: affiche un tableau de familles de m�tier avec la bonne brick. sont grand pere DOIT etre un container (pour initialiser son nom) SYNTAXE: <group type="list_job" brick_type="" // MAGIC, COMBAT, FABER,... Obligatoire!! career="" // index OBLIGATOIRE de la carriere job="" // index OBLIGATOIRE du job. -1 si "all" level="" // varaible database qui donne le level du joueur dans ce job. OBLIGATOIRE wspace="0" // donne l espacement entre chaque slot. 0 par defaut hspace="0" // donne l espacement entre chaque slot. 0 par defaut lmargin="0" // Marges left, right Top et bottom des slots par rapport au group. Il Faut en mettre si ya des bouton +- forc�ment... rmargin="0" tmargin="0" bmargin="0" list_sentence="" // Pour la magie Pointe vers un group de type="list_sentence". Utilise pour savoir // ou sont ajout�s les sentences nouvelles. // Param�tres communs au ctrl type="sheet". Voir ce control pour les d�tails nature="" // la nature n est pas necessaire ici. C est FORCEMENT une "brick" tx_noitem="" onclick_l="" params_l="" onclick_r="" params_r="" dragable="" oncandrop="" params_candrop="" ondrop="" params_drop="" /> // Boutons pour changer le niveau de brick voulu <ctrl type="button" id="add_level" button_type="push_button" posref="TR TR" tx_normal="W_arrow_up_3.tga" tx_pushed="W_arrow_up_3.tga" tx_over="W_button_08_over.tga" /> <ctrl type="button" id="sub_level" button_type="push_button" posparent="add_row" posref="TL TR" tx_normal="W_arrow_down_3.tga" tx_pushed="W_arrow_down_3.tga" tx_over="W_button_08_over.tga" /> // vue qui affiche le niveau selectionn� <view type="text" id="view_level" /> // group de d�coration qui affiche un fond derriere le texte (sert pour le scroll des levels � la molette) <group id="box_text" /> </group> // *************************************************************************** // <group type="select_number"> // *************************************************************************** BUT: widget qui sert pour augmenter et diminuer un nombre de la database SYNTAXE: <group type="select_number" value="" // lien vers la database. OBLIGATOIRE loop="true" min="0" max="9" /> <view type="text" id="number" /> // une vue qui permettra d'afficher le nombre <ctrl type="button" id="arrow_up" /> // boutton pour incr�menter <ctrl type="button" id="arrow_down" /> // boutton pour d�cr�menter </group> // *************************************************************************** // <group type="scroll_text"> // *************************************************************************** BUT: widget servant � afficher des lignes de chat ou autres d�filant, avec une scrollBar et des boutons pour augmenter la taille de la fenetre SYNTAXE: <group type="scroll_text" min_height="16" max_height="128" invert_scroll_bar="true" > <ctrl type="scroll" id="scroll_bar"/> <ctrl type="button" id="button_add"/> <ctrl type="button" id="button_sub"/> <group type="list" id="text_list"/> </group> // *************************************************************************** // <group type="editbox" /> // *************************************************************************** BUT: edition de texte SYNTAXE: <group type="edit_box" onenter="" // Action a lancer quand ENTER est press� params="" // param�tres de l Action a lancer quand ENTER est press� onchange="" onchange_params="" enter_loose_focus="true" // si enter perd le focus max_num_chars="oo" // chars maxi (infini par defaut) prompt=">" entry_type="" // text, integer, positive_integer, alpha, alpha_num, password menu_r="" max_historic="0" // Si !=0 enable l historique de l editBox (4Dos like). Sinon donne la taille de l historique > <view id="edit_text" type="text"> </group> MODIFIABLE: input_string (string) uc_input_string (ucstring) // *************************************************************************** // <group type="build_sentence_magic" /> // *************************************************************************** BUT: Widget de composition de magie SYNTAXE: <group type="build_sentence_magic" > // Brick racine <ctrl type="sheet" id="root_brick" nature="brick" /> // Brick mandatory <vector template="ctrl_brick_mandatory" id="mandatory_brick$i" _size="%BRICKS_PER_SENTENCE" index="$i" /> // Brick optional <vector template="ctrl_brick_optional" id="optional_brick$i" _size="%BRICKS_PER_SENTENCE" index="$i" /> // bouton de validation <ctrl type="button" id="valid_button" /> </group> // *************************************************************************** // <group type="build_sentence_faber" /> // *************************************************************************** BUT: Widget de composition de magie SYNTAXE: <group type="build_sentence_faber" > // Brick racine <ctrl type="sheet" id="root_brick" nature="brick" /> // Brick optional <vector template="ctrl_brick_optional" id="optional_brick$i" _size="%BRICKS_PER_SENTENCE" index="$i" /> // bouton de validation <ctrl type="button" id="valid_button" /> // Tool <ctrl type="sheet" id="tool" nature="item" /> // MPs <vector template="ctrl_faber_mp" id="mp$i" _size="%MAX_FABER_REQ_MP" index="$i" /> // Select number <group type="select_number" id="select_num_items" value="bricks:faber:num_items" loop="false" min="1" max="1" > </group> </group> // *************************************************************************** // <group type="list_sentence" /> // *************************************************************************** BUT: Widget d'affichage des sentence connues. cf list_job pour le lien "list_sentence" SYNTAXE: <group type="list_sentence" id="pipo0" wspace="2" hspace="2" // donne l espacement entre chaque slot. 0 par defaut lmargin="12" // Marges left, right Top et bottom des slots par rapport au group. Defaut:0. Il Faut en mettre si ya une scrollBar et des bouton +- forc�ment... rmargin="2" tmargin="12" bmargin="2" rowmin="0" // Nombre de ligne minium affich�es. Defaut: 1. // Important si on veut par exemple afficher la liste des malus vide sans que le groupe se resize � H=0 (vide) rowmax="2" // Nombre de ligne maximum affich�s. Defaut: infini. // Important si on veut afficher qu une seule ligne toujours (pour les malus par exemple) // quelque soit la largeur du parent. C est cette valeur qui est �dit�e par les boutons +- (si pr�sents) sep_slot0="" // Image pour le separateur Root-Mandatory sep_slot1="" // Image pour le separateur Mandatory-Optional sep_w0="0" // d�calage Root-Mandatory sep_w1="0" // d�calage Mandatory-Optional selected_color="255 255 255 255" // couleur du highlight de la sentence selectionn�e // Param�tres communs au ctrl type="sheet". Voir ce control pour les d�tails nature="" // forc� en type brick tx_noitem="" onclick_l="" params_l="" onclick_r="" params_r="" dragable="" oncandrop="" params_candrop="" ondrop="" params_drop="" menu_l="" menu_r="" menu_b="" > // Le mode "Resize" n'existe pas en fait. Le scripteur est libre de mettre ou pas une scroll bar et/ou des boutons qui permettent de changer rowmax <ctrl type="button" id="add_row" button_type="push_button" posref="TR TR" tx_normal="W_arrow_up_3.tga" tx_pushed="W_arrow_up_3.tga" tx_over="W_button_08_over.tga" /> <ctrl type="button" id="sub_row" button_type="push_button" posparent="add_row" posref="TL TR" tx_normal="W_arrow_down_3.tga" tx_pushed="W_arrow_down_3.tga" tx_over="W_button_08_over.tga" /> // Setup tyipque de scrollBar. L'alignement est hardoc� pour etre Top. Le y devrait etre egal � "-tmargin" du group list_sheet <ctrl type="scroll" id="scroll_row" posref="TL TL" w="8" x="2" y="12" <!-- choix des textures de la scroll --> tx_bottomleft= "w_scroll_l123_b.tga" tx_middle= "w_scroll_l123_m.tga" tx_topright= "w_scroll_l123_t.tga" </group> // *************************************************************************** // <group type="combo_box" /> // *************************************************************************** BUT: affiche une combo_box. Un bouton sur un texte qui fait apparaitre un menu de selection de texte quand on clique dessus SYNTAXE: <group type="combo_box" value="" // Valeur de la database qui indique l index de selection de la comboBox. on_select_start="" // optionnel. ActionHandler appel� apr�s ouverture des choix de la combo box > // Text qui affiche le choix courant. <view type="text" id="text" /> // Boutton qui sert pour ouvrir la liste. <ctrl type="button" button_type="push_button" id="select" /> // ajoute un choix pour la combo_box <combo_text name="" /> </group> Note: il faut que "ui:interface:combo_box_select_menu" soit d�finie comme un <group type="menu"> avec les param�tres d'aspect que l'on veut. Les champs actions sont remplies quand la combo_box est ouverte EXEMPLE: Ce setup permet de faire une combo box ou le bouton est invisible et recouvre en fait tout le group: si on clique sur le texte, on ouvre alors la liste de choix. <group type="combo_box" id="combo1" w="100" h="18" value="UI:COMBO_SELECT1" > // un cadre juste pour faire joli <instance template="box_widget" id="back" sizeref="wh" w="0" h="0" /> // notre text <view type="text" id="text" posref="ML ML" x="2" /> // Note pas de texture d�finie sauf l'over: c fait expr�s. <ctrl type="button" button_type="push_button" id="select" sizeref="wh" w="0" h="0" col_over="255 255 255 128" tx_over="blank.tga" scale="true" /> <combo_text name="choix 1" /> <combo_text name="choix 2" /> <combo_text name="choix 3" /> <combo_text name="choix 4" /> </group> // *************************************************************************** // <group type="tree" /> // *************************************************************************** h�rite de group BUT: affiche un arbre (comme un menu) EXEMPLE: <group type="tree" id="pipo" col_over="255 255 255 128" col_select="255 128 128 128" fontsize="12" > <node id="invit" name="uimGcmInvit" handler="" params="" /> <node id="harvest1" name="uimGcmHarvest" opened="true" > <node id="dig" name="uimGcmDigging"/> <node id="har" name="uimGcmHarvesting"/> </node> </group> Sur les nodes qui contiennent des fils on peut setuper la valeur de d�part � ouvert ou ferm� // *************************************************************************** // <group type="html" /> // *************************************************************************** <group type="html" error_color="255 0 0" // Error color link_color="128 128 255" // Link color text_color="255 255 255" // Text color h1_color="128 255 255" // Headline 1 color h2_color="255 128 255" // Headline 2 color h3_color="255 255 128" // Headline 3 color h4_color="255 255 255" // Headline 4 color h5_color="255 255 255" // Headline 5 color h6_color="255 255 255" // Headline 6 color error_color_global_color="false" // Error uses global color link_color_global_color="false" // Link uses global color text_color_global_color="false" // Text uses global color h1_color_global_color="false" // Headline 1 uses global color h2_color_global_color="false" // Headline 2 uses global color h3_color_global_color="false" // Headline 3 uses global color h4_color_global_color="false" // Headline 4 uses global color h5_color_global_color="false" // Headline 5 uses global color h6_color_global_color="false" // Headline 6 uses global color text_font_size="12" // Text font size h1_font_size="24" // Headline 1 font size h2_font_size="20" // Headline 2 font size h3_font_size="16" // Headline 3 font size h4_font_size="16" // Headline 4 font size h5_font_size="16" // Headline 5 font size h6_font_size="16" // Headline 6 font size paragraph_begin_space="12" // Space between paragraphs multi_line_space_factor="0.25" // Space between 2 lines of a paragraph. Factor of the font size td_begin_space="0" // Space at the begining of a table cell li_begin_space="4" // H space when "<IL>" ul_begin_space="12" // H space when "<UL>" li_indent="-10" // W space when "<LI>" ul_indent="30" // W space when "<UL>" form_text_area_group="edit_box_widget" // The group to instanciate for a form edit box. It must have a child group CGroupEditBox* with the id "eb" checkbox_bitmap_normal="checkbox_normal.tga" // The "off" bitmap use in form checkbox checkbox_bitmap_pushed="checkbox_pushed.tga" // The "on" bitmap use in form checkbox checkbox_bitmap_over="checkbox_over.tga" // The "over" bitmap use in form checkbox background_bitmap_view="bg" // The name of the child bitmap view used for background home="http://www.nevrax.org" // The home url (you can browsse to the home url with the url "home" browse_next_time="false" // If true, the url is browsed when the group is created > </group> // *************************************************************************** // <group type="quick_help" /> (derived from HTML) // *************************************************************************** <group type="quick_help" non_selected_color="255 0 0" // The unselected paragraphes color non_selected_link_color"0 0 128" // The unselected link color non_selected_global_color="true" // The unselected paragraphes uses gobal color non_selected_font_size="10" // The unselected paragraphes font size > </group> // *************************************************************************** // <group type="in_scene" /> (derived from group) // *************************************************************************** <group type="in_scene" in_scene_offset_x="12" // Offset in pixels in_scene_offset_y="12" // Offset in pixels > </group> // *************************************************************************** // <group type="table" /> (derived from group) // *************************************************************************** a html-like table : The table is essentially an array. Each line must have the same number of cells. The width of the table can be arbitrary. Either sizeref="w" or a fixed w can be used. using child_resize_w has undefined results. The height or the table is imposed by its children cells (like with html table) Table is specified using the standard <TR> & <TD> // option for the table : border : the same the html tables 'border' cellpadding : the same the html tables 'cellpadding' cellspacing : the same the html tables 'cellspacing' bgcolor : background color with format "R G B A" ("255 0 0 255" for example) width : wanted width of table in pixels (same than html "width"). could be a ratio like "100%" usually the table will specify sizeref="w" or w and width="100%" continuous_update : whan set to true, the table will be updated continuously has its parent container is resized, and not when mouse left button is released only // options for the cells (<TD> tag) Cells can have an id. If none is given a id like cell_1_2 id generated (first number is column, second is row) align : horizontal alignment of cell content. Can be "left", "right" or "center" (same than HTML 'align') valign : vertical alignment of cell content. Can be 'top", "middle" or "bottom" (same than HTML 'valign') left_margin : offset added to the x position of the cell content nowrap : same then htlm table 'nowrap' bgcolor : color of the cell background (with the "R G B A" format) width : same then htlm table 'width' : gives width of column for that cell, or a percentage add_child_w : take the wanted size from the size of the children (equivalent to child_resize_h), and add the 'width' (not added if a percentage) height : minimum height of the cell ignore_max_width : if "true", the cell content max_used_w is ignored when computing the width of the cell ignore_min_width : if "true", the cell content min_used_w is ignored when computing the width of the cell <group type="table" id="my_table" posref="TL TL" sizeref="w" width="100%" border="2" bgcolor="0 255 0 255" y="-4" cellspacing="1" cellpadding="0" continuous_update="true" > <!-- test 1 --> <TR> <TD width="30%" bgcolor="0 0 0 127" height="30" align="center" valign="middle" id="optionnal_id"> <view type="text" id="mon_text" global_color="true" fontsize="20" shadow="true" hardtext="cell 1 cell 1 cell 1 cell 1" multi_line="true" /> </TD> <TD bgcolor="255 0 0 127" height="30" align="center" valign="middle"> <view type="text" id="mon_text" global_color="true" fontsize="20" shadow="true" hardtext="cell 2"/> </TD> </TR> <TR> <TD width="30%" bgcolor="0 0 0 192" height="30" align="center" valign="middle"> <view type="text" id="mon_text" global_color="true" fontsize="20" shadow="true" hardtext="cell 3"/> </TD> <TD bgcolor="0 0 255 192" height="30" align="center" valign="middle"> <view type="text" id="mon_text" global_color="true" fontsize="20" shadow="true" hardtext="cell 4"/> </TD> </TR> <!-- <TR> <TD width="100%" bgcolor="255 0 0 127" height="30"> <view type="text" posref="TL TL" global_color="true" fontsize="20" shadow="true" hardtext="cell 2"/> </TD> </TR> --> </group> </group> // *************************************************************************** // *************************************************************************** // MISC: DEFINE, PROCEDURES, TEMPLATES, ANIM, SCENE3D, ... // *************************************************************************** // *************************************************************************** // *************************************************************************** // <define> // *************************************************************************** BUT: Permet de definir une constante. SYNTAXE: <define id="id_du_define" value="valeur_a_remplacer" /> EXAMPLE: <define id="pipo_title" value="yoyo" /> .... <group type="container" id="player" title="Hello %pipo_title" > Comme ca "Hello %pipo_title" est remplac� par "Hello yoyo" L'id du define ne peut contenir que les charact�res: 'a' � 'z' 'A' � 'Z' '0' � '9' '_' Du coup si vous voulez vraiment afficher un % dans une string (par exemple "25 %"), il faut l'ecrire en double "25 %%" // *************************************************************************** // <proc> // *************************************************************************** BUT: Definit un action handler special qui lance des action handlers � la suite SYNTAXE: <proc id="nom_procedure" > <action handler="action_handler0" params="" /> <action handler="action_handler1" params="" /> <action handler="action_handler2" params="@0|@1" /> </proc> les param�tres sont optionnels. un action handler peut etre lui meme une autre procedure (attention recursivit� :)) La proc�dure se lance en utilisant l'action handler "proc" avec comme param�tre "nom_procedure" La proc�dure peut prendre des param�tres en entr�e (voir l'action handler proc pour comment faire). Pour chaque action, le champ params="" est pars�. Tout chaine de type @#, ou # est un num�ro (� N chiffres) copiera alors le param�tre (simple copie de chaine) au moment de l'appel. Note: de la m�me facon que les % dans les define, un double @ permet de ne pas consid�rer l'@ comme un descripteur de param�tre EXAMPLE: <proc id="select_quit_modal" > <action handler="exchange" params="src=ctrl_launch_modal" /> <action handler="leave_modal" /> </proc> .... <ctrl type="button" onclick_l="proc" params_l="select_quit_modal"> EXAMPLE param�tres: <proc id="set_quit_modal" > <action handler="set" params="dblink=SERVER:PIPO|value=@0" /> <action handler="leave_modal" /> </proc> .... <ctrl type="button" onclick_l="proc" params_l="set_quit_modal|10"> Dans cet exemple, sur un cliok gauche du bouton, set sera appel� avec une valeur de 10!! Notez que l'index des param�tres commence � 0. // *************************************************************************** // <template> // *************************************************************************** BUT: Definit un patron qui permet d'instancier des groups, ctrls ou vues qui se ressemblent. SYNTAXE: Definition du template: <template name="nom_du_template" ...param�tres du template...> corps du template (group, controls etc...) qui reference les param�tres du template avec # </template> Instanciation du template: <instance template="nom_du_template" param�tres du template remplis /> EXAMPLE: <!--Definit un template de nom "SNH" qui attend des param�tres id, value, loop etc... (si "" est mis � un param�tres, celui-ci doit etre d�fini � l'instanciation) --> <template name="SNH" id="" value="" loop="true" min="0" max="9" posparent="parent" posref="MM MM" x="0" y="0" w="26" h="16" > <group type="select_number" id="#id" value="#value" loop="#loop" min="#min" max="#max" x="#x" y="#y" w="#w" h="#h" posparent="#posparent" posref="#posref" > <view type="bitmap" id="slot_number" posref="TL TL" texture="W_slot_number.tga" /> <view type="text" id="number" posparent="slot_number" posref="MM MM" color="255 255 255 255" fontsize="12" shadow="true" hardtext="0" /> <ctrl type="button" id="arrow_up" button_type="push_button" posref="TR TR" tx_normal="W_arrow_up_3.tga" tx_pushed="W_arrow_up_3.tga" tx_over="W_button_08_over.tga" /> <ctrl type="button" id="arrow_down" button_type="push_button" posref="BR BR" tx_normal="W_arrow_down_3.tga" tx_pushed="W_arrow_down_3.tga" tx_over="W_button_08_over.tga" /> </group> </template> <!--Instancie le template SNH --> <instance template="SNH" id="shortnumber" value="SERVER:USER:SAP" loop="true" min="0" max="9" posref="ML ML" /> // *************************************************************************** // <vector> // *************************************************************************** BUT: Create an array of template's instances (mutli instance version of <instance>) SYNTAXE: <vector template="template_name" // as in <instance.... _size="" // required. number of isntance to create _firstindex="0" // optional to begin the index of instance to a number!=0 // Next ones are required only if the template is a serie of interface elements (group, view....) // that need to be sticked against each other (eg: a vertical array of view text) _firstpos="" // posref (TL TL...) of the first element, sticked to the parent _nextpos="" // posref (TR TL...) of next elements, sticked to the previous one _xfirst="" // special x of the first element _yfirst="" // special y of the first element /> Then for each instance created, All properties of the XML node are parsed, and $i are replaced with the index of the instance EXAMPLE: <template name="temp_tab" keep="true" nb="" id="" posparent="" posref="" x="" > <ctrl style="tab_button_new" id="#id" posparent="#posparent" posref="#posref" group="content:group#nb" text="TabNo#nb" /> </template> <vector template="temp_tab" _size="16" _firstpos="TR TL" _nextpos="TR TL" _xfirst="4" x="1" id="tab_array0_$i" nb="$i" posparent="tabref" /> This will create 16 instances of ctrls (tab_array0_0, tab_array0_1, tab_array0_2....) The first one will be placed on right of "tabref", but with a x of 4 (_firstpos="TR TL" _xfirst="4") The next ones will be placed on right of each other, but sticked with a x of 1 (_nextpos="TR TL" x="1" ) NB: if '_xfirst' is not defined, then 'x' will be taken for the first position also NB: if '_yfirst' is not defined, then 'y' will be taken for the first position also NB: Both _firstpos/_nextpos must be defined in order for the "stick system" to work also you must declare id="", posparent="" and posref="" in the template definition. // *************************************************************************** // <variable> // *************************************************************************** BUT: cr�e une variable et associe une valeur SYNTAXE: <variable entry="" // Obligatoire. lien vers la database. type="" // Obligatoire. sint32, sint64, float, double, bool, rgba, hotspot. // float et double on le meme effet value="" // valeur � mettre size="" // Si d�finit, alors <variable> sert � d�finir un tableau. /> EXAMPLE: <variable entry="UI:MODE" type="sint32" value="0"/> Dans le cas de d�finition d'un tableau, le premier "$i" rencontr� est remplac� par l'index de 0 � size-1. <variable entry="UI:LIST:$i:SHEET" type="sint32" value="0" size="4" /> // *************************************************************************** // <link> // *************************************************************************** BUT: li� une expression � une valeur d'une vue (target). L'expression doit dependre d'entr�e de la database. A chaque fois qu'une entr�e de la database est updat�e, l'expression est recalcul�e, et le target est updat�e. SYNTAXE: <link expr="" // obligatoire : expression a �valuer. L'expression doit d�pendre au moins d'une entr�e de la database target="" // valeurs auxquelles doit etre affect�e le r�sultat de l expression, relatif au groupe qui contient le link, ou consid�r� comme une adresse absolue si non trouv� action="" // facultatif : un action handler a appeller en cas d update params="" // facultatif : param�tre pour l action handler cond="" // facultatif : condition � l'execution de l'action handler /> EXAMPLE: <view type="bitmap" id="my_view" > <link expr="ne(@my_db_entry, 0)" target="my_view:active,my_other_view:active"/> // si l entr�e de database 'my_db_view' ne vaut pas 0, alors my_view:active est mis � true CREATION DYNAMIQUE DE LIEN: Elle est utile si on veut que les update ne soient pris en compte qu'� un moment pr�cis (par exemple dans une boite modale) C'est sutout bien dans le cas de test couteux ou si des textes non visibles sont updat�s pour rien. // cr�ation : handler="add_link" params="id=identifier_unique|expr=expression_a_evaluer|target=dest_de_lexpression" // supression: handler="remove_link" params="id=identifier_unique|expr=expression_a_evaluer|target=dest_de_lexpression" par exemple, en reprenant l exemple precedent: handler="add_link" params="id=mon_lien|expr=ne(@my_db_entry, 0)|target=my_view:active" handler="remove_link" params="id=mon_lien" // *************************************************************************** // <anim> <track> <key> // *************************************************************************** <anim id="specie_in" // nom du timer duration="3.0" // temps en seconde pour faire varier l entree dans la database loop="true" // est ce que l anim doit boucler ? reverse="false" // est ce que l anim doit etre jouee a l envers on_finish="ahwhenfini" // action handler a lancer quand le timer arrive a la fin on_finish_params="ahp" // les parametres de l action handler /> <track type="linear" // linear, bezier, tcb target="specie:race:y" // all the targets affected may be more than one dynamic="true" // (def:false) si true evalue tous les parametres des cles lors du lancement de l anim /> Si la track est de type linear : <key time="1.0" // Une valeur de temps comprise entre 0 et la duration de l anim value="15" // la valeur que prennent les targets au temps : time /> Si la track est de type bezier : <key time="1.0" // Une valeur de temps comprise entre 0 et la duration de l anim value="15" // la valeur que prennent les targets au temps : time intan="0.0" // float facultatif def:0 ???? aucune idee de ce a quoi ca peut servir outtan="0.0" // float facultatif def:0 ???? aucune idee de ce a quoi ca peut servir step="true" // bool facultatif def:false ???? aucune idee de ce a quoi ca peut servir /> Si la track est de type TCB : <key time="1.0" // Une valeur de temps comprise entre 0 et la duration de l anim value="15" // la valeur que prennent les targets au temps : time tension="1.0" // float facultatif def:0 continuity="0.0" // float facultatif def:0 bias="1.0" // float facultatif def:0 easeto="0.1" // float facultatif def:0 easefrom="0.3" // float facultatif def:0 /> un exemple typique est : <group id="specie" sizeref="wh" on_active="anim_start" on_active_params="anim=t1"> <group id="race" posref="BL BL" x="16" y="64"> </group> </group> <anim id ="t1" duration="3.0" > <track type="linear" target="specie:race:y"> <key time="0.0" value="-16"/> <key time="3.0" value="64"/> </track> </anim> quand on va activer le groupe specie cela va lancer l'animation t1. la valeur specie:race:y va etre modifiee -> cela va faire monter le groupe specie:race // *************************************************************************** // <scene3d> <character3d> <ig> <camera> <light> // *************************************************************************** // --------------------------------------------------------------------------- <scene3d reference="id_scene3d" // Donne la reference sur une autre scene 3d (dans ce cas la c est juste une vue sur une autre scene) ambient="0 0 0" sun_ambient="50 50 50" sun_diffuse="255 255 255" sun_specular="255 255 255" sun_direction="-1.0 1.0 -1.0" curcam="id_camera" // Camera courante curcs="id_camera" // Cluster system courant (un ig avec des clusters) user_interaction="true" // Interaction camera (qui doit etre call�e en y (ie camx=tgtx & camz=tgtz) rotz_factor="0.005" // Facteur de vitesse lors d une rotation autour rotz_limit_min="-45" // Limites d angles rotz_limit_max="45" roty_factor="0.005" // Facteur de vitesse lors d une rotation haut-bas roty_limit_min="-20" roty_limit_max="20" dist_factor="0.005" // Facteur de vitesse lors d un deplacement de distance dist_limit_min="0.1" // Limites de distances en metres dist_limit_max="20" /> DERIVANT DE <group> MODIFIABLE: curcam (string) curcs (string) rotzfactor (float) // --------------------------------------------------------------------------- <character3d dblink="UI:TEMP:CHAR3D" pos="1.0 2.0 3.0" rot="0.0 0.0 90.0" /> MODIFIABLE: headx, heady, headz (float la position de la tete apres au moins une frame d animation) posx, posy, posz (float la position) rotx, roty, rotz (float angle en degres) anim (int) // --------------------------------------------------------------------------- <ig name="ig_name.ig" pos="1.0 2.0 3.0" rot="1.0 2.0 3.0" /> MODIFIABLE: posx, posy, posz (float la position) posx, posy, posz (float l orientation en degree) name (string) // --------------------------------------------------------------------------- <shape name="shape_name.shape" pos="1.0 2.0 3.0" rot="1.0 2.0 3.0" /> MODIFIABLE: posx, posy, posz (float la position) posx, posy, posz (float l orientation en degree) name (string) // --------------------------------------------------------------------------- <camera pos="1.0 2.0 3.0" target="2.0 3.0 4.0" fov="50.0" roll="0.0" /> MODIFIABLE: posx, posy, posz (float la position) tgtx, tgty, tgtz (float la position de la target) fov (float angle en degree) roll (float angle en degree) // --------------------------------------------------------------------------- <light pos="1.0 2.0 3.0" near="3.0" far="10.0" color="127 255 64 255" /> MODIFIABLE: posx, posy, posz (float la position) near, far (float) colr, colg, colb (int) // --------------------------------------------------------------------------- <fx name="sp_cast_loop.ps" pos="1.0 2.0 3.0" rot="0.0 0.0 0.0" /> MODIFIABLE: posx, posy, posz (float la position) rotx, roty, rotz (float la rotation) started (bool le fx est il en train d etre joue ?) un exemple typique : <scene3d id="char3d" x="576" y="-32" w="576" h="488" posref="TR TR" curcam="cam" ambient="0 0 0" sun_ambient="50 50 50" sun_diffuse="255 255 255" sun_specular="255 255 255" sun_direction="-1.0 1.0 -1.0" > <character3d id="char" dblink="UI:TEMP:CHAR3D" pos="0.07 26.52 0.85" rot="0.0 0.0 -90.0" /> <camera id="cam" fov="45" pos="0.01 22.29 2.5" target="0.01 37.9 1.53" roll="0" /> <light id="l1" pos="-1.0 24.29 2.0" color="0 255 0" near="1.0" far="5.0" /> <ig id="env" name="matis.ig" pos="0 0 0" /> <fx id="fx1" pos="0.0 0.0 0.0" name="Sp_Cast_Loop.ps" /> </scene3d> // *************************************************************************** // <action_category > // <action> // <parameter> // <value> // *************************************************************************** // Definition d'une category d'action <action_category hardtext="uiUI" // Nom de la category localis� (defaut : "") /> // --------------------------------------------------------------------------- // Une definition d'action de base <action repeat="0" // 1 : l'action est r�p�t�e avec la r�p�tition clavier, 0 : elle n'est pas r�p�t�e. (defaut : 0) name="screenshot" // Nom de l'action handler utilis� par l'action (defaut : "") hardtext="uiTakeScreenshot" // Nom localis� de l'action (defaut : "") /> // --------------------------------------------------------------------------- // Un param�tre d'action de base <parameter type="action_param_constant" // Type de param�tre : // action_param_hidden : le param�tre est cach� � l'utillisateur // action_param_constant : le param�tre est une valeur pr�d�termin�e (voir <value>) // action_param_user : le param�tre est entr� par l'utilisateur. Tous les characters sont permis. // action_param_user_name : le param�tre est entr� par l'utilisateur. Uniquement les characters permis dans les noms sont utilis�s. // (defaut : action_param_constant) name="filename" // Nom du param�tre (defaut : "") hardtext="uiFilename" // Nom localis� du param�tre (defaut : "") value="" // La valeur par defaut du param�tre (defaut : "") /> // --------------------------------------------------------------------------- // Une valeur pr�d�finie de param�tre d'action de base <value value="toto" // La valeur (defaut : "") hardtext="uiToto" // Le nom localis� de la valeur (defaut : "") > Exemple : <action_category hardtext="uiDivers"> // Action pour envoyer un message � un joueur <action repeat="0" name="tell" hardText="uiTell"> <parameter type="action_param_user_name" name="user" hardText="uiUsername" visible="1"/> <parameter type="action_param_user" name="message" hardText="uiMessage" visible="1"/> </action> // Action pour passer en mode labo <action name="set_mode" hardText="uiModelabo"> <parameter value="2" visible="0"/> </action> // Action pour ouvrir un inventaire de sac <action repeat="0" name="open_window" hardText="uiOpenWindow"> <parameter type="action_param_constant" name="" hardText="uiWindow" visible="1"> <value value="UI:BAG1" hardtext="uiBag1"/> <value value="UI:BAG2" hardtext="uiBag2"/> <value value="UI:BAG3" hardtext="uiBag3"/> </parameter> </action> </action_category> // *************************************************************************** // <key> // *************************************************************************** <key name="Key1" ctrl="0" shift="0" menu="0" action="run_shortcut" params="1"/> Bind a key combo to an action handler. // *************************************************************************** // *************************************************************************** // ACTIONS // *************************************************************************** // *************************************************************************** <action="enter_modal" params="group=ui:interface:yoyo_modal1"> affiche la fenetre modal ui:interface:yoyo_modal1 ici. <action="leave_modal"> cache la fenetre modal courante <action="proc" params="nom_procedure|arg0|arg1|..."> lance une proc�dure. Les arguments sont s�par�s du nom de la proc�dure par des "|". <action="set" params="dblink=liendatabase|value=expr"> set un sint32, resultat de l'evaluation de expr, dans la database. <action="set" params="target_property=target0,target1,...,targetn|value=expr"> affecte le resultat de l'evaluation de expr a chacun des target (valeur export�e des elements de l'interface telle que 'active') <action="copy" params="dbdst=liendatabase|dbsrc=liendatabase"> copie une valeur de la database dans une autre <oncandrop="isitem" params=""> test si dropable est un item <oncandrop="isitem_slot" params="type=itemslot"> test si dropable est un item d'un certain type (HEAD, ARMS...) <onfilter="filter_item" params_filter="type=itemslot"> test si le ctrlSheet est un item d'un certain type (HEAD, ARMS...) � mettre sur les props de list_sheet <action="set_keyboard_focus" params="target=ui:interface_my_edit_box|select_all=true"> Met le focus sur l'edit box en target. Selectionne tout le texte si select_all vaut true <on_active="timer_start" on_active_params="timer=specie_in"> Lance un timer (voir <timer>) <action="set_server_id" params="value=@%user_name_id|target=player_name:uc_hardtext"> Affecte une value a une target. La value represente un identifiant de mot reseau (nom des jouers par exemple) <action="set_server_string" params="value=@%user_name_id|target=player_name:uc_hardtext"> Affecte une value a une target. La value represente un identifiant de chaine reseau (phrase composee de plusieurs mots) // *************************************************************************** // *************************************************************************** // COMMON EXPRESSIONS // *************************************************************************** // *************************************************************************** // *************************************************************************** add arguments : 2 return (arg1 + arg2) // *************************************************************************** sub arguments : 2 return (arg1 - arg2) // *************************************************************************** mul arguments : 2 return (arg1 * arg2) // *************************************************************************** div arguments : 2 return (arg1 / arg2) // *************************************************************************** mod arguments : 2 return (arg1 % arg2) // *************************************************************************** abs arguments : 1 return abs(arg1) (valeur absolue de arg1) // *************************************************************************** identity arguments : 1 return (arg1) // *************************************************************************** ne arguments : 2 return (arg1 != arg2) // *************************************************************************** eq arguments : 2 return (arg1 == arg2) // *************************************************************************** lt arguments : 2 return (arg1 < arg2) // *************************************************************************** le arguments : 2 return (arg1 <= arg2) // *************************************************************************** gt arguments : 2 return (arg1 > arg2) // *************************************************************************** ge arguments : 2 return (arg1 >= arg2) // *************************************************************************** or arguments : n > 0 return (arg1 || arg2 || ... || argn) // *************************************************************************** and arguments : n > 0 return (arg1 && arg2 && ... && argn) // *************************************************************************** not arguments : 1 return (!arg0) // *************************************************************************** str arguments : n > 0 converti tous les arguments en string et return arg1_str + arg2_str + ... + argn_str // *************************************************************************** int arguments : 1 converti l'argument en entier // *************************************************************************** ifthenelse arguments : 2 ou 3 (1er argument de type bool) retourne le 2eme argument si le 1er est vrai sinon retourne le 3eme argument (si il existe) // *************************************************************************** switch arguments : au moins 2 (1er argument de type int) retourne le n ieme argument ou n est la valeur du premier argument +1 si arg1 vaut 0 on retourne arg2 si arg1 vaut 1 on retourne arg3 et ainsi de suite // *************************************************************************** ilinear arguments : 3 double (1er == interpolant (0 - 1.0)) (a 0 arg2 max, a 1 arg3 max) retourne arg2 + arg1 * (arg3 - arg2) // *************************************************************************** getbit arguments : 2 entiers (1er == valeur, 2nd == numero du bit desire) retourne le arg2_ieme bits de la valeur arg1 // *************************************************************************** rand arguments : 2 double retourne une valeur comprise entre arg1 et arg2 // *************************************************************************** dbcount arguments : 1 (string) (exemple : dbcount('SERVER:MODIFIERS:BONUS:$:SHEET') compte le nombre d occurences dans la database. si l entree est un noeud alors detecte qu il ne soit pas egal a zero il faut obligatoirement un $ (qui sera remplace par 0,1,2,...) // *************************************************************************** getprop arguments : 1 (string) (exemple : getprop('ui:interface:define_day_color:pick:b')) retourne la valeur MODIFIABLE d un element d interface // *************************************************************************** intToColor arguments : 1 (integer) retourne la meme valeur en rgba // *************************************************************************** getRed arguments : 1 (rgba) retourne la meme valeur du rouge // *************************************************************************** getGreen arguments : 1 (rgba) retourne la meme valeur du vert // *************************************************************************** getBlue arguments : 1 (rgba) retourne la meme valeur du bleu // *************************************************************************** getAlpha arguments : 1 (rgba) retourne la meme valeur de l alpha // *************************************************************************** makeRGB arguments : 3 ou 4 (int) retourne un rgb ou rgba // *************************************************************************** min arguments : n>0 (int ou double) retourne la valeur minimum de tous les arguments // *************************************************************************** max arguments : n>0 (int ou double) retourne la valeur maximum de tous les arguments // *************************************************************************** depends arguments : aucun retourne zero sert uniquement a creer des dependances sur des elements de database pour appeler des actions // *************************************************************************** identity arguments : n>0 retourne le premier argument sert un peu comme depends mais en plus permet un setup direct d une target // *************************************************************************** band arguments : n>=0 retourne AND bit � bit de tous les arguments. 0 si nargs==0. // *************************************************************************** bor arguments : n>=0 retourne OR bit � bit de tous les arguments. 0 si nargs==0. // *************************************************************************** bxor arguments : n==2 retourne XOR bit � bit des 2 arguments. // *************************************************************************** bnot arguments : n==1 retourne NOT bit � bit de l'argument. // *************************************************************************** // *************************************************************************** // GAME EXPRESSIONS // *************************************************************************** // *************************************************************************** // *************************************************************************** isOpen TODO TODO // *************************************************************************** getCompassText arguments : 1 convertit l'argument de type float (angle radian) en text // *************************************************************************** getPactText arguments : 1 entier convertit l'argument qui represente le numero du type de pacte en chaine de character // *************************************************************************** getDateText arguments : 1 entier convertit un jour ryzom (entier) en date sous le fromat 06 / 02 /03 // *************************************************************************** getDifficultyText arguments : 1 entier retourne en ucstring le texte de difficulte internationalise // *************************************************************************** isCharSelSlotEmpty arguments : 1 entier retourne un booleen qui dit si le arg1_ieme (0-5) slot de character summary est vide ou non // *************************************************************************** getClientActionTypeText TODO TODO // *************************************************************************** getClientActionTypeColor TODO TODO // *************************************************************************** is2HandItem arguments : 1 true si le sheetId d�finit un item � 2 mains // *************************************************************************** getSmoothServerTick arguments : 1 convert a serverTick in smoothServerTick // *************************************************************************** getVSIndex arguments : 2 strings (exemple : getVSIndex('fy_cheveux_shave01.sitem','HEAD')) retourne (int) l index de visual slot en fonction d un nom d item et d un type de slot // *************************************************************************** getRoleId arguments : 1 string retourne un entier qui est le numero de la carriere (dans l enum) // *************************************************************************** getLightLevel arguments : 0 donne le facteur de blend jour/nuit (un double de 0.0 a 1.0) // *************************************************************************** strToIntFlag arguments : 1 string (exemple : strToIntFlag('Combat')) retourne (int) le numero du flag correspondant a la string // *************************************************************************** getSheathSlot arguments : 1 string (exemple : getSheathSlot('ammo1')) retourne (int) le numero du fourreau en fonction de son nom // *************************************************************************** getInventorySlot arguments : 1 string (exemple : getInventorySlot('pack_animal1')) retourne (int) le numero du slot d inventaire en fonction de son nom // *************************************************************************** getEquipmentSlot arguments : 1 string (exemple : getEquipmentSlot('FingerL')) retourne (int) le numero du slot d equipement en fonction de son nom // *************************************************************************** getChatWin TODO TODO // *************************************************************************** // *************************************************************************** // USER EXPRESSIONS // *************************************************************************** // *************************************************************************** // *************************************************************************** getSelectedItemPrice arguments : 0 Get the price of the current selected item (should come from bot inventory) // *************************************************************************** getDraggedSheet arguments : 0 Get ptr object on the current dragged sheet // *************************************************************************** getSelectedSheet arguments : 0 Get ptr object on the current selected sheet // *************************************************************************** getMenuItemSheet arguments : 0 Get ptr object on the last sheet that trigerred menu. // *************************************************************************** getSheetID From a pointer on a sheet, get its sheetID // *************************************************************************** getSheetSelectionGroup From a pointer on a sheet, get its selection group name // *************************************************************************** getSheetName From a pointer on a sheet, or a sheet ID, get its name // *************************************************************************** getSheetIndex From a pointer on a sheet, get its index in the parent sheet list // *************************************************************************** getSheetQuantity From a pointer on a sheet, retrieve its quantity // *************************************************************************** getSheetQuality From a pointer on a sheet, retrieve its quality // *************************************************************************** isStackable From a pointer on a sheet, get its index in the parent sheet list // *************************************************************************** isTeleport From a pointer on a sheet or a sheet ID, test if an item is a teleport item // *************************************************************************** isPlainItem From a pointer on a sheet or a sheet ID, test if an item is a plain item (not a teleport, not a brick, not a pact) // *************************************************************************** isBrick From a sheet ID, test if an item is a brick // *************************************************************************** isPact From a sheet ID, test if an item is a pact // *************************************************************************** isRangeWeapon From a pointer on a sheet or a sheet ID, test if an item is a ran,ged weapon // *************************************************************************** isRoomLeftFor From a sheet ID, test if there's room for it in the inventory // *************************************************************************** getSelectionGroupNameFromId Get the name of a selection group from its id // *************************************************************************** getSelectionGroupIdFromName Get the id of a selection group from its name // *************************************************************************** getItemsWeight(basePath, firstItem, numItem) Get the sum of all item's weight at the given db path // *************************************************************************** getItemBranchsWeight(baseBranch, firstBranch, numBranch) Get the sum of all items located in several branchs // *************************************************************************** getSeedsWeight() Returns the weight of the seeds owned by the player // *************************************************************************** getArmoursWeight() Returns the weight of all armours pieces worn by the player // *************************************************************************** getInventoryWeight() Returns the weight of the whole inventory, not including beasts'inventory of course // *************************************************************************** getSheathWeight() Returns the weight of the sheaths // *************************************************************************** getBranchSheetCategory() return the types of items that are contained in a branch (with the enum CDBCtrlSheet::TSheetCategory // *************************************************************************** copySheet param 0 = pointer on a sheet, param 1 = dbAdress. This copy characteristics of a sheet (quantity, quality, sheet id) at the given database adress