2023年政策修订增补工作正在进行中,欢迎参与!
  • Moegirl.ICU:萌娘百科流亡社群 581077156(QQ),欢迎对萌娘百科运营感到失望的编辑者加入
  • Moegirl.ICU:账号认领正在试运行,有意者请参照账号认领流程

User:Greykid/参考手册/数据导入

萌娘百科,万物皆可萌的百科全书!转载请标注来源页面的网页链接,并声明引自萌娘百科。内容不可商用。
跳转到导航 跳转到搜索

真·女神转生》大系数据编纂和样式设计统一模块 “模块:Psk” 的参考手册。操作细则和贡献方式,请进入《真·女神转生》大系编辑者群(832689630寻求进一步帮助。

本文讲述由「Excel 维基化数据库」导入到「Lua 模块化数据库」的具体操作方法。以下以「技能数据库」为例。

数据库格式

skill 区关键字说明
表头name0 技能 索引英文名称
id (自动化工具添加的排序序号)
name 技能 标准英文名称
namezh 技能 标准中文(繁体)名称
namezhsc 技能 标准中文(简体)名称
namejp 技能 标准日文名称
spell 技能类型 关键字
cost 技能 消耗(x SPx% HPPassive
effect 技能 效果(官方标准说明优先)
inherit 可继承该技能的仲魔/人格面具
method 可获得该技能卡的方法
note 注释

其中,spell项填充的「技能类型关键字」,由下表规定:

附表 - 技能类型 关键字對照
技能类型 关键字 说明
物理
phys 物理(统合)
strike / bash 打击(统合)
fist 拳擊
tech 技術
rush / havoc 衝擊
武器
sword / slash 斩击(统合)
1h 單手劍
2h 雙手劍
spear 长矛
axe 斧子
whip 鞭子
throw / thrown 投擲
arrow / bow 弓箭
枪械
pierce / stab 贯通(统合)
gun / ranged 枪械(统合)
handgun 手槍
machinegun 機槍
shotgun 霰彈槍
rifle 步槍
元素
fire 火炎
ice 冰冻
wind 疾风
elec 雷电
water 水流
earth 地動
psy 念动
nuke 核热
blast 爆炸
gravity 重力
光明
expel / light 光照(统合)
miracle 奇跡
heal / bless 治愈/祝福
bless 祝福(P5)
sup / prayer 辅助/天啓
黑暗
dark 黑暗(统合)
death 死亡
curse 咒怨
occult 覚醒
nerve 精神
万能
alm 万能(统合)
mind 理智
ail 异常状态(统合)
hiero Hieroglyphein(P1)
其他
pas 被动/自动
fusion 组合技能
aoa 总攻击
extra 附加技能
misc / navi 杂项/导航
other 其他技能

整理 Excel 直至符合规范

表头按照如下顺序:name,id,spell,name0,namezhsc(如果有),namezh,cost,effect,note,inherit(如果有),method(如果有)。

在表的最右边,空格一列,下一列的第二行起,输入类似如下的公式(仅供参考):

="\t[""" & TRIM(D2) & """] = {\n\t\tid = " & TRIM(B2) & ",\n\t\tspell = '" & TRIM(C2) & "',\n\t\tname = """ & TRIM(A2) & """,\n\t\tnamezhsc = '" & TRIM(E2) & "',\n\t\tnamezh = '" & TRIM(F2) & "',\n\t\tcost = '" & TRIM(G2) & "',\n\t\teffect = """ & TRIM(H2) & """,\n\t\tnote = """ & TRIM(I2) & """,\n\t},\n"

注:尽量选用单引号来表示 Lua 字符串。如果此字符串包含单引号(例如,英文名称;技能描述;注释),则使用双引号(总之要让代码能运行)。

运用 Excel 快速填充,拓展直到最后一行。生成效果类似如下(仅供参考):

\t["Lunge"] = {\n\t\tid = 1,\n\t\tspell = 'phys',\n\t\tname = "Lunge",\n\t\tnamezhsc = '突击',\n\t\tnamezh = '突撃',\n\t\tcost = '10% HP',\n\t\teffect = "給予範圍內敵人物理屬性的小量傷害。",\n\t\tnote = "",\n\t},\n

复制到文本编辑器进一步整理

将整列代码复制到文本编辑器(推荐:Notepad++ 或 Vim)。

使用正则表达式或类似替换方法,将 \\n 替换为 \n;将 \\t 替换为 \t

使用正则表达式或类似替换方法,将空数据项删去(例如 note = "", 这样的整行)并去重,保证数据的简洁性。

整理完毕的代码类似如下(仅供参考):

	["Lunge"] = {
		id = 1,
		spell = 'phys',
		name = "Lunge",
		namezhsc = '突击',
		namezh = '突撃',
		cost = '10% HP',
		effect = "給予範圍內敵人物理屬性的小量傷害。",
	},

整理完毕后,即可复制进入 Lua 数据库。

Lua 数据库导入

打开对应缩写(全大写)的技能数据库(如果没有,请新建,新建的格式参考已有数据库)。缩写由下表规定:

附表 - 《真·女神转生》大系全作品
维基标准英文缩写对照表
中文标题 英文标题 维基缩写
数码恶魔物语 女神转生I Megami Tensei mt1
数码恶魔物语 女神转生II Megami Tensei II mt2
旧约·女神转生 Kyūyaku Megami Tensei kmt
女神转生I Megami Tensei kmt1
女神转生II Megami Tensei II kmt2
伪典·女神转生 东京默示录 Giten Megami Tensei: Tokyo Mokushiroku giten / gmt
真·女神转生I Shin Megami Tensei smt1
真·女神转生II Shin Megami Tensei II smt2
真·女神转生if… Shin Megami Tensei: if... smtif
真·女神转生if… 哈扎马篇 Shin Megami Tensei: if... Hazama's Chapter smtifhc
真·女神转生20XX Shin Megami Tensei: 20XX 20xx
真·女神转生20XX 恶魔角斗场 Shin Megami Tensei: 20XX Devil's Colosseum 20xxdc
真·女神转生III—夜曲 Shin Megami Tensei III: Nocturne smt3
真·女神转生 奇妙之旅 Shin Megami Tensei: Strange Journey smtsj
真·女神转生IV Shin Megami Tensei IV smt4
真·女神转生IV FINAL Shin Megami Tensei IV Apocalypse smt4a / smt4f
真·女神转生IMAGINE Shin Megami Tensei IMAGINE smtim
真·女神转生NINE Shin Megami Tensei NINE smt9
D×2 真·女神转生 解放 Shin Megami Tensei: Liberation Dx2 ldx2
最后的圣经 Last Bible lb1
最后的圣经II Last Bible II lb2
最后的圣经III Last Bible III lb3
另一部圣经 Another Bible ab
最后的圣经 特别版 Last Bible Special lbs
魔神转生 Majin Tensei majin1
魔神转生II 螺旋因果 Majin Tensei II: Spiral Nemesis majin2
RONDE —轮舞曲— Ronde ronde
真·女神转生 恶魔召唤师 Shin Megami Tensei: Devil Summoner smtds
恶魔召唤师 灵魂黑客 Devil Summoner: Soul Hackers sh
恶魔召唤师 葛叶雷道对超力军团 Devil Summoner: Raidou Kuzunoha vs. The Soulless Army raidou1
恶魔召唤师 葛叶雷道对阿巴顿王 Devil Summoner: Raidou Kuzunoha vs. King Abaddon raidou2
恶魔之子 黑之书/红之书 Devil Children Black/Red Book dkb / dkr
恶魔之子 白之书 Devil Children White Book dkw
恶魔之子 光之书/暗之书 DemiKids Light/Dark Version dkl / dkd
恶魔之子 火之书/冰之书 Devil Children Fire/Ice Book dkf / dki
恶魔之子 弥赛亚辐射 Devil Children Messiah Riser dkmr
女神异闻录Persona Megami Ibunroku Persona p1
女神异闻录2 罪 Persona 2: Innocent Sin p2is
女神异闻录2 罚 Persona 2: Eternal Punishment p2ep
女神异闻录3 Persona 3 p3
女神异闻录3 FES Persona 3 FES p3f
女神异闻录3 FES 艾吉斯篇 Persona 3 FES: The Answer p3ta
女神异闻录3 携带版 Persona 3 Portable p3p
女神异闻录 圣洁之魂 Persona -trinity soul- pts
女神异闻录4 Persona 4 p4
女神异闻录4 黄金版 Persona 4 Golden p4g
女神异闻录4 终极深夜斗技场 Persona 4 Arena p4a / p4u
女神异闻录4 无敌究极后桥背摔 Persona 4 Arena Ultimax p4au / p4u2
女神异闻录4 通宵热舞 Persona 4: Dancing All Night p4d
女神异闻录Q 迷宫暗影 Persona Q: Shadow of the Labyrinth pq
女神异闻录Q2 迷宫电影院 Persona Q2: New Cinema Labyrinth pq2
女神异闻录5 Persona 5 p5
女神异闻录5 皇家版 Persona 5 Royal p5r
女神异闻录5 乱战:魅影攻手 Persona 5 Strikers p5s
真·女神转生 卡牌召唤师 Shin Megami Tensei Trading Card: Card Summoner cs
数码恶魔传说 同调化身 Digital Devil Saga: Avatar Tuner ddsaga1
数码恶魔传说 同调化身2 Digital Devil Saga: Avatar Tuner 2 ddsaga2
女神异闻录 恶魔幸存者 Devil Survivor desu1
恶魔幸存者 超时极限 Devil Survivor Overclocked desu1oc
恶魔幸存者2 Devil Survivor 2 desu2
恶魔幸存者2 记录突破 Devil Survivor 2 Record Breaker desu2rb
魔剑X Maken X mx
幻影异闻录♯FE Tokyo Mirage Sessions ♯FE tmsfe

例如,我们打开 模块:Psk/P5R 数据库。进入编辑界面。

local skills = {

-- 未知技能佔位符
	["unknown"] = {
		name = ' ? ',
		namezh = ' ? ',
		cost = ' ? ',
		effect = ' ? ',
	},
}

之间的所有行,替换为刚刚在文本编辑器中整理完毕的数据代码。

注意:在保存之前,点击「显示差异」,确认本次数据库修改的内容是否符合预期。如果符合预期、且代码无错误,即可保存。

更多

容易注意到:Lua 技能数据库最下方,还有 aliases、colours 两个项目。这两个项目分别是提供「英文技能名称消歧义」和「技能名称颜色渲染」。

导出到 Excel?运用正则表达式,对扒下来的代码进行整理,然后粘贴到 Excel 进一步整理。为避免麻烦,建议对所有直接在 Lua 数据库中做出的改动,都手动同步至 Excel 数据库中(请将 Excel 数据库推送到 QQ 群,方便版本控制)。

致 Lua 初学者:技能数据库和主程序存在对接关系,主程序中有正确调用数据库,方能显示出预期效果。

Grey:使用 Excel 是为了方便更多零基础贡献者参与整理和维护。当然也是为了方便 Control + C / V 啦~

附录

恶魔全书数据库 公式1:

= "\t[""" & A2 & """] = {\n\t\tnamezh = '" & C2 & "',\n\t\tnamezhsc = '" & B2 & "',\n\t\tnamejp = '" & I2 & "',\n\t\tlink = '" & J2 & "',\n\t\tnote = '" & K2 & "',\n\t},\n"

恶魔全书数据库 公式2:

= "\t[""" & B2 & """] = """ & IF(ISBLANK(B2), "", A2) & """,\n\t[""" & IF(B2=C2, "", C2) & """] = """ & IF(OR(ISBLANK(C2), B2=C2), "", A2) & """,\n\t[""" & D2 & """] = """ & IF(ISBLANK(D2), "", A2) & """,\n\t[""" & E2 & """] = """ & IF(ISBLANK(E2), "", A2) & """,\n\t[""" & IF(E2=F2, "", F2) & """] = """ & IF(OR(ISBLANK(F2), E2=F2), "", A2) & """,\n\t[""" & G2 & """] = """ & IF(ISBLANK(G2), "", A2) & """,\n\t[""" & IF(G2=H2, "", H2) & """] = """ & IF(OR(ISBLANK(H2), G2=H2), "", A2) & """,\n\t[""" & I2 & """] = """ & IF(ISBLANK(I2), "", A2) & """,\n"