Le Deal du moment : -20%
Ecran PC GIGABYTE 28″ LED M28U 4K ( IPS, 1 ms, ...
Voir le deal
399 €

Aller en bas
Sphinx
Sphinx
Membre

Nombre de messages : 69
Distinction : aucune
Date d'inscription : 08/03/2016
https://genie23.fr/js-rmmv/mes-plugins-rmmv/

Sphinx CSS Empty Sphinx CSS

Ven 12 Jan 2018 - 1:36
SphinxCSS Plugin

Contenu diffusé sous licence Creative Commons CC BY 3.0 FR

Sous ce titre original, je vous présente mon dernier capillotractage, mon dernier kiff de scripteur : une transposition de certaines propriétés CSS qui affectent le texte (transposés pour les messages normaux et messages défilants). Après m'être intéressé aux scripts de messages de Yanfly (voir ce post pour comprendre d'où est parti ma réflexion) je me suis rendu compte de leurs limites. Ainsi, pas moyen de centrer automatiquement le texte par exemple.

Et voilà comment j'en suis arrivé à transposer des propriétés CSS sous forme d'un plugin sobrement nommé SphinxCSS. Et en une journée, j'ai transposé toutes celles que j'ai pu (celles qui affectent le texte bien sûr) comme commandes de messages disponibles aussi bien dans les messages classiques (commande Afficher le texte...) que dans les messages défilants (commande Montrer le texte défilant...). S'est posé le soucis de bien distinguer ces commandes (au nombre de 14 pour le moment) des autres commandes disponibles dans les messages. J'ai choisi de toutes les faire commencer par \#.

J'ai commencé par ce que j'avais déjà fait, à savoir changer la couleur du texte. Et à partir de là, j'ai élargi mes recherches pour couvrir autant de propriétés CSS de texte que je pouvais. La liste des commandes disponible se trouve dans l'aide du plugin.

Et à présent, voici le plugin en question :


Un problème de compatibilité a été remonté entre ce plugin et SRD_ShakingText de SumRndmDde. La solution est de placer le script de SumRndmDde après le mien, puis d'ajouter immédiatement après ce nouveau plugin : http://rpgmakervx.1fr1.net/t21819-sphinx-css#252886

Depuis la version 1.0.0, ce plugin intègre les commandes de modules suivantes :
  • ENREGISTRER_COULEUR ALIAS COULEUR
      Enregistre une couleur par son alias, ce qui permet d'utiliser l'alias à la place de la couleur par la suite (utile dans le cas d'une couleur réutilisée plusieurs fois). L'alias ne doit en aucun cas contenir autre chose que des caractères alphanumériques (lettres, chiffres et _). La couleur enregistrée peut être soit une couleur au format hexadécimal sans #, soit un nombre compris entre 0 et 31, correspondant à une couleur du windowskin.
      Exemple :
      Code:
      ENREGISTRER_COULEUR ROUGE_VIF ff0000
      Une fois cette commande exécutée, je peux tout à fait afficher un message (texte ou défilant) avec comme commande \#C[ROUGE_VIF]. Marche aussi pour les couleurs des dégradés.

  • ENREGISTRER_POLICE ALIAS CHEMIN_FICHIER
      Enregistre une nouvelle police de caractères dans le jeu. La police en question DOIT se trouver dans le dossier fonts/ du projet. L'alias ne doit en aucun cas contenir autre chose que des caractères alphanumériques (lettres, chiffres et _). Le nom de la police, lui, peut contenir toutes sortes de caractères y compris espace.
      Exemple :
      Code:
      ENREGISTRER_POLICE Hydrogen_Whiskey hydrogen whiskey.ttf
      Désormais, la police Hydrogen Whiskey (disponible ici : https://www.dafont.com/fr/hydrogen-whiskey.font) est maintenant disponible dans le jeu, et peut être utilisée par exemple dans un message avec \#FF[Hydrogen_Whiskey]

  • COULEUR_PAR_DEFAUT TYPE_MSG COULEUR
  • COULEUR_PAR_DEFAUT TYPE_MSG COULEUR1 COULEUR2
      Définit une couleur par défaut pour le type de message (défilant : scrolltext, normal : message, ou les deux : both) passé en argument. Si une seule couleur est passée en paramètre, le texte sera de cette couleur, si deux couleurs sont passées en paramètre, alors le texte sera par défaut dégradé de la couleur 1 (à gauche) à la couleur 2 (à droite). La couleur enregistrée peut être soit une couleur au format hexadécimal sans #, soit un nombre compris entre 0 et 31, correspondant à une couleur du windowskin, soit un alias enregistré auparavant.
      Exemples :
      Code:
      COULEUR_PAR_DEFAUT ScrollText 30
      COULEUR_PAR_DEFAUT Message FF0000
      COULEUR_PAR_DEFAUT Both 20 00FF00

  • POLICE_PAR_DEFAUT TYPE_MSG POLICE
      Définit une police par défaut pour le type de message (défilant : scrolltext, normal : message, ou les deux : both) passé en argument. La police choisie doit être soit le nom d'une police installée, soit un alias enregistré précédemment.
      Exemple :
      Code:
      POLICE_PAR_DEFAUT ScrollText Hydrogen_Whiskey

  • ALIGNEMENT_PAR_DEFAUT TYPE_MSG ALIGNEMENT
      Définit un alignement par défaut pour le type de message (défilant : scrolltext, normal : message, ou les deux : both) passé en argument. L'alignement est soit left (aligne le texte à gauche), center (centre le texte), right (aligne le texte à droite) ou justify (justifie le texte).
      Exemple :
      Code:
      ALIGNEMENT_PAR_DEFAUT ScrollText Center


Et maintenant un petit cas d'usage. Partons d'un texte imbitable (un lorem ipsum fera l'affaire) :
Lorem ipsum dolor sit amet:

J'ai placé ce texte dans un message défilant tout simple.
Sphinx CSS Mini_180115070808666337

Comme vous le voyez, c'est absolument ignoble. Je ne vois pas d'autre mot pour le dire. Maintenant nous pouvons passer à la mise en forme.
D'abord occupons nous de l'alignement avec la commande \#TA[alignement] (où alignement doit valoir left, center, right ou justify). A noter que \#TA vaut \#TA[left]. J'ai 4 paragraphes (comme par hasard Wink) alors testons les 4.
Lorem ipsum dolor sit amet:

Voilà le résultat.
Alignement à gauche et centré :
Sphinx CSS Mini_180115070813354896
Alignement à droite :
Sphinx CSS Mini_180115070821251021
Alignement justifié :
Sphinx CSS Mini_180115070808265260

On commence à ne pas être trop mal. Mais on peut aller plus loin bien sûr. Pour faciliter un peu les choses pour la suite, je ne vais garder qu'un seul paragraphe précédé d'un titre. Pour le titre, je décide de changer la police de caractères, avec la commande \#FF[Nom de la police] (\#FF revient à la police d'origine) et sa taille, avec la commande \#FS[taille] (\#FS revient à la taille normale). Le nom de la police peut être soit le nom d'une police installée, soit l'alias d'une police enregistrée.
Lorem ipsum dolor sit amet:
Ce qui nous donne :
Sphinx CSS Mini_180115070823514372
A noter au passage un petit détail : dans ce cas précis, j'ai associé une taille de caractères (48) à un alignement centré. Pour que le positionnement se fasse correctement, il faut d'abord préciser la taille. Sinon, l'alignement se fera avant l'augmentation de la police de caractères et le titre sera décalé à droite (si la taille du texte est supérieure à 28) ou à gauche (si la taille du texte est inférieure à 28)
Le second \#FS, après le titre Lorem ipsum, sert à restaurer la taille par défaut. On retrouve ce comportement sur la plupart des commandes acceptant des arguments.

Bon, ca prend forme, mais c'est encore un peu triste vous ne trouvez pas ? Alors colorons un peu tout ca. Il existe 2 commandes pour ca. D'abord la plus simple, \#C[Couleur], permet de colorier un ou plusieurs caractères (jusqu'à ce qu'on change à nouveau de couleur, en fait) d'une couleur donnée. Dans mon exemple, j'ai choisi le rouge, représenté ici par son code hexadécimal FF0000. Le second \#C sert à revenir à la couleur par défaut. La couleur doit être soit une couleur au format hexadécimal sans #, soit un nombre entre 0 et 31 (dans ce cas, je récupère la couleur correspondante sur le windowskin), soit l'alias enregistré d'une couleur.
La seconde option pour colorier du texte, c'est le dégradé. Ce sont deux commandes qui délimitent le texte à colorier. Pour commencer, on initialise le dégradé avec \#LG[Couleur1][Couleur2], la couleur 1 étant celle de gauche et la couleur 2 étant celle de droite. C'est la seule commande qui nécessite obligatoirement des arguments pour fonctionner. Et c'est la commande \#EG qui permet de clôturer le dégradé avant la fin du message.
Lorem ipsum dolor sit amet:
Et que les couleurs soient !
Sphinx CSS Mini_180115070821462165

Bien, on a vu l'alignement, la modification de la police de caractère et de sa taille, puis la couleur. Mais ca ne s'arrête pas là. Il reste encore deux catégories de commandes à voir. Déjà, voyons pour mettre du texte en gras ou en italique (les deux se combinent à merveille soit dit en passant). Pour passer du texte en gras, on l'encadre avec deux commandes, \#B avant le texte à mettre en gras et \#EB après le texte à mettre en gras. Pour le texte en italique, c'est le même principe avec la commande \#I au début du texte à mettre en italique, et \#EI à la fin du texte à mettre en italique.
Lorem ipsum dolor sit amet:
Ainsi soit-il.
Sphinx CSS Mini_180115070854956796
A noter au passage que les commandes peuvent sans problème s'entrecroiser, ce n'est pas comme les balises de forums qui doivent être fermées dans l'ordre où elles ont été ouvertes.

Et il est temps de terminer ce vaste tour d'horizon par des commandes de modification du contenu. Il ne s'agit plus de le mettre en forme, mais bien de transformer les majuscules et les minuscules. Elles sont au nombre de 3 (plus 1 pour revenir à l'état normal). Commençons gentillement avec la commande \#UC qui transforme toutes les lettres en majuscules. Ensuite il y a \#LC qui fait l'inverse, et transforme donc toutes les majuscules en minuscules. Il y a encore \#CP qui transforme la première lettre de chaque mot en majuscule et toutes les autres lettres en minuscules. Et enfin \#NC pour délimiter la fin d'effet des trois commandes précédentes. Voici le dernier exemple qui illustre ces différentes possibilités :
Lorem ipsum dolor sit amet:
Sphinx CSS Mini_180115070855265079

Mise à jour : désormais il est possible de souligner du texte au moyen de deux nouvelles commandes, \#U qui débute le souligné et \#EU qui le termine.
Lorem ipsum dolor sit amet:
Voici ce que ca donne :
Sphinx CSS Mini_180115070855903031

Pour la (grosse) partie mise en forme, je vous laisse seuls juges, les possibilités sont quasi infinies. Pour ce qui est de la transformation de la casse de caractère, j'ai réfléchi un moment après l'avoir codé (ca ne m'a pas trop demandé de temps pour le scripter) sur l'utilité que ca pourrait avoir. En effet, mon exemple est du texte statique, donc on peut tout à fait faire à la main ce que j'ai fait au moyen de ces commandes. Toutefois vous pourriez vouloir utiliser ces commandes sur du texte dynamique, tels que les noms des héros. Pour peu que votre joueur choisisse son pseudo, voilà un bon moyen d'uniformiser vos affichages Wink

Je vous souhaite un agréable making ^o^


Dernière édition par Sphinx le Lun 15 Jan 2018 - 21:58, édité 12 fois
Kingdommangas
Kingdommangas
Membre

Nombre de messages : 1401
Localisation : Ma tête
Distinction : Débrouillarde notoire é_è [Mist']
Ou celle qui partageait plus vite que son ombre [Gel']
Poisson 2017 [Amal]
Grâce à elle, tout le forum appelle Yamashi "Mamashi" [Yama]
Entraide d'Or
Règne dans l'ombre de la commu'
Youtubeuse beauté reconvertie dans le gaming [Amal']
Date d'inscription : 05/05/2015
https://www.youtube.com/channel/UCqGFuGrzm7jim1o5QJ4lKvg

Sphinx CSS Empty Re: Sphinx CSS

Ven 12 Jan 2018 - 8:01
Nice nice NICE
Sphinx CSS 351640211
Edit:
Sphinx CSS Dxdxdx10
Combiner à Yanfly ca ne fonctionne pas
Sphinx CSS 409377787
(sauf la taille du texte qui a bien augmenter même si #FS[30] est visible)
Rêviel
Rêviel
Membre

Nombre de messages : 92
Distinction : aucune
Date d'inscription : 30/12/2017

Sphinx CSS Empty Re: Sphinx CSS

Ven 12 Jan 2018 - 13:08
Jolie Sphinx CSS 466669
C'est forcément un jedi , il écoute la force du script ! Very Happy
Sphinx
Sphinx
Membre

Nombre de messages : 69
Distinction : aucune
Date d'inscription : 08/03/2016
https://genie23.fr/js-rmmv/mes-plugins-rmmv/

Sphinx CSS Empty Re: Sphinx CSS

Ven 12 Jan 2018 - 18:58
Kingdommangas a écrit:Edit:
Sphinx CSS Dxdxdx10
Combiner à Yanfly ca ne fonctionne pas
Sphinx CSS 409377787
(sauf la taille du texte qui a bien augmenter même si #FS[30] est visible)

Je récupère les scripts de Yanfly pour voir où ca coince ^_^ Je vous tiens au courant

Edit :
J'ai pu identifier un souci avec la commande \#B. En effet, Yanfly et moi utilisons la même variable pour marquer si la police est en gras ou non. Et l'un comme l'autre faisons le nécessaire pour passer la police en gras si nécessaire. Du coup, ca fait double emploi.

Voici une correction que je te propose de tester. Remplaces les lignes 299 à 302 de mon script :
Code:
Bitmap.prototype.SphinxCSS_makeFontNameText = Bitmap.prototype._makeFontNameText;
Bitmap.prototype._makeFontNameText = function() {
    return (this.fontBold ? "Bold " : "") + Bitmap.prototype.SphinxCSS_makeFontNameText.call(this);
};
par :
Code:
Bitmap.prototype.SphinxCSS_makeFontNameText = Bitmap.prototype._makeFontNameText;
Bitmap.prototype._makeFontNameText = function() {
    if(Yanfly && Yanfly.Message && Yanfly.Message.Bitmap_makeFontNameText) {
        return (this.fontBold ? "Bold " : "") + Yanfly.Message.Bitmap_makeFontNameText.call(this);
    }
    return (this.fontBold ? "Bold " : "") + Bitmap.prototype.SphinxCSS_makeFontNameText.call(this);
};

Si ca suffit à corriger ton souci, je publierai sur JsFiddle la version corrigée.

Après, j'ai testé qu'avec mes exemples. Si ca ne suffit pas à corriger ton problème, pourrais-tu me donner le texte que tu utilises ?
Kingdommangas
Kingdommangas
Membre

Nombre de messages : 1401
Localisation : Ma tête
Distinction : Débrouillarde notoire é_è [Mist']
Ou celle qui partageait plus vite que son ombre [Gel']
Poisson 2017 [Amal]
Grâce à elle, tout le forum appelle Yamashi "Mamashi" [Yama]
Entraide d'Or
Règne dans l'ombre de la commu'
Youtubeuse beauté reconvertie dans le gaming [Amal']
Date d'inscription : 05/05/2015
https://www.youtube.com/channel/UCqGFuGrzm7jim1o5QJ4lKvg

Sphinx CSS Empty Re: Sphinx CSS

Ven 12 Jan 2018 - 20:10
Sphinx CSS Xchwbs10

Pas de changement Sphinx CSS 3278236851
Sphinx
Sphinx
Membre

Nombre de messages : 69
Distinction : aucune
Date d'inscription : 08/03/2016
https://genie23.fr/js-rmmv/mes-plugins-rmmv/

Sphinx CSS Empty Re: Sphinx CSS

Sam 13 Jan 2018 - 16:22
Hum... Bizarre ca...

J'ai testé chez moi (avec l'event 4 au lieu du 14, mais ca ne doit pas changer grand chose) :
Code:
\autoevent[4]\#FS[30]\#CPtest avec \#B\#I\#LG[5][25]Yanfly
et à l'exception du gradient pour lequel j'ai fait une modification pour prendre en compte les couleurs du windowskin (dans la version que j'ai posté, il fallait lui donner les couleurs en hexadécimal), ben moi ca marche ^^"
Sphinx CSS Sphinx10

Pour la prise en charge des couleurs du windowskin, il faut ajouter :
Code:
          if(/^([0-2]?\d|3[0-2])$/.test(start)) {
                start = this.textColor(start).slice(1);
            }
            if(/^([0-2]?\d|3[0-2])$/.test(end)) {
                end = this.textColor(end).slice(1);
            }
juste avant la ligne 147 :
Code:
          var text = /^.*\n?/.exec(textState.text.slice(textState.index))[0].trim();

Après, chez moi mon script est après ceux de Yanfly, mais je viens également de tester avec ceux de Yanfly après le mien, pas de soucis non plus silent

Tu as d'autres plugins d'installés ?

Edit :
Premier post mis à jour avec les deux corrections/ajouts postés après
Kingdommangas
Kingdommangas
Membre

Nombre de messages : 1401
Localisation : Ma tête
Distinction : Débrouillarde notoire é_è [Mist']
Ou celle qui partageait plus vite que son ombre [Gel']
Poisson 2017 [Amal]
Grâce à elle, tout le forum appelle Yamashi "Mamashi" [Yama]
Entraide d'Or
Règne dans l'ombre de la commu'
Youtubeuse beauté reconvertie dans le gaming [Amal']
Date d'inscription : 05/05/2015
https://www.youtube.com/channel/UCqGFuGrzm7jim1o5QJ4lKvg

Sphinx CSS Empty Re: Sphinx CSS

Dim 14 Jan 2018 - 11:16
Sphinx a écrit:Tu as d'autres plugins d'installés ?

Yep, une bonne armée XD, alors j'ai vérifier et le plugin qui pose pb c'est celui là: Shaking text de SumRndmDde

Code:
/*:
 * @plugindesc Allows you to add Shaking Text to your Show Text events!
 * @author SumRndmDde
 *
 * @param Reset Shaking per Box
 * @desc If this is set to 'true', then all shaking effects will be reset every time the Message Window is cleared.
 * @default true
 *
 * @param Default Shaking Power
 * @desc The Shaking Power used when using \Shake without any parameters.
 * @default $.randomNum(0.2, 0.5)
 *
 * @param Default Shaking Max
 * @desc The Shaking Max used when using \Shake without any parameters.
 * @default 1
 *
 * @param Default Wave Power
 * @desc The Wave Power used when using \Wave without any parameters.
 * @default 0.5
 *
 * @param Default Wave Max
 * @desc The Wave Max used when using \Wave without any parameters.
 * @default 4
 *
 * @param Default Slide Power
 * @desc The Slide Power used when using \Slide without any parameters.
 * @default 0.5
 *
 * @param Default Slide Max
 * @desc The Slide Max used when using \Slide without any parameters.
 * @default 4
 *
 * @param Copy Outline
 * @desc If 'true', the outline function will be copied.
 * @default true
 *
 * @help
 *
 * Shaking Text
 * Version 1.12
 * SumRndmDde
 *
 *
 * This Plugin allows you to add animated text effects to your Show Text
 * events.
 *
 * This can be done using very simple escape codes within the Show Text
 * events themselves. Doing so will allow you to customize your own
 * shaking and wavy effects!
 *
 *
 * ==========================================================================
 *  Show Text Escape Codes
 * ==========================================================================
 *
 * Use the following escape codes in any Show Text event:
 *
 * \Shake                        -  Sets text to default shaking values
 * \Shake<power>                  -  Creates a shake effect from simple number
 * \Shake<xSpd, ySpd>            -  Creates shake from seperate x and y speeds
 * \Shake<xSpd, ySpd, xMax, yMax> -  Gives absolute control over shaking
 *                                  effect; can control x/y speed, along with
 *                                  the maximum distance the characters can
 *                                  travel before reversing.
 *
 * -------------------------------------------------------------------------
 *
 * \Wave                          -  Sets wave effect based off of default
 *                                  wave values
 * \Wave<speed, max>              -  Sets wave effect based off of speed and
 *                                  max distance the characters can travel
 *
 * -------------------------------------------------------------------------
 *
 * \Slide                        -  Sets slide effect based off of default
 *                                  slide values
 * \Slide<speed, max>            -  Sets slide effect based off of speed and
 *                                  max distance the characters can travel
 *
 * -------------------------------------------------------------------------
 *
 * \Circle                        -  Sets circle effect.
 *
 * -------------------------------------------------------------------------
 *
 * \ResetShake                    -  Resets all shaking
 *
 *
 * ==========================================================================
 *  End of Help File
 * ==========================================================================
 *
 * Welcome to the bottom of the Help file.
 *
 *
 * Thanks for reading!
 * If you have questions, or if you enjoyed this Plugin, please check
 * out my YouTube channel!
 *
 * https://www.youtube.com/c/SumRndmDde
 *
 *
 * Until next time,
 *  ~ SumRndmDde
 *
 */

var SRD = SRD || {};
SRD.ShakingText = SRD.ShakingText || {};

var Imported = Imported || {};
Imported["SumRndmDde Shaking Text"] = 1.12;

(function(_) {

   var params = PluginManager.parameters('SRD_ShakingText');

   _.resetShaking = String(params['Reset Shaking per Box']).trim().toLowerCase() === 'true';

   _.defaultShakePower = String(params['Default Shaking Power']);
   _.defaultShakeMax = String(params['Default Shaking Max']);
   _.defaultWavePower = String(params['Default Wave Power']);
   _.defaultWaveMax = String(params['Default Wave Max']);

   _.outline = String(params['Copy Outline']).trim().toLowerCase() === 'true';

   var $ = {};
   $.randomNum = function(min, max) {
      var temp = (max - min) * 100;
      var temp2 = min * 100;
      if(temp <= 0) alert("When using the 'randomNum' function, the minimum number was greater than the maximum.");
      return Number(Math.floor(Math.randomInt(temp) + temp2) / 100);
   }

   //-----------------------------------------------------------------------------
   // Window_Message
   //-----------------------------------------------------------------------------

   var _Window_Message_initialize = Window_Message.prototype.initialize;
   Window_Message.prototype.initialize = function(x, y, width, height) {
      _Window_Message_initialize.call(this, x, y, width, height);
      this._textShaking = [0, 0, 0, 0];
      this._shakingSprites = [];
      this._fastShakeInterval = 0;
   };

   var _Window_Message_processNormalCharacter = Window_Message.prototype.processNormalCharacter;
   Window_Message.prototype.processNormalCharacter = function(textState) {
      if(this.isShakingActive() && !this._checkWordWrapMode) {
         if(Imported.YEP_MessageCore && this.checkWordWrap(textState)) {
            return this.processNewLine(textState);
         }
         var c = textState.text[textState.index++];
         var w = this.textWidth(c);
         var h = textState.height;
         this.createShakingCharacter(textState, c, w, h);
         textState.x += w;
      } else {
         _Window_Message_processNormalCharacter.call(this, textState);
      }
   };

   var _Window_Message_obtainEscapeCode = Window_Message.prototype.obtainEscapeCode;
   Window_Message.prototype.obtainEscapeCode = function(textState) {
      var shake = (Imported.YEP_MessageCore) ? !this._checkWordWrapMode : true;
      textState.index++;
      if(textState.text.slice(textState.index, textState.index+5).match(/shake/i)) {
         textState.index += 5;
         return (shake) ? "SHAKE" : "";
      } else if(textState.text.slice(textState.index, textState.index+4).match(/wave/i)) {
         textState.index += 4;
         return (shake) ? "WAVE" : "";
      } else if(textState.text.slice(textState.index, textState.index+5).match(/slide/i)) {
         textState.index += 5;
         return (shake) ? "SLIDE" : "";
      } else if(textState.text.slice(textState.index, textState.index+6).match(/circle/i)) {
         textState.index += 6;
         return (shake) ? "CIRCLE" : "";
      } else if(textState.text.slice(textState.index, textState.index+10).match(/resetshake/i)) {
         textState.index += 10;
         return (shake) ? "RESETSHAKE" : "";
      } else {
         textState.index--;
         return _Window_Message_obtainEscapeCode.call(this, textState);
      }
   };

   Window_Message.prototype.isShakingActive = function() {
      return (this._textShaking[0] > 0 || this._textShaking[0] === 'circle') ||
         this._textShaking[1] > 0 || this._textShaking[2] > 0 || this._textShaking[3] > 0;
   };

   Window_Message.prototype.createShakingCharacter = function(textState, c, w, h) {
      if(this._textShaking[0] === 'circle') {
         var sprite = new Sprite_Shake(new Bitmap(w, h), 'circle', 0, 0, 0);
      } else {
         var sprite = new Sprite_Shake(new Bitmap(w, h), eval(this._textShaking[0]), eval(this._textShaking[1]),
            eval(this._textShaking[2]), eval(this._textShaking[3]));
      }
      sprite.bitmap.textColor = this.contents.textColor;
      sprite.bitmap.paintOpacity = this.contents.paintOpacity;
      sprite.bitmap.fontSize = this.contents.fontSize;
      sprite.bitmap.fontFace = this.contents.fontFace;
      if(_.outline) sprite.bitmap._drawTextOutline = this.contents._drawTextOutline;
      sprite.bitmap.drawText(c, 0, 0, w, h);
      sprite.x = textState.x + this.standardPadding();
      sprite.y = textState.y + this.standardPadding();
      sprite._xBase = sprite.x;
      sprite._yBase = sprite.y;
      this.addChild(sprite);
      this._shakingSprites.push(sprite);
      if(this._showFast || this._lineShowFast) {
         for(var i = 0; i < this._fastShakeInterval; i++) {
            sprite.update();
         }
         this._fastShakeInterval += 2;
      } else {
         this._fastShakeInterval = 0;
      }
   };

   var _Window_Message_processEscapeCharacter = Window_Message.prototype.processEscapeCharacter;
   Window_Message.prototype.processEscapeCharacter = function(code, textState) {
      switch (code) {
      case 'SHAKE':
         var params = this.obtainShakingTextParams(textState);
         var info = String(params).match(/(.+)\s*,\s*(.+)\s*,\s*(.*)\s*,\s*(.*)/);
         var info2 = String(params).match(/(.+)\s*,\s*(.+)/);
         var info3 = String(params).match(/(.+)/);
         if(info) {
            this._textShaking[0] = String(info[1]);
            this._textShaking[1] = String(info[2]);
            this._textShaking[2] = String(info[3]);
            this._textShaking[3] = String(info[4]);
         } else if(info2) {
            this._textShaking[0] = String(info2[1]);
            this._textShaking[1] = String(info2[2]);
            this._textShaking[2] = _.defaultShakeMax;
            this._textShaking[3] = _.defaultShakeMax;
         } else if(info3) {
            var spd = "Math.random() + " + String(Math.floor((Number(info3[1]) / 10) * 100) / 100);
            this._textShaking[0] = spd;
            this._textShaking[1] = spd;
            this._textShaking[2] = _.defaultShakeMax;
            this._textShaking[3] = _.defaultShakeMax;
         } else {
            this._textShaking[0] = _.defaultShakePower;
            this._textShaking[1] = _.defaultShakePower;
            this._textShaking[2] = _.defaultShakeMax;
            this._textShaking[3] = _.defaultShakeMax;
         }
         break;
      case 'WAVE':
         var info = String(this.obtainShakingTextParams(textState)).match(/(.+)\s*,\s*(.+)/);
         this._textShaking[0] = "0";
         this._textShaking[2] = "0";
         if(info) {
            this._textShaking[1] = String(info[1]);
            this._textShaking[3] = String(info[2]);
         } else {
            this._textShaking[1] = _.defaultWavePower;
            this._textShaking[3] = _.defaultWaveMax;
         }
         break;
      case 'SLIDE':
         var info = String(this.obtainShakingTextParams(textState)).match(/(.+)\s*,\s*(.+)/);
         this._textShaking[1] = "0";
         this._textShaking[3] = "0";
         if(info) {
            this._textShaking[0] = String(info[1]);
            this._textShaking[2] = String(info[2]);
         } else {
            this._textShaking[0] = _.defaultWavePower;
            this._textShaking[2] = _.defaultWaveMax;
         }
         break;
      case 'CIRCLE':
         this._textShaking[0] = "circle";
         this._textShaking[1] = 0;
         this._textShaking[2] = 0;
         this._textShaking[3] = 0;
         break;
      case 'RESETSHAKE':
         this.resetShaking();
         break;
      default:
         _Window_Message_processEscapeCharacter.call(this, code, textState);
         break;
      }
   };

   Window_Message.prototype.obtainShakingTextParams = function(textState) {
      var arr = /^\<.+\>/.exec(textState.text.slice(textState.index));
      if (arr) {
         textState.index += arr[0].length;
         return String(arr[0].slice(1, arr[0].length-1));
      } else {
         return '';
      }
   };

   var _Window_Message_open = Window_Message.prototype.open;
   Window_Message.prototype.open = function() {
      _Window_Message_open.call(this);
      for(var i = 0; i < this._shakingSprites.length; i++) {
         this._shakingSprites[i].opacity = 255;
      }
   };

   var _Window_Message_close = Window_Message.prototype.close;
   Window_Message.prototype.close = function() {
      _Window_Message_close.call(this);
      for(var i = 0; i < this._shakingSprites.length; i++) {
         this._shakingSprites[i].opacity = 0;
      }
   };

   Window_Message.prototype.removeShakingSprites = function() {
      for(var i = 0; i < this._shakingSprites.length; i++) {
         this.removeChild(this._shakingSprites[i]);
      }
   };

   Window_Message.prototype.resetShaking = function() {
      for(var i = 0; i < this._textShaking.length; i++) {
         this._textShaking[i] = 0;
      }
   };

   var _Window_Message_newPage = Window_Message.prototype.newPage;
   Window_Message.prototype.newPage = function(textState) {
      _Window_Message_newPage.call(this, textState);
      this.removeShakingSprites();
      if(_.resetShaking) this.resetShaking();
   };

   //-----------------------------------------------------------------------------
   // Sprite_Shake
   //-----------------------------------------------------------------------------

   function Sprite_Shake() {
      this.initialize.apply(this, arguments);
   }

   Sprite_Shake.prototype = Object.create(Sprite.prototype);
   Sprite_Shake.prototype.constructor = Sprite_Shake;

   Sprite_Shake.prototype.initialize = function(bitmap, xSpd, ySpd, xMax, yMax) {
      Sprite.prototype.initialize.call(this, bitmap);
      if(xSpd === 'circle') {
         this._xSpd = 'circle';
         this._aniCouter = 0;
         this._xBase = this.x;
         this._yBase = this.y;
      } else {
         this._xSpd = xSpd;
         this._ySpd = ySpd;
         this._xMax = xMax;
         this._yMax = yMax;
         this._xBase = this.x;
         this._yBase = this.y;
      }
   };

   Sprite_Shake.prototype.update = function() {
      Sprite.prototype.update.call(this);
      if(this._xSpd === 'circle') {
         this._aniCouter -= (Math.PI * 0.06);
         if(this._aniCouter > (Math.PI * 2)) this._aniCouter -= (Math.PI * 2);
         this._xAniOff = Math.cos(this._aniCouter) * 3;
         this._yAniOff = Math.sin(this._aniCouter) * 3;
         this.x = this._xBase + this._xAniOff;
         this.y = this._yBase + this._yAniOff;
      } else {
         this.x += this._xSpd;
         this.y += this._ySpd;
         if(Math.abs(this.x - this._xBase) > this._xMax) this._xSpd *= (-1);
         if(Math.abs(this.y - this._yBase) > this._yMax) this._ySpd *= (-1);
      }
   };

})(SRD.ShakingText);

Sphinx
Sphinx
Membre

Nombre de messages : 69
Distinction : aucune
Date d'inscription : 08/03/2016
https://genie23.fr/js-rmmv/mes-plugins-rmmv/

Sphinx CSS Empty Re: Sphinx CSS

Dim 14 Jan 2018 - 16:33
@Kingdommangas :
Effectivement, si le plugin de SumRndmDde est placé avant le mien, mon script déconne. Mais si il est placé après, tout roule. Je vais creuser pour comprendre pourquoi ca coince avec ce script s'il est avant.

Une fois que j'aurai trouvé, je posterai un correctif, avec un maj qui permet de souligner le texte Smile

Edit : Pour le moment, le script de SumRndmDde n'est pas compatible avec le mien (pour que les 2 fonctionnent, le mien doit être avant, mais les commandes de SumRndmDde désactivent les miennes - elles disparaissent du message, mais elles n'agissent pas)
Il faut que j'étudie les conditions d'utlisation pour savoir si j'ai le droit de réécrire son script pour le faire fonctionner avec le mien. En attendant, je vais poster la maj qui permet de souligner du texte
Kingdommangas
Kingdommangas
Membre

Nombre de messages : 1401
Localisation : Ma tête
Distinction : Débrouillarde notoire é_è [Mist']
Ou celle qui partageait plus vite que son ombre [Gel']
Poisson 2017 [Amal]
Grâce à elle, tout le forum appelle Yamashi "Mamashi" [Yama]
Entraide d'Or
Règne dans l'ombre de la commu'
Youtubeuse beauté reconvertie dans le gaming [Amal']
Date d'inscription : 05/05/2015
https://www.youtube.com/channel/UCqGFuGrzm7jim1o5QJ4lKvg

Sphinx CSS Empty Re: Sphinx CSS

Dim 14 Jan 2018 - 16:58
Alright, d'ailleurs j'ai une idée a ajouté si c'est pas trop complexe.

De la même façon que le linear gradient
Code:
 *     - \#LG[Couleur1][Couleur2]     LINEAR GRADIENT
 *           Colore le texte d'un dégradé allant de la couleur 1 à la couleur 2
 *           (couleurs au format hexadécimal, ou nombre compris entre 0 et 32
 *           pour les couleurs du windowskin)
Mais avec un dégradé horizontale à l'instar de la verticale
Sphinx
Sphinx
Membre

Nombre de messages : 69
Distinction : aucune
Date d'inscription : 08/03/2016
https://genie23.fr/js-rmmv/mes-plugins-rmmv/

Sphinx CSS Empty Re: Sphinx CSS

Dim 14 Jan 2018 - 17:55
Un dégradé vertical un peu comme ca :
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam ex libero, finibus sed efficitur in, porta vitae justo. Vestibulum ante ipsum primis in
faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas tellus metus, sollicitudin sit amet dapibus vel, laoreet vitae nisi. Aliquam venenatis
iaculis metus in interdum. Interdum et malesuada fames ac ante ipsum primis in faucibus. Morbi dictum mollis felis non convallis. Integer eleifend mi
in sapien venenatis, in consequat ante consequat.
Kingdommangas
Kingdommangas
Membre

Nombre de messages : 1401
Localisation : Ma tête
Distinction : Débrouillarde notoire é_è [Mist']
Ou celle qui partageait plus vite que son ombre [Gel']
Poisson 2017 [Amal]
Grâce à elle, tout le forum appelle Yamashi "Mamashi" [Yama]
Entraide d'Or
Règne dans l'ombre de la commu'
Youtubeuse beauté reconvertie dans le gaming [Amal']
Date d'inscription : 05/05/2015
https://www.youtube.com/channel/UCqGFuGrzm7jim1o5QJ4lKvg

Sphinx CSS Empty Re: Sphinx CSS

Dim 14 Jan 2018 - 17:56
Nope, un dégradé juste sur 1 ligne et non sur un paragraphe.
Sphinx CSS 1435208969
Sphinx
Sphinx
Membre

Nombre de messages : 69
Distinction : aucune
Date d'inscription : 08/03/2016
https://genie23.fr/js-rmmv/mes-plugins-rmmv/

Sphinx CSS Empty Re: Sphinx CSS

Dim 14 Jan 2018 - 19:56
Malheureusement, je crains que ca ne soit pas possible. En effet, ce n'est pas réellement un dégradé appliqué sur différents caractères, mais une couleur différente appliquée sur chaque caractère un par un (exactement ce que j'ai fait pour le titre au début de mon topic). Chaque caractère ayant sa propre couleur, un dégradé sur un seul ou deux caractères ne rendra forcément pas le résultat attendu (tu peux tester ^o^). Pour la même raison donc, un dégradé vertical sur un caractère de haut est inenvisageable (ou pour être exact, je ne sais pas comment le faire)

Sinon, j'ai avancé sur deux choses :
Tout d'abord j'ai rectifié légèrement le souligné (en effet, depuis le début je teste sur des messages défilants. Mais là, quand je me suis penché sur le script de SumRndmDde, j'ai testé sur des messages normaux. Le hasard a fait que j'ai appliqué un souligné sur la 4e ligne de mon message de test. Et je me suis rendu compte que le trait était alors dessiné à l'extérieur du bitmap du message. Je l'ai donc réhaussé de 3 pixels. Je viens d'éditer mon premier post, le script est à jour.

Ensuite, et parce que c'est là dessus que je travaillais, j'ai pu interfacer le script de SumRndmDde au mien en réécrivant une de ses méthodes. Voilà mon message de test :
Lorem ipsum dolor sit amet:
Et voici le résultat :
Sphinx CSS Mini_180115070830553128

Voici le plugin :


Merci de bien vous conformer aux conditions d'utilisation du plugin disponible au début de l'aide (moi je le partage dans les mêmes conditions que mon code initial, Creative Commons CC BY 3.0, mais comme il se base aussi sur le script de SumRndmDde, il faut se conformer à ses conditions d'utilisation disponibles ici)


Dernière édition par Sphinx le Lun 15 Jan 2018 - 19:16, édité 1 fois
Kingdommangas
Kingdommangas
Membre

Nombre de messages : 1401
Localisation : Ma tête
Distinction : Débrouillarde notoire é_è [Mist']
Ou celle qui partageait plus vite que son ombre [Gel']
Poisson 2017 [Amal]
Grâce à elle, tout le forum appelle Yamashi "Mamashi" [Yama]
Entraide d'Or
Règne dans l'ombre de la commu'
Youtubeuse beauté reconvertie dans le gaming [Amal']
Date d'inscription : 05/05/2015
https://www.youtube.com/channel/UCqGFuGrzm7jim1o5QJ4lKvg

Sphinx CSS Empty Re: Sphinx CSS

Dim 14 Jan 2018 - 22:37
Alright, c'est dommage mais bon, je ne vais pas en faire une crise non plus ^^.

Je te donnerai un retour plus tard, j'ai attaquer un gros plugin à maitriser. Enfin pas dans 3 ans bien sûr. En tous cas thx d'avoir rendu le plugin compatible ^^.



EDIT: Ton plugin fait planter bounce

Sphinx CSS Sdfd10
Sphinx
Sphinx
Membre

Nombre de messages : 69
Distinction : aucune
Date d'inscription : 08/03/2016
https://genie23.fr/js-rmmv/mes-plugins-rmmv/

Sphinx CSS Empty Re: Sphinx CSS

Lun 15 Jan 2018 - 12:22
Tu as bien le script de SumRndmDde juste avant mon morceau de code ? (mon morceau de code ne remplace pas son script, je n'ai réécrit que le nécessaire)

Mise à jour 1.0.0 : correction de divers bugs, ajout de commandes de plugin permettant d'enregistrer des couleurs et des polices de caractères, et de sélectionner la police et la couleur par défaut des messages
Kingdommangas
Kingdommangas
Membre

Nombre de messages : 1401
Localisation : Ma tête
Distinction : Débrouillarde notoire é_è [Mist']
Ou celle qui partageait plus vite que son ombre [Gel']
Poisson 2017 [Amal]
Grâce à elle, tout le forum appelle Yamashi "Mamashi" [Yama]
Entraide d'Or
Règne dans l'ombre de la commu'
Youtubeuse beauté reconvertie dans le gaming [Amal']
Date d'inscription : 05/05/2015
https://www.youtube.com/channel/UCqGFuGrzm7jim1o5QJ4lKvg

Sphinx CSS Empty Re: Sphinx CSS

Lun 15 Jan 2018 - 12:43
Yep j'ai placer ton plugin SRD_ShakingText-Sphinx-WB_CSS.js juste en dessous de Shaking text
Sphinx
Sphinx
Membre

Nombre de messages : 69
Distinction : aucune
Date d'inscription : 08/03/2016
https://genie23.fr/js-rmmv/mes-plugins-rmmv/

Sphinx CSS Empty Re: Sphinx CSS

Lun 15 Jan 2018 - 13:03
Et c'est toujours le même texte ?
Kingdommangas a écrit:
Sphinx CSS Xchwbs10
Kingdommangas
Kingdommangas
Membre

Nombre de messages : 1401
Localisation : Ma tête
Distinction : Débrouillarde notoire é_è [Mist']
Ou celle qui partageait plus vite que son ombre [Gel']
Poisson 2017 [Amal]
Grâce à elle, tout le forum appelle Yamashi "Mamashi" [Yama]
Entraide d'Or
Règne dans l'ombre de la commu'
Youtubeuse beauté reconvertie dans le gaming [Amal']
Date d'inscription : 05/05/2015
https://www.youtube.com/channel/UCqGFuGrzm7jim1o5QJ4lKvg

Sphinx CSS Empty Re: Sphinx CSS

Lun 15 Jan 2018 - 13:17
oui j'ai pas changer
Sphinx
Sphinx
Membre

Nombre de messages : 69
Distinction : aucune
Date d'inscription : 08/03/2016
https://genie23.fr/js-rmmv/mes-plugins-rmmv/

Sphinx CSS Empty Re: Sphinx CSS

Lun 15 Jan 2018 - 19:16
@Kingdommangas : Je ne comprends pas, moi ca marche nickel (j'ai associé mon script aux 3 de Yanfly et à celui de SumRndmDde sans souci, la preuve en exemple) :
Sphinx CSS Mini_180115070837235745 Sphinx CSS Mini_180115070829787000 Sphinx CSS Mini_180115070835341206

J'en profite pour réhéberger mes images histoire d'afficher des miniatures plus rapides à charger. Il suffit de cliquer sur une image pour l'afficher en plus grand

@BoubouLeHibou : Mon script n'est pas le problème et le désactiver pour le réactiver quand on en a besoin n'est pas la solution Smile Je préfère travailler sur le lien avec les autres scripts, ce que j'ai déjà fait pour ceux de Yanfly (où je détecte s'il est activé et je ne remets pas la police une seconde fois en gras) et celui de SumRndmDde, pour lequel j'ai écrit un patch associant nos deux effets
Sphinx
Sphinx
Membre

Nombre de messages : 69
Distinction : aucune
Date d'inscription : 08/03/2016
https://genie23.fr/js-rmmv/mes-plugins-rmmv/

Sphinx CSS Empty Re: Sphinx CSS

Lun 15 Jan 2018 - 19:29
Au fur et à mesure qu'on me le demandera, oui Smile Mais ca va être assez vite fait, parce qu'il n'y a pas tant de scripteurs ni de scripts de messages que ca ^^
Kingdommangas
Kingdommangas
Membre

Nombre de messages : 1401
Localisation : Ma tête
Distinction : Débrouillarde notoire é_è [Mist']
Ou celle qui partageait plus vite que son ombre [Gel']
Poisson 2017 [Amal]
Grâce à elle, tout le forum appelle Yamashi "Mamashi" [Yama]
Entraide d'Or
Règne dans l'ombre de la commu'
Youtubeuse beauté reconvertie dans le gaming [Amal']
Date d'inscription : 05/05/2015
https://www.youtube.com/channel/UCqGFuGrzm7jim1o5QJ4lKvg

Sphinx CSS Empty Re: Sphinx CSS

Lun 15 Jan 2018 - 20:54
Sphinx a écrit:Je ne comprends pas, moi ca marche nickel

Autant pour moi j'ai constater que Shaking text était désactiver, par contre ca ne fonctionne que si ton plugin est avant celui de SRDDE mais l'important c'est que ca fonctionne, faudrat juste le signaler. ^^
Sphinx
Sphinx
Membre

Nombre de messages : 69
Distinction : aucune
Date d'inscription : 08/03/2016
https://genie23.fr/js-rmmv/mes-plugins-rmmv/

Sphinx CSS Empty Re: Sphinx CSS

Lun 15 Jan 2018 - 22:00
Sphinx a écrit:La solution est de placer le script de SumRndmDde après le mien, puis d'ajouter immédiatement après ce nouveau plugin

Je l'ai mentionné Smile Mais ca peut être utile de le rappeler une fois de plus ^o^

Edit :
Mise à jour 1.1.0 : possibilité de régler un alignement du texte par défaut (en plus de la police et de la couleur) via la commande de plugin ALIGNEMENT_PAR_DEFAUT
Contenu sponsorisé

Sphinx CSS Empty Re: Sphinx CSS

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum