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

Tutos: Godot : Premier Contact -Partie (...) / Tutos: Godot : Premier Contact -Partie (...) / Making-of: Ma première game jam classée / Jeux: Oracle of Tao / Jeux: Mystic Slayer [Value+!] / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

92 connectés actuellement

11002740 visiteurs
depuis l'ouverture

632 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Hellsoft

Planète Glutko

Tashiroworld

Zarok

RPG Maker VX

Tous nos partenaires

Devenir
partenaire



forums

Index du forum > Entraide > [RESOLU] [Rpg Maker XP] 2 Mini questions sur la modification du script équipement et combat


Sou - posté le 30/01/2016 à 10:35:33 (394 messages postés)

❤ 0

On a jamais assez de munitions

Domaine concerné: Script
Logiciel utilisé: Rpg Maker XP
CE POST A ÉTAIT DÉPLACE DE LA SECTION QUESTION IDIOTES SUR LES SCRIPT, CAR IL DEVENAIT UN PEU TROP GROS A MON GOUT.

Bonjour (ou bonsoir) à tous !

Je viens vers vous avec deux petites questions que je n'arrive pas à résoudre par moi même.

Question 1 :
Après avoir modifié la fonction "se défendre", cette dernière permet maintenant la sélection d'un ennemis. Elle fonctionne comme la fonction "attaquer", cependant, lorsque j'appuie sur Echap lors de la sélection de ennemi, le curseur s'en va mais le retour sur la sélection d'une action ne se fait pas, forçant ainsi un CTRL ALT SUPP.
Ma question est donc la suivante, quel ligne de script permet le retour arrière en combat, et où se trouve-t-elle?

Question 2 :
Après avoir mis au point un événement commun qui permet de récupérer les MP excédentaires lors d'un changement de statut entrainant une modification de MP Max (plus d'infos ici https://www.rpg-maker.fr/index.php?page=forum&id=25502), je me heurte au problème suivant:

L'événement ne fonctionne qu'une fois l'inventaire fermé, il faut ensuite le ré-ouvrir pour réattribuer des MP via des objets +1 MP. Je cherche à outre passer cette condition en modifiant le script d'inventaire de façon à ouvrir et fermer l'inventaire après avoir équipé un bouclier (Item concerné par ma récupération de MP).

Je pense que le bout de script nécessaire est celui-ci:

Portion de code : Tout sélectionner

1
2
3
 
$scene = Scene_Map.new
$scene = Scene_Equip.new (1)



Cependant, après plusieurs essaie je n'ai toujours pas réussi à faire ce que je souhaite.

Une idée?

Merci d'avance comme toujours.

EDIT:



Après de nouvelles recherches, je pense que ceci:

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
 # * Frame Update (when right window is active)
  #--------------------------------------------------------------------------
  def update_right
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Switch to menu screen
      $scene = Scene_Menu.new(2)
      
      return
    end



Serait un bout de réponse à ma question 2.
J'ai donc essayé de faire ceci:

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 # * Frame Update (when right window is active)
  #--------------------------------------------------------------------------
  def update_right
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Switch to menu screen
      # Tentative pour faire apparaitre la map brièvement, pour que l'événement commun se déclenche:
      $scene = Scene_Map.new 
      $scene = Scene_Menu.new(2)
      
      return
    end



Mais sans résultats.
Pourtant si je ne dis pas de bêtise (bon ok j'en dis pas mal), cette commande doit faire un truc du genre:

Si appuyer sur Echap, retourner au menu précédent (donc menu curseur positionné sur équipement).

Je ne comprend donc pas pourquoi en le modifiant, cela ne fonctionne pas.
Un indice? :)


EDIT:




Bon j'avance à grands pas, (concernant ma question 2).

Modifier ceci:

Portion de code : Tout sélectionner

1
2
3
4
5
6
def update_right
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Menu.new(2)
      
      return



Est bien la solution, cependant, il m'a fallu le faire dans un script ajouté qui concerne l'inventaire (le dernier script définissant un système est celui qui prévaut, me coucherai moins bête).

Du coup, ceci fonctionne à merveille:

Portion de code : Tout sélectionner

1
2
3
4
5
6
def update_right
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Map.new
      
      return



Mais ceci pas du tout:

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
 
def update_right
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Map.new
      $scene = Scene_Menu.new(2)
      
      return
 




Faut-il donc que je mette une sorte "d'attendre" entre l'appel des deux scènes pour que mon événement commun se déclenche, ou (nouvelle idée qui m'est venue) puis-je appeler directement mon événement commun via le script?

Du style:


Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
 
def update_right
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
       $scene = Scene_Map.new
      ATTENDRE le temps que mon événement commun se déclenche
      $scene = Scene_Menu.new(2)
      
      return
 



ou

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
 
def update_right
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      APPEL DE MON EVEN. COMMUN
      $scene = Scene_Menu.new(2)
      
      return
 



Merci d'avance, encore une fois.

Edit:



Pour le "attendre" j'ai trouvé dans un vieux post cette forumule:

Portion de code : Tout sélectionner

1
2
3
4
 
($latence_en_sec * Graphics.frame_rate).times{
# ce que tu veux rafraichir
}



Cependant, j'ai du mal à le mettre en œuvre.
J'ai tenté cela:

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
def update_right
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
       $scene = Scene_Map.new
      ATTENDRE le temps que mon événement commun se déclenche
      $scene = Scene_Menu.new(2)
      
(3000 * Graphics.frame_rate).times{
      $scene = Scene_Menu.new(2)
      }
return



Ça ne renvoi aucune erreur, mais ça ne fonctionne pas non plus.

EDIT DE RESOLUTION DE LA QUESTION 2 !



J'ai trouvé la solution ! :D
L'absence d'aide m'a rendu plus malin et m'a appris des choses *_*
En gros vous m'avez tous aidez sans m'aider ! MERCI :D

Bref, la solution à ma question 2 et celle-ci:

Dans le script de modification du script de base de l'équipement (au dessus du Main).

J'ai modifier ceci:

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
 
def update_right
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Menu.new(2)
      
      return



Ligne qui est la même que celle dans le script de base Scene_Equip.

Par ceci:

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
 
def update_right
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
       $scene = Scene_Map.new
      return
 



Ça a pour effet de me renvoyer à la map de jeu, où mon événement commun peut fonctionner, puis il m'a suffit de modifier mon événément commun comme suit:

<> Script: $scene = Scene_Menu.new(2)

Pour que mon inventaire se ré-ouvre (avec le curseur sur "Équipements" comme lors d'un échap normal depuis le menu d’équipement), avec les changement effectués ;)

C'est peu esthétique car on voit la map apparaitre puis disparaitre 1 seconde, mais au moins ça fonctionne :)


EDIT DE RESOLUTION DE LA QUESTION 2 !



Fort de ma résolution de ma question 2, j'ai eu un éclair de génie et est résolu ma question 1.

Voici comment j'ai fais:

Dans Scene_Battle 3, j'ai modifier ma fonction "se défendre" en "attaque à distance" pour pouvoir frapper avec une arme à distance en passant par l'équipement d'armure de type bouclier, en me servant de la valeur de la défense magique.
Du coup mon code actuel ressemble à ceci:

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
when 2  # attaquer a distance //////////////////////////////////////////////////////
        # 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
        # Go to command input for next actor
        start_enemy_select



Dans Scene_Battle 3 toujours, j'ai donc modifier ceci:

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 #--------------------------------------------------------------------------
  # * End Enemy Selection
  #--------------------------------------------------------------------------
  def end_enemy_select
    # Dispose of enemy arrow
    @enemy_arrow.dispose
    @enemy_arrow = nil
    # If command is [fight]
    if @actor_command_window.index == 0 
      # Enable actor command window
      @actor_command_window.active = true
      @actor_command_window.visible = true
      # Hide help window
      @help_window.visible = false
    end
  end
 



En ceci:

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#--------------------------------------------------------------------------
  # * End Enemy Selection
  #--------------------------------------------------------------------------
  def end_enemy_select
    # Dispose of enemy arrow
    @enemy_arrow.dispose
    @enemy_arrow = nil
    # If command is [fight]
    if @actor_command_window.index == 0 or 2 # <===== or 2 qui règle le problème
      # Enable actor command window
      @actor_command_window.active = true
      @actor_command_window.visible = true
      # Hide help window
      @help_window.visible = false
    end
  end





En espérant que mes aventures puissent servir à quelqu'un un jour :)

Je suis Sou et c'est tout.

Index du forum > Entraide > [RESOLU] [Rpg Maker XP] 2 Mini questions sur la modification du script équipement et combat

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 | 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