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



Le Deal du moment :
Fnac : 2 Funko Pop achetées : le 3ème ...
Voir le deal

Partagez
 

 Effet de lumière sympatique compatible XP/VX/VXAce

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Kingdommangas
Ninja (niveau 4)
Ninja (niveau 4)
Kingdommangas

Féminin
Messages postés : 210
Date d'inscription : 19/12/2015
Jauge LPC :
Effet de lumière sympatique compatible XP/VX/VXAce 891527140057 / 10057 / 100Effet de lumière sympatique compatible XP/VX/VXAce 8915271400

Effet de lumière sympatique compatible XP/VX/VXAce Partag10
Effet de lumière sympatique compatible XP/VX/VXAce Riche_10
Effet de lumière sympatique compatible XP/VX/VXAce Collec10
Effet de lumière sympatique compatible XP/VX/VXAce Collec11
Effet de lumière sympatique compatible XP/VX/VXAce Collec12

Effet de lumière sympatique compatible XP/VX/VXAce Empty
MessageSujet: Effet de lumière sympatique compatible XP/VX/VXAce   Effet de lumière sympatique compatible XP/VX/VXAce EmptyLun 28 Déc 2015 - 11:54

L'utilisation est très simple.
Il nécessite cependant 3 images à placer dans la partie "Graphic/System"

En appel de script écrire:
"start_effect(numéro)"
(bien sûr vous mettez un numéro à la place de numéro, vous l'écrivez pas tel quel tongue )

Pour enlever l'effet il faut écrire (en appel de script toujours):
"end_effect" pour un arrêt brutal
"end_effect_fade" pour un arrêt en douceur

J'ai traduit directement les effet de lumière sur le script.
D'ailleurs le voici:
Code:
=begin
      RGSS3
      
      ★ 光拡散エフェクト ★  Effet de diffusion de la lumière

      光が広がったり、集まったり、降ったりします。
      天候と似た使い方を想定しています。 l'utilisation semblable à la météo.
      
      イベントコマンドのスクリプトから起動させてください。  commencer à partir de la commande de l'événement dans le script.
      
      ● コマンド一覧 ●===Liste des commandes========================================
      start_effect(type)
      --------------------------------------------------------------------
      光拡散エフェクトを開始します。
      引数の値によってエフェクトの種類が決定します
        1  => lumière du centre vers l'extérieur
        2  => Lumière de l'extérieur vers le centre
        3  => Tombe vers le centre de l'écran
        4  => Tombe vers le bas de l'écran
        5  => Du coin haut droite vers le bas gauche
        
        21 => Du bas de l'écran vers le haut en tournoyant
        22 => Lumière du bas vers le milieu de l'écran
        23 => Spirale du bas vers le haut
        
        31 => Neige
      ====================================================================
      end_effect
      --------------------------------------------------------------------
      Fin de l'effet de l'animation (brutal)
      ====================================================================
      end_effect_fade
      --------------------------------------------------------------------
      Fin de l'effet de l'animation (en fondu)
      ====================================================================
      
      ver1.10

      Last Update : 2012/03/24
      03/24 : 雪エフェクトの追加
      ----------------------2012--------------------------
      12/17 : RGSS2からの移植
      ----------------------2011--------------------------
      
      ろかん   http://kaisou-ryouiki.sakura.ne.jp/
=end

$rsi ||= {}
$rsi["光拡散エフェクト"] = true

module Reffect
  @@span = false
  def initialize(viewport)
    @sp = [0, 0]     # 初期座標
    @ma = [0.0, 0.0] # 移動角度(ラジアン)
    @rd = 0.0        # 初期座標からの半径
    super(viewport)
    self.blend_type = 1
    @@span ^= true
  end
  def width
    Graphics.width
  end
  def height
    Graphics.height
  end
  def zoom=(value)
    self.zoom_x = self.zoom_y = value
  end
  def setGraphic(filename)
    self.bitmap = Cache.system(filename)
    self.ox = self.bitmap.width / 2
    self.oy = self.bitmap.height / 2
  end
  def setStartPosition(typeX, typeY)
    case typeX
    when 0 # ランダム
      @sp[0] = rand(width + 100) - 50
    when 1 # 画面外(左)
      @sp[0] = -30
    when 2 # 中央
      @sp[0] = width / 2
    when 3 # 画面外(右)
      @sp[0] = width + 30
    end
    case typeY
    when 0 # ランダム
      @sp[1] = rand(height + 50) - 25
    when 1 # 画面外(上)
      @sp[1] = -30
    when 2 # 中央
      @sp[1] = height / 2
    when 3 # 画面外(下)
      @sp[1] = height + 30
    end
    self.x = @sp[0]
    self.y = @sp[1]
  end
  def setMoveAngle(ax, ay = ax)
    @ma[0] = Math.cos(ax * 0.01)
    @ma[1] = Math.sin(ay * 0.01)
  end
  def getX
    @sp[0] + @rd * @ma[0]
  end
  def getY
    @sp[1] + @rd * @ma[1]
  end
  def getZoom
    (@rd * @ma[1] / width / 1.5 + 0.8) * (self.opacity / 200.0)
  end
end

class Game_Temp
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :r_effect_sprites # 特殊効果スプライト群
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias r_effect_initialize initialize
  def initialize
    r_effect_initialize
    @r_effect_sprites = []
  end
  #--------------------------------------------------------------------------
  # ● 特殊効果スプライトの解放
  #--------------------------------------------------------------------------
  def dispose_r_effect
    @r_effect_sprites.each{|sprite| sprite.dispose}
    @r_effect_sprites = []
  end
end

class Game_System
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :r_effect_type # 特殊効果の種類
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias r_effect_initialize initialize
  def initialize
    r_effect_initialize
    @r_effect_type = 0
  end
  #--------------------------------------------------------------------------
  # ● 特殊効果の開始
  #--------------------------------------------------------------------------
  def start_effect(type)
    $game_temp.dispose_r_effect if @r_effect_type != type
    @r_effect_type = type
  end
  #--------------------------------------------------------------------------
  # ● 特殊効果の終了(瞬時)
  #--------------------------------------------------------------------------
  def end_effect
    $game_temp.dispose_r_effect
    @r_effect_type = 0
  end
  #--------------------------------------------------------------------------
  # ● 特殊効果の終了(フェード)
  #--------------------------------------------------------------------------
  def end_effect_fade
    @r_effect_type = 0
  end
end

class Game_Interpreter
  #--------------------------------------------------------------------------
  # ● 特殊効果の開始
  #--------------------------------------------------------------------------
  def start_effect(type)
    $game_system.start_effect(type)
  end
  #--------------------------------------------------------------------------
  # ● 特殊効果の終了(瞬時)
  #--------------------------------------------------------------------------
  def end_effect
    $game_system.end_effect
  end
  #--------------------------------------------------------------------------
  # ● 特殊効果の終了(フェード)
  #--------------------------------------------------------------------------
  def end_effect_fade
    $game_system.end_effect_fade
  end
end

class Sprite_Reffect_Diffusion < Sprite
  #--------------------------------------------------------------------------
  # ● インクルード Reffect
  #--------------------------------------------------------------------------
  include Reffect
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize(viewport)
    super(viewport)
    case $game_system.r_effect_type
    when 1
      @rd = rand(width / 3).to_f
      @moveSpeed = rand(50).next * 0.01 + 0.5
      @existCount = rand(100) + 80
      setStartPosition(2, 2)
      setMoveAngle(rand(2 * Math::PI * 100))
      setGraphic("RE_001")
    when 2
      @rd = rand(width / 3).to_f + 30.0
      @moveSpeed = rand(50).next * -0.01 - 0.5
      @existCount = rand(100) + 90
      setStartPosition(2, 2)
      setMoveAngle(rand(2 * Math::PI * 100))
      setGraphic("RE_001")
    when 3
      @rd = rand(width / 2).to_f
      @moveSpeed = rand(50).next * 0.01 + 0.5
      @existCount = rand(100) + 80
      setStartPosition(2, 1)
      setMoveAngle(rand(2 * Math::PI * 100), rand(Math::PI * 100))
      setGraphic("RE_001")
    when 4
      @rd = rand(width / 2).to_f
      @moveSpeed = rand(50).next * 0.01 + 0.5
      @existCount = rand(100) + 80
      setStartPosition(0, 1)
      setMoveAngle(rand(2 * Math::PI * 100), rand(Math::PI * 100))
      setGraphic("RE_001")
    when 5
      @rd = rand(width / 2).to_f
      @moveSpeed = rand(50).next * 0.01 + 0.5
      @existCount = rand(100) + 120
      setStartPosition(3, 1)
      setMoveAngle(rand(Math::PI * 100) + 90, rand(Math::PI * 100))
      setGraphic("RE_001")
    end
    @maxOpacity = rand(160) + 40
    self.opacity = 1
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    if self.opacity.zero?
      dispose
      $game_temp.r_effect_sprites.delete(self)
    else
      @existCount -= 1
      @rd = [@rd + @moveSpeed, 0.0].max
      self.x = getX
      self.y = getY
      self.zoom = getZoom
      self.opacity = [self.opacity + (@existCount > 0 ? 1 : -1), @maxOpacity].min
    end
  end
end

class Sprite_Reffect_Spiral < Sprite
  #--------------------------------------------------------------------------
  # ● インクルード Reffect
  #--------------------------------------------------------------------------
  include Reffect
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize(viewport)
    super(viewport)
    case $game_system.r_effect_type
    when 21
      @rd = rand(200).next.to_f
      @moveSpeed = 5.0 - @rd / 50.0
      @nextAngle = rand(360).to_f
      @collapseSpeed = 1
      setStartPosition(2, 3)
      setGraphic("RE_002")
    when 22
      @rd = rand(40).next.to_f
      @moveSpeed = rand(100).next * 0.01 + 1.0
      @nextAngle = rand(360).to_f
      @collapseSpeed = rand(3).zero? ? 2 : 1
      setStartPosition(0, 3)
      setGraphic("RE_002")
    when 23
      @rd = 180
      @moveSpeed = 1.7
      @nextAngle = @@span ? 0.0 : 180.0
      @collapseSpeed = 0
      setStartPosition(2, 3)
      setGraphic("RE_002")
    end
    @floteY = self.y.to_f
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    if self.y <= -self.oy || self.opacity.zero?
      dispose
      $game_temp.r_effect_sprites.delete(self)
    else
      @nextAngle += [@moveSpeed, 2].min
      @nextAngle = 0.0 if @nextAngle >= 360
      setMoveAngle(@nextAngle * 1.74533)
      self.x = getX
      self.y = (@floteY -= @moveSpeed).round
      self.zoom = getZoom
      self.opacity -= @collapseSpeed
    end
  end
end

class Sprite_Reffect_Snow < Sprite
  #--------------------------------------------------------------------------
  # ● インクルード Reffect
  #--------------------------------------------------------------------------
  include Reffect
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize(viewport)
    super(viewport)
    setStartPosition(0, 1)
    setGraphic("RE_003")
    case rand(100)
    when 0..49
      self.zoom = (3 + rand(2)) / 10.0
    when 50..89
      self.zoom = (6 + rand(2)) / 10.0
    when 90..99
      self.zoom = (9 + rand(2)) / 10.0
    end
    self.z = self.zoom_x * 10
    @moveSpeed = self.zoom_x * 1.6
    @floteY = self.y.to_f
    @rd = rand(10).next.to_f
    @nextAngle = rand(360).to_f
    @existCount = 1500
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    if self.y > height || self.opacity.zero?
      dispose
      $game_temp.r_effect_sprites.delete(self)
    else
      @existCount -= 3
      @nextAngle += [@moveSpeed, 2].min
      @nextAngle = 0.0 if @nextAngle >= 360
      setMoveAngle(@nextAngle * 1.74533)
      self.x = getX
      self.y = (@floteY += @moveSpeed).round
      self.opacity = @existCount
    end
  end
end

class Spriteset_Map
  @@re_add_count = 0
  #--------------------------------------------------------------------------
  # ● 解放
  #--------------------------------------------------------------------------
  alias r_effect_dispose dispose
  def dispose
    r_effect_dispose
    $game_temp.dispose_r_effect
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  alias r_effect_update update
  def update
    r_effect_update
    update_r_effect
  end
  #--------------------------------------------------------------------------
  # ● 特殊エフェクトの更新
  #--------------------------------------------------------------------------
  def update_r_effect
    unless $game_system.r_effect_type.zero?
      if @@re_add_count.zero?
        case $game_system.r_effect_type
        when  1..10
          sprite = Sprite_Reffect_Diffusion.new(@viewport3)
          @@re_add_count = 10
        when 21..30
          sprite = Sprite_Reffect_Spiral.new(@viewport3)
          @@re_add_count = 10
        when 31..40
          sprite = Sprite_Reffect_Snow.new(@viewport3)
          @@re_add_count = 20
        end
        $game_temp.r_effect_sprites << sprite
      end
      @@re_add_count -= 1
    end
    $game_temp.r_effect_sprites.each{|sprite| sprite.update}
  end
end

Voilà la source -> http://kaisou-ryouiki.sakura.ne.jp/
L'image -> http://kaisou-ryouiki.sakura.ne.jp/material/graphic/RE.zip
Et le script original -> http://kaisou-ryouiki.sakura.ne.jp/material/rgss3/r_effect.txt

Oh oh oh, c'est pas fini c'est Noël après tout, quelques vidéos qui montre les effets en question Very Happy
https://www.youtube.com/watch?v=XOahRa-thvU&feature=youtu.be
https://www.youtube.com/watch?v=_ipHgryBxoE&feature=youtu.be

Voilà voilà, bonne fête.
Revenir en haut Aller en bas
 
Effet de lumière sympatique compatible XP/VX/VXAce
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Effet de lumière sympatique compatible XP/VX/VXAce
» Effet de lumière sympatique compatible XP/VX/VXAce
» Effet de chaleur
» [VX] Effet de lumière
» [VX] Effet de lumière ultime

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 :: Autres-
Sauter vers: