切換
舊版
前往
大廳
主題

RM MV學習筆記(22) 用Excel建立資料庫

路漫行 | 2018-04-16 15:07:32 | 巴幣 4 | 人氣 693

一開始我只是想著要讓Mv讀取excel的檔案,這個應該也不難,粽子大大的多語系插件裡面就有一個讀取excel用的外掛。所以我要做的話只需要去破解哦不是,是參考一下應該就能知道大概的做法。不過那個外掛有點大,蠻累贅的,所以我一直沒裝...當然我也找不到人幫我翻譯英文,所以一直沒去下載他...

也前幾天忽然想到,mv不是已經自帶json了嗎?

圖1) MV\data\裡面的資料庫檔案


圖2)Items.json裡面的內容:



我幹嘛那麼麻煩把整張excel掛進去,應該要用excel轉json才對。所以我就去google excel to json等關鍵字,還真的找到一堆資料。

第一個找到的是它:Excel to JSON
直接幫Excel裝外掛,來輸出Json格式,看了看,竟然是收月費...!
Pricing
US$2.99/month
立刻放棄這方案


然後也找了好幾個線上轉檔的網站,但是要貼過來貼過去的好麻煩...

如果不介意麻煩的話,我給連結:


基本上這些網站速度都蠻快的也很好用,

但我試著要處理Item表單時候,發現這張表裡面還包著物件,格式就變成這樣

物件{1,2,3,4,5{5-1,5-2,5-3},6[{6-1-1,6-1-2,}{6-2-1,6-2-2}]}

用線上轉檔的話會失去裡面的物件資料

所以就要回來動用VBA...

damage這個物件透過VBA先轉成字串,再輸出最後的Json
以下四筆資料就是新專案預設好的四個道具,用來測試是否正常用



需要的資料對應:

itypeId
0  
1 常規道具
2 關鍵道具
3 隱藏道具A
4 隱藏道具B

hitType
0 必中
1 物理
2 魔法

scope
0
1 一個敵人
2 所有敵人
3 隨機1個敵人
4 隨機2個敵人
5 隨機3個敵人
6 隨機4個敵人
7 一個盟友
8 所有盟友
9 一個盟友(死亡)
10 所有盟友(死亡)
11 使用者

occasion
0 總是
1 戰鬥
2 平常
3 從不

damage type
0
1 HP傷害
2 MP傷害
3 HP恢復
4 MP恢復
5 HP吸收
6 MP吸收

另外道具的effect效果是額外處理的,另建一張長這樣的表單


每一個效果都有一組四個值,預設的却除藥草就有七組(解除7個狀態)


code號碼對應,細節可搜尋Game_Action(),下貼整理版:
Effect code dataId value1 value2
11 RECOVER_HP HP恢復 0 %
12 RECOVER_MP MP恢復 0 %
13 GAIN_TP 獲得TP 0 0
21 ADD_STATE 增加狀態 狀態ID % 0
22 REMOVE_STATE 移除狀態 狀態ID % 0
31 ADD_BUFF 增加正面效果 屬性編號 持續時間(場景段) 0
32 ADD_DEBUFF 增加負面效果 屬性編號 持續時間(場景段) 0
33 REMOVE_BUFF 移除正面效果 屬性編號 持續時間(場景段) 0
34 REMOVE_DEBUFF 移除負面效果 屬性編號 持續時間(場景段) 0
41 SPECIAL 逃走 0 1 0
42 GROW 增加最大值 屬性編號 0
43 LEARN_SKILL 學習技能 技能ID 1 0
44 COMMON_EVENT 共通事件 事件ID 1 0


屬性編號
0 最大HP
1 最大MP
2 攻擊
3 防御
4 魔攻
5 魔防
6 敏捷
7 幸運

在Excel裡面使用YEP的方法:


斷行符號: \n
所有的文字內嵌代碼都要從單斜線\改成雙斜線\\
比如說\C[n] -> \\C[n]

已測試過顯示完全正常

我想所有的表單應該都可以用excel來處理,但目前先做了道具表,畢竟我想玩合成系統嘛!

使用Excel除了填值方便以外,還有一個更大的好處就是可以很方便的全面幫item增加屬性,就只要增加Excel的欄位就可以了,多的東西進json是不會當機的,用腳本也能讀取到這個屬性。

以下測試成功不會當機


所以想要增加道具等級、合成消耗Cost、合成獲得經驗值、或是增加某個道具成功率上升等等,都可以用這樣的方法實現。





....


補記

用VBA預設輸出的文字檔案是ANSI格式,在裡面出中文讀進MV會變成亂碼



需要利用Notepad++轉碼UTF-8


送禮物贊助創作者 !
0
留言

創作回應

粽子
http://hant.ask.helplib.com/javascript/post_502427


其實可以自己寫一個csv parse, 我是太懶所以直接用 d3.js

另外直接用雲端硬碟上的exl下載成csv 可以省掉轉碼的工作
2018-06-24 10:48:58
路漫行
哦哦,不過轉碼問題我已經解決了,就出檔時候手動轉一下,熟練也不算麻煩
2018-06-24 17:08:11
八龍易主(´・ω・`)つ
想請教您
如果有了JSON檔
裡面已經寫好了像是 人名 地址 職業
這樣的JSON格式的物件

要如何呼叫在
例如我想從Scene_title呼叫第一筆資料呢?
是否有類似readfromJSON("JSON路徑") 這樣的方法呢?
或是其他做法?
2018-12-10 23:51:51
路漫行
拍謝我不會!
2018-12-13 18:17:08
八龍易主(´・ω・`)つ
謝謝
2018-12-14 21:51:32

相關創作

更多創作