设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1480|回复: 1
打印 上一主题 下一主题

[已经解决] 请教一下关于照明脚本(明かりスクリプト)的设定问题

[复制链接]

Lv5.捕梦者

梦石
18
星屑
13650
在线时间
1715 小时
注册时间
2017-1-12
帖子
1790

开拓者

跳转到指定楼层
1
发表于 2018-2-24 22:22:02 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
是这样,使用这个脚本时灯光会覆盖在图片及对话框上层。
如图,闪光的地方是原本设定在地图上的照明处,显示图片以后直接覆盖在上面了。


这是烛光图片



以下是该脚本以及相应辅助的脚本。
想问一下应该改哪里的设定让这个光不要透过图片和对话框。
RUBY 代码复制
  1. #◆◇◆◇◆ 明かりスクリプトVXA ver 1.00 ◇◆◇◆◇
  2. #  サポート掲示板 http://www2.ezbbs.net/21/minto-aaa/
  3. #   by みんと
  4.  
  5. =begin
  6.  
  7. ※ 導入場所の注意
  8.  
  9. すべてモジュールで管理されていますので、
  10. マスタースクリプトより下であれば導入場所は関係ありません。
  11.  
  12. ■ 更新履歴
  13.  
  14. ○ ver 1.00(2012/01/16)
  15. 公開
  16.  
  17. ■ 説明
  18.  
  19. イベントに明かりを設定出来るようにします。
  20. 明かりは画面の色調よりも全面に出るため、
  21. 明かりの範囲内は明るく表示されます。
  22.  
  23. ◆ 設定方法及び仕様
  24.  
  25. 設定にはイベントの内容に
  26. 「どこでもいいので」注釈を置きます。
  27. そして、注釈の内容を
  28.  
  29. ◆ 明かり設定1
  30.  
  31. といったように"明かり設定の後"に"半角の数字"を記入してください。
  32. 記入した数字が、明かりデータの管理IDとなります。
  33.  
  34. 明かりはイベントの不透明度と同期して強さが変化します。
  35. イベントが完全に透明になれば明かりも完全に消えますので、
  36. 明かりを個別に消したい場合は、
  37. 移動ルートなどで対象イベントの不透明度を0にしてください。
  38.  
  39. また、新しいページに注釈で設定されていない場合も明かりは消えます。
  40.  
  41. ◆ 画像の規格
  42.  
  43. 明かりに使用する画像の規格は任意です。
  44. ただし、1コマの規格は「画像の全体の横幅を4で割った値」となります。
  45. つまり、640*160ピクセルの画像の場合、
  46. 1コマの規格は160*160となります。
  47.  
  48. 画像は全て左から順に 0→1→2→3→0 と4コマループします。
  49.  
  50. 明かり用の画像はピクチャーフォルダにインポートしてください。
  51.  
  52. =end
  53.  
  54. #==============================================================================
  55. # ☆ MINTO
  56. #------------------------------------------------------------------------------
  57. #   様々なフラグを扱うメインモジュールです。
  58. #==============================================================================
  59.  
  60. module MINTO
  61.  
  62.   # 明かりスクリプトVXAを有効化 ( true で有効 / false で無効 )
  63.   RGSS["明かりスクリプトVXA"] = true
  64.  
  65. end
  66.  
  67. # 明かりスクリプトVXAが有効な場合に以降の処理を実行する
  68. if MINTO::RGSS["明かりスクリプトVXA"] == true then
  69.  
  70. #==============================================================================
  71. # ☆ カスタマイズ
  72. #------------------------------------------------------------------------------
  73. #   機能のカスタマイズをここで行います。
  74. #==============================================================================
  75.  
  76. module MINTO
  77.   #--------------------------------------------------------------------------
  78.   # ● 明かりのセット
  79.   #    belong_id : 明かりの管理ID
  80.   #--------------------------------------------------------------------------
  81.   def self.light_set(belong_id)
  82.     # 明かりの管理IDに応じて分岐
  83.     case belong_id
  84.     when 1 then
  85.       # data = [画像ファイル名, Y座標修正値, 大きさ(通常2。 小数点可)]
  86.       data = ["stove", 0, 6]
  87.     when 2 then
  88.       data = ["Light_Sprite02", -16, 2]
  89.     # それ以外の名前の場合
  90.     else
  91.       data = ["", 0, 1]
  92.     end
  93.     # 設定データを返す
  94.     return data.dup
  95.   end
  96. end
  97. #==============================================================================
  98. # ☆ Add_Light_Sprite
  99. #------------------------------------------------------------------------------
  100. #   Sprite_Characterクラスに機能を追加するモジュールです。
  101. #   明かりの機能を追加します。
  102. #==============================================================================
  103.  
  104. module Add_Light_Sprite
  105.   #--------------------------------------------------------------------------
  106.   # ● 解放(明かり)
  107.   #--------------------------------------------------------------------------
  108.   def dispose_light
  109.     # 明かりが存在する場合
  110.     if @light_sprite != nil then
  111.       # 明かりを解放
  112.       @light_sprite.bitmap.dispose
  113.       @light_sprite.dispose
  114.       @light_sprite = nil
  115.     end
  116.   end
  117.   #--------------------------------------------------------------------------
  118.   # ● 解放
  119.   #--------------------------------------------------------------------------
  120.   def dispose
  121.     # 明かりを解放
  122.     dispose_light
  123.     # 明かり可視フラグをクリア
  124.     @character.light_visible = false
  125.     # 明かり作成フラグをクリア
  126.     @character.call_light = false
  127.     # 最終ページ情報を解放
  128.     @character.dispose_data
  129.     # スーパークラスの処理に移行
  130.     super
  131.   end
  132.   #--------------------------------------------------------------------------
  133.   # ● 明かりの設定
  134.   #    id : 明かりのID
  135.   #--------------------------------------------------------------------------
  136.   def light_set(id)
  137.     # 明かりを解放
  138.     dispose_light
  139.     # 明かりを作成
  140.     @light_sprite = Light_Sprite.new(self, id)
  141.   end
  142.   #--------------------------------------------------------------------------
  143.   # ● フレーム更新
  144.   #--------------------------------------------------------------------------
  145.   def update
  146.     # スーパークラスの処理に移行
  147.     super
  148.     # キャラクターが無効な場合
  149.     if @character == nil then
  150.       # メソッドを返す
  151.       return
  152.     end
  153.     # 明かりデータを取得
  154.     @character.get_light_data
  155.     # 明かり可視フラグが無効な場合
  156.     if @character.light_visible != true then
  157.       # 明かりを解放
  158.       dispose_light
  159.       # メソッドを返す
  160.       return
  161.     end
  162.     # 明かり作成フラグが有効な場合
  163.     if @character.call_light == true then
  164.       # 明かり作成フラグをオフにする
  165.       @character.call_light = false
  166.       # 明かりを作成
  167.       light_set(@character.light_id)
  168.     end
  169.     # 明かりが無効な場合
  170.     if @light_sprite == nil then
  171.       # メソッドを返す
  172.       return
  173.     end
  174.     # 明かりを更新
  175.     @light_sprite.update
  176.   end
  177. end
  178. #==============================================================================
  179. # ☆ Add_Game_Event_Light
  180. #------------------------------------------------------------------------------
  181. #   Game_Eventクラスに機能を追加するモジュールです。
  182. #   明かりの機能を追加します。
  183. #==============================================================================
  184.  
  185. module Add_Game_Event_Light
  186.   #--------------------------------------------------------------------------
  187.   # ● オブジェクト初期化
  188.   #--------------------------------------------------------------------------
  189.   def initialize
  190.     # スーパークラスの処理に移行
  191.     super
  192.     @last_page_light = {}
  193.   end
  194.   #--------------------------------------------------------------------------
  195.   # ● データのリセット
  196.   #--------------------------------------------------------------------------
  197.   def self.reset
  198.     @last_page_light = {}
  199.   end
  200.   #--------------------------------------------------------------------------
  201.   # ● データ解放
  202.   #--------------------------------------------------------------------------
  203.   def dispose_data
  204.     # 無効なデータの場合
  205.     if @last_page_light == nil then
  206.       # データを初期化
  207.       @last_page_light = {}
  208.       # メソッドを返す
  209.       return
  210.     end
  211.     # 自身のデータをクリア
  212.     @last_page_light[self] = nil
  213.   end
  214.   #--------------------------------------------------------------------------
  215.   # ● 拡張データの取得
  216.   #--------------------------------------------------------------------------
  217.   def get_light_data
  218.     # 無効なデータの場合
  219.     if @last_page_light == nil then
  220.       # データを初期化
  221.       @last_page_light = {}
  222.     end
  223.     # イベントページが更新されていない場合
  224.     if @last_page_light[self] == @page then
  225.       # データ未定義の場合
  226.       if self.light_visible == nil then
  227.         # 自身のデータをクリア
  228.         @last_page_light[self] = nil
  229.       end
  230.       # メソッドを返す
  231.       return
  232.     end
  233.     # 明かり可視フラグをクリア
  234.     self.light_visible = false
  235.     # 明かり作成フラグをクリア
  236.     self.call_light = false
  237.     # 最新のイベントページを記憶
  238.     @last_page_light[self] = @page
  239.     # イベントページが有効な場合
  240.     if @page != nil then
  241.       # イベントページに内容が存在する場合
  242.       if @page.list != nil then
  243.         # ループ処理(ページ内容)
  244.         (0...@page.list.size).each do |i|
  245.           # 注釈の場合
  246.           if @page.list[i].code == 108 or @page.list[i].code == 408 then
  247.             # 注釈内ループ処理
  248.             (0...@page.list[i].parameters.size).each do |id|
  249.               # 注釈のコードを取得
  250.               code = @page.list[i].parameters[id].dup.to_s
  251.               code.gsub!(/明かり設定/) {""}
  252.               # 明かりのIDを取得
  253.               light_id = code.to_i
  254.               # 明かりのIDが有効な場合
  255.               if light_id >= 1 then
  256.                 # 明かりIDを記憶
  257.                 self.light_id = light_id
  258.                 # 明かり可視フラグをオンにする
  259.                 self.light_visible = true
  260.                 # 明かりを作成フラグをオンにする
  261.                 self.call_light = true
  262.                 # メソッドを返す
  263.                 return
  264.               end
  265.             end
  266.           end
  267.         end
  268.       end
  269.     end
  270.   end
  271.   #--------------------------------------------------------------------------
  272.   # ● フレーム更新
  273.   #--------------------------------------------------------------------------
  274.   def update
  275.     # スーパークラスの処理に移行
  276.     super
  277.   end
  278. end
  279. #==============================================================================
  280. # ■ Light_Sprite
  281. #------------------------------------------------------------------------------
  282. #    マップでの明かりを管理するスプライトクラスです。
  283. #==============================================================================
  284.  
  285. class Light_Sprite < Sprite
  286.   #--------------------------------------------------------------------------
  287.   # ● 公開インスタンス変数
  288.   #--------------------------------------------------------------------------
  289.   attr_accessor :name                     # 明かりに使う画像
  290.   #--------------------------------------------------------------------------
  291.   # ● オブジェクト初期化
  292.   #    character  : 対象キャラクター
  293.   #    event_name : イベントの名前
  294.   #--------------------------------------------------------------------------
  295.   def initialize(character, event_name)
  296.     # スーパークラスを実行
  297.     super()
  298.     # 明かりのデータを取得
  299.     @data = MINTO.light_set(event_name)
  300.     # ファイルネームを読み込む
  301.     @name = @data[0].dup
  302.     # スプライトを保存
  303.     @character = character
  304.     # 明かり用のビットマップを作成
  305.     self.bitmap = Cache.picture(@name).dup
  306.     @width = self.bitmap.width / 4
  307.     @height = self.bitmap.height
  308.     # 基本座標をセット
  309.     self.x = @character.x
  310.     self.y = @character.y
  311.     self.z = 999
  312.     # 転移座標をセット
  313.     self.ox = @width / 2
  314.     self.oy = @height / 2
  315.     # 透明でない限りは明かりを表示させる
  316.     self.visible = (@character.opacity != 0)
  317.     # 明かりの不透明度を設定
  318.     self.opacity = (@character.opacity / 2) + 32
  319.     # 明かりを加算表示にする
  320.     self.blend_type = 1
  321.     # 明かりをズームさせる
  322.     self.zoom = @data[2]
  323.     # ブリンクカウントを初期化
  324.     @blink_count = 0
  325.     # フレーム更新
  326.     update
  327.   end
  328.   #--------------------------------------------------------------------------
  329.   # ● データのセット
  330.   #    name : 設定データの名前
  331.   #--------------------------------------------------------------------------
  332.   def set_data(name)
  333.     # 設定データを更新
  334.     @data = MINTO.light_set(name)
  335.     # 明かり用のビットマップを再作成
  336.     self.bitmap = Cache.picture(@data[0]).dup
  337.     self.oy = @data[1]
  338.     self.zoom = @data[2]
  339.   end
  340.   #--------------------------------------------------------------------------
  341.   # ● ズーム
  342.   #    n : ズーム倍率
  343.   #--------------------------------------------------------------------------
  344.   def zoom=(n)
  345.     self.zoom_x = n
  346.     self.zoom_y = n
  347.   end
  348.   #--------------------------------------------------------------------------
  349.   # ● 解放
  350.   #--------------------------------------------------------------------------
  351.   def dispose
  352.     # スーパークラスを実行
  353.     super
  354.   end
  355.   #--------------------------------------------------------------------------
  356.   # ● フレーム更新
  357.   #--------------------------------------------------------------------------
  358.   def update
  359.     super
  360.     # 基本情報を更新
  361.     self.x = @character.character.screen_x
  362.     self.y = @character.character.screen_y + @data[1]
  363.     # 透明でない限りは明かりを表示させる
  364.     self.visible = (@character.character.opacity != 0)
  365.     # 明かりの不透明度を設定
  366.     self.opacity = (@character.character.opacity / 2) + 32
  367.     # 点滅カウントを更新
  368.     @blink_count = (@blink_count + 1) % 48
  369.     # 転送元の矩形を設定
  370.     case @blink_count
  371.     when 0...12 then
  372.       self.src_rect.set(@width * 0, 0, @width, @height)
  373.     when 12...24 then
  374.       self.src_rect.set(@width * 1, 0, @width, @height)
  375.     when 24...36 then
  376.       self.src_rect.set(@width * 2, 0, @width, @height)
  377.     else
  378.       self.src_rect.set(@width * 3, 0, @width, @height)
  379.     end
  380.   end
  381. end
  382. #==============================================================================
  383. # ■ Game_Event
  384. #------------------------------------------------------------------------------
  385. #  イベントを扱うクラスです。条件判定によるイベントページ切り替えや、並列処理
  386. # イベント実行などの機能を持っており、Game_Map クラスの内部で使用されます。
  387. #==============================================================================
  388.  
  389. class Game_Event < Game_Character
  390.   #--------------------------------------------------------------------------
  391.   # ● システムインクルード
  392.   #--------------------------------------------------------------------------
  393.   include(Add_Game_Event_Light)           # 明かり管理モジュール
  394.   #--------------------------------------------------------------------------
  395.   # ● 公開インスタンス変数
  396.   #--------------------------------------------------------------------------
  397.   attr_reader   :event                    # イベント
  398.   attr_accessor :light_id                 # 明かりのID
  399.   attr_accessor :light_visible            # 明かり可視フラグ
  400.   attr_accessor :call_light               # 明かり実行フラグ
  401. end
  402. #==============================================================================
  403. # ■ Game_Vehicle
  404. #------------------------------------------------------------------------------
  405. #  乗り物を扱うクラスです。このクラスは Game_Map クラスの内部で使用されます。
  406. # 現在のマップに乗り物がないときは、マップ座標 (-1,-1) に設定されます。
  407. #==============================================================================
  408.  
  409. class Game_Vehicle < Game_Character
  410.   #--------------------------------------------------------------------------
  411.   # ● システムインクルード
  412.   #--------------------------------------------------------------------------
  413.   include(Add_Game_Event_Light)           # 明かり管理モジュール
  414.   #--------------------------------------------------------------------------
  415.   # ● 公開インスタンス変数
  416.   #--------------------------------------------------------------------------
  417.   attr_reader   :event                    # イベント
  418.   attr_accessor :light_id                 # 明かりのID
  419.   attr_accessor :light_visible            # 明かり可視フラグ
  420.   attr_accessor :call_light               # 明かり実行フラグ
  421. end
  422. #==============================================================================
  423. # ■ Game_Player
  424. #------------------------------------------------------------------------------
  425. #  プレイヤーを扱うクラスです。イベントの起動判定や、マップのスクロールなどの
  426. # 機能を持っています。このクラスのインスタンスは $game_player で参照されます。
  427. #==============================================================================
  428.  
  429. class Game_Player < Game_Character
  430.   #--------------------------------------------------------------------------
  431.   # ● システムインクルード
  432.   #--------------------------------------------------------------------------
  433.   include(Add_Game_Event_Light)           # 明かり管理モジュール
  434.   #--------------------------------------------------------------------------
  435.   # ● 公開インスタンス変数
  436.   #--------------------------------------------------------------------------
  437.   attr_reader   :event                    # イベント
  438.   attr_accessor :light_id                 # 明かりのID
  439.   attr_accessor :light_visible            # 明かり可視フラグ
  440.   attr_accessor :call_light               # 明かり実行フラグ
  441. end
  442. #==============================================================================
  443. # ■ Game_Follower
  444. #------------------------------------------------------------------------------
  445. #  フォロワーを扱うクラスです。フォロワーとは、隊列歩行で表示する、先頭以外の
  446. # 仲間キャラクターのことです。Game_Followers クラスの内部で参照されます。
  447. #==============================================================================
  448.  
  449. class Game_Follower < Game_Character
  450.   #--------------------------------------------------------------------------
  451.   # ● システムインクルード
  452.   #--------------------------------------------------------------------------
  453.   include(Add_Game_Event_Light)           # 明かり管理モジュール
  454.   #--------------------------------------------------------------------------
  455.   # ● 公開インスタンス変数
  456.   #--------------------------------------------------------------------------
  457.   attr_reader   :event                    # イベント
  458.   attr_accessor :light_id                 # 明かりのID
  459.   attr_accessor :light_visible            # 明かり可視フラグ
  460.   attr_accessor :call_light               # 明かり実行フラグ
  461. end
  462. #==============================================================================
  463. # ■ Game_Subplayer
  464. #------------------------------------------------------------------------------
  465. #  サブプレイヤーを扱うクラスです。
  466. # このクラスのインスタンスは $game_subplayer1~3で参照されます。
  467. # Game_Playerクラスを元に作っています
  468. #==============================================================================
  469.  
  470. class Game_Subplayer < Game_Character
  471.   #--------------------------------------------------------------------------
  472.   # ● システムインクルード
  473.   #--------------------------------------------------------------------------
  474.   include(Add_Game_Event_Light)           # 明かり管理モジュール
  475.   #--------------------------------------------------------------------------
  476.   # ● 公開インスタンス変数
  477.   #--------------------------------------------------------------------------
  478.   attr_reader   :event                    # イベント
  479.   attr_accessor :light_id                 # 明かりのID
  480.   attr_accessor :light_visible            # 明かり可視フラグ
  481.   attr_accessor :call_light               # 明かり実行フラグ
  482. end
  483. #==============================================================================
  484. # ■ Game_Interpreter
  485. #------------------------------------------------------------------------------
  486. #  イベントコマンドを実行するインタプリタです。このクラスは Game_Map クラス、
  487. # Game_Troop クラス、Game_Event クラスの内部で使用されます。
  488. #==============================================================================
  489.  
  490. class Game_Interpreter
  491.   #--------------------------------------------------------------------------
  492.   # ● 場所移動
  493.   #--------------------------------------------------------------------------
  494.   alias :command_201_Light_Sprite :command_201
  495.   def command_201
  496.     # 元の処理を実行
  497.     bool = command_201_Light_Sprite
  498.     # 明かりのデータを初期化
  499.     Add_Game_Event_Light.reset
  500.     # フラグを返す
  501.     return bool
  502.   end
  503. end
  504. #==============================================================================
  505. # ■ Sprite_Character
  506. #------------------------------------------------------------------------------
  507. #  キャラクター表示用のスプライトです。Game_Character クラスのインスタンスを
  508. # 監視し、スプライトの状態を自動的に変化させます。
  509. #==============================================================================
  510.  
  511. class Sprite_Character < Sprite_Base
  512.   #--------------------------------------------------------------------------
  513.   # ● システムインクルード
  514.   #--------------------------------------------------------------------------
  515.   include(Add_Light_Sprite)               # 明かりモジュール
  516. end
  517.  
  518. end

RUBY 代码复制
  1. #◆◇◆◇◆  マスタースクリプトVXA ver 1.00  ◇◆◇◆◇
  2. #  サポート掲示板 http://www2.ezbbs.net/21/minto-aaa/
  3. #   by みんと
  4.  
  5. =begin
  6.  
  7. ■ 更新履歴
  8.  
  9. ○ Ver 1.00(2012/01/16)
  10. 公開
  11.  
  12. ■ 説明
  13.  
  14. 全てのみんとRGSSより上に導入してください。
  15. (基本的にシステム上部に導入してください)
  16.  
  17. これがないと全てのみんとRGSS3は動作いたしません。
  18.  
  19. =end
  20.  
  21. #==============================================================================
  22. # ☆ MINTO
  23. #------------------------------------------------------------------------------
  24. #   様々なフラグを扱うメインモジュールです。
  25. #==============================================================================
  26.  
  27. module MINTO
  28.  
  29.   # VXRGSSの導入環境ハッシュを初期化
  30.   RGSS = {}
  31.  
  32. end
  33.  
  34. #==============================================================================
  35. # ☆ MINTO_System
  36. #------------------------------------------------------------------------------
  37. #   様々な機能を扱うシステムモジュールです。
  38. #==============================================================================
  39.  
  40. module MINTO_System
  41.   #--------------------------------------------------------------------------
  42.   # ● 開始処理
  43.   #--------------------------------------------------------------------------
  44.   def start
  45.     @tone_rate = 0
  46.     # シーンスプライトを作成
  47.     @scene_sprite = Sprite_Base.new
  48.     # スーパークラスを実行
  49.     super
  50.   end
  51.   #--------------------------------------------------------------------------
  52.   # ● トランジション実行
  53.   #--------------------------------------------------------------------------
  54.   def perform_transition
  55.     # スーパークラスを実行
  56.     super
  57.   end
  58.   #--------------------------------------------------------------------------
  59.   # ● 開始後処理
  60.   #--------------------------------------------------------------------------
  61.   def post_start
  62.     # スーパークラスを実行
  63.     super
  64.   end
  65.   #--------------------------------------------------------------------------
  66.   # ● フレーム更新
  67.   #--------------------------------------------------------------------------
  68.   def update
  69.     # シーンスプライトを更新
  70.     @scene_sprite.update
  71.     # スーパークラスを実行
  72.     super
  73.   end
  74.   #--------------------------------------------------------------------------
  75.   # ● 終了前処理
  76.   #--------------------------------------------------------------------------
  77.   def pre_terminate
  78.     # スーパークラスを実行
  79.     super
  80.   end
  81.   #--------------------------------------------------------------------------
  82.   # ● 終了処理
  83.   #--------------------------------------------------------------------------
  84.   def terminate
  85.     # シーンスプライトを解放
  86.     @scene_sprite.bitmap.dispose if @scene_sprite.bitmap
  87.     @scene_sprite.dispose
  88.     @scene_sprite = nil
  89.     # スーパークラスを実行
  90.     super
  91.   end
  92. end
  93.  
  94. # ☆ 開発用メソッド追加 ☆
  95.  
  96. #==============================================================================
  97. # ■ Scene_Base
  98. #------------------------------------------------------------------------------
  99. #  ゲーム中のすべてのシーンのスーパークラスです。
  100. #==============================================================================
  101.  
  102. class Scene_Base
  103.   #--------------------------------------------------------------------------
  104.   # ● 暗転モード処理
  105.   #--------------------------------------------------------------------------
  106.   def blackout(type = 0, power = 10, max = 100, sprite = nil)
  107.     @tone_power = power
  108.     @tone_type = type
  109.     @tone_max = max
  110.     update_blackout(sprite)
  111.   end
  112.   #--------------------------------------------------------------------------
  113.   # ● フレーム更新 (暗転処理)
  114.   #--------------------------------------------------------------------------
  115.   def update_blackout(sprite)
  116.     case @tone_type
  117.     when 0
  118.       if @tone_rate != -@tone_max
  119.         @tone_rate = [@tone_rate - @tone_power, -@tone_max].max
  120.         sprite.tone.red = @tone_rate
  121.         sprite.tone.green = @tone_rate
  122.         sprite.tone.blue = @tone_rate
  123.       end
  124.     when 1
  125.       if @tone_rate != 0
  126.         @tone_rate = [@tone_rate + @tone_power, 0].min
  127.         sprite.tone.red = @tone_rate
  128.         sprite.tone.green = @tone_rate
  129.         sprite.tone.blue = @tone_rate
  130.       end
  131.     end
  132.   end
  133. end
  134. #==============================================================================
  135. # ■ Object
  136. #------------------------------------------------------------------------------
  137. #  全てのクラスのスーパークラス。オブジェクトの一般的な振舞いを定義します。
  138. #==============================================================================
  139.  
  140. class Object
  141.   #--------------------------------------------------------------------------
  142.   # ● 情報の出力
  143.   #--------------------------------------------------------------------------
  144.   def p2(info)
  145.     # pメソッドを疑似的に前の仕様に戻す
  146.     msgbox(info)
  147.   end
  148.   #--------------------------------------------------------------------------
  149.   # ● 深い複製の作成
  150.   #--------------------------------------------------------------------------
  151.   def dec
  152.     # Marshalもモジュールを経由して、完全な複製を作成
  153.     return Marshal.load(Marshal.dump(self))
  154.   end
  155. end
  156. #==============================================================================
  157. # ■ NilClass
  158. #------------------------------------------------------------------------------
  159. #  nil のクラス。nil は NilClass クラスの唯一のインスタンスです。
  160. #==============================================================================
  161.  
  162. class NilClass
  163.   #--------------------------------------------------------------------------
  164.   # ● デバイスの取得
  165.   #--------------------------------------------------------------------------
  166.   def to_d
  167.     return "BGM"
  168.   end
  169. end
  170. #==============================================================================
  171. # ■ String
  172. #------------------------------------------------------------------------------
  173. #  文字列クラス。任意の長さのバイト列を扱うことができます。
  174. #==============================================================================
  175.  
  176. class String
  177.   #--------------------------------------------------------------------------
  178.   # ● デバイスの取得
  179.   #--------------------------------------------------------------------------
  180.   def to_d
  181.     return self
  182.   end
  183. end
  184. #==============================================================================
  185. # ■ Audio
  186. #------------------------------------------------------------------------------
  187. #  ミュージック、サウンドにかかわる処理を行うモジュールです。
  188. #==============================================================================
  189.  
  190. module Audio
  191.   #--------------------------------------------------------------------------
  192.   # ● 音楽の解放
  193.   #--------------------------------------------------------------------------
  194.   def self.dispose
  195.     #self.bgs_stop
  196.     self.me_stop
  197.     self.bgm_stop
  198.   end
  199. end
  200. #==============================================================================
  201. # ■ Sprite
  202. #------------------------------------------------------------------------------
  203. #  スプライト表示を扱う組み込みクラスです。
  204. #==============================================================================
  205.  
  206. class Sprite
  207.   #--------------------------------------------------------------------------
  208.   # ● 座標の設定
  209.   #--------------------------------------------------------------------------
  210.   def rect_set(x, y, z = 100)
  211.     self.x = x if x
  212.     self.y = y if y
  213.     self.z = z if z
  214.   end
  215.   #--------------------------------------------------------------------------
  216.   # ● データの取得
  217.   #--------------------------------------------------------------------------
  218.   def data_copy(data)
  219.     return if data.disposed? or self.disposed?
  220.     # 各データをコピー
  221.     self.x = data.x
  222.     self.y = data.y
  223.     self.z = data.z-1
  224.     self.visible = data.visible
  225.     self.ox = data.ox
  226.     self.oy = data.oy
  227.     self.angle = data.angle
  228.     self.mirror = data.mirror
  229.     self.src_rect = data.src_rect.dup
  230.     self.zoom_x = data.zoom_x
  231.     self.zoom_y = data.zoom_y
  232.   end
  233.   #--------------------------------------------------------------------------
  234.   # ● 残像用の複製の作成
  235.   #--------------------------------------------------------------------------
  236.   def blink
  237.     # 各データをコピー
  238.     sprite = Sprite.new(self.viewport)
  239.     sprite.bitmap = self.bitmap.dup if self.bitmap
  240.     sprite.x = self.x
  241.     sprite.y = self.y
  242.     sprite.z = self.z-1
  243.     sprite.visible = false
  244.     sprite.ox = self.ox
  245.     sprite.oy = self.oy
  246.     sprite.angle = self.angle
  247.     sprite.mirror = self.mirror
  248.     sprite.opacity = self.opacity - 95
  249.     sprite.blend_type = 1
  250.     sprite.color = self.color.dup
  251.     sprite.src_rect = self.src_rect.dup
  252.     sprite.zoom_x = self.zoom_x
  253.     sprite.zoom_y = self.zoom_y
  254.     return sprite
  255.   end
  256.   #--------------------------------------------------------------------------
  257.   # ● 複製の作成
  258.   #--------------------------------------------------------------------------
  259.   def dup
  260.     # 各データをコピー
  261.     sprite = Sprite.new(self.viewport)
  262.     sprite.bitmap = self.bitmap.dup if self.bitmap
  263.     sprite.x = self.x
  264.     sprite.y = self.y
  265.     sprite.z = self.z
  266.     sprite.visible = self.visible
  267.     sprite.ox = self.ox
  268.     sprite.oy = self.oy
  269.     sprite.angle = self.angle
  270.     sprite.mirror = self.mirror
  271.     sprite.opacity = self.opacity
  272.     sprite.blend_type = self.blend_type
  273.     sprite.color = self.color.dup
  274.     sprite.src_rect = self.src_rect.dup
  275.     sprite.zoom_x = self.zoom_x
  276.     sprite.zoom_y = self.zoom_y
  277.     return sprite
  278.   end
  279.   #--------------------------------------------------------------------------
  280.   # ● センタリング
  281.   #--------------------------------------------------------------------------
  282.   def centering
  283.     return if self.bitmap == nil
  284.     self.x = (640 - (self.bitmap.width * self.zoom_x)) / 2
  285.     self.y = (480 - (self.bitmap.height * self.zoom_y)) / 2
  286.   end
  287.   #--------------------------------------------------------------------------
  288.   # ● ズーム
  289.   #--------------------------------------------------------------------------
  290.   def zoom=(n)
  291.     zoom_x = n
  292.     zoom_y = n
  293.   end
  294.   #--------------------------------------------------------------------------
  295.   # ● エフェクト表示中判定
  296.   #--------------------------------------------------------------------------
  297.   def effect?
  298.     return false
  299.   end
  300. end
  301. #==============================================================================
  302. # ■ Array
  303. #------------------------------------------------------------------------------
  304. #  配列全般を扱う組み込みクラスです。
  305. #==============================================================================
  306.  
  307. class Array
  308.   #--------------------------------------------------------------------------
  309.   # ● 要素の一次元化
  310.   #--------------------------------------------------------------------------
  311.   def divide
  312.     array = []
  313.     # データを複製
  314.     data = self.dup
  315.     # 要素の一次元化
  316.     data.each do |i|
  317.       if i.is_a?(Array)
  318.         for a in i
  319.           array.push(a)
  320.         end
  321.       else
  322.         array.push(i)
  323.       end
  324.     end
  325.     return array
  326.   end
  327.   #--------------------------------------------------------------------------
  328.   # ● 要素のシャッフル
  329.   #--------------------------------------------------------------------------
  330.   def shuffle
  331.     # データを複製
  332.     data = self.dup
  333.     # 要素をランダムに並び替える
  334.     data.each_index do |i|
  335.       j = rand(i+1)
  336.       data[i], data[j] = data[j], data[i]
  337.     end
  338.     return data
  339.   end
  340.   #--------------------------------------------------------------------------
  341.   # ● 要素のシャッフル(破壊的)
  342.   #--------------------------------------------------------------------------
  343.   def shuffle!
  344.     # 要素をランダムに並び替える
  345.     self.each_index do |i|
  346.       j = rand(i+1)
  347.       self[i], self[j] = self[j], self[i]
  348.     end
  349.   end
  350.   #--------------------------------------------------------------------------
  351.   # ● 要素をランダムに返す
  352.   #--------------------------------------------------------------------------
  353.   def get_rand
  354.     return self[rand(self.size)]
  355.   end
  356.   #--------------------------------------------------------------------------
  357.   # ● 要素の交換
  358.   #    a : 要素1
  359.   #    b : 要素2
  360.   #--------------------------------------------------------------------------
  361.   def change(a, b)
  362.     # データを複製
  363.     data = self.dup
  364.     # 要素を交換する(self自体には変化がない)
  365.     data[a] = self[b]
  366.     data[b] = self[a]
  367.     return data
  368.   end
  369.   #--------------------------------------------------------------------------
  370.   # ● 要素の交換(破壊的)
  371.   #    a : 要素1
  372.   #    b : 要素2
  373.   #--------------------------------------------------------------------------
  374.   def change!(a, b)
  375.     # 要素を交換する(selfを直接書き換える)
  376.     self[a], self[b] = self[b], self[a]
  377.   end
  378. end
  379. #==============================================================================
  380. # ■ Numeric
  381. #------------------------------------------------------------------------------
  382. #  数値全般を扱う組み込みクラスです。
  383. #==============================================================================
  384.  
  385. class Numeric
  386.   #--------------------------------------------------------------------------
  387.   # ● 乱数の設定
  388.   #    n : 乱数値
  389.   #--------------------------------------------------------------------------
  390.   def amp(n)
  391.     amp = (self.abs * n / 100).to_min(1)
  392.     return self + rand(amp+1) + rand(amp+1) - amp
  393.   end
  394.   #--------------------------------------------------------------------------
  395.   # ● 値の調整
  396.   #    order : 求められた値
  397.   #    size  : 最大サイズ
  398.   #--------------------------------------------------------------------------
  399.   def select(order, size)
  400.     if self - order <= -1
  401.       return size
  402.     elsif self + order >= size
  403.       return 0
  404.     else
  405.       return self + order
  406.     end
  407.   end
  408.   #--------------------------------------------------------------------------
  409.   # ● 最大値の設定
  410.   #    max : 求められた最大の数値
  411.   #--------------------------------------------------------------------------
  412.   def to_max(min, max)
  413.     if self > max
  414.       return max
  415.     elsif self < min
  416.       return min
  417.     else
  418.       return self
  419.     end
  420.   end
  421.   #--------------------------------------------------------------------------
  422.   # ● 最大値の設定
  423.   #    max : 求められた最大の数値
  424.   #--------------------------------------------------------------------------
  425.   def to_m(max)
  426.     if self > max
  427.       return max
  428.     else
  429.       return self
  430.     end
  431.   end
  432.   #--------------------------------------------------------------------------
  433.   # ● 最小値の設定
  434.   #    min : 求められた最小の数値
  435.   #--------------------------------------------------------------------------
  436.   def to_min(min)
  437.     if self < min
  438.       return min
  439.     else
  440.       return self
  441.     end
  442.   end
  443.   #--------------------------------------------------------------------------
  444.   # ● 範囲内から乱数を得る
  445.   #    min : 求められた最小の数値
  446.   #--------------------------------------------------------------------------
  447.   def mm_rand(min)
  448.     return rand(self - min + 1) + min
  449.   end
  450.   #--------------------------------------------------------------------------
  451.   # ● 求めた数値に対するパーセンテージを返す
  452.   #    order : 求められた数値
  453.   #--------------------------------------------------------------------------
  454.   def rate(order)
  455.     return 100 if order == 0
  456.     return (self * 100) / order
  457.   end
  458. end
  459. #==============================================================================
  460. # ■ Window
  461. #------------------------------------------------------------------------------
  462. #  ゲーム内の全てのウィンドウのスーパークラスです。
  463. #   内部的には複数のスプライトで構成されています。
  464. #==============================================================================
  465.  
  466. class Window
  467.   #--------------------------------------------------------------------------
  468.   # ● 暗転モード処理
  469.   #--------------------------------------------------------------------------
  470.   def blackout(type = 0, power = 10, max = 100, sprite = @win_viewport)
  471.     @tone_power = power
  472.     @tone_type = type
  473.     @tone_max = max
  474.     update_blackout(sprite)
  475.   end
  476.   #--------------------------------------------------------------------------
  477.   # ● フレーム更新 (暗転処理)
  478.   #--------------------------------------------------------------------------
  479.   def update_blackout(sprite = @win_viewport)
  480.     case @tone_type
  481.     when 0
  482.       if @tone_rate != -@tone_max
  483.         @tone_rate = [@tone_rate - @tone_power, -@tone_max].max
  484.         sprite.tone.red = @tone_rate
  485.         sprite.tone.green = @tone_rate
  486.         sprite.tone.blue = @tone_rate
  487.       end
  488.     when 1
  489.       if @tone_rate != 0
  490.         @tone_rate = [@tone_rate + @tone_power, 0].min
  491.         sprite.tone.red = @tone_rate
  492.         sprite.tone.green = @tone_rate
  493.         sprite.tone.blue = @tone_rate
  494.       end
  495.     end
  496.   end
  497.   #--------------------------------------------------------------------------
  498.   # ● ウィンドウの右寄せ
  499.   #--------------------------------------------------------------------------
  500.   def right(x)
  501.     # ウィンドウを画面の右に配置する
  502.     self.x = (x - self.width)
  503.   end
  504.   #--------------------------------------------------------------------------
  505.   # ● ウィンドウの下寄せ
  506.   #--------------------------------------------------------------------------
  507.   def down(y)
  508.     # ウィンドウを画面の右に配置する
  509.     self.y = (480 - self.height - y)
  510.   end
  511.   #--------------------------------------------------------------------------
  512.   # ● ウィンドウのセンタリング
  513.   #--------------------------------------------------------------------------
  514.   def centering
  515.     # ウィンドウを画面の中央に配置する
  516.     self.x = (640 - self.width)  / 2
  517.     self.y = (480 - self.height) / 2
  518.   end
  519. end

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42360
在线时间
7600 小时
注册时间
2009-7-6
帖子
13506

开拓者贵宾

2
发表于 2018-2-25 10:34:10 | 只看该作者
我这里没有素材,就不测试了。
尝试将295行
  1. def initialize(character, event_name)
  2.   super()
复制代码

改成
  1. def initialize(character, event_name,vp)
  2.   super(vp)
复制代码


然后把140行
  1. @light_sprite = Light_Sprite.new(self, id)
复制代码

改成
  1. @light_sprite = Light_Sprite.new(self, id,self.viewport)
复制代码

评分

参与人数 1+1 收起 理由
火锅深处 + 1 覆盖问题完美解决,但好像变暗和模糊了,还.

查看全部评分

RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-17 12:37

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表