以wiki角色模板为例,教你获取角色基本信息
Wiki的角色模板就是这个:角色模板(空)
里面的角色立绘获取这边不说明,我会单开一个文章讲解
你想要获取角色基本信息请先成功反编译lua
相关教程:星落游戏解包教程

好的前言结束,让我们来正式开始
在反编译完lua之后我们会得到一大堆文件
那我们这次会用到
BaseCard.lua
BaseWord_cn.lua
BaseCvNameCn.lua
BaseCardLevelUp.lua
BaseCardQualityUp.lua
BaseSkill.lua
BaseSkillLevelUp.lua
BaseBadgeSuitGroup.lua
这几个lua文件
先打开BaseCard.lua和BaseWord_cn.lua
在BaseCard.lua里一个
[10000101] = {
。。。。。。
}
就代表了一个角色
按角色出的时间排序,所以最后面的是最新的角色
那我们首先要知道这个条目是哪个角色的
找到里面
name = function()
return T(80101206)
end,
的部分
这个函数就是从BaseWord_cn.lua里获取角色名字的
我们只要拿着文本id80101206去到BaseWord_cn.lua里搜索就能找到

比如这个就是艾拉
而在中文名下面的就是英文名
name_english = function()
return T(80102206)
end,
提取文本流程同上
然后我们看到
des = function()
return T(80103206)
end,
des1 = function()
return T(80107101)
end,
这个是角色的个人简介

也就是这部分↑
接下来几个也快速过一遍
information1 = function()
return T(80104001, 1, 22) # 生日,月/日
end,
information2 = function()
return T(80105001, 165) # 身高,单位厘米
end,
information3 = function()
return T(80106001) # 所属势力
end,
然后是角色职业和属性,虽然这些基本信息在更新前会先出现在角色预告图上
但这边也只是提供另一种解法而已
type = 2,
element_type = {3},
这两个就代表了角色的职业(type)与属性(element_type) 两个有着如下对应关系
# 职业映射 TYPE_MAPPING = { 1: "坚甲", 2: "异刃", 4: "言灵", 5: "猎影" } | # 属性映射 ELEMENT_MAPPING = { 1: "水属性", 2: "火属性", 3: "木属性", 4: "暗属性", 5: "光属性" } | |
值得一提的是职业并没有3,不知道是星落藏了一手还是怎么样
而属性的{1,2.,3}这个写法是支持多个属性的,虽然目前都是单个属性 至于角色的cv,在这边
cv_name = 80108206,
注意,这里的80108206不能去里BaseWord_cn.lua查,查不到
我们要去到一个新的文件BaseCvNameCn.lua
在这边搜索得到
[80108206] = {
id = 80108206,
name_cn = "陈玺月",
name_jp = "松嵜丽"
},
即可获得中日语cv
接下来快速过一遍角色基础数值
star = 5, 角色星级
level = 1, 初始等级
quality = 0, 初始突破等级
grade = 0, 初始觉醒等级
quality_max = 4, 最大突破等级(就是四阶120级那个)
grade_max = 5, 最大觉醒等级(就是命座)
max_hp = 1511, 初始生命(别看他写着max)
atk = 122, 初始攻击
def = 27, 初始防御
crt = 500, 初始暴击率
blk = 500, 初始格挡率
eva = 0, 初始闪避率
crt_int = 3000, 初始暴击伤害
blk_int = 3000, 初始格挡强度(这几个都要除以10000才是百分数)
spd_move = 140, 初始移动速度
spd_atk = 2367, 初始攻击速度(这个要除以1000才是真正的攻速,单位秒)
range_atk = 150, 初始攻击距离
。。。。。。
weight = 130, 这个是角色重量,在比较下面
这边我们顺便来说一些不怎么用得上的条目
对于这些我也不太确定
毕竟这些并没有显露在外
所以!以下皆为我的推测
block_max = 0,
block_count = 0, 这两个应该和阻挡有关
stoic = 0,
shield = 0,
no_rage = 1, 这个可能是什么怒气吗
max_rage = 0,
rage = 0,
rage_time = 0,
rage_atk = 0,
rage_hit = 0,
rage_kill = 0,
restraint_add1 = 3000, 这个是属性克制
restraint_add2 = 0,
restraint_add3 = 0,
restraint_add4 = 0,
restraint_add5 = 0,
restraint_sub1 = -3000,
restraint_sub2 = 0,
restraint_sub3 = 0,
restraint_sub4 = 0,
restraint_sub5 = 0,
fashion_id = 12002061, 时装(皮肤)这个可以在fashion那边查到
现在我们来讲一下如何计算满级满破三维
首先在BaseCard.lua里获取
grow_model_id = 40002402,
这个条目的id
拿着这个id去到BaseCardLevelUp.lua
搜id+340,也就是40002402340
[40002402340] = {
id = 40002402340,
add_attr = {
"1:40000103:1728",
"1:40000104:406",
"1:40000102:9993"
},
level_show = 120,
task_parameter = 44120
},
这就是满级加成
然后去BaseCardQualityUp.lua
搜角色id+004(角色id就是 [10000206] = { 这个中括号里的数字)
[10000206004] = {
id = 10000206004,
add_attr = {
"1:40000103:255",
"1:40000104:60",
"1:40000102:1477"
},
card_level_max = 340,
card_level_max_show = 120,
unlock_fashion_id = 0
}
得到满破加成
# 属性类型映射
ATTRIBUTE_MAPPING = {
"40000103": "攻击",
"40000104": "防御",
"40000102": "生命"
}
这是属性id对应的属性
然后我们把初始三维,满级三维加成,满破三维加成加起来就是满级满破三维了
攻击 = 122+1728+255 = 2105
防御 = 27+406+60 = 493
生命 = 1511+9993+1477 = 12981
接下来是技能
normal_skill = 41011206, 普攻
special_skill = 41012206, 战技
burst_skill = 41013206, 总攻技
leader_skill = 41019206, 队长技
grow_skill_ids = {
41001206,
41002206, 三个被动
41003206
},
我们拿着技能id去到BaseSkill.lua和BaseSkillLevelUp.lua
都是直接搜索id
BaseSkill.lua里可以获取技能名字
[41013206] = {
id = 41013206,
name = function()
return T(80413206) -------------这个就是技能名字
end,
icon = "SkillIcon:1010602",
type = 7,
max_level = 4,
cd = 45, --------------------------这个是总攻技才有的cd
unique_skill_stop = 1,
show_type = 0,
task_levelup_tab = 1,
unlock_quality_level = 0
},
然后去BaseSkillLevelUp.lua
这边可以获取技能描述
[41013206001] = {
id = 41013206001,
des = function()
return T(80532061, T(80520012, 5), T(80520017, 350), T(80520017, 1500))-----这个就是技能描述
end,
remark = function()
return T(80418002)
end,
fashion_show_ids = {
"12002061:42320600",
"12002062:42320600",
"12002063:42320602"
},
target_type = 2001,
damage_rate = 150000,
tag_id = 105,
extra_skill = 41004206001
},
技能的获取文本的T函数会比较复杂,我们只要先处理里面嵌套的T函数再处理外面的T函数就行了
本质都是一样的,T(第一个参数是文本id,后面的数字带入文本中)
另外,在BaseSkill.lua里有的技能会有
association_skills = {
"1:41014206001:1"
}
这个是技能觉醒部分的描述
拿着41014206001去BaseSkillLevelUp.lua里搜
[41014206001] = {
id = 41014206001,
des = function()
return T(80542061, T(80520014, T(80000103)), T(80520011, 40), T(80520012, 1), T(80520011, 20))
end,
target_type = 3001,
trigger_condition_1 = {1003},
trigger_type_1 = {5},
trigger_value_1 = {0},
trigger_max = 1,
damage_rate = 0,
buff_list = {
"43320601:3001:10000"
},
add_attr = {
"1:40000103:40"
},
association_des = function()
return T(80542062, T(80520012, 1), T(80520011, 20))
end
},
上面的des = function()是觉醒完整描述
下面的association_des = function()就单纯只是技能觉醒部分的描述
然后是basecard里的这部分
unlock_skill_ids = {
41014171,
41015171,
41016171,
41017171,
41018171
},
这五个是正经的觉醒描述,获取方法也和上面的技能一样
接下来是语音文本
sound_ids = {
85012061,
85022061,
85032061,
。。。。。。
这部分就是,可以拿着id直接去BaseWord_cn.lua搜
但严谨来说应该先去BaseCardSound.lua获取文本T函数
再去BaseWord_cn.lua
不然公主,守护者有几条会对不上,不过人为一般不会讲究这么多,可以直接纠正
继续BaseCard.lua里
story_ids = {
"80112061:0",
"80112062:1",
"80112063:2",
"80112064:3"
},
这些是角色故事,\n是换行符号
最后是推荐徽章
badge_suit_ids = {40008003}, 这个是推荐的套装
badge_main_attribute = { 这个是推荐主属性
"40000103",
"40000104:40000102",
"40000201:40000204"
},
badge_vice_attribute = { 这个是推荐副属性
40000103,
40000201,
40000204,
40000302
}
套装的id要去搜BaseBadgeSuitGroup.lua
依旧是
然后属性的id把第一个数字4改成8就能在BaseWord_cn.lua里搜
好了,到这角色基本信息我们就解析的差不多了
批量自动化提取脚本看这边:批量从lua文件中提取角色基本信息






