我們接下來要做一個上傳畫面,讓人可以分享怪物資訊,畫面很簡單,就一個怪物選單,然後可以輸入參照物,因為有些怪物死不掉東西,但有些人他有辦法自己算,所以第二個輸入框就讓人輸入擊殺數量或掉落數量,雖然說可能有機率過大過小的問題,但我相信這東西可以校正回歸啦
好首先,發現怪物資訊這東西網路上有人準備好了 json 檔案,我們只要寫個小 python3 產出 SQL INSERT 就好
import json
import uuid
# 讀取 JSON
with open("../src/lib/datas/drop_data.json", encoding="utf-8") as f:
drop_data = json.load(f)
with open("../src/lib/datas/item.json", encoding="utf-8") as f:
items_data = json.load(f)
# namespace UUID,可以自己選擇固定值
base_namespace = uuid.uuid4()
# # 將 "apple" 轉為 UUID
custom_namespace = uuid.uuid5(base_namespace, "artale")
result = {}
for monster_name, drop_list in drop_data.items():
# 產生 UUID v5
monster_uuid = str(uuid.uuid5(custom_namespace, monster_name))
# 聚合 datas
datas = {}
for item_id, item_name in items_data.items():
if item_name in drop_list:
datas[item_id] = item_name
result[monster_uuid] = {
"name": monster_name,
"datas": datas
}
# 寫入 output.json
with open("problytic-artale-datas.json", "w", encoding="utf-8") as f:
json.dump(result, f, ensure_ascii=False, indent=2)
print("聚合完成,已輸出 problytic-artale-datas.json")
接著我們建立一個 API 專門全撈,反正剛看一下才 100 筆,沒差
在 srclibfront\ 底下建立 monster.ts
import item from '../datas/problytic-artale-datas.json';
export function getDatas() {
return item;
}
然後找個頁面塞這段看看這段有沒有東西
<script lang="ts">
import { getDatas } from '$lib/front/monster';
let monsters = getDatas();
console.log(monsters);
</script>
npm run preview 看看吧
明天我們繼續畫面接這個資料
今天的情緒抒發: