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

Project1

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

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

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
36 小时
注册时间
2010-2-25
帖子
15
跳转到指定楼层
1
发表于 2010-12-20 19:48:46 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
  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. =end

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

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

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

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

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

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

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

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

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

  408. end

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

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
41086
在线时间
7567 小时
注册时间
2009-7-6
帖子
13498

开拓者贵宾

2
发表于 2010-12-20 23:03:26 | 只看该作者
回复 jiejie596 的帖子

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

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
36 小时
注册时间
2010-2-25
帖子
15
3
 楼主| 发表于 2010-12-21 20:00:11 | 只看该作者
本帖最后由 jiejie596 于 2010-12-21 20:09 编辑

直接放进去会有错误诶~
+图:
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-22 19:26

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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