赞 | 1 |
VIP | 38 |
好人卡 | 7 |
积分 | 3 |
经验 | 52355 |
最后登录 | 2024-11-24 |
在线时间 | 853 小时 |
Lv2.观梦者
- 梦石
- 0
- 星屑
- 310
- 在线时间
- 853 小时
- 注册时间
- 2014-5-5
- 帖子
- 948
|
本帖最后由 邪月长啸 于 2014-5-24 19:10 编辑
- #-----------------------------------------------------------------------------
- # 队伍系统 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 = 422
- # 生成状态窗口
- @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
复制代码 理论上这个是我找到集和 人物仓库+队友队列+战斗人数 功能的脚本
队友人数可以很多很多……只要你有。。。。
战斗人数可以4个,也可以1个,看你心情。。。
队伍满4个后,加入的队友直接在菜单里选择出战,无需其它事件来添加替换。。。
喵,我已经介绍完了,闪了 |
|