赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 3 |
经验 | 4508 |
最后登录 | 2018-4-28 |
在线时间 | 101 小时 |
Lv2.观梦者
- 梦石
- 0
- 星屑
- 342
- 在线时间
- 101 小时
- 注册时间
- 2013-9-10
- 帖子
- 46
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 guti4444 于 2013-12-15 22:53 编辑
- #============================================================================================
- # 本脚本来自www.66RPG.com,由sdxsdx转载。使用请保留此信息
- #============================================================================================
- #============================================
- # 自定义
- #============================================
- class Window_BattleStatus < Window_Base
- STATE_DRAW_FRAME = 20 # 状态框的间隔
- STATE_DRAW_X = 160 # X 坐标
- STATE_DRAW_Y = 77 # Y 坐标
- STATE_DRAW_COLOR_USE = true # 文字颜色是否有效
- #--------------------------------------------------------------------------
- # ● ステートの文字色設定
- # actor : アクター
- # text : 描画文字列
- #--------------------------------------------------------------------------
- def state_font_color(actor, text)
- if STATE_DRAW_COLOR_USE
- color = normal_color
- case text
- when "[正常]"
- color = normal_color
- when "[战斗不能]"
- color = knockout_color
- when "[眩晕]"
- color = normal_color
- when "[毒]"
- color = Color.new(128, 255, 128, 255)
- when "[幻惑]"
- color = Color.new(255, 255, 128, 255)
- when "[沈黙]"
- color = Color.new(160, 160, 160, 255)
- when "[混乱]"
- color = Color.new(200, 255, 140, 255)
- when "[睡眠]"
- color = Color.new(64, 64, 200, 255)
- when "[麻痺]"
- color = Color.new(128, 255, 255, 255)
- when "[ウィークン]","[クラムジー]","[ディレイ]","[フィーブル]"
- color = Color.new(128, 128, 128, 255)
- when "[シャープ]","[バリア]","[レジスト]","[ブリンク]"
- color = Color.new(128, 128, 255, 255)
- end
- else
- # STATE_DRAW_COLOR_USEがfalseの場合はデフォの処理(戦闘不能のみ赤で描画)
- color = actor.hp == 0 ? knockout_color : normal_color
- end
- @state_sprite.bitmap.font.color = color
- end
- attr_accessor :state_count
- alias window_battlestatus_state_draw_initialize initialize
- def initialize
- window_battlestatus_state_draw_initialize
- # ステート表示用のカウンタを作成
- @state_count = 0
- # ステート表示用のスプライトを作成
- @state_sprite = Sprite.new(self.viewport)
- @state_sprite.bitmap = Bitmap.new(self.width - 32, self.height - 32)
- @state_sprite.x = self.x + 16
- @state_sprite.y = self.y + 16
- @state_sprite.z = self.z + 2
- # ステート表示用スプライトをリフレッシュ
- state_draw_refresh
- end
- alias window_battlestatus_state_draw_dispose dispose
- def dispose
- window_battlestatus_state_draw_dispose
- # ステート表示用スプライトを開放
- @state_sprite.dispose
- end
- #--------------------------------------------------------------------------
- # ● 描画用のステート文字列作成
- # actor : アクター
- # width : 描画先の幅
- # need_normal : [正常] が必要かどうか (true / false)
- #--------------------------------------------------------------------------
- def make_battler_state_text(battler, width, need_normal)
- # 括弧の幅を取得
- # brackets_width = self.contents.text_size("[]").width
- # ステート名の文字列を作成
- text = ""
- # 実際表示するステートの配列作成
- show_state = []
- for i in battler.states
- if $data_states[i].rating >= 1
- show_state.push($data_states[i].name)
- end
- end
- # 表示ステートの配列が空の場合は "[正常]" にする
- if show_state.size == 0
- if need_normal
- text = "[正常]"
- else
- text = ""
- end
- else
- # カウントに見合ったステートを文字列に設定
- text = show_state[(@state_count / STATE_DRAW_FRAME) % show_state.size]
- # 括弧をつける
- text = "[" + text + "]"
- end
- # 完成した文字列を返す
- return text
- end
-
- def state_draw_refresh
- # ステート表示用のカウントを増加
- @state_count += 1
- # ステート更新間隔でなく、最初の更新時でなければ更新しない
- return if @state_count % STATE_DRAW_FRAME != 0 and @state_count != 1
- @state_sprite.bitmap.clear
- for i in 0...$game_party.actors.size
- actor = $game_party.actors[i]
- actor_x = i * STATE_DRAW_X + 4
- if @level_up_flags[i]
- @state_sprite.bitmap.font.color = normal_color
- @state_sprite.bitmap.draw_text(actor_x, STATE_DRAW_Y, 120, 32, "LEVEL UP!")
- else
- text = make_battler_state_text(actor, 120, true)
- state_font_color(actor, text)
- @state_sprite.bitmap.draw_text(actor_x, STATE_DRAW_Y, 120, 32, text)
- end
- end
- end
-
- #def draw_actor_state(actor, x, y, width = 120)
- # 通常のdraw_actor_stateを実行させない為のダミー
- #end
- end
- class Scene_Battle
- alias scene_battle_state_draw_update update
- def update
- # update毎にステート表示を更新
- @status_window.state_draw_refresh
- scene_battle_state_draw_update
- end
- end
复制代码 第一张图是一个人的时候 状态位置是正确的
第二张图是一个人的时候 战斗中加入第二个人 状态位置就没有随着队员加入而变化
第三张图是两个人直接进入战斗的时候 状态位置也是正确的
就这一个小bug 我整了几个小时 搞不定 哎 求看看脚本 哪里刷新还是什么的 |
|