Myléa Paysan (niveau 5)
Messages postés : 41 Date d'inscription : 25/09/2013 Jauge LPC :
| Sujet: [XP] VarMap Mer 2 Oct 2013 - 23:25 | |
| Bondour à tous, Suite à une demande, j'ai porté mon script d'affichage de variable sur la map de VXAce à XP ! Voici un screen pour vous montrer un peu son efficacit lol : - Spoiler:
Le script : - Spoiler:
- Code:
-
################################################################################ ##### VAR MAP ################################################################################ # Auteur : Biward ; Date : 13/09/2013 18:31 ; Version : XP # Utilité : permet l'affichage facile et rapide de variable sur la map. # # liste des commandes : # draw_variable(variable, position x, position y, largeur, hauteur, opacité, icone, position x icone, position y icone) # qui sert à créer une fenêtre contenant une variable # dispose_variable(variable) qui sert à effacer une window # dispose_all_variable qui sert à effacer toutes les windows # refresh_variables qui sert à mettre à jour les fenêtres (souvent automatique) # # Autres commandes : # var_x(var, x) ; var_y(var, y) ; var_w(var, w) ; var_h(var, h) # var_opa(var, opa) ; var_ico(var, ico) ; var_xi(var, xi) ; var_yi(var, yi) # var_text(var, text) ; var_xt(var, xt) ; var_yt(var, yt) # Ces commandes servent à modifier une fenêtre ingame grace à un appel de script.
################################################################################ ##### Début du script ################################################################################ class Interpreter def draw_variable(var, x_v, y_v, x, y, w, h, opa, ico, x_i, y_i, text, x_t, y_t) if ! Spriteset_Variable.dr[var] Spriteset_Variable.var << var Spriteset_Variable.x_v[var] = x_v Spriteset_Variable.y_v[var] = y_v Spriteset_Variable.x[var] = x Spriteset_Variable.y[var] = y Spriteset_Variable.w[var] = w Spriteset_Variable.h[var] = h Spriteset_Variable.opa[var] = opa Spriteset_Variable.ico[var] = ico Spriteset_Variable.x_i[var] = x_i Spriteset_Variable.y_i[var] = y_i Spriteset_Variable.text[var] = text Spriteset_Variable.x_t[var] = x_t Spriteset_Variable.y_t[var] = y_t Spriteset_Variable.upo = var Spriteset_Variable.cr = true end end def dispose_variable(number) ; Spriteset_Variable.ds << number ; end def dispose_all_variable ; Spriteset_Variable.co = true ; end def refresh_variables ; Spriteset_Variable.rs = true ; end def var_x_v(var, xv) ; Spriteset_Variable.x_v[var] = xv ; Spriteset_Variable.upo = var ; end def var_y_v(var, yv) ; Spriteset_Variable.y_v[var] = yv ; Spriteset_Variable.upo = var ; end def var_x(var, x) ; Spriteset_Variable.x[var] = x ; Spriteset_Variable.upo = var ; end def var_y(var, y) ; Spriteset_Variable.y[var] = y ; Spriteset_Variable.upo = var ; end def var_w(var, w) ; Spriteset_Variable.w[var] = w ; Spriteset_Variable.upo = var ; end def var_h(var, h) ; Spriteset_Variable.h[var] = h ; Spriteset_Variable.upo = var ; end def var_opa(var, opa) ; Spriteset_Variable.opa[var] = opa ; Spriteset_Variable.upo = var ; end def var_ico(var, ico) ; Spriteset_Variable.ico[var] = ico ; Spriteset_Variable.upo = var ; end def var_xi(var, xi) ; Spriteset_Variable.x_i[var] = xi ; Spriteset_Variable.upo = var ; end def var_yi(var, yi) ; Spriteset_Variable.y_i[var] = yi ; Spriteset_Variable.upo = var ; end def var_text(var, text) ; Spriteset_Variable.text[var] = text ; Spriteset_Variable.upo = var ; end def var_xt(var, xt) ; Spriteset_Variable.x_t[var] = xt ; Spriteset_Variable.upo = var ; end def var_yt(var, yt) ; Spriteset_Variable.y_t[var] = yt ; Spriteset_Variable.upo = var ; end alias command_122_bi command_122 ; def command_122 ; command_122_bi ; Spriteset_Variable.rs = true ; end end class Window_Variable < Window_Base def initialize(x, y, h, w, var, opa, icone, x_i, y_i, text, x_t, y_t, x_v, y_v) super(x, y, h, w) self.opacity = opa @var = var @icon_index = icone @x_i = x_i @y_i = y_i @text = text @x_v = x_v @y_v = y_v @x_t = x_t @y_t = y_t @w = w @h = h refresh end def refresh self.contents = Bitmap.new(@h - 32, @w - 32) self.contents.clear self.contents.draw_text(@x_v, @y_v - 198, 544, 416, $game_variables[@var].to_s, 0) bitmap = RPG::Cache.icon(@icon_index) if @icon_index self.contents.blt(@x_i, @y_i + 4, bitmap, Rect.new(0, 0, 24, 24)) if @icon_index && @x_i && @y_i self.contents.draw_text(@x_t, @y_t - 198, 544, 416, @text.to_s, 0) end def redraw(ico, x_i, y_i, text, x_t, y_t, x_v, y_v, h, w) @icon_index = ico @x_i = x_i @y_i = y_i @text = text @x_t = x_t @y_t = y_t @x_v = x_v @y_v = y_v @w = w @h = h refresh end end class Spriteset_Variable class << self ; attr_accessor :var, :x_v, :y_v, :x, :y, :w, :h, :opa, :ico, :x_i, :y_i, :text, :x_t, :y_t, :upo, :dr, :ds, :rs, :cr, :co ; end def initialize ; create_variable ; create_window_var if Spriteset_Variable.var ; end def create_variable Spriteset_Variable.var ||= [] Spriteset_Variable.x_v ||= {} Spriteset_Variable.y_v ||= {} Spriteset_Variable.rs ||= false Spriteset_Variable.co ||= false Spriteset_Variable.dr ||= [] Spriteset_Variable.ds ||= [] Spriteset_Variable.x ||= {} Spriteset_Variable.y ||= {} Spriteset_Variable.w ||= {} Spriteset_Variable.h ||= {} Spriteset_Variable.opa ||= {} Spriteset_Variable.ico ||= {} Spriteset_Variable.text ||= {} Spriteset_Variable.x_i ||= {} Spriteset_Variable.y_i ||= {} Spriteset_Variable.x_t ||= {} Spriteset_Variable.y_t ||= {} @winvar = {} if ! @winvar end def start ; create_window_var if ! Spriteset_Variable.var.empty? ; end def create_window_var Spriteset_Variable.var.each do |i| if ! Spriteset_Variable.dr[i] @winvar[i] = Window_Variable.new(Spriteset_Variable.x[i], Spriteset_Variable.y[i], Spriteset_Variable.w[i], Spriteset_Variable.h[i], i, Spriteset_Variable.opa[i], Spriteset_Variable.ico[i], Spriteset_Variable.x_i[i], Spriteset_Variable.y_i[i] , Spriteset_Variable.text[i], Spriteset_Variable.x_t[i], Spriteset_Variable.y_t[i], Spriteset_Variable.x_v[i], Spriteset_Variable.y_v[i]) Spriteset_Variable.dr[i] = true end end Spriteset_Variable.cr = nil if Spriteset_Variable.cr end def terminate ; dispose_window_var ; end def dispose_window_var(command = false) @winvar.each { |i| i[1].dispose } Spriteset_Variable.dr.clear Spriteset_Variable.var.clear if command Spriteset_Variable.co = false if Spriteset_Variable.co end def dispose_owv(var) @winvar[var].dispose if @winvar[var] if Spriteset_Variable.dr[var] index = Spriteset_Variable.var.index(var) Spriteset_Variable.var.delete_at(index) end Spriteset_Variable.dr[var] = nil end def prep_dispose_window_var ; Spriteset_Variable.ds.each { |i| dispose_owv(i) } ; Spriteset_Variable.ds.clear ; end def update create_window_var if Spriteset_Variable.cr update_window_var if Spriteset_Variable.upo prep_dispose_window_var if ! Spriteset_Variable.ds.empty? refresh_windows if Spriteset_Variable.rs dispose_window_var(true) if Spriteset_Variable.co end def update_window_var i = Spriteset_Variable.upo if Spriteset_Variable.dr[i] @winvar[i].x = Spriteset_Variable.x[i] @winvar[i].y = Spriteset_Variable.y[i] @winvar[i].width = Spriteset_Variable.w[i] @winvar[i].height = Spriteset_Variable.h[i] @winvar[i].opacity = Spriteset_Variable.opa[i] @winvar[i].redraw(Spriteset_Variable.ico[i], Spriteset_Variable.x_i[i], Spriteset_Variable.y_i[i], Spriteset_Variable.text[i], Spriteset_Variable.x_t[i], Spriteset_Variable.y_t[i], Spriteset_Variable.x_v[i], Spriteset_Variable.y_v[i], Spriteset_Variable.w[i], Spriteset_Variable.h[i]) end Spriteset_Variable.upo = nil end def refresh_windows @winvar.each do |i| i[1].refresh if i[1] && Spriteset_Variable.dr[i[0]] Spriteset_Variable.rs = false end end end
class Scene_Map alias sbbi main alias ubbi update def main @spriteset_variable = Spriteset_Variable.new sbbi @spriteset_variable.terminate if @spriteset_variable end def update ; ubbi ; @spriteset_variable.update if @spriteset_variable ; end end ################################################################################ ##### Début du script ################################################################################
Le script est extrêmement compressé, suite à un défi de le faire tenir en un certain nombre de ligne Comme la version Ace, vous pouvez modifier la fenêtre depuis un event, afficher un texte, une icône, modifier l'opacité de la fenêtre ainsi que ça taille en plein jeu ! Enjoy |
|