Project1
标题:
如何让指定角色不离队?
[打印本页]
作者:
guoyq1988
时间:
2014-2-12 13:01
标题:
如何让指定角色不离队?
本帖最后由 guoyq1988 于 2014-2-12 13:06 编辑
请问用了下面的脚本,怎么让指定的角色不离队(不变为休战)?
#-----------------------------------------------------------------------------
# 队伍系统 Ver 1.0 (附带整合游戏主菜单)
#-----------------------------------------------------------------------------
# 类似于Aveyond的队伍系统(根据阿月系列的游戏产生的灵感)
# 作者:RyanBern
#-----------------------------------------------------------------------------
# 功能特色:
#-----------------------------------------------------------------------------
# 1.更改队伍中成员的最大数量,有四名出战队员,但是替补队员可以有很多个。
# 2.改编自默认脚本,极大程度上和原来脚本兼容,应该没有很严重的冲突。
# 3.为队伍增加“领队”角色,作为“领队”的成员在地图上显示他的图形,“领队”必须出战。
# 4.只有出战队员才能获得经验奖励,替补队员不能获得作战奖励。
# 5.如果队伍的出战队员全部阵亡,则直接判定玩家全灭,不管有无替补队员。
# 6.事件编译器中,对全体同伴的处理均包括对替补队员的处理。
#-----------------------------------------------------------------------------
# 使用方法:
#-----------------------------------------------------------------------------
# 1.粘贴到默认脚本后面,Main组前面即可。
# 2.作为leader的成员必须是作战队员,如果想替换下该队员,请先改变leader。
# 3.被换下的成员会自动成为替补队员名单的最后一名。
# 4.游戏系统因人而异,如果你改过Scene_Menu,可能会和你更改的脚本冲突。
# 这个我没有办法做成放到每一个游戏系统都合适的脚本,还请自行修改。
# 如果没改过太多的脚本,没有问题。
#-----------------------------------------------------------------------------
class Game_Party
attr_accessor :leader
attr_accessor :reserved_actors
alias old_ini initialize
def initialize
@leader = nil
@reserved_actors = []
old_ini
end
# 重置@reserved_actors
def adjust
if @reserved_actors == nil
@reserved_actors = []
end
end
#--------------------------------------------------------------------------
# 设置领队
# index : 角色在@actors中的序号,注意并非角色在数据库中的id
#--------------------------------------------------------------------------
def set_leader(index)
@leader = @actors[index]
end
#--------------------------------------------------------------------------
# 获取领队在@actors的index
#--------------------------------------------------------------------------
def leader_judge
for i in
[email protected]
if @leader.id == @actors[i].id
return i
end
end
end
#--------------------------------------------------------------------------
# ● 加入同伴
# actor_id : 角色 ID
#--------------------------------------------------------------------------
def add_actor(actor_id)
adjust
# 获取角色
actor = $game_actors[actor_id]
# 除非本角色不在队伍中
unless @actors.include?(actor) or @reserved_actors.include?(actor)
# 添加角色
if @actors.size < 4
# 人数未满就放到@actors中
@actors.push(actor)
else
# 人数满了就放到@reserved_actors中
@reserved_actors.push(actor)
end
# 设置领队(队伍从无人变有人)
if @actors.size == 1
@leader = @actors[0]
end
# 还原主角
$game_player.refresh
end
end
#--------------------------------------------------------------------------
# ● 角色离开
# actor_id : 角色 ID
#--------------------------------------------------------------------------
def remove_actor(actor_id)
adjust
# 判定角色是否是领队
lead = $game_party.leader_judge
flag = false
if $game_party.actors[lead].id == actor_id
flag = true
end
# 删除角色
@actors.delete($game_actors[actor_id])
# 如果领队离开
if flag
# 如果删除之后出现无人出战的情况
if @actors.size == 0
# 替补队员名单有人的情况下
if @reserved_actors.size > 0
# 将@reserved_actors中的第一个移动到@actors中
@actors.push(@reserved_actors.shift)
# 设置领队
@leader = @actors[0]
else
@leader = nil
end
else
@leader = @actors[0]
end
end
# 还原主角
$game_player.refresh
end
#--------------------------------------------------------------------------
# ● 设置初期同伴
#--------------------------------------------------------------------------
def setup_starting_members
@actors = []
for i in $data_system.party_members
@actors.push($game_actors[i])
end
unless @actors.empty?
set_leader(0)
end
end
#--------------------------------------------------------------------------
# ● 全灭判定
#--------------------------------------------------------------------------
def all_dead?
# 同伴人数为 0 的情况下
if $game_party.actors.size == 0
return false
end
# 同伴中无人 HP 在 0 以上
for actor in @actors
if actor.hp > 0
return false
end
end
# 全灭
return true
end
#--------------------------------------------------------------------------
# ● 检查连续伤害 (地图用)
#--------------------------------------------------------------------------
def check_map_slip_damage
for actor in @actors + @reserved_actors
if actor.hp > 0 and actor.slip_damage?
actor.hp -= [actor.maxhp / 100, 1].max
if actor.hp == 0
$game_system.se_play($data_system.actor_collapse_se)
end
$game_screen.start_flash(Color.new(255,0,0,128), 4)
$game_temp.gameover = $game_party.all_dead?
end
end
end
end
class Game_Player
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
# 同伴人数为 0 的情况下
if $game_party.actors.size == 0 or $game_party.leader == nil
# 清除角色的文件名及对像
@character_name = ""
@character_hue = 0
# 分支结束
return
end
# 获取带头的角色
if $game_party.leader != nil
actor = $game_party.leader
# 设置角色的文件名及对像
@character_name = actor.character_name
@character_hue = actor.character_hue
# 初始化不透明度和合成方式子
[url=home.php?mod=space&uid=316553]@opacity[/url] = 255
@blend_type = 0
end
end
end
class Window_Base < Window
def draw_actor_leader(x, y)
if $game_party.leader == nil
return
end
a = $game_party.leader_judge
self.contents.font.color = normal_color
self.contents.draw_text(x, y + a * 116, 64, 32, "领队",2)
end
end
class Window_MenuStatus < Window_Selectable
alias old_refresh refresh
def refresh
old_refresh
draw_actor_leader(384,0)
end
end
#==============================================================================
# ■ Window_Selectable
#------------------------------------------------------------------------------
# 拥有光标的移动以及滚动功能的窗口类。
#==============================================================================
class Window_Selectable < Window_Base
#--------------------------------------------------------------------------
# ● 定义实例变量
#--------------------------------------------------------------------------
attr_reader :index # 光标位置
attr_reader :help_window # 帮助窗口
attr_accessor :row_height # 行高
#--------------------------------------------------------------------------
# ● 初始画对像
# x : 窗口的 X 坐标
# y : 窗口的 Y 坐标
# width : 窗口的宽
# height : 窗口的高
# row_height : 行高 默认是32
#--------------------------------------------------------------------------
def initialize(x, y, width, height, row_height=32)
super(x, y, width, height)
@item_max = 1
@column_max = 1
[url=home.php?mod=space&uid=370741]@Index[/url] = -1
@row_height = row_height
end
#--------------------------------------------------------------------------
# ● 设置光标的位置
# index : 新的光标位置
#--------------------------------------------------------------------------
def index=(index)
[url=home.php?mod=space&uid=370741]@Index[/url] = index
# 刷新帮助文本 (update_help 定义了继承目标)
if self.active and @help_window != nil
update_help
end
# 刷新光标矩形
update_cursor_rect
end
#--------------------------------------------------------------------------
# ● 获取行数
#--------------------------------------------------------------------------
def row_max
# 由项目数和列数计算出行数
return (@item_max + @column_max - 1) / @column_max
end
#--------------------------------------------------------------------------
# ● 获取开头行
#--------------------------------------------------------------------------
def top_row
# 将窗口内容的传送源 Y 坐标、1 行的高 row_height 等分
return self.oy / @row_height
end
#--------------------------------------------------------------------------
# ● 设置开头行
# row : 显示开头的行
#--------------------------------------------------------------------------
def top_row=(row)
# row 未满 0 的场合更正为 0
if row < 0
row = 0
end
# row 超过 row_max - 1 的情况下更正为 row_max - 1
if row > row_max - 1
row = row_max - 1
end
# row 1 行高的 32 倍、窗口内容的传送源 Y 坐标
self.oy = row * @row_height
end
#--------------------------------------------------------------------------
# ● 获取 1 页可以显示的行数
#--------------------------------------------------------------------------
def page_row_max
# 窗口的高度,设置画面的高度减去 32 ,除以 1 行的高度 row_height
return (self.height - 32) / @row_height
end
#--------------------------------------------------------------------------
# ● 获取 1 页可以显示的项目数
#--------------------------------------------------------------------------
def page_item_max
# 将行数 page_row_max 乘上列数 @column_max
return page_row_max * @column_max
end
#--------------------------------------------------------------------------
# ● 帮助窗口的设置
# help_window : 新的帮助窗口
#--------------------------------------------------------------------------
def help_window=(help_window)
@help_window = help_window
# 刷新帮助文本 (update_help 定义了继承目标)
if self.active and @help_window != nil
update_help
end
end
#--------------------------------------------------------------------------
# ● 更新光标举行
#--------------------------------------------------------------------------
def update_cursor_rect
# 光标位置不满 0 的情况下
if @index < 0
self.cursor_rect.empty
return
end
# 获取当前的行
row = @index / @column_max
# 当前行被显示开头行前面的情况下
if row < self.top_row
# 从当前行向开头行滚动
self.top_row = row
end
# 当前行被显示末尾行之后的情况下
if row > self.top_row + (self.page_row_max - 1)
# 从当前行向末尾滚动
self.top_row = row - (self.page_row_max - 1)
end
# 计算光标的宽
cursor_width = self.width / @column_max - 32
# 计算光标坐标
x = @index % @column_max * (cursor_width + 32)
y = @index / @column_max * @row_height - self.oy
# 更新国标矩形
self.cursor_rect.set(x, y, cursor_width, @row_height)
end
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
super
# 可以移动光标的情况下
if self.active and @item_max > 0 and @index >= 0
# 方向键下被按下的情况下
if Input.repeat?(Input::DOWN)
# 列数不是 1 并且方向键的下的按下状态不是重复的情况、
# 或光标位置在(项目数-列数)之前的情况下
if (@column_max == 1 and Input.trigger?(Input::DOWN)) or
@index < @item_max - @column_max
# 光标向下移动
$game_system.se_play($data_system.cursor_se)
@index = (@index + @column_max) % @item_max
end
end
# 方向键上被按下的情况下
if Input.repeat?(Input::UP)
# 列数不是 1 并且方向键的下的按下状态不是重复的情况、
# 或光标位置在列之后的情况下
if (@column_max == 1 and Input.trigger?(Input::UP)) or
@index >= @column_max
# 光标向上移动
$game_system.se_play($data_system.cursor_se)
@index = (@index - @column_max + @item_max) % @item_max
end
end
# 方向键右被按下的情况下
if Input.repeat?(Input::RIGHT)
# 列数为 2 以上并且、光标位置在(项目数 - 1)之前的情况下
if @column_max >= 2 and @index < @item_max - 1
# 光标向右移动
$game_system.se_play($data_system.cursor_se)
@index += 1
end
end
# 方向键左被按下的情况下
if Input.repeat?(Input::LEFT)
# 列数为 2 以上并且、光标位置在 0 之后的情况下
if @column_max >= 2 and @index > 0
# 光标向左移动
$game_system.se_play($data_system.cursor_se)
@index -= 1
end
end
# R 键被按下的情况下
if Input.repeat?(Input::R)
# 显示的最后行在数据中最后行上方的情况下
if self.top_row + (self.page_row_max - 1) < (self.row_max - 1)
# 光标向后移动一页
$game_system.se_play($data_system.cursor_se)
@index = [@index + self.page_item_max, @item_max - 1].min
self.top_row += self.page_row_max
end
end
# L 键被按下的情况下
if Input.repeat?(Input::L)
# 显示的开头行在位置 0 之后的情况下
if self.top_row > 0
# 光标向前移动一页
$game_system.se_play($data_system.cursor_se)
@index = [@index - self.page_item_max, 0].max
self.top_row -= self.page_row_max
end
end
end
# 刷新帮助文本 (update_help 定义了继承目标)
if self.active and @help_window != nil
update_help
end
# 刷新光标矩形
update_cursor_rect
end
end
#==============================================================================
# ■ Window_PartyMembers
#------------------------------------------------------------------------------
# 显示非领队队员概况的窗口。
#==============================================================================
class Window_PartyMembers < Window_Selectable
#--------------------------------------------------------------------------
# ● 初始化目标
#--------------------------------------------------------------------------
def initialize
super(80, 0, 480, 480, 112)
$game_party.adjust
@item_max = $game_party.actors.size + $game_party.reserved_actors.size - 1
@column_max = 1
self.contents = Bitmap.new(width - 32, @item_max == 0 ? height - 32 : @item_max * 112)
self.contents.clear
@data = $game_party.actors + $game_party.reserved_actors
@data.sort!{ |a,b| a.id - b.id }
a = $game_party.leader_judge
@data.delete($game_party.actors[a])
refresh
self.index = 0
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
self.contents.clear
for i in 0...@item_max
x = 64
y = i * 112
actor = @data[i]
if $game_party.actors.include?(actor)
self.contents.font.color = normal_color
self.contents.draw_text(320, y, 128, 32, "战斗", 2)
else
self.contents.font.color = disabled_color
self.contents.draw_text(320, y, 128, 32, "休战", 2)
end
draw_actor_graphic(actor, x - 40, y + 80)
draw_actor_name(actor, x, y)
draw_actor_class(actor, x + 144, y)
draw_actor_level(actor, x, y + 32)
draw_actor_state(actor, x + 90, y + 32)
draw_actor_exp(actor, x, y + 64)
draw_actor_hp(actor, x + 236, y + 32)
draw_actor_sp(actor, x + 236, y + 64)
end
end
#--------------------------------------------------------------------------
# 获取当前光标所指的角色
#--------------------------------------------------------------------------
def current_actor
return @data[@index]
end
end
class Interpreter
#--------------------------------------------------------------------------
# ● 角色用 iterate (考虑全体同伴)
# parameter : 1 以上为 ID、0 为全体
#--------------------------------------------------------------------------
def iterate_actor(parameter)
# 全体同伴的情况下
if parameter == 0
# 同伴全体循环
for actor in $game_party.actors + $game_party.reserved_actors
# 评价块
yield actor
end
# 单体角色的情况下
else
# 获取角色
actor = $game_actors[parameter]
# 获取角色
yield actor if actor != nil
end
end
end
class Scene_Party
def main
$game_party.adjust
@members_window = Window_PartyMembers.new
# 执行过渡
Graphics.transition
# 主循环
loop do
# 刷新游戏画面
Graphics.update
# 刷新输入情报
Input.update
# 刷新画面
update
# 如果画面切换的话就中断循环
if $scene != self
break
end
end
# 准备过渡
Graphics.freeze
# 释放窗口
@members_window.dispose
end
def update
@members_window.update
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Menu.new(3)
return
end
if Input.trigger?(Input::C)
cur_actor = @members_window.current_actor
if cur_actor == nil
$game_system.se_play($data_system.buzzer_se)
return
end
if($game_party.actors.include?(cur_actor))
$game_system.se_play($data_system.decision_se)
$game_party.reserved_actors.push(cur_actor)
$game_party.actors.delete(cur_actor)
@members_window.refresh
else
if $game_party.actors.size < 4
$game_system.se_play($data_system.decision_se)
$game_party.actors.push(cur_actor)
$game_party.reserved_actors.delete(cur_actor)
@members_window.refresh
else
$game_system.se_play($data_system.buzzer_se)
end
end
end
end
end
#==============================================================================
# ■ Scene_Menu
#------------------------------------------------------------------------------
# 处理菜单画面的类。
#==============================================================================
class Scene_Menu
#--------------------------------------------------------------------------
# ● 初始化对像
# menu_index : 命令光标的初期位置
#--------------------------------------------------------------------------
def initialize(menu_index = 0)
@menu_index = menu_index
end
#--------------------------------------------------------------------------
# ● 主处理
#--------------------------------------------------------------------------
def main
# 生成命令窗口
s1 = $data_system.words.item
s2 = $data_system.words.skill
s3 = $data_system.words.equip
s4 = "队伍"
s5 = "领队"
s6 = "状态"
s7 = "存档"
s8 = "读档"
s9 = "退出"
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7, s8, s9])
@command_window.index = @menu_index
# 同伴人数为 0 的情况下
if $game_party.actors.size == 0
# 物品、特技、装备、状态无效化
@command_window.disable_item(0)
@command_window.disable_item(1)
@command_window.disable_item(2)
@command_window.disable_item(3)
@command_window.disable_item(4)
@command_window.disable_item(5)
end
# 禁止存档的情况下
if $game_system.save_disabled
# 存档无效
@command_window.disable_item(6)
end
# 生成游戏时间窗口
#@playtime_window = Window_PlayTime.new
#@playtime_window.x = 0
#@playtime_window.y = 430
# 生成步数窗口
@steps_window = Window_Steps.new
@steps_window.x = 0
@steps_window.y = 320
# 生成金钱窗口
# @gold_window = Window_Gold.new
# @gold_window.x = 0
#@gold_window.y = 416
# 生成状态窗口
@status_window = Window_MenuStatus.new
@status_window.x = 160
@status_window.y = 0
# 生成坐标窗口
#@xy_window = Window_xy.new
#@xy_window.x = 0
#@xy_window.y = 380
# 执行过渡
Graphics.transition
# 主循环
loop do
# 刷新游戏画面
Graphics.update
# 刷新输入信息
Input.update
# 刷新画面
update
# 如果切换画面就中断循环
if $scene != self
break
end
end
# 准备过渡
Graphics.freeze
# 释放窗口
@command_window.dispose
# @playtime_window.dispose
@steps_window.dispose
# @gold_window.dispose
#@xy_window.dispose
@status_window.dispose
end
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
# 刷新窗口
@command_window.update
# @playtime_window.update
@steps_window.update
#@gold_window.update
#@xy_window.update
@status_window.update
# 命令窗口被激活的情况下: 调用 update_command
if @command_window.active
update_command
return
end
# 状态窗口被激活的情况下: 调用 update_status
if @status_window.active
update_status
return
end
end
#--------------------------------------------------------------------------
# ● 刷新画面 (命令窗口被激活的情况下)
#--------------------------------------------------------------------------
def update_command
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 切换的地图画面############
$scene = Scene_Map.new
return
end
# 按下 C 键的情况下
if Input.trigger?(Input::C)
# 同伴人数为 0、存档、游戏结束以外的场合
if $game_party.actors.size == 0 and @command_window.index < 4
# 演奏冻结 SE
$game_system.se_play($data_system.buzzer_se)
return
end
# 命令窗口的光标位置分支(修改)
case @command_window.index
when 0 # 物品
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 切换到物品画面
$scene = Scene_Item.new
when 1 # 特技
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 激活状态窗口
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 2 # 装备
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 激活状态窗口
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 4 # 领队
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 激活状态窗口
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 3 # 队伍
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 切换到队员画面
$scene = Scene_Party.new
when 5 # 状态
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 激活状态窗口
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 6 # 存档
#禁止存档的情况下
if $game_system.save_disabled
#演奏冻结 SE
$game_system.se_play($data_system.buzzer_se)
return
end
#演奏确定 SE
$game_system.se_play($data_system.decision_se)
#切换到存档画面
$scene = Scene_Save.new
when 7 # 读档
#演奏确定 SE
$game_system.se_play($data_system.decision_se)
$load_calling = true
#切换到读档画面
$scene = Scene_Load.new
when 8 # 游戏结束
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 切换到游戏结束画面
$scene = Scene_End.new
end
return
end
end
#--------------------------------------------------------------------------
# ● 刷新画面 (状态窗口被激活的情况下)
#--------------------------------------------------------------------------
def update_status
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 激活命令窗口
@command_window.active = true
@status_window.active = false
@status_window.index = -1
return
end
# 按下 C 键的情况下
if Input.trigger?(Input::C)
# 命令窗口的光标位置分支
case @command_window.index
when 1 # 特技
# 本角色的行动限制在 2 以上的情况下
if $game_party.actors[@status_window.index].restriction >= 2
# 演奏冻结 SE
$game_system.se_play($data_system.buzzer_se)
return
end
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 切换到特技画面
$scene = Scene_Skill.new(@status_window.index)
when 2 # 装备
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 切换的装备画面
$scene = Scene_Equip.new(@status_window.index)
when 4 # 领队
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
$game_party.set_leader(@status_window.index)
$game_player.refresh
@status_window.refresh
when 5 # 状态
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 切换到状态画面
$scene = Scene_Status.new(@status_window.index)
end
return
end
end
end
class Scene_Status
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 切换到菜单画面
$scene = Scene_Menu.new(5)
return
end
# 按下 R 键的情况下
if Input.trigger?(Input::R)
# 演奏光标 SE
$game_system.se_play($data_system.cursor_se)
# 移至下一位角色
@actor_index += 1
@actor_index %= $game_party.actors.size
# 切换到别的状态画面
$scene = Scene_Status.new(@actor_index)
return
end
# 按下 L 键的情况下
if Input.trigger?(Input::L)
# 演奏光标 SE
$game_system.se_play($data_system.cursor_se)
# 移至上一位角色
@actor_index += $game_party.actors.size - 1
@actor_index %= $game_party.actors.size
# 切换到别的状态画面
$scene = Scene_Status.new(@actor_index)
return
end
end
end
class Scene_Save
#--------------------------------------------------------------------------
# ● 取消时的处理
#--------------------------------------------------------------------------
def on_cancel
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 如果被事件调用
if $game_temp.save_calling
# 清除存档调用标志
$game_temp.save_calling = false
# 切换到地图画面
$scene = Scene_Map.new
return
end
# 切换到菜单画面
$scene = Scene_Menu.new(6)
end
end
class Scene_Load
#--------------------------------------------------------------------------
# ● 取消时的处理
#--------------------------------------------------------------------------
def on_cancel
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 切换到标题画面
if $load_calling == true
$load_calling = false
$scene = Scene_Menu.new(7)
else
$scene = Scene_Title.new
end
end
end
class Scene_End
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
# 刷新命令窗口
@command_window.update
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 切换到菜单画面
$scene = Scene_Menu.new(8)
return
end
# 按下 C 键的场合下
if Input.trigger?(Input::C)
# 命令窗口光标位置分支
case @command_window.index
when 0 # 返回标题画面
command_to_title
when 1 # 退出
command_shutdown
when 2 # 取消
command_cancel
end
return
end
end
#--------------------------------------------------------------------------
# ● 选择命令 [取消] 时的处理
#--------------------------------------------------------------------------
def command_cancel
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 切换到菜单画面
$scene = Scene_Menu.new(8)
end
end
复制代码
作者:
恐惧剑刃
时间:
2014-2-12 19:00
本帖最后由 恋′挂机 于 2014-2-12 20:04 编辑
class Game_Party
alias remove_actor_old_a remove_actor
def remove_actor(actor_id)
不可离队的角色id数组 = [1, 2, 3] # 1 2 3 角色不可离队
return if 不可离队的角色id数组.include? actor_id
remove_actor_old_a(actor_id)
end
end
复制代码
回复报错问题
我这里测试是没有问题的
放在main前(除main外所有脚本最下方)看看会不会报错
作者:
断电
时间:
2014-2-12 20:13
本帖最后由 断电 于 2014-2-12 20:15 编辑
将原脚本529行-543行的
if($game_party.actors.include?(cur_actor))
$game_system.se_play($data_system.decision_se)
$game_party.reserved_actors.push(cur_actor)
$game_party.actors.delete(cur_actor)
@members_window.refresh
else
if $game_party.actors.size < 4
$game_system.se_play($data_system.decision_se)
$game_party.actors.push(cur_actor)
$game_party.reserved_actors.delete(cur_actor)
@members_window.refresh
else
$game_system.se_play($data_system.buzzer_se)
end
end
复制代码
替换为
if($game_party.actors.include?(cur_actor))####修改标记
if cur_actor.id == 1 ##不可休战的角色ID(数据库中ID)
$game_system.se_play($data_system.buzzer_se)
@members_window.refresh
else
$game_system.se_play($data_system.decision_se)
$game_party.reserved_actors.push(cur_actor)
$game_party.actors.delete(cur_actor)
@members_window.refresh
end
else
if $game_party.actors.size < 4
if cur_actor.id == 1 ##不可休战的角色ID(数据库中ID)
$game_system.se_play($data_system.buzzer_se)
@members_window.refresh
else
$game_system.se_play($data_system.decision_se)
$game_party.reserved_actors.push(cur_actor)
$game_party.actors.delete(cur_actor)
end
$game_system.se_play($data_system.decision_se)
$game_party.actors.push(cur_actor)
$game_party.reserved_actors.delete(cur_actor)
@members_window.refresh
else
$game_system.se_play($data_system.buzzer_se)
end
end
复制代码
作者:
断电
时间:
2014-2-12 21:42
这样是不是连贴了
Project2.zip
(208.46 KB, 下载次数: 27)
2014-2-12 21:40 上传
点击文件名下载附件
搜索“不可休战的角色id”,把注释对应的数字修改成你需要的就行了。
【擅自加了一个提示
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1