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=a514ecdc6d73edf1d9ea0a3c982bc66fMé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

[vJass] CastColorString

 
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
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7143
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Rédacteur de tuto #3 (Quantité : 1) Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 06/07/08 16:50    Sujet du message: [vJass] CastColorString Citer

Nom de la fonction : CastColorString
Créateur : Troll-Brain mais statistiquement le 18216 ème.
Fonctions requises : Aucune
Code :
Jass:
library ColorString

    globals
    // definissez ici les couleurs en héxadécimal sur 8 caractères pour chaque type de string.
    // les 2 premiers gèrent la transparence, les 2 suivants gèrent la couleur rouge,
    // les 2 suivants gèrent la couleur verte, les 2 derniers gèrent la couleur bleu.
    // Je pense que les noms des constantes sont assez clairs, non ? :p, bien sûr libre à vous d'en rajouter
    // et de modifer la fonction en conséquence
        constant string MINUSCULE = "FF0000FF"
        constant string MAJUSCULE = "FF00FF00"
        constant string CHIFFRE = "FFFF0000"
        constant string AUTRE = "FFFFFF00"
    endglobals
   
 
    function CastColorString takes string source returns string
   
     local integer i= StringLength(source)
     local string dest= null
     local string min
     local string maj
     local string s

        loop
   
        exitwhen i== 0
   
        set i=i-1
       
            set s= SubString(source,i,i+1)
            set min= StringCase(s,false)
            set maj= StringCase(s,true)
       
            if s== min and s!= maj then
                set dest = "|c"+MINUSCULE+s+"|r" + dest
            elseif s== maj and s!= min then
                set dest = "|c"+MAJUSCULE+s+"|r" + dest
            elseif s== "0" or S2I(s) != 0 then
                set dest = "|c"+CHIFFRE+s+"|r" + dest
            else
                set dest = "|c"+AUTRE+s+"|r" + dest
            endif
           
        endloop
   
    return dest
   
    endfunction

endlibrary

Utilisation : La flemme :p
Copyright : Libre
Remarques : J'y vois pas une grande utilité à part pour un save and load...
Cela nécessite jasshelper et vous pouvez copier/coller ces lignes n'importe où dans l'éditeur.

Si vous utilisez l'éditeur officiel il faut déclarer dans l'éditeur de variable 4 chaines nommées MINUSCULE,MAJUSCULE,AUTRE,CHIFFRE .
Bien sûr il vous faudra définir la valeur de ces variables avant d'utiliser la fonction.

Ensuite copier/coller les lignes de code ci dessous dans la fenêtre code script personnalisé (nécessite le patch Frozen Throne).

Secret:

Jass:
function CastColorString takes string source returns string
   
     local integer i= StringLength(source)
     local string dest= null
     local string min
     local string maj
     local string s

        loop
   
        exitwhen i== 0
   
        set i=i-1
       
            set s= SubString(source,i,i+1)
            set min= StringCase(s,false)
            set maj= StringCase(s,true)
       
            if s== min and s!= maj then
                set dest = "|c"+udg_MINUSCULE+s+"|r" + dest
            elseif s== maj and s!= min then
                set dest = "|c"+udg_MAJUSCULE+s+"|r" + dest
            elseif s== "0" or S2I(s) != 0 then
                set dest = "|c"+udg_CHIFFRE+s+"|r" + dest
            else
                set dest = "|c"+udg_AUTRE+s+"|r" + dest
            endif
           
        endloop
   
    return dest
   
    endfunction



Ou alors créez un trigger vide , convertissez le en script personnalisé (menu édition), ne laissez rien du trigger.

Puis copiez collez en dessous de ces lignes la fonction.
_________________


Dernière édition par Troll-Brain le 05/12/11 18:34; édité 6 fois
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Ayane
Bot administrateur


Inscrit le: 17 Sep 2007
Messages: 2009
Sujets: 49

Médailles: 2 (En savoir plus...)
Rédacteur de tuto #1 (Quantité : 1) Ayane (Quantité : 1)

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

Tu pourrais nommer la fonction CastString.

Sinon le if length== 0 then return null ne sert pas.
Tu pourrais aussi te passer de la variable i et te servir exclusivement de length en effectuant ce changement:
Jass:
set dest = "|c"+MINUSCULE+s+"|r" + dest

_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7143
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Rédacteur de tuto #3 (Quantité : 1) Grand mage créateur de sort (Quantité : 1)

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

Ayane a écrit:
Tu pourrais nommer la fonction CastString.

Sinon le if length== 0 then return null ne sert pas.
Tu pourrais aussi te passer de la variable i et te servir exclusivement de length en effectuant ce changement:
Jass:
set dest = "|c"+MINUSCULE+s+"|r" + dest


Amen pour le nom avec le mot color en plus.
Mais je me demande quel est le meilleur choix dans l'ordre des trois mots qui définissent le nom de la fonction.

CastStringColor ?

A vrai dire au départ j'avais l'intention de mettre un debug, puis je me suis rendu compte que c'était assez inutile, j'ai oublié de remove le if.

Bien joué pour le string je me doutais que l'ordre de l'addition avait une importance mais je n'avais jamais essayé.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Magus
Membre a fort taux de post


Inscrit le: 13 Oct 2007
Messages: 994
Sujets: 25
Spécialité en worldedit: Codeur


MessagePosté le: 07/07/08 11:55    Sujet du message: Citer

Au fait, pourquoi avoir utilisé des constantes ?
Ce ne serait pas mieux de mettre des paramètres directement a la fonction ? Avec la possibilité au pire de spécifier une chaine vide si on ne veut pas appliquer de couleur à un certain type de caractère.
_________________
- La théorie c'est quand rien ne fonctionne mais tout le monde sait pourquoi.
- La pratique c'est quand tout fonctionne mais personne ne sait pourquoi.
- Chez moi la théorie et la pratique sont réunies, rien ne fonctionne et personne ne sait pourquoi.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7143
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 07/07/08 18:07    Sujet du message: Citer

[Master] a écrit:
Au fait, pourquoi avoir utilisé des constantes ?
Ce ne serait pas mieux de mettre des paramètres directement a la fonction ? Avec la possibilité au pire de spécifier une chaine vide si on ne veut pas appliquer de couleur à un certain type de caractère.


Bah à vrai dire je suis parti dans l'optique d'un save and load type rpg.
Alors à priori une seule configuration de couleurs, d'où les constants.

J'évite de multiplier le nombre d'arguments inutiles sinon ca devient vite chiant à utiliser.
J'ai beau réfléchir je ne vois pas un ex d'utilisation qui nécessiterait des paramétrages de couleurs différents.
Tu en as un en tête ?
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Magus
Membre a fort taux de post


Inscrit le: 13 Oct 2007
Messages: 994
Sujets: 25
Spécialité en worldedit: Codeur


MessagePosté le: 07/07/08 18:21    Sujet du message: Citer

La comme ça non mais j'ai toujours appris a faire le plus modulaire possible c'est pour ça Very Happy
Mais si tu te restreins au cadre d'un save/load c'est sur que ça ne servirait pas a grand chose. Mais en dehors de ce cadre il pourrait y avoir besoin de changer les couleurs au cours de la partie sait on jamais.

Pour finir, j'ai repris ta fonction mais je l'ai légèrement modifié pour l'inclure dans le système que je fais. J'ai juste optimisé un peu les ifs et changer les noms des variables parce que "s" comme variable moi ça me donne des boutons :/
_________________
- La théorie c'est quand rien ne fonctionne mais tout le monde sait pourquoi.
- La pratique c'est quand tout fonctionne mais personne ne sait pourquoi.
- Chez moi la théorie et la pratique sont réunies, rien ne fonctionne et personne ne sait pourquoi.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7143
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 07/07/08 19:05    Sujet du message: Citer

[Master] a écrit:
La comme ça non mais j'ai toujours appris a faire le plus modulaire possible c'est pour ça Very Happy
Mais si tu te restreins au cadre d'un save/load c'est sur que ça ne servirait pas a grand chose. Mais en dehors de ce cadre il pourrait y avoir besoin de changer les couleurs au cours de la partie sait on jamais.

Pour finir, j'ai repris ta fonction mais je l'ai légèrement modifié pour l'inclure dans le système que je fais. J'ai juste optimisé un peu les ifs et changer les noms des variables parce que "s" comme variable moi ça me donne des boutons :/


Bouah soyons réaliste le nombre de personnes qui utilisera cette fonction tend vers 1.
Toutefois rien n'empêche personne de poster une modification plus modulable de la fonction, ou carrément une autre .
Ou si quelqu'un m'en fait la demande pourquoi pas, bien que cela soit très peu probable.

Rohx le s Evil or Very Mad

Pour les noms de variables utilisées de plusieurs façons, pas spécifiquement si t'arrive à me comprendre Razz, je me suis même fait un ugly standard que je me réserve à moa tout seul.

Je prend la première et deuxième lettre puis enfin la dernière du type de la variable.

Ex :
Code:
Doodad = Dod<nombre>


Au premier abord c'est illisible mais avec un peu de pratique on repère directement quel type de variable est ce.
Enfin le on sous entend je

Comment as tu optimisé le if, je suis assez curieux car moi je ne voie pas d'optimisation possible Surprised
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Magus
Membre a fort taux de post


Inscrit le: 13 Oct 2007
Messages: 994
Sujets: 25
Spécialité en worldedit: Codeur


MessagePosté le: 07/07/08 19:27    Sujet du message: Citer

Ahahah pour le if laisse tomber c'est moi qui délirait complètement, j'étais distrait par quelqu'un en même temps :/
Sinon je n'ai pour l'instant pas fais plus modulaire, sans doute par la suite mais pour l'instant je l'utilise comme telle.
_________________
- La théorie c'est quand rien ne fonctionne mais tout le monde sait pourquoi.
- La pratique c'est quand tout fonctionne mais personne ne sait pourquoi.
- Chez moi la théorie et la pratique sont réunies, rien ne fonctionne et personne ne sait pourquoi.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7143
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Rédacteur de tuto #3 (Quantité : 1) Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 07/07/08 19:48    Sujet du message: Citer

[Master] a écrit:
Ahahah pour le if laisse tomber c'est moi qui délirait complètement, j'étais distrait par quelqu'un en même temps :/
Sinon je n'ai pour l'instant pas fais plus modulaire, sans doute par la suite mais pour l'instant je l'utilise comme telle.

En fait j'ai trouvé une optimisation, minime certes, et uniquement pour le 0
"amélioration" :
Secret:

Jass:
            if s== min and s!= maj then
                set dest = "|c"+MINUSCULE+s+"|r" + dest
            elseif s== maj and s!= min then
                set dest = "|c"+MAJUSCULE+s+"|r" + dest
            elseif  s== "0" or S2I(s) != 0 then
                set dest = "|c"+CHIFFRE+s+"|r" + dest
            else
                set dest = "|c"+AUTRE+s+"|r" + dest
            endif


if originel :
Secret:

Jass:
            if s== min and s!= maj then
                set dest = "|c"+MINUSCULE+s+"|r" + dest
            elseif s== maj and s!= min then
                set dest = "|c"+MAJUSCULE+s+"|r" + dest
            elseif S2I(s) != 0 or s== "0" then
                set dest = "|c"+CHIFFRE+s+"|r" + dest
            else
                set dest = "|c"+AUTRE+s+"|r" + dest
            endif


_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Anthelme
Anomalie floodiforme


Inscrit le: 28 Aoû 2007
Messages: 1857
Sujets: 93



MessagePosté le: 24/08/08 23:46    Sujet du message: Citer

Help sa marche pas chez moi le texte reste blanc même après le lancement du script. Je ne sais pas si le script est vraiment lancer

Le script:
Secret:

Jass:
function CastColorString takes string source returns string
   
     local integer i= StringLength(source)
     local string dest= null
     local string min
     local string maj
     local string s

        loop
   
        exitwhen i== 0
   
        set i=i-1
       
            set s= SubString(source,i,i+1)
            set min= StringCase(s,false)
            set maj= StringCase(s,true)
       
            if s== min and s!= maj then
                set dest = "|c"+udg_MINUSCULE+s+"|r" + dest
            elseif s== maj and s!= min then
                set dest = "|c"+udg_MAJUSCULE+s+"|r" + dest
            elseif s== "0" or S2I(s) != 0 then
                set dest = "|c"+udg_CHIFFRE+s+"|r" + dest
            else
                set dest = "|c"+udg_AUTRE+s+"|r" + dest
            endif
           
        endloop
   
    return dest
   
    endfunction


Déclaration des variables couleurs:
Gui:
Trigger:
-------- Couleur --------
Set MAJUSCULE = 00FF0101
Set MINUSCULE = 0021C000
Set CHIFFRE = 000201FF
Set AUTRE = 007F0080

Fin de mon code de save:
Gui:
Trigger:
Custom script:   call CastColorString( udg_Code_Save[GetConvertedPlayerId(GetTriggerPlayer())] )
Partie - Display to (Player group((Triggering player))) for 60.00 seconds the text: (Code :  + Code_Save[(Player number of (Triggering player))])

_________________
Ancien The.gosu
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7143
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Rédacteur de tuto #3 (Quantité : 1) Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 25/08/08 08:42    Sujet du message: Citer

Tu pourrais simplement modifier la valeur des constantes plutôt qu'utiliser des variables, mais là n'est pas le souci.
La fonction a pour but de coloriser un string, elle retourne un string, call n'est pas suffisant.

Dans ton cas il faut faire :

Jass:
set udg_Code_Save[GetConvertedPlayerId(GetTriggerPlayer())]= CastColorString(udg_Code_Save[GetConvertedPlayerId(GetTriggerPlayer())])


Pourtant je le dis clairement ici Rolling Eyes :

http://worldedit.free.fr/forum/viewtopic.php?t=250
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Anthelme
Anomalie floodiforme


Inscrit le: 28 Aoû 2007
Messages: 1857
Sujets: 93



MessagePosté le: 25/08/08 11:46    Sujet du message: Citer

Merci Troll
_________________
Ancien The.gosu
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Anthelme
Anomalie floodiforme


Inscrit le: 28 Aoû 2007
Messages: 1857
Sujets: 93



MessagePosté le: 26/08/08 16:50    Sujet du message: Citer

Up dit moi j'ai une petite question est ce que sa serait possible de compter le nombre de majuscule minuscule ... avec le script actuel en rajoutant des variable de type entier qui s'incrémente a la fin de chaque ligne d script ?

re Up me suis débrouiller comme un grand c'est bon

Secret:

Jass:
function CastNumberString takes string source returns string
   
     local integer i= StringLength(source)
     local string dest= null
     local string min
     local string maj
     local string s
     set udg_MINUSCULE_E = 0
     set udg_MAJUSCULE_E = 0
     set udg_CHIFFRE_E = 0
     set udg_AUTRE_E = 0

        loop
   
        exitwhen i== 0
   
        set i=i-1
       
            set s= SubString(source,i,i+1)
            set min= StringCase(s,false)
            set maj= StringCase(s,true)
       
            if s== min and s!= maj then
                set udg_MINUSCULE_E = udg_MINUSCULE_E + 1
            elseif s== maj and s!= min then
                set udg_MAJUSCULE_E = udg_MAJUSCULE_E + 1
            elseif s== "0" or S2I(s) != 0 then
                set udg_CHIFFRE_E = udg_CHIFFRE_E + 1
            else
                set udg_AUTRE_E = udg_AUTRE_E + 1
            endif
           
        endloop
   
    return dest
   
    endfunction



Le script me permet d'avoir le nombre de caractère et donc d'ajouter une clé a la fin de mon code ( je peut aussi intégrer le nombre de caractère du pseudo du joueur )
_________________
Ancien The.gosu
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