赞 | 2 |
VIP | 143 |
好人卡 | 1 |
积分 | 1 |
经验 | 216792 |
最后登录 | 2019-10-10 |
在线时间 | 24 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 61
- 在线时间
- 24 小时
- 注册时间
- 2008-8-5
- 帖子
- 1924
|
默认系统中一个战斗者的状态在添加的时候就会按照定量的降序排列,而在 Window_Base 的 make_battler_state_text 中就直接从状态数组头开始,添加状态名字到一个字符串中,直到累积的字符串宽度超过了一定的值~
所以要想只显示一个状态的话,修改一下 make_battler_state_text 就行了;想要在定量相同的状态中随机显示,就可以从状态数组开头取出所有定量相同的状态(从左到右检查就行了,因为是按照定量大小的降序排列的)~
下面这一段可以直接插入 Main 之前,灰色部分是放弃使用的原脚本语句,红色部分是新增语句class Window_Base
#--------------------------------------------------------------------------
# ● 生成描绘用的状态字符串
# actor : 角色
# width : 描画目标的宽度
# need_normal : [正常] 是否为必须 (true / false)
#--------------------------------------------------------------------------
def make_battler_state_text(battler, width, need_normal)
# 获取括号的宽
#brackets_width = self.contents.text_size("[]").width
# 生成状态名字符串
#text = ""
states = []
for i in battler.states
state = $data_states
# 开始判断第二个以后的状态是否定量和之前的相同
break if states.size > 0 && state.rating != states[-1].rating
if $data_states.rating >= 1
states.push(state)
#if text == ""
# text = $data_states.name
#else
# new_text = text + "/" + $data_states.name
# text_width = self.contents.text_size(new_text).width
# if text_width > width - brackets_width
# break
# end
# text = new_text
#end
end
end
# 状态名空的字符串是 "[正常]" 的情况下
#if text == ""
if states.size == 0
if need_normal
text = "[正常]"
end
else
# 加上括号
#text = "[" + text + "]"
# 在所有定量相同的状态的集合中随机抽取一个状态显示
text = "[" + states[rand(states.size)].name + "]"
end
# 返回完成后的文字类
return text
end
end
至于修改定量的最大值,想要在数据库中直接去除数据范围校验的限制是很麻烦的,你可以先运行这样一段脚本,运行一次后就删除:data_states = load_data("Data/States.rxdata")
data_states[1].rating = 600 # 修改 1 号状态的定量
data_states[2].rating = 30 # 修改 2 号状态的定量
data_states[3].rating = 65535 # 修改 3 号状态的定量
File.open("Data/States.rxdata", "wb") { |fout|
Marshal.dump(data_states, fout)
} 这样在运行时动态修改了从状态数据文件中读取的内容,然后再把修改后的内容保存到文件中,关闭 RM 后再次打开(重新读取数据文件)就可以看到状态的定量被修改了~ |
|