Day.png);">
Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker

RM 95
RM 2000/2003
RM XP
RM VX/VX Ace
RM MV/MZ

Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

Sorties: Star Trek: Glorious Wolf - (...) / Sorties: Dread Mac Farlane - episode 3 / News: Plein d'images cools créées par (...) / Sorties: Star Trek: Glorious Wolf - (...) / Jeux: Final Fantasy 2.0 / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

323 connectés actuellement

29190905 visiteurs
depuis l'ouverture

5956 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

Alex d'Or

ConsoleFun

Le Comptoir Du clickeur

Tous nos partenaires

Devenir
partenaire



forums

Index du forum > Entraide > [RESOLU] [RM XP ] Action Se Défendre


Sou - posté le 09/01/2016 à 19:44:02 (396 messages postés)

❤ 0

On a jamais assez de munitions

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:

Portion de code : Tout sélectionner

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:

Portion de code : Tout sélectionner

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:

Portion de code : Tout sélectionner

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,

Portion de code : Tout sélectionner

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:

Portion de code : Tout sélectionner

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.

Je suis Sou et c'est tout.


zeus81 - posté le 09/01/2016 à 22:34:26 (11071 messages postés)

❤ 0

Le choix de l'action se fait ligne 140 de Scene_Battle 3 :

Portion de code : Tout sélectionner

1
2
3
4
5
        # Set action
        @active_battler.current_action.kind = 0
        @active_battler.current_action.basic = 1
        # Go to command input for next actor
        phase3_next_actor


Si par exemple tu veux faire que ça utilise une compétence à la place, tu peux modifier ça comme ça :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
        skill = $data_skills[69]
        @active_battler.current_action.forcing = true
        @active_battler.current_action.kind = 1
        @active_battler.current_action.skill_id = skill.id
        if skill.scope == 1
          start_enemy_select
        elsif skill.scope == 3 or skill.scope == 5
          start_actor_select
        else
          phase3_next_actor
        end




Sou - posté le 09/01/2016 à 22:59:33 (396 messages postés)

❤ 0

On a jamais assez de munitions

Citation:

Le choix de l'action se fait ligne 140 de Scene_Battle 3


Merci pour cette première pièce du puzzle ^^

Citation:

Si par exemple tu veux faire que ça utilise une compétence



A vrai dire, j'ai déjà trouvé un système qui met en relation les objets et les compétences. Mais cela fait qu'il faut utiliser l'objet et non pas l'équiper, ça fait gérer des événement communs et faire des bidouillage à la sortie des magasins, du coup j'aimerai trouver autre chose.
C'est pour cela que je cherche à lancer un script qui correspond à une attaque d'arme conventionnel (en passant par les bouclier qui eux sont équipables), du type:

- Jet de touche

- Calcul des dgt

- Application de dgt.

D’où ma formule:

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
 
# hit detection (merci à 7163D pour ce calcul au poil)
 
      hit_result = rand(100)+self.agi<50+attacker.dex 
 
# If hit occurs
    if hit_result == true
      # Dommage de bouclier ! (maintenant arme à distance)
      self.damage = user.mdef - self.pdef
    end



En tout cas j'ai une nouvelle piste pour bidouiller, merci beaucoup :)


Final édit:



Bon, après moult essais en tous genre, je pense qu'y a pas à tortiller, la solution ce serait ce code:

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
when 2  # (anciennement guard)
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Set action
        @active_battler.current_action.kind = 0
        @active_battler.current_action.basic = 1 # Comme pour "Attaquer mais avec un 1 au lieu du 0
        # Start enemy selection
        start_enemy_select



Puis créer la fonction

Portion de code : Tout sélectionner

1
2
 @active_battler.current_action.basic = 1  
# Car j'ai l'impression que seul le 0 existe 



Dont la définition serait proche de ça:

Portion de code : Tout sélectionner

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
46
 
 
#/////////////////////Partie du code modifiée par rapport à l'option "Attaquer" ////////////////
     def xxxxxxxxxxx (attacker) # faut surement mettre quelque chose à la place des xxxxxxxx
    
    self.critical = false # ça, ça ne change pas
    
    hit_result = rand(100) + self.agi < 50 + attacker.int # on prend l'intelligence au lieu de la dextérité pour ce jet
 
    if hit_result == true # ça, ça ne change pas
      
    self.damage = attacker.mdef - self.pdef 
     # Nouvelle formule de dégâts: armure magique de l'attaquant (car astuce pour taper avec le bouclier), moins l'armure physique du défenseur
      
#//////////////////////// Cette partie du code resterai la même que celle de l'option "Attaquer" /////////
     # Element correction
      self.damage *= elements_correct(attacker.element_set)
      self.damage /= 100
      # If damage value is strictly positive
      if self.damage > 0
        # Critical correction
        if rand(100) < 4 # 4 = 5% /////////////
             self.damage *= 3
             self.critical = true
        end
      end
      
      # State Removed by Shock
      remove_states_shock
      # Substract damage from HP
      self.hp -= self.damage
      
      # State change
      @state_changed = false
      states_plus(attacker.plus_state_set)
      states_minus(attacker.minus_state_set)
    # When missing
    else
      # Set damage to "Miss"
      self.damage = "Raté"
      # Clear critical flag
      self.critical = false
    end
    # End Method
    return true
  end  



Et le tour serait joué (du moins c'est les conclusions que je tire de deux jours de mal de tête).

Mais ça j'ai toujours pas trouvé comment créer:

Portion de code : Tout sélectionner

1
@active_battler.current_action.basic = 1


Et le définir proprement.




Edit: Bah c'est bon j'ai trouvé la solution ! Par contre j'ai tellement bidouillé que je ne saurait pas vous mettre une version au propre ici. Du coup, a moins que l'un de vous veuille absolument savoir, là je ferait l'effort de tenter d'expliquer les manip', je passe le post en résolu sans plus d'explications.

Je suis Sou et c'est tout.

Index du forum > Entraide > [RESOLU] [RM XP ] Action Se Défendre

repondre up

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe - Mentions légales

Plan du site

Communauté: Accueil | Forum | Chat | Commentaires | News | Flash-news | Screen de la semaine | Sorties | Tests | Gaming-Live | Interviews | Galerie | OST | Blogs | Recherche
Apprendre: Visite guidée | RPG Maker 95 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker MV | Tutoriels | Guides | Making-of
Télécharger: Programmes | Scripts/Plugins | Ressources graphiques / sonores | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Au hasard | Notre sélection | Sélection des membres | Tous les jeux | Jeux complets | Le cimetière | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Proposer
Ressources RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
Ressources RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
Ressources RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
Ressources RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis
Archives: Palmarès | L'Annuaire | Livre d'or | Le Wiki | Divers