AccueilAccueil  PortailPortail  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  ConnexionConnexion  



Le Deal du moment : -20%
Drone Dji DJI Mini 4K (EU)
Voir le deal
239 €

Partagez
 

 Plus de quatre choix

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Gothor
Chevalier Lv.17
Chevalier Lv.17
Gothor


Masculin Age : 31
Inscrit le : 27/04/2008
Messages : 1835

Plus de quatre choix Empty
MessageSujet: Plus de quatre choix   Plus de quatre choix Icon_minitimeMer 1 Juil 2009 - 8:41

Bonjour,
Voilà, j'ai un script de Krazplay développé pour RPG Maker XP qui permettait d'afficher jusqu'à 12 choix au lieu de 4 uniquement, j'aimerais savoir s'il était possible de le convertir sur RPG Maker VX car il me serait bien utile. Voilà, merci d'avance et bon courage à celui qui essaiera Smile

Premier script:
Code:
#=======================================================================
# ■ Scene permettant d'effectuer un choix entre plusieurs réponses possible.
# ■ Scene_choix + Window_choix v1.2 par Krazplay
#=======================================================================
# Ecrit par Krazplay
# Nécessite : le scrîpt Scene_choix fesant office de base de donnée.
#--------------------------------------------------------------
# Description :
# La commande "Effectuer un choix" dans l'éditeur d'évènements ne permet de choisir qu'entre
# 4 possibilitées différentes, et de plus chacun de ses choix doivent respecter une limite de
# caractères, ce scrîpt propose une alternative à cette commande, il permet de faire jusqu'à
# 12 choix différents, et de proposer un choix tenant sur plus d'une ligne.
#--------------------------------------------------------------
# Caractéristiques :
# - Jusqu'à 12 choix possibles.
# - L'ensemble de tout les choix ne doivent pas dépasser 14 lignes.
# - La hauteur de la fenêtre dépend du nombre de lignes utilisées, la fenêtre est
#  automatiquement centrée.
# - Le retour à la ligne si le choix est trop long est fait automatiquement
#--------------------------------------------------------------
# Utilisation :
# Simple, dans votre évènement, insérer la ligne de scrîpt suivante :
# $scene = Scene_choix.new(sav)
# Suivi imédiatement d'un "Afficher un message" avec rien dedans, ce message ne s'affichera
# pas, il sera "mangé" par le scrîpt, si vous ne le faites pas, il n'est pas certain que le prochain
# message s'affiche.
# La variable sav correspond au choix qui seront affichés, pour cela regarder à quoi cela
# correspond dans le scrîpt de base de donnée, le nombre sav ne doit jamais être égal à 0
# si vous souhaitez tirer les choix de votre scrîpt de base de donnée.
#
# Pour les résultats, c'est simple, il suffit de mettre une condition, choisir scrîpt, puis mettre :
# @resu == (chiffre allant de 1 à 12)
# Le chiffre étant le choix selectionné par le joueur (s'il sélectionne le premier choix, @resu est
# égal à 1.
#--------------------------------------------------------------
# Supplément :
# Néanmoins vous n'êtes pas obligé d'utiliser le scrîpt de base de donnée, dans ce cas-là,
# utiliser cette ligne :
# $scene = Scene_choix.new(0, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12)
# Sachant que c1 à c12 sont les choix, et qu'ils ne sont pas tous obligatoires, exemple :
# c1 = "Je vais bien"
# c2 = "Je vais mal"
# c3 = "Je ne te dirai rien"
# Scene_choix.new(0, c1, c2, c3)
# Cela marchera parfaitement, le problème est que dans la commande "Insérez un scrîpt"
# de l'éditeur de l'évènement, lorsque vous arrivez en bout de ligne vous êtes renvoyés à la
# ligne, ce qui risque de donner une erreur, pour pouvoir mettre un long choix il faut alors faire :
# c1part1 = "Moi je vais très bien merci, mais je me demandais"
# c1part2 = " si toi tu allais bien car la pizza que je t'ai donné hier"
# c1part3 = " était périmé depuis trois mois."
# c1 = c1part1 + c1part2 + c1part3
# Ce qui est extrêmement pénible.
#--------------------------------------------------------------
# Supplément 2 :
# Si vous prenez les choix de votre base de donnée, vous pouvez tout de même en ajouter
# manuellement dans l'éditeur d'évènement. Imaginons que dans votre base de donnée
# le nombre 1 correspond à 4 choix, en écrivant cela :
# c5 = "Exemple d'un choix ajouté manuellement"
# $scene = Scene_choix.new(1,nil,nil,nil,nil,c5)
# Vous ajoutez un 5ème choix, que vous pouvez par exemple ne faire apparaitre que sous
# certaines conditions.
#=======================================================================
class Scene_choix

  # c1,c2,c3 etc = choix entrés par l'utilisateur lorsqu'il a appellé cette scène.
  def initialize(sav,c1=nil,c2=nil,c3=nil,c4=nil,c5=nil,c6=nil,c7=nil,c8=nil,c9=nil,c10=nil,c11=nil,c12=nil)
    if sav > 0                      # Si sav est à zéro, cela veut dire qu'on ne consulte pas la database,
      voir_ds_data(sav)    # sinon on tire les choix de la database.
      choix_sup = [c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12]  # On garde qd même les choix entrés par l'utilisateur.
      for i in 0...12
        if @choix[i] == nil and choix_sup[i] != nil  # Si dans la database un choix est nul alors qu'il existe dans les entrés de l'utilisateur,
          @choix[i] = choix_sup[i]                            # Ce choix nul devient celui entré.
        end
      end
    else
      @choix = [c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12]  # On fait un tableau contenant tout les choix.
    end
    @ligne = []
    @choix_avec_nils = @choix.clone # v1.1
    @choix.compact!          # On élimine tout les choix nuls
    for i in 0...@choix.size
      @ligne[i] = 1    # On considère pour le moment que tt les choix s'écrivent sur une ligne.
    end
    vérif_long          # Cette méthode va gérer le nombre  de lignes qu'à besoin chacun des choix.
  end
 
  def main
    @wind = Window_choix.new(@choix, @ligne) # On crée la fenêtre
    loop do                  # La boucle standarte commune à quasiment tout les scripts.
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @wind.dispose  # Si la boucle s'est brisée on efface la fenêtre.
  end

  def update
    @wind.update
    if Input.trigger?(Input::B) # En cas d'annulation (pas encore utilisé)
   
    end
    if Input.trigger?(Input::C) # En cas de confirmation
      choix_non_coupés_ss_nils = @choix_avec_nils.clone  # v1.2 /*
      choix_non_coupés_ss_nils.compact!
      choix = choix_non_coupés_ss_nils[@wind.index]              # */    v1.1 /*
      index = @choix_avec_nils.index(choix)        #
      $game_system.map_interpreter.resu_choix(index+1)      # */
      $scene = Scene_Map.new
    end
  end
 
  def vérif_long
    @long_max = 55
    for i in 0...@choix.size                        # Pour chacun des choix, si celui-ci possède un nombre
      if @choix[i].size > @long_max        # de caractère supérieur à @long_max, on va le passer
        découp_en_lignes(@choix[i],i)    # à la méthode qui va la couper en plusieurs lignes.
        end
      end
    end
  end

  def découp_en_lignes(texte,num)  # Cette méthode découpe un choix trop long en plusieurs
    @choix[num] = []                            # morceaux, et stocke le nombre de lignes que le choix
    rep = 0                                            # possède dans la variable @ligne.
    loop do
      if texte.size > 55 and not texte.size < 65
        for i in 56..64
          if texte[i] == 32                          #32 = code de l'espace
            break
          end
        end
        @ligne[num] += 1
            @choix[num][rep] = texte[0...i]
            rep += 1
            @choix[num][rep] = texte[(i+1)...texte.size]
            texte = @choix[num][rep]
      else
        break
      end
  end

end


class Scene_Map
  def main
    @spriteset = Spriteset_Map.new
    @message_window = Window_Message.new
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    if not $scene.is_a?(Scene_choix)  # Evite d'effacer l'arrière-plan si la nouvelle scene
      Graphics.freeze                              # est une Scene_choix
      @spriteset.dispose
    end
    @message_window.dispose
    if $scene.is_a?(Scene_Title)
      Graphics.transition
      Graphics.freeze
    end
  end
end

class Interpreter
  def resu_choix(choix)    # Sert à mettre le résultat dans la variable @resu de la class Interpreter,
    @resu = choix              # ce qui permet d'utiliser cette variable dans l'éditeur d'évènement.
  end
end

class Window_choix < Window_Selectable

  def initialize(choix, ligne)
    @choix = choix
    @ligne = ligne
    @width = 640
    @height = 0
    for i in 0...@ligne.size
      @height +=  @ligne[i] * 32
    end
    @height += 32
    @height = 480 if @height > 480
    y = (480 - @height) / 2
    super(0, y, @width, @height)
    @column_max = 1
    @item_max = @choix.size
    self.opacity = 180
    refresh
    self.index = 0
  end


  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    self.contents = Bitmap.new(@width - 32, @height-32)
    self.contents.font.name = $fontface
    self.contents.font.size = $fontsize
    u = -32
    for i in 0...@choix.size
      for n in 0...@ligne[i]
        u += 32
        if @ligne[i] >1
          self.contents.draw_text(0, u, @width - 32, 32,@choix[i][n])
        else
          self.contents.draw_text(0, u, @width - 32, 32,@choix[i])
        end
      end
    end
  end

  def update_cursor_rect
    if @index < 0
      self.cursor_rect.empty
      return
    end
    row = @index / @column_max
    if row < self.top_row
      self.top_row = row
    end
    if row > self.top_row + (self.page_row_max - 1)
      self.top_row = row - (self.page_row_max - 1)
    end
    cursor_width = self.width / @column_max - 32
    x = @index % @column_max * (cursor_width + 32)
    new_y = 0
    for i in 0...@index
      new_y += @ligne[i]
    end
    y = new_y / @column_max * 32 - self.oy
    self.cursor_rect.set(x, y, cursor_width, 32*@ligne[@index])
  end

end
# Fin du scrîpt

Second script:
Code:
#=======================================================================
# ■ Base de donnée des réponses possible.
# ■ Scene_choix (base de donnée) v1.2 par Krazplay
#=======================================================================
# Nécessite : le scrîpt Scene_choix + Window_choix
#--------------------------------------------------------------
# Description et utilisation :
# Ce scrîpt ne sert qu'à être une sorte de base de donnée.
# Très simple à utiliser, il suffit de rajouter des "when nombre", puis de mettre ensuite la liste
# des choix (ne pas aller plus haut que c12).
# Le nombre après le When est le nombre qu'il faut mettre pour avoir automatiquement la liste
# des choix qui suit après ce When, le nombre est utilisé lorsque vous appellez la scene :
# $scene = Scene_choix.new(nombre)
#=======================================================================
class Scene_choix

  def voir_ds_data(sav)
    [c1=nil,c2=nil,c3=nil,c4=nil,c5=nil,c6=nil,c7=nil,c8=nil,c9=nil,c10=nil,c11=nil,c12=nil]
    case sav
    when 1
      c1 = "- Je pense qu'on devrait élever Krazplay au rang de Dieu et lui ériger des statues partout dans le monde."
      c2 = "- Je pense que Krazplay est la personne la plus sympa du monde, d'ailleur je lui signe tout de suite un chèque de 10000 euros et je l'envoi sans attendre."
      c3 = "- Je crois que Krazplay est vraiment en train de perdre la citrouille..."
      c4 = "- La citrouille, c'est bon, faudrait penser à inviter Krazplay à diner un soir =)"
      c5 = "- Je pense que Krazplay a une sacrée imagination pour mettre des phrases aussi stupide dans son screenshot."
   
    when 2
      c1 = "Bonjour  c1"
      c2 = "Au revoir  c2"
      c3 = "Comment va ?  c3"
   
    end
    @choix = [c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12]
  end

end
Revenir en haut Aller en bas
 

Plus de quatre choix

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

 Sujets similaires

-
» Quatre [Réservé]
» Poème - Ils étaient quatre
» Choix de la window
» Nombreux choix!
» Choix de Portables

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Maker VX :: Entraide :: Scripts :: Requêtes :: Archives-
Créer un forum | ©phpBB | Forum gratuit d'entraide | Signaler un abus | Cookies | Forum gratuit