RPG Creator : créez votre MMORPG ou RPG sans aucune connaissance en programmation


Disponible le 4 Juin !




- Jouez à votre jeu sur tablettes tactiles, Smartphones et navigateurs Web
- Personnalisez vos menus
- Dessinez facilement et rapidement vos cartes
- Créez des actions pour le combat A-RPG


www.rpgcreator.net


Heures au format UTC + 1 heure [ Heure d’été ]


Règles du forum


Consultez la liste des Scripts : cliquez ici



Publier un nouveau sujet Répondre au sujet  [ 6 messages ] 
Auteur Message
 Sujet du message: Créer des fenêtres facilement
MessagePublié: 22 Jan 2012, 00:27 
Artisan (Nv 5)
Avatar de l’utilisateur

Inscrit le: 22 Nov 2011, 22:01
Messages: 199
Niveau RPG Maker: Moyen
Logiciel(s) préféré(s): RPG Maker XP
Point(s) Fort(s): Scripts
Sexe: Masculin
Points d'aide: 17/60

Créations :

Voir ses créations

Salut tout le monde,

Auteur: Bad_maker
Script: EasyWindowsCreator :D
Description: Permet de créer des fenêtres facilement via la commande "insérer script"
en événement. Ce script est avant tout dédié aux makers n'ayant pas de connaissance
particulière en ruby. Le code est à copier et coller dans un nouveau script au dessus de main.
La fenêtre est créée et le joueur peut encore contrôler son personnage car il n'y a pas
eu de changement de scène.
Utilisation:
Tout d'abord il faut créer la fenêtre.
Code: Tout sélectionner
nom = "fenetre1"
creer_fenetre(nom)

On peut très bien faire comme ça aussi.
Code: Tout sélectionner
creer_fenetre("fenetre1")

J'ai crée une fenêtre qui s'appelle fenetre1.
Par défaut la fenêtre est aux positions x: 0 et y: 0 (en pixels) et elle
mesure 640 pixels de large sur 480 en hauteur. Cette fenêtre est invisible car
elle à une opacité égale à 0 (opacité = transparence) ce qui est très pratique! On peut
à l'avance créer ses fenêtres avec les propriétés que l'on veut et les faire apparaître
et disparaître quand on le souhaite.

Cette fenêtre prend tout l'écran, on peut en modifier les dimensions et les positions.
Code: Tout sélectionner
nom = "fenetre1" # nom de la fenêtre à modifier
x = 32 # position x de la fenêtre
y = 32 # position y de la fenêtre
width = 200 # largeur de la fenêtre
height = 200 # longueur de la fenêtre
redimensionner_fenetre(nom, x , y, width, height)

Ou
Code: Tout sélectionner
redimensionner_fenetre("fenetre1", 32, 32, 200, 200)

Ça y est la fenêtre est redimensionnée, mais on ne la voit toujours pas.
On verra comment l'afficher juste après. D'abord je vais vous montrer comment
afficher un texte dans cette fenêtre.
Code: Tout sélectionner
nom = "fenetre1"
texte = "Super une fenêtre !"
x = 0 # On peut raccourcir
y = 0 # ici assez facilement en écrivant
positions = [x, y] # positions = [0, 0]
id = 1 # texte n°1 (il faut préciser l'id du texte pour en afficher
       # plusieurs sur la même fenêtre
texte_fenetre(nom, texte, positions, id)

Ou
Code: Tout sélectionner
texte_fenetre("fenetre1", "Super une fenêtre !", [0, 0], 1)

Là le code que l'on écrit va écrire dans la fenêtre "fenetre1" le texte
Super une fenêtre ! aux positions x: 0 et y: 0;
en modifiant x on décale le texte horizontalement et y, verticalement.

- Mouais, pas terrible tous ça je vois rien!
- Attends j'y viens... juste après t'avoir montré comment on affiche une icone :mrgreen:
Code: Tout sélectionner
nom = "fenetre1"
nom_icone = "001-Weapon01" # c'est le nom de l'icone présent dans les rtp de xp.
positions = [0, 32] # ce sont les positions x et y de l'icône.
id = 1 # icône numéro 1, fonctionne comme pour le texte.
icone_fenetre(nom, nom_icone, positions, id)

Ou
Code: Tout sélectionner
icone_fenetre("fenetre1", "001-Weapon01", [0, 32], 1)

La fenêtre à un texte et une icone, on peut maintenant l'afficher.
Code: Tout sélectionner
nom = "fenetre1"
opacite = 90 # la fenetre est environ visible à 35% le calcul est (90/255)*100
afficher_fenetre(nom, opacite)

Ou
Code: Tout sélectionner
afficher_fenetre("fenetre1", 90)

Voilà la fenêtre s'affiche mais pas à 35%! (C'est pas visible mais je le sais :lol: )
J'ai fait exprès une erreur (enfin erreur est un grand mot). Quand on tente d'afficher
une fenêtre avec une opacité inférieur à 100, et pas 100% je change automatiquement
celle-ci à 100 (Pour bien marquer la différence entre une fenêtre cachée et affichée,
car on peut cacher une fenêtre en lui laissant une opacité supérieure à 0 et inférieure à
50. Oui cacher n'est pas forcément le bon terme mais bon.
Résumons, le code aurait pu s'écrire:
Code: Tout sélectionner
nom = "fenetre1"
texte = "Super une fenêtre !"
nom_icone = "001-Weapon01"
creer_fenetre(nom)
redimensionner_fenetre(nom, 32, 32, 200, 200)
texte_fenetre(nom, texte, [0, 0], 1)
icone_fenetre(nom, nom_icone, [0, 32], 1)


Bon pour l'instant la fenêtre ne s'efface pas car on a pas dit de la supprimer.
Je vous laisse avec une liste des méthodes qui peuvent servir.
J'en ajouterais bien sûr car le code n'est pas terminé.

Vous vous en êtes peut-être pas rendu compte mais vous avez fait du ruby!
C'est bien hein? :lol:

Liste des méthodes:
Les astérisques(*) désignent des champs facultatifs.

creer_fenetre(nom)
Permet de créer une fenêtre.
nom: lettres entre guillemets

afficher_fenetre(nom, opacité*)
Permet d'afficher une fenêtre.
nom: lettres entre guillemets
opacité: nombre

cacher_fenetre(nom, opacité*)
Permet de cacher une fenêtre et son contenu.
nom: lettres entre guillemets
opacité: nombre

cacher_fenetreW(nom, opacité*)
Permet de cacher uniquement la fenêtre et d'en voir le contenu.
nom: lettres entre guillemets
opacité: nombre

cacher_fenetreC(nom, opacité*)
Permet de cacher uniquement le contenu d'une fenêtre.
nom: lettres entre guillemets
opacité: nombre

hauteur_fenetre(nom, hauteur)
Permet de régler la priorité d'affichage d'une fenêtre; sa hauteur.
nom: lettres entre guillemets
hauteur: nombre

actualiser_fenetre(nom)
Permet de mettre à jour une fenêtre.
Très important pour certaines méthodes, gère tous ce qui varie dans
la fenêtre, temps, jeux d'opacité etc, donc à ne pas oublier /!\

nom: lettres entre guillemets

supprimer_fenetre(nom)
Permet de supprimer une fenêtre.
nom: lettres entre guillemets

redimensionner_fenetre(nom, x, y, width, height)
Permet de redimensionner et déplacer la fenêtre.
nom: lettres entre guillemets
x, y, width, height: nombre

texte_fenetre(nom, texte, positions*, id*)
Permet d'afficher un texte dans une fenêtre.
nom: lettres entre guillemets
texte: lettres entre guillemets
positions: tableau
id: nombre

icone_fenetre(nom, nom_icone, positions*, id*)
Permet d'afficher une icône dans une fenêtre.
nom: lettres entre guillemets
nom_icone: lettres entre guillemets
positions: tableau
id: nombre

perso_fenetre(nom, id_personnage, positions*, id*)
Permet d'afficher le charas d'un personnage selon sa position dans l'équipe.
nom: lettres entre guillemets.
id_personnage: nombre
positions: tableau
id: nombre

bddperso_fenetre(nom, id_personnage, positions*, id*)
Permet d'afficher le charas d'un personnage selon son id dans la base de données.
nom: lettres entre guillemets
id_personnage: nombre
positions: tableau
id: nombre

image_fenetre(nom, nom_image, positions*, id*)
Permet d'afficher une image du dossier Pictures.
nom: lettres entre guillemets
nom_image: lettres entre guillemets
positions: tableau
id: nombre

variable_fenetre(nom, id_variable, positions*, id*)
Permet d'afficher la valeur d'une variable.
nom: lettres entre guillemets
id_variable: nombre
positions: tableau
id: nombre

monnaie_fenetre(nom, positions)
Permet d'afficher le montant d'argent possédé.
nom: lettres entre guillemets
positions: tableau

pas_fenetre(nom, positions)
Permet d'afficher le nombre de pas.
nom: lettres entre guillemets
positions: tableau

temps_fenetre(nom, positions)
Permet d'afficher le temps de jeu.
nom: lettres entre guillemets
positions: tableau

bloquer_le_heros
Permet de bloquer les mouvements du héros.

debloquer_le _heros
Permet de débloquer les mouvements du héros.

Code:
Code: Tout sélectionner
# ==============================================================================
# Window_Base
# ==============================================================================
class Window_Base < Window
  # --------------------------------
  # draw_icon
  # --------------------------------
  def draw_one_icon(name, pos=[0, 0])
    self.contents.clear
    bitmap = RPG::Cache.icon(name)
    x = pos[0] ; y = pos[1]
    cw = bitmap.width ; ch = bitmap.height
    src_rect = Rect.new(0, 0, cw, ch)
    self.contents.blt(x, y, bitmap, src_rect)
  end
  # --------------------------------
  # draw_picture
  # --------------------------------
  def draw_one_picture(name, pos=[0, 0])
    bitmap = RPG::Cache.picture(name)
    x = pos[0] ; y = pos[1]
    cw = bitmap.width ; ch = bitmap.height
    src_rect = Rect.new(0, 0, cw, ch)
    self.contents.blt(x, y, bitmap, src_rect)
  end
end

# ==============================================================================
# Fenetre_Text
# ==============================================================================
class Fenetre_Text < Window_Base
  def initialize(x, y, width, height)
    super(x, y, width, height)
    self.contents = Bitmap.new(width - 32, height - 32)
    $fontface = "Arial" if defined?($fontface).nil?
    $fontsize = 18 if defined?($fontsize).nil?
    self.contents.font.name = $fontface
    self.contents.font.size = $fontsize
    self.opacity = 0
  end
  def set_text(text, pos)
    self.contents.clear
    self.contents.draw_text(pos[0], pos[1], self.width-32, 24, text)
  end
  def update
  end
end

# ==============================================================================
# Fenetre_Icon
# ==============================================================================
class Fenetre_Icon < Window_Base
  def initialize(x, y, width, height)
    super(x, y, width, height)
    self.contents = Bitmap.new(width - 32, height - 32)
    $fontface = "Arial" if defined?($fontface).nil?
    $fontsize = 18 if defined?($fontsize).nil?
    self.contents.font.name = $fontface
    self.contents.font.size = $fontsize
    self.opacity = 0
  end
end

# ==============================================================================
# Fenetre_Var
# ==============================================================================
class Fenetre_Var < Window_Base
  def initialize(x, y, width, height)
    super(x, y, width, height)
    self.contents = Bitmap.new(width - 32, height - 32)
    $fontface = "Arial" if defined?($fontface).nil?
    $fontsize = 18 if defined?($fontsize).nil?
    self.contents.font.name = $fontface
    self.contents.font.size = $fontsize
    self.opacity = 0
  end
  def update(nom, id)
    pos = $fenetre["#{nom}Variable#{id}Pos"]
    id_variable = $fenetre["#{nom}Variable#{id}id"]
    variable = $game_variables[id_variable]
    self.contents.clear
    self.contents.draw_text(pos[0], pos[1], self.width-32, 24, variable.to_s)
  end
end

# ==============================================================================
# Auteur: Bad_maker
# -----------------
# Quelques méthodes qui permettent aux makers sans connaitre le vocabulaire
# du ruby et ainsi gagner du temps sur mes menus customisés etc...
# ==============================================================================
def creer_fenetre(nom)
  $fenetre = Hash.new if $fenetre == nil
  $fenetre[nom] = Window_Base.new(0,0,640,480)
  width = $fenetre[nom].width
  height = $fenetre[nom].height
  $fenetre[nom].contents = Bitmap.new(width - 32, height - 32)
  $fontface = "Arial" if defined?($fontface).nil?
  $fontsize = 18 if defined?($fontsize).nil?
  $fenetre[nom].contents.font.name = $fontface
  $fenetre[nom].contents.font.size = $fontsize
  $fenetre[nom].opacity = 0
end
def afficher_fenetre(nom, opacity = 255)
  opacity = 100 if opacity < 100
  $fenetre[nom].opacity = opacity
  $fenetre[nom].contents_opacity = 255
end
def cacher_fenetre(nom, opacity = 0)
  opacity = 50 if opacity > 50
  $fenetre[nom].opacity = opacity
  $fenetre[nom].contents_opacity = opacity
end
def cacher_fenetreW(nom, opacity = 0)
  opacity = 50 if opacity > 50
  $fenetre[nom].opacity = opacity
  for i in 1..50
    if $fenetre["#{nom}Text#{i}"] != nil
      $fenetre["#{nom}Text#{i}"].opacity = opacity
    end
    if $fenetre["#{nom}Icon#{i}"] != nil
      $fenetre["#{nom}Icon#{i}"].opacity = opacity
    end
    if $fenetre["#{nom}Charas#{i}"] != nil
      $fenetre["#{nom}Charas#{i}"].opacity = opacity
    end
    if $fenetre["#{nom}bddCharas#{i}"] != nil
      $fenetre["#{nom}bddCharas#{i}"].opacity = opacity
    end
    if $fenetre["#{nom}Picture#{i}"] != nil
      $fenetre["#{nom}Picture#{i}"].opacity = opacity
    end
    if $fenetre["#{nom}Variable#{i}"] != nil
      $fenetre["#{nom}Variable#{i}"].opacity = opacity
    end
  end
  if $fenetre["#{nom}Playtime"] != nil
    $fenetre["#{nom}Playtime"].opacity = opacity
  end
  if $fenetre["#{nom}Gold"] != nil
    $fenetre["#{nom}Gold"].opacity = opacity
  end
  if $fenetre["#{nom}Steps"] != nil
    $fenetre["#{nom}Steps"].opacity = opacity
  end
end
def cacher_fenetreC(nom, opacity = 0)
  opacity = 50 if opacity > 50
  $fenetre[nom].contents_opacity = opacity
  for i in 1..50
    if $fenetre["#{nom}Text#{i}"] != nil
      $fenetre["#{nom}Text#{i}"].contents_opacity = opacity
    end
    if $fenetre["#{nom}Icon#{i}"] != nil
      $fenetre["#{nom}Icon#{i}"].opacity = opacity
    end
    if $fenetre["#{nom}Charas#{i}"] != nil
      $fenetre["#{nom}Charas#{i}"].opacity = opacity
    end
    if $fenetre["#{nom}bddCharas#{i}"] != nil
      $fenetre["#{nom}bddCharas#{i}"].opacity = opacity
    end
    if $fenetre["#{nom}Picture#{i}"] != nil
      $fenetre["#{nom}Picture#{i}"].opacity = opacity
    end
    if $fenetre["#{nom}Variable#{i}"] != nil
      $fenetre["#{nom}Variable#{i}"].opacity = opacity
    end
  end
  if $fenetre["#{nom}Playtime"] != nil
    $fenetre["#{nom}Playtime"].opacity = opacity
  end
  if $fenetre["#{nom}Gold"] != nil
    $fenetre["#{nom}Gold"].opacity = opacity
  end
  if $fenetre["#{nom}Steps"] != nil
    $fenetre["#{nom}Steps"].opacity = opacity
  end
end
def hauteur_fenetre(nom, z) ; $fenetre[nom].z = z ; end
def actualiser_fenetre(nom)
  for i in 1..50
    $fenetre[nom].update
    if $fenetre["#{nom}Text#{i}"] != nil
      $fenetre["#{nom}Text#{i}"].update
    end
    if $fenetre["#{nom}Icon#{i}"] != nil
      $fenetre["#{nom}Icon#{i}"].update
    end
    if $fenetre["#{nom}Charas#{i}"] != nil
      $fenetre["#{nom}Charas#{i}"].update
    end
    if $fenetre["#{nom}bddCharas#{i}"] != nil
      $fenetre["#{nom}bddCharas#{i}"].update
    end
    if $fenetre["#{nom}Picture#{i}"] != nil
      $fenetre["#{nom}Picture#{i}"].update
    end
    if $fenetre["#{nom}Variable#{i}"] != nil
      $fenetre["#{nom}Variable#{i}"].update(nom, i)
    end
  end
  if $fenetre["#{nom}Playtime"] != nil
    $fenetre["#{nom}Playtime"].update
  end
  if $fenetre["#{nom}Gold"] != nil
    $fenetre["#{nom}Gold"].refresh
  end
  if $fenetre["#{nom}Steps"] != nil
    $fenetre["#{nom}Steps"].refresh
  end
end
def supprimer_fenetre(nom)
  $fenetre[nom].dispose
  $fenetre[nom] = nil
end
def redimensionner_fenetre(nom, x, y, width, height)
  $fenetre[nom] = nil
  $fenetre[nom] = Window_Base.new(x, y, width, height)
  $fenetre[nom].contents = Bitmap.new(width - 32, height - 32)
  $fenetre[nom].contents.font.name = $fontface
  $fenetre[nom].contents.font.size = $fontsize
end
def texte_fenetre(nom, texte, pos = [0, 0], id = 1)
  x = $fenetre[nom].x
  y = $fenetre[nom].y
  width = $fenetre[nom].width
  height = $fenetre[nom].height
  if $fenetre[nom+"Text"+id.to_s] == nil
    $fenetre["#{nom}Text#{id}"] = Fenetre_Text.new(x, y, width, height)
  end
  $fenetre["#{nom}Text#{id}"].set_text(texte, pos)
  $fenetre["#{nom}Text#{id}"].z = $fenetre[nom].z+1
end
def icone_fenetre(nom, nom_icone, pos = [0, 0], id = 1)
  x = $fenetre[nom].x
  y = $fenetre[nom].y
  width = $fenetre[nom].width
  height = $fenetre[nom].height
  if $fenetre[nom+"Icon"+id.to_s] == nil
    $fenetre["#{nom}Icon#{id}"] = Fenetre_Icon.new(x, y, width, height)
  end
  $fenetre["#{nom}Icon#{id}"].draw_one_icon(nom_icone, pos)
  $fenetre["#{nom}Icon#{id}"].z = $fenetre[nom].z+1
  $fenetre["#{nom}Icon#{id}"].opacity = $fenetre[nom].opacity
end
def perso_fenetre(nom, id_heros, pos = [0, 0], id = 1)
  actor = $game_party.actors[id_heros]
  x = $fenetre[nom].x
  y = $fenetre[nom].y
  width = $fenetre[nom].width
  height = $fenetre[nom].height
  if $fenetre[nom+"Charas"+id.to_s] == nil
    $fenetre["#{nom}Charas#{id}"] = Fenetre_Icon.new(x, y, width, height)
  end
  $fenetre["#{nom}Charas#{id}"].draw_actor_graphic(actor, pos[0]+16, pos[1]+48)
  $fenetre["#{nom}Charas#{id}"].z = $fenetre[nom].z+1
  $fenetre["#{nom}Charas#{id}"].opacity = $fenetre[nom].opacity
end
def bddperso_fenetre(nom, id_heros, pos = [0, 0], id = 1)
  actor = $game_actors[id_heros]
  x = $fenetre[nom].x
  y = $fenetre[nom].y
  width = $fenetre[nom].width
  height = $fenetre[nom].height
  if $fenetre[nom+"bddCharas"+id.to_s] == nil
    $fenetre["#{nom}bddCharas#{id}"] = Fenetre_Icon.new(x, y, width, height)
  end
  $fenetre["#{nom}bddCharas#{id}"].draw_actor_graphic(actor,pos[0]+16,pos[1]+48)
  $fenetre["#{nom}bddCharas#{id}"].z = $fenetre[nom].z+1
  $fenetre["#{nom}bddCharas#{id}"].opacity = $fenetre[nom].opacity
end
def image_fenetre(nom, nom_image, pos = [0, 0], id = 1)
  x = $fenetre[nom].x
  y = $fenetre[nom].y
  width = $fenetre[nom].width
  height = $fenetre[nom].height
  if $fenetre[nom+"Picture"+id.to_s] == nil
    $fenetre["#{nom}Picture#{id}"] = Fenetre_Icon.new(x, y, width, height)
  end
  $fenetre["#{nom}Picture#{id}"].draw_one_picture(nom_image, pos)
  $fenetre["#{nom}Picture#{id}"].z = $fenetre[nom].z+1
  $fenetre["#{nom}Picture#{id}"].opacity = $fenetre[nom].opacity
end
def variable_fenetre(nom, id_variable, pos = [0, 0], id = 1)
  x = $fenetre[nom].x
  y = $fenetre[nom].y
  width = $fenetre[nom].width
  height = $fenetre[nom].height
  if $fenetre[nom+"Variable"+id.to_s] == nil
    $fenetre["#{nom}Variable#{id}"] = Fenetre_Var.new(x, y, width, height)
  end
  $fenetre["#{nom}Variable#{id}"].z = $fenetre[nom].z+1
  $fenetre["#{nom}Variable#{id}"].opacity = $fenetre[nom].opacity
  $fenetre["#{nom}Variable#{id}id"] = id_variable
  $fenetre["#{nom}Variable#{id}Pos"] = pos
  $fenetre["#{nom}Variable#{id}"].update(nom, id)
end
def monnaie_fenetre(nom, pos = [0, 0])
  $fenetre["#{nom}Gold"] = Window_Gold.new
  $fenetre["#{nom}Gold"].x = $fenetre[nom].x+pos[0]
  $fenetre["#{nom}Gold"].y = $fenetre[nom].y+pos[1]-4
  $fenetre["#{nom}Gold"].z = $fenetre[nom].z+1
  $fenetre["#{nom}Gold"].opacity = 0
end
def pas_fenetre(nom, pos = [0, 0])
  $fenetre["#{nom}Steps"] = Window_Steps.new
  $fenetre["#{nom}Steps"].x = $fenetre[nom].x+pos[0]
  $fenetre["#{nom}Steps"].y = $fenetre[nom].y+pos[1]-4
  $fenetre["#{nom}Steps"].z = $fenetre[nom].z+1
  $fenetre["#{nom}Steps"].opacity = 0
end
def temps_fenetre(nom, pos = [0, 0])
  $fenetre["#{nom}Playtime"] = Window_PlayTime.new
  $fenetre["#{nom}Playtime"].x = $fenetre[nom].x+pos[0]
  $fenetre["#{nom}Playtime"].y = $fenetre[nom].y+pos[1]
  $fenetre["#{nom}Playtime"].z = $fenetre[nom].z+1
  $fenetre["#{nom}Playtime"].opacity = 0
end
def bloquer_le_heros
  $game_temp.message_window_showing = true
end
def debloquer_le_heros
  $game_temp.message_window_showing = false
end


J'ajouterais d'autres méthodes en simplifiant le plus possible les codes,
du mieux que je puisse faire en tous cas.

A venir:
Afficher un charas selon sa place dans l'équipe fait
Afficher une image (picture) fait
Afficher un charas selon sa place dans la base de données fait
Afficher une variable fait
Afficher le montant d'argent fait
Afficher le nombre de pas fait
Afficher le temps de jeu fait
Afficher le nom de la map
Condition d'appel des méthodes simplifié

Projet abandonné.

_________________
--- Bad_maker ---

_________________


3 PA donné(s) par Samarium le 22 Janvier 2012


Dernière édition par Bad_maker le 04 Avr 2012, 21:39, édité 21 fois au total.

Haut
 Profil  
 
 Sujet du message: Re: Créer des fenêtres facilement
MessagePublié: 22 Jan 2012, 01:40 
Garde
Garde
Avatar de l’utilisateur

Inscrit le: 27 Fév 2007, 01:00
Messages: 1438
Localisation: France
Niveau RPG Maker: Plutôt bon
Logiciel(s) préféré(s): RMXP
Point(s) Fort(s): Event Making
Sexe: Masculin
Points d'aide: Illimité

Créations :

Voir ses créations

Effectivement, les possibilités sont encore limitées, mais en tout cas, c'est en bonne voie.
Ça devrait permettre plein de trucs (huds, menus) une fois fini. Utile pour ceux qui n'aiment pas trop se prendre la tête avec les événements.

Merci du partage.

_________________
« Travailler en collaboration, cela veut dire prendre la moitié de son temps à expliquer aux autres que leurs idées sont stupides. »
- Georges Molinski

« J'adore aider les gens mais je deteste aider des personnes qui n'en valent pas la peine. »
- Lidenvice


Haut
 Profil  
 
 Sujet du message: Re: Créer des fenêtres facilement
MessagePublié: 22 Jan 2012, 02:51 
Artisan (Nv 3)
Avatar de l’utilisateur

Inscrit le: 23 Déc 2008, 01:00
Messages: 149
Niveau RPG Maker: moyen
Logiciel(s) préféré(s): XP
Point(s) Fort(s): système D ; event ; scénario
Sexe: Masculin
Points d'aide: 0/60

Créations :

Voir ses créations

Ya pas encore suffisament de possibilité pour que ce soit réellement utile comme tu l'as dit, mais en tout cas je suis persuader qu'une fois un peu plus développer ça sera très utile à quelqu'un de très mauvais en ruby comme moi.
Merci ^^


Haut
 Profil  
 
 Sujet du message: Re: Créer des fenêtres facilement
MessagePublié: 22 Jan 2012, 03:24 
Artisan (Nv 5)
Avatar de l’utilisateur

Inscrit le: 22 Nov 2011, 22:01
Messages: 199
Niveau RPG Maker: Moyen
Logiciel(s) préféré(s): RPG Maker XP
Point(s) Fort(s): Scripts
Sexe: Masculin
Points d'aide: 17/60

Créations :

Voir ses créations

Merci pour les commentaires,

J'ai éditer le post, j'ai ajouté deux fonctions bien utile.
cacher_fenetreW et cacher_fenetreC.
On peut soit cacher les contents soit le fond de la fenêtre.
J'ai testé un début de HUD custom.
Image
J'ai rajouté d'autres petits trucs à faire en passant.

Edit: Merci pour les pa Sam.

_________________
--- Bad_maker ---


Haut
 Profil  
 
 Sujet du message: Re: Créer des fenêtres facilement
MessagePublié: 25 Jan 2012, 23:04 
Roi
Roi
Avatar de l’utilisateur

Inscrit le: 08 Mai 2005, 15:00
Messages: 2994
Localisation: Lyon
Niveau RPG Maker: Expert
Logiciel(s) préféré(s): RMXP ; IGM
Point(s) Fort(s): HTML5, PHP, Javascript, Ruby
Sexe: Masculin
Points d'aide: Illimité

Créations :

- RPG JS : Votre RPG en ligne sur votre navigateur


Voir ses créations

Salut,

J'ai regardé et testé le script. L'idée de créer une petite API pour créer des fenêtres est bonne, pas seulement pour les débutants.

Concernant les fonctions, je n'ai pas grand chose à rajouter. Nous avons le minimum pour afficher une fenêtre. Peut être mettre le nom des fonctions en anglais, si souhaites faire partager le script à des utilisateurs non francophone. Mais ça, c'est toi qui voit ;)

J'ai donc regarder le code et j'ai plusieurs remarques à faire.

1) Lorsque j'ai testé, j'ai une erreur à cause des variables $fontface et $fonsize. C'est dû à certaines versions de RMXP qui ne possèdent pas ces variables par défaut. Je te suggère donc de mettre ces lignes en entête de ton script :

Code: Tout sélectionner
$fontface = "Arial" if defined?($fontface).nil?
$fontsize = 18 if defined?($fontsize).nil?


2) J'ai vu que tu as codé de façon procédurale et non orientée objet pour le côté de l'API. On sort du concept des scripts de RMXP qui utilise la POO. Surtout, que tu utilises une variable globale "$fenetre" pour stocker les différentes fenêtres créées. Si tu veux garder le côté procédurale, il est sûrement plus judicieux de faire :

Code: Tout sélectionner
def creer_fenetre(nom)
  return Window_EasyWindows.new(nom)
end


et permettre au codeur d'utiliser la classe conçue si l'utilisation de "Window_EasyWindows.new(nom)" rebute un peu.

Du coup :

Code: Tout sélectionner
def cacher_fenetreW(nom, opacity = 0)
# ...
   if $fenetre["#{nom}Text#{i}"] != nil
     $fenetre["#{nom}Text#{i}"].opacity = opacity
   end
end


va être plutôt (contenu dans la classe, avec l'attribut "opacity", et qui hérite de Window_Base)

Code: Tout sélectionner
def cacher_fenetreW(opacity = 0)
    self.opacity = opacity
end


Tu évites ainsi les 50 tours de boucle aussi :)

_________________
Site officiel de RPG Creator : http://rpgcreator.net

RPG Creator permet de créer des RPG ou MMORPG sans aucune connaissance en programmation et de jouer au jeu sur les tablettes tactiles, Smartphones et navigateurs Web.
Disponible le 4 Juin


Haut
 Profil  
 
 Sujet du message: Re: Créer des fenêtres facilement
MessagePublié: 25 Jan 2012, 23:39 
Artisan (Nv 5)
Avatar de l’utilisateur

Inscrit le: 22 Nov 2011, 22:01
Messages: 199
Niveau RPG Maker: Moyen
Logiciel(s) préféré(s): RPG Maker XP
Point(s) Fort(s): Scripts
Sexe: Masculin
Points d'aide: 17/60

Créations :

Voir ses créations

Merci pour le com,

J'ai ajouté les deux lignes où il fallait.
Samarium a écrit:
mettre le nom des fonctions en anglais

J'y ai pensé, mais j'avais peur d'effrayer les makers français non anglophone c'est pour
ça qu'il y a un mix anglais français dans le script ^^'. Je vais quand même essayer en
anglais, on verra bien.
Samarium a écrit:
2) J'ai vu que tu as codé de façon procédurale et non orientée objet pour le côté de l'API. On sort du concept des scripts de RMXP qui utilise la POO. Surtout, que tu utilises une variable globale "$fenetre" pour stocker les différentes fenêtres créées. Si tu veux garder le côté procédurale, il est sûrement plus judicieux de faire :

Code: Tout sélectionner
def creer_fenetre(nom)
  return Window_EasyWindows.new(nom)
end

J'ignorais que "return" permettait de renvoyer autre choses que des valeurs.
Cette manière à l'air beaucoup plus légère, (j'ai appris le ruby en piochant des infos
à droite à gauche donc il n'est pas très beau on va dire :D ).
Je vais essayer d'améliorer ça dans la prochaine version.

_________________
--- Bad_maker ---


Haut
 Profil  
 
Afficher les messages depuis:  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 6 messages ] 

Heures au format UTC + 1 heure [ Heure d’été ]


Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 2 invités


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Rechercher pour:
Sauter vers:  
cron
RPG Creative Forum version 5 ; Tous droits réservés
phpBB Group (Traduit par Xaphos)
Optimisé pour une résolution 1024*728