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

Choix améliorés

 
Post new topic   Reply to topic    Pokémon Script Project Forum Index -> Game Making -> Ressources techniques -> Scripts
Previous topic :: Next topic   
Author Message
Sphinx
Scribe
Scribe


Joined: 07 Jan 2008
Posts: 9,736
Localisation: Quelque part, dans le monde... Ou peut être sur une autre planète...
ID Steam: FaQuinator

PostPosted: Thu 3 Jul - 01:13 (2008)    Post subject: Choix améliorés

Utilise :
Events
Graphismes
Mapping
Scénario
Scripts


Niveaux :
1 : aucune connaissances nécessaires (sauf lire et comprendre le français lu)
2 : quelques bases nécessaires pour pouvoir adapter sans mal le système proposé
3 : connaissances minimum nécessaires
4 : bonnes bases indispensables
5 : connaissances poussées requises


Niveau nécessaire en script :
2 : savoir lire et copier / coller des bouts de scripts et y apporter de petites modifs largement expliquées dans un script.
Nombre de scripts à créer / modifier : 1

Niveau nécessaire en évents :
3 : savoir maitriser les conditionnelles proposées plus bas pour ne pas avoir de problème d'utilisation.
Nombre d'évents à créer : 1 par choix, peut être intégré dans un autre évent, quelque soit son mode de lancement.

Ces niveaux sont à titre indicatifs, à la seule estimation de l'auteur. Lisez ce tutorial pour vous faire une idée plus précise et n'hésitez pas à demander de l'aide si nécessaire.


Sommaire

Note de l'auteur
Structure et position du script à insérer
Explication du morceau de script
Event nécessaire pour se servir du tutorial


Note de l'auteur 

Avant tout, je le dis souvent, mais il le faut, je suis avant tout Eventmaker, et, bien que mes tests aient marchés à la perfection, je ne peux prétendre proposer un système infaillible... Fiable, je suppose, infaillible, non... Cela ne veut évidement pas dire que ca ne marche pas, au contraire, chez moi ca marche... En outre, je tiens à ajouter le fait que ceci est mon premier gros bout de script (une fonction entière) que j'ai copié puis adapté aux besoins de chacuns... J'espère qu'il sera plus simple pour vous à utiliser que pour moi à le créer... ^^ Mais je me suis bien un peu (beaucoup) amusé quand même =)




Structure et position du script à insérer 

Position :
à mettre dans le script Interpreter (celui de la partie "--- Systeme General", et non ceux des scripts de base de RMXP), après :
Code:

  def draw_choice(arg1 = "OUI", arg2 = "NON")
    window = Window_Command.new(1, [arg1, arg2], $fontsizebig)
    width = [window.contents.text_size(arg1).width, window.contents.text_size(arg2).width].max + 16
    window.dispose
    @command = Window_Command.new(width + 32, [arg1, arg2], $fontsizebig)
    @command.x = 605 - width
    @command.y = 215
    loop do
      Graphics.update
      Input.update
      @command.update
      if Input.trigger?(Input::C) and @command.index == 0
        @command.dispose
        @command = nil
        #Input.update
        @wait_count = 2
        return true
      end
      if Input.trigger?(Input::C) and @command.index == 1
        @command.dispose
        @command = nil
        #Input.update
        @wait_count = 2
        return false
      end
    end
  end

soit vers les lignes 684 à 710.

Structure :
Voici un exemple avec 5 choix possibles. Pour rajouter des choix de ce type, il faut copier ce code (donc ici qui propose 5 choix, à savoir TEST 1, TEST 2, TEST 3, TEST 4 et Ben rien !) :
Code:

  def test_choice(arg1 = "TEST 1", arg2 = "TEST 2", arg3 = "TEST 3", arg4 = "TEST 4", arg5 = "Ben rien !")
    window = Window_Command.new(1, [arg1, arg2, arg3, arg4, arg5], $fontsizebig)
    width = [window.contents.text_size(arg1).width, window.contents.text_size(arg2).width, window.contents.text_size(arg3).width, window.contents.text_size(arg4).width, window.contents.text_size(arg5).width].max + 16
    window.dispose
    @command = Window_Command.new(width + 32, [arg1, arg2, arg3, arg4, arg5], $fontsizebig)
    @command.x = 605 - width
    @command.y = 86
    loop do
      Graphics.update
      Input.update
      @command.update
      if Input.trigger?(Input::C) and @command.index == 0
        $game_variables[516] = 1
        @command.dispose
        @command = nil
        #Input.update
        @wait_count = 2
        return true
      end
      if Input.trigger?(Input::C) and @command.index == 1
        $game_variables[516] = 2
        @command.dispose
        @command = nil
        #Input.update
        @wait_count = 2
        return true
      end
      if Input.trigger?(Input::C) and @command.index == 2
        $game_variables[516] = 3
        @command.dispose
        @command = nil
        #Input.update
        @wait_count = 2
        return true
      end
      if Input.trigger?(Input::C) and @command.index == 3
        $game_variables[516] = 4
        @command.dispose
        @command = nil
        #Input.update
        @wait_count = 2
        return true
      end
      if Input.trigger?(Input::C) and @command.index == 4
        @command.dispose
        @command = nil
        #Input.update
        @wait_count = 2
        return false
      end
    end
  end





Explication du morceau de script 

Ce code se décompose ainsi. D'abord, le nom de la commande à appeler en évent via l'option script des conditionnelles, ainsi que les options qui seront proposées. Leur nombre est quasiment illimité (euh, le soucis sera plus au niveau de la place disponible, en fait ^^")
Code:

def test_choice(arg1 = "Argument 1", arg2 = "Argument 2", arg3 = "Argument 3", arg4 = "Argument 4", arg5 = "Etc...")


Ensuite, voir les commentaires en bout de ligne pour les détails sur ce morceau. S'il n'y a aucun commentaire en fin de ligne, il ne faut pas y toucher =)
Code:

    window = Window_Command.new(1, [arg1, arg2, arg3, arg4, arg5], $fontsizebig) # indiquer dans les crochets autant d'arguments que vous en avez indiqué précédemment, séparés par des virgules
    width = [window.contents.text_size(arg1).width, window.contents.text_size(arg2).width, window.contents.text_size(arg3).width, window.contents.text_size(arg4).width, window.contents.text_size(arg5).width].max + 16 # ajouter autant de "window.contents.text_size(argX).width" (où X = n° de l'argument) dans les crochets que d'arguments précédemment paramétrés, séparés par des virgules.
    window.dispose
    @command = Window_Command.new(width + 32, [arg1, arg2, arg3, arg4, arg5], $fontsizebig) # encore une fois, ajouter autant de argX dans les crochets que nécessaires, et toujours séparés par des virgules
    @command.x = 605 - width
    @command.y = 86 # C'est la hauteur de la boite. Pour 2 options, la valeur de Y est égale à 215. Il faut retirer 43 pixels pour chaque option supplémentaire? Ainsi, pour 5 options (soit 3 de plus), la valeur de Y est bien égale à 86.
    loop do
      Graphics.update
      Input.update
      @command.update


Enfin, il faut ajouter ceci pour chaque argument. Encore une fois, voir en fin de ligne, pour les explications.
Code:

      if Input.trigger?(Input::C) and @command.index == 0 # Le chiffre à mettre ici correspond au n° de l'argument -1. Ainsi, l'argument 1 correspond à ce 0.
        $game_variables[XXX] = 1 # XXX = le n° de la variable qui stockera votre choix. Ici j'ai arbitrairement choisi d'enregistrer la valeur 1 pour l'argument 1. J'aurais très bien pu mettre 5095438 si je l'avais souhaité...
        @command.dispose
        @command = nil
        #Input.update
        @wait_count = 2
        return true # cette ligne est très importante. Sans elle, la méthode de choix buggerait, j'ai testé. Lorsque vous créerez votre évent de choix, vous appellerez cette méthode comme décrit plus loin grace à une conditionnelle. Ici, réglez true si vous souhaitez que la conditionnelle renvoie une valeur vraie et agisse en conséquence, ou false dans le cas contraire.
      end





Event nécessaire pour se servir du tutorial 

L'évent, lui, est relativement simple. Voici celui que j'ai utilisé pour mes tests. Encore une fois, il est adapté pour mes 5 choix possibles, 4 renvoyant la valeur "vrai" à la fonction test_choice, la dernière renvoyant la valeur "faux" à cette même fonction

 


L'évent, lui est très simple à comprendre. Bien sûr, dans chacune des conditions, vous pouvez utiliser toutes les commandes d'évent disponibles dans PSP_mod.
Back to top
Publicité






PostPosted: Thu 3 Jul - 01:13 (2008)    Post subject: Publicité

PublicitéSupprimer les publicités ?
Back to top
Dark'
Membre


Joined: 16 Feb 2008
Posts: 1,528
Localisation: Bangkok

PostPosted: Thu 3 Jul - 11:09 (2008)    Post subject: Choix améliorés

J'ai pas tout compris, mais si je voulais comprendre, je pense que j'aurais compris.

Deux questions :

Un exemple concret de à quoi ça sert ?
Un screen du rendu ?
Back to top
Newtiteuf
Membre


Joined: 22 May 2008
Posts: 5,090
Localisation: Sur PC (enfin devant ...)

PostPosted: Thu 3 Jul - 11:18 (2008)    Post subject: Choix améliorés

oui ca serait pas mal, car je n'ai pas tout compris !
Back to top
Visit poster’s website
Sphinx
Scribe
Scribe


Joined: 07 Jan 2008
Posts: 9,736
Localisation: Quelque part, dans le monde... Ou peut être sur une autre planète...
ID Steam: FaQuinator

PostPosted: Thu 3 Jul - 12:14 (2008)    Post subject: Choix améliorés

=) exemple concret : un distributeur, par exemple =)


^_^ pour les screens, je vais vous faire ca =) (^^" mais jpx tj pas prendre de vidéo de mon jeu, dc bon xP, je le mets de suite : avant le distributeur, mon sac sera totalement vide Clin d'œil foireux)


le code de mon distrib :
Code:
  def distributeur(arg1 = "EAU FRAICHE  200$", arg2 = "SODA COOL     300$", arg3 = "LIMONADE      350$", arg4 = "RETOUR")
    window = Window_Command.new(1, [arg1, arg2, arg3, arg4], $fontsizebig)
    width = [window.contents.text_size(arg1).width, window.contents.text_size(arg2).width, window.contents.text_size(arg3).width, window.contents.text_size(arg4).width].max + 16
    window.dispose
    @command = Window_Command.new(width + 32, [arg1, arg2, arg3, arg4], $fontsizebig)
    @command.x = 605 - width
    @command.y = 2
    loop do
      Graphics.update
      Input.update
      @command.update
      if Input.trigger?(Input::C) and @command.index == 0
        if $pokemon_party.money < 200
          $game_system.se_play($data_system.buzzer_se)
          @command.dispose
          @command = nil
          return
        end
        $game_variables[516] = 1
        @command.dispose
        @command = nil
        #Input.update
        @wait_count = 2
        return true
      end
      if Input.trigger?(Input::C) and @command.index == 1
        if $pokemon_party.money < 300
          $game_system.se_play($data_system.buzzer_se)
          @command.dispose
          @command = nil
          return
        end
        $game_variables[516] = 2
        @command.dispose
        @command = nil
        #Input.update
        @wait_count = 2
        return true
      end
      if Input.trigger?(Input::C) and @command.index == 2
        if $pokemon_party.money < 350
          $game_system.se_play($data_system.buzzer_se)
          @command.dispose
          @command = nil
          return
        end
        $game_variables[516] = 3
        @command.dispose
        @command = nil
        #Input.update
        @wait_count = 2
        return true
      end
      if Input.trigger?(Input::C) and @command.index == 3
        @command.dispose
        @command = nil
        #Input.update
        @wait_count = 2
        return false
      end
      if Input.trigger?(Input::B)
        $game_system.se_play($data_system.cancel_se)
        @command.dispose
        @command = nil
        #Input.update
        @wait_count = 2
        return false
      end
    end
  end



L'évent :



Screen du distributeur :



^_^ Voilà le distrib officiel de R/S/E =)
Back to top
Dark'
Membre


Joined: 16 Feb 2008
Posts: 1,528
Localisation: Bangkok

PostPosted: Thu 3 Jul - 12:20 (2008)    Post subject: Choix améliorés

Et c'est peut-être un script du genre qui aurait servi dans le choix du Starter du VPS ?
Back to top
Sphinx
Scribe
Scribe


Joined: 07 Jan 2008
Posts: 9,736
Localisation: Quelque part, dans le monde... Ou peut être sur une autre planète...
ID Steam: FaQuinator

PostPosted: Thu 3 Jul - 12:34 (2008)    Post subject: Choix améliorés

Clin d'œil foireux tu peux également le faire, tu sais ?


ah oui, sur le 2° script, la partie
Code:
      if Input.trigger?(Input::B)
        $game_system.se_play($data_system.cancel_se)
        @command.dispose
        @command = nil
        #Input.update
        @wait_count = 2
        return false
      end


sert à terminer le choix (par la valeur FAUX en réponse à la condition distributeur) si on appuie sur Echap =)


Vous pouvez l'enlever, dans ce cas le fait d'appuyer sur Echap ne fera rien ^^
Back to top
Newtiteuf
Membre


Joined: 22 May 2008
Posts: 5,090
Localisation: Sur PC (enfin devant ...)

PostPosted: Thu 3 Jul - 12:42 (2008)    Post subject: Choix améliorés

merci sphinx, mais dans ton exempple l'event retire 200 P$ a chaque fois alors que le boissons ne coute pas le meme prix ! (c'est les soldes c'est ca !)


PS: J'aime bien voir ton gars dans le désert avec un distributeur invisible ... quel chance !
Back to top
Visit poster’s website
Sphinx
Scribe
Scribe


Joined: 07 Jan 2008
Posts: 9,736
Localisation: Quelque part, dans le monde... Ou peut être sur une autre planète...
ID Steam: FaQuinator

PostPosted: Thu 3 Jul - 12:44 (2008)    Post subject: Choix améliorés

oops, ca c'est le problème d'un copier / coller mal fait ^^" enfin bon, z'avez capté l'idée, c'est le principal Petit saligaud mal élevé
Back to top
Newtiteuf
Membre


Joined: 22 May 2008
Posts: 5,090
Localisation: Sur PC (enfin devant ...)

PostPosted: Thu 3 Jul - 13:00 (2008)    Post subject: Choix améliorés

nn le principal c'est que ton gars est un distributeir invisible au milieu du désert pour pouvoir boire ^^
Back to top
Visit poster’s website
Sphinx
Scribe
Scribe


Joined: 07 Jan 2008
Posts: 9,736
Localisation: Quelque part, dans le monde... Ou peut être sur une autre planète...
ID Steam: FaQuinator

PostPosted: Thu 3 Jul - 16:10 (2008)    Post subject: Choix améliorés

:lol: C'est la magie du making, ca 8)


:lol: allez, prends donc une limonade, jte l'offre ^^
Back to top
Zelda
Ex-staff


Joined: 29 Apr 2008
Posts: 2,442
Localisation: Nantes (44)

PostPosted: Wed 26 Nov - 20:40 (2008)    Post subject: Choix améliorés

Je te remercie ! +1 ! Pratique pour sélectionner l'étage de l'ascenseur Imbécile heureux
Back to top
Visit poster’s website
Sphinx
Scribe
Scribe


Joined: 07 Jan 2008
Posts: 9,736
Localisation: Quelque part, dans le monde... Ou peut être sur une autre planète...
ID Steam: FaQuinator

PostPosted: Wed 26 Nov - 21:06 (2008)    Post subject: Choix améliorés

=) c'est un autre exemple d'application =)
Back to top
Contenu Sponsorisé






PostPosted: Today at 10:20 (2019)    Post subject: Choix améliorés

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
Page 1 of 1

 
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)