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

Project1

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

[已经解决] 更改战斗角色显示框 的问题

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
260 小时
注册时间
2010-9-18
帖子
11
跳转到指定楼层
1
发表于 2011-5-7 23:57:33 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 ope010 于 2011-5-7 23:57 编辑

若不用 RTAB战斗系统 ,可将角色的显示框位置 调整自如吗?
如下图




未命名001.jpg (104.56 KB, 下载次数: 3)

未命名001.jpg

Lv1.梦旅人

梦石
0
星屑
50
在线时间
280 小时
注册时间
2010-11-6
帖子
348
5
发表于 2011-5-9 15:48:30 | 只看该作者
楼上的因该是正确答案了,脚本无能......
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
260 小时
注册时间
2010-9-18
帖子
11
4
 楼主| 发表于 2011-5-8 17:52:15 | 只看该作者
本帖最后由 ope010 于 2011-5-9 12:53 编辑

谢谢烁灵,改过后如下例:


对黑框部分,我看过这里“http://rpg.blue/forum.php?mod=vi ... 7%E6%98%BE%E7%A4%BA 怎么把战斗显示数据的底框去掉?”

但rtab战斗系统 似乎做了自动调整(战斗背景自动扩展),请问这个功能能分离出来吗?



改好了,效果如图:


用了即时战斗的脚本(张永的 三界-沙漠篇)(附带在下面)后变成这样,CP条(黄色条)的位置可以调为 自动调整 吗?这是我试过的唯一无冲突的cp脚本,但被 自动居中的(板凳处) 脚本调乱了位置,使用无问题,但显示位置出错(问题多了一些————)

即时战斗
  1. # ————————————————————————————————————
  2. # 本脚本来自www.66rpg.com,转载自www.phylomortis.com,转载请保留此信息
  3. # ————————————————————————————————————

  4. # ▼▲▼ XRXS_BP 1. CP制導入 ver..23 ▼▲▼
  5. # by 桜雅 在土, 和希

  6. #==============================================================================
  7. # □ カスタマイズポイント
  8. #==============================================================================
  9. module XRXS_BP1
  10. #
  11. # 对齐方式。0:左 1:中央 2:右
  12. #
  13. ALIGN = 0
  14. #
  15. # 人数
  16. #
  17. MAX = 4
  18. end
  19. class Scene_Battle_CP
  20. #
  21. # 战斗速度
  22. #
  23. BATTLE_SPEED = 1.2
  24. #
  25. # 战斗开始的时候气槽百分比
  26. #
  27. START_CP_PERCENT = 20
  28. end

  29. class Scene_Battle

  30. # 效果音效,可以自己添加
  31. DATA_SYSTEM_COMMAND_UP_SE = ""

  32. # 各项数值功能消耗的CP值
  33. CP_COST_BASIC_ACTIONS = 0 # 基础共同
  34. CP_COST_SKILL_ACTION = 65535 # 技能
  35. CP_COST_ITEM_ACTION = 65535 # 物品
  36. CP_COST_BASIC_ATTACK = 65535 # 攻撃
  37. CP_COST_BASIC_GUARD = 32768 # 防御
  38. CP_COST_BASIC_NOTHING = 65535 # 不做任何事情
  39. CP_COST_BASIC_ESCAPE = 65535 # 逃跑
  40. end

  41. #==============================================================================
  42. # --- XRXS.コマンドウィンドウ?コマンド追加機構 ---
  43. #------------------------------------------------------------------------------
  44. # Window_Commandクラスに add_command メソッドを追加します。
  45. #==============================================================================
  46. module XRXS_Window_Command_Add_Command
  47. #--------------------------------------------------------------------------
  48. # ○ コマンドを追加
  49. #--------------------------------------------------------------------------
  50. def add_command(command)
  51. # 初期化されていない場合、無効化判別用の配列 @disabled の初期化
  52. #
  53. if @disabled == nil
  54. @disabled = []
  55. end
  56. if @commands.size != @disabled.size
  57. for i in [email protected]
  58. @disabled[i] = false
  59. end
  60. end
  61. #
  62. # 追加
  63. #
  64. @commands.push(command)
  65. @disabled.push(false)
  66. @item_max = @commands.size
  67. self.y -= 32
  68. self.height += 32
  69. self.contents.dispose
  70. self.contents = nil
  71. self.contents = Bitmap.new(self.width - 32, @item_max * 32)
  72. refresh
  73. for i in [email protected]
  74. if @disabled[i]
  75. disable_item(i)
  76. end
  77. end
  78. end
  79. #--------------------------------------------------------------------------
  80. # ○ 項目の無効化
  81. # index : 項目番号
  82. #--------------------------------------------------------------------------
  83. def disable_item(index)
  84. if @disabled == nil
  85. @disabled = []
  86. end
  87. @disabled[index] = true
  88. draw_item(index, disabled_color)
  89. end
  90. end
  91. class Window_Command < Window_Selectable
  92. #--------------------------------------------------------------------------
  93. # ○ インクルード
  94. #--------------------------------------------------------------------------
  95. include XRXS_Window_Command_Add_Command
  96. #--------------------------------------------------------------------------
  97. # ● 項目の無効化
  98. # index : 項目番号
  99. #--------------------------------------------------------------------------
  100. def disable_item(index)
  101. super
  102. end
  103. end
  104. #==============================================================================
  105. # □ Scene_Battle_CP
  106. #==============================================================================
  107. class Scene_Battle_CP
  108. #--------------------------------------------------------------------------
  109. # ○ 公開インスタンス変数
  110. #--------------------------------------------------------------------------
  111. attr_accessor :stop # CP加算ストップ
  112. #----------------------------------------------------------------------------
  113. # ○ オブジェクトの初期化
  114. #----------------------------------------------------------------------------
  115. def initialize
  116. @battlers = []
  117. @cancel = false
  118. @stop = false
  119. @agi_total = 0
  120. # 配列 count_battlers を初期化
  121. count_battlers = []
  122. # エネミーを配列 count_battlers に追加
  123. for enemy in $game_troop.enemies
  124. count_battlers.push(enemy)
  125. end
  126. # アクターを配列 count_battlers に追加
  127. for actor in $game_party.actors
  128. count_battlers.push(actor)
  129. end
  130. for battler in count_battlers
  131. @agi_total += battler.agi
  132. end
  133. for battler in count_battlers
  134. battler.cp = [[65535 * START_CP_PERCENT * (rand(15) + 85) * 4 * battler.agi / @agi_total / 10000, 0].max, 65535].min
  135. end
  136. end
  137. #----------------------------------------------------------------------------
  138. # ○ CPカウントアップ
  139. #----------------------------------------------------------------------------
  140. def update
  141. # ストップされているならリターン
  142. return if @stop
  143. #
  144. for battler in $game_party.actors + $game_troop.enemies
  145. # 行動出来なければ無視
  146. if battler.dead? == true
  147. battler.cp = 0
  148. next
  149. end
  150. battler.cp = [[battler.cp + BATTLE_SPEED * 4096 * battler.agi / @agi_total, 0].max, 65535].min
  151. end
  152. end
  153. #----------------------------------------------------------------------------
  154. # ○ CPカウントの開始
  155. #----------------------------------------------------------------------------
  156. def stop
  157. @cancel = true
  158. if @cp_thread != nil then
  159. @cp_thread.join
  160. @cp_thread = nil
  161. end
  162. end
  163. end

  164. #==============================================================================
  165. # ■ Game_Battler
  166. #==============================================================================
  167. class Game_Battler
  168. attr_accessor :now_guarding # 現在防御中フラグ
  169. attr_accessor :cp # 現在CP
  170. attr_accessor :slip_state_update_ban # スリップ?ステート自動処理の禁止
  171. #--------------------------------------------------------------------------
  172. # ○ CP の変更
  173. #--------------------------------------------------------------------------
  174. def cp=(p)
  175. @cp = [[p, 0].max, 65535].min
  176. end
  177. #--------------------------------------------------------------------------
  178. # ● 防御中判定 [ 再定義 ]
  179. #--------------------------------------------------------------------------
  180. def guarding?
  181. return @now_guarding
  182. end
  183. #--------------------------------------------------------------------------
  184. # ● コマンド入力可能判定
  185. #--------------------------------------------------------------------------
  186. alias xrxs_bp1_inputable? inputable?
  187. def inputable?
  188. bool = xrxs_bp1_inputable?
  189. return (bool and (@cp >= 65535))
  190. end
  191. #--------------------------------------------------------------------------
  192. # ● ステート [スリップダメージ] 判定
  193. #--------------------------------------------------------------------------
  194. alias xrxs_bp1_slip_damage? slip_damage?
  195. def slip_damage?
  196. return false if @slip_state_update_ban
  197. return xrxs_bp1_slip_damage?
  198. end
  199. #--------------------------------------------------------------------------
  200. # ● ステート自然解除 (ターンごとに呼び出し)
  201. #--------------------------------------------------------------------------
  202. alias xrxs_bp1_remove_states_auto remove_states_auto
  203. def remove_states_auto
  204. return if @slip_state_update_ban
  205. xrxs_bp1_remove_states_auto
  206. end
  207. end
  208. #==============================================================================
  209. # ■ Game_Actor
  210. #==============================================================================
  211. class Game_Actor < Game_Battler
  212. #--------------------------------------------------------------------------
  213. # ● セットアップ
  214. #--------------------------------------------------------------------------
  215. alias xrxs_bp1_setup setup
  216. def setup(actor_id)
  217. xrxs_bp1_setup(actor_id)
  218. @cp = 0
  219. @now_guarding = false
  220. @slip_state_update_ban = false
  221. end
  222. end
  223. #==============================================================================
  224. # ■ Game_Enemy
  225. #==============================================================================
  226. class Game_Enemy < Game_Battler
  227. #--------------------------------------------------------------------------
  228. # ● オブジェクト初期化
  229. #--------------------------------------------------------------------------
  230. alias xrxs_bp1_initialize initialize
  231. def initialize(troop_id, member_index)
  232. xrxs_bp1_initialize(troop_id, member_index)
  233. @cp = 0
  234. @now_guarding = false
  235. @slip_state_update_ban = false
  236. end
  237. end
  238. #==============================================================================
  239. # ■ Window_BattleStatus
  240. #==============================================================================
  241. class Window_BattleStatus < Window_Base
  242. #--------------------------------------------------------------------------
  243. # ○ 公開インスタンス変数
  244. #--------------------------------------------------------------------------
  245. attr_accessor :update_cp_only # CPメーターのみの更新
  246. #--------------------------------------------------------------------------
  247. # ● オブジェクト初期化
  248. #--------------------------------------------------------------------------
  249. alias xrxs_bp1_initialize initialize
  250. def initialize
  251. @update_cp_only = false
  252. xrxs_bp1_initialize
  253. end
  254. #--------------------------------------------------------------------------
  255. # ● リフレッシュ
  256. #--------------------------------------------------------------------------
  257. alias xrxs_bp1_refresh refresh
  258. def refresh
  259. unless @update_cp_only
  260. xrxs_bp1_refresh
  261. end
  262. refresh_cp
  263. end
  264. #--------------------------------------------------------------------------
  265. # ○ リフレッシュ(CPのみ)
  266. #--------------------------------------------------------------------------
  267. def refresh_cp
  268. for i in 0...$game_party.actors.size
  269. actor = $game_party.actors[i]
  270. width = [self.width*3/4 / XRXS_BP1::MAX, 80].max
  271. space = self.width / XRXS_BP1::MAX
  272. case XRXS_BP1::ALIGN
  273. when 0
  274. actor_x = i * space + 4
  275. when 1
  276. actor_x = (space * ((XRXS_BP1::MAX - $game_party.actors.size)/2.0 + i)).floor
  277. when 2
  278. actor_x = (i + XRXS_BP1::MAX - $game_party.actors.size) * space + 4
  279. end
  280. actor_x += self.x
  281. draw_actor_cp_meter(actor, actor_x, 96, width, 0)
  282. end
  283. end
  284. #--------------------------------------------------------------------------
  285. # ○ CPメーター の描画
  286. #--------------------------------------------------------------------------
  287. def draw_actor_cp_meter(actor, x, y, width = 156, type = 0)
  288. self.contents.font.color = system_color
  289. self.contents.fill_rect(x-1, y+27, width+2,6, Color.new(0, 0, 0, 255))
  290. if actor.cp == nil
  291. actor.cp = 0
  292. end
  293. w = width * [actor.cp,65535].min / 65535
  294. self.contents.fill_rect(x, y+28, w,1, Color.new(255, 255, 128, 255))
  295. self.contents.fill_rect(x, y+29, w,1, Color.new(255, 255, 0, 255))
  296. self.contents.fill_rect(x, y+30, w,1, Color.new(192, 192, 0, 255))
  297. self.contents.fill_rect(x, y+31, w,1, Color.new(128, 128, 0, 255))
  298. end
  299. end
  300. #==============================================================================
  301. # ■ Scene_Battle
  302. #==============================================================================
  303. class Scene_Battle
  304. #--------------------------------------------------------------------------
  305. # ● フレーム更新
  306. #--------------------------------------------------------------------------
  307. alias xrxs_bp1_update update
  308. def update
  309. xrxs_bp1_update
  310. # CP更新
  311. @cp_thread.update
  312. end
  313. #--------------------------------------------------------------------------
  314. # ● バトル終了
  315. # result : 結果 (0:勝利 1:敗北 2:逃走)
  316. #--------------------------------------------------------------------------
  317. alias xrxs_bp1_battle_end battle_end
  318. def battle_end(result)
  319. # CPカウントを停止する
  320. @cp_thread.stop
  321. # 呼び戻す
  322. xrxs_bp1_battle_end(result)
  323. end
  324. #--------------------------------------------------------------------------
  325. # ● プレバトルフェーズ開始
  326. #--------------------------------------------------------------------------
  327. alias xrxs_bp1_start_phase1 start_phase1
  328. def start_phase1
  329. @agi_total = 0
  330. # CP加算を開始する
  331. @cp_thread = Scene_Battle_CP.new
  332. # インデックスを計算
  333. @cp_escape_actor_command_index = @actor_command_window.height/32 - 1
  334. # アクターコマンドウィンドウに追加
  335. @actor_command_window.add_command("逃离战场")
  336. if !$game_temp.battle_can_escape
  337. @actor_command_window.disable_item(@cp_escape_actor_command_index)
  338. end
  339. # 呼び戻す
  340. xrxs_bp1_start_phase1
  341. end
  342. #--------------------------------------------------------------------------
  343. # ● パーティコマンドフェーズ開始
  344. #--------------------------------------------------------------------------
  345. alias xrxs_bp1_start_phase2 start_phase2
  346. def start_phase2
  347. xrxs_bp1_start_phase2
  348. @party_command_window.active = false
  349. @party_command_window.visible = false
  350. # CP加算を再開する
  351. @cp_thread.stop = false
  352. # 次へ
  353. start_phase3
  354. end
  355. #--------------------------------------------------------------------------
  356. # ● アクターコマンドウィンドウのセットアップ
  357. #--------------------------------------------------------------------------
  358. alias xrxs_bp1_phase3_setup_command_window phase3_setup_command_window
  359. def phase3_setup_command_window
  360. # CPスレッドを一時停止する
  361. @cp_thread.stop = true
  362. # ウィンドウのCP更新
  363. @status_window.refresh_cp
  364. # @active_battlerの防御を解除
  365. @active_battler.now_guarding = false
  366. # 効果音の再生
  367. Audio.se_play(DATA_SYSTEM_COMMAND_UP_SE) if DATA_SYSTEM_COMMAND_UP_SE != ""
  368. # 呼び戻す
  369. xrxs_bp1_phase3_setup_command_window
  370. end
  371. #--------------------------------------------------------------------------
  372. # ● フレーム更新 (アクターコマンドフェーズ : 基本コマンド)
  373. #--------------------------------------------------------------------------
  374. alias xrxs_bsp1_update_phase3_basic_command update_phase3_basic_command
  375. def update_phase3_basic_command
  376. # C ボタンが押された場合
  377. if Input.trigger?(Input::C)
  378. # アクターコマンドウィンドウのカーソル位置で分岐
  379. case @actor_command_window.index
  380. when @cp_escape_actor_command_index # 逃げる
  381. if $game_temp.battle_can_escape
  382. # 決定 SE を演奏
  383. $game_system.se_play($data_system.decision_se)
  384. # アクションを設定
  385. @active_battler.current_action.kind = 0
  386. @active_battler.current_action.basic = 4
  387. # 次のアクターのコマンド入力へ
  388. phase3_next_actor
  389. else
  390. # ブザー SE を演奏
  391. $game_system.se_play($data_system.buzzer_se)
  392. end
  393. return
  394. end
  395. end
  396. xrxs_bsp1_update_phase3_basic_command
  397. end
  398. #--------------------------------------------------------------------------
  399. # ● メインフェーズ開始
  400. #--------------------------------------------------------------------------
  401. alias xrxs_bp1_start_phase4 start_phase4
  402. def start_phase4
  403. # 呼び戻す
  404. xrxs_bp1_start_phase4
  405. # CPスレッドを一時停止する
  406. unless @action_battlers.empty?
  407. @cp_thread.stop = true
  408. end
  409. end
  410. #--------------------------------------------------------------------------
  411. # ● 行動順序作成
  412. #--------------------------------------------------------------------------
  413. alias xrxs_bp1_make_action_orders make_action_orders
  414. def make_action_orders
  415. xrxs_bp1_make_action_orders
  416. # 全員のCPを確認
  417. exclude_battler = []
  418. for battler in @action_battlers
  419. # CPが不足している場合は @action_battlers から除外する
  420. if battler.cp < 65535
  421. exclude_battler.push(battler)
  422. end
  423. end
  424. @action_battlers -= exclude_battler
  425. end
  426. #--------------------------------------------------------------------------
  427. # ● フレーム更新 (メインフェーズ ステップ 1 : アクション準備)
  428. #--------------------------------------------------------------------------
  429. alias xrxs_bp1_update_phase4_step1 update_phase4_step1
  430. def update_phase4_step1
  431. # 初期化
  432. @phase4_act_continuation = 0
  433. # 勝敗判定
  434. if judge
  435. @cp_thread.stop
  436. # 勝利または敗北の場合 : メソッド終了
  437. return
  438. end
  439. # 未行動バトラー配列の先頭から取得
  440. @active_battler = @action_battlers[0]
  441. # ステータス更新をCPだけに限定。
  442. @status_window.update_cp_only = true
  443. # ステート更新を禁止。
  444. @active_battler.slip_state_update_ban = true if @active_battler != nil
  445. # 戻す
  446. xrxs_bp1_update_phase4_step1
  447. # @status_windowがリフレッシュされなかった場合は手動でリフレッシュ(CPのみ)
  448. if @phase4_step != 2
  449. # リフレッシュ
  450. @status_window.refresh
  451. # 軽量化:たったコレだけΣ(?w?
  452. Graphics.frame_reset
  453. end
  454. # 禁止を解除
  455. @status_window.update_cp_only = false
  456. @active_battler.slip_state_update_ban = false if @active_battler != nil
  457. end
  458. #--------------------------------------------------------------------------
  459. # ● フレーム更新 (メインフェーズ ステップ 2 : アクション開始)
  460. #--------------------------------------------------------------------------
  461. alias xrxs_bp1_update_phase4_step2 update_phase4_step2
  462. def update_phase4_step2
  463. # 強制アクションでなければ
  464. unless @active_battler.current_action.forcing
  465. # 制約が [敵を通常攻撃する] か [味方を通常攻撃する] の場合
  466. if @active_battler.restriction == 2 or @active_battler.restriction == 3
  467. # アクションに攻撃を設定
  468. @active_battler.current_action.kind = 0
  469. @active_battler.current_action.basic = 0
  470. end
  471. # 制約が [行動できない] の場合
  472. if @active_battler.restriction == 4
  473. # アクション強制対象のバトラーをクリア
  474. $game_temp.forcing_battler = nil
  475. if @phase4_act_continuation == 0 and @active_battler.cp >= 65535
  476. # ステート自然解除
  477. @active_battler.remove_states_auto
  478. # CP消費
  479. @active_battler.cp -= 65535
  480. # ステータスウィンドウをリフレッシュ
  481. @status_window.refresh
  482. end
  483. # ステップ 1 に移行
  484. @phase4_step = 1
  485. return
  486. end
  487. end
  488. # アクションの種別で分岐
  489. case @active_battler.current_action.kind
  490. when 0
  491. # 攻撃?防御?逃げる?何もしない時の共通消費CP
  492. @active_battler.cp -= CP_COST_BASIC_ACTIONS if @phase4_act_continuation == 0
  493. when 1
  494. # スキル使用時の消費CP
  495. @active_battler.cp -= CP_COST_SKILL_ACTION if @phase4_act_continuation == 0
  496. when 2
  497. # アイテム使用時の消費CP
  498. @active_battler.cp -= CP_COST_ITEM_ACTION if @phase4_act_continuation == 0
  499. end
  500. # ステート自然解除
  501. @active_battler.remove_states_auto
  502. # 呼び戻す
  503. xrxs_bp1_update_phase4_step2
  504. end
  505. #--------------------------------------------------------------------------
  506. # ● 基本アクション 結果作成
  507. #--------------------------------------------------------------------------
  508. alias xrxs_bp1_make_basic_action_result make_basic_action_result
  509. def make_basic_action_result
  510. # 攻撃の場合
  511. if @active_battler.current_action.basic == 0 and @phase4_act_continuation == 0
  512. @active_battler.cp -= CP_COST_BASIC_ATTACK # 攻撃時のCP消費
  513. end
  514. # 防御の場合
  515. if @active_battler.current_action.basic == 1 and @phase4_act_continuation == 0
  516. @active_battler.cp -= CP_COST_BASIC_GUARD # 防御時のCP消費
  517. # @active_battlerの防御をON
  518. @active_battler.now_guarding = true
  519. end
  520. # 敵の逃げるの場合
  521. if @active_battler.is_a?(Game_Enemy) and
  522. @active_battler.current_action.basic == 2 and @phase4_act_continuation == 0
  523. @active_battler.cp -= CP_COST_BASIC_ESCAPE # 逃走時のCP消費
  524. end
  525. # 何もしないの場合
  526. if @active_battler.current_action.basic == 3 and @phase4_act_continuation == 0
  527. @active_battler.cp -= CP_COST_BASIC_NOTHING # 何もしない時のCP消費
  528. end
  529. # 逃げるの場合
  530. if @active_battler.current_action.basic == 4 and @phase4_act_continuation == 0
  531. @active_battler.cp -= CP_COST_BASIC_ESCAPE # 逃走時のCP消費
  532. # 逃走可能ではない場合
  533. if $game_temp.battle_can_escape == false
  534. # ブザー SE を演奏
  535. $game_system.se_play($data_system.buzzer_se)
  536. return
  537. end
  538. # 逃走処理
  539. update_phase2_escape
  540. return
  541. end
  542. # 呼び戻す
  543. xrxs_bp1_make_basic_action_result
  544. end
  545. #--------------------------------------------------------------------------
  546. # ● フレーム更新 (メインフェーズ ステップ 6 : リフレッシュ)
  547. #--------------------------------------------------------------------------
  548. alias xrxs_bp1_update_phase4_step6 update_phase4_step6
  549. def update_phase4_step6
  550. # スリップダメージ
  551. if @active_battler.hp > 0 and @active_battler.slip_damage?
  552. @active_battler.slip_damage_effect
  553. @active_battler.damage_pop = true
  554. # ステータスウィンドウをリフレッシュ
  555. @status_window.refresh
  556. end
  557. # 呼び戻す
  558. xrxs_bp1_update_phase4_step6
  559. end
  560. end
复制代码
ope010于2011-5-9 12:49补充以下内容:
最后连同一个 升级提示 位置显示的问题,(这个问题似乎很复杂)



请问能连同 即时战斗的 显示条 一起并入 自动居中 脚本吗,

还是有别的什么自动调整位置方法?

这是 升级提示 的脚本,(张永的 三界-沙漠篇的)
  1. # ————————————————————————————————————
  2. # 本脚本来自www.66rpg.com,转载请保留此信息
  3. # ————————————————————————————————————

  4. # ▼▲▼ XRXS_BP10. LEVEL UP!能力上昇表示ウィンドウ plus ▼▲▼
  5. # by 桜雅 在土

  6. #——以下3个如果需要修改,直接输入文件名即可
  7. $data_system_level_up_se = "" #升级时的音效设置
  8. $data_system_level_up_me = "Audio/ME/007-Fanfare01" # 升级时播放的ME
  9. $data_system_skilllearn_se = "Audio/SE/106-Heal02" # 学会特技时播放的声效。

  10. #==============================================================================
  11. # ■ Window_LevelUpWindow
  12. #------------------------------------------------------------------------------
  13. #  バトル終了時、レベルアップした場合にステータスを表示するウィンドウです。
  14. #==============================================================================
  15. class Window_LevelUpWindow < Window_Base
  16.   #--------------------------------------------------------------------------
  17.   # ● オブジェクト初期化
  18.   #--------------------------------------------------------------------------
  19.   def initialize(actor, last_lv, up_hp, up_sp, up_str, up_dex, up_agi, up_int)
  20.     super(0, 128, 160, 192)
  21.     self.contents = Bitmap.new(width - 32, height - 32)
  22.     self.visible = false
  23.     self.back_opacity = 160
  24.     refresh(actor, last_lv, up_hp, up_sp, up_str, up_dex, up_agi, up_int)
  25.   end
  26.   #--------------------------------------------------------------------------
  27.   # ● リフレッシュ
  28.   #--------------------------------------------------------------------------
  29.   def refresh(actor, last_lv, up_hp, up_sp, up_str, up_dex, up_agi, up_int)
  30.     self.contents.clear
  31.     self.contents.font.color = system_color
  32.     self.contents.font.size = 14
  33.     self.contents.draw_text( 0, 0, 160, 24, "LEVEL UP!!")
  34.     self.contents.font.size = 18
  35.     self.contents.draw_text( 0, 28, 160, 24, $data_system.words.hp)
  36.     self.contents.draw_text( 0, 50, 160, 24, $data_system.words.sp)
  37.     self.contents.font.size = 14
  38.     self.contents.draw_text( 0, 72, 80, 24, $data_system.words.str)
  39.     self.contents.draw_text( 0, 94, 80, 24, $data_system.words.dex)
  40.     self.contents.draw_text( 0, 116, 80, 24, $data_system.words.agi)
  41.     self.contents.draw_text( 0, 138, 80, 24, $data_system.words.int)
  42.     self.contents.draw_text(92, 0, 128, 24, "→")
  43.     self.contents.draw_text(76, 28, 128, 24, "=")
  44.     self.contents.draw_text(76, 50, 128, 24, "=")
  45.     self.contents.draw_text(76, 72, 128, 24, "=")
  46.     self.contents.draw_text(76, 94, 128, 24, "=")
  47.     self.contents.draw_text(76, 116, 128, 24, "=")
  48.     self.contents.draw_text(76, 138, 128, 24, "=")
  49.     self.contents.font.color = normal_color
  50.     self.contents.draw_text( 0, 0, 88, 24, last_lv.to_s, 2)
  51.     self.contents.draw_text( 0, 28, 72, 24, "+" + up_hp.to_s, 2)
  52.     self.contents.draw_text( 0, 50, 72, 24, "+" + up_sp.to_s, 2)
  53.     self.contents.draw_text( 0, 72, 72, 24, "+" + up_str.to_s, 2)
  54.     self.contents.draw_text( 0, 94, 72, 24, "+" + up_dex.to_s, 2)
  55.     self.contents.draw_text( 0, 116, 72, 24, "+" + up_agi.to_s, 2)
  56.     self.contents.draw_text( 0, 138, 72, 24, "+" + up_int.to_s, 2)
  57.     self.contents.font.size = 20
  58.     self.contents.draw_text( 0, 0, 128, 24, actor.level.to_s, 2)
  59.     self.contents.draw_text( 0, 26, 128, 24, actor.maxhp.to_s, 2)
  60.     self.contents.draw_text( 0, 48, 128, 24, actor.maxsp.to_s, 2)
  61.     self.contents.draw_text( 0, 70, 128, 24, actor.str.to_s, 2)
  62.     self.contents.draw_text( 0, 92, 128, 24, actor.dex.to_s, 2)
  63.     self.contents.draw_text( 0, 114, 128, 24, actor.agi.to_s, 2)
  64.     self.contents.draw_text( 0, 136, 128, 24, actor.int.to_s, 2)
  65.   end
  66. end
  67. #==============================================================================
  68. # ■ Window_SkillLearning
  69. #------------------------------------------------------------------------------
  70. #  レベルアップ時などにスキルを習得した場合にそれを表示するウィンドウです。
  71. #==============================================================================
  72. class Window_SkillLearning < Window_Base
  73.   #--------------------------------------------------------------------------
  74.   # ● 公開インスタンス変数
  75.   #--------------------------------------------------------------------------
  76.   attr_reader :learned # スキルを習得したかどうか
  77.   #--------------------------------------------------------------------------
  78.   # ● オブジェクト初期化
  79.   #--------------------------------------------------------------------------
  80.   def initialize(class_id, last_lv, now_lv)
  81.     super(160, 64, 320, 64)
  82.     self.contents = Bitmap.new(width - 32, height - 28) # わざと▽を表示
  83.     self.visible = false
  84.     self.back_opacity = 160
  85.     @learned = false
  86.     refresh(class_id, last_lv, now_lv)
  87.   end
  88.   #--------------------------------------------------------------------------
  89.   # ● リフレッシュ
  90.   #--------------------------------------------------------------------------
  91.   def refresh(class_id, last_lv, now_lv)
  92.     for i in 0...$data_classes[class_id].learnings.size
  93.       learn_lv = $data_classes[class_id].learnings[i].level
  94.       # 今回のレベルアップ範囲で習得するスキルの場合
  95.       if learn_lv > last_lv and learn_lv <= now_lv
  96.         @learned = true
  97.         # SEの再生
  98.         if $data_system_skilllearn_se != ""
  99.           Audio.se_play($data_system_skilllearn_se)
  100.         end
  101.         # 各描写
  102.         skill_name = $data_skills[$data_classes[class_id].learnings[i].skill_id].name
  103.         self.contents.clear
  104.         self.contents.font.color = text_color(0)
  105.         self.contents.draw_text(0,0,448,32, "学会特技:"+skill_name)
  106.         self.contents.font.color = text_color(6)
  107.         self.contents.draw_text(0,0,448,32, "          "+skill_name)
  108.         self.contents.font.color = text_color(0)
  109.         self.visible = true
  110.         # メインループ
  111.         loop do
  112.           # ゲーム画面を更新
  113.           Graphics.update
  114.           # 入力情報を更新
  115.           Input.update
  116.           # フレーム更新
  117.           update
  118.           # 画面が切り替わったらループを中断
  119.           if @learned == false
  120.             break
  121.           end
  122.         end
  123.       # メインループここまで
  124.       end
  125.     end
  126.   end
  127.   #--------------------------------------------------------------------------
  128.   # ● フレーム更新
  129.   #--------------------------------------------------------------------------
  130.   def update
  131.     # C ボタンが押された場合
  132.     if Input.trigger?(Input::C)
  133.       @learned = false
  134.       self.visible = false
  135.     end
  136.   end
  137. end
  138. #==============================================================================
  139. # ■ Window_BattleStatus
  140. #==============================================================================
  141. class Window_BattleStatus < Window_Base
  142.   #--------------------------------------------------------------------------
  143.   # ● 追加?公開インスタンス変数
  144.   #--------------------------------------------------------------------------
  145.   attr_accessor :level_up_flags # LEVEL UP!表示
  146. end
  147. #==============================================================================
  148. # ■ Game_Battler
  149. #==============================================================================
  150. class Game_Battler
  151.   #--------------------------------------------------------------------------
  152.   # ● 追加?公開インスタンス変数
  153.   #--------------------------------------------------------------------------
  154.   attr_accessor :exp_gain_ban # EXP取得一時禁止
  155.   #--------------------------------------------------------------------------
  156.   # ● オブジェクト初期化
  157.   #--------------------------------------------------------------------------
  158.   alias xrxs_bp10_initialize initialize
  159.   def initialize
  160.     @exp_gain_ban = false
  161.     xrxs_bp10_initialize
  162.   end
  163.   #--------------------------------------------------------------------------
  164.   # ● ステート [EXP を獲得できない] 判定
  165.   #--------------------------------------------------------------------------
  166.   alias xrxs_bp10_cant_get_exp? cant_get_exp?
  167.   def cant_get_exp?
  168.     if @exp_gain_ban == true
  169.       return true
  170.     else
  171.       return xrxs_bp10_cant_get_exp?
  172.     end
  173.   end
  174. end
  175. #==============================================================================
  176. # ■ Scene_Battle
  177. #==============================================================================
  178. class Scene_Battle
  179.   #--------------------------------------------------------------------------
  180.   # ● アフターバトルフェーズ開始
  181.   #--------------------------------------------------------------------------
  182.   alias xrxs_bp10_start_phase5 start_phase5
  183.   def start_phase5
  184.     # EXP 獲得禁止
  185.     for i in 0...$game_party.actors.size
  186.       $game_party.actors[i].exp_gain_ban = true
  187.     end
  188.     xrxs_bp10_start_phase5
  189.     # EXP 獲得禁止の解除
  190.     for i in 0...$game_party.actors.size
  191.       $game_party.actors[i].exp_gain_ban = false
  192.     end
  193.     # EXPを初期化
  194.     @exp_gained = 0
  195.     for enemy in $game_troop.enemies
  196.       # 獲得 EXPを追加 # エネミーが隠れ状態でない場合
  197.       @exp_gained += enemy.exp if not enemy.hidden
  198.     end
  199.     # 設定
  200.     @phase5_step = 1
  201.     @exp_gain_actor = -1
  202.     # リザルトウィンドウを表示
  203.     @result_window.visible = true
  204.   end
  205.   #--------------------------------------------------------------------------
  206.   # ● フレーム更新 (アフターバトルフェーズ)
  207.   #--------------------------------------------------------------------------
  208.   #alias xrxs_bp10_update_phase5 update_phase5
  209.   def update_phase5
  210.     case @phase5_step
  211.     when 1
  212.       update_phase5_step1
  213.     else
  214.     # ウェイトカウントが 0 より大きい場合
  215.       if @phase5_wait_count > 0
  216.         # ウェイトカウントを減らす
  217.         @phase5_wait_count -= 1
  218.         # ウェイトカウントが 0 になった場合
  219.         if @phase5_wait_count == 0
  220.           # リザルトウィンドウを表示
  221.           #@result_window.visible = true
  222.           # メインフェーズフラグをクリア
  223.           $game_temp.battle_main_phase = false
  224.           # ステータスウィンドウをリフレッシュ
  225.           @status_window.refresh
  226.         end
  227.       return
  228.       end
  229.       # C ボタンが押された場合
  230.       if Input.trigger?(Input::C)
  231.         # バトル終了
  232.         battle_end(0)
  233.       end
  234.     # レベルアップしている場合は強制バトル終了
  235.     battle_end(0) if @levelup_window != nil and @phase5_wait_count <= 0
  236.     end
  237.   end
  238.   #--------------------------------------------------------------------------
  239.   # ● フレーム更新 (アフターバトルフェーズ 1 : レベルアップ)
  240.   #--------------------------------------------------------------------------
  241.   def update_phase5_step1
  242.     # C ボタンが押された場合
  243.     if Input.trigger?(Input::C)
  244.       # ウィンドウを閉じて次のアクターへ
  245.       @levelup_window.visible = false if @levelup_window != nil
  246.       @status_window.level_up_flags[@exp_gain_actor] = false
  247.       phase5_next_levelup
  248.     end
  249.   end
  250.   #--------------------------------------------------------------------------
  251.   # ● 次のアクターのレベルアップ表示へ
  252.   #--------------------------------------------------------------------------
  253.   def phase5_next_levelup
  254.     begin
  255.       # 次のアクターへ
  256.       @exp_gain_actor += 1
  257.       # 最後のアクターの場合
  258.       if @exp_gain_actor >= $game_party.actors.size
  259.         # アフターバトルフェーズ開始
  260.         @phase5_step = 0
  261.         return
  262.       end
  263.       actor = $game_party.actors[@exp_gain_actor]
  264.       if actor.cant_get_exp? == false
  265.         # 現在の能力値を保持
  266.         last_level = actor.level
  267.         last_maxhp = actor.maxhp
  268.         last_maxsp = actor.maxsp
  269.         last_str = actor.str
  270.         last_dex = actor.dex
  271.         last_agi = actor.agi
  272.         last_int = actor.int
  273.         # 経験値取得の決定的瞬間(謎
  274.         actor.exp += @exp_gained
  275.         # 判定
  276.         if actor.level > last_level
  277.           # レベルアップした場合
  278.           @status_window.level_up(@exp_gain_actor)
  279.           # リザルトウィンドウを消す
  280.           @result_window.visible = false
  281.           # SEの再生
  282.           if $data_system_level_up_se != ""
  283.             Audio.se_play($data_system_level_up_se)
  284.           end
  285.           # MEの再生
  286.           if $data_system_level_up_me != ""
  287.             Audio.me_stop
  288.             Audio.me_play($data_system_level_up_me)
  289.           end
  290.           # LEVEL-UPウィンドウの設定
  291.           @levelup_window = Window_LevelUpWindow.new(actor, last_level,
  292.           actor.maxhp - last_maxhp, actor.maxsp - last_maxsp, actor.str - last_str,
  293.           actor.dex - last_dex, actor.agi - last_agi, actor.int - last_int)
  294.           @levelup_window.x = 160 * @exp_gain_actor
  295.           @levelup_window.visible = true
  296.           # ステータスウィンドウをリフレッシュ
  297.           @status_window.refresh
  298.           # スキル習得ウィンドウの設定
  299.           @skilllearning_window = Window_SkillLearning.new(actor.class_id, last_level, actor.level)
  300.           # ウェイトカウントを設定
  301.           @phase5_wait_count = 40
  302.           @phase5_step = 1
  303.           return
  304.         end
  305.       end
  306.     end until false
  307.   end
  308. end
复制代码
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
951
在线时间
1685 小时
注册时间
2009-7-25
帖子
534

开拓者

3
发表于 2011-5-8 09:23:22 | 只看该作者
本帖最后由 烁灵 于 2011-5-8 19:29 编辑

中间那张自动居中的效果是用了另外一个完全可以和RTAB分离的脚本,摘出来用即可
  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==============================================================================


  4. #==============================================================================
  5. # ■ 战斗时自动更改状态栏大小和命令窗口位置
  6. #
  7. #     简单战斗系统,根据队员人数自动更改状态窗口大小,自动调整命令窗口位置;
  8. #==============================================================================


  9. #==============================================================================
  10. # ■ Game_Actor
  11. #------------------------------------------------------------------------------
  12. #  处理角色的类。本类在 Game_Actors 类 ($game_actors)
  13. # 的内部使用、Game_Party 类请参考 ($game_party) 。
  14. #==============================================================================

  15. class Game_Actor < Game_Battler
  16. #--------------------------------------------------------------------------
  17. # ● 取得战斗画面的 X 坐标
  18. #--------------------------------------------------------------------------
  19. def screen_x
  20.   # 返回计算后的队伍 X 坐标的排列顺序
  21.   case $game_party.actors.size
  22.   when 0
  23.     return 0
  24.   when 1
  25.     return 320
  26.   when 2
  27.     case self.index
  28.     when 0
  29.       return 240
  30.     when 1
  31.       return 400
  32.     end
  33.   when 3
  34.     case self.index
  35.     when 0
  36.       return 160
  37.     when 1
  38.       return 320
  39.     when 2
  40.       return 480
  41.     end
  42.   when 4
  43.     case self.index
  44.     when 0
  45.       return 80
  46.     when 1
  47.       return 240
  48.     when 2
  49.       return 400
  50.     when 3
  51.       return 560
  52.     end
  53.   end
  54. end
  55. end
  56. #------------------------------------------------------------------------------
  57. #  显示战斗画面同伴状态的窗口。
  58. #==============================================================================

  59. class Window_BattleStatus < Window_Base
  60. #--------------------------------------------------------------------------
  61. # ● 初始化对像
  62. #--------------------------------------------------------------------------
  63. def initialize
  64.   case $game_party.actors.size
  65.   when 1
  66.     super(240, 320, 160, 160)
  67.   when 2
  68.     super(160, 320, 320, 160)
  69.   when 3
  70.     super(80, 320, 480, 160)
  71.   when 4
  72.     super(0, 320, 640, 160)
  73.   end
  74.   self.contents = Bitmap.new(width - 32, height - 32)
  75.   @level_up_flags = [false, false, false, false]
  76.   refresh
  77. end
  78. end
  79. #==============================================================================
  80. # ■ Spriteset_Battle
  81. #------------------------------------------------------------------------------
  82. #  处理战斗画面的活动块的类。本类在 Scene_Battle 类
  83. # 的内部使用。
  84. #==============================================================================

  85. class Spriteset_Battle
  86. #--------------------------------------------------------------------------
  87. # ● 初始化变量
  88. #--------------------------------------------------------------------------
  89. def initialize
  90.   # 生成显示端口
  91.   @viewport1 = Viewport.new(0, 0, 640, 480)
  92.   @viewport2 = Viewport.new(0, 0, 640, 480)
  93.   @viewport3 = Viewport.new(0, 0, 640, 480)
  94.   @viewport4 = Viewport.new(0, 0, 640, 480)
  95.   @viewport2.z = 101
  96.   @viewport3.z = 200
  97.   @viewport4.z = 5000
  98.   # 生成战斗背景活动块
  99.   @battleback_sprite = Sprite.new(@viewport1)
  100.   # 生成敌人活动块
  101.   @enemy_sprites = []
  102.   for enemy in $game_troop.enemies.reverse
  103.     @enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
  104.   end
  105.   # 生成敌人活动块
  106.   @actor_sprites = []
  107.   @actor_sprites.push(Sprite_Battler.new(@viewport2))
  108.   @actor_sprites.push(Sprite_Battler.new(@viewport2))
  109.   @actor_sprites.push(Sprite_Battler.new(@viewport2))
  110.   @actor_sprites.push(Sprite_Battler.new(@viewport2))
  111.   # 生成天候
  112.   @weather = RPG::Weather.new(@viewport1)
  113.   # 生成图片活动块
  114.   @picture_sprites = []
  115.   for i in 51..100
  116.     @picture_sprites.push(Sprite_Picture.new(@viewport3,
  117.     $game_screen.pictures[i]))
  118.   end
  119.   # 生成计时器块
  120.   @timer_sprite = Sprite_Timer.new
  121.   # 刷新画面
  122.   update
  123. end
  124. #--------------------------------------------------------------------------
  125. # ● 刷新画面
  126. #--------------------------------------------------------------------------
  127. def update
  128.   # 刷新角色的活动块 (对应角色的替换)
  129.   @actor_sprites[0].battler = $game_party.actors[0]
  130.   @actor_sprites[1].battler = $game_party.actors[1]
  131.   @actor_sprites[2].battler = $game_party.actors[2]
  132.   @actor_sprites[3].battler = $game_party.actors[3]
  133.   # 战斗背景的文件名与现在情况有差异的情况下
  134.   if @battleback_name != $game_temp.battleback_name
  135.     @battleback_name = $game_temp.battleback_name
  136.     if @battleback_sprite.bitmap != nil
  137.       @battleback_sprite.bitmap.dispose
  138.     end
  139.     @battleback_sprite.bitmap = RPG::Cache.battleback(@battleback_name)
  140.     @battleback_sprite.src_rect.set(0, 0, 640, 480)
  141.   end
  142.   # 刷新战斗者的活动块
  143.   for sprite in @enemy_sprites + @actor_sprites
  144.     sprite.update
  145.   end
  146.   # 刷新天气图形
  147.   @weather.type = $game_screen.weather_type
  148.   @weather.max = $game_screen.weather_max
  149.   @weather.update
  150.   # 刷新图片活动块
  151.   for sprite in @picture_sprites
  152.     sprite.update
  153.   end
  154.   # 刷新计时器活动块
  155.   @timer_sprite.update
  156.   # 设置画面的色调与震动位置
  157.   @viewport1.tone = $game_screen.tone
  158.   @viewport1.ox = $game_screen.shake
  159.   # 设置画面的闪烁色
  160.   @viewport4.color = $game_screen.flash_color
  161.   # 刷新显示端口
  162.   @viewport1.update
  163.   @viewport2.update
  164.   @viewport4.update
  165. end
  166. end
  167. #==============================================================================
  168. # ■ Scene_Battle (分割定义 1)
  169. #------------------------------------------------------------------------------
  170. #  处理战斗画面的类。
  171. #==============================================================================

  172. class Scene_Battle
  173. #--------------------------------------------------------------------------
  174. # ● 主处理
  175. #--------------------------------------------------------------------------
  176. def main
  177.   # 初始化战斗用的各种暂时数据
  178.   $game_temp.in_battle = true
  179.   $game_temp.battle_turn = 0
  180.   $game_temp.battle_event_flags.clear
  181.   $game_temp.battle_abort = false
  182.   $game_temp.battle_main_phase = false
  183.   $game_temp.battleback_name = $game_map.battleback_name
  184.   $game_temp.forcing_battler = nil
  185.   # 初始化战斗用事件解释器
  186.   $game_system.battle_interpreter.setup(nil, 0)
  187.   # 准备队伍
  188.   @troop_id = $game_temp.battle_troop_id
  189.   $game_troop.setup(@troop_id)
  190.   # 生成角色命令窗口
  191.   s1 = $data_system.words.attack
  192.   s2 = $data_system.words.skill
  193.   s3 = $data_system.words.guard
  194.   s4 = $data_system.words.item
  195.   @actor_command_window = Window_Command.new(160, [s1, s2, s3, s4])
  196.   @actor_command_window.y = 160
  197.   @actor_command_window.back_opacity = 160
  198.   @actor_command_window.active = false
  199.   @actor_command_window.visible = false
  200.   # 生成其它窗口
  201.   @party_command_window = Window_PartyCommand.new
  202.   @help_window = Window_Help.new
  203.   @help_window.back_opacity = 160
  204.   @help_window.visible = false
  205.   @status_window = Window_BattleStatus.new
  206.   @message_window = Window_Message.new  
  207.   # 生成活动块
  208.   @spriteset = Spriteset_Battle.new
  209.   # 初始化等待计数
  210.   @wait_count = 0
  211.   # 执行过渡
  212.   if $data_system.battle_transition == ""
  213.     Graphics.transition(20)
  214.   else
  215.     Graphics.transition(40, "Graphics/Transitions/" +
  216.       $data_system.battle_transition)
  217.   end
  218.   # 开始自由战斗回合
  219.   start_phase1
  220.   # 主循环
  221.   loop do
  222.     # 刷新游戏画面
  223.     Graphics.update
  224.     # 刷新输入信息
  225.     Input.update
  226.     # 刷新画面
  227.     update
  228.     # 如果画面切换的话就中断循环
  229.     if $scene != self
  230.       break
  231.     end
  232.   end
  233.   # 刷新地图
  234.   $game_map.refresh
  235.   # 准备过渡
  236.   Graphics.freeze
  237.   # 释放窗口
  238.   @actor_command_window.dispose
  239.   @party_command_window.dispose
  240.   @help_window.dispose
  241.   @status_window.dispose
  242.   @message_window.dispose
  243.   if @skill_window != nil
  244.     @skill_window.dispose
  245.   end
  246.   if @item_window != nil
  247.     @item_window.dispose
  248.   end
  249.   if @result_window != nil
  250.    @result_window.dispose
  251.   end
  252.   # 释放活动块
  253.   @spriteset.dispose
  254.   # 标题画面切换中的情况
  255.   if $scene.is_a?(Scene_Title)
  256.     # 淡入淡出画面
  257.     Graphics.transition
  258.     Graphics.freeze
  259.   end
  260.   # 战斗测试或者游戏结束以外的画面切换中的情况
  261.   if $BTEST and not $scene.is_a?(Scene_Gameover)
  262.     $scene = nil
  263.   end
  264. end
  265. #--------------------------------------------------------------------------
  266. # ● 设置角色指令窗口
  267. #--------------------------------------------------------------------------
  268. def phase3_setup_command_window
  269.   # 同伴指令窗口无效化
  270.   @party_command_window.active = false
  271.   @party_command_window.visible = false
  272.   # 角色指令窗口无效化
  273.   @actor_command_window.active = true
  274.   @actor_command_window.visible = true
  275.   # 设置角色指令窗口的位置
  276.   case $game_party.actors.size
  277.   when 1
  278.     @actor_command_window.x = @actor_index * 160 + 240
  279.   when 2
  280.     @actor_command_window.x = @actor_index * 160 + 160
  281.   when 3
  282.     @actor_command_window.x = @actor_index * 160 + 80
  283.   when 4
  284.     @actor_command_window.x = @actor_index * 160
  285.   end
  286.   # 设置索引为 0
  287.   @actor_command_window.index = 0
  288. end
  289. end

  290. #==============================================================================
  291. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  292. #==============================================================================
复制代码
关于图片伸缩问题,建议您改换一张大小本身就是640*480的图片

图片拉伸脚本见下
  1. #==============================================================================
  2. # ■ XP-RGSS-53 バトル背景変更 [Ver.1.0.0]             by Claimh
  3. #------------------------------------------------------------------------------
  4. # バトル背景をフルスクリーン化します。
  5. #==============================================================================


  6. #==============================================================================
  7. # ■ Spriteset_Battle
  8. #==============================================================================
  9. class Spriteset_Battle
  10.   #--------------------------------------------------------------------------
  11.   # ● オブジェクト初期化 [再定義]
  12.   #--------------------------------------------------------------------------
  13.   def initialize
  14.     # ビューポートを作成
  15.     @viewport1 = Viewport.new(0, 0, 640, 480)
  16.     @viewport2 = Viewport.new(0, 0, 640, 480)
  17.     @viewport3 = Viewport.new(0, 0, 640, 480)
  18.     @viewport4 = Viewport.new(0, 0, 640, 480)
  19.     @viewport2.z = 101
  20.     @viewport3.z = 200
  21.     @viewport4.z = 5000
  22.     # バトルバックスプライトを作成
  23.     @battleback_sprite = BattleBackSprite.new(@viewport1)
  24.     # エネミースプライトを作成
  25.     @enemy_sprites = []
  26.     for enemy in $game_troop.enemies.reverse
  27.       @enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
  28.     end
  29.     # アクタースプライトを作成
  30.     @actor_sprites = []
  31.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  32.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  33.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  34.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  35.     # 天候を作成
  36.     @weather = RPG::Weather.new(@viewport1)
  37.     # ピクチャスプライトを作成
  38.     @picture_sprites = []
  39.     for i in 51..100
  40.       @picture_sprites.push(Sprite_Picture.new(@viewport3,
  41.         $game_screen.pictures[i]))
  42.     end
  43.     # タイマースプライトを作成
  44.     @timer_sprite = Sprite_Timer.new
  45.     # フレーム更新
  46.     update
  47.   end
  48.   #--------------------------------------------------------------------------
  49.   # ● フレーム更新 [再定義]
  50.   #--------------------------------------------------------------------------
  51.   def update
  52.     # アクタースプライトの内容を更新 (アクターの入れ替えに対応)
  53.     @actor_sprites[0].battler = $game_party.actors[0]
  54.     @actor_sprites[1].battler = $game_party.actors[1]
  55.     @actor_sprites[2].battler = $game_party.actors[2]
  56.     @actor_sprites[3].battler = $game_party.actors[3]
  57.     # バトルバックのファイル名が現在のものと違う場合
  58.     if @battleback_name != $game_temp.battleback_name
  59.       @battleback_name = $game_temp.battleback_name
  60.       @battleback_sprite.restore(@battleback_name)
  61.     end
  62.     # バトラースプライトを更新
  63.     for sprite in @enemy_sprites + @actor_sprites
  64.       sprite.update
  65.     end
  66.     # 天候グラフィックを更新
  67.     @weather.type = $game_screen.weather_type
  68.     @weather.max = $game_screen.weather_max
  69.     @weather.update
  70.     # ピクチャスプライトを更新
  71.     for sprite in @picture_sprites
  72.       sprite.update
  73.     end
  74.     # タイマースプライトを更新
  75.     @timer_sprite.update
  76.     # 画面の色調とシェイク位置を設定
  77.     @viewport1.tone = $game_screen.tone
  78.     @viewport1.ox = $game_screen.shake
  79.     # 画面のフラッシュ色を設定
  80.     @viewport4.color = $game_screen.flash_color
  81.     # ビューポートを更新
  82.     @viewport1.update
  83.     @viewport2.update
  84.     @viewport4.update
  85.   end
  86. end


  87. #==============================================================================
  88. # ■ BattleBackSprite
  89. #==============================================================================
  90. class BattleBackSprite < Sprite
  91.   # 背景の画面サイズ
  92.   WIDTH  = 640.00
  93.   HEIGHT = 480.00
  94.   #--------------------------------------------------------------------------
  95.   # ● バトル背景の再構築
  96.   #--------------------------------------------------------------------------
  97.   def restore(battleback_name)
  98.     self.bitmap.dispose unless self.bitmap.nil?
  99.     self.bitmap = RPG::Cache.battleback(battleback_name)
  100.     # 画像サイズに合わせてズームをする
  101.     @x_zoom = WIDTH / self.bitmap.width
  102.     @y_zoom = HEIGHT / self.bitmap.height
  103.     @zoom = @x_zoom > @y_zoom ? @x_zoom : @y_zoom
  104.     # ズームする
  105.     self.zoom_x = @zoom
  106.     self.zoom_y = @zoom
  107.     # 中央表示にする
  108.     self.ox = self.bitmap.width / 2
  109.     self.oy = self.bitmap.height / 2
  110. #    self.x = (self.bitmap.width / 2)  * @zoom
  111.     self.x = (self.bitmap.width / 2)
  112.     self.y = (self.bitmap.height / 2) * @zoom
  113.   end
  114. end


复制代码

评分

参与人数 1星屑 +200 梦石 +2 收起 理由
「旅」 + 200 + 2

查看全部评分

回复 支持 反对

使用道具 举报

星尘泪 该用户已被删除
2
发表于 2011-5-8 07:09:03 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 13:02

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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