Worldedit
  Worldedit
Le site sur l'éditeur de warcraft 3 !
 
  FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres    Groupes d'utilisateursGroupes d'utilisateurs   medals.php?sid=e2ed46578eade5d757e61fc674fb82ffMédailles   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 
  FAQFAQ World Editor   UploadUploader une map ou une image    UploadAjouter sa map à l'annuaire   UploadConsulter l'annuaire

TextTagBar - Barre de Progression en Texte Flottant

 
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Fonction Jass
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 Rhadamante
Petit flooder


Inscrit le: 28 Aoû 2007
Messages: 1457
Sujets: 24
Spécialité en worldedit: Bêêh hé hé hé !
Médailles: 3 (En savoir plus...)
Grand décorateur (Quantité : 2) Créateur de race (Quantité : 1)

MessagePosté le: 16/06/08 17:19    Sujet du message: TextTagBar - Barre de Progression en Texte Flottant Citer

Nom de la fonction : TextTagBar
Créateur : Rhadamante
Fonctions requises : aucune
Code :

Jass:
//==========================================================================================
// Barre de Progression en Texte Flottant
//==========================================================================================
// valeur = celle de la progression de la barre
//      0 < valeur <= max
// max = la valeur maximum de la barre
//      1 < max < 62 à moins de vouloir une barre sur plusieurs lignes (si size = 10)
// u = l'unité au dessus de laquelle la barre est affichée
// xOffset = pour décaler la barre par rapport au centre, laissez à 0 pour la laisser centrée
// zOffset = la hauteur à laquelle le texte est affiché
// size = la taille de la police (correspond au paramètre "font" dans l'action en GUI)
// transparency = la transparence de la barre en %, à 100% elle est invisible
//      0.0 <= transparency <= 100.0
// color1 = couleur des barres qui se remplissent, mettre le code couleur "|cxxxxxxxx" sans la dernière balise
//      ex : "|c0000FF00" pour du vert
// color2 = couleur de fond de la barre, mettre le code couleur "|cxxxxxxxx" sans la dernière balise
//      ex : "|c00FFFFFF" pour du blanc
//      mettre "rien" ou "vide" pour ne pas mettre de fond à votre barre
// lifespan = la durée de vie de la barre
//      0.0 < lifespan < pas de limite
function TextTagBar takes integer valeur, integer max, unit u, real xOffset, real zOffset, real size, real transparency, string color1, string color2, real lifespan returns nothing
    local integer i = 0
    local texttag bar = CreateTextTag()
    local string s = ""

// le texte de la barre, mets des barres de color1 en fonction de valeur, puis des barres de color2 jusqu'au max
    loop
        exitwhen i >= max
        set i = i + 1
        if valeur > 0 then
            set s = s + color1 + "l|r"
            set valeur = valeur - 1
        elseif color2 != "rien" and color2 != "vide" then
            set s = s + color2 + "l|r"
        endif
    endloop

    call SetTextTagText(bar, s, size * 0.023 / 10)
    call SetTextTagPos(bar, GetUnitX(u) - (3 * max) + xOffset, GetUnitY(u), zOffset) // on enlève (3*max) au x pour centrer à peu prés la barre en fonction de sa longueur
    call SetTextTagColor(bar, 255, 255, 255, R2I((100.0-transparency) * 2.55))
    call SetTextTagFadepoint(bar, lifespan)        // pour que la superposition et le dernier texttag soit jolis (facultatif ?)
    call SetTextTagLifespan(bar, lifespan + 0.5) // un peu plus longtemps que la valeur prévu pour la transition
    call SetTextTagPermanent(bar, false)
    set bar = null
endfunction


La même sans utiliser d'unité, mais en spécifiant directement les coordonnées :
Secret:

Jass:
//==========================================================================================
// Barre de Progression en Texte Flottant
//==========================================================================================
// valeur = celle de la progression de la barre
//      0 < valeur <= max
// max = la valeur maximum de la barre
//      1 < max < 62 à moins de vouloir une barre sur plusieurs lignes (si size = 10)
// x = abscisse du point au dessus duquel la barre s'affiche
// y = ordonnée du point au dessus duquel la barre s'affiche
// zOffset = la hauteur à laquelle le texte est affiché
// size = la taille de la police (correspond au paramètre "font" dans l'action en GUI)
// transparency = la transparence de la barre en %, à 100% elle est invisible
//      0.0 <= transparency <= 100.0
// color1 = couleur des barres qui se remplissent, mettre le code couleur "|cxxxxxxxx" sans la dernière balise
//      ex : "|c0000FF00" pour du vert
// color2 = couleur de fond de la barre, mettre le code couleur "|cxxxxxxxx" sans la dernière balise
//      ex : "|00FFFFFF" pour du blanc
// lifespan = la durée de vie de la barre
//      0.0 < lifespan < pas de limite
function TextTagBar takes integer valeur, integer max, real x, real y, real zOffset, real size, real transparency, string color1, string color2, real lifespan returns nothing
    local integer i = 0
    local texttag bar = CreateTextTag()
    local string s

// le texte de la barre, mets des barres de color1 en fonction de valeur, puis des barres de color2 jusqu'au max
    loop
        exitwhen i >= max
        set i = i + 1
        if valeur > 0 then
            set s = s + color1 + "l|r"
            set valeur = valeur - 1
        else
            set s = s + color2 + "l|r"
        endif
    endloop

    call SetTextTagText(bar, s, size * 0.023 / 10)
    call SetTextTagPos(bar, x - (3 * max), y, zOffset) // on enlève (3*max) au x pour centrer à peu prés la barre en fonction de sa longueur
    call SetTextTagColor(bar, 255, 255, 255, R2I((100.0-transparency) * 2.55))
    call SetTextTagFadepoint(bar, lifespan)        // pour que la superposition et le dernier texttag soit jolis (facultatif ?)
    call SetTextTagLifespan(bar, lifespan + 0.5) // un peu plus longtemps que la valeur prévu pour la transition
    call SetTextTagPermanent(bar, false)
    set bar = null
endfunction



Utilisation : Permet d'afficher au dessus d'une unité une barre de progression en texte flottant ---> Télécharger la map d'exemple
La Fonction doit être appelée périodiquement, et pour que la barre reste affichée vous devez spécifier une lifespan égale à cette période. S'il elle est trop courte, la barre clignotera, s'il elle est trop longue, ça ne servira à rien, puisque les barres se superposeront.
Un exemple d'utilisation pour afficher un revenu quelconque :

Secret:

Gui:
Trigger:
Income
Collapse Evénements
Temps - Every 1.00 seconds of game time
Collapse Conditions
(Scierie is alive) Egal à  TRUE
Collapse Actions
-------- Le compteur pour notre barre de progression et pour le revenu --------
Set BoisProduit = (BoisProduit + 1)
-------- Affichage de la barre de progression de la génération du revenu --------
Custom script:   call TextTagBar(udg_BoisProduit, 15, udg_Scierie, 0.0, 50.0, 10.0, 0.0,"|c000000FF" ,"|c00FF0000", 1.0)
-------- Dés que la barre est complète, notre revenu est généré --------
Collapse If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Collapse Si - Conditions
BoisProduit Supérieur ou égal à  15
Collapse Alors - Actions
Joueur - Set Joueur 1 (Rouge) Bois actuel to ((Joueur 1 (Rouge) Bois actuel) + 15)
Set BoisProduit = 0
Collapse Sinon - Actions



Copyright : Libre, citez-moi si vous voulez me faire plaisir Rolling Eyes
Remarques : aucune
_________________


Dernière édition par Rhadamante le 26/10/08 21:44; édité 9 fois
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Darkfeyt
Floodeur prématuré


Inscrit le: 22 Nov 2007
Messages: 677
Sujets: 27
Spécialité en worldedit: Jamais sortir ses projets ?


MessagePosté le: 17/06/08 03:40    Sujet du message: Citer

C'est dommage de ne pas avoir mit la couleur en argument. (un string , les gens arriveront a se débrouillé pour générer leur couleur en hexa)
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail MSN Messenger
 Brissou de Mourièssou
Créateur de sorts, depuis 1936.


Inscrit le: 30 Aoû 2007
Messages: 1510
Sujets: 26
Spécialité en worldedit: Développer des jeux vidéos pour le fun, donc world edit c'est comme faire une addition.
Médailles: 2 (En savoir plus...)
Créateur de héros (Quantité : 1) Concours de sorts amusants (Quantité : 1)

MessagePosté le: 17/06/08 09:28    Sujet du message: Citer

Oui et d'ailleurs tu peux améliorer ta fonction en ouvrant la balise couleur au début et en la fermant avant de mettre les barres blanches. On retrouve ce système dans une map de Blizzou (me souvient plus du nom :/, celle avec tous les mni-jeux et un td ..)
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger
 Rhadamante
Petit flooder


Inscrit le: 28 Aoû 2007
Messages: 1457
Sujets: 24
Spécialité en worldedit: Bêêh hé hé hé !
Médailles: 3 (En savoir plus...)
Grand décorateur (Quantité : 2) Créateur de race (Quantité : 1)

MessagePosté le: 17/06/08 10:12    Sujet du message: Citer

Merci de vos suggestions, je la modifierais (j'avais pas pensé à mettre un string comme argument pour la couleur Embarassed ) et je rajouterais un exemple plus parlant (et plus utile qu'une barre de vie...).

edit : c'est fait, j'ai aussi rajouté l'argument xOffset au cas où on voudrait décaler la barre horizontalement
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Fonction Jass Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com