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

用戶: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"