Project1
标题:
领队脚本+固定队伍完整版(2009-03-18)
[打印本页]
作者:
discain
时间:
2009-3-15 07:25
标题:
领队脚本+固定队伍完整版(2009-03-18)
刚学RGSS不久,翻了旧贴,看到SailCat编写,king整合的VX领队脚本,真的很喜欢。此脚本语句很简单、精炼,于是学习之~~然后就有这个贴子。
其实不算原创,只是扩展而已。>_<
这个功能MS其他大神也发布过了,不过那个领队脚本限制太多,还是对这版脚本有爱呀。
工程下载:
更换领队脚本.rar
2009-03-18更新)
---------------------------------------------------------------------------
原版:领队更换系统 作者:SailCat http://rpg.blue/web/htm/news859.htm
VX原版:领队更换系统 作者:http://rpg.blue/viewthread.php?tid=83508&ntime=2009%2D3%2D14+23%3A07%3A59
原功能
#==============================================================================
# 领队更换系统 by SailCat
# 领队更换系统 VX版 by King
#------------------------------------------------------------------------------
# 添加此脚本后,在地图画面按下A键更换当前的领队。
# 领队更改不会造成战斗队伍、菜单队伍次序的更改。
# 若要在条件分歧中调用领队,请用脚本:$game_party.leader == 序号
# 序号为0-3的值,最大不会超过队伍的角色数目减1。
#==============================================================================
增加功能新功能
# 若要在场景中强行更换领队,请用脚本:$game_party.leader = 序号
#==============================================================
LEADER_SE = "load"
# 若需更换领队音效只需更换音效的文件名(忽略扩展名)
# 音效默认文件夹为"Audio/SE/"
# 如不需要领队音效,只需将赋值改为0
#=================================================================
# 整合固定队伍顺序脚本,主角离队后归队时复位,且领队做出相应的切换
# 修正bug:非首位主角离队时赋值为空的问题(2009-3-15)
# 强行更换领队时如无该领队序号则不做任何操作(2009-3-15)
# 领队主角离队时下一位主角替换领队(2009-3-15)
# 非领队主角离队时不替换当前领队(2009-3-15)
# 主角离队时刷新有效(2009-3-16)
# 脚本优化(其实啥米也没优化)(2009-3-18)
#=================================================================
#==============================================================================
# 领队更换系统 by SailCat
# 领队更换系统 VX版 by King
# 整合领队+入队离队 VX版 by discain
#------------------------------------------------------------------------------
# 添加此脚本后,在地图画面按下A键更换当前的领队。
# 领队更改不会造成战斗队伍、菜单队伍次序的更改。
# 若要在条件分歧中调用领队,请用脚本:$game_party.leader == 序号
# 序号为0-3的值,最大不会超过队伍的角色数目减1。
#==============================================================================
# 以下为新增的功能 by discain
# 若要在场景中强行更换领队,请用脚本:$game_party.leader = 序号
#------------------------------------------------------------------------------
LEADER_SE = "load"
# 若需更换领队音效只需更换音效的文件名(忽略扩展名)
# 音效默认文件夹为"Audio/SE/"
# 如不需要领队音效,只需将赋值改为0
#------------------------------------------------------------------------------
# 固定队伍小脚本(VX版) by discain
# 说明:离队人员再次回队按照原位置加入。
#------------------------------------------------------------------------------
FIX_PATRY = 15
# 用来调用系统开关,默认值为15,默认状态为false。
# 如果希望使用这个功能请将系统开关15设定为true
#------------------------------------------------------------------------------
# 修正bug:非首位主角离队时赋值为空的问题(2009-3-15)
# 强行更换领队时如无该领队序号则不做任何操作(2009-3-15)
# 领队主角离队时下一位主角替换领队(2009-3-15)
# 非领队主角离队时不替换当前领队(2009-3-15)
# 主角离队时刷新有效(2009-3-16)
#==============================================================================
class Game_Party
#--------------------------------------------------------------------------
# ● 追加实例变量
#--------------------------------------------------------------------------
attr_accessor :leader
alias sailcat_initialize initialize
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
def initialize
# 生成领队
@leader = 0
$Game_leader = 0
sailcat_initialize
end
#--------------------------------------------------------------------------
# * 设置队伍初期阵容
#--------------------------------------------------------------------------
def setup_starting_members
@index = []
#初期队伍索引
@actors = []
# 生成领队
@leader = 0
for i in $data_system.party_members
@actors.push(i)
@index.push(i)
end
end
#--------------------------------------------------------------------------
# ● 领队变更判定
#--------------------------------------------------------------------------
def determine_leader
@leader %= @actors.size
$Game_leader = @leader
end
#--------------------------------------------------------------------------
# ● 设置领队
#--------------------------------------------------------------------------
def switch_leader
@leader += 1
determine_leader
end
#--------------------------------------------------------------------------
# * 主角离队
# actor_id : 主角编号
#--------------------------------------------------------------------------
def remove_actor(actor_id)
if @actors.include?(actor_id)
actors_index = @actors.index(actor_id)
@actors.delete(actor_id)
if @leader != 0 and @leader > actors_index
@leader -= 1
end
determine_leader
$game_player.refresh
end
end
#--------------------------------------------------------------------------
# * 主角入队
# actor_id : 主角编号
#--------------------------------------------------------------------------
def add_actor(actor_id)
if @actors.size < MAX_MEMBERS and not @actors.include?(actor_id)
@actors.push(actor_id)
if $game_switches[FIX_PATRY] == true
@actors = @index & @actors
#主角入队时按初期阵容排序
if @actors.size < MAX_MEMBERS and not @actors.include?(actor_id)
@actors.push(actor_id)
#有新主角入队时加入在队尾
@index.push(actor_id)
#更新队伍索引
end
actors_index = @actors.index(actor_id)
if @leader >= actors_index
@leader += 1
end
determine_leader
end
$game_player.refresh
end
end
end
class Game_Player
alias sailcat_update update
#--------------------------------------------------------------------------
# ● 领队音效
#--------------------------------------------------------------------------
def leader_se
se = LEADER_SE
if se != 0
RPG::SE.new(se, 80 ,100).play
end
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
# 同伴人数为 0 的情况下
if $game_party.members.size == 0
# 清除角色的文件名及对像
@character_name = ""
@character_hue = 0
# 分支结束
return
end
# 获取带头的角色
actor = $game_party.members[$game_party.leader]
# 设置角色的文件名及对像
@character_name = actor.character_name
@character_index = actor.character_index
# 初始化不透明度和合成方式
@opacity = 255
@blend_type = 0
leader_se
end
#--------------------------------------------------------------------------
# ● 画面更新
#--------------------------------------------------------------------------
def update
# 按下 A 键的情况下
if Input.trigger?(Input::X)
# 更换领队
$game_party.switch_leader
refresh
end
if $game_party.leader != $Game_leader and $game_party.members.size > $game_party.leader
refresh
$Game_leader = $game_party.leader
else
$game_party.leader = $Game_leader
end
sailcat_update
end
end
复制代码
新加了一个小脚本,没什么用。只是对一些想让离开队伍的主角再次回到队伍后
回到原菜单位置的游戏制作者可能有点作用。
因为本人水平有限,目前还没测出bug,大家可以帮着测试看看。
另外,这个脚本请单独使用。如需与领队脚本配合使用,请看同期发布的领队脚本
#==============================================================================
# 固定队伍小脚本(VX版) by discain
# 说明:离队人员再次回队按照原位置加入。
#------------------------------------------------------------------------------
FIX_PATRY = 15
# 用来调用系统开关,默认值为15,默认状态为false。
# 如果希望使用这个功能请将系统开关15设定为true
#==============================================================================
#==============================================================================
# 固定队伍插件(VX版) by discain
#------------------------------------------------------------------------------
FIX_PATRY = 15
# 用来调用系统开关,默认值为15,默认状态为false。
# 如果希望使用这个功能请将系统开关15设定为true
#==============================================================================
#==============================================================================
# ** Game_Party
#==============================================================================
class Game_Party
#--------------------------------------------------------------------------
# * 设置队伍初期阵容
#--------------------------------------------------------------------------
def setup_starting_members
@actors = []
#初期队伍索引
@index = []
for i in $data_system.party_members
@actors.push(i)
@index.push(i)
end
end
#--------------------------------------------------------------------------
# * 主角入队
# actor_id : 主角编号
#--------------------------------------------------------------------------
def add_actor(actor_id)
if @actors.size < MAX_MEMBERS and not @actors.include?(actor_id)
@actors.push(actor_id)
if $game_switches[FIX_PATRY] == true
#主角入队时按初期阵容排序
@actors = @index & @actors
#有新主角入队时加入在队尾
if @actors.size < MAX_MEMBERS and not @actors.include?(actor_id)
@actors.push(actor_id)
#更新队伍索引
@index.push(actor_id)
end
end
$game_player.refresh
end
end
end
复制代码
作者:
星辰天羽
时间:
2009-3-16 06:12
呵呵,不错的脚本,正要用到!
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1