- KingdommangasMembre
- 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
[résolu]Alerte aux codeur
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.
Donc voilà, il y aurait il une âme charitable qui comprennent mieux le code pour m'aider ? Lien du plugin
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.
Donc voilà, il y aurait il une âme charitable qui comprennent mieux le code pour m'aider ? Lien du plugin
- KingdommangasMembre
- 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
Re: [résolu]Alerte aux codeur
Dim 17 Déc 2017 - 13:42
Mist a trouver
qui fonctionne mais qui donne une réponse en boléan sans préciser si le shard est équipé plus d'une fois.
- 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)
- KingdommangasMembre
- 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
Re: [résolu]Alerte aux codeur
Mar 19 Déc 2017 - 8:08
up
Re: [résolu]Alerte aux codeur
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 ><
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 ><
- KingdommangasMembre
- 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
Re: [résolu]Alerte aux codeur
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.
Re: [résolu]Alerte aux codeur
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.
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.
- KingdommangasMembre
- 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
Re: [résolu]Alerte aux codeur
Ven 22 Déc 2017 - 20:14
Alors les bonus existent en 4 catégories: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?
-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
- SagePandaMembre
- Nombre de messages : 5
Distinction : aucune
Date d'inscription : 24/12/2017
Re: [résolu]Alerte aux codeur
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
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>
- 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);
};
})();
- CantarelleMembre
- Nombre de messages : 28
Age : 36
Distinction : aucune
Date d'inscription : 11/11/2017
Re: [résolu]Alerte aux codeur
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.
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.
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.
- SagePandaMembre
- Nombre de messages : 5
Distinction : aucune
Date d'inscription : 24/12/2017
Re: [résolu]Alerte aux codeur
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
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à.
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à.
- KingdommangasMembre
- 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
Re: [résolu]Alerte aux codeur
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 ?
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.
Je testerai les 2 systèmes demain mat... ce matin mais plus proche de midi.
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.
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.
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.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.
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 :
- 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
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|