| 赞 | 46 |
| VIP | |
| 好人卡 | |
| 积分 | 329 |
| 经验 | |
| 最后登录 | 2026-2-3 |
| 在线时间 | 248 小时 |
- 梦石
- 24
- 星屑
- 8942
- 在线时间
- 248 小时
- 注册时间
- 2020-12-4
- 回帖
- 259
  
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有账号?注册会员
×
本帖最后由 纯属小虫 于 2022-5-6 00:00 编辑
想要做一个配合其他脚本,以txt文件形式输出物品掉落表,技能表等的脚本,以方便检查这些数据中是否存在错误
以下以多物品掉落为例子
[fold=完整的脚本][pre lang="ruby"]$多格掉宝 = {} # 初始化
# ---------------------------
# $多格掉宝 设置
# ---------------------------
# 设置范例
#============================================================
#$多格掉宝[1] = [[0, 1, 10],[1, 2, 100],[1, 2, 100], [2, 5, 80]]
$多格掉宝[1] = [[0, 1, 10],[1, 2, 100]]
$多格掉宝[2] = [[0, 5, 10],[1, 6, 100]]
#============================================================
# 脚本中的掉宝设置不会覆盖数据库中的设置,而是在基础上叠加
# $多格掉宝[敌人id] = [掉宝类型,id以及概率的数组]
# 掉宝类型,id以及概率的数组 说明:
# 索引为 0 的值
# 0 是 物品 1 是武器 2 是防具
# 索引为 1 的值
# 物品 武器 防具 的 id
# 索引为 2 的值
# 概率
# 可支持同种物品掉落多个!
# 需要有个检测程序,来导出这些数据,以验证爆率的准确度!
# 导出一个字符串,字符串显示掉宝的 【怪物名称】 【物品类型】 【物品名称】 【概率】
掉宝纠正测试 = true
if 掉宝纠正测试 == true
内容 = "\n"
$data_actors = load_data("Data/Actors.rxdata")
$data_classes = load_data("Data/Classes.rxdata")
$data_skills = load_data("Data/Skills.rxdata")
$data_items = load_data("Data/Items.rxdata")
$data_weapons = load_data("Data/Weapons.rxdata")
$data_armors = load_data("Data/Armors.rxdata")
$data_enemies = load_data("Data/Enemies.rxdata")
$data_troops = load_data("Data/Troops.rxdata")
$data_states = load_data("Data/States.rxdata")
$data_animations = load_data("Data/Animations.rxdata")
$data_tilesets = load_data("Data/Tilesets.rxdata")
$data_common_events = load_data("Data/CommonEvents.rxdata")
$data_system = load_data("Data/System.rxdata")
for i in 0..100
if $多格掉宝 != nil
怪物名称 = $data_enemies.name
内容X = "\n"
for j in $多格掉宝
case j[0]
when 0
if $data_items[j[1]] != nil
物品类型 = "物品"
物品名称 = $data_items[j[1]].name
end
when 1
if $data_weapons[j[1]] != nil
物品类型 = "武器"
物品名称 = $data_weapons[j[1]].name
end
when 2
if $data_armors[j[1]] != nil
物品类型 = "武器"
物品名称 = $data_armors[j[1]].name
end
end
概率 = j[2].to_s
内容X +=物品类型 + "#" + 物品名称 + " " + 概率 + " | "
end
内容 += 怪物名称+ "==>>" + 内容X + "\n"
end
end
outfile_name = "掉宝测试.txt"
outfile = File.open(outfile_name, "wb") #输出文件
data = 内容
Marshal.dump(data, outfile)
outfile.close
p "已将掉宝表导出至根目录"
end
class Scene_Battle
#--------------------------------------------------------------------------
# ● 开始结束战斗回合
#--------------------------------------------------------------------------
def start_phase5
# 转移到回合 5
@phase = 5
# 演奏战斗结束 ME
$game_system.me_play($game_system.battle_end_me)
# 还原为战斗开始前的 BGM
$game_system.bgm_play($game_temp.map_bgm)
# 初始化 EXP、金钱、宝物
exp = 0
gold = 0
treasures = []
for enemy in $game_troop.enemies
unless enemy.hidden
exp += enemy.exp
gold += enemy.gold
if rand(100) < enemy.treasure_prob
if enemy.item_id > 0
treasures.push($data_items[enemy.item_id])
end
if enemy.weapon_id > 0
treasures.push($data_weapons[enemy.weapon_id])
end
if enemy.armor_id > 0
treasures.push($data_armors[enemy.armor_id])
end
end
end
end
# ----------------------------------------
for enemy in $game_troop.enemies
unless enemy.hidden
if $多格掉宝[enemy.id] != nil
for i in $多格掉宝[enemy.id]
概率 = i[2]
case i[0]
when 0 # 物品
if rand(100) < 概率
if $data_items[i[1]] != nil
treasures.push($data_items[i[1]])
end
end
when 1 # 武器
if rand(100) < 概率
if $data_weapons[i[1]] != nil
treasures.push($data_weapons[i[1]])
end
end
when 2 # 防具
if rand(100) < 概率
if $data_armors[i[1]] != nil
treasures.push($data_armors[i[1]])
end
end
end
end
end
end
end
# ----------------------------------------
for i in 0...$game_party.actors.size
actor = $game_party.actors
if actor.cant_get_exp? == false
last_level = actor.level
actor.exp += exp
if actor.level > last_level
@status_window.level_up(i)
end
end
end
# 获得金钱
$game_party.gain_gold(gold)
# 获得宝物
for item in treasures
case item
when RPG::Item
$game_party.gain_item(item.id, 1)
when RPG::Weapon
$game_party.gain_weapon(item.id, 1)
when RPG::Armor
$game_party.gain_armor(item.id, 1)
end
end
# 生成战斗结果窗口
@result_window = Window_BattleResult.new(exp, gold, treasures)
# 设置等待计数
@phase5_wait_count = 100
end
end
#==============================================================================
# ■ Window_BattleResult
#------------------------------------------------------------------------------
# 战斗结束时、显示获得的 EXP 及金钱的窗口。
#==============================================================================
class Window_BattleResult < Window_Base
#--------------------------------------------------------------------------
# ● 初始化对像
# exp : EXP
# gold : 金钱
# treasures : 宝物
#--------------------------------------------------------------------------
def initialize(exp, gold, treasures)
@数量 = Hash.new {|hash,key| hash[key] = 0}
@重复 = []
for item in treasures
unless @重复.include? item
@重复 << item
@数量[item] += 1
else
@数量[item] += 1
end
end
@exp = exp
@gold = gold
@treasures = treasures
super(160, 0, 320, @重复.size * 32 + 64)
self.contents = Bitmap.new(width - 32, height - 32)
self.y = 160 - height / 2
self.back_opacity = 160
self.visible = false
refresh
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
self.contents.clear
x = 4
self.contents.font.color = normal_color
cx = contents.text_size(@exp.to_s).width
self.contents.draw_text(x, 0, cx, 32, @exp.to_s)
x += cx + 4
self.contents.font.color = system_color
cx = contents.text_size("EXP").width
self.contents.draw_text(x, 0, 64, 32, "EXP")
x += cx + 16
self.contents.font.color = normal_color
cx = contents.text_size(@gold.to_s).width
self.contents.draw_text(x, 0, cx, 32, @gold.to_s)
x += cx + 4
self.contents.font.color = system_color
self.contents.draw_text(x, 0, 128, 32, $data_system.words.gold)
y = 32
for item in @重复
draw_item_name(item, 4, y)
if @数量[item] > 1
contents.draw_text(24 + contents.text_size(item.name).width, y,
width - 40, 32, " ×"+@数量[item].to_s)
end
y += 32
end
end
end[/pre][/fold]
[fold=用于导出文件的脚本][pre lang="ruby"]掉宝纠正测试 = true
if 掉宝纠正测试 == true
内容 = "\n"
$data_actors = load_data("Data/Actors.rxdata")
$data_classes = load_data("Data/Classes.rxdata")
$data_skills = load_data("Data/Skills.rxdata")
$data_items = load_data("Data/Items.rxdata")
$data_weapons = load_data("Data/Weapons.rxdata")
$data_armors = load_data("Data/Armors.rxdata")
$data_enemies = load_data("Data/Enemies.rxdata")
$data_troops = load_data("Data/Troops.rxdata")
$data_states = load_data("Data/States.rxdata")
$data_animations = load_data("Data/Animations.rxdata")
$data_tilesets = load_data("Data/Tilesets.rxdata")
$data_common_events = load_data("Data/CommonEvents.rxdata")
$data_system = load_data("Data/System.rxdata")
for i in 0..100
if $多格掉宝 != nil
怪物名称 = $data_enemies.name
内容X = "\n"
for j in $多格掉宝
case j[0]
when 0
if $data_items[j[1]] != nil
物品类型 = "物品"
物品名称 = $data_items[j[1]].name
end
when 1
if $data_weapons[j[1]] != nil
物品类型 = "武器"
物品名称 = $data_weapons[j[1]].name
end
when 2
if $data_armors[j[1]] != nil
物品类型 = "武器"
物品名称 = $data_armors[j[1]].name
end
end
概率 = j[2].to_s
内容X +=物品类型 + "#" + 物品名称 + " " + 概率 + " | "
end
内容 += 怪物名称+ "==>>" + 内容X + "\n"
end
end
outfile_name = "掉宝测试.txt"
outfile = File.open(outfile_name, "wb") #输出文件
data = 内容
Marshal.dump(data, outfile)
outfile.close
p "已将掉宝表导出至根目录"
end[/pre][/fold]
可见,有时候会正常,有时候会变成乱码,应该是编码的问题,但是不知道如何解决
|
|