查看: 2707|回复: 2

[已经过期] [求助]RGSS的使用

[复制链接]
梦石
0
星屑
50
在线时间
36 小时
注册时间
2010-2-25
回帖
12
发表于 2010-12-20 19:48:46 | 显示全部楼层 |阅读模式

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

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

×
  1. #◆◇◆◇◆ リアル・シャドウシステム ver 1.14 ◇◆◇◆◇
  2. #  サポート掲示板 http://www2.ezbbs.net/21/minto-aaa/
  3. #   by みんと

  4. =begin

  5. 更新履歴

  6. ver 1.14
  7. RTAB(歯車の城)に再対応。

  8. ver 1.13
  9. RTAB(歯車の城)にも対応。

  10. ver 1.12
  11. 前回更新時のミスを修正。

  12. ver 1.11
  13. 途中出現のエネミーにも
  14. 影が表示されていたミスを修正。

  15. ver 1.10
  16. アクターにも設定できるように改良。

  17. ver 1.01
  18. スプライト解放時のミスを修正。

  19. 説明

  20. バトラーのグラフィックから、
  21. 影を作成し、自動描写するスクリプトです。

  22. 通常タイプ、浮遊タイプ、影無しを敵ごとに設定できます。

  23. 浮遊タイプの場合、バトラーグラフィックは上下に動き
  24. 浮遊している感じに演出され、
  25. 影も、バトラーが下に動けば大きくなり、
  26. 上に動けば小さくなります。

  27. 通常タイプの場合はバトラーの動きにあわせて動きます。

  28. セクション指定上下関係

  29. コラプス改造α
  30. ↓
  31. 反転表示バトラー
  32. ↓
  33. このスクリプト

  34. 導入場所の注意

  35. 上記の条件をクリアし、且つシステム下部推奨

  36. =end

  37. #==============================================================================
  38. # ☆ MINTO
  39. #------------------------------------------------------------------------------
  40. #   様々なフラグを扱うメインモジュールです。
  41. #==============================================================================

  42. module MINTO
  43.   
  44.   # リアル・シャドウシステムを有効化 ( true で有効 / false で無効 )
  45.   RGSS["Real_Shadow"] = true
  46.   
  47.   # 影を描写しない背景の名前の配列
  48.   # 戦闘背景のグラフィック名がこの配列の中に存在する場合は、
  49.   # 影が描写されません。
  50.   Not_Shadow_Back_Array = []
  51.   
  52. end

  53. if MINTO::RGSS["Real_Shadow"] == true then

  54. #==============================================================================
  55. # ☆ カスタマイズ
  56. #------------------------------------------------------------------------------
  57. #   機能のカスタマイズを行います。
  58. #==============================================================================

  59. module Battler_Shadow
  60.   #--------------------------------------------------------------------------
  61.   # ● 影の作成パターンの設定
  62.   #--------------------------------------------------------------------------
  63.   def shadow_pattern
  64.     # 説明
  65.    
  66.     # @shadow_x と @shadow_y は影の倍率です。
  67.    
  68.     # 1 の場合は本来のバトラーグラフィックと同じ大きさになります。
  69.     # @shadow_x は横ズーム率
  70.     # @shadow_y は縦ズーム率です。
  71.    
  72.     # 設定がよく分からない場合は
  73.     # 浮遊敵でない場合は
  74.     # @shadow_x = 1.35
  75.     # @shadow_y = 0.25 を
  76.     # 逆に浮遊敵の場合は
  77.     # @shadow_x = 0.65
  78.     # @shadow_y = 0.12 が開発者的にベストです。
  79.    
  80.     # @shadow_oy は影の縦の描写位置の補正値です
  81.     # 本来のバトラーグラフィックの「余白」次第では、
  82.     # 影の位置に違和感が生じるので、その際はここで微調節してください。
  83.     # 整数なら下に負数なら上に補正されます。
  84.     # 浮遊敵なら128と言った感じでかなり下の方に設定すれば、
  85.     # リアルな感じになります。
  86.    
  87.     # @float は浮遊フラグです。
  88.     # true でオン false でオフです。
  89.     # オンにすると敵は上下に、ゆっくり移動を繰り返します。
  90.     # その際、影もそれに合わせて大きくなったり、小さくなったりします。
  91.    
  92.     # 影そのものを表示したくない敵の場合は
  93.     # @float に nil を代入してください。
  94.    
  95.     #在这里设定特例!!!!!!!!!!!!!!!!!!!!!!!
  96.     # エネミーの名前によって分岐
  97.     case @battler.name
  98.     # 通常タイプサンプル設定
  99.     when "幽灵" then
  100.       # 影のパターンを設定
  101.       @shadow_x = 1.35
  102.       @shadow_y = 0.25
  103.       @shadow_oy = 0
  104.       @float = false
  105.     # 浮遊敵サンプル設定
  106.     when "巨大蜂" then
  107.       # 影のパターンを設定
  108.       @shadow_x = 0.65
  109.       @shadow_y = 0.12
  110.       @shadow_oy = 128
  111.       @float = true
  112.     # それ以外のエネミーの場合
  113.     else
  114.       # 影のパターンを設定
  115.       @shadow_x = 1.35
  116.       @shadow_y = 0.25
  117.       @shadow_oy = 0
  118.       @float = false
  119.     end
  120.   end
  121. end
  122. #==============================================================================
  123. # ■ Sprite
  124. #------------------------------------------------------------------------------
  125. #  スプライト表示を扱う組み込みクラスです。
  126. #==============================================================================

  127. class Sprite
  128.   #--------------------------------------------------------------------------
  129.   # ● 複製の作成
  130.   #--------------------------------------------------------------------------
  131.   def dup
  132.     # 各データをコピー
  133.     sprite = Sprite.new(self.viewport)
  134.     sprite.bitmap = self.bitmap.dup if self.bitmap != nil
  135.     sprite.x = self.x
  136.     sprite.y = self.y
  137.     sprite.z = self.z
  138.     sprite.visible = self.visible
  139.     sprite.ox = self.ox
  140.     sprite.oy = self.oy
  141.     sprite.angle = self.angle
  142.     sprite.mirror = self.mirror
  143.     sprite.opacity = self.opacity
  144.     sprite.blend_type = self.blend_type
  145.     sprite.color = self.color.dup
  146.     sprite.src_rect = self.src_rect.dup
  147.     sprite.zoom_x = self.zoom_x
  148.     sprite.zoom_y = self.zoom_y
  149.     return sprite
  150.   end
  151. end
  152. #==============================================================================
  153. # ☆ Battler_Shadow
  154. #------------------------------------------------------------------------------
  155. #   影の演出を管理するシステムモジュールです。
  156. #==============================================================================

  157. module Battler_Shadow
  158.   #--------------------------------------------------------------------------
  159.   # ● 解放
  160.   #--------------------------------------------------------------------------
  161.   def dispose
  162.     # 元の処理を実行
  163.     super
  164.     # 影が存在する場合
  165.     if @shadow_sprite != nil then
  166.       # 影を解放
  167.       @shadow_sprite.bitmap.dispose
  168.       @shadow_sprite.dispose
  169.     end
  170.   end
  171.   #--------------------------------------------------------------------------
  172.   # ● バトラーグラフィックの描写
  173.   #--------------------------------------------------------------------------
  174.   def bitmap_set
  175.     # ビットマップを取得、設定
  176.     @battler_name = @battler.battler_name
  177.     @battler_hue = @battler.battler_hue
  178.     self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
  179.     @width = bitmap.width
  180.     @height = bitmap.height
  181.     self.ox = @width / 2
  182.     self.oy = @height
  183.     # バトラーがエネミーの場合
  184.     if @battler.is_a?(Game_Enemy) then
  185.       # 高さを設定
  186.       @battler.height = @height
  187.     end
  188.     # 戦闘不能または隠れ状態なら不透明度を 0 にする
  189.     if @battler.dead? or @battler.hidden then
  190.       self.opacity = 0
  191.     end
  192.   end
  193.   #--------------------------------------------------------------------------
  194.   # ● Y座標の取得
  195.   #--------------------------------------------------------------------------
  196.   def y
  197.     # スパークラスを実行
  198.     bool = super
  199.     # アニメーション表示中の場合
  200.     if (@_animation_duration >= 1) or (@_animation.to_a.size >= 1) then
  201.       # もともとのY座標を返す
  202.       return bool
  203.     end
  204.     # Y座標に補正値をプラスして返す
  205.     return bool + @y_plus
  206.   end
  207.   #--------------------------------------------------------------------------
  208.   # ● Y座標の変更
  209.   #--------------------------------------------------------------------------
  210.   def y=(n)
  211.     # アニメ表示中の場合で、且つ位置に変化がない場合
  212.     # 又はコラプス実行中で位置に変化がない場合
  213.     if ((@_animation_duration >= 1 or
  214.       @_animation.to_a.size >= 1) and n == @battler.screen_y) or
  215.       (@_collapse_duration >= 1 and n == @battler.screen_y)
  216.       # メソッドを返す
  217.       return
  218.     else
  219.       # スーパークラスを実行
  220.       super(n)
  221.     end
  222.   end
  223.   #--------------------------------------------------------------------------
  224.   # ● 影の更新可能フラグの取得
  225.   #--------------------------------------------------------------------------
  226.   def shadow_update_ok?
  227.     # バトラーが存在する場合
  228.     @battler.exist? or
  229.     # 又は、コラプス実行中かアニメ表示中でない場合
  230.     (@_collapse_duration > 0 or @_animation_duration == 0) or
  231.     (@_animation.to_a.size >= 1)
  232.   end
  233.   #--------------------------------------------------------------------------
  234.   # ● 影の作成
  235.   #--------------------------------------------------------------------------
  236.   def shadow_set
  237.     # バトラーがエネミーの場合
  238.     if @battler.is_a?(Game_Enemy) == true then
  239.       # パターンを取得
  240.       shadow_pattern
  241.     end
  242.     # @float が nil の場合
  243.     if @float == nil then
  244.       # 処理を返す
  245.       return
  246.     end
  247.     # 影用のスプライトを生成
  248.     @shadow_sprite = self.dup
  249.     # 座標を調節する
  250.     @shadow_sprite.y = @battler.screen_y - (self.oy / 8) + @shadow_oy
  251.     # 色を黒にする
  252.     @shadow_sprite.tone.red = -250
  253.     @shadow_sprite.tone.green = -250
  254.     @shadow_sprite.tone.blue = -250
  255.     # バトラーが存在しない場合
  256.     if not @battler.exist? then
  257.       # 不透明にする
  258.       @shadow_sprite.opacity = 0
  259.     # バトラーが存在する場合
  260.     else
  261.       # 半透明にする
  262.       @shadow_sprite.opacity = 160
  263.     end
  264.     # 180度回転させる
  265.     @shadow_sprite.angle = 180
  266.     # 左右を反転させる
  267.     @shadow_sprite.mirror = (!self.mirror == true)
  268.     # 横長にズームさせる
  269.     @shadow_sprite.zoom_x *= @shadow_x
  270.     @shadow_sprite.zoom_y *= @shadow_y
  271.   end
  272.   #--------------------------------------------------------------------------
  273.   # ● 影の更新(分岐)
  274.   #    force : 強制更新フラグ( true / false )
  275.   #--------------------------------------------------------------------------
  276.   def update_shadow_base(force = false)
  277.     # 強制更新か、もしくは影の更新が可能な場合
  278.     if force == true or shadow_update_ok? then
  279.       # 浮遊フラグがオンの場合
  280.       if @float == true then
  281.         # 補正値が8以上の場合
  282.         if @y_plus >= 8 then
  283.           # 補正値を逆転
  284.           @plus *= -1
  285.         # 補正値が-8以下の場合
  286.         elsif @y_plus <= -8 then
  287.           # 補正値を逆転
  288.           @plus *= -1
  289.         end
  290.         # 浮遊補正値を加算
  291.         @y_plus += @plus
  292.         # アニメ表示中でない場合
  293.         if @_animation_duration == 0 then
  294.           # Y座標に補正値を加算
  295.           self.y += @plus - @y_plus / 2
  296.         end
  297.         # 影が存在する場合
  298.         if @shadow_sprite != nil then
  299.           # 影を更新(浮遊敵用)
  300.           update_shadow_float
  301.         end
  302.       else
  303.         # 影が存在する場合
  304.         if @shadow_sprite != nil then
  305.           # 影を更新(通常敵用)
  306.           update_shadow
  307.         end
  308.       end
  309.     end
  310.   end
  311.   #--------------------------------------------------------------------------
  312.   # ● 影の更新
  313.   #--------------------------------------------------------------------------
  314.   def update_shadow
  315.     # 各情報を更新する
  316.     @shadow_sprite.x = self.x
  317.     @shadow_sprite.y = self.y - (self.oy / 8) + @shadow_oy
  318.     @shadow_sprite.opacity = self.opacity - 95
  319.     @shadow_sprite.zoom_x = (self.zoom_x * @shadow_x)
  320.     @shadow_sprite.zoom_y = (self.zoom_y * @shadow_y)
  321.   end
  322.   #--------------------------------------------------------------------------
  323.   # ● 影の更新(浮遊敵)
  324.   #--------------------------------------------------------------------------
  325.   def update_shadow_float
  326.     # 本来のY座標との差を求める
  327.     plus = (self.y * 100) / @battler.screen_y
  328.     # 各情報を更新する
  329.     @shadow_sprite.x = self.x
  330.     @shadow_sprite.opacity = self.opacity - 95
  331.     @shadow_sprite.zoom_x = (self.zoom_x * @shadow_x) * plus / 100
  332.     @shadow_sprite.zoom_y = (self.zoom_y * @shadow_y) * plus / 100
  333.   end
  334. end
  335. #==============================================================================
  336. # ■ Game_Battler (分割定義 1)
  337. #==============================================================================

  338. class Game_Battler
  339.   #--------------------------------------------------------------------------
  340.   # ● 公開インスタンス変数
  341.   #--------------------------------------------------------------------------
  342.   attr_accessor :height                   # 高さ
  343. end
  344. #==============================================================================
  345. # ■ Sprite_Battler
  346. #------------------------------------------------------------------------------
  347. #  バトラー表示用のスプライトです。Game_Battler クラスのインスタンスを監視し、
  348. # スプライトの状態を自動的に変化させます。
  349. #==============================================================================

  350. class Sprite_Battler < RPG::Sprite
  351.   #--------------------------------------------------------------------------
  352.   # ● システムインクルード
  353.   #--------------------------------------------------------------------------
  354.   include(Battler_Shadow)                 # バトラーシャドウ
  355.   #--------------------------------------------------------------------------
  356.   # ● オブジェクト初期化
  357.   #    viewport : ビューポート
  358.   #    battler  : バトラー (Game_Battler)
  359.   #    alias    : initialize_MINTO_Real_Shadow
  360.   #--------------------------------------------------------------------------
  361.   alias initialize_MINTO_Real_Shadow initialize
  362.   def initialize(viewport, battler = nil)
  363.     # 影用の情報を初期化
  364.     @y_plus = 0
  365.     @plus = 1
  366.     # 元の処理を実行
  367.     initialize_MINTO_Real_Shadow(viewport, battler)
  368.     # 現在の戦闘背景の名前を取得
  369.     name = $game_temp.battleback_name
  370.     # 戦闘背景の条件をクリアしている場合
  371.     if not MINTO::Not_Shadow_Back_Array.include?(name) then
  372.       # バトラーが有効な場合
  373.       if (@battler != nil and @battler.is_a?(Game_Enemy)) then
  374.         # バトラーグラフィックを描写
  375.         bitmap_set
  376.         # 影を作成
  377.         shadow_set
  378.       end
  379.     end
  380.   end
  381.   #--------------------------------------------------------------------------
  382.   # ● フレーム更新
  383.   #    alias : update_MINTO_Real_Shadow
  384.   #--------------------------------------------------------------------------
  385.   alias update_MINTO_Real_Shadow update
  386.   def update
  387.     # 元の処理を実行
  388.     update_MINTO_Real_Shadow
  389.     # バトラーが有効な場合
  390.     if (@battler != nil and @battler.is_a?(Game_Enemy)) then
  391.       # 影を更新
  392.       update_shadow_base
  393.     end
  394.   end
  395.   #--------------------------------------------------------------------------
  396.   # ● バトラーの変更
  397.   #    battler : 新しいバトラー
  398.   #--------------------------------------------------------------------------
  399.   def battler=(battler)
  400.     @battler = battler
  401.     # バトラーが有効な場合
  402.     if (@battler != nil and @battler.is_a?(Game_Enemy)) then
  403.       # バトラーグラフィックを描写
  404.       bitmap_set
  405.       # 影を作成
  406.       shadow_set
  407.     end
  408.   end
  409. end

  410. end

复制代码
例如这个脚本中的.
# リアル・シャドウシステムを有効化 ( true で有効 / false で無効 )
  RGSS["Real_Shadow"] = true
  我直接将此脚本放入我的游戏.可是会跳出错误窗口.
RGSS这里该怎么使用呢?

老黄鸡

梦石
4
星屑
45793
在线时间
7956 小时
注册时间
2009-7-6
回帖
13338

MZ评测员RM创作大赛01组委会开拓者贵宾

发表于 2010-12-20 23:03:26 | 显示全部楼层
回复 jiejie596 的帖子

这一句是判断是否缺少模块。= =.
直接放进去就可以了。。
RGDirect - DirectX驱动的RGSS,点我了解.
(排满,暂停)RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复

使用道具 举报

梦石
0
星屑
50
在线时间
36 小时
注册时间
2010-2-25
回帖
12
 楼主| 发表于 2010-12-21 20:00:11 | 显示全部楼层
本帖最后由 jiejie596 于 2010-12-21 20:09 编辑

直接放进去会有错误诶~
+图:
error.JPG
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部