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=142cd2ab6c449ff87ae7f4a98b20cbd6Mé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

TextTagDamage / TextTagMessage - Dégât 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: 18/06/08 11:28    Sujet du message: TextTagDamage / TextTagMessage - Dégât en Texte Flottant Citer

Nom des fonctions : TextTagDamage et TextTagMessage
Créateur : Rhadamante
Fonctions requises : aucune
Code :
Jass:
//==========================================================================================
// Texte de dégâts en Texte Flottant
//==========================================================================================
// degat = les dégats pris
// u = l'unité au dessus de laquelle la barre est affichée
// xOffset = pour décaler horizontalement le texte affiché
//      laissez à 0.0 pour garder le texte centré
// zOffset = la hauteur à laquelle le texte est affiché
//      valeur moyenne = 50.0
// speed = vitesse de déplacement du texte
//      valeur moyenne = 64.0
// angle = angle selon lequel le texte se déplace, en degré
//      vers le haut = 90.0
// 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
// lifespan = la durée de vie de la barre
//      0.0 < lifespan < pas de limite
//      bonne valeur = 0.5 à 1.0
// color = la couleur des dégâts
// "|c00FFFFFF" = blanc, "|c00FF0000" = rouge
function TextTagDamage takes real degat, unit u, real xOffset, real zOffset, real speed, real angle, real size, real transparency, real lifespan, string color returns nothing
    local texttag tag = CreateTextTag()
    local string s

    set s = color + I2S(R2I(degat)) + "|r"  // les dégâts convertis en entier (sinon on afficherais 55.26 :/ ) et en couleur
    set speed = speed * 0.071 / 128
    set angle = angle * bj_DEGTORAD
   
    call SetTextTagText(tag, s, size * 0.0023)
    call SetTextTagPos(tag, GetUnitX(u) - 10 + xOffset, GetUnitY(u), zOffset) // on enlève 10 au x pour centrer à peu prés le tag sur l'unité
    call SetTextTagVelocity(tag, speed * Cos(angle), speed * Sin(angle))
    call SetTextTagColor(tag, 255, 255, 255, R2I((100.0-transparency) * 2.55))
    call SetTextTagFadepoint(tag, lifespan - 0.25)   // pour que le texte disparaisse en fondu
    call SetTextTagLifespan(tag, lifespan)              // la durée de vie du texte, fondu compris
    call SetTextTagPermanent(tag, false)
    set tag = null
endfunction


Une version plus générique où vous entrez vous même le texte à afficher, si vous voulez refaire un texte flottant à la manière de "Raté !" ou n'importe quoi d'autre.

Secret:

Jass:
//==========================================================================================
// Texte quelconque en Texte Flottant
//==========================================================================================
// text = le texte à afficher (s'il est trop long il risque de ne pas être centré)
// u = l'unité au dessus de laquelle la barre est affichée
// xOffset = pour décaler horizontalement le texte affiché
//      laissez à 0.0 pour garder le texte centré
// zOffset = la hauteur à laquelle le texte est affiché
//      valeur moyenne = 50.0
// speed = vitesse de déplacement du texte
//      valeur moyenne = 64.0
// angle = angle selon lequel le texte se déplace, en degré
//      vers le haut = 90.0
// 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
// lifespan = la durée de vie de la barre
//      0.0 < lifespan < pas de limite
//      bonne valeur = 0.5 à 1.0
function TextTagMessage takes string text, unit u, real xOffset, real zOffset, real speed, real angle, real size, real transparency, real lifespan returns nothing
    local texttag tag = CreateTextTag()
   
    set speed = speed * 0.071 / 128
    set angle = angle * bj_DEGTORAD
   
    call SetTextTagText(tag, text, size * 0.0023)
    call SetTextTagPos(tag, GetUnitX(u) - 10 + xOffset, GetUnitY(u), zOffset) // on enlève 10 au x pour centrer à peu prés le tag sur l'unité
    call SetTextTagVelocity(tag, speed * Cos(angle), speed * Sin(angle))
    call SetTextTagColor(tag, 255, 255, 255, R2I((100.0-transparency) * 2.55))
    call SetTextTagFadepoint(tag, lifespan - 0.25)   // pour que le texte disparaisse en fondu
    call SetTextTagLifespan(tag, lifespan)              // la durée de vie du texte, fondu compris
    call SetTextTagPermanent(tag, false)
    set tag = null
endfunction



Utilisation : Sert à afficher un réel (des dégâts ou des soins à la base) un peu à la manière du Coup critique, c'est à dire un texte flottant coloré qui se déplace dans une direction en fondu
Copyright : Libre
Remarques : aucune
_________________


Dernière édition par Rhadamante le 21/06/08 21:24; édité 4 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: 18/06/08 17:07    Sujet du message: Citer

"0.071 / 128 " Pourquoi ne pas le calculé directement , je ne crois pas que sa gênera , sinon ont peut peut-être simplifié le calcul.

"bj_DEGTORAD" Ont peut le remplacer directement par sa valeur , voir mieux une valeur plus précise si ce n'est pas très précis.

"local string s = "" " Pourquoi lui donnée une valeur par défaut ?

Tu crée certaine variable local alors que tu ne t'en sert pas après de certain argument.

Par exemple vel et speed , au lieu de crée vel tu pourait faire:

set speed = speed * 0.071 / 128

Et changer tout les vel par speed.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail 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: 18/06/08 17:36    Sujet du message: Citer

Darkfeyt a écrit:
"0.071 / 128 " Pourquoi ne pas le calculé directement , je ne crois pas que sa gênera , sinon ont peut peut-être simplifié le calcul.


Le résultat c'est 0,0005546875, y'a un peu beaucoup de chiffres après la virgule, et puis c'est la formule utilisé dans la BJ, je me suis moyennement posé la question. Mais, petit test in-game :

(64.0 * 0.071 / 128) = 0.036
(64.0 * 0.0005546875) = 0.252 (!)
(64.0 * 5.546875 / 10000) = 0.036

Utiliser directement la valeur donne un résultat très approximatif. Je laisse le calcul.

Darkfeyt a écrit:
"bj_DEGTORAD" Ont peut le remplacer directement par sa valeur , voir mieux une valeur plus précise si ce n'est pas très précis.


C'est tout ce qu'il y a de plus précis. J'ai essayé en calculant directement, puis avec la constant, le résultat est le même. Quand il y a déjà une constant je vois pas l'utilité de la remplacer.

Darkfeyt a écrit:
"local string s = "" " Pourquoi lui donnée une valeur par défaut ?


Un oubli, à la base je mettais s = "|c00", et comme c'est débile et compliqué, et comme j'suis moi aussi débile, je l'ai laissé vide...

Darkfeyt a écrit:
Tu crée certaine variable local alors que tu ne t'en sert pas après de certain argument.
Par exemple vel et speed , au lieu de crée vel tu pourait faire:
set speed = speed * 0.071 / 128
Et changer tout les vel par speed.


Exact, c'est parce que je suis parti de la BJ pour déterminer la Velocity, et que j'ai manqué de rigueur.

J'arrange tout ce qui doit l'être.
_________________


Dernière édition par Rhadamante le 19/06/08 19:44; édité 1 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: 18/06/08 18:16    Sujet du message: Citer

Il y a comme même des variable inutile.

Tu pourrait complètement te passé des xvel et yvel:

call SetTextTagVelocity(tag, speed * Cos(angle) , speed * Sin(angle))
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail 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: 18/06/08 19:16    Sujet du message: Citer

Darkfeyt a écrit:
Il y a comme même des variable inutile.
Tu pourrait complètement te passé des xvel et yvel:
call SetTextTagVelocity(tag, speed * Cos(angle) , speed * Sin(angle))


Rolling Eyes J'aime pas me répéter mais :

Rhadamante a écrit:
Exact, c'est parce que je suis parti de la BJ pour déterminer la Velocity, et que j'ai manqué de rigueur.

_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Keitaro_Ura
Floodozaurus


Inscrit le: 21 Aoû 2007
Messages: 2073
Sujets: 38
Spécialité en worldedit: Oui
Médailles: 1 (En savoir plus...)
Rédacteur de tuto #2 (Quantité : 1)

MessagePosté le: 21/06/08 19:20    Sujet du message: Citer

fonction qui peut s'avérer très utile, merci =)
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 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...)
Créateur de race (Quantité : 1) Grand décorateur (Quantité : 2)

MessagePosté le: 21/06/08 20:58    Sujet du message: Citer

Rhadamante a écrit:
Exact, c'est parce que je suis parti de la BJ [...], et que j'ai manqué de rigueur.


Keitaro_Ura a écrit:
fonction qui peut s'avérer très utile, merci =)


Je t'en prie, c'est fait pour ça. En même temps tout ce que j'ai fait c'est faisable en GUI Rolling Eyes , c'est juste plus optimisé et moins lourd.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Cobrand
Floodeur prématuré


Inscrit le: 06 Juin 2008
Messages: 634
Sujets: 38
Spécialité en worldedit: Manger des pommes à la sauce Jass.


MessagePosté le: 20/08/08 19:52    Sujet du message: Citer

Tu pourrais, pour plus de précision, régler :
Le temps de fondu
Le décalage en X (au lieu de -10 tu peux régler direct sur xOffset)

Dans ce cas le code donnerai cela

Jass:
//si fondu = 0 , pas de fondu
//si fondu = 1.00 , fondu de 1 seconde
//si xOffset = 10 : 2 a 4 caractères
//si xOffest = 20 : 6 a 8 caractères
//On pourrait même faire un calcul dans le déclo pour le nombre de caractères ... ect ...
function TextTagDamage takes real degat, unit u, real xOffset, real zOffset, real speed, real angle, real size, real transparency, real lifespan, real fondu, string color returns nothing
    local texttag tag = CreateTextTag()
    local string s

    set s = color + I2S(R2I(degat)) + "|r"  // les dégâts convertis en entier (sinon on afficherais 55.26 :/ ) et en couleur
    set speed = speed * 0.071 / 128
    set angle = angle * bj_DEGTORAD
   
    call SetTextTagText(tag, s, size * 0.0023)
    call SetTextTagPos(tag, GetUnitX(u) - 10 + xOffset, GetUnitY(u), zOffset) // on enlève 10 au x pour centrer à peu prés le tag sur l'unité
    call SetTextTagVelocity(tag, speed * Cos(angle), speed * Sin(angle))
    call SetTextTagColor(tag, 255, 255, 255, R2I((100.0-transparency) * 2.55))
    call SetTextTagFadepoint(tag, lifespan - fondu)   // pour que le texte disparaisse en fondu
    call SetTextTagLifespan(tag, lifespan)              // la durée de vie du texte, fondu compris
    call SetTextTagPermanent(tag, false)
    set tag = null
endfunction


Et , (j'ai pas essayé) normalement ca marche !
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail 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: 20/08/08 20:14    Sujet du message: Citer

Cobrand a écrit:
Tu pourrais, pour plus de précision, régler :
Le temps de fondu
Le décalage en X (au lieu de -10 tu peux régler direct sur xOffset)


C'est rajouter un argument pour presque rien. En prenant exemple sur les dégâts affiché par les coups critiques, enlever 0.25 me parait suffisant.
Ensuite pour l'Offset en X, sachant que la fonction affiche des dégâts à la base de 6 à 8 caractères ça représente des dégâts monstrueux non, enlever 10 est là aussi suffisant.
En gros, j'ai la flemme d'y toucher et de l'éditer pour l'instant, j'suis sur d'autres choses. Wink

ps : pour le Roi-Liche !
_________________
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