Bienvenue visiteur !
|
Désactiver la neige
Statistiques
Liste des membres
Contact
Mentions légales
397 connectés actuellement
30912790 visiteurs depuis l'ouverture
2426 visiteurs aujourd'hui
Partenaires
Tous nos partenaires
Devenir partenaire
|
kingdommangas -
posté le 04/06/2018 à 13:26:12 (409 messages postés)
| Youtubeur/Scenariste | Domaine concerné: Script Logiciel utilisé: MV Yahallo,
Je viens implorer votre aide cher camarade maker ^^
Alors voici le topo:
-Dans mon jeu, j'utilise le plugin Magic Shard de Galv. (Vous pouvez regarder mais vous en aurait pas besoin normalement) pour faire un systeme d'orbe.
-Je m'en sert pour donner des compétences passives a mes personnages.
-Les orbes sont ranger dans les armes de la BBD et sous le type d'arme "Orbe" comme le plugin le veut.
-Parmi les compétences passive, il y a les bonus de stat: CAD
--> PV Max + 10%
--> Att + 10%
Mais j'ai également un bonus de stats + qui réunit les 8 stats de bases.
-J'ai un autre plugin qui m'interdit de m'équiper 2 fois d'un bonus ayant le même ID sachant que j'attribue moi même les ID aux bonus.
Concrètement voici le problème:
-Je ne veux pas que le joueur cumule les bonus stats simples et les bonus stats +
Pour cela j'ai déjà réfléchis à 3 solutions:
-Donner le même ID a tous les Bonus Stat, ainsi pas de cumul, mais le joueur ne pourra s'équiper que d'un bonus stat à la fois et autant je ne veux pas qu'il cumule 2 stats identiques, autant le cumul de différents stats ne me dérange pas.
-Supprimer les bonus Stats +, ca m'ennuierai d'en arriver là
-Interdire de s'équiper de bonus stats simple lorsqu'on est équipé d'un bonus stats + et inversement.
Mon idéal
Le problème c'est que la BBD me donne la possibilité de seller une compétence, un type de compétence ou une partie de l'armure (tete, bras, acessoire, etc...) sans inclure le type d'arme ou d'armure.
Je voudrais donc l'y inclure en code au moyen d'un notetag mais je dois avoué que je n'ai pas la moindre idée de comment m'y prendre.
Pouvez vous m'aider ?
|
Mes jeux: Astyria~Ouroboros~Chaine Youtube: RM Test| Inscription Chaine Youtube |
HuLijin -
posté le 04/06/2018 à 14:31:59 (1004 messages postés)
| Yeoun, mage-archère-louve | Fais voir ton autre plugin, ce sera sans doute plus simple d'altérer celui-là en attribuant plusieurs "ID" à un seul objet.
Accessoirement, chez moi je peux sceller un type d'équipement justement (ou un slot en l'occurence, la traduction en anglais est zarb). Qu'est ce que t'appelles type d'équipement ? Un sous-groupe des types que tu peux définir avec tes ID ?
Ça peut se faire aussi avec les notetags mais je m'y suis pas spécialement intéressée encore. Il y a des tutos qui trainent pour apprendre comme celui-ci. Le plus chiant, c'est de comprendre les expressions régulières, ensuite ça va tout seul. Pareil, il y a des sites sur le net pour s'aider à créer des expressions régulières en JS.
Tu peux faire quelque chose de beaucoup plus simple aussi avec des notetabs simplifiés (du style <nom:valeur>).
Pour vérifier qu'un objet (appelé object ici) a bien ce tag :
1
| object.meta.nom === 'valeur' |
Pour accéder à la valeur :
(Faut bien sûr changer objet par ce que tu veux manipuler, ça peut être plein de choses en fonction de ce que tu veux faire. Je peux pas trop te dire ce que tu dois écrire pour remplacer object dans le code. Edit : t'as un exemple plus bas, item.data.shard par exemple.)
Ensuite, pour la partie de code à modifier pour les équipements pour tenir compte de ton notetag, je peux te dire où elle se trouve dans le code de base, mais je suppose fortement que ton 2eme plugin la modifie déjà. Du coup ça ne servirait pas à grand chose.
|
M.V. |
kingdommangas -
posté le 04/06/2018 à 15:20:57 (409 messages postés)
| Youtubeur/Scenariste | Citation: Fais voir ton autre plugin, ce sera sans doute plus simple d'altérer celui-là en attribuant plusieurs "ID" à un seul objet. |
Ca, je le ferais ce soir, je suis au taf oui je sait c'est pas bien
Citation: Qu'est ce que t'appelles type d'équipement ? |
Admettons tu crée deux armes:
-épée a une main
-épée a deux mains
et deux classes:
-paladin
-soldat
Dans les classes tu indique que le soldat peut s'équiper de l'arme a une main alors que le paladin peu s'équiper des deux.
C'est cela le type d'équipement
Ce que l'on peu sceller c'est le slot tête, bras, acessoire, etc...
sauf que le plugin de galv crée une page spéciale pour s'équiper des orbes, ce n'est pas dépendant du système de base.
Pour le notetag c'est parce que le plugin de galv en utilise de base, pour donner un ID aux armes concerné.
Il y a aussi un block note associer aux fichier data, ca peu être utile aussi.
Celui de galv sert a associer 2 armes pour obtenir une compétence Y mais je ne l'utilise pas, en tout cas pas en l'état.
Pour le reste j'y répondrais ce soir car c'est la fin de ma pause ( TT ~ TT )
|
Mes jeux: Astyria~Ouroboros~Chaine Youtube: RM Test| Inscription Chaine Youtube |
HuLijin -
posté le 04/06/2018 à 15:38:19 (1004 messages postés)
| Yeoun, mage-archère-louve | Ok, ce que tu appelles type d'équipement, c'est ce qui s'appelle type d'arme et type d'armure dans la version anglaise. Y a une autre catégorie qui s'appelle réellement type d'équipement et qui correspond effectivement aux slots. La VF doit être moins pourrie.
En fait au fin fond de ton fichier d'aide pour le plugin de Galv, t'as des indications sur les fonctions à utiliser.
1
2
3
4
5
6
7
8
| * $gameActors.actor(x).hasShard(id,type) - x is the actor's ID
* - type can be 'weapon' or 'armor'
* - (including quotes on those)
* - id is the equip's databse ID
*
* $gameActors.actor(x).hasShard(id) - x is the actor's ID
* - id is the Shard ID (specified in the
* - external text file) |
Faut que tu montres ton second plugin pour voir comment il édite les fonctions Game_BattlerBase.prototype.canEquip(item) ou Game_BattlerBase.prototype.canEquipWeapon(item) et ajouter une condition du style !(this.hasShard(ID1) && item.data.shard === ID2) avec ID1 et ID2 les indices qui ne peuvent pas coexister.
A priori t'as 8 conditions à tester si j'ai tout suivi. (x2 si c'est le cas inverse qui se présente).
À noter que le plugin de Galv modifie déjà une première fois Game_BattlerBase.prototype.canEquip(item).
Tes armes ont combien d'ID finalement ? Un pour chaque plugin ou ton deuxième plugin est une extension de celui de Galv et reprend l'ID du tag shard ?
|
M.V. |
kingdommangas -
posté le 04/06/2018 à 20:17:03 (409 messages postés)
| Youtubeur/Scenariste | Le second code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| var SagePanda = SagePanda || {};
SagePanda.MS = SagePanda.MS || {};
(function() {
// Can't equip same shard id
SagePanda.MS.Game_BattlerBase_canShardEquip = Game_BattlerBase.prototype.canShardEquip;
Game_BattlerBase.prototype.canShardEquip = function(item) {
if(!item) return false;
if(this.hasShard(item.isShard)) return false;
return SagePanda.MS.Game_BattlerBase_canShardEquip.call(this,item);
};
})(); |
Citation: Tes armes ont combien d'ID finalement ? Un pour chaque plugin ou ton deuxième plugin est une extension de celui de Galv et reprend l'ID du tag shard ? |
Le second plugin réutilise l'ID du 1er
Citation: -- To check if anyone in the party has the shard:
$gameParty.hasShard(id,type)
$gameParty.hasShard(id) |
Ca donne effectivement une partie de la solution, avec l'appel de plugin
1
| MSHARDS CHANGE ACTORID X S // Change an actor's shard in a certain slot |
|
Mes jeux: Astyria~Ouroboros~Chaine Youtube: RM Test| Inscription Chaine Youtube |
HuLijin -
posté le 04/06/2018 à 21:58:04 (1004 messages postés)
| Yeoun, mage-archère-louve | Bon ben du coup t'as tout ce qu'il te faut pour modifier ta fonction là.
Faut que je re regarde ce que renvoie item.isShard (a priori une fonction qui renvoie item.data.shard). Suffit ensuite de rajouter la condition énoncée plus haut, sous une forme plus élégante, avant le return, et ça devrait être suffisant.
Essaie un peu de voir comment faire de ton coté et si vraiment tu trouves pas, je te proposerai un truc.
(si dernier cas, je veux bien que tu me files les fichiers de ta base de données histoire que je puisse tester sans avoir à recréer moi-même des orbes)
L'appel de plugin a rien à voir là-dedans.
|
M.V. |
kingdommangas -
posté le 05/06/2018 à 05:52:02 (409 messages postés)
| Youtubeur/Scenariste |
J'ai pas la possibilité d'entrée du code ou un event commun dans une arme
|
Mes jeux: Astyria~Ouroboros~Chaine Youtube: RM Test| Inscription Chaine Youtube |
HuLijin -
posté le 05/06/2018 à 10:36:27 (1004 messages postés)
| Yeoun, mage-archère-louve | Non, effectivement. Si tu es toujours sur l'idée d'altérer les notetags, oublie ça, c'est la méthode la plus longue.
Modifie plutôt le plugin de SagePanda. Son plugin est lui-même une altération de celui de Galv. En faisant comme ça, tu n'as pas besoin de toucher à ta base de données.
(.isShard renvoie 0 si ton objet en base de données n'a pas d'ID et renvoie l'ID sinon. Tu peux le considérer comme une variable supplémentaire attachée aux armes et armures.)
Au niveau des crédits, tu précises quelque part que le plugin de Sage Panda n'est pas la version originelle pour quand tu déploieras ton jeu, et tu mets un lien vers le plugin originel, et c'est tout bon.
Edit : j'ai testé directement dans la démo de Galv, et ce bout de code fonctionne.
Je en sais pas si chez toi ça fonctionnera, si t'as d'autres plugins qui viennent rajouter leur grain de sel dans les fonctions modifiées.
Je te le laisse en spoiler, histoire que tu puisses chercher comment faire par toi-même sans être influencée. Jettes-y un oeil en dernier recours si t'es vraiment paumée.
Spoiler (cliquez pour afficher) Fonction à modifier dans le plugin de Sage Panda (à partir de la ligne 8).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| Game_BattlerBase.prototype.canShardEquip = function(item) {
if(!item) return false;
if(this.hasShard(item.isShard)) return false;
/* Add some other cases where an actor can't equip shards
Case one : the actor uses a shard that conflicts with several others,
I call it the almightyShard.
Case two : the actor uses one of the shards that conflict with the almighty one.*/
// Now, define your almightyShard by its ID
var almightyShardId = 1;
// And define your conflicting shards in an array of IDs
var conflictingIds = [3,4];
// Now tests for case one
if (this.hasShard(almightyShardId)) {
for (var i = 0; i < conflictingIds.length; i++) {
if (item.isShard === conflictingIds[i]) {return false;}
}
}
// And tests for case two
if (item.isShard === almightyShardId) {
for (var i = 0; i < conflictingIds.length; i++) {
if (this.hasShard(conflictingIds[i])) {return false;}
}
}
return SagePanda.MS.Game_BattlerBase_canShardEquip.call(this,item);
}; |
Désolée pour mon anglais pourri. Il y a deux variables que tu dois modifier dans le code, almightyShardId et conflictingIds. Si tu es perdue, envoie-moi un message sur discord ou attends que je repasse par ici.
Si t'es à l'aise, c'est l'occasion d'apprendre à créer tes propres paramètres de plugin pour modifier ces deux variables sans devoir chaque fois modifier le code ;)
Edit 2 : tel que j'ai compris ta façon d'attribuer tes ID sans voir ta base de données, chaque orbe ayant le bonus stat+ a la même ID. Mon bout de code est écrit avec ça en tête. Si tu as plusieurs ID différents pour chaque orbe ayant le bonus stat+ (ce qui serait étrange parce que tu pourrais cumuler des bonus stat+ entre eux), il faudra adapter un peu le code sous spoiler.
|
M.V. |
kingdommangas -
posté le 05/06/2018 à 12:30:20 (409 messages postés)
| Youtubeur/Scenariste | Thx je testerai ca ce soir ^^
Citation: chaque orbe ayant le bonus stat+ a la même ID. Mon bout de code est écrit avec ça en tête. |
exactement chaque orbe (autre que les stats) a un ID unique.
Pour les orbes stats il existe:
pv max: +10% : ID 50
pv max: +20% : ID 50
pv max: +30% : ID 50
pm max: +10% : ID 51
pm max: +20% : ID 51
pm max: +30% : ID 51
[...]
Stats+: + 10% : ID 59
Stats+: + 20% : ID 59
Stats+: + 30% : ID 59
Et comme il y a 8 slots d'équipement max, je préfère éviter que le joueur se fasse un 30*8= pv max + 240%
EDIT:
Bizarre ca ne marche pas du tout chez moi, pire le plugin de sage panda ne fonctionne plus, pourtant tu n'y a pas toucher c'est vraiment étrange.
Spoiler (cliquez pour afficher)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
| var SagePanda = SagePanda || {};
SagePanda.MS = SagePanda.MS || {};
(function() {
// Can't equip same shard id
SagePanda.MS.Game_BattlerBase_canShardEquip = Game_BattlerBase.prototype.canShardEquip;
/*******************************************************************************************
Game_BattlerBase.prototype.canShardEquip = function(item) {
if(!item) return false;
if(this.hasShard(item.isShard)) return false;
return SagePanda.MS.Game_BattlerBase_canShardEquip.call(this,item);
};
})();
*********************************************************************************************/
Game_BattlerBase.prototype.canShardEquip = function (item) {
if (!item) return false;
if (this.hasShard(item.isShard)) return false;
/* Add some other cases where an actor can't equip shards
Case one : the actor uses a shard that conflicts with several others,
I call it the almightyShard.
Case two : the actor uses one of the shards that conflict with the almighty one.*/
// Now, define your almightyShard by its ID
var almightyShardId = 63;
// And define your conflicting shards in an array of IDs
var conflictingIds = [55, 56, 57, 58, 59, 60, 61, 62];
// Now tests for case one
if (this.hasShard(almightyShardId)) {
for (var i = 0; i < conflictingIds.length; i++) {
if (item.isShard === conflictingIds[i]) { return false; }
}
}
// And tests for case two
if (item.isShard === almightyShardId) {
for (var i = 0; i < conflictingIds.length; i++) {
if (this.hasShard(conflictingIds[i])) { return false; }
}
}
return SagePanda.MS.Game_BattlerBase_canShardEquip.call(this, item);
}; |
Question autre plugin j'utilise bien Equip Core de Yanfly mais je ne pense pas que ca entre en conflit
|
Mes jeux: Astyria~Ouroboros~Chaine Youtube: RM Test| Inscription Chaine Youtube |
Index du forum > Entraide > [MV] Codeur - Seller un équipement
|
|
|