=begin カセット半抜きみたいな現象(以下、getdown状態)を起こします。 キャラクターごとに設定可能。 イベントコマンドのスクリプトでで「getdown」と(カギ括弧不要)打ち込むだけ。 元に戻したい場合はもう一度このコマンドを入力すればOK。 ちなみに本来はgetdown(range, mode)という書式で行ないます。 rangeにはgetdownを適用する範囲を入力します。-1がプレイヤー、0が「このイベント」、 1〜 がイベントID、-2が全部(乗り物含む)、-3がイベント全部(省略時)。 modeにはgetdownの切り替え状態を入力します。nilが反転、trueがgetdown状態のON、 falseがgetdown状態のOFFです。 例として、getdown(-2)が乗り物含む全てのキャラクターのgetdown状態の反転、 getdown(-1, false)がプレイヤーのgetdown状態のOFF となります。 作成:faida =end #============================================================================== # ■ Game_Character #============================================================================== class Game_Character #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :getdown # ゲッダン attr_reader :getdown_angle # ゲッダン角度 #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias getdown_initialize initialize def initialize getdown_initialize @getdown = false; @getdown_angle = 0 end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- alias getdown_update update def update getdown_update; return if !@getdown @getdown_angle = rand(20) * 18 if rand(3).zero? turn_random if rand(5).zero? end #-------------------------------------------------------------------------- # ● 画面 X 座標の取得 #-------------------------------------------------------------------------- alias getdown_screen_x screen_x def screen_x return getdown_screen_x if !@getdown n = 16 * Math.cos(Math::PI * @getdown_angle / 180 + Math::PI / 2) return getdown_screen_x - n end #-------------------------------------------------------------------------- # ● 画面 Y 座標の取得 #-------------------------------------------------------------------------- alias getdown_screen_y screen_y def screen_y return getdown_screen_y if !@getdown n = 16 * Math.sin(Math::PI * @getdown_angle / 180 - Math::PI / 2) return getdown_screen_y - n - 16 end end #============================================================================== # ■ Sprite_Character #============================================================================== class Sprite_Character < Sprite_Base #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- alias getdown_update update def update getdown_update if !(@character && @character.getdown) self.angle = 0 else self.angle = @character.getdown_angle end end end #============================================================================== # ■ Game_Interpreter #============================================================================== class Game_Interpreter #-------------------------------------------------------------------------- # ○ ゲッダン #-------------------------------------------------------------------------- def getdown(range = -3, mode = nil) if mode.nil?; mode = "e.getdown ^= true" elsif !mode; mode = "e.getdown = false" else; mode = "e.getdown = true" end case range when -3 $game_map.events.values.each{|e|eval(mode)} when -2 $game_map.events.values.each{|e|eval(mode)}; n = [$game_player] $game_map.vehicles.each{|v|n.push(v)}; n.each{|e|eval(mode)} else e = get_character(@params[0]); eval(mode) end return true end end