Domaine concerné: Script
Logiciel utilisé: RM XP
Bonjour à tous !
Alors voila, je viens à vous avec une question toute simple mais qui me pose problème, comment fonctionne l'option "se défendre" dans un combat sous RMXP ?
Pour justifier ma question, voici quelques informations sur ce que j’essaie de faire:
J'essaie de rendre possible de s'équiper de deux armes à la fois, l'une de corps à corps gérée de la manière normale, et l'autre de combat à distance (genre pistolet, arc, ect) gérée de manière différente.
En effet, n'utilisant aucun bouclier dans mon jeu, et ces derniers étant équipable en même temps qu'une arme conventionnelle, j'aurai voulu qu'il deviennent ma catégorie arme à distance.
Pour ce fait, j'utilise la valeur def.magique (valeur que je n'utilise pas non plus dans mon jeu) du bouclier comme valeur d'attaque dans un calcul simple du style:
1
2
3
| # Dommage de bouclier !
self.damage = attacker.mdef - self.pdef
|
Ce pendant, j'aimerai que ce calcul des dommages se lances via la commande "se défendre", mais malgré beaucoup de test et bidouillages, je ne trouve pas de quoi dépend cette commande, et je ne sais donc pas où placer mon calcul de dommage pour que celui s'effectue une fois la commande sélectionner, comme "attaquer" ou lors de l'utilisation d'un compétence offensive.
Afin de pouvoir modifier ça un peu comme grâce à ce super tuto http://www.rpg-maker.fr/tutoriels-461-configurer-son-systeme-de-combat-sous-rpg-maker-xp.html
De tout ce que j'ai tenté, le plus plausible me semble être cette emplacement:
1
2
3
4
| # Guard correction
if self.guarding?
self.damage /= 2
end |
Cependant, cela n'a pas l'effet escompté. Si vous pouviez m'éclairer, ça serait sympas.
Je rappels que je n'ai jamais appris le ruby et que je procède par "logique" d'où mon tâtonnement extrême.
Merci d'avance à tous
Edit:
Je viens de me rendre compte que:
1
2
3
4
| # Guard correction
if self.guarding?
self.damage /= 2
end |
Regarde juste si l'ennemie à utilisé "se défendre" pour recalculer les dgt, donc mon idée la plus plausible est une belle bouse ^^'
Edit 2:
Puisque certaines personnes injectent du script à la place de cette ligne,
1
| @help_window.set_text($data_system.words.guard, 1) |
Dans le Scene_Battle 4, ligne 219 (pour rendre des HP par exemple).
J'ai tenté d'y inséré mon calcul de cette manière:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| def attack_effect(attacker)
def skill_effect(user, skill)
# hit detection
hit_result = rand(100)+self.agi<50+attacker.dex
# Augmenter de x l'agilité augmente de x le % d'esquive
# Augmenter de x la dextérité baise de x le % d'esquive
# If hit occurs
if hit_result == true
# Dommage de bouclier !
self.damage = user.mdef - self.pdef
end
|
Mais ça me renvoi à une erreur de syntaxe à la dernière ligne du Scene_Battle 4 qui ne comporte qu'un end, et même sans ça je crois que agi et dex resterai à définir correctement si je dis pas de bêtises.
|