Pokémon Script Project Index du Forum

S’enregistrer | Rechercher | Connexion
 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
Aller à la page: 1, 2  >
 
Poster un nouveau sujet   Répondre au sujet    Pokémon Script Project Index du Forum -> Game Making -> Ressources techniques -> Scripts
Sujet précédent :: Sujet suivant   
Auteur Message
TouzaxA
Membre


Inscrit le: 27 Juil 2012
Messages: 2 669

MessagePosté le: Sam 6 Juil - 08:45 (2013)    Sujet du message: 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é
Revenir en haut
Publicité






MessagePosté le: Sam 6 Juil - 08:45 (2013)    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
TheDemon80
Membre


Inscrit le: 01 Juil 2013
Messages: 3
Maker confirmé
Localisation: Bordeaux

MessagePosté le: Sam 6 Juil - 09:31 (2013)    Sujet du message: Triple choix

Cool super script (je suis moi même fainéant !!)
Revenir en haut
Skype
TouzaxA
Membre


Inscrit le: 27 Juil 2012
Messages: 2 669

MessagePosté le: Sam 6 Juil - 09:52 (2013)    Sujet du message: Triple choix

Content que ça serve.
Revenir en haut
Redder
Team SDK


Inscrit le: 22 Aoû 2012
Messages: 70
Youtubeur
Localisation: NY(Nancy)
Non renseigné (Visible...)

MessagePosté le: Jeu 25 Juil - 19:56 (2013)    Sujet du message: Triple choix

Très utile !
Merci beaucoup pour ce partage !
Revenir en haut
Facebook Twitter
Nuri Yuri
Administrateur
Administrateur


Inscrit le: 15 Oct 2008
Messages: 6 383
~Entity~
Localisation: Nancy
Non renseigné (Visible...)
ID Steam: Nuri_Yuri

MessagePosté le: Ven 26 Juil - 08:14 (2013)    Sujet du message: 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
Revenir en haut
Facebook Twitter
TouzaxA
Membre


Inscrit le: 27 Juil 2012
Messages: 2 669

MessagePosté le: Ven 26 Juil - 08:35 (2013)    Sujet du message: 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
Revenir en haut
Nuri Yuri
Administrateur
Administrateur


Inscrit le: 15 Oct 2008
Messages: 6 383
~Entity~
Localisation: Nancy
Non renseigné (Visible...)
ID Steam: Nuri_Yuri

MessagePosté le: Ven 26 Juil - 12:59 (2013)    Sujet du message: 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
Revenir en haut
Facebook Twitter
TouzaxA
Membre


Inscrit le: 27 Juil 2012
Messages: 2 669

MessagePosté le: Ven 26 Juil - 14:09 (2013)    Sujet du message: Triple choix

Si quelqu'un souhaite mettre des nombres à la place, il n'y a pas de problème: le code fonctionne aussi. ^^
Les membres suivants remercient TouzaxA pour ce message :
Nuri Yuri (26/07/13)
Revenir en haut
Rox
Membre


Inscrit le: 25 Juin 2010
Messages: 273
Survivant
Localisation: En cavale
Masculin

MessagePosté le: Lun 19 Aoû - 21:58 (2013)    Sujet du message: 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 ^^
Revenir en haut
TouzaxA
Membre


Inscrit le: 27 Juil 2012
Messages: 2 669

MessagePosté le: Mar 20 Aoû - 06:49 (2013)    Sujet du message: 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.
Revenir en haut
Rox
Membre


Inscrit le: 25 Juin 2010
Messages: 273
Survivant
Localisation: En cavale
Masculin

MessagePosté le: Mar 20 Aoû - 09:48 (2013)    Sujet du message: Triple choix

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


Inscrit le: 27 Juil 2012
Messages: 2 669

MessagePosté le: Mar 20 Aoû - 10:08 (2013)    Sujet du message: 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
Revenir en haut
Rox
Membre


Inscrit le: 25 Juin 2010
Messages: 273
Survivant
Localisation: En cavale
Masculin

MessagePosté le: Mar 20 Aoû - 11:35 (2013)    Sujet du message: 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
Revenir en haut
TouzaxA
Membre


Inscrit le: 27 Juil 2012
Messages: 2 669

MessagePosté le: Mar 20 Aoû - 11:36 (2013)    Sujet du message: Triple choix

Bah après je peux laisser aussi la possibilité. Faut voir. ^^
Revenir en haut
Nuri Yuri
Administrateur
Administrateur


Inscrit le: 15 Oct 2008
Messages: 6 383
~Entity~
Localisation: Nancy
Non renseigné (Visible...)
ID Steam: Nuri_Yuri

MessagePosté le: Mar 20 Aoû - 12:38 (2013)    Sujet du message: 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...
Revenir en haut
Facebook Twitter
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 16:50 (2017)    Sujet du message: Triple choix

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Pokémon Script Project Index du Forum -> Game Making -> Ressources techniques -> Scripts Toutes les heures sont au format GMT + 1 Heure
Aller à la page: 1, 2  >
Page 1 sur 2

 
Sauter vers:  

Index | Creer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une 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)
Traduction par : phpBB-fr.com