Project1
标题:
整合成统一CP条的RTAB 第二版(插件版)
[打印本页]
作者:
cftx
时间:
2007-8-27 23:30
标题:
整合成统一CP条的RTAB 第二版(插件版)
发现了第一版还残留了不少问题{/gg}...............重新发布一个版本
主要变更:
1.原来的范例工程版里,对多个地方都有修改,使用较为麻烦,这个版本将所有的修改都单独拿了出来,直接作为RTAB的一个插件,插入所有RTAB插件之前就可以使用,也方便了和其它RTAB结合,目前测试和RTAB0.17整合版兼容,其它版未测试。
要注意的是,RTAB连击计算之类的脚本都对RTAB进行了不少重定义,这个插件版和其它插件整合了,直接包括了其它插件的重定义内容,如果你的RTAB脱离了这些插件的话,需要对CP条脚本进行一些修改,内有说明。
2.针对原来用缩小的战斗图当图标造成画面乱的问题,加入了一个自动用行走图做图标的功能(根据战斗图色调也会自动变色),但是这是针对默认RTP的,因为默认RTP的每个怪物战斗图都有对应的同名行走图。如果你导入了新的战斗图,你就还需要准备与其同名的行走图才能使用这个功能。当然这个功能是可以开关的。
效果截图
3.清除了之前的残留BUG,优化了代码,加入了一个调节刷新频率减少掉帧的功能来适应老机器....
使用方法:直接将下面这个脚本插入RTAB及其所有插件之前(下面),需要的素材,请下载范例得到.........
4.加入了防御时变黄色的标志,修正了AT伤害让图标跑出行动条的问题,现在,AT大于100或者小于0时会停留在行动条最右边或者最左边
范例(第一版的范例存在一些问题.....)
http://rpg.blue/upload_program/files/RTAB_sixRice_017b_cp_2nd.rar
# ▼▲▼ XRXS65A. CP制御ターンシステム「シンセ・ゲージ」 ▼▲▼ built201202
# by 桜雅 在土
#==============================================================================
# □ カスタマイズポイント
#==============================================================================
class XRXS65A
#--------------------------------------------------------------------------
# 「シンセ・ゲージ」
#--------------------------------------------------------------------------
SKIN = "123" # スキン
X = 2 # X 座標
Y = 0 # Y 座標
CHA = true #是否使用行走图来代替战斗图,建议使用默认RTP的人使用,否则需要给每个怪物配套与战斗图同名的行走图,色调将根据战斗图色调自动变更
N=1#隔几帧才刷新,这个数越大可以加快效率,但是图标的移动会看起来“一跳一跳”,不推荐大于10。
end
#==============================================================================
# --- CP メーターをまとめて管理するクラス、表示関係はすべてココ --- [再定義]
#==============================================================================
class CP_Meters
#--------------------------------------------------------------------------
# ○ オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
# シンセゲージの生成
@kk = Sprite.new
@kk.bitmap = RPG::Cache.windowskin("456").dup
@kk.x = 596
@kk.y = 0
@kk.z = 17
@base = Sprite.new
@base.bitmap = RPG::Cache.windowskin(XRXS65A::SKIN).dup
@base.x = XRXS65A::X
@base.y = XRXS65A::Y+20
@base.z = 16
@width = @base.bitmap.width
@height = @base.bitmap.height
@icon_set = []
refresh
end
#--------------------------------------------------------------------------
# ○ リフレッシュ
#--------------------------------------------------------------------------
def refresh(enemy=nil,force=false)
if Graphics.frame_count % XRXS65A::N == 0 or force==true
# 生成すべきバトラーの取得
need_initializes = []
for battler in $game_party.actors + $game_troop.enemies
exist = false
for set in @icon_set
exist |= (set[1] == battler)
end
need_initializes.push(battler) unless exist
end
for battler in need_initializes
iconname = nil
if battler.is_a?(Game_Actor)
en = $data_actors[battler.id]
else
en = $data_enemies[battler.id]
end
sprite = Sprite.new
if XRXS65A::CHA==true
bitmap = RPG::Cache.character(en.battler_name, en.battler_hue).dup
cw=bitmap.width/4
ch=bitmap.height/4
src_rect = Rect.new(0, 0, cw, ch)
sprite.y = 32+XRXS65A::Y
sprite.z = 17
sprite.bitmap = Bitmap.new(cw, ch)
sprite.bitmap.blt(0, 0, bitmap, src_rect)
sprite.oy=ch/2
sprite.ox=cw/2-25
else
sprite.bitmap = RPG::Cache.battler(en.battler_name, en.battler_hue).dup
sprite.y = 0+XRXS65A::Y
sprite.z = 17
sprite.zoom_x = 64.0/sprite.bitmap.height
sprite.zoom_y = 64.0/sprite.bitmap.height
end
# item=[sprite,name]
@icon_set.push([sprite, battler])
end
# 更新
for set in @icon_set
set[0].color = Color.new(0,0,0,0)
set[0].visible = true if set[0].visible ==false
if set[1].rtp>0
set[0].color = Color.new(0,255,255,128)
set[0].x = XRXS65A::X + @width * [[set[1].rt,0].max,set[1].rtp].min / set[1].rtp - 12
set[0].visible = false if set[1].dead? or !set[1].exist?
elsif set[1].guarding?
set[0].color = Color.new(255,255,0,128)
set[0].x = XRXS65A::X + @width * [[set[1].atp,0].max,100].min / 100 - 12
set[0].visible = false if set[1].dead? or !set[1].exist?
else
set[0].x = XRXS65A::X + @width * [[set[1].atp,0].max,100].min / 100 - 12
set[0].visible = false if set[1].dead? or !set[1].exist?
end
if set[1].atp>=100 and set[1].rtp==0
set[0].color = Color.new(255,255,255,128)
elsif set[1]==enemy
set[0].color = Color.new(255,0,0,128)
end
end
end
end
#----------敌人变身时的处理
def change(enemy)
for set in @icon_set
if set[1] == enemy
if enemy.is_a?(Game_Actor)
en = $data_actors[enemy.id]
else
en = $data_enemies[enemy.id]
end
if XRXS65A::CHA==true
bitmap = RPG::Cache.character(en.battler_name, en.battler_hue).dup
cw=bitmap.width/4
ch=bitmap.height/4
src_rect = Rect.new(0, 0, cw, ch)
set[0].bitmap.dispose
set[0].bitmap = Bitmap.new(cw, ch)
set[0].bitmap.blt(0, 0, bitmap, src_rect)
set[0].oy=ch/2
set[0].ox=cw/2-25
set[0].y = 32+XRXS65A::Y
set[0].z = 17
else
set[0].bitmap = RPG::Cache.battler(en.battler_name, en.battler_hue).dup
set[0].y = 0+XRXS65A::Y
set[0].z = 17
set[0].zoom_x = 64.0/set[0].bitmap.height
set[0].zoom_y = 64.0/set[0].bitmap.height
end
end
end
end
#--------------------------------------------------------------------------
# ○ 可視状態
#--------------------------------------------------------------------------
def visible=(b)
@base.visible = b
@icon_set.each{|set| set[0].visible = b }
end
#--------------------------------------------------------------------------
# ○ 解放
#--------------------------------------------------------------------------
def dispose
@base.dispose
@kk.dispose
@icon_set.each{|set| set[0].dispose }
end
end
#==============================================================================
#其它的重定义部分
#==============================================================================
#战斗中敌人变身追加change过程
class Interpreter
def command_336
# 获取敌人
enemy = $game_troop.enemies[@parameters[0]]
# 变身处理
if enemy != nil
enemy.transform(@parameters[1])
end
$scene.cp_meters.change(enemy)#新增,调用change #zzzzzzzzzzzzzzzzzzzzzzzzzzzzz
# 继续
return true
end
end
#==============================================================================
#RTAB追加变数,重定义
#==============================================================================
class Scene_Battle
attr_accessor :cp_meters#zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
#--------------------------------------------------------------------------
# ○ 重新定义main过程,追加CP条的生成,包括“RTAB连击数-计算部分”里对此部分的追加定义,如果脱离“RTAB连击数-计算部分”,请删除标记了"#$$$$$$$$$$"的三个语句
#--------------------------------------------------------------------------
#--------------------------------------------------------------------------
# ● メイン処理
#--------------------------------------------------------------------------
def main
# 戦闘用の各種一時データを初期化
Graphics.frame_rate = 60 #特别说明,这行就是RTAB战斗时加速的原因
$game_temp.in_battle = true
$game_temp.battle_turn = 0
$game_temp.battle_event_flags.clear
$game_temp.battle_abort = false
$game_temp.battle_main_phase = false
$game_temp.battleback_name = $game_map.battleback_name
$game_temp.forcing_battler = nil
# バトルイベント用インタプリタを初期化
$game_system.battle_interpreter.setup(nil, 0)
# トループを準備
@troop_id = $game_temp.battle_troop_id
$game_troop.setup(@troop_id)
atb_setup
# アクターコマンドウィンドウを作成
#==============================================================================
#RTAB观光游第三站,战斗菜单增加逃跑选项
#==============================================================================
s1 = $data_system.words.attack
s2 = $data_system.words.skill
s3 = $data_system.words.guard
s4 = $data_system.words.item
s5 = "逃跑"
@actor_command_window = Window_Command.new(160, [s1, s2, s3, s4,s5])
# @actor_command_window.y = 160
@actor_command_window.y = 128
@actor_command_window.back_opacity = 160
@actor_command_window.active = false
@actor_command_window.visible = false
#==============================================================================
# その他のウィンドウを作成
#------------------------------------------------------------------------------
#RTAB观光游第一站,去除“战斗/逃跑”选项部分
# @party_command_window = Window_PartyCommand.new
#------------------------------------------------------------------------------
@help_window = Window_Help.new
@help_window.back_opacity = 160
@help_window.visible = false
@status_window = Window_BattleStatus.new
@message_window = Window_Message.new
@cp_meters = CP_Meters.new#zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
@combohit_window = Window_ComboHit.new#$$$$$$$$$$$$$$$$$$$$$$$$$
# スプライトセットを作成
@spriteset = Spriteset_Battle.new
# ウェイトカウントを初期化
@wait_count = 0
# トランジション実行
if $data_system.battle_transition == ""
Graphics.transition(20)
else
Graphics.transition(40, "Graphics/Transitions/" +
$data_system.battle_transition)
end
# プレバトルフェーズ開始
start_phase1
# メインループ
loop do
# ゲーム画面を更新
Graphics.update
# 入力情報を更新
Input.update
# フレーム更新
update
# 画面が切り替わったらループを中断
if $scene != self
break
end
end
# マップをリフレッシュ
$game_map.refresh
# トランジション準備
Graphics.freeze
# ウィンドウを解放
@actor_command_window.dispose
@cp_meters.dispose#zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
# ウィンドウを解放
@combohit_window.dispose#$$$$$$$$$$$$$$$$$$$$$$$$$
# コンボクリア
$game_party.actors.each {|actor| actor.combohit_clear}#$$$$$$$$$$$$$$$$$$$$$$$$$
#------------------------------------------------------------------------------
#RTAB观光游第一站,去除“战斗/逃跑”选项部分
# @party_command_window.dispose
#------------------------------------------------------------------------------
@help_window.dispose
@status_window.dispose
@message_window.dispose
if @skill_window != nil
@skill_window.dispose
end
if @item_window != nil
@item_window.dispose
end
if @result_window != nil
@result_window.dispose
end
# スプライトセットを解放
@spriteset.dispose
# タイトル画面に切り替え中の場合
if $scene.is_a?(Scene_Title)
# 画面をフェードアウト
Graphics.transition
Graphics.freeze
end
# 戦闘テストからゲームオーバー画面以外に切り替え中の場合
if $BTEST and not $scene.is_a?(Scene_Gameover)
$scene = nil
end
end
#
#==============================================================================
#选择敌人时的重定义,这是为了实现选择敌人时的变色效果,由于这是针对“RTAB战斗特效” 重定义,而请不要脱离“RTAB战斗特效”
#==============================================================================
#--------------------------------------------------------------------------
# ● 开始选择敌人#(武器范围定义必须)(1.03修正显示BUG)
#--------------------------------------------------------------------------
def start_enemy_select
for i in $game_troop.enemies
break if i.exist?
end#得到1位置的敌人
$scene.cp_meters.refresh(i,true) #zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
@active_actor.set_xrxs19_special_scope(@active_actor.equip_element_set) if @skill_window == nil
@active_actor.set_xrxs19_special_scope(@active_actor.skill_element_set(@skill)) if @skill_window != nil
if @active_actor.current_action.scope_force == 3
# 生成敌人箭头
@actor_arrow = Arrow_Actor.new(@spriteset.viewport2)
# 关联帮助窗口
@actor_arrow.help_window = @help_window
else
# 生成敌人箭头
@enemy_arrow = Arrow_Enemy.new(@spriteset.viewport1)
# 关联帮助窗口
@enemy_arrow.help_window = @help_window
end
# 无效化角色指令窗口
@actor_command_window.active = false
@actor_command_window.visible = false
end
#--------------------------------------------------------------------------
# ● 结束选择敌人#武器范围定义必须)
#--------------------------------------------------------------------------
def end_enemy_select
$scene.cp_meters.refresh(nil,true) #zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
# 释放敌人箭头
@enemy_arrow.dispose if @enemy_arrow != nil
@actor_arrow.dispose if @actor_arrow != nil
@enemy_arrow = nil
@actor_arrow = nil
# 指令为 [战斗] 的情况下
if @actor_command_window.index == 0
# 有效化角色指令窗口
@actor_command_window.active = true
@actor_command_window.visible = true
# 隐藏帮助窗口
@help_window.visible = false
end
end
end
#==============================================================================
#修改RTAB默认的刷新方法
#==============================================================================
class Window_BattleStatus < Window_Base
def at_refresh(number = 0)
$scene.cp_meters.refresh
end
end
#==============================================================================
#清除RTAB的描绘AT条过程
#==============================================================================
class Window_Base < Window
def draw_actor_atg(actor, x, y, width = 144)
end
end
#==============================================================================
# ■ Arrow_Enemy
#------------------------------------------------------------------------------
# 重新定义的选择敌人箭头,也是为了实现择敌人时的变色效果
#==============================================================================
class Arrow_Enemy < Arrow_Base
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
# $scene.cp_meters.refresh(enemy)
super
# 存在しないエネミーを指していたら飛ばす
$game_troop.enemies.size.times do
break if self.enemy.exist?
@index += 1
@index %= $game_troop.enemies.size
end
# カーソル右
if Input.repeat?(Input::RIGHT)
$game_system.se_play($data_system.cursor_se)
$game_troop.enemies.size.times do
@index += 1
@index %= $game_troop.enemies.size
break if self.enemy.exist?
end
$scene.camera = "select"
zoom = 1 / self.enemy.zoom
$scene.spriteset.screen_target(self.enemy.attack_x(zoom) * 0.75,
self.enemy.attack_y(zoom) * 0.75, zoom)
$scene.cp_meters.refresh(enemy,true) #zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
end
# カーソル左
if Input.repeat?(Input::LEFT)
$game_system.se_play($data_system.cursor_se)
$game_troop.enemies.size.times do
@index += $game_troop.enemies.size - 1
@index %= $game_troop.enemies.size
break if self.enemy.exist?
end
$scene.camera = "select"
zoom = 1 / self.enemy.zoom
$scene.spriteset.screen_target(self.enemy.attack_x(zoom) * 0.75,
self.enemy.attack_y(zoom) * 0.75, zoom)
$scene.cp_meters.refresh(enemy,true) #zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
end
# スプライトの座標を設定
if self.enemy != nil
self.x = self.enemy.screen_x
self.y = self.enemy.screen_y
end
end
end
复制代码
作者:
cftx
时间:
2007-8-27 23:30
标题:
整合成统一CP条的RTAB 第二版(插件版)
发现了第一版还残留了不少问题{/gg}...............重新发布一个版本
主要变更:
1.原来的范例工程版里,对多个地方都有修改,使用较为麻烦,这个版本将所有的修改都单独拿了出来,直接作为RTAB的一个插件,插入所有RTAB插件之前就可以使用,也方便了和其它RTAB结合,目前测试和RTAB0.17整合版兼容,其它版未测试。
要注意的是,RTAB连击计算之类的脚本都对RTAB进行了不少重定义,这个插件版和其它插件整合了,直接包括了其它插件的重定义内容,如果你的RTAB脱离了这些插件的话,需要对CP条脚本进行一些修改,内有说明。
2.针对原来用缩小的战斗图当图标造成画面乱的问题,加入了一个自动用行走图做图标的功能(根据战斗图色调也会自动变色),但是这是针对默认RTP的,因为默认RTP的每个怪物战斗图都有对应的同名行走图。如果你导入了新的战斗图,你就还需要准备与其同名的行走图才能使用这个功能。当然这个功能是可以开关的。
效果截图
3.清除了之前的残留BUG,优化了代码,加入了一个调节刷新频率减少掉帧的功能来适应老机器....
使用方法:直接将下面这个脚本插入RTAB及其所有插件之前(下面),需要的素材,请下载范例得到.........
4.加入了防御时变黄色的标志,修正了AT伤害让图标跑出行动条的问题,现在,AT大于100或者小于0时会停留在行动条最右边或者最左边
范例(第一版的范例存在一些问题.....)
http://rpg.blue/upload_program/files/RTAB_sixRice_017b_cp_2nd.rar
# ▼▲▼ XRXS65A. CP制御ターンシステム「シンセ・ゲージ」 ▼▲▼ built201202
# by 桜雅 在土
#==============================================================================
# □ カスタマイズポイント
#==============================================================================
class XRXS65A
#--------------------------------------------------------------------------
# 「シンセ・ゲージ」
#--------------------------------------------------------------------------
SKIN = "123" # スキン
X = 2 # X 座標
Y = 0 # Y 座標
CHA = true #是否使用行走图来代替战斗图,建议使用默认RTP的人使用,否则需要给每个怪物配套与战斗图同名的行走图,色调将根据战斗图色调自动变更
N=1#隔几帧才刷新,这个数越大可以加快效率,但是图标的移动会看起来“一跳一跳”,不推荐大于10。
end
#==============================================================================
# --- CP メーターをまとめて管理するクラス、表示関係はすべてココ --- [再定義]
#==============================================================================
class CP_Meters
#--------------------------------------------------------------------------
# ○ オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
# シンセゲージの生成
@kk = Sprite.new
@kk.bitmap = RPG::Cache.windowskin("456").dup
@kk.x = 596
@kk.y = 0
@kk.z = 17
@base = Sprite.new
@base.bitmap = RPG::Cache.windowskin(XRXS65A::SKIN).dup
@base.x = XRXS65A::X
@base.y = XRXS65A::Y+20
@base.z = 16
@width = @base.bitmap.width
@height = @base.bitmap.height
@icon_set = []
refresh
end
#--------------------------------------------------------------------------
# ○ リフレッシュ
#--------------------------------------------------------------------------
def refresh(enemy=nil,force=false)
if Graphics.frame_count % XRXS65A::N == 0 or force==true
# 生成すべきバトラーの取得
need_initializes = []
for battler in $game_party.actors + $game_troop.enemies
exist = false
for set in @icon_set
exist |= (set[1] == battler)
end
need_initializes.push(battler) unless exist
end
for battler in need_initializes
iconname = nil
if battler.is_a?(Game_Actor)
en = $data_actors[battler.id]
else
en = $data_enemies[battler.id]
end
sprite = Sprite.new
if XRXS65A::CHA==true
bitmap = RPG::Cache.character(en.battler_name, en.battler_hue).dup
cw=bitmap.width/4
ch=bitmap.height/4
src_rect = Rect.new(0, 0, cw, ch)
sprite.y = 32+XRXS65A::Y
sprite.z = 17
sprite.bitmap = Bitmap.new(cw, ch)
sprite.bitmap.blt(0, 0, bitmap, src_rect)
sprite.oy=ch/2
sprite.ox=cw/2-25
else
sprite.bitmap = RPG::Cache.battler(en.battler_name, en.battler_hue).dup
sprite.y = 0+XRXS65A::Y
sprite.z = 17
sprite.zoom_x = 64.0/sprite.bitmap.height
sprite.zoom_y = 64.0/sprite.bitmap.height
end
# item=[sprite,name]
@icon_set.push([sprite, battler])
end
# 更新
for set in @icon_set
set[0].color = Color.new(0,0,0,0)
set[0].visible = true if set[0].visible ==false
if set[1].rtp>0
set[0].color = Color.new(0,255,255,128)
set[0].x = XRXS65A::X + @width * [[set[1].rt,0].max,set[1].rtp].min / set[1].rtp - 12
set[0].visible = false if set[1].dead? or !set[1].exist?
elsif set[1].guarding?
set[0].color = Color.new(255,255,0,128)
set[0].x = XRXS65A::X + @width * [[set[1].atp,0].max,100].min / 100 - 12
set[0].visible = false if set[1].dead? or !set[1].exist?
else
set[0].x = XRXS65A::X + @width * [[set[1].atp,0].max,100].min / 100 - 12
set[0].visible = false if set[1].dead? or !set[1].exist?
end
if set[1].atp>=100 and set[1].rtp==0
set[0].color = Color.new(255,255,255,128)
elsif set[1]==enemy
set[0].color = Color.new(255,0,0,128)
end
end
end
end
#----------敌人变身时的处理
def change(enemy)
for set in @icon_set
if set[1] == enemy
if enemy.is_a?(Game_Actor)
en = $data_actors[enemy.id]
else
en = $data_enemies[enemy.id]
end
if XRXS65A::CHA==true
bitmap = RPG::Cache.character(en.battler_name, en.battler_hue).dup
cw=bitmap.width/4
ch=bitmap.height/4
src_rect = Rect.new(0, 0, cw, ch)
set[0].bitmap.dispose
set[0].bitmap = Bitmap.new(cw, ch)
set[0].bitmap.blt(0, 0, bitmap, src_rect)
set[0].oy=ch/2
set[0].ox=cw/2-25
set[0].y = 32+XRXS65A::Y
set[0].z = 17
else
set[0].bitmap = RPG::Cache.battler(en.battler_name, en.battler_hue).dup
set[0].y = 0+XRXS65A::Y
set[0].z = 17
set[0].zoom_x = 64.0/set[0].bitmap.height
set[0].zoom_y = 64.0/set[0].bitmap.height
end
end
end
end
#--------------------------------------------------------------------------
# ○ 可視状態
#--------------------------------------------------------------------------
def visible=(b)
@base.visible = b
@icon_set.each{|set| set[0].visible = b }
end
#--------------------------------------------------------------------------
# ○ 解放
#--------------------------------------------------------------------------
def dispose
@base.dispose
@kk.dispose
@icon_set.each{|set| set[0].dispose }
end
end
#==============================================================================
#其它的重定义部分
#==============================================================================
#战斗中敌人变身追加change过程
class Interpreter
def command_336
# 获取敌人
enemy = $game_troop.enemies[@parameters[0]]
# 变身处理
if enemy != nil
enemy.transform(@parameters[1])
end
$scene.cp_meters.change(enemy)#新增,调用change #zzzzzzzzzzzzzzzzzzzzzzzzzzzzz
# 继续
return true
end
end
#==============================================================================
#RTAB追加变数,重定义
#==============================================================================
class Scene_Battle
attr_accessor :cp_meters#zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
#--------------------------------------------------------------------------
# ○ 重新定义main过程,追加CP条的生成,包括“RTAB连击数-计算部分”里对此部分的追加定义,如果脱离“RTAB连击数-计算部分”,请删除标记了"#$$$$$$$$$$"的三个语句
#--------------------------------------------------------------------------
#--------------------------------------------------------------------------
# ● メイン処理
#--------------------------------------------------------------------------
def main
# 戦闘用の各種一時データを初期化
Graphics.frame_rate = 60 #特别说明,这行就是RTAB战斗时加速的原因
$game_temp.in_battle = true
$game_temp.battle_turn = 0
$game_temp.battle_event_flags.clear
$game_temp.battle_abort = false
$game_temp.battle_main_phase = false
$game_temp.battleback_name = $game_map.battleback_name
$game_temp.forcing_battler = nil
# バトルイベント用インタプリタを初期化
$game_system.battle_interpreter.setup(nil, 0)
# トループを準備
@troop_id = $game_temp.battle_troop_id
$game_troop.setup(@troop_id)
atb_setup
# アクターコマンドウィンドウを作成
#==============================================================================
#RTAB观光游第三站,战斗菜单增加逃跑选项
#==============================================================================
s1 = $data_system.words.attack
s2 = $data_system.words.skill
s3 = $data_system.words.guard
s4 = $data_system.words.item
s5 = "逃跑"
@actor_command_window = Window_Command.new(160, [s1, s2, s3, s4,s5])
# @actor_command_window.y = 160
@actor_command_window.y = 128
@actor_command_window.back_opacity = 160
@actor_command_window.active = false
@actor_command_window.visible = false
#==============================================================================
# その他のウィンドウを作成
#------------------------------------------------------------------------------
#RTAB观光游第一站,去除“战斗/逃跑”选项部分
# @party_command_window = Window_PartyCommand.new
#------------------------------------------------------------------------------
@help_window = Window_Help.new
@help_window.back_opacity = 160
@help_window.visible = false
@status_window = Window_BattleStatus.new
@message_window = Window_Message.new
@cp_meters = CP_Meters.new#zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
@combohit_window = Window_ComboHit.new#$$$$$$$$$$$$$$$$$$$$$$$$$
# スプライトセットを作成
@spriteset = Spriteset_Battle.new
# ウェイトカウントを初期化
@wait_count = 0
# トランジション実行
if $data_system.battle_transition == ""
Graphics.transition(20)
else
Graphics.transition(40, "Graphics/Transitions/" +
$data_system.battle_transition)
end
# プレバトルフェーズ開始
start_phase1
# メインループ
loop do
# ゲーム画面を更新
Graphics.update
# 入力情報を更新
Input.update
# フレーム更新
update
# 画面が切り替わったらループを中断
if $scene != self
break
end
end
# マップをリフレッシュ
$game_map.refresh
# トランジション準備
Graphics.freeze
# ウィンドウを解放
@actor_command_window.dispose
@cp_meters.dispose#zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
# ウィンドウを解放
@combohit_window.dispose#$$$$$$$$$$$$$$$$$$$$$$$$$
# コンボクリア
$game_party.actors.each {|actor| actor.combohit_clear}#$$$$$$$$$$$$$$$$$$$$$$$$$
#------------------------------------------------------------------------------
#RTAB观光游第一站,去除“战斗/逃跑”选项部分
# @party_command_window.dispose
#------------------------------------------------------------------------------
@help_window.dispose
@status_window.dispose
@message_window.dispose
if @skill_window != nil
@skill_window.dispose
end
if @item_window != nil
@item_window.dispose
end
if @result_window != nil
@result_window.dispose
end
# スプライトセットを解放
@spriteset.dispose
# タイトル画面に切り替え中の場合
if $scene.is_a?(Scene_Title)
# 画面をフェードアウト
Graphics.transition
Graphics.freeze
end
# 戦闘テストからゲームオーバー画面以外に切り替え中の場合
if $BTEST and not $scene.is_a?(Scene_Gameover)
$scene = nil
end
end
#
#==============================================================================
#选择敌人时的重定义,这是为了实现选择敌人时的变色效果,由于这是针对“RTAB战斗特效” 重定义,而请不要脱离“RTAB战斗特效”
#==============================================================================
#--------------------------------------------------------------------------
# ● 开始选择敌人#(武器范围定义必须)(1.03修正显示BUG)
#--------------------------------------------------------------------------
def start_enemy_select
for i in $game_troop.enemies
break if i.exist?
end#得到1位置的敌人
$scene.cp_meters.refresh(i,true) #zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
@active_actor.set_xrxs19_special_scope(@active_actor.equip_element_set) if @skill_window == nil
@active_actor.set_xrxs19_special_scope(@active_actor.skill_element_set(@skill)) if @skill_window != nil
if @active_actor.current_action.scope_force == 3
# 生成敌人箭头
@actor_arrow = Arrow_Actor.new(@spriteset.viewport2)
# 关联帮助窗口
@actor_arrow.help_window = @help_window
else
# 生成敌人箭头
@enemy_arrow = Arrow_Enemy.new(@spriteset.viewport1)
# 关联帮助窗口
@enemy_arrow.help_window = @help_window
end
# 无效化角色指令窗口
@actor_command_window.active = false
@actor_command_window.visible = false
end
#--------------------------------------------------------------------------
# ● 结束选择敌人#武器范围定义必须)
#--------------------------------------------------------------------------
def end_enemy_select
$scene.cp_meters.refresh(nil,true) #zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
# 释放敌人箭头
@enemy_arrow.dispose if @enemy_arrow != nil
@actor_arrow.dispose if @actor_arrow != nil
@enemy_arrow = nil
@actor_arrow = nil
# 指令为 [战斗] 的情况下
if @actor_command_window.index == 0
# 有效化角色指令窗口
@actor_command_window.active = true
@actor_command_window.visible = true
# 隐藏帮助窗口
@help_window.visible = false
end
end
end
#==============================================================================
#修改RTAB默认的刷新方法
#==============================================================================
class Window_BattleStatus < Window_Base
def at_refresh(number = 0)
$scene.cp_meters.refresh
end
end
#==============================================================================
#清除RTAB的描绘AT条过程
#==============================================================================
class Window_Base < Window
def draw_actor_atg(actor, x, y, width = 144)
end
end
#==============================================================================
# ■ Arrow_Enemy
#------------------------------------------------------------------------------
# 重新定义的选择敌人箭头,也是为了实现择敌人时的变色效果
#==============================================================================
class Arrow_Enemy < Arrow_Base
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
# $scene.cp_meters.refresh(enemy)
super
# 存在しないエネミーを指していたら飛ばす
$game_troop.enemies.size.times do
break if self.enemy.exist?
@index += 1
@index %= $game_troop.enemies.size
end
# カーソル右
if Input.repeat?(Input::RIGHT)
$game_system.se_play($data_system.cursor_se)
$game_troop.enemies.size.times do
@index += 1
@index %= $game_troop.enemies.size
break if self.enemy.exist?
end
$scene.camera = "select"
zoom = 1 / self.enemy.zoom
$scene.spriteset.screen_target(self.enemy.attack_x(zoom) * 0.75,
self.enemy.attack_y(zoom) * 0.75, zoom)
$scene.cp_meters.refresh(enemy,true) #zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
end
# カーソル左
if Input.repeat?(Input::LEFT)
$game_system.se_play($data_system.cursor_se)
$game_troop.enemies.size.times do
@index += $game_troop.enemies.size - 1
@index %= $game_troop.enemies.size
break if self.enemy.exist?
end
$scene.camera = "select"
zoom = 1 / self.enemy.zoom
$scene.spriteset.screen_target(self.enemy.attack_x(zoom) * 0.75,
self.enemy.attack_y(zoom) * 0.75, zoom)
$scene.cp_meters.refresh(enemy,true) #zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
end
# スプライトの座標を設定
if self.enemy != nil
self.x = self.enemy.screen_x
self.y = self.enemy.screen_y
end
end
end
复制代码
作者:
cftx
时间:
2007-8-28 00:50
刚刚发现第一版的范例上传错了,存在致命BUG,汗{/gg}
希望哪位版主把主页上的链接改到这里来...........
作者:
jy02316031
时间:
2007-8-28 01:14
{/hx}这个好耶~~~{/hx}{/hx}
作者:
cftx
时间:
2007-8-28 17:23
{/pz}更新..........简化了一下处理,写清了注释,加入吟唱魔法和开始行动的变色..........
作者:
Eclair
时间:
2008-1-26 03:37
提示:
作者被禁止或删除 内容自动屏蔽
作者:
Eclair
时间:
2008-1-26 03:47
提示:
作者被禁止或删除 内容自动屏蔽
作者:
xgty7788
时间:
2008-3-15 22:14
这到底怎么用啊?
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1