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

Project1

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

求教完美的战斗选项

 关闭 [复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

小神

梦石
0
星屑
50
在线时间
2 小时
注册时间
2007-7-13
帖子
400
跳转到指定楼层
1
发表于 2007-8-3 18:47:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
头像被屏蔽

Lv1.梦旅人 (禁止发言)

小神

梦石
0
星屑
50
在线时间
2 小时
注册时间
2007-7-13
帖子
400
2
 楼主| 发表于 2007-8-3 18:47:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽

Lv1.梦旅人

梦石
0
星屑
50
在线时间
192 小时
注册时间
2007-7-14
帖子
2746
3
发表于 2007-8-3 18:49:12 | 只看该作者
有点麻烦,但不要紧,只要好好改脚本就行了。
先在Scene_Battle 2的40行左右找到以下脚本
    # 有效化同伴指令窗口
    @party_command_window.active = true
    @party_command_window.visible = true
把以上两个true都改为false,或者全部删掉。


在69行左右找到以下脚本
        when 1  # 逃跑
        # 不能逃跑的情况下
        if $game_temp.battle_can_escape == false
          # 演奏冻结 SE
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 逃走处理
        update_phase2_escape
      end
      return
    end
在以上脚本的每一行前添上注释号#,也可以把全部删掉,凭个人喜好。这样就可以清除掉“战斗/逃跑”选项


然后,在Main插入以下脚本,就可以添加“装备”和“逃跑”两个选项,个人建议用此脚本的同时也用鼠标支持的脚本,这样战斗的手感会好多了。

#==========================================================
# 可直接添在 Scene_Battle (分割定义 3)下,或者在Main插入
#==========================================================
class Scene_Battle
#----------------------------------------------------------
# ● メイン處理
#----------------------------------------------------------
def main
# 戰鬥用の各種一時データを初期化
$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)
# アクターコマンドウィンドウを作成
s1 = $data_system.words.attack
s2 = $data_system.words.skill
s3 = $data_system.words.guard
s4 = $data_system.words.item
s5 = $data_system.words.equip #装备
@actor_command_window = Window_Command.new(140, [s1, s2, s3, s4, s5,"逃跑"])
#@actor_command_window = Window_Command.new(160, [s1, s2, s3, s4])
@actor_command_window.y = 96 #160
@actor_command_window.back_opacity = 160
@actor_command_window.active = false
@actor_command_window.visible = false
# その他のウィンドウを作成
@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
# スプライトセットを作成
@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
@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

#--------------------------------------------------
# ● フレーム更新 (アクターコマンドフェーズ)
#--------------------------------------------------
def update_phase3
# エネミーアローが有效の場合
if @enemy_arrow != nil
update_phase3_enemy_select
# アクターアローが有效の場合
elsif @actor_arrow != nil
update_phase3_actor_select
# スキルウィンドウが有效の場合
elsif @skill_window != nil
update_phase3_skill_select
# アイテムウィンドウが有效の場合
elsif @item_window != nil
update_phase3_item_select
# ★追加 裝備變更ウィンドウが有效の場合
elsif @right_window != nil
update_phase3_equip_select
# アクターコマンドウィンドウが有效の場合
elsif @actor_command_window.active
update_phase3_basic_command
end
end
#-------------------------------------------------------------
# ● フレーム更新 (アクターコマンドフェーズ : 基本コマンド)
#-------------------------------------------------------------
def update_phase3_basic_command
# B ボタンが押された場合
if Input.trigger?(Input::B)
# キャンセル SE を演奏
$game_system.se_play($data_system.cancel_se)
# 前のアクターのコマンド入力へ
phase3_prior_actor
return
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
# アクターコマンドウィンドウのカーソル位置で分岐
case @actor_command_window.index
when 0 # 攻擊
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# アクションを設定
@active_battler.current_action.kind = 0
@active_battler.current_action.basic = 0
# エネミーの選擇を開始
start_enemy_select
when 1 # スキル
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# アクションを設定
@active_battler.current_action.kind = 1
# スキルの選擇を開始
start_skill_select
when 2 # 防禦
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# アクションを設定
@active_battler.current_action.kind = 0
@active_battler.current_action.basic = 1
# 次のアクターのコマンド入力へ
phase3_next_actor
when 3 # アイテム
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# アクションを設定
@active_battler.current_action.kind = 2
# アイテムの選擇を開始
start_item_select
when 4 # 裝備
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# アクションを設定
@active_battler.current_action.kind = 0
# アイテムの選擇を開始
start_equip_select
when 5
  if $game_temp.battle_can_escape == false
          # 演奏冻结 SE
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 逃走处理
  update_phase2_escape
end
return
end
end
#--------------------------------------------------------------------------
# ★● 追加 フレーム更新 (アクターコマンドフェーズ : 變更裝備選擇)
#--------------------------------------------------------------------------
def update_phase3_equip_select
# スキルウィンドウを可視狀態にする
@right_window.visible = true

# ウィンドウを更新
@right_window.update
if @right_window.index != @now_right_window
@now_right_window =@right_window.index
if @equip_item_window.index == -1
@equip_item_window.index = 0
@equip_item_window.refresh
@equip_item_window.index = -1
end
end
@equip_item_window.update
equip_item_window_select

# アイテムウィンドウがアクティブの場合
if @equip_item_window.active
update_phase3_equip_i_select
return
end

# B ボタンが押された場合
if Input.trigger?(Input::B)
# キャンセル SE を演奏
$game_system.se_play($data_system.cancel_se)
# 裝備選擇を終了
end_equip_select
return
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
# 裝備固定の場合
if @active_battler.equip_fix?(@right_window.index)
# ブザー SE を演奏
$game_system.se_play($data_system.buzzer_se)
return
end
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# アイテムウィンドウをアクティブ化
@right_window.active = false
@equip_item_window.active = true
@equip_item_window.index = 0
@now_right_window = -1
return
end
end
#--------------------------------------------------------------------------
# ★● 追加 フレーム更新 (アクターコマンドフェーズ : 裝備アイテム選擇)
#--------------------------------------------------------------------------
def update_phase3_equip_i_select
item1 = @right_window.item
item2 = @equip_item_window.item
last_hp = @active_battler.hp
last_sp = @active_battler.sp
@active_battler.equip(@right_window.index, item2 == nil ? 0 : item2.id)
new_atk = @active_battler.atk
new_pdef = @active_battler.pdef
new_mdef = @active_battler.mdef
@active_battler.equip(@right_window.index, item1 == nil ? 0 : item1.id)
@active_battler.hp = last_hp
@active_battler.sp = last_sp
@left_window.set_new_parameters(new_atk, new_pdef, new_mdef)
# B ボタンが押された場合
if Input.trigger?(Input::B)
# キャンセル SE を演奏
$game_system.se_play($data_system.cancel_se)
# 裝備アイテム選擇を終了
@now_item_window = -1

@right_window.active = true
@equip_item_window.active = false
@equip_item_window.index = -1
return
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
$game_system.se_play($data_system.equip_se)
# アイテムウィンドウで現在選擇されているデータを取得
item = @equip_item_window.item
# 裝備を變更
@active_battler.equip(@right_window.index, item == nil ? 0 : item.id)
# ライトウィンドウをアクティブ化
@right_window.active = true
@equip_item_window.active = false
@equip_item_window.index = -1
# ライトウィンドウ、アイテムウィンドウの內容を再作成
@right_window.refresh
@equip_item_window.refresh
@left_window.refresh
return
end
end
#----------------------------------------------------
# ★● 追加 裝備選擇開始
#----------------------------------------------------
def start_equip_select
# 裝備ウィンドウを作成
#パラメータを呼び出したい時は註釋消す
@left_window = Window_EquipLeft.new(@active_battler)
@right_window = Window_EquipRight.new(@active_battler)
@item_window1 = Window_EquipItem.new(@active_battler, 0)
@item_window2 = Window_EquipItem.new(@active_battler, 1)
@item_window3 = Window_EquipItem.new(@active_battler, 2)
@item_window4 = Window_EquipItem.new(@active_battler, 3)
@item_window5 = Window_EquipItem.new(@active_battler, 4)
@item_window1.z = 9999
@item_window2.z = 9999
@item_window3.z = 9999
@item_window4.z = 9999
@item_window5.z = 9999
# ヘルプウィンドウを關連付け
@right_window.help_window = @help_window
@item_window1.help_window = @help_window
@item_window2.help_window = @help_window
@item_window3.help_window = @help_window
@item_window4.help_window = @help_window
@item_window5.help_window = @help_window

@now_right_window = -1
@right_window.index = 0
equip_item_window_select
# アクターコマンドウィンドウを無效化
@actor_command_window.active = false
@actor_command_window.visible = false
end
#---------------------------------------------------
# ★● 追加 裝備選擇終了
#---------------------------------------------------
def end_equip_select
# アイテムウィンドウを解放
#パラメータを呼び出したい時は註釋消す
@left_window.dispose
@right_window.dispose
@item_window1.dispose
@item_window2.dispose
@item_window3.dispose
@item_window4.dispose
@item_window5.dispose
@right_window= nil
@item_window1= nil
@item_window2= nil
@item_window3= nil
@item_window4= nil
@item_window5= nil
# ヘルプウィンドウを隱す
@help_window.visible = false
# アクターコマンドウィンドウを有效化
@actor_command_window.active = true
@actor_command_window.visible = true
end
#----------------------------------------------------
# ★● 追加 裝備アイテムウインドウのチェック
#----------------------------------------------------
def equip_item_window_select
  @left_window.set_new_parameters(nil, nil, nil)
# アイテムウィンドウの可視狀態設定
@item_window1.visible = (@right_window.index == 0)
@item_window2.visible = (@right_window.index == 1)
@item_window3.visible = (@right_window.index == 2)
@item_window4.visible = (@right_window.index == 3)
@item_window5.visible = (@right_window.index == 4)
# ーーー★追加(註釋消すとアクセサリ1つ增加)
@item_window5.visible = (@right_window.index == 4) || (@right_window.index == 5)
# ーーー終わり
# 現在のアイテムウィンドウを @item_window に設定
case @right_window.index
when 0
@equip_item_window = @item_window1
when 1
@equip_item_window = @item_window2
when 2
@equip_item_window = @item_window3
when 3
@equip_item_window = @item_window4
when 4
@equip_item_window = @item_window5
# ーーー★追加(註釋消すとアクセサリ1つ增加)
when 5
@equip_item_window = @item_window5
when 6
  if $game_temp.battle_can_escape == false
          # 演奏冻结 SE
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 逃走处理
  update_phase2_escape
end
end
end
#=====================================================
#此脚本来自网上,有过修改
#=====================================================
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
192 小时
注册时间
2007-7-14
帖子
2746
4
发表于 2007-8-4 17:38:11 | 只看该作者
我本来发了一张截图,可是不知到了哪里,以上的脚本你就拿去用吧~~~~
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

小神

梦石
0
星屑
50
在线时间
2 小时
注册时间
2007-7-13
帖子
400
5
 楼主| 发表于 2007-8-4 19:00:14 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
192 小时
注册时间
2007-7-14
帖子
2746
6
发表于 2007-8-5 18:07:38 | 只看该作者
LZ,不用客气,不过连张好人卡都不给我,可知道我现在连一张好人卡都没得到啊~~(说笑的,没得到就没得到,只能是下次哦~)推荐以上脚本给广大站友们~~~~~~~~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-6-29 02:15

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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