Partagez
Aller en bas
avatar
Kingdommangas
Membre

Nombre de messages : 1153
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

[résolu]Alerte aux codeur

le Sam 16 Déc 2017 - 22:55
Yahallo

Je vous avez manqué ?

Je viens quémander votre aide pour un pitit problème. J'utilise actuellement le plugin de Galv Magic Shard pour reproduire en quelques sorte le système de Magickolithe de FF9.

Ce plugin permet de recycler les armes/armures pour obtenir divers effets.

Mon problème est que je donne des bonus de stats et que le joueur peu s'équiper de 6 bonus, dans le pire des cas on obtient des caractéristiques complètement cracké et donc j'ai prévu un système punitif en cas d'abus.

Je n'ai rien contre l'accumulation des bonus, mais je refuse que le joueur puisse accumuler le même bonus. Mais pour que mon système punitif soit opérationnel, il manque la partie la plus importante, la détection de 2 bonus identiques sur le même personnage.

Je pense que ma réponse doit etre dans le plugin car il doit bien stocké ce qui est équipé et ce qui ne l'est pas mais pas moyen de trouver la partie du code nécessaire à ma vérification.
dizzy

Donc voilà, il y aurait il une âme charitable qui comprennent mieux le code pour m'aider ? Lien du plugin


Dernière édition par Kingdommangas le Mer 27 Déc 2017 - 17:37, édité 2 fois
avatar
Kingdommangas
Membre

Nombre de messages : 1153
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

Re: [résolu]Alerte aux codeur

le Dim 17 Déc 2017 - 13:42
Mist a trouver
Code:
$gameActors.actor(x).hasShard(id)

qui fonctionne mais qui donne une réponse en boléan sans préciser si le shard est équipé plus d'une fois.


Code:
Original
$gameActors.actor(actorId)._shardSlots(ID_1) === $gameActors.actor(actorId)._shardSlots(ID_2)

ID
$gameActors.actor(2)._shardSlots(1) === $gameActors.actor(2)._shardSlots(2)
Celui la me donne le message d'erreur suivant: Number is not a function
avatar
Kingdommangas
Membre

Nombre de messages : 1153
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

Re: [résolu]Alerte aux codeur

le Mar 19 Déc 2017 - 8:08
up
avatar
purplehills
Membre

Nombre de messages : 354
Localisation : suisse
Distinction : La femme qui aime la 3D.
Date d'inscription : 09/05/2015
https://www.youtube.com/channel/UC-PZhXM9qux4l6zvZgInmvQ

Re: [résolu]Alerte aux codeur

le Mar 19 Déc 2017 - 17:47
ce qu'il te faut, c'est une fonction qui te retourne le nombre de fois que le shard est équipé.

du genre, en changeant un peu la méthode

Game_Actor.prototype.getShardOccurence = function(id, type) {
       this._tempShardItem = null;
       var compteurdeshard=0;
       if (!type) {
                // Check for ID of shard
                for (var child in this._shards) {
                         item = this._shards[child] ? this._shards[child].object() : null;
                         this._tempShardItem = item;
                         if (item && item.isShard == id) {
 compteurdeshard++;//on boucle et on incrémente
 }
                };
       }
else if (type === 'weapon') {
                // Check if has weapon shard
                for (var child in this._shards) {
                         item = this._shards[child] ? this._shards[child].object() : null;
                         this._tempShardItem = item;
                         if (item && DataManager.isWeapon(item) && item.id == id) {
 compteurdeshard++;//on boucle et on incrémente
 }
                };
       }
else if (type === 'armor') {
                // Check if has weapon shard
                for (var child in this._shards) {
                         item = this._shards[child] ? this._shards[child].object() : null;
                         this._tempShardItem = item;
                         if (item && DataManager.isArmor(item) && item.id == id) {
 compteurdeshard++;//on boucle et on incrémente
 }
                };
       };
       return compteurdeshard;
};

là, la méthode te renverra le nombre d'occurence et plus un booléan.

Il faudrait appeler cette méthode et n'insérer que si et seulement si

$gameActors.actor(x).getShardOccurence (id)==0.

Je n'ai pas testé mais je pense que c'est dans cette idée...

PS: je regarde si j'arrive à te configurer ça, faut que je teste sur la démo, car je connais pas les shards ><
avatar
Kingdommangas
Membre

Nombre de messages : 1153
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

Re: [résolu]Alerte aux codeur

le Mar 19 Déc 2017 - 21:45
1er réponse positive sur 3 forums XD je commencer à désespéré.

Sinon, je ne sais pas trop comment tester, j'ai pas voulu toucher aux plugin alors j'en ai créer un en dessous avec ta fonction.

Mais je ne sais pas si c'est moi au le code mais le jeu à freeze, pas de msg d'erreur et pas moyens de quitter le logiciel, j'ai due redémarrer.
avatar
purplehills
Membre

Nombre de messages : 354
Localisation : suisse
Distinction : La femme qui aime la 3D.
Date d'inscription : 09/05/2015
https://www.youtube.com/channel/UC-PZhXM9qux4l6zvZgInmvQ

Re: [résolu]Alerte aux codeur

le Ven 22 Déc 2017 - 19:56
Erf, c'est peut être parti en boucle récursive, j'avais pas testé ^^

Après lecture du code, ce que tu veux réaliser est un peu plus complexe que cela.
Tu pourrais avoir plusieurs shard différents qui ont le même type de bonus,c'est correct? mais des noms différents?

Du coup, il faudrait parcourir la liste des shards équipés, et surtout, de leur bonus respectifs, et ne les proposer que si le bonus n'est pas déjà équipé (même via un autre shard). Du coup, il ne faut plus se pencher du côté des ID/NAME, mais plutôt de leur propriétés de bonus.

Ce n'est pas irréalisable, mais c'est plus complexe. Sutrout qu'il utilise apparemment la méthode mère d'ajout d'équipement, et que du coup, il faudrait surcharger cette méthode pour pouvoir ajouter le test sus-mentionné, ou alors le faire en amont de l'appel à cette méthode. Après faut encore décider, de griser la shard ou alors l'envoyer bouler s'il essaye de l'ajouter.

Je peux regarder pendant les vacances (fin next week), mais je ne te promets pas d'y arriver. Je ne maîtrise pas trop l'API de MV, mais je vois à peu près l'algorithme qu'il faut faire.
avatar
Kingdommangas
Membre

Nombre de messages : 1153
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

Re: [résolu]Alerte aux codeur

le Ven 22 Déc 2017 - 20:14
Purp a écrit:Tu pourrais avoir plusieurs shard différents qui ont le même type de bonus,c'est correct? mais des noms différents?
Alors les bonus existent en 4 catégories:
-ceux qui immunise contre une altérations d'état X
-ceux qui donne un bonus d'attaque contre les ennemies de X éléments
-une augmentation des stats du personnages
-Un effet plus particulier comme butin/XP*2 mais ce sont des shards très rare

Le problème viens que pour le bonus stats entre autre, il existe PVmax+10% et PVmax+20%, je veux bien que le joueur augmente ses stats de 30% mais pas plus. De même pour le XP*2 pas plus d'1 sinon ca deviens vite cracké.

Apres pour les ID, il faut les noté en notetag donc je peux donner 2 ID différents à 2 bonus augmentant la même stats mais avec des taux différents.
image:

De plus je n'utilise que des type "arme", je ne voulait pas diviser l'emplacement de ces items dans l'inventaire du jeu qui trie par "items/ arme/ armure"

Si ca peut te simplifier la tache
avatar
SagePanda
Membre

Nombre de messages : 5
Distinction : aucune
Date d'inscription : 24/12/2017

Re: [résolu]Alerte aux codeur

le Mar 26 Déc 2017 - 19:51
Je t'ai fait un plugin correctif qui empêche un shard avec le même d'id d'être équipé.
Je ne sais pas si ça pourrait correspondre à ta demande.

En gros ça te permet si tu crées deux Shards genre "ATQ+10" et "ATQ+20" avec tous les deux
Code:
<shard:1>
De pouvoir en équiper qu'un seul des deux et donc également de ne pas pouvoir équiper 2x ATQ+10.

Code:
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);
};

})();
avatar
Cantarelle
Membre

Nombre de messages : 25
Age : 30
Distinction : aucune
Date d'inscription : 11/11/2017

Re: [résolu]Alerte aux codeur

le Mar 26 Déc 2017 - 21:06
Histoire de ramener ma fraise, ce qu'elle (Kingdommangas) demande n'est pas l'impossibilité d'équiper le même shard, mais qu'avec le même shard équipé (2 ou + fois), ça donne des malus.

Kingdo a écrit:e n'ai rien contre l'accumulation des bonus, mais je refuse que le joueur puisse accumuler le même bonus. Mais pour que mon système punitif soit opérationnel, il manque la partie la plus importante, la détection de 2 bonus identiques sur le même personnage.

Après, je n'ai ni MV et je hais au plus haut point javascript. Même si l'idée de ne pas cumuler les même shards est une "bonne" idée, ce n'est pas ce qui est demandé ici.
avatar
SagePanda
Membre

Nombre de messages : 5
Distinction : aucune
Date d'inscription : 24/12/2017

Re: [résolu]Alerte aux codeur

le Mar 26 Déc 2017 - 21:37
Ah j'avais pas compris.

Effectivement il faut rajouter une fonction qui permet de compter le nombre de shard comme a détaillé purplehills

Code:

var SagePanda = SagePanda || {};
SagePanda.MS = SagePanda.MS || {};

(function() {

 Game_Actor.prototype.getShardCount = function(id, type) {
 this._tempShardItem = null;
 var count = 0;
 if (!type) {
 // Check for ID of shard
 for (var child in this._shards) {
 item = this._shards[child] ? this._shards[child].object() : null;
 this._tempShardItem = item;
 if (item && item.isShard == id) {
 count++;
 }
 };
 } else if (type === 'weapon') {
 // Check if has weapon shard
 for (var child in this._shards) {
 item = this._shards[child] ? this._shards[child].object() : null;
 this._tempShardItem = item;
 if (item && DataManager.isWeapon(item) && item.id == id) {
 count++;
 }
 };
 } else if (type === 'armor') {
 // Check if has weapon shard
 for (var child in this._shards) {
 item = this._shards[child] ? this._shards[child].object() : null;
 this._tempShardItem = item;
 if (item && DataManager.isArmor(item) && item.id == id) {
 count++;
 }
 };
 };
 return count;
 };
 
 
 // Get stats from equipped shards
 SagePanda.MS.Game_Actor_paramPlus = Galv.MS.Game_Actor_paramPlus;
 Game_Actor.prototype.paramPlus = function(paramId) {
 var value = SagePanda.MS.Game_Actor_paramPlus.call(this,paramId);

 var shards = this._shards;
 for (var slot in shards) {
 var item = shards[slot].object();
 if (item) {
 value += item.params[paramId] / this.getShardCount(item.isShard);
 };
 };
 return value;
 };

})();

J'ai fait un truc vite fait en gros ça permet de diviser le bonus stat des shards par le nombre de shard équipés du même id.
Ex:
Avec des objets ayant le meme shard:id :
Avec 1 ATK+10 j'ai ATK+10.
Avec 2 ATK+10 j'ai un bonus de 10.
Avec un 1 ATK+10 et un ATK+20 j'ai un bonus de +15 (et pas de +35 du coup)

Donc après tu as qu'à adapter en fonction de ce que tu veux faire mais l'idée est là.
avatar
Kingdommangas
Membre

Nombre de messages : 1153
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

Re: [résolu]Alerte aux codeur

le Mer 27 Déc 2017 - 0:42
Ouah désoler je viens d'émerger XD
Je jouais à Stradew valley et je suis un peu paumé, en quelle saison sommes nous ?


CantaHistoire de ramener ma fraise, ce qu'elle (Kingdommangas) demande n'est pas l'impossibilité d'équiper le même shard, mais qu'avec le même shard équipé (2 ou + fois), ça donne des malus.
 

Oui et non, en fait je ne surtout pas que le joueur cumule le même bonus, j'ai penser à un système de malus car je suis un peu sadique sur les bord je l'avoue.




Canta a écrit:
@Kingdommangas a écrit:n'ai rien contre l'accumulation des bonus, mais je refuse que le joueur puisse accumuler le même bonus. Mais pour que mon système punitif soit opérationnel, il manque la partie la plus importante, la détection de 2 bonus identiques sur le même personnage.
Bon il est vrai que je ne parle que de malus mais... mais... mais... c'est tellement drôle d'imaginer le joueur avec un bon gros malus made in Kingdo.



Je testerai les 2 systèmes demain mat... ce matin mais plus proche de midi.



-------------------------------------------


Alors j'ai tester les 2, le premiers fonctionne parfaitement et le second non.
Mon perso à 450PV et avec deux bonus identiques ou ou différents, le cumul n'est pas divisé par deux.


Cela dit après une bonne nuit de sommeil je peux clarifier ma demande. 


Je voulais éviter de modifier au plugin donc j'ai pensé à un code qui vérifierai si "l'infraction" a été commise en sortant du menu. 
Je pensais que ce serais plus simple de vérifier l'info tous bêtement.


Alerte Sadimse Twisted Evil :

J'aurai utiliser cette vérification pour calculer le pourcentage dont le joueur à abuser pour le mettre en négatif.
Puis comme le plugin le permet j'aurai lock les shards concernés pour qu'il ne puissent pas les enlever.


Bonus:
Pis soit j'aurais jouer à la loterie pour qu'un bonus du joueur disparaissent, soit j'aurais fait disparaitre les bonus dont le joueur a abuser je n'ai pas encore décider

Ce qui amènera le joueur en ville pour ôter et déverrouiller les shards moyennant finance évidemment(Comme une arme maudite)
Alors oui c'est sévère je l'admet mais bon, je ne m'en cache pas je suis sadique et pis plus que tout On ne triche pas dans mon jeu! 



Mais bon, empêcher le joueur de commettre l'infraction en amont me va aussi   donc je clos ce sujet et je remercie les makers qui ont répondus à ma demande.


Miki beaucoup Purplehills, SagePanda et Cantarelle
Contenu sponsorisé

Re: [résolu]Alerte aux codeur

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