khanat-opennel-code/code/ryzom/client/data/gamedev/interfaces_v3/interface.txt

2351 lines
90 KiB
Text
Raw Normal View History

2010-09-11 17:26:22 +00:00
// ***************************************************************************
// ***************************************************************************
// 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<69> 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 <20> +14 decale l ordre de rendu de l <20>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<75>s et non justifi<66>s
// justified : Mots non coup<75>s et justifi<66>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<70>tent correctement les tags.
Les Tags possibles sont:
@{F3DF} Tag De couleur (en hexadecimal, d<>fintion avec 0 <20> F (0 <20> 15 maxi only donc) pour chaque composante RGBA)
@{T10} Tag de Tabulation. Le chiffre indique l'espacement minimum (en nombre de caract<63>re '_')
NOTE: Il n'est pas posssible de pr<70>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<61>tre type="".
<ctrl type=""
tooltip="" // aide contextuelle par defuat
tooltip_i18n="" // idem tooltip, mais cherche forc<72>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<6C> par rapport <20> ce control
"win" veut dire que le tooltip est affich<63> par rapport <20> la fenetre
contenant le control
"mouse" veut dire que le tooltip est call<6C> par rapport <20> la souris
tooltip_posref="auto" // Position de r<>f<EFBFBD>rence du tooltip par rapport <20> son parent (cf tooltip_parent)
"auto" la posution de r<>f<EFBFBD>rence est chosie intelligement suivant le
type de parent:
"ctrl": "TL BR" ou "TR BL" suivant que la fenetre contenant
le control est plus <20> gauche ou <20> 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<EFBFBD>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 <20>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 <20> lancer sur un click gauche
params_l="" // parametres de l action <20> lancer sur un click gauche
onlongclick_l="" // action a lancer sur un click long
params_longclick_l=""
onclick_r="" // action <20> lancer sur un click droit
params_r="" // parametres de l action <20> lancer sur un click droit
align="" // si pas de scale et que zone d<>finie plus grande que l image
menu_l="" // context menu <20> afficher sur un click bouton gauche (voir group de type menu)
menu_r="" // context menu <20> afficher sur un click bouton droit (voir group de type menu)
menu_b="" // context menu <20> 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<61>e en X) et droite.
tx_normal="" // texture etat normal.
tx_pushed="" // texture etat pushed.
tx_over="" // texture etat over.
onclick_l="" // action <20> lancer sur un click gauche
params_l="" // parametres de l action <20> lancer sur un click gauche
onlongclick_l="" // action a lancer sur un click long
params_longclick_l=""
onclick_r="" // action <20> lancer sur un click droit
params_r="" // parametres de l action <20> lancer sur un click droit
menu_l="" // context menu <20> afficher sur un click bouton gauche (voir group de type menu)
menu_r="" // context menu <20> afficher sur un click bouton droit (voir group de type menu)
menu_b="" // context menu <20> 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 <20> 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<73>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 <20> lancer sur un click gauche
params_l="" // parametres de l action <20> lancer sur un click gauche
onclick_r="" // action <20> lancer sur un click droit
params_r="" // parametres de l action <20> lancer sur un click droit
menu_l="" // context menu <20> afficher sur un click bouton gauche (voir group de type menu)
menu_r="" // context menu <20> afficher sur un click bouton droit (voir group de type menu)
menu_b="" // context menu <20> 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<EFBFBD>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<63>, 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 <20> la largeur totale des fils
child_resize_hmargin="0" // si child_resize_h="true" ajoute une marge <20> la hauteur totale des fils
on_active="" // nom d un handler appel<65> quand la fenetre est activ<69>e
on_active_params="" // parametre pass<73> au handler quand la fenetre est activ<69>e
on_deactive="" // nom d un handler appel<65> quand la fenetre est d<>sactiv<69>e
on_deactive_params="" // parametre pass<73> au handler quand la fenetre est sactiv<69>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<75>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<65> quand le container est ouvert
on_open_params="" // parametre pass<73> au handler quand le container est ouvert
on_close="" // nom dun handler appel<65> quand le container est ferm<72>
on_close_params="" // parametre pass<73> au handler quand le container est ferm<72>
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<72>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 <20> true le bouton et le titre sont color<6F>s par la couleur globale
// ***************************************************************************
// <group type="frame">
// ***************************************************************************
Herite de group
BUT:
comme un group mais affiche un cadre et un fond (fix<69>: 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<63>e par defaut (active=false)
NOTE: un group modal NE DOIT PAS <20>tre d<>fini dans les <tree node="">.
En fait ils sont automatiquement ajout<75>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<6F>e ici
exit_click_out="true" // si "true" la fenetre modal est ferme<6D> si on clique <20> l exteriru
exit_click_l="false" // si "true" la fenetre modal est ferme<6D> si on clique sur le bouton gauche
// (apr<70>s lancement eventuelle action de la modal)
exit_click_r="false" // si "true" la fenetre modal est ferme<6D> si on clique sur le bouton droit
// (apr<70>s lancement eventuelle action de la modal)
exit_click_b="false" // equivalent <20> 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 <20> 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<61>tre (eg: "ui:interface:taskbar"). L'id sp<73>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<63>es plusieurs fois. Il ne faut pas non plus qu'elles soient ajout<75>es en tant que node dans un <tree>
// ***************************************************************************
// <group type="menu">
// ***************************************************************************
Herite du groupe de type "modal"
BUT:
Affiche un menu contextuel
Cach<EFBFBD> par d<>faut
SYNTAXE:
<group type="menu" id="cm_byes"
context="true" // "false" si doit etre utilis<69> (et donc affich<63>) 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<6F>. 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<73>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<61>tres du handler
grayed="true" // est ce que la ligne est gris<69>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<63>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<72>ment...
rmargin="2"
tmargin="12"
bmargin="2"
rowmin="0" // Nombre de ligne minium affich<63>es. Defaut: 1.
// Important si on veut par exemple afficher la liste des malus vide sans que le groupe se resize <20> H=0 (vide)
rowmax="2" // Nombre de ligne maximum affich<63>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 <20>dit<69>e par les boutons +- (si pr<70>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<6E>e par list_sheet
// Param<61>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<6F> pour etre Top. Le y devrait etre egal <20> "-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<72>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<75>s les sentences nouvelles.
// Param<61>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<6E>
<view type="text" id="view_level" />
// group de d<>coration qui affiche un fond derriere le texte (sert pour le scroll des levels <20> 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<63>menter
<ctrl type="button" id="arrow_down" /> // boutton pour d<>cr<63>menter
</group>
// ***************************************************************************
// <group type="scroll_text">
// ***************************************************************************
BUT:
widget servant <20> 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<73>
params="" // param<61>tres de l Action a lancer quand ENTER est press<73>
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<72>ment...
rmargin="2"
tmargin="12"
bmargin="2"
rowmin="0" // Nombre de ligne minium affich<63>es. Defaut: 1.
// Important si on veut par exemple afficher la liste des malus vide sans que le groupe se resize <20> H=0 (vide)
rowmax="2" // Nombre de ligne maximum affich<63>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 <20>dit<69>e par les boutons +- (si pr<70>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<6E>e
// Param<61>tres communs au ctrl type="sheet". Voir ce control pour les d<>tails
nature="" // forc<72> 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<6F> pour etre Top. Le y devrait etre egal <20> "-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<65> apr<70>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<61>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<70>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<EFBFBD>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 <20> ouvert ou ferm<72>
// ***************************************************************************
// <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<61> par "Hello yoyo"
L'id du define ne peut contenir que les charact<63>res:
'a' <20> 'z'
'A' <20> 'Z'
'0' <20> '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 <20> 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<61>tres sont optionnels.
un action handler peut etre lui meme une autre procedure (attention recursivit<69> :))
La proc<6F>dure se lance en utilisant l'action handler "proc" avec comme param<61>tre "nom_procedure"
La proc<6F>dure peut prendre des param<61>tres en entr<74>e (voir l'action handler proc pour comment faire).
Pour chaque action, le champ params="" est pars<72>. Tout chaine de type @#, ou # est un num<75>ro
(<28> N chiffres) copiera alors le param<61>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<69>rer l'@ comme un descripteur
de param<61>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<61>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<65> avec une valeur de 10!!
Notez que l'index des param<61>tres commence <20> 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<61>tres du template...>
corps du template (group, controls etc...) qui reference les param<61>tres du template avec #
</template>
Instanciation du template:
<instance template="nom_du_template" param<61>tres du template remplis />
EXAMPLE:
<!--Definit un template de nom "SNH" qui attend des param<61>tres id, value, loop etc... (si "" est mis <20> un param<61>tres,
celui-ci doit etre d<>fini <20> 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<EFBFBD>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 <20> mettre
size="" // Si d<>finit, alors <variable> sert <20> 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<74> est remplac<61> par l'index de 0 <20> size-1.
<variable entry="UI:LIST:$i:SHEET" type="sint32" value="0" size="4" />
// ***************************************************************************
// <link>
// ***************************************************************************
BUT:
li<EFBFBD> une expression <20> une valeur d'une vue (target). L'expression doit dependre d'entr<74>e de la database. A chaque fois qu'une
entr<EFBFBD>e de la database est updat<61>e, l'expression est recalcul<75>e, et le target est updat<61>e.
SYNTAXE:
<link
expr="" // obligatoire : expression a <20>valuer. L'expression doit d<>pendre au moins d'une entr<74>e de la database
target="" // valeurs auxquelles doit etre affect<63>e le r<>sultat de l expression, relatif au groupe qui contient le link, ou consid<69>r<EFBFBD> comme une adresse absolue si non trouv<75>
action="" // facultatif : un action handler a appeller en cas d update
params="" // facultatif : param<61>tre pour l action handler
cond="" // facultatif : condition <20> 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<74>e de database 'my_db_view' ne vaut pas 0, alors my_view:active est mis <20> true
CREATION DYNAMIQUE DE LIEN:
Elle est utile si on veut que les update ne soient pris en compte qu'<27> un moment pr<70>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<61>s pour rien.
// cr<63>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<6C>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<69> (defaut : "")
/>
// ---------------------------------------------------------------------------
// Une definition d'action de base
<action
repeat="0" // 1 : l'action est r<>p<EFBFBD>t<EFBFBD>e avec la r<>p<EFBFBD>tition clavier, 0 : elle n'est pas r<>p<EFBFBD>t<EFBFBD>e. (defaut : 0)
name="screenshot" // Nom de l'action handler utilis<69> par l'action (defaut : "")
hardtext="uiTakeScreenshot" // Nom localis<69> de l'action (defaut : "")
/>
// ---------------------------------------------------------------------------
// Un param<61>tre d'action de base
<parameter
type="action_param_constant" // Type de param<61>tre :
// action_param_hidden : le param<61>tre est cach<63> <20> l'utillisateur
// action_param_constant : le param<61>tre est une valeur pr<70>d<EFBFBD>termin<69>e (voir <value>)
// action_param_user : le param<61>tre est entr<74> par l'utilisateur. Tous les characters sont permis.
// action_param_user_name : le param<61>tre est entr<74> par l'utilisateur. Uniquement les characters permis dans les noms sont utilis<69>s.
// (defaut : action_param_constant)
name="filename" // Nom du param<61>tre (defaut : "")
hardtext="uiFilename" // Nom localis<69> du param<61>tre (defaut : "")
value="" // La valeur par defaut du param<61>tre (defaut : "")
/>
// ---------------------------------------------------------------------------
// Une valeur pr<70>d<EFBFBD>finie de param<61>tre d'action de base
<value
value="toto" // La valeur (defaut : "")
hardtext="uiToto" // Le nom localis<69> de la valeur (defaut : "")
>
Exemple :
<action_category hardtext="uiDivers">
// Action pour envoyer un message <20> 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<6F>dure. Les arguments sont s<>par<61>s du nom de la proc<6F>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<72>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...)
<EFBFBD> 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 <20> bit de tous les arguments. 0 si nargs==0.
// ***************************************************************************
bor
arguments : n>=0
retourne OR bit <20> bit de tous les arguments. 0 si nargs==0.
// ***************************************************************************
bxor
arguments : n==2
retourne XOR bit <20> bit des 2 arguments.
// ***************************************************************************
bnot
arguments : n==1
retourne NOT bit <20> 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 <20> 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