[tuto] Réaliser ses scripts et Macros

Créer/ajouter/éditer un script In Game pour AoC


Avatar de l’utilisateur
wamfiya
Investi
Messages : 144
Inscription : 10 oct. 2019, 18:12

[tuto] Réaliser ses scripts et Macros

Message non lu par wamfiya »

Un script, qu’est-ce que c’est ?

Les scripts peuvent servir à plusieurs choses, communiquer, rechercher, informer, temporiser, … En les enrichissant avec de la couleur et/ou un peu de HTML, ils deviendront plus visibles et personnifiés. On peut les envoyer dans tous les canaux du jeu (sous réserve que le script ne soit pas trop lourd). Basiquement un script n’est rien d’autre qu’un fichier texte (*.txt) avec un nom unique qui sert à l’appeler.

Comment réaliser son premier script (facile)?

Il faut se rendre dans le dossier du jeu puis dans le dossier “Scripts” (si ce dossier n’est pas présent il faut le créer !). Tous les scripts devront y être déposés directement (pas de sous dossier).

Créer ensuite un “nouveau fichier texte” dans ce dossier et le nommer “exemple.txt”, l’ouvrir et y écrire “Bonjour le Monde !

Retourner en jeu, écrire “/exemple.txt” dans le chat souhaité et valider comme on le ferait pour envoyer du texte dans le chat.

Et voilà, “Bonjour le Monde !” apparaît dans le chat.

Retrouver dans ce post plus de détail concernant la création d’un script et les outils disponibles et leurs inconvénients.

Comment réaliser son premier script (avancé)?

Le chat Age of Conan tolère le formatage du texte comme de la couleur, une police de caractère spécifique. Pour réaliser cela il faut avoir quelques notions (minime) dans le langage HTML et connaître les quelques polices de caractères autorisées dans le chat d’Age of Conan.

Le HTML autorisé est très pauvre, car il n’autorise que le formatage du texte. De même, le nombre de police de caractères est limité. De plus, l’indentation du code du script n’est pas autorisé, l’intégralité du code doit tenir sur UNE SEULE LIGNE. Concernant les tableaux, n’y pensez même pas.

Retrouver dans ce post plus de détail concernant la création d’un script et les outils disponibles et leurs inconvénients.

En résumé, les balises HTML autorisées se limitent à “A”, “BR“, “DIV“, “FONT”, “IMG” et “U”.

La balise A

Lie une commande ou une fenêtre. Elle accepte les attributs suivants :

  1. HREF : qui aura pour valeur :
    • Une commande avec la valeur “chatcmd:///L_EMOTE_ICI” (à noter qu’il y a 3 “/”, 2 pour “chatcmd://” et 1 pour l’emote). Les commandes fonctionnent uniquement dans une fenêtre.
    • Une fenêtre avec la valeur “text:// LE_TEXTE_OU_LA_FENETRE_ICI”.
  2. STYLE : qui permet de supprimer la décoration par défaut d’un lien (en bleu et souligné) grâce à la valeur “text-decoration:none”. Néanmoins il est fortement recommandé de souligner le terme lié pour indiquer qu’il est cliquable. Je n’ai aucune idée des styles autorisés et je dois avouer que je n’ai pas du tout envie de les recenser.

Exemple de balise A ouvrant une fenêtre :

Code : Tout sélectionner

<A HREF="text://Bonjour le Monde !" STYLE=text-decoration:none ><U>exemple d'un lien ouvrant une fenêtre contenant du texte</U></A>

Exemple de balise A pour une emote :

Code : Tout sélectionner

<A HREF="text:// <A HREF=”chatcmd:///saluer” STYLE=text-decoration:none ><U>un lien avec une commande</U></A> " STYLE=text-decoration:none ><U>exemple d'un lien ouvrant une fenêtre contenant une commande</U></A>

La balise BR

Ajoute un saut de ligne.
Exemple de balise B :

Code : Tout sélectionner

Bonjour<BR>le<BR> Monde !

La balise DIV

Elle sert principalement à créer un “bloc” qui prendra toute la largeur de la fenêtre quelques soit sa largeur. Il n’est pas possible de lui donner une bordure visible ou encore un fond coloré, tout juste gérer l’alignement du texte contenu à l’aide de l’attribut :

  1. ALIGN : qui peut avoir pour valeur “right”, “center” ou “left”. Cette dernière étant la valeur par défaut.

La balise FONT

Formate une portion de texte à l’aide des attributs :

  1. COLOR qui permet la coloration du texte. Cet attribut autorise l’emploi d’un nom de couleur, à noter que le rendu de couleur peut varier suivant l’interface que possède le joueur car elles peuvent avoir étaient personnalisées par le créateur de l’UI, de plus certaines couleurs utilisent le même code couleur qu’une autre déjà existante. Il existe une centaine de couleurs dont voici la liste :
    • black
    • green
    • silver
    • lime
    • gray
    • olive
    • white
    • yellow
    • maroon
    • navy
    • red
    • blue
    • purple
    • teal
    • fuchsia
    • aqua
    • orange
    • html_link_color
    • eldritch
    • occult
    • chaos
    • divine
    • blessed
    • onslaught
    • kuthcheman
    • unknown1
    • unknown2
    • active
    • actv_disabled
    • standard
    • std_disabled
    • negative
    • positive
    • paperstd
    • standard_bright
    • tooltip_positive
    • tooltip_negative
    • friends
    • mundane
    • superior
    • enchanted
    • rare
    • epic
    • legendary
    • enchantedlight
    • rarelight
    • epiclight
    • money_gold
    • money_silver
    • money_copper
    • money_tin
    • gold_rank
    • silver_rank
    • bronze_rank
    • ct_error
    • ct_system
    • ct_cmd_feedback
    • ctch_admin_name
    • ctch_admin_text
    • ctch_clan_name
    • ctch_clan_text
    • ctch_emote_name
    • ctch_emote_text
    • ctch_gm_name
    • ctch_gm_text
    • ctch_misc_name
    • ctch_misc_text
    • ctch_newbie_name
    • ctch_newbie_text
    • ctch_news_name
    • ctch_news_text
    • ctch_pgroup_name
    • ctch_pgroup_text
    • ctch_seekingteam_name
    • ctch_seekingteam_text
    • ctch_vicinity_name
    • ctch_vicinity_text
    • ctch_whisper_name
    • ctch_whisper_text
    • ctch_shout_name
    • ctch_shout_text
    • ctch_team_name
    • ctch_team_text
    • ctch_raid_name
    • ctch_raid_text
    • ctch_tell_name
    • ctch_tell_text
    • ctch_mehit_name
    • ctch_mehit_text
    • ctch_mehealed_name
    • ctch_mehealed_text
    • ctch_mypet
    • ctch_otherpet
    • ctch_megotxp_name
    • ctch_megotxp_text
    • ctch_
    • renown_valor
    • renown_glory
    • renown_artistry
    • aa_general
    • aa_archetype
    • aa_class
    • pvp
    • pve
    • quest_selected_active
    • quest_selected_inactive
    • quest_tracked_active
    • quest_tracked_inactive
    • quest_nonetracked_active
    • quest_nonetracked_inactive
    • d’un code hexadécimal (non raccourci) donnant le choix parmis 16 777 217 de couleurs. L’emploi de l’hexadécimal assure le bon rendu de la couleur quelques soit l’interface de l’utilisateur.
  2. FACE qui permet le changement de police de caractère parmi 19 choix :
    • chat
    • small
    • normal
    • normal_italic
    • normal_bold
    • huge
    • large
    • large_sc
    • large_bold
    • scaled
    • 3d_text_small
    • 3d_text_arial
    • 3d_text
    • 3d_text_bold
    • 3d_text_hyb
    • hyboriansmall
    • hyborianlarge
    • headline
    • combat_feedback

Exemple de balise FONT :

Code : Tout sélectionner

<FONT COLOR=white FACE=headline>Bonjour le Monde !</FONT>

La balise IMG

Affiche une image. Son attribut est :

  1. SRC qui contiendra le nom de l’image. Le protocole ne peut être que “rdb://”, ce qui veut dire qu’il n’est pas possible d’utiliser un protocole internet tel que “http://”, ou encore “ftp://”, ni même un protocole local de type “file://”. En français, cela veut dire que l’image doit provenir obligatoirement du jeu, il n’est pas possible d’utiliser une image du web ou une image locale. De plus, cette balise fonctionne uniquement dans les fenêtres.
    Par défaut, les images ne s’affichent pas à la première ouverture de la fenêtre. il est nécessaire de la recharger en cliquant à nouveau sur le lien d’ouverture de la fenêtre. Il existe néanmoins une technique pour ne pas avoir ce souci.
    Pour qu’une image s’affiche dès la première ouverture de la fenêtre il faut l’ajouter à côté du lien d’ouverture de la fenêtre dans le chat. Cela à pour effet d’appeler une première fois l’image pour la rendre visible dans la fenêtre. Le bug subsiste si l’on change de zone avec la fenêtre contenant l’image ouverte, il faudra alors la recharger. Cette technique à un inconvénient, il faut mettre 2 fois la balise IMG pour une même image ce qui peut rapidement rendre un script lourd au risque de ne pas pouvoir l’afficher dans certain chat…
    Pour savoir où trouver les images, c’est “assez simple”, le protocole “rdb://” le dit lui-même. il faut regarder dans les fichiers portant l’extension “*.rdb”. Malheureusement ces fichiers ne sont pas ouvrable à moins d’utiliser un logiciel de type “RDB Extractor”.
    Exemple de balise IMG :

    Code : Tout sélectionner

    <IMG SRC=rdb://12325>
    ce code affichera l’icône d’un oeil.

La balise U

Souligne une portion de texte.
Exemple de balise U :

Code : Tout sélectionner

<U>Bonjour le Monde !</U>

Les cas de la mise en gras et de l’italique

Aucune balise autorisé dans AoC ne permet de mettre une portion de texte en gras ou en italique… Cela est implémenté directement sous forme de police de caractères qui est déjà en gras ou en italique.

Les variables

Les scripts sont très limités, mais il est possible de les rendre dynamiques ! C’est ce que permettent les variables. Une variable (dans AoC) est une commande spécifique qui permet d’afficher une information précise.

Ci-dessous la liste des variables disponibles dans AoC :

  1. %0 : le nom du script courant. Si le script s’appelle “exemple.txt”, alors %0 vaudra “exemple”.
  2. %1, %2, %3, … %n : les paramètres donné dans l’ordre lors de l’appel du script. Exemple pour un script appelé “/exemple 1 2 3”, %1 vaudra 1, %2, vaudra 2 et %3 vaudra 3. Le nombre de variables est illimité.
  3. %* : contient l’intégralité des paramètres qui suivent la commande
  4. %f : le nom de votre cible en cour de combat
  5. %m : le nom du personnage qui envoie le script
  6. %t : le nom de la cible courante

Les commandes

  • /afk : permet de mettre un message d’absence
  • /camp : déconnecte le personnage
  • /chsay <CANAL> <TEXTE> : envoie du texte dans le canal choisi. <CANAL> équivaut au canal dans lequel on veut envoyer du <TEXTE> sans changer de canal
  • /g <TEXTE> : envoie un message dans le canal groupe sans changer de canal
  • /global <TEXTE> : envoie un message au canal “global” sans changer de canal
  • /global(français) <TEXTE> : envoie un message au canal “global(français)” sans changer de canal. A noter que pour envoyer un message dans le chat d’une langue spécifique, le jeu doit être lancé dans la même langue
  • /group <TEXTE> : envoie un message dans le canal groupe sans changer de canal
  • /gu <TEXTE> : envoie un message dans le canal guilde sans changer de canal
  • /guild <TEXTE> : envoie un message dans le canal guilde sans changer de canal
  • /ignore <PSEUDO> : bloque un personnage dans les canaux. Refaire la commande pour débloquer le personnage
  • /me : envoie du texte à votre proximité immédiate via le canal “dire” sans changer de canal
  • /r <TEXTE> : envoie un message au canal raid sans changer de canal
  • /raid <TEXTE> : envoie un message au canal raid sans changer de canal
  • /reloadui : recharger l’interface. Cette commande est utile si l’on souhaite stopper une macro
  • /s <TEXTE> : “cri” le <TEXTE> à la proximité immédiate du personnage
  • /say <TEXTE> : dit le <TEXTE> à la proximité immédiate du personnage
  • /selectself : sélectionne son propre personnage
  • /setoption <OPTION> : permet de changer un paramètre (<OPTION>) du jeu
  • /t <PSEUDO> <TEXTE>: envoie un message au pseudo sans changer de canal
  • /tell <PSEUDO> <TEXTE>: envoie un message au pseudo sans changer de canal
  • /text <TEXTE> : envoie un message dans son propre canal de discussion. Personne ne le voit sauf soi-même. L’utilité réside dans le fait de pouvoir appeler un script personnel
  • /quit : déconnecte le personnage
  • delay <TEMPS_EN_MILLISECONDE> : temporise une macro, cela ne fonctionne pas dans un script, ceci n’est pas une commande valide dans le chat !

Les macros

Une macro est un peu différente d’un script de part son format “multi-ligne” et la possibilité de temporiser ce qui s’y passe pour automatiser certaines tâches. Ce qui ne veut pas dire qu’il est possible de faire combattre son personnage face à un monstre (du moins dans le sens AoC d’une macro).
Le côté “multi-ligne” rend une macro différente d’un script qui est “mono-ligne”. Lors de l’exécution d’une macro, le moteur de chat lit la macro ligne par ligne, une ligne étant une action différente de la ligne précédente, si il y en a une. Si il n’y a pas de délai entre chaque action, elles seront alors exécutées les une a la suite des autres jusqu’au prochain délai ou la dernière ligne de la macro
Exemple d’une macro via le fichier “auto_login” :

Code : Tout sélectionner

/logcombat off
/setoption SplashScreenFadeOutTime 0
/setoption SplashScreenFadeInTime 0
/setoption dailyLogin_window false
/setoption itemshop_window false
/StrangeUI2015_Fassmod_on
delay 2000
/logcombat on
delay 50000
/guild Bonjour le Monde !

La macro “auto_login” réalise ici plusieurs tâches qui sont (par ordre de ligne):

  1. Fermer le log de combat
  2. Supprimer l’effet de “fade out” quand on quitte une zone
  3. Supprimer l’effet de “fade in” quand on entre dans une zone
  4. Ne pas ouvrir la fenêtre des “récompenses journalières”
  5. Ne pas ouvrir la boutique
  6. Activer un mod contenu dans l’UI “Strange UI”
  7. Temporiser la macro durant 2000ms (2s)
  8. Activer le log de combat
  9. Temporiser la macro durant 50000ms (50s)
  10. Envoyer le message “Bonjour le Monde !” au chat de guilde

Plus d’informations sur le fichier “auto_login” dans ce post du forum.

Script d’exemples

afi_script_v1.zip
Script contenant un exemple des balises, des polices de caractères, des couleurs, des variables ainsi qu'une macro.

Décompresser directement dans le dossier "scripts" de AoC et taper "/afi_script_exemple" dans un chat du jeu. (Le script s'affichera dans le chat courant)
(2.57 Kio) Téléchargé 22 fois
Dernière modification par wamfiya le 08 févr. 2021, 16:39, modifié 1 fois.


Avatar de l’utilisateur
wamfiya
Investi
Messages : 144
Inscription : 10 oct. 2019, 18:12

[FaQ] Réaliser ses scripts et Macros

Message non lu par wamfiya »

Foire aux questions.

  1. Je copie/colle les exemples de ce tutoriel dans le chat de AoC et je ne vois pas les effets, pourquoi ?
    • Il faut coller les exemples dans un fichier texte (*.txt) que l’on appel sous forme de commande dans le chat souhaité. Exemple, créer un fichier texte nommé “exemple.txt”, y déposer le code voulu et taper “/exemple.txt” dans une fenêtre de chat.
  2. Faut-il fermer le jeu lorsque l’on édite un script ?
    • Non, la modification sera prise en compte immédiatement, en revanche il faudra refaire la commande dans le chat souhaité pour voir la version modifiée du script.
  3. L’extension “*.txt” pour un script ou une macro est-elle obligatoire ?
    • Non. mais si l’on souhaite tout de même utiliser une extension il faut obligatoirement utiliser l’extension “*.txt
  4. Le javascript est-il autorisé ?
    • Non.
  5. Les styles sont-ils autorisés ?
    • Uniquement les styles en ligne et dans un nombre grandement limité.
  6. Je temporise ma macro avec la commande “delay xxxx”, mais je reçoit le message “Vous envoyez un grand nombre de messages de discussion. Le dernier message que vous avez envoyé a été effacé par la protection contre l’arrosage.“, pourquoi ?
    • Le chat AoC est protégé contre le flood (ou l’arrosage comme ils l’ont traduit), il n’est donc pas possible d’envoyer plus de 3 messages en 3 secondes. On oublie donc les “3, …, 2, …, 1, …. PARTEZ !!!!!”. Ou alors il faut légèrement augmenter les “delay”.
  7. J’ai démarrer un script/macro qui spam régulièrement le chat, comment l’arrêter ?
    • Taper “/reloadui” dans le chat pour arrêter tout script/macro en cour.
  8. Pourquoi le script met du temps à s’afficher dans le chat ?
    • Le script commence à être imposant, attention il risque de ne bientôt plus s’afficher du tout car trop lourd… Il va falloir penser à supprimer le code inutile ou diviser le script en plusieurs parties…
  9. Il existe des éditeurs, ils ne sont pas plus pratiques pour créer/éditer un script ?
  10. Pourquoi parfois il y a des “ (double quote), des ‘ (single quote) et d’autres fois rien ?
    • Le choix d’une “ (double quote) évite d’échapper les ‘ (single quote) qui peuvent être contenu dans du texte. Donc par défaut, il est plus simple d’englober une valeur avec une double guote plutôt qu’une single quote. Hormis ce détail les deux ont la même raison d’être. Néanmoins, à force d’imbrication il n’est parfois plus possible d’utiliser une single quote dans du texte. La technique n’est alors d’utiliser un caractère encodé. Se rendre ici pour voir la liste.
    • Il n’y en a pas quand la valeur contenu ne contient pas d’espace. Une autre raison est que ne pas en mettre réduit le code de 2 caractères, ce qui réduit donc aussi le poids du fichier.
  11. Comment réduire le poids du script au maximum ?
    • Il faut déjà connaître la limite d’un script de poids d’un script que l’on peut envoyer sur un canal. Elle est de 10Ko.
    • Éviter les espaces dans les balises.
    • Exemple, on peut parfois être tenté de mettre un espace comme dans cet exemple “<img src=rdb://425872 >”, l’espace avec le “>” est inutile.
    • Éviter les espaces en fin de ligne, ils n’apporteront de toute façon rien au formatage ou à la lecture du texte.
    • Éviter les espaces entre les balises, si ils ne séparent pas un mot ils ne servent à rien.
    • Ne pas utiliser de balises inutiles, englober chaques lignes d’une DIV pour avoir des saut de ligne peut se révéler plus gourmand en caractère que d’utiliser un voir deux balises BR.
    • Exemple, cette ligne de code “<div>coucou</div>” sera plus gourmande en caractère que “coucou<br>” pour un résultat identique.
    • Éviter de mettre les balises, les attributs et leurs valeurs en majuscule, le poids d’une majuscule est plus important que celui d’une minuscule. Garder les majuscules pour le texte qui sera lu.
    • Ne pas utiliser de balises FONT à tort et à travers. une englobant l’intégralité du texte pour le colorer et quelques unes dedans pour souligner un mot par-ci par-là suffisent à formater correctement le texte sans pour autant surcharger le script.
    • Les développeurs auront tendance à vouloir avoir un code “propre”, “sémantique”, “valide”. Franchement, vu ce qu’autorise AoC dans ses scripts, autant oublier tout ça et faire au plus simple quitte à ce que ce soit sale…
    • Ne pas utiliser de BR (saut de ligne) juste avant ou juste après une DIV. la DIV fera un saut de ligne d’elle-même.
    • Utiliser un code couleur le moins gourmand possible. Là c’est au cas par cas, par exemple :
    • Pour du rouge on peut le faire de plusieurs manière grâce à “ct_error”, “#ff0000” ou encore “red”. ce dernier est bien moins gourmand que les deux premiers. Ceci n’est pas toujours vrai.
    • Hormis tout cela, il faut parfois faire des concessions sur le texte ou le formatage :(.
    • Il faut coller les exemples dans un fichier texte (*.txt) que l’on appel sous forme de commande dans le chat souhaité. Exemple, créer un fichier texte nommé “exemple.txt”, y déposer le code voulu et taper “/exemple.txt” dans une fenêtre de chat.
  12. Faut-il fermer le jeu lorsque l’on édite un script ?
    • Non, la modification sera prise en compte immédiatement, en revanche il faudra refaire la commande dans le chat souhaité pour voir la version modifiée du script.
  13. L’extension “*.txt” pour un script ou une macro est-elle obligatoire ?
    • Non. mais si l’on souhaite tout de même utiliser une extension il faut obligatoirement utiliser l’extension “*.txt
  14. Le javascript est-il autorisé ?
    • Non.
  15. Les styles sont-ils autorisés ?
    • Uniquement les styles en ligne et dans un nombre grandement limité.
  16. Je temporise ma macro avec la commande “delay xxxx”, mais je reçoit le message “Vous envoyez un grand nombre de messages de discussion. Le dernier message que vous avez envoyé a été effacé par la protection contre l’arrosage.“, pourquoi ?
    • Le chat AoC est protégé contre le flood (ou l’arrosage comme ils l’ont traduit), il n’est donc pas possible d’envoyer plus de 3 messages en 3 secondes. On oublie donc les “3, …, 2, …, 1, …. PARTEZ !!!!!”. Ou alors il faut légèrement augmenter les “delay”.
  17. J’ai démarrer un script/macro qui spam régulièrement le chat, comment l’arrêter ?
    • Taper “/reloadui” dans le chat pour arrêter tout script/macro en cour.
  18. Pourquoi le script met du temps à s’afficher dans le chat ?
    • Le script commence à être imposant, attention il risque de ne bientôt plus s’afficher du tout car trop lourd… Il va falloir penser à supprimer le code inutile ou diviser le script en plusieurs parties…
  19. Il existe des éditeurs, ils ne sont pas plus pratiques pour créer/éditer un script ?
  20. Pourquoi parfois il y a des “ (double quote), des ‘ (single quote) et d’autres fois rien ?
    • Le choix d’une “ (double quote) évite d’échapper les ‘ (single quote) qui peuvent être contenu dans du texte. Donc par défaut, il est plus simple d’englober une valeur avec une double guote plutôt qu’une single quote. Hormis ce détail les deux ont la même raison d’être. Néanmoins, à force d’imbrication il n’est parfois plus possible d’utiliser une single quote dans du texte. La technique n’est alors d’utiliser un caractère encodé. Se rendre ici pour voir la liste.
    • Il n’y en a pas quand la valeur contenu ne contient pas d’espace. Une autre raison est que ne pas en mettre réduit le code de 2 caractères, ce qui réduit donc aussi le poids du fichier.
  21. Comment réduire le poids du script au maximum ?
    • Il faut déjà connaître la limite d’un script de poids d’un script que l’on peut envoyer sur un canal. Elle est de 10Ko.
    • Éviter les espaces dans les balises.
    • Exemple, on peut parfois être tenté de mettre un espace comme dans cet exemple “<img src=rdb://425872 >”, l’espace avec le “>” est inutile.
    • Éviter les espaces en fin de ligne, ils n’apporteront de toute façon rien au formatage ou à la lecture du texte.
    • Éviter les espaces entre les balises, si ils ne séparent pas un mot ils ne servent à rien.
    • Ne pas utiliser de balises inutiles, englober chaques lignes d’une DIV pour avoir des saut de ligne peut se révéler plus gourmand en caractère que d’utiliser un voir deux balises BR.
    • Exemple, cette ligne de code “<div>coucou</div>” sera plus gourmande en caractère que “coucou<br>” pour un résultat identique.
    • Éviter de mettre les balises, les attributs et leurs valeurs en majuscule, le poids d’une majuscule est plus important que celui d’une minuscule. Garder les majuscules pour le texte qui sera lu.
    • Ne pas utiliser de balises FONT à tort et à travers. une englobant l’intégralité du texte pour le colorer et quelques unes dedans pour souligner un mot par-ci par-là suffisent à formater correctement le texte sans pour autant surcharger le script.
    • Les développeurs auront tendance à vouloir avoir un code “propre”, “sémantique”, “valide”. Franchement, vu ce qu’autorise AoC dans ses scripts, autant oublier tout ça et faire au plus simple quitte à ce que ce soit sale…
    • Ne pas utiliser de BR (saut de ligne) juste avant ou juste après une DIV. la DIV fera un saut de ligne d’elle-même.
    • Utiliser un code couleur le moins gourmand possible. Là c’est au cas par cas, par exemple :
    • Pour du rouge on peut le faire de plusieurs manière grâce à “ct_error”, “#ff0000” ou encore “red”. ce dernier est bien moins gourmand que les deux premiers. Ceci n’est pas toujours vrai.
    • Hormis tout cela, il faut parfois faire des concessions sur le texte ou le formatage :(.
Dernière modification par wamfiya le 27 févr. 2023, 02:12, modifié 2 fois.
Raison : Suppression d'un doublon


Répondre