Accueil du SiteAccueil du Site  AccueilAccueil  Dernières imagesDernières images  RechercherRechercher  ConnexionConnexion  S'enregistrerS'enregistrer  



-28%
Le deal à ne pas rater :
Brandt LVE127J – Lave-vaisselle encastrable 12 couverts – L60cm
279.99 € 390.99 €
Voir le deal

Partagez
 

 Testeur de teintes InGame

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Eekoun
Chevalier (niveau 1)
Chevalier (niveau 1)
Eekoun

Messages postés : 74
Date d'inscription : 30/01/2014
Jauge LPC :
Testeur de teintes InGame 891527140070 / 10070 / 100Testeur de teintes InGame 8915271400


Testeur de teintes InGame Empty
MessageSujet: Testeur de teintes InGame   Testeur de teintes InGame EmptyJeu 30 Jan 2014 - 20:36

Testeur de teintes InGame

Une fois de plus, je reprend un script de quelqu'un, qui existe déjà dans l'Event Extender. Il s'agit du script pour tester "en jeu" des teintes d'écran. Car c'est vraiment très ennuyeux de retester chaque fois le projet. Cette fois, en appuyant sur f3 (par défaut), une petite interface graphique vous permet de tester les modifications de teintes et d'exporter la teinte dans le presse-papier, pour l'a coller, après dans n'importe quel Event.

Installation

Cette fois, vous aurez avant tout besoin d'avoir installé le script Mouse & Keyboard (https://github.com/nukiFW/RPGMaker/tree/master/MouseAndKeyboard). Ensuite, copiez le script dans votre éditeur de script Au dessus de Main, dans la rubrique Materials. Vous pouvez lui attribuer un emplacement réservé. Et le nommer comme vous l'entendez. Personnellement, j'ai choisi le nom Testeur de Teintes (original Razz!).

Le code
Code:
#==============================================================================
# ** Configuration du script
#------------------------------------------------------------------------------
# RChoix de la touche d'activation du testeur
#==============================================================================

module ToneConfig

  #--------------------------------------------------------------------------
  # * Touche d'activation du testeur de teinte
  #--------------------------------------------------------------------------
  KEY = :f3

end

#==============================================================================
# ** Slider
#------------------------------------------------------------------------------
# Représente une barre déplacable à la souris
#==============================================================================

class Slider

  #--------------------------------------------------------------------------
  # * Variables publiques
  #--------------------------------------------------------------------------
  attr_reader :x, :y, :value, :disposed
  alias :disposed? :disposed

  #--------------------------------------------------------------------------
  # * Constructeur
  #--------------------------------------------------------------------------
  def initialize(w, h, min, max, *assets)
    @disposed = false
    @width, @height = w, h
    @min, @max = *[min, max].sort
    @colorA = assets[0] || Color.new(120, 120, 120)
    @colorB = assets[1] || Color.new(0, 0, 0)
    @value = @min
    @total = @max - @min
    @total_width = @width - @height
    @x = assets[2] || 0
    @y = assets[3] || 0
    @clicked = false
    @track_x = 0
    setup_graphics
  end
  #--------------------------------------------------------------------------
  # * Construction de la barre
  #--------------------------------------------------------------------------
  def setup_graphics
    @bg = Sprite.new
    @bg.bitmap = Bitmap.new(@width, @height)
    @bg.bitmap.fill_rect(0, 0, @width, @height, @colorA)
    @button = Sprite.new
    @button.bitmap = Bitmap.new(@height, @height)
    @button.bitmap.fill_rect(0, 0, @height, @height, @colorB)
    self.x = @x
    self.y = @y
  end

  #--------------------------------------------------------------------------
  # * Mutateur de Value
  #--------------------------------------------------------------------------
  def value=(nval)
    @value = [0, [nval, @max].min].max
  end
  #--------------------------------------------------------------------------
  # * Mutateur de x
  #--------------------------------------------------------------------------
  def x=(n)
    @x = n
    @bg.x = @button.x = @x
  end
  #--------------------------------------------------------------------------
  # * Mutateur de y
  #--------------------------------------------------------------------------
  def y=(n)
    @y = n
    @bg.y = @button.y = @y
  end
  #--------------------------------------------------------------------------
  # * Modification de la position du bouton
  #--------------------------------------------------------------------------
  def update_position
    pc_val = @value.to_f / @max.to_f
    n_pos = (pc_val * @total_width.to_f).to_i
    @button.x = @x + n_pos if @button.x != @x + n_pos
  end
  #--------------------------------------------------------------------------
  # * Evenement du click
  #--------------------------------------------------------------------------
  def click_event
    Mouse.trigger?(:mouse_left) &&
      (Mouse.x.between?(@button.x, @button.x+@button.bitmap.width)) &&
        (Mouse.y.between?(@button.y, @button.y+@button.bitmap.height))
  end
  #--------------------------------------------------------------------------
  # * Update du drag in
  #--------------------------------------------------------------------------
  def update_drag
    if !@clicked
      @clicked = click_event
      if @clicked
        @track_x = Mouse.x
        @old_val = @value
      end
    else
      coeff = (((Mouse.x - @track_x).to_f)*@max.to_f)/@total_width.to_f
      self.value = @old_val + coeff.to_i
      @clicked = !Mouse.release?(:mouse_left)
    end
  end
  #--------------------------------------------------------------------------
  # * Update générale
  #--------------------------------------------------------------------------
  def update
    return if disposed?
    update_position
    update_drag
  end
  #--------------------------------------------------------------------------
  # * Dispose
  #--------------------------------------------------------------------------
  def dispose
    @disposed = true
    @button.dispose
    @bg.dispose
  end

end

#==============================================================================
# ** Tone_Tester
#------------------------------------------------------------------------------
# Représente un testeur de teinte
#==============================================================================

class Tone_Tester

  #--------------------------------------------------------------------------
  # * API Windows (Merci à Grim :v)
  #--------------------------------------------------------------------------
  OpenClipboard    = Win32API.new('user32',    'OpenClipboard',    'i',    'i')
  EmptyClipboard    = Win32API.new('user32',    'EmptyClipboard',  'v',    'i')
  GlobalAlloc      = Win32API.new('kernel32',  'GlobalAlloc',      'ii',  'i')
  GlobalLock        = Win32API.new('kernel32',  'GlobalLock',      'i',    'l')
  Memcpy            = Win32API.new('msvcrt',    'memcpy',          'ppi',  'i')
  SetClipboardData  = Win32API.new('user32',    'SetClipboardData', 'ii',  'i')
  GlobalFree        = Win32API.new('kernel32',  'GlobalFree',      'i',    'i')
  CloseClipboard    = Win32API.new('user32',    'CloseClipboard',  'v',    'i')
  RegisterClipboardFormat = Win32API.new('user32', 'RegisterClipboardFormat', 'p', 'i')
  #--------------------------------------------------------------------------
  # *  Ajoute commande dans le presse Papier
  #--------------------------------------------------------------------------
  def push_command(*commands)
    clip_data = Marshal.dump(commands)
    clip_data.insert(0, [clip_data.size].pack('L'))
    OpenClipboard.(0)
    EmptyClipboard.()
    hmem = GlobalAlloc.(0x42, clip_data.length)
    mem = GlobalLock.(hmem)
    Memcpy.(mem, clip_data, clip_data.length)
    SetClipboardData.(RegisterClipboardFormat.("VX Ace EVENT_COMMAND"), hmem)
    GlobalFree.(hmem)
    CloseClipboard.()
    return true
  end
  #--------------------------------------------------------------------------
  # * Sauve la teinte dans le presse papier
  #--------------------------------------------------------------------------
  def save_tone
    red = @red.value - 255
    gre = @gre.value - 255
    blu = @blu.value - 255
    gra = @gra.value
    tone = Tone.new(red, gre, blu, gra)
    command = RPG::EventCommand.new(223, 0, [tone, 0, false])
    push_command(command)
    msgbox("La ligne d'évènement pour changer la teinte \n est dans le presse-papier")
  end
  #--------------------------------------------------------------------------
  # * Variables d'instances
  #--------------------------------------------------------------------------
  attr_reader :disposed
  alias :disposed? :disposed
  #--------------------------------------------------------------------------
  # * Constructeur
  #--------------------------------------------------------------------------
  def initialize
    @tone = $game_map.screen.tone.dup
    @menu = $game_system.menu_disabled
    $game_system.menu_disabled = true
    @disposed = false
    @ore, @ogr, @obl, @oga = @tone.red, @tone.green, @tone.blue, @tone.gray
    create_bg
    create_tracks
    create_label
  end
  #--------------------------------------------------------------------------
  # * Crée les labels
  #--------------------------------------------------------------------------
  def create_label
    @redl = Sprite.new
    @redl.bitmap = Bitmap.new(@w, 18)
    @redl.x, @redl.y = @red.x, 12
    @redl.bitmap.font.outline = false
    @redl.bitmap.font.size = 15
    @grel = Sprite.new
    @grel.x, @grel.y = @gre.x, 12
    @blul = Sprite.new
    @blul.x, @blul.y = @blu.x, 12
    @gral = Sprite.new
    @gral.x, @gral.y = @gra.x, 12
    @gral.bitmap = @redl.bitmap.clone
    @blul.bitmap = @redl.bitmap.clone
    @grel.bitmap = @redl.bitmap.clone
    @redl.bitmap.draw_text(0, 0, @w, 18, sprintf("%03d", 0), 2)
    @grel.bitmap.draw_text(0, 0, @w, 18, sprintf("%03d", 0), 2)
    @blul.bitmap.draw_text(0, 0, @w, 18, sprintf("%03d", 0), 2)
    @gral.bitmap.draw_text(0, 0, @w, 18, sprintf("%03d", 0), 2)
  end
  #--------------------------------------------------------------------------
  # * Crée les sliders
  #--------------------------------------------------------------------------
  def create_tracks
    space = 10
    w = (Graphics.width-(5*space))/4
    @w = w
    x = space
    n = Color.new(200, 200, 200)
    r,v = [n, Color.new(255, 0, 0)], [n,Color.new(0, 255, 0)]
    b,g = [n, Color.new(0, 0, 255)], [n,Color.new(120,120,120)]
    @red = Slider.new(w, 8, 0, 510, *r); @red.x = x; x+=w+space
    @gre = Slider.new(w, 8, 0, 510, *v); @gre.x = x; x+=w+space
    @blu = Slider.new(w, 8, 0, 510, *b); @blu.x = x; x+=w+space
    @gra = Slider.new(w, 8, 0, 255, *g); @gra.x = x; x+=w+space
    [@red, @gre, @blu, @gra].collect{|i| i.y = 4}
    @red.value = 255 + @tone.red
    @gre.value = 255 + @tone.green
    @blu.value = 255 + @tone.blue
    @gra.value = @tone.gray
  end
  #--------------------------------------------------------------------------
  # * Crée le fond
  #--------------------------------------------------------------------------
  def create_bg
    @bg = Sprite.new
    @bg.bitmap = Bitmap.new(Graphics.width, 32)
    @bg.bitmap.fill_rect(0, 0, Graphics.width, 32, Color.new(0,0,0,200))
    @button = Sprite.new
    @button.bitmap = Bitmap.new(100, 16)
    @button.bitmap.fill_rect(@button.bitmap.rect, Color.new(20, 20, 20, 200))
    @button.bitmap.font.outline = false
    @button.bitmap.font.size = 16
    @button.bitmap.draw_text(0,0,100,16,"Save", 1)
    @button.y = 32
  end
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update
    return if @disposed
    [@red, @gre, @blu, @gra].collect(&:update)
    update_label
    update_tone
    update_button
    dispose if Keyboard.trigger?(:esc) || Keyboard.trigger?(ToneConfig::KEY)
  end
  #--------------------------------------------------------------------------
  # * Update du bouton
  #--------------------------------------------------------------------------
  def update_button
    f = Mouse.x.between?(0, 100) && Mouse.y.between?(32, 32+16)
    if f && Mouse.trigger?(:mouse_left)
          save_tone
    end
  end
  #--------------------------------------------------------------------------
  # * Update de la teinte
  #--------------------------------------------------------------------------
  def update_tone
    red = @red.value - 255
    gre = @gre.value - 255
    blu = @blu.value - 255
    gra = @gra.value
    $game_map.screen.tone.set(red, gre, blu, gra)
  end
  #--------------------------------------------------------------------------
  # * Update label
  #--------------------------------------------------------------------------
  def update_label
    t = [@red, @gre, @blu, @gra]
    a = [@redl, @grel, @blul, @gral]
    r = [@ore, @ogr, @obl, @oga]
    4.times do |i|
      f = (t[i] == @gra) ? 0 : 255
      v = t[i].value - f
      if v != r[i]
        a[i].bitmap.clear
        a[i].bitmap.draw_text(0, 0, @w, 18, sprintf("%03d", v), 2)
        r[i] = v
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Dispose

  #--------------------------------------------------------------------------
  def dispose
    $game_system.menu_disabled = @menu
    @disposed = true
    $game_map.screen.tone.set(@tone)
    @bg.dispose
    @button.dispose
    [@red, @gre, @blu, @gra].collect(&:dispose)
    [@redl, @grel, @blul, @gral].collect(&:dispose)
  end
end

#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
#  Ajout de la gestion du testeur de teintes
#==============================================================================

class Scene_Map

  #--------------------------------------------------------------------------
  # * Alias
  #--------------------------------------------------------------------------
  alias :tone_start :start
  alias :tone_update :update

  #--------------------------------------------------------------------------
  # * Démarrage
  #--------------------------------------------------------------------------
  def start
    tone_start
    @tone_tester = false
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    if $TEST
      if !@tone_tester || @tone_tester.disposed?
        if Keyboard.trigger?(ToneConfig::KEY)
          @tone_tester = Tone_Tester.new
        end
      else
        @tone_tester.update
      end
    end
    tone_update
  end
end

Utilisation

Lorsque vous lancez votre jeu depuis l'éditeur, vous pouvez appuyez, sur une carte, sur la touche f3 et une petite interface vous permettra de tester vos teintes. Le bouton save réagit au clique de la souris. Si vous cliquez dessus, la teinte que vous testez sera placée dans le presse-papier et en fermant votre jeu, vous pourrez l'a coller dans un évènement. Pour quitter cette interface, il suffit d'appuyer sur esc ou f3.

Changer la touche de lancement


Au début du script vous pouvez changer la touche de lancement du testeur de teintes avec toutes celles proposées dans le script de gestion de souris/clavier.

Page du script
https://github.com/nukiFW/RPGMaker/tree/master/ToneTester


Dernière édition par Eekoun le Ven 31 Jan 2014 - 0:03, édité 1 fois
Revenir en haut Aller en bas
Zexion
Administrateur
Administrateur
Zexion

Masculin
Messages postés : 6228
Date d'inscription : 04/01/2012
Jauge LPC :
Testeur de teintes InGame 891527140097 / 10097 / 100Testeur de teintes InGame 8915271400

Testeur de teintes InGame Membre15
Testeur de teintes InGame Event-10
Testeur de teintes InGame Altrui10
Testeur de teintes InGame Action10
Testeur de teintes InGame Travai10
Testeur de teintes InGame Collec10
Testeur de teintes InGame Collec11
Testeur de teintes InGame Collec12
Testeur de teintes InGame Staffe11
Testeur de teintes InGame Dessin10


Testeur de teintes InGame Empty
MessageSujet: Re: Testeur de teintes InGame   Testeur de teintes InGame EmptyJeu 30 Jan 2014 - 23:17

Sympa le partage N, mais j'ai comme l'impression qu'il manque le script en lui-même. x)
Revenir en haut Aller en bas
Eekoun
Chevalier (niveau 1)
Chevalier (niveau 1)
Eekoun

Messages postés : 74
Date d'inscription : 30/01/2014
Jauge LPC :
Testeur de teintes InGame 891527140070 / 10070 / 100Testeur de teintes InGame 8915271400


Testeur de teintes InGame Empty
MessageSujet: Re: Testeur de teintes InGame   Testeur de teintes InGame EmptyVen 31 Jan 2014 - 0:04

C'est édité. Désolé pour cette maladresse.
Revenir en haut Aller en bas
Zexion
Administrateur
Administrateur
Zexion

Masculin
Messages postés : 6228
Date d'inscription : 04/01/2012
Jauge LPC :
Testeur de teintes InGame 891527140097 / 10097 / 100Testeur de teintes InGame 8915271400

Testeur de teintes InGame Membre15
Testeur de teintes InGame Event-10
Testeur de teintes InGame Altrui10
Testeur de teintes InGame Action10
Testeur de teintes InGame Travai10
Testeur de teintes InGame Collec10
Testeur de teintes InGame Collec11
Testeur de teintes InGame Collec12
Testeur de teintes InGame Staffe11
Testeur de teintes InGame Dessin10


Testeur de teintes InGame Empty
MessageSujet: Re: Testeur de teintes InGame   Testeur de teintes InGame EmptyVen 31 Jan 2014 - 16:32

Okay merci. Smile
Bien que j'en sois pas encore au point où j'ai la flemme de relancer le projet pour tester des teintes, je suppose que ça servira à du monde. :3
Je t'ajoute des points.
Revenir en haut Aller en bas
Contenu sponsorisé




Testeur de teintes InGame Empty
MessageSujet: Re: Testeur de teintes InGame   Testeur de teintes InGame Empty

Revenir en haut Aller en bas
 
Testeur de teintes InGame
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Testeur...
» Un testeur
» Axel4/Sora13 un grand testeur...
» Beta-Testeur pour Creas: L'Héritage des Husters

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Le Palais Créatif :: ~ PARTAGE ~ :: Scripts et plugins :: RPG Maker VXAce :: Système-
Sauter vers: