Sujet n°2200
Posté par Sphinx le 18 Nov - 23:01 (2008)
Titre : Méthode afficher_quizz
Après la Méthode afficher_texte, j'ai continué à scripter et j'ai obtenu le même genre de méthode, mais correspondant non plus à la commande "afficher un message" mais à la commande "proposer un choix".

Tout d'abord, voici le code à insérer dans le script Interpreter :
Code:

  def afficher_quizz(array=[],array2=0,position=336,opacite=255)
    if array == []
      return false
    end
    @message_waiting = true
    $position = position
    $opacite = opacite
    $game_system.message_position = 3
    $game_system.message_frame = 2
    $game_temp.choice_start = 0
    $game_temp.message_proc = Proc.new { @message_waiting = false }
    $game_temp.message_text = ""
    $game_temp.choice_max = array.size
    for i in 0...array.size
      $game_temp.message_text += "   " + array[i] + "\n"
    end
    $game_temp.choice_cancel_type = array2
    current_indent = @list[@index].indent
    $game_temp.choice_proc = Proc.new { |n| @branch[current_indent] = n }
  end
  



Remplacez la méthode reset_window du scrit Window_Message par ce code :
Code:

  def reset_window
    # Redéfinition
    if $game_temp.in_battle
      self.y = 342
      @dummy.y = 336
    else
      case $game_system.message_position
      when 0  # 上
        self.y = 6
        @dummy.y = 0
      when 1  # 中
        self.y = 166
        @dummy.y = 160
      when 2  # Redéfinition position du cadre inférieur
        self.y = 342
        @dummy.y = 336
      when 3
        self.y = $position + 6
        @dummy.y = $position
      end
    end
    case
    when $game_system.message_frame == 0
      #self.opacity = 255
      @dummy.opacity = 255
    when $game_system.message_frame == 1
      #self.opacity = 0
      @dummy.opacity = 0
    when $game_system.message_frame == 2
      #self.opacity = $opacite
      @dummy.opacity = $opacite
    else
      #self.opacity = 0
      @dummy.opacity = 0
    end
    self.back_opacity = 255
  end


Cherchez :
Code:

      if Input.trigger?(Input::C)
        if $game_temp.choice_max > 0
          $game_system.se_play($data_system.decision_se)
          $game_temp.choice_proc.call(self.index)
        end
        terminate_message
      end
      return



et remplacez le par :
Code:

      if Input.trigger?(Input::C)
        if $game_temp.choice_max > 0
          $game_system.se_play($data_system.decision_se)
          $game_temp.choice_proc.call(self.index)
          $choix = $game_temp.choice_proc.call(self.index)
        end
        terminate_message
      end
      return



Pour l'utiliser en script ou en évent :
afficher_quizz(["A","B","C"],D,Y,O)
"A", "B", "C" sont trois réponses (vous pouvez n'en mettre qu'une ou deux !) au format texte IMPERATIVEMENT.
D est la valeur d'annulation. Il peut prendre une valeur égale à 0 (pas d'annulation), comprise entre 1 et 3 (valide le choix correspondant) ou égal à 5 (autres commandes)
Y est la position verticale (en pixels)
O est l'opacité de la fenêtre.

L'index du choix validé (par la touche entrée) est renvoyé dans la variable $choix

Lorsque vous appuyez sur la touche X ou ECHAP, la valeur d'annulation est renvoyée dans la même variable.

Ainsi, en script ou en condition (condition scriptée) il vous suffit de tester la valeur de la variable $choix pour exécuter les commandes correspondantes =)

Posté par Jordan le 19 Nov - 07:28 (2008)
arf, c'est toujours du format texte sphinx, c'est ça qui m'embête en faite!

Posté par Sphinx le 19 Nov - 19:15 (2008)
=) explique Imbécile heureux j'ai indiqué dans l'autre topic comment tout convertir en texte (tu peux donc tout faire Clin d'œil foireux)