FAMAS Index du Forum

FAMAS
Faction armée des makers assoiffés de sang

 FAQFAQ   RechercherRechercher   MembresMembres   GroupesGroupes   S’enregistrerS’enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

La guilde des Génies du Mal (G.M.) recrute !
Aller à la page: <  1, 2, 3, 4, 5, 6, 7, 8  >
 
Poster un nouveau sujet   Répondre au sujet    FAMAS Index du Forum -> Section Corvées -> Stand de tir
Sujet précédent :: Sujet suivant  
Auteur Message
sriden



Inscrit le: 22 Juil 2011
Messages: 15 226

MessagePosté le: Mar 8 Mar - 19:14 (2016)    Sujet du message: La guilde des Génies du Mal (G.M.) recrute ! Répondre en citant

PublicitéSupprimer les publicités ?
Revue du message précédent :

Je vois que les sup/sub sur chrome. Et sur IE j'ai carrément un message d'erreur à chaque fois que je vais sur la page :



Donc évite les expérimentations trop poussées si c'est pas vraiment nécessaire. :F

 
Revenir en haut
HuLijin



Inscrit le: 23 Sep 2015
Messages: 231

MessagePosté le: Mar 8 Mar - 19:34 (2016)    Sujet du message: La guilde des Génies du Mal (G.M.) recrute ! Répondre en citant

Bon ben je vais noter tout ça autre part alors si ça génère carrément des messages agressifs sur IE.
C'est la lose, c'est que c'est super pratique quand ça marche bien en fait. Vais éditer le message là haut.

Je te rassure sriden, je crois que ce coup-ci j'ai vraiment fait le tour des balises exotiques qui pourraient me servir. Les autres types de spoiler et les balises spécial jeu de rôle j'en aurai pas l'utilité.


Dernière édition par HuLijin le Mer 9 Mar - 10:13 (2016); édité 1 fois
Revenir en haut
sriden
Administrateur


Inscrit le: 22 Juil 2011
Messages: 15 226

MessagePosté le: Mer 9 Mar - 09:26 (2016)    Sujet du message: La guilde des Génies du Mal (G.M.) recrute ! Répondre en citant

J'ai aussi le message d'erreir quand c'est en spoiler (enlève au moins le test de la page ci-présente). :m~

 
Revenir en haut
HuLijin



Inscrit le: 23 Sep 2015
Messages: 231

MessagePosté le: Mer 9 Mar - 10:14 (2016)    Sujet du message: La guilde des Génies du Mal (G.M.) recrute ! Répondre en citant

Viré, viré sur l'autre page aussi, et pour le coup, ça m'ennuie vraiment là XD
Merci d'avoir testé.
Revenir en haut
sriden
Administrateur


Inscrit le: 22 Juil 2011
Messages: 15 226

MessagePosté le: Mer 9 Mar - 14:11 (2016)    Sujet du message: La guilde des Génies du Mal (G.M.) recrute ! Répondre en citant

Bah si ça t'ennuie vraiment, sur l'autre page ça pouvait rester. :F

 
Revenir en haut
HuLijin



Inscrit le: 23 Sep 2015
Messages: 231

MessagePosté le: Mer 9 Mar - 14:19 (2016)    Sujet du message: La guilde des Génies du Mal (G.M.) recrute ! Répondre en citant

Nope, c'est pour la première page que ça m'ennuie. Du coup je passe par une image (ce qui est pas le top du top pour l'éditer) et ça a un rendu tout dégueu mais comme y a que moi qui ai réellement besoin de voir la formule complète, c'est pas bien grave on va dire. Et puis l'avantage, c'est que comme jevais avoir la flemme de changer l'image, on va dire que mes formules sont définitives. Avantage parce que comme ça j'aurai pas la tentation de les améliorer, et l'amélioration c'est l'ennemie du projet fini !

Je floode un peu mais parait qu'on peut en savoir plus sur le jeu de Nemau dans la section secrète.
Revenir en haut
Anton_



Inscrit le: 24 Aoû 2014
Messages: 168

MessagePosté le: Mer 9 Mar - 16:31 (2016)    Sujet du message: La guilde des Génies du Mal (G.M.) recrute ! Répondre en citant

HuLijin a écrit:
Je floode un peu mais parait qu'on peut en savoir plus sur le jeu de Nemau dans la section secrète.


Et moi de même :th

Je me demande si c'est possible d'intégrer Markdown dans un petit programme et qu'il nous montre le résultat.
ça pourrait aider beaucoup vu qu'à la base on fait de l'édition de texte simple.
On peut voir des trucs sympas dans des sites du genre Stackexchange Maths.
Revenir en haut
Zam
Vétéran


Inscrit le: 08 Déc 2013
Messages: 522

MessagePosté le: Mer 9 Mar - 17:48 (2016)    Sujet du message: La guilde des Génies du Mal (G.M.) recrute ! Répondre en citant

Je vous ferais des copier coller d'ici 15 messages. :porte
Revenir en haut
sriden
Administrateur


Inscrit le: 22 Juil 2011
Messages: 15 226

MessagePosté le: Mer 9 Mar - 19:01 (2016)    Sujet du message: La guilde des Génies du Mal (G.M.) recrute ! Répondre en citant

Beaucoup de membres au portillon, il va falloir que j'assure pour vous baisser votre nombre de messages respectif discrètement par pack de 10 toutes les nuits. :porte

 
Revenir en haut
HuLijin



Inscrit le: 23 Sep 2015
Messages: 231

MessagePosté le: Mer 9 Mar - 19:36 (2016)    Sujet du message: La guilde des Génies du Mal (G.M.) recrute ! Répondre en citant

Pas tout pigé au lien entre markdown et le topic de Nemau dans la section secrète.
Revenir en haut
sriden
Administrateur


Inscrit le: 22 Juil 2011
Messages: 15 226

MessagePosté le: Mer 9 Mar - 19:57 (2016)    Sujet du message: La guilde des Génies du Mal (G.M.) recrute ! Répondre en citant

C'était pas un truc pour inscrire et avoir tes (séries de) formules sur un lien externe ?

 
Revenir en haut
Anton_



Inscrit le: 24 Aoû 2014
Messages: 168

MessagePosté le: Mer 9 Mar - 20:34 (2016)    Sujet du message: La guilde des Génies du Mal (G.M.) recrute ! Répondre en citant

Ah non mince, ça transforme juste le texte simple en balises html.

genre si tu tapes ça

texte
===

ça crée ça : <h1>texte</h1>

Après c'est utilisé pas mal autour du web, genre sur reddit.

finies les balises [url ] chiantes, j'ai juste a taper [Texte](lien url) et hop, c'est tout prêt. :porte

Bon bref, si c'est pas possible d'en mettre dans un forum j'arrête le HS de suite.
Revenir en haut
HuLijin



Inscrit le: 23 Sep 2015
Messages: 231

MessagePosté le: Mer 9 Mar - 22:00 (2016)    Sujet du message: La guilde des Génies du Mal (G.M.) recrute ! Répondre en citant

Euh ben tu te crées ton script qui convertit du markdown en bbcode, ou tu vas carrément sur un site qui fait la conversion. Sriden a pas trop la main sur l'éditeur si j'ai bien compris.

Après, si pour toi le markdown c'est plus simple, je peux d'ores et déjà te dire que c'est loin d'être le cas pour tout le monde ^^
J'ai essayé d'en faire utiliser là où je taffais (les techniciens devaient rentrer leurs procédures sur un wiki) j'ai dû finir par leur faire un guide simplifié et une démo. Pas que ce soit dur, mais il faut réapprendre un tas de trucs pour formater.

Et je vois toujours pas le lien avec Nemau, mais doit pas y en avoir en fait.
Si ça a un lien avec mes formules mathématiques, c'est pas la balise bbcode qui bloque. C'est carrément au niveau de certains navigateurs que ça bloque avec MathML, le truc qui permet d'afficher les formules. Le markdown ne résoudra rien, surtout que de ce que j'ai vu vite fait, ça reprend les commandes latex. Après j'ai vu vite fait (= survolé, sans doute pas tout compris) qu'il y avait des scripts ou des plugins à rajouter pour contourner le soucis avec MathML, mais je ne pense pas que ça vaille le coup pour sriden de s'embêter avec ça ^^
Revenir en haut
sriden
Administrateur


Inscrit le: 22 Juil 2011
Messages: 15 226

MessagePosté le: Jeu 10 Mar - 09:18 (2016)    Sujet du message: La guilde des Génies du Mal (G.M.) recrute ! Répondre en citant

Je confirme les deux passages où je suis évoqué. :m~

 
Revenir en haut
HuLijin



Inscrit le: 23 Sep 2015
Messages: 231

MessagePosté le: Jeu 10 Mar - 12:18 (2016)    Sujet du message: La guilde des Génies du Mal (G.M.) recrute ! Répondre en citant

Suite de réflexion sur mes formules de dommages. Vous pouvez zapper totalement ce truc.

Dans la base de données, on a à un moment : hit type et 3 choix :
- certain hit (Game_Action.HITTYPE_CERTAIN = 0)
- physical attack (Game_Action.HITTYPE_PHYSICAL = 1)
- magical attack (Game_Action.HITTYPE_MAGICAL = 2)

Et il se trouve que ces 3 constantes sont utilisées plus loin dans les formules de combat :
Code:
Game_Action.prototype.isCertainHit = function() {
    return this.item().hitType === Game_Action.HITTYPE_CERTAIN;
};

Game_Action.prototype.isPhysical = function() {
    return this.item().hitType === Game_Action.HITTYPE_PHYSICAL;
};

Game_Action.prototype.isMagical = function() {
    return this.item().hitType === Game_Action.HITTYPE_MAGICAL;
};

Game_Action.prototype.makeDamageValue = function(target, critical) {
    var item = this.item();
    var baseValue = this.evalDamageFormula(target);
    var value = baseValue * this.calcElementRate(target);
    if (this.isPhysical()) {
        value *= target.pdr;
    }
    if (this.isMagical()) {
        value *= target.mdr;
    }
    if (baseValue < 0) {
        value *= target.rec;
    }
    if (critical) {
        value = this.applyCritical(value);
    }
    value = this.applyVariance(value, item.damage.variance);
    value = this.applyGuard(value, target);
    value = Math.round(value);
    return value;
};


Ce que ça implique, c'est qu'une fois la formule de base évaluée, elle est encore modifiée : si c'est une attaque physique, on multiplie la valeur obtenue par le taux de défense physique (Physical Defense Rate) de la cible. Si c'est une attaque magique, le taux de défense magique. Et si les dégâts sont négatifs, on utilise le taux de récupération.

Où se cachent ces 3 valeurs dans la base de données ???
Un petit tour par ici :
Code:
Object.defineProperties(Game_BattlerBase.prototype, {
    // Hit Points
    hp: { get: function() { return this._hp; }, configurable: true },
    // Magic Points
    mp: { get: function() { return this._mp; }, configurable: true },
    // Tactical Points
    tp: { get: function() { return this._tp; }, configurable: true },
    // Maximum Hit Points
    mhp: { get: function() { return this.param(0); }, configurable: true },
    // Maximum Magic Points
    mmp: { get: function() { return this.param(1); }, configurable: true },
    // ATtacK power
    atk: { get: function() { return this.param(2); }, configurable: true },
    // DEFense power
    def: { get: function() { return this.param(3); }, configurable: true },
    // Magic ATtack power
    mat: { get: function() { return this.param(4); }, configurable: true },
    // Magic DeFense power
    mdf: { get: function() { return this.param(5); }, configurable: true },
    // AGIlity
    agi: { get: function() { return this.param(6); }, configurable: true },
    // LUcK
    luk: { get: function() { return this.param(7); }, configurable: true },
    // HIT rate
    hit: { get: function() { return this.xparam(0); }, configurable: true },
    // EVAsion rate
    eva: { get: function() { return this.xparam(1); }, configurable: true },
    // CRItical rate
    cri: { get: function() { return this.xparam(2); }, configurable: true },
    // Critical EVasion rate
    cev: { get: function() { return this.xparam(3); }, configurable: true },
    // Magic EVasion rate
    mev: { get: function() { return this.xparam(4); }, configurable: true },
    // Magic ReFlection rate
    mrf: { get: function() { return this.xparam(5); }, configurable: true },
    // CouNTer attack rate
    cnt: { get: function() { return this.xparam(6); }, configurable: true },
    // Hp ReGeneration rate
    hrg: { get: function() { return this.xparam(7); }, configurable: true },
    // Mp ReGeneration rate
    mrg: { get: function() { return this.xparam(8); }, configurable: true },
    // Tp ReGeneration rate
    trg: { get: function() { return this.xparam(9); }, configurable: true },
    // TarGet Rate
    tgr: { get: function() { return this.sparam(0); }, configurable: true },
    // GuaRD effect rate
    grd: { get: function() { return this.sparam(1); }, configurable: true },
    // RECovery effect rate
    rec: { get: function() { return this.sparam(2); }, configurable: true },
    // PHArmacology
    pha: { get: function() { return this.sparam(3); }, configurable: true },
    // Mp Cost Rate
    mcr: { get: function() { return this.sparam(4); }, configurable: true },
    // Tp Charge Rate
    tcr: { get: function() { return this.sparam(5); }, configurable: true },
    // Physical Damage Rate
    pdr: { get: function() { return this.sparam(6); }, configurable: true },
    // Magical Damage Rate
    mdr: { get: function() { return this.sparam(7); }, configurable: true },
    // Floor Damage Rate
    fdr: { get: function() { return this.sparam(8); }, configurable: true },
    // EXperience Rate
    exr: { get: function() { return this.sparam(9); }, configurable: true }
});


On trouve donc que pdr est le S-parameter 7, soit le S-parameter "Physical Damage"
mdr est le S-parameter 8, soit le S-parameter "Magical Damage"
et rec est le S-parameter 3, soit le S-parameter "Recovery Effect"
Tout ceci est défini dans les traits de plein de choses : Actors, Enemies, Classes, Weapons, Armors et States.

Clairement, pour mes calculs avec ce que j'ai présenté plus haut, tout ça peut virer !
En revanche, je commence à voir une autre possibilité pour utiliser ma stat Luck (qui vaut 1 ou 0 selon la position).
Je pourrais utiliser un de ces S-parameters devenus obsolètes. C'est une idée à garder de coté.

Dans cette formule, il y a autre chose que j'aime pas : la variance. La formule est la suivante :
Code:
Game_Action.prototype.applyVariance = function(damage, variance) {
    var amp = Math.floor(Math.max(Math.abs(damage) * variance / 100, 0));
    var v = Math.randomInt(amp + 1) + Math.randomInt(amp + 1) - amp;
    return damage >= 0 ? damage + v : damage - v;
};


En soit, cette formule est mieux foutue par rapport aux RM précédents : on choisit la variance directement dans la BDD, plus de variance imposée planquée dans le RGSS.
Du coup, pour le moment je vais laisser tel quel, ce n'est aps particulièrement gênant.

Il me restera trois points à voir dans la formule : l'application des résistances élémentales, les critiques et l'appel du skill Guard.
Je laisse ça pour plus tard.

En résumé, ma fonction d'application des dommages ressemble à ça :
Code:
Game_Action.prototype.makeDamageValue = function(target, critical) {
    var item = this.item();
    var baseValue = this.evalDamageFormula(target);
    var value = baseValue * this.calcElementRate(target);
    if (critical) {
        value = this.applyCritical(value);
    }
    value = this.applyVariance(value, item.damage.variance);
    value = this.applyGuard(value, target);
    value = Math.round(value);
    return value;
};



On peut passer à ce qui m'intéresse en priorité, la fonction qui évalue la formule de dommages qu'on entre dans la BDD
Code:
Game_Action.prototype.evalDamageFormula = function(target) {
    try {
        var item = this.item();
        var a = this.subject();
        var b = target;
        var v = $gameVariables._data;
        var sign = ([3, 4].contains(item.damage.type) ? -1 : 1);
        var value = Math.max(eval(item.damage.formula), 0) * sign;
        if (isNaN(value)) value = 0;
        return value;
    } catch (e) {
        return 0;
    }
};


On va pas aller loin sans les data... Ci-dessous, un extrait du fichier json pour les skills, en l'occurence le skill "Attack"
Code:
{"id":1,
"animationId":-1,
"damage":{"critical":true,"elementId":-1,"formula":"a.atk * 4 - b.def * 2","type":1,"variance":20},
"description":"",
"effects":[{"code":21,"dataId":0,"value1":1,"value2":0}],
"hitType":1,
"iconIndex":76,
"message1":" attacks!","message2":"",
"mpCost":0,
"name":"Attack",
"note":"Skill #1 will be used when you select\nthe Attack command.",
"occasion":1,"repeats":1,
"requiredWtypeId1":0,"requiredWtypeId2":0,
"scope":1,"speed":0,
"stypeId":2,
"successRate":100,
"tpCost":0,"tpGain":10}


Ce qui nous intéresse nous, c'est l'entrée "damage", en particulier sa sous-entrée "formula"
La fonction JS eval permet d'évaluer tout code JS écrit entre les parenthèses.
A priori, si je définis des fonctions auxiliaires au bon endroit, je devrais pouvoir les utiliser dans mon eval.
En fait, j'aimerai beaucoup avoir juste à appeler par exemple fct_atk_phy_cac( dmg ); dans la base de données.


J'éditerai quand j'aurai obtenu ce que je veux

Edit : chose intéressante, si vous ne définissez pas le hit rate de votre perso ou de votre ennemi, par défaut il n'est pas à 100%, il est à 0%...
Me dmeande ce que ça donne pour les autres paramètres.

Le plugin en question (en spoiler parce qu'il est long)
Fichier d'aide compris dedans et traduit en fr (en fait c'est la version anglaise qui n'est pas traduite)

Code:
//=============================================================================
// HL_DamageFormulas.js
//=============================================================================

/*:
 * @plugindesc Attempt to write easily damage formulas.
 * @author Hu Lijin
 *
 * @help This plugin does not provide plugin commands.
 * Attaque magique  au CaC =          a.HL_Matk(dmg)*(1-b.Mdef());
 * Attaque magique  avec portée =     a.HL_Matk(dmg)*(1-b.Mdef2());
 * Attaque magique  longue distance = a.HL_MatkRange(dmg)*(1-b.Mdef());
 * Attaque physique au CaC =          a.HL_Patk(dmg)*(1-b.Pdef());
 * Attaque physique avec portée =     a.HL_Patk(dmg)*(1-b.Pdef2());
 * Attaque physique longue distance = a.HL_PatkRange(dmg)*(1-b.Pdef());
 */

/*:fr
 * @plugindesc Tentative pour écrire les formules de dommage sans se prendre la tête
 * @author Hu Lijin
 *
 * @help Utilisation des fonctions dans les formules
 * Attaque magique  au CaC =          a.HL_Matk(dmg)*(1-b.Mdef());
 * Attaque magique  avec portée =     a.HL_Matk(dmg)*(1-b.Mdef2());
 * Attaque magique  longue distance = a.HL_MatkRange(dmg)*(1-b.Mdef());
 * Attaque physique au CaC =          a.HL_Patk(dmg)*(1-b.Pdef());
 * Attaque physique avec portée =     a.HL_Patk(dmg)*(1-b.Pdef2());
 * Attaque physique longue distance = a.HL_PatkRange(dmg)*(1-b.Pdef());
 */

(function() {

    // Cette aprtie variable sera à régler via un plugin
    var HL_COEFF_RED_ATK = 25;
    var HL_COEFF_RED_DMG = 25;

    /* Formules de combat basées sur ce que j'ai défini :
    * Pour une attaque PHYSIQUE : stats = atk et def
    * Pour une attaque MAGIQUE : stats = mat et mdf
    * En attaque, les attaques à courte portée (CaC et portée) sont pénalisées
    * En défense, les défenses en ligne arrière (luk = 2) sont boostés
    * SAUF si l'attaque est de portée !
    * Pour finir, les TP octroient un bonus aux dégâts
    */
    Game_BattlerBase.prototype.HL_PatkRange = function(dmg) {
        var value = dmg;
        value *= this.atk;
        //value *= this.tp;
        value /= 100;//10000;
        return value;
    };

    Game_BattlerBase.prototype.HL_Patk = function(dmg) {
        var value = this.HL_PatkRange(dmg);
        var temp = this.luk - 1;
        temp *= HL_COEFF_RED_ATK;
        temp = 100 - temp;
        value *= temp;
        value /= 100;
        return value;
    };

    Game_BattlerBase.prototype.HL_MatkRange = function(dmg) {
        var value = dmg;
        value *= this.mat;
        //value *= this.tp;
        value /= 100;//10000;
        return value;
    };

    Game_BattlerBase.prototype.HL_Matk = function(dmg) {
        var value = this.HL_MatkRange(dmg);
        var temp = this.luk - 1;
        temp *= HL_COEFF_RED_ATK;
        temp = 100 - temp;
        value *= temp;
        value /= 100;
        return value;
    };

    Game_BattlerBase.prototype.HL_Pdef = function() {
        var value = this.def;
        var temp = this.luk - 1;
        temp *= HL_COEFF_RED_DMG;
        temp = 100 + temp;
        value *= temp;
        value /= 100;
        value -= 50;
        value /= 50;
        return value;
    };

    Game_BattlerBase.prototype.HL_Pdef2 = function() {
        var value = this.def;
        value -= 50;
        value *= 2;
        return value;
    };

    Game_BattlerBase.prototype.HL_Mdef = function() {
        var value = this.mdf;
        var temp = this.luk - 1;
        temp *= HL_COEFF_RED_DMG;
        temp = 100 + temp;
        value *= temp;
        value /= 100;
        value -= 50;
        value /= 50;
        return value;
    };

    Game_BattlerBase.prototype.HL_Mdef2 = function() {
        var value = this.mdf;
        value -= 50;
        value *= 2;
        return value;
    };


    Game_BattlerBase.prototype.HL_test = function(dmg) { return dmg; };




    Game_Action.prototype.evalDamageFormula = function(target) {
        try {
            var item = this.item();
            var a = this.subject();
            var b = target;
            var v = $gameVariables._data;
            var sign = ([3, 4].contains(item.damage.type) ? -1 : 1);
            var value = Math.max(eval(item.damage.formula), 0) * sign;
            if (isNaN(value)) value = -1;
            return value;
        } catch (e) {
            return -2;
        }
    };

    Game_Action.prototype.makeDamageValue = function(target, critical) {
        var item = this.item();
        var baseValue = this.evalDamageFormula(target);
        var value = baseValue * 1;//this.calcElementRate(target);
        //if (critical) {
            //value = this.applyCritical(value);
        //}
        //value = this.applyVariance(value, item.damage.variance);
        //value = this.applyGuard(value, target);
        value = Math.round(value);
        return value;
    };

})();


C'est juste une base que je vais étoffer au fur et à mesure pour mes formules custom. Premier édit : les 6 formules de base que ej vais utiliser partout sont prêtes.


Dernière édition par HuLijin le Jeu 10 Mar - 17:07 (2016); édité 1 fois
Revenir en haut
Roi of the Suisse
Vétéran


Inscrit le: 27 Juil 2011
Messages: 8 387

MessagePosté le: Jeu 10 Mar - 14:17 (2016)    Sujet du message: La guilde des Génies du Mal (G.M.) recrute ! Répondre en citant

C'est ici le topic GitHub ? Si j'ai un algorithme en COBOL pour éplucher les patates je le mets ici, c'est ça ? :porte
Revenir en haut
Visiter le site web du posteur
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 08:47 (2017)    Sujet du message: La guilde des Génies du Mal (G.M.) recrute !

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    FAMAS Index du Forum -> Section Corvées -> Stand de tir Toutes les heures sont au format GMT + 2 Heures
Aller à la page: <  1, 2, 3, 4, 5, 6, 7, 8  >
Page 5 sur 8

 
Sauter vers:  

Index | creer un forum gratuit | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com