Pokémon Script Project Forum Index

Manuel | Search
 Information des admins 
Si vous désirez parler de PSP ou obtenir du soutient là dessus, merci d'aller faire un tour sur https://pokemonworkshop.com/forum/index.php Imbécile heureux

Triple choix
Goto page: 1, 2  >
 
Post new topic   Reply to topic    Pokémon Script Project Forum Index -> Game Making -> Ressources techniques -> Scripts
Previous topic :: Next topic   
Author Message
TouzaxA
Membre


Joined: 27 Jul 2012
Posts: 2,669

PostPosted: Sat 6 Jul - 08:45 (2013)    Post subject: Triple choix

Bonjour à tous !
Je vous présente aujourd'hui mon premier script public. Généralement, je me les garde de côté pour moi tout seul Spiky , mais j'ai décidé de faire une petite exception.
Il s'agit donc d'un script, à placer au dessus de main:
Code:
  #-----------------------------------------------------------------------------
  # draw_choice_plus3
  #   Fenêtre de choix 1 / 2 / 3 récupéré dans une variable
  #   Par TouzaxA, à partir du travail de Krosk
  #-----------------------------------------------------------------------------   
  def draw_choice_plus3(arg1 = "", arg2 = "", arg3 = "", text1 = "", text2 = "", value = ["1","2","3"])         
    window = Window_Command.new(1, [arg1, arg2, arg3], $fontsizebig)
    width = [window.contents.text_size(arg1).width, window.contents.text_size(arg2).width, window.contents.text_size(arg3).width].max  + 12
    window.dispose
    @command = Window_Command.new(width + 27, [arg1, arg2, arg3], $fontsizebig)
    @command.x = 363 - 123 - width
    @command.y = 94
    @command.z = 10000
    @command.visible = false
    $textAffichage = false
    if text1 != "" || text2 != ""
      @dummy = Sprite.new
      @dummy.bitmap = RPG::Cache.picture($options[5])
      @dummy.x = 15
      @dummy.y = 158
      @dummy.z = 9999
      $textAffichage = true
    end
    @background = Sprite.new
    @background.bitmap = RPG::Cache.picture("draw_choice3")
    @background.x = 13
    @background.y = 227
    @background.z = 10001
    @curseur = Sprite.new
    @curseur.bitmap = RPG::Cache.picture("cursor_choice")
    @curseur.x = 13
    @curseur.y = 277   
    @curseur.z = 10002   
    @texte = Window_Base.new(0, 132, 250, 400)
    @texte.z = 10002
    @texte.opacity = 0
    @texte.contents = Bitmap.new(608, 412)
    @texte.contents.font.name = "Pokemon Emerald"
    @texte.contents.font.size = $fontsize
    @texte.draw_text_contour(19, 112, 212, 32, arg1, 1)
    @texte.draw_text_contour(19, 160, 212, 32, arg2, 1)
    @texte.draw_text_contour(19, 207, 212, 32, arg3, 1)
    @texte.draw_text(13, 8, 218, 32, text1)
    @texte.draw_text(13, 24, 218, 32, text2)
    $game_variables[15] = 1
    $game_variables[14] = 2   
    loop do
      Graphics.update
      Input.update
      @command.update         
      if @command.index == 0
        @curseur.x = 13
        @curseur.y = 253
      elsif @command.index == 1
        @curseur.x = 13
        @curseur.y = 299
      elsif @command.index == 2
        @curseur.x = 13
        @curseur.y = 347
      end 
      if Input.trigger?(Input::C) and @command.index == 0
        @command.dispose
        @background.dispose
        @curseur.dispose
        @texte.dispose
        if $textAffichage
          @dummy.dispose
          @dummy = nil
        end
        $game_variables[15] = 0 if not $game_variables[15] == 2
        @command = nil
        @background = nil
        @curseur = nil   
        @texte = nil
        @wait_count = 2         
        return value[0]       
      end
      if Input.trigger?(Input::C) and @command.index == 1
        @command.dispose
        @background.dispose
        @curseur.dispose
        @texte.dispose
        if $textAffichage
          @dummy.dispose
          @dummy = nil
        end
        $game_variables[15] = 0 if not $game_variables[15] == 2
        @command = nil
        @background = nil
        @curseur = nil   
        @texte = nil
        @wait_count = 2           
        return value[1]       
      end
      if Input.trigger?(Input::C) and @command.index == 2
        @command.dispose
        @background.dispose
        @curseur.dispose
        @texte.dispose
        if $textAffichage
          @dummy.dispose
          @dummy = nil
        end
        $game_variables[15] = 0 if not $game_variables[15] == 2
        @command = nil
        @background = nil
        @curseur = nil   
        @texte = nil
        @wait_count = 2           
        return value[2]       
      end
    end
  end

Il n'y a absolument pas de crédits obligatoires mais c'est toujours agréable, étant donné que tout le mérite revient à Krosk: je n'ai fait qu'adapter un petit peu.

Pour l'utilisation, il faut utiliser la commande script, et y ajouter le contenu suivant:
Code:
$game_variables[NumeroDeVariable] = draw_choice_plus3("Choix 1", "Choix 2", "Choix 3")

Cela stocke le résultat (1, 2 ou 3 par défaut) dans la variable indiquée.
Pour l'utiliser, il suffit de vérifier sa valeur.

Vous avez également la possibilité d'utiliser une description du choix:
Code:
$game_variables[NumeroDeVariable] = draw_choice_plus3("Choix 1", "Choix 2", "Choix 3", "Ligne 1 description", "Ligne 2 description")


Il est aussi possible de modifier les valeurs que prend la variable:
Code:
$game_variables[NumeroDeVariable] = draw_choice_plus3("Choix 1", "Choix 2", "Choix 3", "Ligne 1 description", "Ligne 2 description", ["Valeur 1", "Valeur 2", "Valeur 3"])

Cela peut être utile si cela modifie juste les paroles du personnage ensuite. Ainsi, on entre la réponse dans la valeur, et on l'affiche dans un message avec \V[NumeroDeVariable]. Cela économise des conditions.

Voilà !
Je joins également le template pour lequel le script est ajusté par défaut:

Il faut la mettre dans Graphics/Pictures et la nommer "draw_choice3.png".

J'espère que ça aidera les moins doués en script, ou les plus fainéants d'ailleurs. Petit saligaud mal élevé
Back to top
Publicité






PostPosted: Sat 6 Jul - 08:45 (2013)    Post subject: Publicité

PublicitéSupprimer les publicités ?
Back to top
TheDemon80
Membre


Joined: 01 Jul 2013
Posts: 3
Maker confirmé
Localisation: Bordeaux

PostPosted: Sat 6 Jul - 09:31 (2013)    Post subject: Triple choix

Cool super script (je suis moi même fainéant !!)
Back to top
Skype
TouzaxA
Membre


Joined: 27 Jul 2012
Posts: 2,669

PostPosted: Sat 6 Jul - 09:52 (2013)    Post subject: Triple choix

Content que ça serve.
Back to top
Redder
Team SDK


Joined: 22 Aug 2012
Posts: 70
Youtubeur
Localisation: NY(Nancy)
Non renseigné (Visible...)

PostPosted: Thu 25 Jul - 19:56 (2013)    Post subject: Triple choix

Très utile !
Merci beaucoup pour ce partage !
Back to top
Facebook Twitter
Nuri Yuri
Team SDK


Joined: 15 Oct 2008
Posts: 6,383
~Entity~
Localisation: Nancy
Non renseigné (Visible...)
ID Steam: Nuri_Yuri

PostPosted: Fri 26 Jul - 08:14 (2013)    Post subject: Triple choix

Utile sauf qu'il y a un truc qui ne va pas : value = ["1","2","3"]
Pourquoi des strings ? Pourquoi ?
Dans tes exemples d'utilisations tu utilises des variables de jeu et tu retourne un string ? Ne sais tu pas que l'interpreter d'évent ne sait pas comparer des strings dans les variables, plus globalement, imagine si les variables étaient définies ainsi :
Code:
class Game_Variable
  def void initialize()
    int* data=(int*)calloc($data_system->variables.size,4)
    malloc_error(data)
  end
  def int Game_Variables::operator[] (const int index)
    return data[index]
  end
  def int Game_Variables::operator[]= (const int index,int value)
    return data[index]=value
  end
end

Ça aurait donné un jolis résultat en sortie parce qu'à la fin, c'est pas "1" "2" ou "3" qui aurait été comparé mais 48653880, 48647904 ou 48644784 vu que les variables de jeu n'aurait pris que des ints.
Enfin, tout ça pour dire qu'il faut faire gaffe aux arguments par défauts que prend une fonction, surtout pour l'utilisation qui lui est destinée.

Merci du partage tout de même :b
Back to top
Facebook Twitter
TouzaxA
Membre


Joined: 27 Jul 2012
Posts: 2,669

PostPosted: Fri 26 Jul - 08:35 (2013)    Post subject: Triple choix

C'est vrai que pour vérifier, j'utilise à chaque fois des scripts. XD
En fait, je crois qu'il n'y a pas une seule condition dans mon jeu qui ne teste pas du code.
Et j'ai mis des string pour avoir une indication "propre". Comme ça, je sais directement quand je fais la suite, ce qu'il faut que je mettes si je ne me rappelles plus du choix. C'est plus clair. ^^
En plus, j'utilise jamais les variables de l'éditeur pour ça. XD
Back to top
Nuri Yuri
Team SDK


Joined: 15 Oct 2008
Posts: 6,383
~Entity~
Localisation: Nancy
Non renseigné (Visible...)
ID Steam: Nuri_Yuri

PostPosted: Fri 26 Jul - 12:59 (2013)    Post subject: Triple choix

Ça dépends pour quoi tu utilise les strings, si c'est pour stocker des nombres, c'est une très mauvais idée. Voici une démonstration de ce que tu appelles propre : (Moi, je l'appelle, lent et consommateur de mémoire.)

Bien entendu, l'index de l'object id prend un peu de temps mais supposons que cela en prend autant que créer un string, on se retrouverais donc avec 4 secondes pour 10000 strings contre 4ms pour 10000 fixnums.

Après, si il s'agit de contenir "Salut" y'a pas de problèmes c'est normal :b
Back to top
Facebook Twitter
TouzaxA
Membre


Joined: 27 Jul 2012
Posts: 2,669

PostPosted: Fri 26 Jul - 14:09 (2013)    Post subject: Triple choix

Si quelqu'un souhaite mettre des nombres à la place, il n'y a pas de problème: le code fonctionne aussi. ^^
Following members like this message:
Nuri Yuri (26/07/13)
Back to top
Rox
Membre


Joined: 25 Jun 2010
Posts: 273
Survivant
Localisation: En cavale
Masculin

PostPosted: Mon 19 Aug - 21:58 (2013)    Post subject: Triple choix

Merci du partage !
Est ce qu'il est possible d'ajouter plus que trois choix sans faire énormément de modifications ?
Depuis le temps que je l'attendais ^^
Back to top
TouzaxA
Membre


Joined: 27 Jul 2012
Posts: 2,669

PostPosted: Tue 20 Aug - 06:49 (2013)    Post subject: Triple choix

Pas si facilement que ça en fait. ^^'
Je verrais pour faire une version qui s'adapte au nombre de possibilités voulues. Par manque de place, je pense mettre un système de défilement.
Back to top
Rox
Membre


Joined: 25 Jun 2010
Posts: 273
Survivant
Localisation: En cavale
Masculin

PostPosted: Tue 20 Aug - 09:48 (2013)    Post subject: Triple choix

Merci d'avance ^^
Si le problème de place vient des images, soit d'être facile à faire avec le draw choice HGSS.
Back to top
TouzaxA
Membre


Joined: 27 Jul 2012
Posts: 2,669

PostPosted: Tue 20 Aug - 10:08 (2013)    Post subject: Triple choix

Bah en fait ça serait une histoire de faire défiler les choses. Genre:
Proposition 1
Proposition 2
Proposition 3
<Flèche vers le bas>
Et si on arrive à la 3, et qu'on continue, on a par exemple:
<Flèche vers le haut>
Proposition 2
Proposition 3
Proposition 4

Je peux essayer de le faire. Clin d'œil foireux
Back to top
Rox
Membre


Joined: 25 Jun 2010
Posts: 273
Survivant
Localisation: En cavale
Masculin

PostPosted: Tue 20 Aug - 11:35 (2013)    Post subject: Triple choix

Moi c'est bizarre, je pensais plutôt à un défilement par la gauche x)
C'est une bonne idée, je crois que ça rend mieux que dans les jeux officiels Imbécile heureux
Back to top
TouzaxA
Membre


Joined: 27 Jul 2012
Posts: 2,669

PostPosted: Tue 20 Aug - 11:36 (2013)    Post subject: Triple choix

Bah après je peux laisser aussi la possibilité. Faut voir. ^^
Back to top
Nuri Yuri
Team SDK


Joined: 15 Oct 2008
Posts: 6,383
~Entity~
Localisation: Nancy
Non renseigné (Visible...)
ID Steam: Nuri_Yuri

PostPosted: Tue 20 Aug - 12:38 (2013)    Post subject: Triple choix

T'aurais peut être pas du utiliser un truc du genre Window_Command, t'es obligé de recoder quelque chose qui en découle lorsque tu veux faire des choses plus complexes...
Si tu es en sprite lorsque t'appuies sur Bas ou haut, tu as juste à vérifier si le curseur est aux extrémités et donc demandé un nouveau dessin de la chose.
Je vais partager quelques scripts qui vont peut être pousser les gens à utiliser les Sprites Plutot que les Window...
Back to top
Facebook Twitter
Contenu Sponsorisé






PostPosted: Today at 00:17 (2019)    Post subject: Triple choix

Back to top
Display posts from previous:   
Post new topic   Reply to topic    Pokémon Script Project Forum Index -> Game Making -> Ressources techniques -> Scripts All times are GMT + 1 Hour
Goto page: 1, 2  >
Page 1 of 2

 
Jump to:  

Index | Free forum | Free support forum | Free forums directory | Report a violation | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group
Thème par Thomas et l'équipe de la refonte PSP 2012 (version 1.0)