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

[Script] Manipuler des fenêtres avec des events

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


Joined: 11 Jan 2009
Posts: 1,725
Localisation: Aix
Masculin

PostPosted: Thu 28 Jan - 23:59 (2010)    Post subject: [Script] Manipuler des fenêtres avec des events

Salut !
Voici une de mes nouvelles créations, normalement déjà débugguée :lol:


Vous pourrez avec ce script:
  1. Créer des fenêtres
  2. Leur ajouter du contenu (images et textes)
  3. Modifier leur windowskin
  4. Leur donner du mouvement ! (dans n'importe quelle direction et vitesse
Et bien sûr, tout ça marche en event, pour que vous mes chers PSPistes n'ayez pas (ou presque) à bouger le petit doigt pour créer des interfaces et des fenêtres d'informations, voir pourquoi pas des nouvelles fenêtres de dialogue complètement personnalisées !!!

Le script à coller en dessous de interpreter Sphinx: (si vous m'aimez bien appelez le interpreter Len, sinon comme vous voulez 8) )


Code:

 class Interpreter
 
  def initialisation
    @windows = []
  end
 
  def nouvelle_fenetre(x,y,w,h,o)
    windowlen = Window_Base.new(x,y,w,h)
    windowlen.contents = Bitmap.new(w - 32, h - 32)
    windowlen.contents.font.name = $fontface
    windowlen.contents.font.size = $fontsize
    windowlen.opacity = o
    @windows.push(windowlen)
  end
 
  def fermer_fenetre(id)
    id -= 1
    if @windows[id].disposed?
      id += 1
      print "La fenetre " + id.to_s + " n'existe pas ou a déjà été fermée."
    else
      @windows[id].dispose
    end
  end
   
  def bouger_fenetre(id, speed, angle, len)
    id -= 1
    if @windows[id].disposed?
        id += 1
        print "La fenetre " + id.to_s + " n'existe pas ou a déjà été fermée."
    else
      path = 0
      angle = Math::PI*angle/180
      cosx = (Math.cos(angle)*speed).to_i
      siny =  (Math.sin(angle)*speed).to_i
      loop do
        path += 1
        @windows[id].x += cosx
        @windows[id].y -=  siny
        Graphics.update
        if path == len
          break
        end
      end
    end
  end
 
  def ajouter_image(id,x,y,o,file)
    id -= 1
    if @windows[id].disposed?
        id += 1
        print "La fenetre " + id.to_s + " n'existe pas ou a déjà été fermée."
    else
      bitmap = RPG::Cache.picture(file)
      rect = Rect.new(0, 0, bitmap.width, bitmap.height)
      @windows[id].contents.blt(x, y, bitmap, rect, o)
    end
  end
 
  def ajouter_texte(id,x,y,w,h,text, color, o)
    id -= 1
    if @windows[id].disposed?
        id += 1
        print "La fenetre " + id.to_s + " n'existe pas ou a déjà été fermée."
    else
      if w == "auto"
        w =  text.size
      end
      if h == "auto"
        h =  32
      end
      case color
         when "noir"
          color = Color.new(0,0,0,o)
        when "rouge"
          color = Color.new(255,0,0,o)
        when "blanc"
          color = Color.new(0,0,0,o)
        else
          color = Color.new(color[0,3].to_i,color[4,3].to_i,color[8,3].to_i,o)
      end
      @windows[id].contents.font.color = color
      @windows[id].contents.draw_text(x, y, w, h, text)
    end
  end
 
  def changer_skin(id, file)
    id -= 1
    if @windows[id].disposed?
      id += 1
      print "La fenetre " + id.to_s + " n'existe pas ou a déjà été fermée."
    else
      @windows[id].windowskin = RPG::Cache.windowskin(file)
    end
  end
 
end




Dans un event, insérez une commande de script tel que suit:



Ensuite, dans n'importe quel event, même celui où vous avez écrit initialisation précédemment, vous pouvez rentrer une de ces commandes.
id correspond au numéro de la fenêtre dans l'ordre de création (la 1ere porte le numéro 1, la 2e porte le numéro 2, ...etc).

Création d'une fenêtre:
nouvelle_fenetre(x,y,largeur,hauteur,opacité)
# largeur et hauteur doivent faire au minimum 32

Fermer une fenêtre:
fermer_fenetre(id)

Ajouter une image dans la fenêtre:
ajouter_image(id,x,y,opacité,"nom_du_fichier.png")

Ajouter un texte dans la fenêtre:
ajouter_texte(id,x,y,largeur,hauteur,"texte","couleur",opacité)
# ici largeur et hauteur peuvent être remplacé par "auto" et auront une taille de 32 par 32. Généralement hauteur reste en "auto"
# couleur peut-être "noir" ou "rouge" ou "blanc" ou "rrr,ggg,bbb" (obligatoirement sur 3 chiffres)


Changer le windowskin de la fenêtre:
changer_skin(id,"nom_du_fichier.png")

bouger_fenetre:
position_fenetre(id, vitesse, angle, longueur)
# vitesse est le nombre de pixel par frame dont la fenêtre va se déplacer. vitesse minimum = 2
# angle est en degré en sens trigo (inverse des aiguilles d'une montre: 0 va a droite et 180 va a gauche)
# longueur est le nombre de pixel dont la fenêtre doit se déplacer en direction de l'angle





Vous pouvez acceder a toutes les paramèters d'une fenêtre en connaissant son ID:


Code:

 @windows[7].width += 100


Agrandira la fenêtre 8 de 100 pixels de largeur.

Veuillez noter que cette fonction ne comporte pas de mode "débutant", la première fenêtre est à la position 0 du tableau, et non 1 comme pour les fonctions intégrées de base.
Certains effets intéressant de modifications de taille de la fenêtre en mouvement peuvent-être par exemple ainsi créés en suivant mon tutoriel sur l'animation des fenêtres ICI.


N'hésiter pas a demander plus d'explication sur certains points et à me proposer de nouvelles fonctions pour vous faciliter la vie.
Back to top
Publicité






PostPosted: Thu 28 Jan - 23:59 (2010)    Post subject: Publicité

PublicitéSupprimer les publicités ?
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: Fri 29 Jan - 00:05 (2010)    Post subject: [Script] Manipuler des fenêtres avec des events

Imbécile heureux Boulot magnifique lén ! Comme d'hab quoi ^o^


>> juste une ptite sugg : pourquoi ne pas utiliser une Hash (pour permettre au maker de choisir le nom par lequel il voudra appeler sa fenêtre) ^o^

En outre, une ptite question :! Actuellement j'en suis au tout début de la sérialisation de ces objets graphiques (sprites, bitmaps, ...) et les windows me posent encore qques pbs :! Comment tu gères ce pb pr les saves ? ^o^" (que sauvegardes tu, en fait, si tu sauvegardes qque chose)
Back to top
Lén
Ex-staff


Joined: 11 Jan 2009
Posts: 1,725
Localisation: Aix
Masculin

PostPosted: Fri 29 Jan - 14:42 (2010)    Post subject: [Script] Manipuler des fenêtres avec des events

MERCI :mrgreen:

Utiliser un hash ? ouais bonne idée ! Je m'y met :D

Je ne sauve rien. Mais je pense mettre une sauvegarde basique des données dans un fichier texte tout bête ... l'avantage ? ben déjà je m'embête pas avec les marshall ... et en plus le tricheur n'a rien a gagner a modifier un fichier de paramètre d'affichage XD

Qu'entends-tu par sérialisation ? :D
Back to top
GT.Onizuka
Membre


Joined: 17 Dec 2009
Posts: 976
Localisation: Tunis, TUNISIE

PostPosted: Fri 29 Jan - 19:51 (2010)    Post subject: [Script] Manipuler des fenêtres avec des events

J'adore je te remercie profondément pour ce script (bien que la vidéo ne fonctionne ou je suis) mais le script et les explications suffisent .
Merci !!!
Back to top
Skype
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: Fri 29 Jan - 21:35 (2010)    Post subject: [Script] Manipuler des fenêtres avec des events

>> sérialiser c'est enregistrer un objet dans un fichier (Marshal)

Imbécile heureux Et les objets graphiques ne sont pas sérialisables.
Back to top
Angi-MK
Membre


Joined: 29 Oct 2008
Posts: 2,303
Localisation: Québec
Masculin

PostPosted: Sat 30 Jan - 07:56 (2010)    Post subject: [Script] Manipuler des fenêtres avec des events

Beau gosse le Lénou, merci pour toute l'aide que tu m'a apporté et celle que tu continue de me fournir !
Back to top
Visit poster’s website
Lén
Ex-staff


Joined: 11 Jan 2009
Posts: 1,725
Localisation: Aix
Masculin

PostPosted: Sat 30 Jan - 22:51 (2010)    Post subject: [Script] Manipuler des fenêtres avec des events

Merci les gars  Petit saligaud mal élevé !

Je pensais qu'avec la fureur du DualScreen beaucoup de monde viendrait ici mais ... non !
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 | Cookies | Charte | 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)