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

Project1

 找回密码
 注册会员
搜索
查看: 2209|回复: 3

[已经解决] 不知道如何用的镜子反射脚本?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
35 小时
注册时间
2012-1-21
帖子
21
发表于 2012-10-16 18:03:53 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 07421conan 于 2012-10-18 23:25 编辑

我有一个镜子反射的脚本 但是不知道怎么使用,求各位大大分析一下 顺便问一下这个需要其他的关联脚本或程序文件吗?
  1. #◆◇◆◇◆ 鏡床スクリプト ver 1.02 ◇◆◇◆◇
  2. #  サポート掲示板 [url]http://www2.ezbbs.net/21/minto-aaa/[/url]
  3. #   by みんと

  4. =begin

  5. 更新履历

  6. ver 1.02
  7. 修改在特定条件下错误落下的错误。

  8. ver 1.01
  9. 修改雪碧解放时的错误。

  10. 说明

  11. 现在人物正站着在数据库·图块·地形标志,需倒影的设为“1”
  12. 「一步下」的瓷砖当地形标签,特定的数值的情况,
  13. 在一步下的瓷砖上映出人物的半透明的影像。

  14. 适合水面等演出。

  15. 活动的情况,「最初的」实行内容
  16. 由于「注释」,注释的内容只有影描写的情况,同样地映出。
  17. 没有设立的情况不[没] 映出因为,
  18. 想映出的活动在只有请设立。

  19. 引进地点的注意
  20. 用别名被构成因为,
  21. 尽可能下的方面引进,请给我。
  22. =end

  23. #==============================================================================
  24. # ☆ MINTO
  25. #------------------------------------------------------------------------------
  26. #   様々なフラグを扱うメインモジュールです。
  27. #==============================================================================

  28. module MINTO
  29.   
  30.   # 鏡床スクリプトを有効化 ( true で有効 / false で無効 )
  31.   #RGSS["Mirror_Tile"] = true
  32.   RGSS_SZ_A = true
  33. end

  34. #if MINTO::RGSS["Mirror_Tile"] == true then
  35. if MINTO::RGSS_SZ_A == true then

  36. #==============================================================================
  37. # ☆ カスタマイズ
  38. #------------------------------------------------------------------------------
  39. #   機能のカスタマイズを行うモジュールです。
  40. #==============================================================================

  41. module MINTO
  42.   
  43.   # 鏡床のタイルとして扱う地形タグのID
  44.   Mirror_Tile_ID = 1
  45.   
  46. end
  47. #==============================================================================
  48. # ■ Sprite
  49. #------------------------------------------------------------------------------
  50. #  スプライト表示を扱う組み込みクラスです。
  51. #==============================================================================

  52. class Sprite
  53.   #--------------------------------------------------------------------------
  54.   # ● 複製の作成
  55.   #--------------------------------------------------------------------------
  56.   def dup
  57.     # 各データをコピー
  58.     sprite = Sprite.new(self.viewport)
  59.     sprite.bitmap = self.bitmap
  60.     sprite.x = self.x
  61.     sprite.y = self.y
  62.     sprite.z = self.z
  63.     sprite.visible = self.visible
  64.     sprite.ox = self.ox
  65.     sprite.oy = self.oy
  66.     sprite.angle = self.angle
  67.     sprite.mirror = self.mirror
  68.     sprite.opacity = self.opacity
  69.     sprite.blend_type = self.blend_type
  70.     sprite.color = self.color
  71.     rect = self.src_rect
  72.     sprite.src_rect.set(rect.x, rect.y, rect.width, rect.height)
  73.     sprite.zoom_x = self.zoom_x
  74.     sprite.zoom_y = self.zoom_y
  75.     return sprite
  76.   end
  77. end
  78. #==============================================================================
  79. # ■ Sprite_Character
  80. #------------------------------------------------------------------------------
  81. #  キャラクター表示用のスプライトです。
  82. #   Game_Character クラスのインスタンスを監視し、
  83. #   スプライトの状態を自動的に変化させます。
  84. #==============================================================================

  85. class Sprite_Character < RPG::Sprite
  86.   #--------------------------------------------------------------------------
  87.   # ● 解放
  88.   #--------------------------------------------------------------------------
  89.   def dispose
  90.     # 影が存在する場合
  91.     if @shadow_sprite != nil then
  92.       # 影を解放
  93.       @shadow_sprite.bitmap.dispose
  94.       @shadow_sprite.dispose
  95.     end
  96.     # スーパークラスを実行
  97.     super
  98.   end
  99.   #--------------------------------------------------------------------------
  100.   # ● 地形タグの取得
  101.   #--------------------------------------------------------------------------
  102.   def terrain_tag(x, y)
  103.     # 地形タグの情報を返す
  104.     return $game_map.terrain_tag(x, y)
  105.   end
  106.   #--------------------------------------------------------------------------
  107.   # ● 影の作成
  108.   #--------------------------------------------------------------------------
  109.   def shadow_set
  110.     # 影用のスプライトを生成
  111.     @shadow_sprite = self.dup
  112.     # 座標を調節する
  113.     @shadow_sprite.y = self.y - (self.oy / 6)
  114.     @shadow_sprite.z = self.z
  115.     # 色を白っぽくする
  116.     @shadow_sprite.tone.red = 64
  117.     @shadow_sprite.tone.green = 64
  118.     @shadow_sprite.tone.blue = 64
  119.     # 半透明にする
  120.     @shadow_sprite.opacity = 160
  121.     # 180度回転させる
  122.     @shadow_sprite.angle = 180
  123.     # 左右を反転させる
  124.     @shadow_sprite.mirror = (not self.mirror == true)
  125.   end
  126.   #--------------------------------------------------------------------------
  127.   # ● 影の更新
  128.   #--------------------------------------------------------------------------
  129.   def update_shadow
  130.     # キャラクターの現在位置を取得
  131.     x = @character.x
  132.     y = @character.y
  133.     # 元々影が存在しない場合
  134.     if @shadow_sprite == nil then
  135.       # 処理を終了
  136.       return
  137.     end
  138.     # 下のタイルの地形タグのIDが Mirror_Tile_ID 以外の場合
  139.     if terrain_tag(x, y+1) != MINTO::Mirror_Tile_ID then
  140.       # 影を不可視状態にする
  141.       @shadow_sprite.visible = false
  142.       # 処理を終了
  143.       return
  144.     # 下のタイルの地形タグのIDが Mirror_Tile_ID の場合
  145.     else
  146.       # Y座標補正値を初期化する
  147.       @y_plus = 0
  148.     end
  149.     # 各情報を更新する
  150.     rect = self.src_rect
  151.     @shadow_sprite.src_rect.set(rect.x, rect.y, rect.width, rect.height)
  152.     @shadow_sprite.x = self.x
  153.     @shadow_sprite.y = self.y - (self.oy / 6) + @y_plus
  154.     @shadow_sprite.opacity = self.opacity - 95
  155.     @shadow_sprite.z = self.z - 1
  156.     @shadow_sprite.visible = self.visible
  157.   end
  158.   #--------------------------------------------------------------------------
  159.   # ● フレーム更新
  160.   #    alias : update_MINTO_Mirror_Tile
  161.   #--------------------------------------------------------------------------
  162.   alias update_MINTO_Mirror_Tile update
  163.   def update
  164.     # 元の処理を実行
  165.     update_MINTO_Mirror_Tile
  166.     # まだ影を作成していない場合
  167.     if @shadow == nil then
  168.       # キャラクターがイベントの場合
  169.       if @character.is_a?(Game_Event) == true then
  170.         # 有効なイベントの場合
  171.         if @character.list != nil then
  172.           # 最初の内容が注釈の場合
  173.           if @character.list[0].code == 108 then
  174.             # 注釈の内容が「影描写」だった場合
  175.             if @character.list[0].parameters == ["影描写"] then
  176.               # 影を作成
  177.               shadow_set
  178.               # 作成済みフラグをオン
  179.               @shadow = true
  180.             end
  181.           end
  182.         end
  183.       # キャラクターがプレイヤーの場合
  184.       else
  185.         # 影を作成
  186.         shadow_set
  187.         # 作成済みフラグをオン
  188.         @shadow = true
  189.       end
  190.     end
  191.     # 影を更新
  192.     update_shadow
  193.   end
  194. end

  195. end
复制代码

Lv3.寻梦者

梦石
0
星屑
1401
在线时间
1441 小时
注册时间
2010-10-22
帖子
1009
发表于 2012-10-16 20:26:50 | 显示全部楼层
本帖最后由 kangxi0109 于 2012-10-16 20:33 编辑

不需要关联别的什么东西,设置方法在脚本里已经说的很清楚了。
数据库→图块→地形标志中设置,默认的图块地形标志是0,将需要形成倒影的图块的地形标志改为1就可以了。
注意:倒影是在人物下方形成的,而不是镜子的镜像
搜狗截图121016_1.png
另:这个脚本对NPC无效。
搜狗截图121016_3.png
【2022.06.03】原本以为已经不可能再找回来的东西重新找回来了,原本一直念念不忘的坑终于再一次拿起铲子了。一别竟近10年,你好,我的世界我的梦。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
35 小时
注册时间
2012-1-21
帖子
21
 楼主| 发表于 2012-10-17 10:51:15 | 显示全部楼层
本帖最后由 07421conan 于 2012-10-17 10:57 编辑
kangxi0109 发表于 2012-10-16 20:26
不需要关联别的什么东西,设置方法在脚本里已经说的很清楚了。
在数据库→图块→地形标志中设置,默认的图 ...


谢谢老大,原来是倒影啊 老大那镜子的反射影像怎么做啊{:2_275:}
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1401
在线时间
1441 小时
注册时间
2010-10-22
帖子
1009
发表于 2012-10-17 15:55:50 | 显示全部楼层
本帖最后由 kangxi0109 于 2012-10-17 18:37 编辑

修改过的脚本,地形的设置改为人物当前位置往上一格(原为往下一格)。
搜狗截图121017_2.png 搜狗截图121017_1.png
脚本:
  1. #◆◇◆◇◆ 鏡床スクリプト ver 1.02 ◇◆◇◆◇
  2. #  サポート掲示板 http://www2.ezbbs.net/21/minto-aaa/
  3. #   by みんと

  4. =begin

  5. 更新履历

  6. 2012.10.17
  7. 炼狱:将原先的倒影修改为镜像,见修改的部分。
  8.       以【一步上】为镜像地形。

  9. ver 1.02
  10. 修改在特定条件下错误落下的错误。

  11. ver 1.01
  12. 修改雪碧解放时的错误。


  13. 说明

  14. 现在人物正站着在数据库·图块·地形标志,需倒影的设为“1”
  15. 「一步下」的瓷砖当地形标签,特定的数值的情况,
  16. 在一步下的瓷砖上映出人物的半透明的影像。

  17. 适合水面等演出。

  18. 活动的情况,「最初的」实行内容
  19. 由于「注释」,注释的内容只有影描写的情况,同样地映出。
  20. 没有设立的情况不[没] 映出因为,
  21. 想映出的活动在只有请设立。

  22. 引进地点的注意
  23. 用别名被构成因为,
  24. 尽可能下的方面引进,请给我。
  25. =end

  26. #==============================================================================
  27. # ☆ MINTO
  28. #------------------------------------------------------------------------------
  29. #   様々なフラグを扱うメインモジュールです。
  30. #==============================================================================

  31. module MINTO
  32.   
  33.   # 鏡床スクリプトを有効化 ( true で有効 / false で無効 )
  34.   #RGSS["Mirror_Tile"] = true
  35.   RGSS_SZ_A = true
  36. end

  37. #if MINTO::RGSS["Mirror_Tile"] == true then
  38. if MINTO::RGSS_SZ_A == true then

  39. #==============================================================================
  40. # ☆ カスタマイズ
  41. #------------------------------------------------------------------------------
  42. #   機能のカスタマイズを行うモジュールです。
  43. #==============================================================================

  44. module MINTO
  45.   
  46.   # 鏡床のタイルとして扱う地形タグのID
  47.   Mirror_Tile_ID = 1
  48.   
  49. end
  50. #==============================================================================
  51. # ■ Sprite
  52. #------------------------------------------------------------------------------
  53. #  スプライト表示を扱う組み込みクラスです。
  54. #==============================================================================

  55. class Sprite
  56.   #--------------------------------------------------------------------------
  57.   # ● 複製の作成
  58.   #--------------------------------------------------------------------------
  59.   def dup
  60.     # 各データをコピー
  61.     sprite = Sprite.new(self.viewport)
  62.     sprite.bitmap = self.bitmap
  63.     sprite.x = self.x
  64.     sprite.y = self.y
  65.     sprite.z = self.z
  66.     sprite.visible = self.visible
  67.     sprite.ox = self.ox
  68.     sprite.oy = self.oy
  69.     sprite.angle = self.angle
  70.     sprite.mirror = self.mirror
  71.     sprite.opacity = self.opacity
  72.     sprite.blend_type = self.blend_type
  73.     sprite.color = self.color
  74.     rect = self.src_rect
  75.     sprite.src_rect.set(rect.x, rect.y, rect.width, rect.height)
  76.     sprite.zoom_x = self.zoom_x
  77.     sprite.zoom_y = self.zoom_y
  78.     return sprite
  79.   end
  80. end
  81. #==============================================================================
  82. # ■ Sprite_Character
  83. #------------------------------------------------------------------------------
  84. #  キャラクター表示用のスプライトです。
  85. #   Game_Character クラスのインスタンスを監視し、
  86. #   スプライトの状態を自動的に変化させます。
  87. #==============================================================================

  88. class Sprite_Character < RPG::Sprite
  89.   #--------------------------------------------------------------------------
  90.   # ● 解放
  91.   #--------------------------------------------------------------------------
  92.   def dispose
  93.     # 影が存在する場合
  94.     if @shadow_sprite != nil then
  95.       # 影を解放
  96.       @shadow_sprite.bitmap.dispose
  97.       @shadow_sprite.dispose
  98.     end
  99.     # スーパークラスを実行
  100.     super
  101.   end
  102.   #--------------------------------------------------------------------------
  103.   # ● 地形タグの取得
  104.   #--------------------------------------------------------------------------
  105.   def terrain_tag(x, y)
  106.     # 地形タグの情報を返す
  107.     return $game_map.terrain_tag(x, y)
  108.   end
  109.   #--------------------------------------------------------------------------
  110.   # ● 影の作成
  111.   #--------------------------------------------------------------------------
  112.   def shadow_set
  113.     # 影用のスプライトを生成
  114.     @shadow_sprite = self.dup
  115.     # 座標を調節する
  116.     @shadow_sprite.y = self.y - (self.oy / 6)
  117.     @shadow_sprite.z = self.z  
  118.     # 色を白っぽくする
  119.     @shadow_sprite.tone.red = 64
  120.     @shadow_sprite.tone.green = 64
  121.     @shadow_sprite.tone.blue = 64
  122.     # 半透明にする
  123.     @shadow_sprite.opacity = 160
  124.     #修改-------------------------↓
  125.       # 180度回転させる
  126.       #@shadow_sprite.angle = 180
  127.       # 左右を反転させる
  128.       #@shadow_sprite.mirror = (not self.mirror == true)
  129.     #修改-------------------------↑
  130.   end
  131.   #--------------------------------------------------------------------------
  132.   # ● 影の更新
  133.   #--------------------------------------------------------------------------
  134.   def update_shadow
  135.     # キャラクターの現在位置を取得
  136.     x = @character.x
  137.     y = @character.y
  138.     # 元々影が存在しない場合
  139.     if @shadow_sprite == nil then
  140.       # 処理を終了
  141.       return
  142.     end
  143.     # 下のタイルの地形タグのIDが Mirror_Tile_ID 以外の場合
  144.     #修改-------------------------↓
  145.     if terrain_tag(x, y-1) != MINTO::Mirror_Tile_ID then
  146.     #修改-------------------------↑
  147.       # 影を不可視状態にする
  148.       @shadow_sprite.visible = false
  149.       # 処理を終了
  150.       return
  151.     # 下のタイルの地形タグのIDが Mirror_Tile_ID の場合
  152.     else
  153.       # Y座標補正値を初期化する
  154.       @y_plus = 0
  155.     end
  156.     # 各情報を更新する
  157.     rect = self.src_rect
  158.     #修改-------------------------↓
  159.       m = self.bitmap.height / 4 * 3
  160.       case rect.y
  161.       when 0
  162.         dy = m
  163.       when m
  164.         dy = 0
  165.       else
  166.         dy = rect.y
  167.       end
  168.     @shadow_sprite.src_rect.set(rect.x, dy, rect.width, rect.height)
  169.     #修改-------------------------↑
  170.     @shadow_sprite.x = self.x
  171.     @shadow_sprite.y = self.y - (self.oy / 6) * 3 - @y_plus
  172.     @shadow_sprite.opacity = self.opacity - 95
  173.     @shadow_sprite.z = self.z - 1
  174.     @shadow_sprite.visible = self.visible
  175.   end
  176.   #--------------------------------------------------------------------------
  177.   # ● フレーム更新
  178.   #    alias : update_MINTO_Mirror_Tile
  179.   #--------------------------------------------------------------------------
  180.   alias update_MINTO_Mirror_Tile update
  181.   def update
  182.     # 元の処理を実行
  183.     update_MINTO_Mirror_Tile
  184.     # まだ影を作成していない場合
  185.     if @shadow == nil then
  186.       # キャラクターがイベントの場合
  187.       if @character.is_a?(Game_Event) == true then
  188.         # 有効なイベントの場合
  189.         if @character.list != nil then
  190.           # 最初の内容が注釈の場合
  191.           if @character.list[0].code == 108 then
  192.             # 注釈の内容が「影描写」だった場合
  193.             if @character.list[0].parameters == ["影描写"] then
  194.               # 影を作成
  195.               shadow_set
  196.               # 作成済みフラグをオン
  197.               @shadow = true
  198.             end
  199.           end
  200.         end
  201.       # キャラクターがプレイヤーの場合
  202.       else
  203.         # 影を作成
  204.         shadow_set
  205.         # 作成済みフラグをオン
  206.         @shadow = true
  207.       end
  208.     end
  209.     # 影を更新
  210.     update_shadow
  211.   end
  212. end

  213. end
复制代码

点评

↓原来如此,多谢提醒啊。  发表于 2012-10-17 18:34
貌似已经改好了 顺便我说下 NPC也是有效的 里面定义了个影描写 要倒影的NPC 注释下 影描写就OK了  发表于 2012-10-17 18:22
谢谢前辈 问题解决啦  发表于 2012-10-17 16:43

评分

参与人数 1星屑 +200 收起 理由
hcm + 200 认可答案

查看全部评分

【2022.06.03】原本以为已经不可能再找回来的东西重新找回来了,原本一直念念不忘的坑终于再一次拿起铲子了。一别竟近10年,你好,我的世界我的梦。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-3-29 16:16

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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