赞 | 2 |
VIP | 0 |
好人卡 | 20 |
积分 | 5 |
经验 | 26304 |
最后登录 | 2024-2-11 |
在线时间 | 487 小时 |
Lv2.观梦者
- 梦石
- 0
- 星屑
- 473
- 在线时间
- 487 小时
- 注册时间
- 2011-10-12
- 帖子
- 407
|
本帖最后由 gaogs123456 于 2013-8-11 13:24 编辑
脚本:环境主脚本(加入的原因是单独只有影描写会出错,把这个脚本放在影描写上面)- #◆◇◆◇◆ マスタースクリプトVXA ver 1.00 ◇◆◇◆◇
- # サポート掲示板 http://www2.ezbbs.net/21/minto-aaa/
- # by みんと
- =begin
- ■ 更新履歴
- ○ Ver 1.00(2012/01/16)
- 公開
- ■ 説明
- 全てのみんとRGSSより上に導入してください。
- (基本的にシステム上部に導入してください)
- これがないと全てのみんとRGSS3は動作いたしません。
- =end
- #==============================================================================
- # ☆ MINTO
- #------------------------------------------------------------------------------
- # 様々なフラグを扱うメインモジュールです。
- #==============================================================================
- module MINTO
-
- # VXRGSSの導入環境ハッシュを初期化
- RGSS = {}
-
- end
- #==============================================================================
- # ☆ MINTO_System
- #------------------------------------------------------------------------------
- # 様々な機能を扱うシステムモジュールです。
- #==============================================================================
- module MINTO_System
- #--------------------------------------------------------------------------
- # ● 開始処理
- #--------------------------------------------------------------------------
- def start
- @tone_rate = 0
- # シーンスプライトを作成
- @scene_sprite = Sprite_Base.new
- # スーパークラスを実行
- super
- end
- #--------------------------------------------------------------------------
- # ● トランジション実行
- #--------------------------------------------------------------------------
- def perform_transition
- # スーパークラスを実行
- super
- end
- #--------------------------------------------------------------------------
- # ● 開始後処理
- #--------------------------------------------------------------------------
- def post_start
- # スーパークラスを実行
- super
- end
- #--------------------------------------------------------------------------
- # ● フレーム更新
- #--------------------------------------------------------------------------
- def update
- # シーンスプライトを更新
- @scene_sprite.update
- # スーパークラスを実行
- super
- end
- #--------------------------------------------------------------------------
- # ● 終了前処理
- #--------------------------------------------------------------------------
- def pre_terminate
- # スーパークラスを実行
- super
- end
- #--------------------------------------------------------------------------
- # ● 終了処理
- #--------------------------------------------------------------------------
- def terminate
- # シーンスプライトを解放
- @scene_sprite.bitmap.dispose if @scene_sprite.bitmap
- @scene_sprite.dispose
- @scene_sprite = nil
- # スーパークラスを実行
- super
- end
- end
- # ☆ 開発用メソッド追加 ☆
- #==============================================================================
- # ■ Scene_Base
- #------------------------------------------------------------------------------
- # ゲーム中のすべてのシーンのスーパークラスです。
- #==============================================================================
- class Scene_Base
- #--------------------------------------------------------------------------
- # ● 暗転モード処理
- #--------------------------------------------------------------------------
- def blackout(type = 0, power = 10, max = 100, sprite = nil)
- @tone_power = power
- @tone_type = type
- @tone_max = max
- update_blackout(sprite)
- end
- #--------------------------------------------------------------------------
- # ● フレーム更新 (暗転処理)
- #--------------------------------------------------------------------------
- def update_blackout(sprite)
- case @tone_type
- when 0
- if @tone_rate != -@tone_max
- @tone_rate = [@tone_rate - @tone_power, -@tone_max].max
- sprite.tone.red = @tone_rate
- sprite.tone.green = @tone_rate
- sprite.tone.blue = @tone_rate
- end
- when 1
- if @tone_rate != 0
- @tone_rate = [@tone_rate + @tone_power, 0].min
- sprite.tone.red = @tone_rate
- sprite.tone.green = @tone_rate
- sprite.tone.blue = @tone_rate
- end
- end
- end
- end
- #==============================================================================
- # ■ Object
- #------------------------------------------------------------------------------
- # 全てのクラスのスーパークラス。オブジェクトの一般的な振舞いを定義します。
- #==============================================================================
- class Object
- #--------------------------------------------------------------------------
- # ● 深い複製の作成
- #--------------------------------------------------------------------------
- def dec
- # Marshalもモジュールを経由して、完全な複製を作成
- return Marshal.load(Marshal.dump(self))
- end
- end
- #==============================================================================
- # ■ NilClass
- #------------------------------------------------------------------------------
- # nil のクラス。nil は NilClass クラスの唯一のインスタンスです。
- #==============================================================================
- class NilClass
- #--------------------------------------------------------------------------
- # ● デバイスの取得
- #--------------------------------------------------------------------------
- def to_d
- return "BGM"
- end
- end
- #==============================================================================
- # ■ String
- #------------------------------------------------------------------------------
- # 文字列クラス。任意の長さのバイト列を扱うことができます。
- #==============================================================================
- class String
- #--------------------------------------------------------------------------
- # ● デバイスの取得
- #--------------------------------------------------------------------------
- def to_d
- return self
- end
- end
- #==============================================================================
- # ■ Audio
- #------------------------------------------------------------------------------
- # ミュージック、サウンドにかかわる処理を行うモジュールです。
- #==============================================================================
- module Audio
- #--------------------------------------------------------------------------
- # ● 音楽の解放
- #--------------------------------------------------------------------------
- def self.dispose
- #self.bgs_stop
- self.me_stop
- self.bgm_stop
- end
- end
- #==============================================================================
- # ■ Sprite
- #------------------------------------------------------------------------------
- # スプライト表示を扱う組み込みクラスです。
- #==============================================================================
- class Sprite
- #--------------------------------------------------------------------------
- # ● 座標の設定
- #--------------------------------------------------------------------------
- def rect_set(x, y, z = 100)
- self.x = x if x
- self.y = y if y
- self.z = z if z
- end
- #--------------------------------------------------------------------------
- # ● データの取得
- #--------------------------------------------------------------------------
- def data_copy(data)
- return if data.disposed? or self.disposed?
- # 各データをコピー
- self.x = data.x
- self.y = data.y
- self.z = data.z-1
- self.visible = data.visible
- self.ox = data.ox
- self.oy = data.oy
- self.angle = data.angle
- self.mirror = data.mirror
- self.src_rect = data.src_rect.dup
- self.zoom_x = data.zoom_x
- self.zoom_y = data.zoom_y
- end
- #--------------------------------------------------------------------------
- # ● 残像用の複製の作成
- #--------------------------------------------------------------------------
- def blink
- # 各データをコピー
- sprite = Sprite.new(self.viewport)
- sprite.bitmap = self.bitmap.dup if self.bitmap
- sprite.x = self.x
- sprite.y = self.y
- sprite.z = self.z-1
- sprite.visible = false
- sprite.ox = self.ox
- sprite.oy = self.oy
- sprite.angle = self.angle
- sprite.mirror = self.mirror
- sprite.opacity = self.opacity - 95
- sprite.blend_type = 1
- sprite.color = self.color.dup
- sprite.src_rect = self.src_rect.dup
- sprite.zoom_x = self.zoom_x
- sprite.zoom_y = self.zoom_y
- return sprite
- end
- #--------------------------------------------------------------------------
- # ● 複製の作成
- #--------------------------------------------------------------------------
- def dup
- # 各データをコピー
- sprite = Sprite.new(self.viewport)
- sprite.bitmap = self.bitmap.dup if self.bitmap
- sprite.x = self.x
- sprite.y = self.y
- sprite.z = self.z
- sprite.visible = self.visible
- sprite.ox = self.ox
- sprite.oy = self.oy
- sprite.angle = self.angle
- sprite.mirror = self.mirror
- sprite.opacity = self.opacity
- sprite.blend_type = self.blend_type
- sprite.color = self.color.dup
- sprite.src_rect = self.src_rect.dup
- sprite.zoom_x = self.zoom_x
- sprite.zoom_y = self.zoom_y
- return sprite
- end
- #--------------------------------------------------------------------------
- # ● センタリング
- #--------------------------------------------------------------------------
- def centering
- return if self.bitmap == nil
- self.x = (640 - (self.bitmap.width * self.zoom_x)) / 2
- self.y = (480 - (self.bitmap.height * self.zoom_y)) / 2
- end
- #--------------------------------------------------------------------------
- # ● ズーム
- #--------------------------------------------------------------------------
- def zoom=(n)
- zoom_x = n
- zoom_y = n
- end
- #--------------------------------------------------------------------------
- # ● エフェクト表示中判定
- #--------------------------------------------------------------------------
- def effect?
- return false
- end
- end
- #==============================================================================
- # ■ Array
- #------------------------------------------------------------------------------
- # 配列全般を扱う組み込みクラスです。
- #==============================================================================
- class Array
- #--------------------------------------------------------------------------
- # ● 要素の一次元化
- #--------------------------------------------------------------------------
- def divide
- array = []
- # データを複製
- data = self.dup
- # 要素の一次元化
- data.each do |i|
- if i.is_a?(Array)
- for a in i
- array.push(a)
- end
- else
- array.push(i)
- end
- end
- return array
- end
- #--------------------------------------------------------------------------
- # ● 要素のシャッフル
- #--------------------------------------------------------------------------
- def shuffle
- # データを複製
- data = self.dup
- # 要素をランダムに並び替える
- data.each_index do |i|
- j = rand(i+1)
- data[i], data[j] = data[j], data[i]
- end
- return data
- end
- #--------------------------------------------------------------------------
- # ● 要素のシャッフル(破壊的)
- #--------------------------------------------------------------------------
- def shuffle!
- # 要素をランダムに並び替える
- self.each_index do |i|
- j = rand(i+1)
- self[i], self[j] = self[j], self[i]
- end
- end
- #--------------------------------------------------------------------------
- # ● 要素をランダムに返す
- #--------------------------------------------------------------------------
- def get_rand
- return self[rand(self.size)]
- end
- #--------------------------------------------------------------------------
- # ● 要素の交換
- # a : 要素1
- # b : 要素2
- #--------------------------------------------------------------------------
- def change(a, b)
- # データを複製
- data = self.dup
- # 要素を交換する(self自体には変化がない)
- data[a] = self[b]
- data[b] = self[a]
- return data
- end
- #--------------------------------------------------------------------------
- # ● 要素の交換(破壊的)
- # a : 要素1
- # b : 要素2
- #--------------------------------------------------------------------------
- def change!(a, b)
- # 要素を交換する(selfを直接書き換える)
- self[a], self[b] = self[b], self[a]
- end
- end
- #==============================================================================
- # ■ Numeric
- #------------------------------------------------------------------------------
- # 数値全般を扱う組み込みクラスです。
- #==============================================================================
- class Numeric
- #--------------------------------------------------------------------------
- # ● 乱数の設定
- # n : 乱数値
- #--------------------------------------------------------------------------
- def amp(n)
- amp = (self.abs * n / 100).to_min(1)
- return self + rand(amp+1) + rand(amp+1) - amp
- end
- #--------------------------------------------------------------------------
- # ● 値の調整
- # order : 求められた値
- # size : 最大サイズ
- #--------------------------------------------------------------------------
- def select(order, size)
- if self - order <= -1
- return size
- elsif self + order >= size
- return 0
- else
- return self + order
- end
- end
- #--------------------------------------------------------------------------
- # ● 最大値の設定
- # max : 求められた最大の数値
- #--------------------------------------------------------------------------
- def to_max(min, max)
- if self > max
- return max
- elsif self < min
- return min
- else
- return self
- end
- end
- #--------------------------------------------------------------------------
- # ● 最大値の設定
- # max : 求められた最大の数値
- #--------------------------------------------------------------------------
- def to_m(max)
- if self > max
- return max
- else
- return self
- end
- end
- #--------------------------------------------------------------------------
- # ● 最小値の設定
- # min : 求められた最小の数値
- #--------------------------------------------------------------------------
- def to_min(min)
- if self < min
- return min
- else
- return self
- end
- end
- #--------------------------------------------------------------------------
- # ● 範囲内から乱数を得る
- # min : 求められた最小の数値
- #--------------------------------------------------------------------------
- def mm_rand(min)
- return rand(self - min + 1) + min
- end
- #--------------------------------------------------------------------------
- # ● 求めた数値に対するパーセンテージを返す
- # order : 求められた数値
- #--------------------------------------------------------------------------
- def rate(order)
- return 100 if order == 0
- return (self * 100) / order
- end
- end
- #==============================================================================
- # ■ Window
- #------------------------------------------------------------------------------
- # ゲーム内の全てのウィンドウのスーパークラスです。
- # 内部的には複数のスプライトで構成されています。
- #==============================================================================
- class Window
- #--------------------------------------------------------------------------
- # ● 暗転モード処理
- #--------------------------------------------------------------------------
- def blackout(type = 0, power = 10, max = 100, sprite = @win_viewport)
- @tone_power = power
- @tone_type = type
- @tone_max = max
- update_blackout(sprite)
- end
- #--------------------------------------------------------------------------
- # ● フレーム更新 (暗転処理)
- #--------------------------------------------------------------------------
- def update_blackout(sprite = @win_viewport)
- case @tone_type
- when 0
- if @tone_rate != -@tone_max
- @tone_rate = [@tone_rate - @tone_power, -@tone_max].max
- sprite.tone.red = @tone_rate
- sprite.tone.green = @tone_rate
- sprite.tone.blue = @tone_rate
- end
- when 1
- if @tone_rate != 0
- @tone_rate = [@tone_rate + @tone_power, 0].min
- sprite.tone.red = @tone_rate
- sprite.tone.green = @tone_rate
- sprite.tone.blue = @tone_rate
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● ウィンドウの右寄せ
- #--------------------------------------------------------------------------
- def right(x)
- # ウィンドウを画面の右に配置する
- self.x = (x - self.width)
- end
- #--------------------------------------------------------------------------
- # ● ウィンドウの下寄せ
- #--------------------------------------------------------------------------
- def down(y)
- # ウィンドウを画面の右に配置する
- self.y = (480 - self.height - y)
- end
- #--------------------------------------------------------------------------
- # ● ウィンドウのセンタリング
- #--------------------------------------------------------------------------
- def centering
- # ウィンドウを画面の中央に配置する
- self.x = (640 - self.width) / 2
- self.y = (480 - self.height) / 2
- end
- end
复制代码 脚本:影描写主角的影子不用设置,脚本69行 @character_shadow.bitmap = Cache.picture("Shadows")
影子图放在picture文件夹里,括号里的文件夹名自己也可以定义。
给事件加影子的方法,左上角的名称里标上 ["影描写スクリプトVXA"] = true 是不是很长?我表示不知道该怎么改短。
如果想更改影子的显示位置,用PS上下左右移动影子图微调也行。 |
评分
-
查看全部评分
|