AccueilAccueil  PortailPortail  CalendrierCalendrier  TutorielsTutoriels  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  ConnexionConnexion  

Partagez | 
 

 12 choix au lieu de 4 choix dans une fenêtre de dialogue

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Jordinateur
Blob
Blob
avatar

Nombre de messages : 260
Localisation : Devant mon ordinateur !(enfin sa dépend, peut-être avec ma copine aussi ^^)
Humeur/Caractère : Aller a l'école T_T
Date d'inscription : 12/05/2006

MessageSujet: 12 choix au lieu de 4 choix dans une fenêtre de dialogue   Jeu 18 Mai - 20:58

Voici un script by Krazplay, lisez les commentaire in the script for further informations Imbecile Heureux
Pour le début, je crois que il faut créer "Window_choix" et copier ce code

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

Arrow Et encore un (ceci est la base de donnés), créez un script appelé "Scene_choix" et collez y ce code

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
Et donc ce script permet de faire 12 choix dans une fenêtre de dialogue a la place de 4 à la base...Pratique, mais trop embêtant à faire à mon avis juste pour faire des choix...Enfin je vous en laisse juger par vous-même Exclamation
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
GTK
Painteur GTK
Painteur GTK
avatar

Masculin
Nombre de messages : 3597
Age : 28
Humeur/Caractère : Fatigué
Date d'inscription : 29/04/2006

Statut
Expérience:
100/100  (100/100)
Pixel Point Pixel Point: ---

MessageSujet: Re: 12 choix au lieu de 4 choix dans une fenêtre de dialogue   Ven 19 Mai - 15:06

Sa peut être utile dans certain cas mais sa a l'air assez lourd à règlé .

_________________
-- Peuple d'Ultima Graphisme, je m'adresse à vous --
-- Prenez les armes et assomez la racaille ! --
-- Vous aussi, devenez une Brute --

Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://ultimagraphisme.actifforum.com
Jordinateur
Blob
Blob
avatar

Nombre de messages : 260
Localisation : Devant mon ordinateur !(enfin sa dépend, peut-être avec ma copine aussi ^^)
Humeur/Caractère : Aller a l'école T_T
Date d'inscription : 12/05/2006

MessageSujet: Re: 12 choix au lieu de 4 choix dans une fenêtre de dialogue   Ven 19 Mai - 15:09

oué, c'est vrai, mais pour faire des sortes de mini-jeux, avec pleins de choix, sa peut être pratique, sinon, tu n'es pas obligé de l'utiliser tout le temps, c'est seulement quand il y a des choix de plus de 4 choix !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
matao
Blob-oeuf
Blob-oeuf


Nombre de messages : 5
Date d'inscription : 01/09/2006

MessageSujet: Re: 12 choix au lieu de 4 choix dans une fenêtre de dialogue   Sam 2 Sep - 21:06

moi je lai dejas vu il y a une pay il faut metre ca dant un event logiquement
Code:
# $scene = Scene_choix.new(nombre)

renplacer nonbre par le nbr de choi que vousz vouler attention pas sur du fonctionement
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: 12 choix au lieu de 4 choix dans une fenêtre de dialogue   

Revenir en haut Aller en bas
 
12 choix au lieu de 4 choix dans une fenêtre de dialogue
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Limiter le nombre de choix à 1 pour le vote dans un sondage
» [Membres] Choix du thème, sélecteur de thème dans le profil
» Plusieurs couleurs dans les titres de sujet
» Personnaliser le choix des couleurs par défaut dans les messages - phpBB2 | punBB
» Comment afficher la vitesse dans la fenêtre "Profil d'altitude".

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Ultima Graphisme :: Aide, Tuto, Script & Recrutement :: Script-
Sauter vers: