#============================================================================== # ○RGSS3立ち絵まばたき #立ち絵を瞬きさせます #http://garasuzaikunomugen.web.fc2.com/index.html #※更新履歴 #2017/4/19 Ver1.02。消去時エラーになる不具合を修正 #2016/11/9 Ver1.01。エラーになる不具合を修正 #2016/6/25 公開 #<使い方> #イベントコマンドのスクリプトで #name = "閉じかけ目のファイル名" #name2 = "閉じ目のファイル名" #roop_picture(ピクチャ番号,name,name2, 原点, x座標, y座標, x拡大率, y拡大率, 不透明度, 合成方法,反転) #と記述すればループが開始します。 #例)name = "立ち絵閉じかけ目" #name2 = "立ち絵閉じ目" #x = $game_variables[9] #y = $game_variables[10] #roop_picture(13,name,name2, 0, x, y, 100, 100, 255, 0,true) #============================================================================== #まばたき用ベース間隔。 RIRU_PICTURE_ROOP_COUNT1 = 60 #まばたき用ランダム間隔。ベース間隔+この数値までのランダムで出た間隔でまばたきします RIRU_PICTURE_ROOP_COUNT2 = 100 class Game_Interpreter #-------------------------------------------------------------------------- # ● まばたき用ピクチャの表示 #-------------------------------------------------------------------------- def roop_picture(layer,name,name2, origin, x, y, zoom_x, zoom_y, opacity, blend_type,mirror=false) if $game_party.in_battle#バトル中 $game_troop.roop_picture_count(layer) $game_troop.create_roop_picture(layer,name,name2,origin,x, y,zoom_x,zoom_y,opacity,blend_type,mirror) else $game_map.roop_picture_count(layer) $game_map.create_roop_picture(layer,name,name2,origin,x, y,zoom_x,zoom_y,opacity,blend_type,mirror) end end #-------------------------------------------------------------------------- # ● まばたき用ピクチャの消去 #-------------------------------------------------------------------------- def erase_roop_picture(layer) if $game_party.in_battle#バトル中 $game_troop.erase_roop_picture(layer) else $game_map.erase_roop_picture(layer) end end #-------------------------------------------------------------------------- # ● フキダシアイコンの表示 #-------------------------------------------------------------------------- def play_balloon(character_id,balloon_id) character = get_character(character_id) if character != nil character.balloon_id = balloon_id end return true end end class Game_Picture attr_accessor :mirror attr_accessor :mirror_flug alias _riru_loopp_initialize initialize def initialize(number) _riru_loopp_initialize(number) @mirror = false @mirror_flug = false end end class Game_Map #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- alias picture_roop_update update def update(main = false) picture_roop_update(main) if @roop_picture_count != nil for layer in @roop_pictures next if layer == nil next if @roop_picture_count[layer[0]] == nil @roop_picture_count[layer[0]] += 1 roop_picture(layer[0],layer[1],layer[2], layer[3], layer[4], layer[5], layer[6], layer[7], layer[8], layer[9],layer[10]) end end end #-------------------------------------------------------------------------- # ● ループピクチャの情報作成 #-------------------------------------------------------------------------- def create_roop_picture(layer,name,name2, origin, x, y, zoom_x, zoom_y, opacity, blend_type,mirror) @roop_pictures = [] if @roop_pictures == nil @roop_picture_count_rand = [] if @roop_picture_count_rand == nil @roop_pictures[layer] = [layer,name,name2, origin, x, y, zoom_x, zoom_y, opacity, blend_type,mirror] @roop_picture_count_rand[layer] = RIRU_PICTURE_ROOP_COUNT1 + rand(RIRU_PICTURE_ROOP_COUNT2) #瞬きの間隔を作成 end #-------------------------------------------------------------------------- # ● まばたき用ピクチャループ #-------------------------------------------------------------------------- def roop_picture(layer,name,name2, origin, x, y, zoom_x, zoom_y, opacity, blend_type,mirror) case @roop_picture_count[layer] when @roop_picture_count_rand[layer] #閉じかけ目表示 @screen.pictures[layer].show(name,origin,x, y,zoom_x,zoom_y,opacity,blend_type) p_mirror(layer) if mirror == true when @roop_picture_count_rand[layer]+10 #閉じかけ目表示 @screen.pictures[layer].show(name,origin,x, y,zoom_x,zoom_y,opacity,blend_type) p_mirror(layer) if mirror == true when @roop_picture_count_rand[layer]+5 #閉じ目表示 @screen.pictures[layer].show(name2,origin,x, y,zoom_x,zoom_y,opacity,blend_type) p_mirror(layer) if mirror == true when @roop_picture_count_rand[layer]+15 @screen.pictures[layer].erase @roop_picture_count[layer] = 0 @roop_picture_count_rand[layer] = RIRU_PICTURE_ROOP_COUNT1 + rand(RIRU_PICTURE_ROOP_COUNT2) #瞬きの間隔を作成 end end #-------------------------------------------------------------------------- # ● まばたき用ピクチャの消去 #-------------------------------------------------------------------------- def erase_roop_picture(layer) @roop_picture_count[layer] = nil @roop_pictures[layer] = nil @screen.pictures[layer].erase end #-------------------------------------------------------------------------- # ● ピクチャの反転 #-------------------------------------------------------------------------- def p_mirror(n, m = nil) if m == nil @screen.pictures[n].mirror ^= true else @screen.pictures[n].mirror = m end end #-------------------------------------------------------------------------- # ●まばたきループカウントの取得 #-------------------------------------------------------------------------- def roop_picture_count(layer) @roop_picture_count = [] if @roop_picture_count == nil @roop_picture_count[layer] = 0 end end class Game_Troop < Game_Unit #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- alias picture_roop_update update def update picture_roop_update if @roop_picture_count != nil for layer in @roop_pictures next if layer == nil next if @roop_picture_count[layer[0]] == nil @roop_picture_count[layer[0]] += 1 roop_picture(layer[0],layer[1],layer[2], layer[3], layer[4], layer[5], layer[6], layer[7], layer[8], layer[9],layer[10]) end end end #-------------------------------------------------------------------------- # ● ループピクチャの情報作成 #-------------------------------------------------------------------------- def create_roop_picture(layer,name,name2, origin, x, y, zoom_x, zoom_y, opacity, blend_type,mirror) @roop_pictures = [] if @roop_pictures == nil @roop_picture_count_rand = [] if @roop_picture_count_rand == nil @roop_pictures[layer] = [layer,name,name2, origin, x, y, zoom_x, zoom_y, opacity, blend_type,mirror] @roop_picture_count_rand[layer] = RIRU_PICTURE_ROOP_COUNT1 + rand(RIRU_PICTURE_ROOP_COUNT2) #瞬きの間隔を作成 end #-------------------------------------------------------------------------- # ● まばたき用ピクチャループ #-------------------------------------------------------------------------- def roop_picture(layer,name,name2, origin, x, y, zoom_x, zoom_y, opacity, blend_type,mirror) case @roop_picture_count[layer] when @roop_picture_count_rand[layer] #閉じかけ目表示 @screen.pictures[layer].show(name,origin,x, y,zoom_x,zoom_y,opacity,blend_type) p_mirror(layer) if mirror == true when @roop_picture_count_rand[layer]+10 #閉じかけ目表示 @screen.pictures[layer].show(name,origin,x, y,zoom_x,zoom_y,opacity,blend_type) p_mirror(layer) if mirror == true when @roop_picture_count_rand[layer]+5 #閉じ目表示 @screen.pictures[layer].show(name2,origin,x, y,zoom_x,zoom_y,opacity,blend_type) p_mirror(layer) if mirror == true when @roop_picture_count_rand[layer]+15 @screen.pictures[layer].erase @roop_picture_count[layer] = 0 @roop_picture_count_rand[layer] = RIRU_PICTURE_ROOP_COUNT1 + rand(RIRU_PICTURE_ROOP_COUNT2) #瞬きの間隔を作成 end end #-------------------------------------------------------------------------- # ● まばたき用ピクチャの消去 #-------------------------------------------------------------------------- def erase_roop_picture(layer) @roop_picture_count[layer] = nil @roop_pictures[layer] = nil @screen.pictures[layer].erase end #-------------------------------------------------------------------------- # ● ピクチャの反転 #-------------------------------------------------------------------------- def p_mirror(n, m = nil) if m == nil @screen.pictures[n].mirror ^= true else @screen.pictures[n].mirror = m end end #-------------------------------------------------------------------------- # ●まばたきループカウントの取得 #-------------------------------------------------------------------------- def roop_picture_count(layer) @roop_picture_count = [] if @roop_picture_count == nil @roop_picture_count[layer] = 0 end end class Sprite_Picture < Sprite alias _riru_loopp_update update def update _riru_loopp_update x = @picture.x self.x = x + (220 - self.bitmap.width) if self.bitmap != nil and @picture.mirror_flug == true self.mirror = @picture.mirror if @picture_name != "" end end