Bienvenue visiteur !
|
Statistiques
Liste des membres
Contact
Mentions légales
563 connectés actuellement
30679041 visiteurs depuis l'ouverture
1338 visiteurs aujourd'hui
Partenaires
Tous nos partenaires
Devenir partenaire
|
| | Domaine concerné: Script
Logiciel utilisé: RPG Maker MV
Alors voila, je cherche a faire un système de forme. Le personnages a le choix entre trois formes, l'une d'entre elle, la forme défensive, fait que les les dégâts subis sont diminués mais a chaque fois que le perso se prend des dégâts, son endurance (le nom que j'ai donné a la barre de TP dans mon jeu) diminue d'une valeur fixe.
Sauf que voila, tout marche correctement mis a part le fait que quand le joueur subis des dégâts, il se passe rien, les TP ne changent pas.
J'utilise le plugin Buff and State Core de Yanfly.
Voila le notetag que j'ai mis dans l'état.
Ce qui est étrange, c'est que j'ai un autre état similaire qui fonctionne. Du coup, je sais plus trop pourquoi ça ne fonctionne pas :
Ça fait un petit bout de temps que je me casse les dents sur ce problème. Du coup me voila !!
Merci d'Avance pour vos réponses !!
|
HuLijin -
posté le 06/09/2017 à 16:39:20 (1004 messages postés)
| Yeoun, mage-archère-louve | Buff ans State de Yanfly
Custom Respond Effect = This effect will run when the battler is selected as a target. This will occur only if the action connects and will occur after damage execution. This effect will run after damage calculation occurs. The ‘value’ variable is equal to the damage dealt to the battler. This is the first effect to run after damage execution has taken place.
Ok, donc tu veux que ton perso perde des TP à chaque fois qu'il se fait toucher. Mais, d'après ton code, uniquement s'il se fait toucher par des dommages physiques qui ne le régénèrent pas. J'ai bon ?
T'es sûr que tu vérifies ta condition this.isPhysical() ?
Pour tester, écris ça dans ton notetag :
if (this.isPhysical()){
console.log("premiere condition verifiee");
if (value>0) {
console.log("seconde condition verifiee");
user.gainTp(-5);
}
}
Appuies sur f8 pour accéder à la console.
Ça t'apporte pas la solution, mais t'y verras plus clair.
|
M.V. |
| | Ha c'est bien ce que je craignait.
Il me met condition vérifiée pour les deux. Le problème doit donc venir du gain de TP en lui même. parce que le gain de TP positifs fonctionne (comme dans mon second exemple) mais apparemment, le gain de TP avec une valeur négative ne fonctionne pas. C'est la conclusion a laquelle j'arrive si mon raisonnement n'est pas mauvais.
Du coup, la vrai question, c'est pas plutôt, comment faire perdre des TP via un appel de script ?
Si quelqu'un connait la solution, je la veux bien. Je peux toujours chercher dans le code de base de RPG Maker, ça va me prendre du temps mais je finirait par la trouver.
|
HuLijin -
posté le 06/09/2017 à 17:04:46 (1004 messages postés)
| Yeoun, mage-archère-louve | Je vais regarder ça.
La focntion doit bien exister quelque part.
Edit : vla la fonction (ce genre de trucs, tu le trouveras dans rpg_objects.js)
1
2
3
4
| Game_Battler.prototype.gainTp = function(value) {
this._result.tpDamage = -value;
this.setTp(this.tp + value);
}; |
Et sa copine :
1
2
3
4
| Game_BattlerBase.prototype.setTp = function(tp) {
this._tp = tp;
this.refresh();
}; |
Et pour finir
1
2
3
4
5
6
7
8
| Game_BattlerBase.prototype.refresh = function() {
this.stateResistSet().forEach(function(stateId) {
this.eraseState(stateId);
}, this);
this._hp = this._hp.clamp(0, this.mhp);
this._mp = this._mp.clamp(0, this.mmp);
this._tp = this._tp.clamp(0, this.maxTp());
}; |
Donc a priori rien qui bloque.
Il n'y aurait pas un script de Yanfly qui vient mettre le boxon là-dedans par hasard ?
Ou alors tu n'appliques pas la fonction au bon user ?
(console.log(user.name());)
|
M.V. |
| | Je me demande si le problème viendrait pas de ce plugin que j'utilise pour modifier le fonctionnement de la barre de TP. Parce que c'est le bon user. C'est vraiment la fonction qui ne fonctionne pas apparemment.
|
HuLijin -
posté le 06/09/2017 à 18:37:03 (1004 messages postés)
| Yeoun, mage-archère-louve | Je te laisse regarder. C'est peut-être lui, peut-être un autre. Mais vu qu'il a des commandes pour bypasser le setTp(), de ce que j'ai compris, c'est possible.
Ou alors j'ai raté quelque chose d'obvious dans le code.
Le plus simple, c'est de créer un nouveau fake projet, y transférer tous tes plugins, refaire le minimum syndical dans la BDD pour pouvoir faire un combat avec ton état custom. Et tu actives dans un premier temps uniqument ton script yanfly (et éventuellement ses dépendances).
Si ça fonctionne comme prévu, c'est que t'as un autre plugin qui vient tout casser. Tu les réactives jusqu'à trouver ton (tes?) fautif.
Si ça fonctionne pas comme prévu, soit c'est dans le plugin de Yanfly ou ses dépendances qu'il se passe quelque chose, soit j'ai définitivement loupé quelque chose dans le code.
À ce stade, je peux plus faire grand chose :/
Bon courage.
|
M.V. |
| | J'ai testé plein de truc ça fonctionnait pas. Finalement, il semble que le plugin dont j'ai parlé n'est pas la cause du problème.
Malgré tout j'ai trouvé une solution. J'ai tout simplement créé un événement commun qui fait perdre des TP a l'acteur que j'ai appelé via le ce script :
$gameTemp.reserveCommonEvent(n);
Comme chaque acteurs a des compétences uniques, ça n'a pas posé de problème.
| Index du forum > Entraide > [RESOLU] [RPG Maker MV] Perte de TP via Script (Résolu)
|
|
|