Sujet n°12236
Posté par Xyrram le 1 Déc - 14:58 (2012)
Titre : Erreur method dans un scripte que j'ai fait
J'ai un probleme avec un script de changement de charas
Code:
#==============================================================================
# ■ Scene_Menu
#==============================================================================


class Scene_Meu3 # Début de la classe
   
  #--------------------------------------------------------------------------
  # ●  menu_index
  #--------------------------------------------------------------------------
  def initialize(menu_index = 0) # Initialisation de l'index
    @menu_index = menu_index
  end
  #--------------------------------------------------------------------------
  # ● Principal
  #--------------------------------------------------------------------------
  def main # Initialisation des variables
    s1 = "Guerrier"
    s2 = "Mage"
    s3 = "Quiter"
    @command_window = Window_Command.new(160, [s1, s2, s3]) # Création d'une fenêtre de commande
    @command_window.index = @menu_index
    Graphics.transition # Transition graphique lorsque l'on quitte le menu
    loop do # Début de la boucle
      Graphics.update
      Input.update
      update # On dit au script d'aller voir la méthode "update"
      if $scene != self
        break
      end
    end
    Graphics.freeze # On gèle l'écran
    @command_window.dispose # On efface la fenêtre de commande
  end
  #--------------------------------------------------------------------------
  # ● Mise à jour
  #--------------------------------------------------------------------------
  def update # On définie la méthode "update"
    @command_window.update # Mise à jour de la fenêtre de commande en disant d'aller voir la méthode "update" de la classe contenue dans @command_window, c'est à dire "Command_Window.new".
    if @command_window.active # Si la fenêtre de commande est active
      update_command # Aller voir la méthode "update_command"
      return # Retourné le résultat
    end
  end
  #--------------------------------------------------------------------------
  # ● Mise à jour de la commande
  #--------------------------------------------------------------------------
  def update_command # Définition de la méthode "update_command"
    # B
    if Input.trigger?(Input::B) #Si l'on appuis sur B (c'est à dire Echap, X, ou 0)
      $game_system.se_play($data_system.cancel_se) #On joue le son "SE" dont le nom ($data_system.cancel_se) est  renvoyer par la méthode "cancel_se" de la classe contenue dans "$data_system".
      $scene = Scene_Map.new # Aller à la scène : "Scene_Map"
      return
    end
    # C
    if Input.trigger?(Input::C) # Si l'on appuis sur C (c'est à dire Entrée, ou Espace).
      case @command_window.index # Etudions les valeurs que peuvent prendre l'index de la fenêtre de commande (c'est à dire la position du curseur dans la commande : premier choix, deuxième choix, etc...) sachant que le premier choix à pour numéro 0.
      when 0  # Si l'on est sur le premier choix
        $game_player.character_name = "001-Fighter01.png"
      when 1  # Si l'on est sur le deuxième choix
        $game_system.se_play($data_system.decision_se)
         $game_player.character_name = "035-Mage03.png"
      when 2
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_Meu2.new
      end # Fin de la condition
      return
    end # Fin la condition (appuis touche)
  end # Fin de la méthode
end # Fin de la classe

Voila l'erreur
undefinited method 'character name=' for #<Game_Player:0x15f5890
Par la même occasion serait il possible de faire la même chose avec le battler si oui comment?
Merci d'avance

Posté par Zohran le 1 Déc - 15:22 (2012)
Alors là, réfléchi un peu, je dis pas ça par moquerie, surtout pas...non, regarde bien, tu vas comme ça apprendre un peu le fonctionnement d'un script:
Je m'explique:
Dragonstarx45 a écrit:

Voila l'erreur
undefinited method 'character name=' for #<Game_Player:0x15f5890

A ton avis, cela veut dire quoi?
TRADUCTION:
La méthode "character name" n'est pas définie pour la classe Game_Player.

Regarde maintenant ton script Game_Player... tu vois une méthode
"def character name"?
Non. Cela veut dire que tu n'appelles pas la bonne classe pour changer l'apparence du chara.

Posté par Xyrram le 1 Déc - 15:27 (2012)
Il faut que je mette quoi alors?

Posté par Opale le 1 Déc - 15:28 (2012)
Tu n'as pas ajouter
Code:
class Game_Player 
    attr_accessor :character_name 
end 

comme je te l'avais dit. Pense à ajouter ça au dessus de main !

Posté par Xyrram le 1 Déc - 15:29 (2012)
Je vais paretre idiot mais quel main

Posté par Opale le 1 Déc - 15:31 (2012)
Là où tu ajoutes tes scripts, tu sais ?
(Met le au dessus du script que tu as fait en gros.)

Posté par Xyrram le 1 Déc - 15:32 (2012)
Ah ok merci Opale Je vais essayer
Edit:Sa marche et pour le battler je fais comment?

Posté par Pαlвσlѕку le 1 Déc - 18:18 (2012)
Pour le battler, je pense qu'il doit y avoir une variable qui stocke le sprite, donc a toi de la trouver et de modifier son contenu en conséquence.

Posté par Xyrram le 1 Déc - 18:40 (2012)
Par contre j'ai un autre probleme maintenant la fenetre est décaler sur PSPDS et en plus sur psp le cahras ne garde pas la transformation que le script effectue

Posté par Opale le 1 Déc - 23:10 (2012)
Pour les charas; c'est normal. Une condition force à ce que le héros ait cette apparence. Afin d'y remédier, supprime la ligne 98 et la ligne 100 de Game_Player.
Pour les battlers, je vais chercher.

Posté par Xyrram le 2 Déc - 13:10 (2012)
Bon sa marche mais j'ai un décalement de la fenêtre sur PSPDS:
Voila un screen:

Posté par Opale le 2 Déc - 13:13 (2012)
Règle tes positions de la fenêtre. Le cadre fini à 13*13 px.
Donc logiquement tu devrais mettre:
Code:
@command_window.x = 13
@command_window. y = 13

Met le en dessous de @command_window = Window_Command.new.

Posté par Xyrram le 7 Déc - 19:37 (2012)
Merci sa fonctione
Edit:J'ai finis le script mis a part que je dois changer une variable mais je n'y arrive pas voila le nouveau script
Code:
#==============================================================================
# ■ Scene_Menu
#==============================================================================


class Scene_Meu3 # Début de la classe
   
  #--------------------------------------------------------------------------
  # ●  menu_index
  #--------------------------------------------------------------------------
  def initialize(menu_index = 0) # Initialisation de l'index
    @menu_index = menu_index
  end
  #--------------------------------------------------------------------------
  # ● Principal
  #--------------------------------------------------------------------------
  def main # Initialisation des variables
    s1 = "Tenue Rouge"
    s2 = "Tenue Bleu"
    s3 = "Quiter"
    @command_window = Window_Command.new(160, [s1, s2, s3]) # Création d'une fenêtre de commande
    @command_window.index = @menu_index
    Graphics.transition # Transition graphique lorsque l'on quitte le menu
    loop do # Début de la boucle
      Graphics.update
      Input.update
      update # On dit au script d'aller voir la méthode "update"
      if $scene != self
        break
      end
    end
    Graphics.freeze # On gèle l'écran
    @command_window.dispose # On efface la fenêtre de commande
  end
  #--------------------------------------------------------------------------
  # ● Mise à jour
  #--------------------------------------------------------------------------
  def update # On définie la méthode "update"
    @command_window.update # Mise à jour de la fenêtre de commande en disant d'aller voir la méthode "update" de la classe contenue dans @command_window, c'est à dire "Command_Window.new".
    if @command_window.active # Si la fenêtre de commande est active
      update_command # Aller voir la méthode "update_command"
      return # Retourné le résultat
    end
  end
  #--------------------------------------------------------------------------
  # ● Mise à jour de la commande
  #--------------------------------------------------------------------------
  def update_command # Définition de la méthode "update_command"
    # B
    if Input.trigger?(Input::B) #Si l'on appuis sur B (c'est à dire Echap, X, ou 0)
      $game_system.se_play($data_system.cancel_se) #On joue le son "SE" dont le nom ($data_system.cancel_se) est  renvoyer par la méthode "cancel_se" de la classe contenue dans "$data_system".
      $scene = Scene_Map.new # Aller à la scène : "Scene_Map"
      return
    end
    # C
    if Input.trigger?(Input::C) # Si l'on appuis sur C (c'est à dire Entrée, ou Espace).
      case @command_window.index # Etudions les valeurs que peuvent prendre l'index de la fenêtre de commande (c'est à dire la position du curseur dans la commande : premier choix, deuxième choix, etc...) sachant que le premier choix à pour numéro 0.
      when 0  # Si l'on est sur le premier choix
        $game_variables[20] == 0
        $game_system.se_play($data_system.decision_se)
        $game_player.character_name = "Héros Garçon.png"
        $scene = Scene_Map.new
      when 1  # Si l'on est sur le deuxième choix
        $game_variables[20] == 1
        $game_system.se_play($data_system.decision_se)
         $game_player.character_name = "Héros Garçon2.png"
         $scene = Scene_Map.new
      when 2
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_Meu2.new
      end # Fin de la condition
      return
    end # Fin la condition (appuis touche)
  end # Fin de la méthode
end # Fin de la classe

Posté par Opale le 8 Déc - 11:29 (2012)
Le "==" c'est seulement dans les conditions, si tu veux donner une valeur à une variable c'est seulement =

Posté par Xyrram le 8 Déc - 11:32 (2012)
Ah ok merci je vais essayer
Edit:Sa marche merci beaucoup
Une derniere question sait tu ou se trouve la ligne de code qui gere le back du hero?