AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez
 

 Afficher du texte coloré

Aller en bas 
AuteurMessage
onilink_
Modérateur
onilink_

Messages : 9098
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Afficher du texte coloré Empty
MessageSujet: Afficher du texte coloré   Afficher du texte coloré EmptySam 5 Déc 2009 - 19:14

Maj du script:

drawTextColored
Code:
var str, line, wid, s, e, part, col, draw, prevCol;
str = argument2
line = 0
wid = 0
s = 0
e = 0 // start - end balise
draw = true
prevCol = draw_get_color()

while(draw) {
    s = string_pos("<", str)
    e = string_pos(">", str)
    if(s == 1) {
        col = string_copy(str, s+1, e-s-1)
        if(col == "") col = "c_black"
        if(string_copy(col, 1, 2) == "c_" || string_copy(col, 1, 1) == '$')
            execute_string("draw_set_color(" + col + ")")
        else execute_string("draw_set_color(make_color("+col+"))")
        str = string_delete(str, 1, e)
        continue
    }
  
    if(string_copy(str, 1, 1) == '#') {
        line += 1
        wid = 0
        str = string_delete(str, 1, 1)
        continue
    }
  
    e = string_pos('#', str)
    if(e < s && e>0) s = e
    if(s == 0) {
        s = string_length(str)+1
        draw = false
    }
  
    part = string_copy(str, 1, s-1)
    draw_text(argument0 + wid, argument1 + line*16, part)
    wid += string_width(part)
    str = string_delete(str, 1, s-1)
}
draw_set_color(prevCol)

Code d'exemple (draw):
Code:
str = "Voici un <$53FF12>texte<> aux <255,0,0>couleurs<> multiples :p"
+"#<c_blue>Et en <c_aqua>plus<> il tient sur <20,100,50>plusieurs lignes hohoho"
drawTextColored(16, 16, str)


Edit: pour ceux sous GMS utiliser cette versions la:
Spoiler:
 


Dernière édition par onilink_ le Sam 12 Déc 2015 - 22:12, édité 10 fois
Revenir en haut Aller en bas
Playboy
Utilisateur confirmé: Rang ***
Playboy

Messages : 699
Localisation : Sur la lune
Projet Actuel : Sur le pont du Charles de Playboy

Afficher du texte coloré Empty
MessageSujet: Re: Afficher du texte coloré   Afficher du texte coloré EmptySam 5 Déc 2009 - 23:16

Hum voyant le titre je suis venue me pencher sur ce script Smile

Vu que j'en ai fait un qui fait la même chose (disponible en téléchargeant mon rajout de fonction sur mon sujet) je viens apporter mes lumières Smile

Je trouve peu judicieux l'utilisation de la première boucle ....

Code:
for(i=0 ; i<string_length(str) ; i+=1)
c[i] = 0

Surtout que cette boucle n'est pas protégée .... Il faut savoir que GM ne permet que 32000 valeurs dans un array manuel (c'est à dire sans ds_create_list() (dont je ne sais pas si elle a les même contraintes :S) Donc 1 cela plantera et de 2 au final tu empêches un texte de plus de 32000 caractères.

Après pour le reste mon code est blindé pour pallier aux erreurs mais en enlevant les vérifications j'arrive à la même logique (temps d'exécution identique quoi) donc chapeau Smile J'ai mis aussi un peu plus d'arguments donc je peux te les suggérer : le alpha et les alignements. A voui j'ai aussi permis de faire différents formats de couleur ^^" (RGB ou couleur GM) mais c'est du chipottage là ^^".

Pour info voila ma fonction :

Code:

draw_string_color(x,y,halign,valign,alpha,"<r,g,b>str1<c_color>str2...")

Bonne chance si tu te penches dessus pour l'améliorer Smile

_________________
[Démo du RPG (30 Juin 2009) = Aeris] ----------------------- [Jeux Finis/Mon topic = Laguna]
Spoiler:
 
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_

Messages : 9098
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Afficher du texte coloré Empty
MessageSujet: Re: Afficher du texte coloré   Afficher du texte coloré EmptyDim 6 Déc 2009 - 7:23

Ok merci pour ces infos ^^

Par contre y a quelqu'un qui utilise des textes a + de 32000 caractères ??
Ici c'est juste pour simplifier la coloration, en plus dans l'autre script on peu définir d'autres systèmes de lectures des balises donc....
Revenir en haut Aller en bas
bibi675
Utilisateur confirmé: Rang *****
bibi675

Messages : 2456
Localisation : Oise
Projet Actuel : Jeu par navigateur original

Afficher du texte coloré Empty
MessageSujet: Re: Afficher du texte coloré   Afficher du texte coloré EmptyDim 6 Déc 2009 - 11:28

Hum, à mon avis, un texte de 32000 caractères, colorisé ne rentrera pas dans une room standard (au max 1024 * 768) et si il est affiché dans une police plus petite, il ferra laggé le jeu comme pas possible.

En tout cas, c'est magnifiquement codé (comme Playboy sûrement noel ) !

_________________
Afficher du texte coloré 1005394
Revenir en haut Aller en bas
Topaze22
*Excellent utilisateur*
Topaze22

Messages : 6213
Localisation : Sur la Lune
Projet Actuel : Projet HELLO/TOPAZE22 Mario Bros World

Afficher du texte coloré Empty
MessageSujet: Re: Afficher du texte coloré   Afficher du texte coloré EmptyDim 6 Déc 2009 - 14:34

onilink_ a écrit:
Ok merci pour ces infos ^^

Par contre y a quelqu'un qui utilise des textes a + de 32000 caractères ??
Ici c'est juste pour simplifier la coloration, en plus dans l'autre script on peu définir d'autres systèmes de lectures des balises donc....
Playboy oui

_________________
Topique pour le Projet Hello Mario en préparation.
Sorti du topique lorsque la première démo sera disponible.
Afficher du texte coloré Projet13
Revenir en haut Aller en bas
Contenu sponsorisé




Afficher du texte coloré Empty
MessageSujet: Re: Afficher du texte coloré   Afficher du texte coloré Empty

Revenir en haut Aller en bas
 
Afficher du texte coloré
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Scripts GML-
Sauter vers: