diff --git a/.idea/miao-plugin.iml b/.idea/miao-plugin.iml new file mode 100644 index 00000000..0c8867d7 --- /dev/null +++ b/.idea/miao-plugin.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 00000000..5e488bf7 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 00000000..94a25f7f --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 00000000..41e4c91a --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1648136859374 + + + + + + \ No newline at end of file diff --git a/apps/character.js b/apps/character.js new file mode 100644 index 00000000..d9692626 --- /dev/null +++ b/apps/character.js @@ -0,0 +1,525 @@ +import fetch from "node-fetch"; +import { segment } from "oicq"; +import lodash from "lodash"; +import fs from "fs"; + +let getUrl, getServer; + +import { Character } from "../components/models.js"; + + +//角色昵称 +let nameID = ""; +let genshin = {}; +await init(); + + +export async function init(isUpdate = false) { + let _path = "file://" + process.cwd(); + console.log(_path + "config/gen"); + let version = isUpdate ? new Date().getTime() : 0; + + genshin = await import(_path + `/config/genshin/roleId.js?version=${version}`); + nameID = ""; +} + + +//#神里 +export async function character(e, { render, MysApi }) { + let roleId = roleIdToName(e.msg.replace(/#|老婆|老公|[1|2|5][0-9]{8}/g, "").trim()); + + + let hutao = Character.get("胡桃"); + + console.log(hutao.a) + + return true; + + if (!roleId) return false; + + getUrl = MysApi.getUrl; + getServer = MysApi.getServer; + + let uidRes = await getUid(e); + + + if (!uidRes.uid && uidRes.isSelf) { + e.reply("请先发送#+你游戏的uid"); + return true; + } + + if (!(await limitGet(e))) return true; + + let uid = uidRes.uid; + + let res = await mysApi(e, uid, "character", { + role_id: uid, + server: getServer(uid), + }); + + if (res.retcode == "-1") { + return true; + } + + if (checkRetcode(res, uid, e)) { + return true; + } + + let avatars = res.data.avatars; + let length = avatars.length; + + avatars = lodash.keyBy(avatars, "id"); + + if (roleId == 20000000) { + if (avatars["10000005"]) { + roleId = "10000005"; + } + if (avatars["10000007"]) { + roleId = "10000007"; + } + } + + if (!avatars[roleId]) { + let name = lodash.truncate(e.sender.card, { length: 8 }); + if (length > 8) { + e.reply([segment.at(e.user_id, name), `\n没有${e.msg}`]); + } else { + e.reply([segment.at(e.user_id, name), "\n请先在米游社展示该角色"]); + } + return true; + } + + limitSet(e); + + avatars = avatars[roleId]; + + let skill = await getSkill(e, uid, avatars); + + let type = "character"; + + let base64 = await render("miao-plugin", type, { + _plugin: true, + save_id: uid, + uid: uid, + skill, + ...get_character(avatars), + }, "png"); + + if (base64) { + e.reply(segment.image(`base64://${base64}`)); + } + + return true; //事件结束不再往下 +} + + +//获取角色技能数据 +async function getSkill(e, uid, avatars) { + + let skill = {}; + if (NoteCookie && NoteCookie[e.user_id] && NoteCookie[e.user_id].uid == uid && NoteCookie[e.user_id].cookie.includes("cookie_token")) { + let skillres = await mysApi(e, uid, "detail", { + role_id: uid, + server: getServer(uid), + avatar_id: avatars.id, + }); + if (skillres.retcode == 0 && skillres.data && skillres.data.skill_list) { + skill.id = avatars.id; + let skill_list = lodash.orderBy(skillres.data.skill_list, ["id"], ["asc"]); + for (let val of skill_list) { + val.level_original = val.level_current; + if (val.name.includes("普通攻击")) { + skill.a = val; + continue; + } + if (val.max_level >= 10 && !skill.e) { + skill.e = val; + continue; + } + if (val.max_level >= 10 && !skill.q) { + skill.q = val; + continue; + } + } + if (avatars.actived_constellation_num >= 3) { + if (avatars.constellations[2].effect.includes(skill.e.name)) { + skill.e.level_current += 3; + } else if (avatars.constellations[2].effect.includes(skill.q.name)) { + skill.q.level_current += 3; + } + } + if (avatars.actived_constellation_num >= 5) { + if (avatars.constellations[4].effect.includes(skill.e.name)) { + skill.e.level_current += 3; + } else if (avatars.constellations[4].effect.includes(skill.q.name)) { + skill.q.level_current += 3; + } + } + } + } + + return skill; +} + + +function get_character(avatars) { + let list = []; + let set = {}; + let setArr = []; + let text1 = ""; + let text2 = ""; + let bg = 2; + + let weapon = { + type: "weapon", + name: avatars.weapon.name, + showName: genshin.abbr[avatars.weapon.name] ? genshin.abbr[avatars.weapon.name] : avatars.weapon.name, + level: avatars.weapon.level, + affix_level: avatars.weapon.affix_level, + }; + + for (let val of avatars.reliquaries) { + if (set[val.set.name]) { + set[val.set.name]++; + + if (set[val.set.name] == 2) { + if (text1) { + text2 = "2件套:" + val.set.affixes[0].effect; + } else { + text1 = "2件套:" + val.set.affixes[0].effect; + } + } + + if (set[val.set.name] == 4) { + text2 = "4件套:" + val.set.name; + } + } else { + set[val.set.name] = 1; + } + + list.push({ + type: "reliquaries", + name: val.name, + level: val.level, + }); + } + + for (let val of Object.keys(set)) { + setArr.push({ + name: val, + num: set[val], + showName: genshin.abbr[val] ? genshin.abbr[val] : val, + }); + } + + if (avatars.reliquaries.length >= 2 && !text1) { + text1 = "无套装效果"; + } + + if (avatars.id == "10000005") { + avatars.name = "空"; + } else if (avatars.id == "10000007") { + avatars.name = "荧"; + } + + let reliquaries = list[0]; + return { + name: avatars.name, + showName: genshin.abbr[avatars.name] ? genshin.abbr[avatars.name] : avatars.name, + level: avatars.level, + fetter: avatars.fetter, + actived_constellation_num: avatars.actived_constellation_num, + weapon, + text1, + text2, + bg, + reliquaries, + set: setArr, + }; +} + +//获取uid +async function getUid(e) { + let res; + let reg = /[1|2|5][0-9]{8}/g; + + //从消息中获取 + if (e.msg) { + res = e.msg.match(reg); + if (res) { + //redis保存uid + redis.set(`genshin:uid:${e.user_id}`, res[0], { EX: 2592000 }); + return { isSelf: false, uid: res[0] }; + } + } + + //从群昵称获取 + res = e.sender.card.toString().match(reg); + + if (res) { + //redis保存uid + redis.set(`genshin:uid:${e.user_id}`, res[0], { EX: 2592000 }); + + return { isSelf: true, uid: res[0] }; + } + + //从redis获取 + res = await redis.get(`genshin:uid:${e.user_id}`); + if (res) { + redis.expire(`genshin:uid:${e.user_id}`, 2592000); + return { isSelf: true, uid: res }; + } + + return { isSelf: true, uid: false }; +} + +async function mysApi(e, uid, type, data = {}) { + if (BotConfig.mysCookies.length <= 0) { + Bot.logger.error("请打开config.js,配置米游社cookie"); + return { retcode: -300 }; + } + + let dayEnd = getDayEnd(); + + let cookie, index, isNew; + let selfCookie = NoteCookie[e.user_id]; + + //私聊发送的cookie + if (selfCookie && selfCookie.uid == uid) { + cookie = selfCookie.cookie; + } + //配置里面的cookie + else if (BotConfig.dailyNote && BotConfig.dailyNote[e.user_id] && BotConfig.dailyNote[e.user_id].uid == uid) { + cookie = BotConfig.dailyNote[e.user_id].cookie; + } else { + //获取uid集合 + let uid_arr = await redis.get(`genshin:ds:qq:${e.user_id}`); + + if (uid_arr) { + uid_arr = JSON.parse(uid_arr); + if (!uid_arr.includes(uid)) { + uid_arr.push(uid); + + await redis.set(`genshin:ds:qq:${e.user_id}`, JSON.stringify(uid_arr), { + EX: dayEnd, + }); + } + } else { + uid_arr = [uid]; + + await redis.set(`genshin:ds:qq:${e.user_id}`, JSON.stringify(uid_arr), { + EX: dayEnd, + }); + } + + if (uid_arr.length > e.groupConfig.mysUidLimit && !e.isMaster) { + return { retcode: -200 }; + } + + //限制无用uid查询 + if (uid < 100000050) { + return { retcode: 10102, message: "Data is not public for the user" }; + } + + isNew = false; + index = await redis.get(`genshin:ds:uid:${uid}`); + if (!index) { + //获取没有到30次的index + for (let i in BotConfig.mysCookies) { + //跳过达到上限的cookie + if (await redis.get(`genshin:ds:max:${i}}`)) { + continue; + } + let count = await redis.sendCommand(["scard", `genshin:ds:index:${i}`]); + if (count < 27) { + index = i; + break; + } + } + //查询已达上限 + if (!index) { + return { retcode: -100 }; + } + isNew = true; + } + if (!BotConfig.mysCookies[index]) { + return { retcode: -300 }; + } + + if (!BotConfig.mysCookies[index].includes("ltoken")) { + Bot.logger.error("米游社cookie错误,请重新配置"); + return { retcode: -400 }; + } + } + + let { url, headers, query, body } = getUrl(type, uid, data); + headers.Cookie = cookie || BotConfig.mysCookies[index]; + + let param = { + headers, + timeout: 10000, + }; + if (body) { + param.method = "post"; + param.body = body; + } else { + param.method = "get"; + } + + let response = {}; + try { + response = await fetch(url, param); + } catch (error) { + Bot.logger.error(error); + return false; + } + if (!response.ok) { + Bot.logger.error(response); + return false; + } + const res = await response.json(); + + if (!res) { + Bot.logger.mark(`mys接口没有返回`); + return false; + } + + if (isNew) { + await redis.sendCommand(["sadd", `genshin:ds:index:${index}`, uid]); + redis.expire(`genshin:ds:index:${index}`, dayEnd); + redis.set(`genshin:ds:uid:${uid}`, index, { EX: dayEnd }); + } + + if (res.retcode != 0 && ![10102, 1008, -1].includes(res.retcode)) { + let ltuid = headers.Cookie.match(/ltuid=(\w{0,9})/g)[0].replace(/ltuid=|;/g, ""); + + if (selfCookie && selfCookie.uid == uid) { + Bot.logger.mark(`mys接口报错:${JSON.stringify(res)},体力配置cookie,ltuid:${ltuid}`); + //体力cookie失效 + if (res.message == "Please login") { + delete NoteCookie[e.user_id]; + } + } else { + Bot.logger.mark(`mys接口报错:${JSON.stringify(res)},第${Number(index) + 1}个cookie,ltuid:${ltuid}`); + + //标记达到上限的cookie,自动切换下一个 + if ([10101].includes(res.retcode)) { + redis.set(`genshin:ds:max:${index}`, "1", { EX: dayEnd }); + } + } + } + + return res; +} + +function checkRetcode(res, uid, e) { + let qqName = ""; + switch (res.retcode) { + case 0: + Bot.logger.debug(`mys查询成功:${uid}`); + return false; + case -1: + break; + case -100: + e.reply("无法查询,已达上限\n请配置更多cookie"); + break; + case -200: + qqName = lodash.truncate(e.sender.card, { length: 8 }); + e.reply([segment.at(e.user_id, qqName), "\n今日查询已达上限"]); + break; + case -300: + e.reply("尚未配置公共查询cookie,无法查询原神角色信息\n私聊发送【配置cookie】进行设置"); + break; + case -400: + e.reply("米游社cookie错误,请重新配置"); + break; + case 1001: + case 10001: + case 10103: + e.reply("米游社接口报错,暂时无法查询"); + break; + case 1008: + qqName = lodash.truncate(e.sender.card, { length: 8 }); + e.reply([segment.at(e.user_id, qqName), "\n请先去米游社绑定角色"]); + break; + case 10101: + e.reply("查询已达今日上限"); + break; + case 10102: + if (res.message == "Data is not public for the user") { + qqName = lodash.truncate(e.sender.card, { length: 8 }); + e.reply([segment.at(e.user_id, qqName), "\n米游社数据未公开"]); + } else { + e.reply(`id:${uid}请先去米游社绑定角色`); + } + break; + } + + return true; +} + +/** + * @param {角色昵称} keyword + * @param {是否搜索角色默认名} search_val + * @returns + */ +export function roleIdToName(keyword, search_val = false) { + if (!keyword) { + return false; + } + if (search_val) { + return genshin.roleId[keyword][0] ? genshin.roleId[keyword][0] : ""; + } + + if (!nameID) { + nameID = new Map(); + for (let i in genshin.roleId) { + for (let val of genshin.roleId[i]) { + nameID.set(val, i); + } + } + } + let name = nameID.get(keyword); + return name ? name : ""; +} + +async function limitGet(e) { + if (!e.isGroup) { + return true; + } + + if (e.isMaster) { + return true; + } + + let key = `genshin:limit:${e.user_id}`; + let num = await redis.get(key); + + if (num && num >= e.groupConfig.mysDayLimit - 1) { + let name = lodash.truncate(e.sender.card, { length: 8 }); + e.reply([segment.at(e.user_id, name), "\n今日查询已达上限"]); + return false; + } + + return true; +} + +async function limitSet(e) { + if (!e.isGroup) { + return true; + } + + let key = `genshin:limit:${e.user_id}`; + let dayEnd = getDayEnd(); + + await redis.incr(key); + redis.expire(key, dayEnd); +} + +function getDayEnd() { + let now = new Date(); + let dayEnd = new Date(now.getFullYear(), now.getMonth(), now.getDate(), "23", "59", "59").getTime() / 1000; + + return dayEnd - parseInt(now.getTime() / 1000); +} + diff --git a/apps/character/character.css b/apps/character/character.css deleted file mode 100644 index 1bd9dda7..00000000 --- a/apps/character/character.css +++ /dev/null @@ -1,13 +0,0 @@ -*{ - padding:0; - margin:0; -} -html,body{ - width:100%; - height:10px; - - position:relative; -} -img.bg{ - width:100%; -} diff --git a/apps/character/character.html b/apps/character/character.html deleted file mode 100644 index ebcc1178..00000000 --- a/apps/character/character.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - test - - -
- -
- - diff --git a/apps/character/character.js b/apps/character/character.js deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/character/h.jpg b/apps/character/h.jpg deleted file mode 100644 index ed0e98c9..00000000 Binary files a/apps/character/h.jpg and /dev/null differ diff --git a/apps/character/w.jpg b/apps/character/w.jpg deleted file mode 100644 index 9adb5f2a..00000000 Binary files a/apps/character/w.jpg and /dev/null differ diff --git a/components/Data.js b/components/Data.js new file mode 100644 index 00000000..2c5fde31 --- /dev/null +++ b/components/Data.js @@ -0,0 +1,97 @@ +import lodash from "lodash"; +import fs from "fs"; + +let Data = { + + /* + * 根据指定的path依次检查与创建目录 + * */ + createDir(rootPath = "", path, includeFile = false) { + console.log(rootPath, path) + let pathList = path.split("/"), + nowPath = rootPath; + pathList.forEach((name, idx) => { + name = name.trim(); + if (!includeFile && idx < pathList.length - 1) { + nowPath += name + "/"; + if (name) { + if (!fs.existsSync(nowPath)) { + console.log(nowPath) + fs.mkdirSync(nowPath); + } + } + } + }) + }, + + /* + * 读取json + * */ + readJSON(root, path) { + if (!/\.json$/.test(path)) { + path = path + ".json"; + } + // 检查并创建目录 + Data.createDir(root, path, true); + + let jsonRet = fs.readFileSync(`${root}/${path}`, "utf8"); + return JSON.parse(jsonRet); + }, + + /* + * 写JSON + * */ + writeJson(path, file, data, space = "\t") { + if (!/\.json$/.test(file)) { + file = file + ".json"; + } + + // 检查并创建目录 + Data.createDir(path, true); + return fs.writeFileSync(`${path}/${file}`, JSON.stringify(data, null, space)); + }, + + /* + * 返回一个从 target 中选中的属性的对象 + * + * keyList : 获取字段列表,逗号分割字符串 + * key1, key2, toKey1:fromKey1, toKey2:fromObj.key + * + * defaultData: 当某个字段为空时会选取defaultData的对应内容 + * toKeyPrefix:返回数据的字段前缀,默认为空。defaultData中的键值无需包含toKeyPrefix + * + * */ + + getData(target, keyList = "", cfg = {}) { + target = target || {}; + let defaultData = cfg.defaultData || {}; + let ret = {}; + // 分割逗号 + if (typeof (keyList) === "string") { + keyList = keyList.split(","); + } + + lodash.forEach(keyList, (keyCfg) => { + // 处理通过:指定 toKey & fromKey + let _keyCfg = keyCfg.split(":"); + let keyTo = _keyCfg[0].trim(), + keyFrom = (_keyCfg[1] || _keyCfg[0]).trim(), + keyRet = keyTo; + if (cfg.lowerFirstKey) { + keyRet = lodash.lowerFirst(keyRet); + console.log('keyRet', keyRet) + } + if (cfg.keyPrefix) { + keyRet = cfg.keyPrefix + keyRet; + } + // 通过Data.getVal获取数据 + ret[keyRet] = Data.getVal(target, keyFrom, defaultData[keyTo], cfg); + }) + return ret; + }, + + getVal(target, keyFrom, defaultValue) { + return lodash.get(target, keyFrom, defaultValue); + } +}; +export default Data; diff --git a/components/MysApi.js b/components/MysApi.js new file mode 100644 index 00000000..721cb90e --- /dev/null +++ b/components/MysApi.js @@ -0,0 +1,158 @@ +import md5 from "md5"; +import lodash from 'lodash'; +import fetch from "node-fetch"; + +let MysApi = { + getUrl(type, uid, data = {}) { + let url = "https://api-takumi.mihoyo.com"; + let game_record = "/game_record/app/genshin/api/"; + let server = MysApi.getServer(uid); + let query, body; + + switch (type) { + //首页宝箱 + case "index": + url += game_record + "index"; + query = `role_id=${uid}&server=${server}`; + break; + //深渊 + case "spiralAbyss": + url += game_record + "spiralAbyss"; + query = `role_id=${uid}&schedule_type=${data.schedule_type}&server=${server}`; + break; + //角色详情 + case "character": + url += game_record + "character"; + body = JSON.stringify(data); + break; + //树脂每日任务(只能当前id) + case "dailyNote": + url += game_record + "dailyNote"; + query = `role_id=${uid}&server=${server}`; + break; + case "detail": + url += "/event/e20200928calculate/v1/sync/avatar/detail"; + query = `uid=${uid}®ion=${server}&avatar_id=${data.avatar_id}`; + break; + case "getAnnouncement": + url += "/game_record/card/wapi/getAnnouncement"; + break; + case "getGameRecordCard": + url += "/game_record/card/wapi/getGameRecordCard"; + query = `uid=${uid}`;//米游社id + break; + case "bbs_sign_info": + url += "/event/bbs_sign_reward/info"; + query = `act_id=e202009291139501®ion=${server}&uid=${uid}`; + break; + case "bbs_sign_home": + url += "/event/bbs_sign_reward/home"; + query = `act_id=e202009291139501®ion=${server}&uid=${uid}`; + break; + case "bbs_sign": + url += "/event/bbs_sign_reward/sign"; + body = JSON.stringify({ act_id: "e202009291139501", region: server, uid: uid, }); + break; + case "ys_ledger": + url = "https://hk4e-api.mihoyo.com/event/ys_ledger/monthInfo"; + query = `month=${data.month}&bind_uid=${uid}&bind_region=${server}`; + break; + } + + if (query) { + url += "?" + query; + } + + let headers; + if (type === "bbs_sign") { + headers = MysApi.getHeaders_sign(); + } else { + headers = MysApi.getHeaders(query, body); + } + + return { url, headers, query, body }; + }, + + getServer(uid) { + switch (uid.toString()[0]) { + case "1": + case "2": + return "cn_gf01"; //官服 + case "5": + return "cn_qd01"; //B服 + } + return "cn_gf01"; //官服 + }, + +//# Github-@lulu666lulu + getDs(q = "", b = "") { + let n = "xV8v4Qu54lUKrEYFZkJhB8cuOh9Asafs"; + let t = Math.round(new Date().getTime() / 1000); + let r = Math.floor(Math.random() * 900000 + 100000); + let DS = md5(`salt=${n}&t=${t}&r=${r}&b=${b}&q=${q}`); + return `${t},${r},${DS}`; + }, + +//签到ds + getDS_sign() { + const n = "h8w582wxwgqvahcdkpvdhbh2w9casgfl"; + const t = Math.round(new Date().getTime() / 1000); + const r = lodash.sampleSize("abcdefghijklmnopqrstuvwxyz0123456789", 6).join(""); + const DS = md5(`salt=${n}&t=${t}&r=${r}`); + return `${t},${r},${DS}`; + }, + + getHeaders(q = "", b = "") { + return { + "x-rpc-app_version": "2.20.1", + "x-rpc-client_type": 5, + DS: MysApi.getDs(q, b), + }; + }, + + getHeaders_sign() { + return { + "x-rpc-app_version": "2.3.0", + "x-rpc-client_type": 5, + "x-rpc-device_id": MysApi.guid(), + "User-Agent": " miHoYoBBS/2.3.0", + DS: MysApi.getDS_sign(), + }; + }, + + guid() { + function S4() { + return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1); + } + + return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4()); + }, + + // 按type请求 + request: async function (type, cfg) { + let { uid } = cfg; + let { url, headers } = MysApi.getUrl(type, uid); + return await MysApi.fetch(url, headers, cfg); + }, + + // 发送请求 + fetch: async function (url, cfg) { + let { cookie, error, success, headers, method } = cfg; + headers = headers || {}; + method = method || "get"; + headers.Cookie = cookie; + let response = await fetch(url, { method, headers }); + if (!response.ok) { + return await error(-1, { + msg: "米游社接口错误" + }) + } + let res = await response.json(); + if (res.retcode * 1 !== 0) { + return await error(res.retcode * 1, res) + } + return await success(res.data, res) + } +} + +export default MysApi; diff --git a/components/User.js b/components/User.js new file mode 100644 index 00000000..3b82a9ad --- /dev/null +++ b/components/User.js @@ -0,0 +1,295 @@ +import UserModel from "./models/UserModel.js"; +import { segment } from "oicq"; +import fetch from "node-fetch"; +import { MysApi } from "./index.js"; +import md5 from "md5"; + +const getUidByToken = async function (token) { + let ltoken = `ltoken=${token["ltoken"]}ltuid=${token["ltuid"]};`; + let cookie_token = `cookie_token=${token["cookie_token"]} account_id=${token["ltuid"]};`; + ltoken += cookie_token; + let uid = 0; + let url = host + "binding/api/getUserGameRolesByCookie?game_biz=hk4e_cn"; + + await MysApi.fetch(url, { + method: "get", + cookie: ltoken, + error: async () => { + throw `cookie错误:${res.message}`; + }, + success: async (data) => { + for (let val of data.list) { + //米游社默认展示的角色 + if (val.is_chosen) { + uid = val.game_uid; + break; + } + } + if (!uid) { + uid = data.list[0].game_uid; + } + + } + }); + return uid; +}; + + + + + +let User = {}; + +/* +* 在文本中检索uid,若未查找到则返回false +* */ +User.matchUid = function (msg) { + let ret = /[1|2|5][0-9]{8}/g.exec(msg); + if (ret) { + return ret[0]; + } + return false; +} + +/* +* 返回需要绑定 cookie +* +* */ +User.replyNeedBind = function (e, replyMsg = "") { + replyMsg = replyMsg || `您尚未绑定米游社cookie,无法进行操作`; + let helpMsg = "获取cookie后发送至当前聊天窗口即可,Cookie获取方式:https://docs.qq.com/doc/DUWNVQVFTU3liTVlO"; + + if (e.isGroup) { + replyMsg = segment.image(`file:///${_path}/resources/help/help.png`); + e.reply([replyMsg, helpMsg]); + } else { + e.reply(replyMsg); + e.reply(helpMsg); + } + + return false; +}; + +/* +* 获取当前用户消息所查询的目标用户 +* +* 策略:优先级依次递减 +* 1. 消息里包含 uid +* 2. 存在 msg.at,且msg.at 用户 是绑定用户 +* 3. 存在 msg.at 且msg.at 名片包含uid +* 4. 当前用户为绑定用户 +* 5. 当前用户名片包含 uid +* 6. 当前用户存在redis-uid 缓存 +* */ +User.getTargetUser = async function (e, selfUser) { + let res; + let reg = /[1|2|5][0-9]{8}/g; + let msg = e.msg; + + let targetId, targetUser; + + /*-- 有指定的查询目标 --*/ + + /* 消息里包含 uid的话优先匹配 */ + if (e.msg) { + targetId = getUid(e.msg); + if (targetId) { + // 根据targetId查找用户 + targetUser = await User.get({ uid: targetId }); + //存在则返回,不存在则将该uid绑定至当前用户 + if (targetUser) { + return targetUser; + } + + let selfUserBindUid = await selfUser.getRegUid(); + // 当前用户未注册,则将uid绑定至当前用户 + if (!selfUser.isBind || selfUser.uid == targetId) { + await selfUser.setRegUid(targetId) + return selfUser; + } else { + // 当前用户为注册用户,返回 Draft + return User.get({ uid: targetId }, true) + } + + + selfUser.setRegUid(targetId); + return selfUser; + + } + } + + // 如果有at的用户,使用被at的用户 + if (!targetId && e.at) { + targetUser = await User.get({ qq: e.at.qq }); + + // 识别at用户的名片结果。如果at用户无uid信息则使用此结果 + targetId = getUid(e.at.card.toString()); + + if (targetUser) { + targetUser + } + } + + if (targetUser) { + let targetUserUid = await targetUser.getRegUid(); + targetUser.setRegUid(targetUserUid || targetId) + if (!targetId && !targetUserUid) { + // return false; + } + } + + targetUser = selfUser; + // 使用当前用户作为targetUser + if (selfUser.isBind) { + // 设置查询用户为当前用户 + targetUser = selfUser; + + // 从当前用户的昵称中匹配uid + targetId = getUid(e.sender.card.toString()); + } else if (false) { + // selfUser.uid = + } + + selfUser.setRegUid(uid); + + + // 存在查询用户,但无 + if (!targetUser && targetId) { + // 根据uid创建的用户包含uid + return User.get({ uid: targetId }, true); + + } else if (targetUser && targetId) { + // 存在目标用户,但不存在查询uid的话,赋值给targetUser + if (!targetUser.uid && targetId) { + targetUser.uid = targetId; + } + } + + // + if (targetUser) { + targetUser.setLastQuery(targetUser.id); + } + + return targetUser; + + + //从redis获取 + res = await redis.get(`genshin:uid:${e.user_id}`); + if (res) { + redis.expire(`genshin:uid:${e.user_id}`, 2592000); + return { isSelf: true, uid: res }; + } + return { isSelf: true, uid: false }; + +}; + + +/* +* 获取当前 MysApi 的最佳查询User +* +* 策略,优先级依次递减 ( sUid 在下方代指被查询的Uid ) +* 1. 如果 sUid 为绑定用户,优先使用绑定用户自身的 cookie( 在不允许跨系统调用时需传递 allowCrossUid = false ) +* 2. 如果 sUid 24小时内被查询过,优先使用曾经查询过该用户的 cookie +* 3. 如果 当前查询用户为绑定用户,优先使用绑定用户自身的 cookie +* 4. 使用系统cookie : 暂未接管bot逻辑,目前需要传入getBotCookie方法 +* +* */ +User.getReqUser = async function (e, allowCrossUser = true, getBotCookie=false) { + + // 当前用户 + let selfUser = User.get(e.user_id); + + // 被查询用户 + let targetUser = await User.getTargetUser(e); + + // 如果 sUid 为绑定用户,优先使用绑定用户自身的 cookie + if (targetUser.isBind && allowCrossUser) { + return targetUser; + } + + // 如果 sUid 24小时内被查询过,优先使用曾经查询过该用户的 cookie + let lastQueryUser = targetUser.getSourceUser(); + if (lastQueryUser) { + return lastQueryUser; + } + + // 如果 当前查询用户为绑定用户,优先使用绑定用户自身的 cookie + if (selfUser.isBind) { + await targetUser.setSourceUser(selfUser); + return selfUser; + } + + // 使用系统 cookie + // 将系统注册的cookie视作机器人,同样包装为 User 用户返回 + let botUser = User.getAvailableBot(e, true); + if (botUser) { + await targetUser.setSourceUser(botUser); + return botUser; + } + return false; +}; + +/* +* 对当前用户的类型进行检查,并对不符合条件的用户进行回复 +* type: all-不检查,bind-绑定用户(设置了有效的NoteCookie),master-管理员 +* replyMsg:不符合条件的消息 +* */ +User.check = async function (e, type = "all", checkParams = {}) { + let self = User.get(e.user_id); + + let { limit = true, action, replyMsg } = checkParams; + + // 校验频度限制 + if (limit) { + if (!(await limitGet(e))) return true; + } + + switch (type) { + case 'bind': + // 需要是绑定用户 + if (!self.isBind) { + if (!replyMsg) { + action = action || "进行操作"; + replyMsg = "您尚未绑定米游社cookie,无法" + action; + } + User.replyNeedBind(e, replyMsg); + return false; + } + break; + + case 'master': + if (!self.isMaster) { + // 如果主动传递了replyMsg则进行回复,否则静默 + if (replyMsg) { + e.reply(replyMsg) + } + return false; + } + + case 'all': + //不检查权限 + return self; + default: + return false; + } + return self; +}; + +/* +* 获取可用的机器人,作为UserModel返回 +* noticeError: 在无可用机器人时是否 e.reply 错误信息 +* */ +// TODO: 待实现 +User.getAvailableBot = async function (e, noticeError = false) { + let id = md5("BOT_" & md5('cookie')); + + User.get(md5); + User.bindCookie(cookie, { + isBot: true + }); + + return false; +}; + +export default User; + diff --git a/components/index.js b/components/index.js new file mode 100644 index 00000000..2e675a64 --- /dev/null +++ b/components/index.js @@ -0,0 +1 @@ +export Data from "./Data.js"; \ No newline at end of file diff --git a/components/models/Base.js b/components/models/Base.js index 6d175d0a..6596a5c2 100644 --- a/components/models/Base.js +++ b/components/models/Base.js @@ -1 +1,23 @@ -export default class Base{} +import { Data } from "../index.js"; + +export default class Base { + + constructor() { + this.name = ""; + } + + toString() { + return this.name; + } + + getData(arrList = "", cfg = {}) { + return Data.getData(this, arrList, cfg); + } + + // 获取指定值数据,支持通过 + getVal(key, defaultValue) { + return Data.getVal(this, key, defaultValue); + } + + +} \ No newline at end of file diff --git a/components/models/Character.js b/components/models/Character.js index 0cfd68ac..10d6ae42 100644 --- a/components/models/Character.js +++ b/components/models/Character.js @@ -1,60 +1,165 @@ import Base from "./Base.js"; -import { roleId, abbr } from "../../../config/genshin/roleId.js"; +import { roleId, abbr } from "../../../../config/genshin/roleId.js"; import lodash from "lodash"; import fs from "fs"; +import Data from "../Data.js"; +import request from "request"; + let characterMap = {}; -let characterAttr = {}; -const characterMeta = JSON.parse(fs.readFileSync("../meta/characters.json", "utf8")); +// 读取配置 +let characterMeta = Data.readJSON("./plugins/miao-plugin/components/meta", "characters.json")// JSON.parse(fs.readFileSync(__dirname + "../meta/characters.json", "utf8")); +characterMeta = lodash.keyBy(characterMeta, (d) => d.Name); +const elemName = { + pyro: "火", + hydro: "水", + dendro: "草", + electro: "雷", + anemo: "风", + cryo: "冰", + geo: "岩" +}; -lodash.forEach(characterMeta, (meta)=>{ - characterMap[meta.Name] = new Character(name, meta) -}); - -lodash.forEach(roleId, function(names, id){ - if(characterMap[names[0]]){ - characterMap[names[0]].id = id; - } -}); class Character extends Base { - - constructor(name, meta) { + constructor(name) { super(); - let key = "".split(); - this._meta = meta; - } - get sortName() { - return characterAttr[this.name] || this.name; + this.name = name; + this.sName = this.name; + this.id = YunzaiApps.mysInfo['roleIdToName'](name); + lodash.extend(this, getMetaData(name)) } - get id(){ - for(let id in roleId){ - if(roleId[id] && role[id][0] === this.name){ - return id; - } + get id() { + for (let id in roleId) { + if (roleId[id] && role[id][0] === this.name) { + return id; } + } } - getData(key){ + async checkImgCache(resDir) { + // 处理img信息 + let chcheDir = resDir + "/cache/"; + } +} + +let cacheImgFile = async function (url, cacheDir) { + let ret = /^https:\/\/(.*)$/.exec(url); + if (ret && ret[1] && /\.(png|jpg|gif|jpeg|webp)$/.test(ret[1])) { + let fileName = ret[1]; + Data.createDir(cacheDir, fileName); + request(imgUrl).pipe(fs.createWriteStream(cacheDir + fileName)); } } +// 获取指定角色的Meta信息 +let getMetaData = function (name) { + if (!characterMeta[name]) { + return {}; + } + const metaCfg = { lowerFirstKey: true }, + meta = characterMeta[name]; + + // 处理基础信息 + let ret = Data.getData(meta, "Name,Title,desc:Description,astro:AstrolabeName", metaCfg); + + // 处理图像信息 + ret.img = Data.getData(meta, "Weapon,Element,City,Profile,GachaCard,GachaSplash,Source", metaCfg); + + // 处理元素 + let elemRet = /([a-z]*).png$/.exec(meta.Element); + if (elemRet && elemRet[1]) { + ret.elementType = ret[1]; + ret.element = elemName[ret.elementType]; + } + + // 处理属性 + ret.stat = Data.getData(meta, "BaseHP,BaseATK,BaseDEF,aStat:AscensionStat,aStatValue:AscensionStatValue"); + ret.statPerLv = lodash.map(meta.CharStat, (d) => Data.getData(d, "Name,Values", metaCfg)); + + // 处理材料 + let itemKey = lodash.map("talent,boss,gemStone,Local,monster,weekly".split(","), (a) => `${a}:${lodash.upperFirst(a)}.Name`); + ret.item = Data.getData(meta, itemKey, metaCfg) + + // 处理天赋 + ret.talents = { + a: getTalentData(meta.NormalAttack), + e: getTalentData(meta.TalentE), + q: getTalentData(meta.TalentQ), + }; + + // 处理其他天赋 + ret.passiveTalents = lodash.map(meta.PassiveTalents, (d) => Data.getData(d, "Name,desc:Description,icon:Source", metaCfg)) + + // 处理命座信息 + let cons = {}; + lodash.forEach(meta.Constellation, (data, key) => { + cons[key.replace("Constellation")] = Data.getData(data, "Name,icon:Source,desc:Description", metaCfg); + }) + ret.cons = cons; + + return ret; +} + +// 获取Meta中的天赋信息 +const getTalentData = function (data) { + let ret = Data.getData(data, "Name,icon:Source,desc:Description", { lowerFirstKey: true }); + let attr = [], table = [], tableKeys; + + lodash.forEach(data.Table, (tr) => { + let tmp = { name: tr.Name }, isTable = true, isDef = false, lastVal; + + // 检查当前行是否是表格数据 + lodash.forEach(tr.Values, (v) => { + // 如果为空则退出循环 + if (v === "") { + isTable = false; + return false; + } + + if (typeof (lastVal) === "undefined") { + // 设定初始值 + lastVal = v; + } else if (lastVal != v) { + // 如果与初始值不一样,则标记退出循环 + isDef = true; + return false; + } + }); + + if (isTable && isDef) { + if (!tableKeys) { + tableKeys = lodash.keys(tr.Values); + } + tmp.value = lodash.map(tableKeys, (k) => tr.Values[k]) + table.push(tmp); + } else { + tmp.value = lastVal; + attr.push(tmp) + } + }) + ret.attr = attr; + ret.table = table; + ret.tableKeys = tableKeys; + return ret; +} Character.get = function (val) { - let name = YunzaiApps.mysInfo.roleIdToName(val); - if(!name){ + let roleid = YunzaiApps.mysInfo['roleIdToName'](val); + let name = YunzaiApps.mysInfo['roleIdToName'](roleid, true); + if (!name) { return false; } - if(!characterMap[name]){ - //characterMap[name] = + if (!characterMap[name]) { + let character = new Character(name); + characterMap[name] = character; } - - + return characterMap[name]; }; export default Character; diff --git a/components/models/UserModel.js b/components/models/UserModel.js new file mode 100644 index 00000000..d0d68881 --- /dev/null +++ b/components/models/UserModel.js @@ -0,0 +1,273 @@ +/* +* UserModel Class +* 提供用户实例相关的操作方法 +* +* * TODO:将与具体用户操作相关的方法逐步迁移到UserModel中,外部尽量只调用实例方法 +* 以确保逻辑收敛且维护性更强 +* */ +import BaseModel from "./BaseModel.js" +import lodash from "lodash"; +import md5 from "md5"; +import { MysApi, Data } from "../index.js"; + +const _path = process.cwd(); +const redisPrefix = "cache"; + +const userInstanceReclaimTime = 60; +let userMap = {}; + +// Redis相关操作方法 +const Cache = { + prefix: "genshin", + async get(type, key) { + return await redis.get(`${Cache.prefix}:${type}:${key}`); + }, + async set(type, key, val, exp = 2592000) { + return await redis.set(`${Cache.prefix}:${type}:${key}`, val, { EX: exp }); + }, + async del(type, key) { + return await redis.del(`${Cache.prefix}:${type}:${key}`); + } +}; +const saveCookieFile = function () { + Data.writeJson("./data/NoteCookie/", "NoteCookie", NoteCookie); +}; + +// UserModel class +class UserModel extends BaseModel { + + // 初始化用户 + constructor(id) { + super(); + // 一个id对应一个用户,根据id检索用户信息 + this.id = id; + + // 检索是否存在NoteCookie信息 + let data = NoteCookie[id]; + + if (data) { + this._data = data; + this.isPush = data.isPush; + this.isSignAuto = data.isSignAuto; + this.uid = data.uid; + } else { + this._data = {}; + } + } + + // 是绑定的cookie用户 + // 需要存在NoteCookie记录且存在 cookie 与 uid 才认为是正确记录 + get isBind() { + let dbData = NoteCookie[this.id]; + return !!(dbData && dbData.cookie && dbData.uid); + } + + // 是否是管理员 + // TODO + get isMaster() { + return !this.isBot && BotConfig.masterQQ && BotConfig.masterQQ.includes(Number(this.id)); + } + + get isBot() { + // todo + return false; + } + + // 获取当前用户cookie + get cookie() { + return this._data.cookie; + } + + // 获取当前用户uid + get uid() { + return this._uid || this._data.uid || this._reg_uid; + } + + set uid(uid) { + this._uid = uid; + this._reg_uid = uid; + } + + // 保存用户信息 + /* + async _save() { + // todo + return + + let data = NoteCookie[this.id] || this._data || {}; + + // 将信息更新至 NoteCookie + data.id = this.id; + data.uid = this._uid || this._data.uid; + data.cookie = this._cookie || this._data.cookie; + data.isPush = this.isPush; + data.isAutoSign = !!this.isAutoSign; + + // 保存信息 + NoteCookie[this.id] = data; + this._data = data; + saveCookieFile(); + + // 建立当前用户相关缓存 + await this.refreshCache(); + return this; + } + */ + + // 设置&更新用户缓存 + async refreshCache() { + // 设置缓存 + await Cache.set("id-uid", this.qq, this.uid); + await Cache.set("uid-id", this.uid, this.id); + Bot.logger.mark(`绑定用户:QQ${this.id},UID${this.uid}`); + } + + // 删除用户缓存 + async delCache() { + await Cache.del("id-uid", this.id); + await Cache.del("uid-id", this.uid); + } + + + // 获取曾经查询过当前用户的人 + async getSourceUser() { + let lastQuery = await Cache.get("id-source", this.id); + + if (lastQuery) { + return UserModel.get(lastQuery); + } + + return false; + } + + // 设置曾经查询过当前用户的人,缓存23小时 + async setSourceUser(user) { + await Cache.set("id-source", this.id, user.id, 3600 * 23); + } + + // 删除曾经查询过当前用户的人 + async delSourceUser() { + await Cache.del("id-source", this.id); + } + + + /* 获取当前用户注册的uid + * + * 1. 如果是绑定用户,优先返回当前绑定的uid(cookie 对应uid) + * 2. 返回redis中存储的uid + * + * 注:redis uid需要主动调用一次 getRegUid 才能被this.uid访问到 + * + * */ + async getRegUid() { + if (this.isBind) { + return this.uid; + } + if (!this._reg_uid) { + let uid = await Cache.get('id-regUid', this.id); + if (uid) { + this._reg_uid = uid; + } + } + return this._reg_uid; + } + + async setRegUid(uid) { + // 只有非绑定用户才设置 注册uid + if (!this.isBind) { + this._reg_uid = uid; + Cache.set('id-regUid', this.id, uid); + Cache.set('regUid-id', this.uid, this.id); + } + } +} + + + +/* UserModel static function */ + +/* +* 获取用户实例 +* query为获取条件,默认为 id +* +* */ +UserModel.get = async function (query, getDraftWhenNotFound = false) { + let user = await getUser(query, getDraftWhenNotFound); + + user._reclaimFn && clearTimeout(user._reclaimFn); + user._reclaimFn = setTimeout(() => { + delete userMap[user.id]; + }, userInstanceReclaimTime); + userMap[user.id] = user; + + return user; +}; + +// 格式化查询 +const formatQuery = function (query) { + if (typeof (query) === "string") { + return { id: query }; + } + return query; +}; + +let getUser = async function (query, getDraftWhenNotFound = false) { + query = formatQuery(query); + + let id = ""; + // 根据id获取用户 + if (query.id) { + id = query.id; + } else if (query.uid) { + // 根据uid检索id + id = await Cache.get("uid-id", query.uid); + if (!id) { + // 如未查找到,则从注册uid中检索 + id = await Cache.get("regUid-id", query.uid) + } + } else if (query.token) { + // 根据token检索id + // 不常用,仅用在机器人绑定环节 + id = await Cache.get("token-id", query.token); + } + + // 已有实例优先使用已有的 + if (userMap[id]) { + return userMap[id]; + } + + // 如果是注册用户,则返回新instance + if (NoteCookie[id]) { + return new UserModel(id); + } + + // 如果允许返回Draft,则生成并返回 + if (getDraftWhenNotFound) { + return getDraft(query); + } + + // 未查询到用户则返回false + return false; +} + +let getDraft = function (query) { + let id = ''; + if (query.id) { + id = query.id; + } else if (query.uid) { + id = '_UID_' + query.uid; + } else if (query.token) { + id = "_CK_" + md5(query.token); + } + + let user = new UserModel(id); + user.id = query.id; + user.uid = query.uid; + user.cookie = query.cookie; + return user; +} + + + + +export default UserModel; diff --git a/config.js b/config.js new file mode 100644 index 00000000..7b46be8d --- /dev/null +++ b/config.js @@ -0,0 +1,3 @@ +export default{ + +} \ No newline at end of file diff --git a/index.js b/index.js index e69de29b..f03b276f 100644 --- a/index.js +++ b/index.js @@ -0,0 +1,13 @@ + + +export const rule = { + character: { + reg: "^#(.*)$", + priority: 208, + describe: "【#刻晴】角色详情", + } +}; + + +export { character } from "./apps/character.js"; + diff --git a/miao-plugin.js b/miao-plugin.js deleted file mode 100644 index e69de29b..00000000 diff --git a/resources/character/character.css b/resources/character/character.css new file mode 100644 index 00000000..6f96c923 --- /dev/null +++ b/resources/character/character.css @@ -0,0 +1,304 @@ +@font-face { + font-family: "HWZhongSong"; + src: url("../../font/华文中宋.TTF"); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: "tttgbnumber"; + src: url("../../font/tttgbnumber.ttf"); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: "NZBZ"; + src: url("../font/NZBZ.ttf"); + font-weight: normal; + font-style: normal; +} + +* { + margin: 0; + padding: 0; + box-sizing: border-box; + user-select: none; +} + +html, body { + width: 500px; +} + +body { + font-size: 16px; + color: #fff; + font-family: "tttgbnumber"; + transform: scale(1.40); + transform-origin: 0 0; +} + +.container { + position: relative; + background-color: #1234; + width: 100%; +} + +.container img.bg { + width: 100%; + margin-bottom: -1px; +} + +.info { + position: absolute; + background: rgba(0, 0, 0, .5); + bottom: 0px; + left: 0px; + right: 0px; + box-shadow: 0 -5px 10px 0 #000; + padding:35px 10px 10px 35px; +} + +.role_box { + padding: 5px 10px; + background-repeat: no-repeat; + position: relative; +} + +.title { + font-size: 36px; +} + +.role_name { + font-family: "NZBZ"; + font-size: 80px; + letter-spacing: 5px; + line-height: 90px; + height: 100px; + text-shadow: 0 0 1px #000, 3px 3px 6px #000; + display: inline-block; + position:absolute; + top:-70px; + left:20px; +} + +.role_name:after { + content: ""; + display: block; + position: absolute; + background-image: linear-gradient(to right, rgba(255, 255, 255, 0.5) 20%, rgba(255, 255, 255, 0.5) 80%, rgba(255, 255, 255, 0) 100%); + right: -50px; + min-width: 360px; + height: 1px; + bottom: 0; + left: -50px; + opacity: 1; + transition: width 0.3s 0.1s, opacity 0.3s 0.1s; +} + + +.weapon { + text-align: center; + font-size: 20px; + padding: 3px; + background: rgba(0, 0, 0, 0.6); + border-radius: 5px; + height: 100px; + width: 100px; + position: absolute; + overflow: hidden; + right:15px; + top:45px; +} + +.lv { + font-family: "tttgbnumber"; + font-size: 26px; + margin: 10px 5px 2px 5px; +} + + +.weapon .num { + position: absolute; + bottom: 0px; + font-size: 12px; + border-radius: 5px; + padding: 1px 5px; + background-color: rgba(0, 0, 0, var(--bg-opacity)); + --bg-opacity: 0.75; +} + +.weapon_num { + position: absolute; + top: 0; + right: 0; + width: 30px; + height: 30px; + font-size: 20px; + text-align: center; + line-height: 30px; + background: #000; + border-radius: 5px; + padding: 1px 3px; +} + +.weapon img { + width: 100%; + transform: scale(1.2, 1.2); +} + +.equiv .img_box { + width: 46px; + height: 46px; + border: 1px solid #d3bc8d; + border-radius: 5px; + overflow: hidden; +} + +.equiv img { + width: 100%; + transform: scale(1.2, 1.2); +} + + +.detail { + margin-left: 5px; + width: 300px; + margin-top: 3px; + padding: 5px 0; + display: flex; + position: relative; +} + +.skill { + margin-left: 5px; + width: 300px; + padding-bottom: 6px; + display: flex; + position: relative; +} + +.text_box::before { + content: ""; + display: block; + position: absolute; + background-image: linear-gradient( + to right, + rgba(255, 255, 255, 0) 0%, + rgba(255, 255, 255, 0.5) 20%, + rgba(255, 255, 255, 0.5) 80%, + rgba(255, 255, 255, 0) 100% + ); + width: 0%; + height: 1px; + top: 0; + left: -15px; + width: 300px; + opacity: 1; + transition: width 0.3s 0.1s, opacity 0.3s 0.1s; +} + +.text_box::after { + content: ""; + display: block; + position: absolute; + background-image: linear-gradient( + to right, + rgba(255, 255, 255, 0) 0%, + rgba(255, 255, 255, 0.5) 20%, + rgba(255, 255, 255, 0.5) 80%, + rgba(255, 255, 255, 0) 100% + ); + width: 0%; + height: 1px; + bottom: 0; + left: -15px; + width: 300px; + opacity: 1; + transition: width 0.3s 0.1s, opacity 0.3s 0.1s; +} + +.detail p, +.skill p { + margin-right: 4px; + line-height: 16px; + width: 90px; + white-space: nowrap; +} + +.no_skill { + padding: 10px 0; +} + +.star { + width: 16px; + vertical-align: -2px; + margin-right: 1px; +} + +.equiv { + margin-top: 12px; +} + +.row { + display: flex; + flex-wrap: wrap; + /*margin-bottom: 5px;*/ +} + +.equiv { + margin: 0 10px 8px 10px; + text-align: center; + font-size: 20px; + padding: 3px; + background: rgba(0, 0, 0, 0.6); + border-radius: 5px; + height: 52px; + width: 52px; + position: relative; + display:flex; +} + +.equiv .num { + position: absolute; + bottom: 0px; + font-size: 12px; + /*background: rgba(0,0,0,.6);*/ + border-radius: 5px; + padding: 1px 5px; + background-color: rgba(0, 0, 0, var(--bg-opacity)); + --bg-opacity: 0.75; + border-radius: 9999px; +} + + +.equiv .img_box { + width: 46px; + height: 46px; + border: 1px solid #d3bc8d; + border-radius: 5px; + overflow: hidden; +} + +.equiv img { + width: 100%; + transform: scale(1.2, 1.2); +} + +.equiv_info { + display: inline-block; + font-size: 15px; + padding: 5px 5px 1px 7px; + border-radius: 10px; + background: linear-gradient(0deg, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2)), rgba(114, 102, 104, 0.3); + margin-left: 5px; +} + +.equiv_info .text { + margin-bottom: 5px; + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; +} diff --git a/resources/character/character.html b/resources/character/character.html new file mode 100644 index 00000000..4830cb33 --- /dev/null +++ b/resources/character/character.html @@ -0,0 +1,55 @@ + + + + + + + + + + + + + +
+
+
+ {{"神里凌华"}} +
+
ID:{{uid}} Lv.{{level}} ❤{{fetter}}
+ +
+
+ +
+

lv{{weapon.level}}

+

{{weapon.affix_level}}

+
+ + {{ if skill.a }} +
+

爆发:{{ skill.q.level_current}}

+

战技:{{ skill.e.level_current}}

+

普攻:{{ skill.a.level_current}}

+
+ {{/if}} + +
+
+
+ +
+

+{{reliquaries.level}}

+
+
+
+
{{text1}}
+
{{text2}}
+
+
+
+
+
+ + + diff --git a/resources/character/星星.png b/resources/character/星星.png new file mode 100644 index 00000000..99f2bd66 Binary files /dev/null and b/resources/character/星星.png differ diff --git a/resources/characterImg/七七/1.jpg b/resources/characterImg/七七/1.jpg new file mode 100644 index 00000000..97b9a9de Binary files /dev/null and b/resources/characterImg/七七/1.jpg differ diff --git a/resources/characterImg/七七/10.jpg b/resources/characterImg/七七/10.jpg new file mode 100644 index 00000000..fe9318dd Binary files /dev/null and b/resources/characterImg/七七/10.jpg differ diff --git a/resources/characterImg/七七/2.jpg b/resources/characterImg/七七/2.jpg new file mode 100644 index 00000000..36fff057 Binary files /dev/null and b/resources/characterImg/七七/2.jpg differ diff --git a/resources/characterImg/七七/3.jpg b/resources/characterImg/七七/3.jpg new file mode 100644 index 00000000..d4c9b64a Binary files /dev/null and b/resources/characterImg/七七/3.jpg differ diff --git a/resources/characterImg/七七/4.jpg b/resources/characterImg/七七/4.jpg new file mode 100644 index 00000000..1225be0f Binary files /dev/null and b/resources/characterImg/七七/4.jpg differ diff --git a/resources/characterImg/七七/5.jpg b/resources/characterImg/七七/5.jpg new file mode 100644 index 00000000..afda852c Binary files /dev/null and b/resources/characterImg/七七/5.jpg differ diff --git a/resources/characterImg/七七/6.jpg b/resources/characterImg/七七/6.jpg new file mode 100644 index 00000000..6bc4d6d0 Binary files /dev/null and b/resources/characterImg/七七/6.jpg differ diff --git a/resources/characterImg/七七/7.jpg b/resources/characterImg/七七/7.jpg new file mode 100644 index 00000000..4ce02851 Binary files /dev/null and b/resources/characterImg/七七/7.jpg differ diff --git a/resources/characterImg/七七/8.jpg b/resources/characterImg/七七/8.jpg new file mode 100644 index 00000000..1989d31b Binary files /dev/null and b/resources/characterImg/七七/8.jpg differ diff --git a/resources/characterImg/七七/9.jpg b/resources/characterImg/七七/9.jpg new file mode 100644 index 00000000..afda852c Binary files /dev/null and b/resources/characterImg/七七/9.jpg differ diff --git a/resources/characterImg/丽莎/1.jpg b/resources/characterImg/丽莎/1.jpg new file mode 100644 index 00000000..1face284 Binary files /dev/null and b/resources/characterImg/丽莎/1.jpg differ diff --git a/resources/characterImg/丽莎/2.jpg b/resources/characterImg/丽莎/2.jpg new file mode 100644 index 00000000..df6ce70c Binary files /dev/null and b/resources/characterImg/丽莎/2.jpg differ diff --git a/resources/characterImg/九条裟罗/1.jpg b/resources/characterImg/九条裟罗/1.jpg new file mode 100644 index 00000000..1c41a48f Binary files /dev/null and b/resources/characterImg/九条裟罗/1.jpg differ diff --git a/resources/characterImg/九条裟罗/2.jpg b/resources/characterImg/九条裟罗/2.jpg new file mode 100644 index 00000000..0c8a8f29 Binary files /dev/null and b/resources/characterImg/九条裟罗/2.jpg differ diff --git a/resources/characterImg/云堇/1.jpg b/resources/characterImg/云堇/1.jpg new file mode 100644 index 00000000..5f645a2c Binary files /dev/null and b/resources/characterImg/云堇/1.jpg differ diff --git a/resources/characterImg/云堇/10.jpg b/resources/characterImg/云堇/10.jpg new file mode 100644 index 00000000..0124287c Binary files /dev/null and b/resources/characterImg/云堇/10.jpg differ diff --git a/resources/characterImg/云堇/11.jpg b/resources/characterImg/云堇/11.jpg new file mode 100644 index 00000000..b3f789cb Binary files /dev/null and b/resources/characterImg/云堇/11.jpg differ diff --git a/resources/characterImg/云堇/12.jpg b/resources/characterImg/云堇/12.jpg new file mode 100644 index 00000000..e2ad32c2 Binary files /dev/null and b/resources/characterImg/云堇/12.jpg differ diff --git a/resources/characterImg/云堇/13.jpg b/resources/characterImg/云堇/13.jpg new file mode 100644 index 00000000..f6eca0ad Binary files /dev/null and b/resources/characterImg/云堇/13.jpg differ diff --git a/resources/characterImg/云堇/14.jpg b/resources/characterImg/云堇/14.jpg new file mode 100644 index 00000000..a4122e8e Binary files /dev/null and b/resources/characterImg/云堇/14.jpg differ diff --git a/resources/characterImg/云堇/15.jpg b/resources/characterImg/云堇/15.jpg new file mode 100644 index 00000000..34bdb5d0 Binary files /dev/null and b/resources/characterImg/云堇/15.jpg differ diff --git a/resources/characterImg/云堇/16.jpg b/resources/characterImg/云堇/16.jpg new file mode 100644 index 00000000..fc83fe9e Binary files /dev/null and b/resources/characterImg/云堇/16.jpg differ diff --git a/resources/characterImg/云堇/2.jpg b/resources/characterImg/云堇/2.jpg new file mode 100644 index 00000000..cf2be658 Binary files /dev/null and b/resources/characterImg/云堇/2.jpg differ diff --git a/resources/characterImg/云堇/3.jpg b/resources/characterImg/云堇/3.jpg new file mode 100644 index 00000000..1c929223 Binary files /dev/null and b/resources/characterImg/云堇/3.jpg differ diff --git a/resources/characterImg/云堇/4.jpg b/resources/characterImg/云堇/4.jpg new file mode 100644 index 00000000..fd4866c3 Binary files /dev/null and b/resources/characterImg/云堇/4.jpg differ diff --git a/resources/characterImg/云堇/5.jpg b/resources/characterImg/云堇/5.jpg new file mode 100644 index 00000000..7f14a1eb Binary files /dev/null and b/resources/characterImg/云堇/5.jpg differ diff --git a/resources/characterImg/云堇/6.jpg b/resources/characterImg/云堇/6.jpg new file mode 100644 index 00000000..e5ad4574 Binary files /dev/null and b/resources/characterImg/云堇/6.jpg differ diff --git a/resources/characterImg/云堇/7.jpg b/resources/characterImg/云堇/7.jpg new file mode 100644 index 00000000..cbc6887a Binary files /dev/null and b/resources/characterImg/云堇/7.jpg differ diff --git a/resources/characterImg/云堇/8.jpg b/resources/characterImg/云堇/8.jpg new file mode 100644 index 00000000..fceeb4f4 Binary files /dev/null and b/resources/characterImg/云堇/8.jpg differ diff --git a/resources/characterImg/云堇/9.jpg b/resources/characterImg/云堇/9.jpg new file mode 100644 index 00000000..fac97e7e Binary files /dev/null and b/resources/characterImg/云堇/9.jpg differ diff --git a/resources/characterImg/五郎/1.jpg b/resources/characterImg/五郎/1.jpg new file mode 100644 index 00000000..908a3fe5 Binary files /dev/null and b/resources/characterImg/五郎/1.jpg differ diff --git a/resources/characterImg/五郎/2.jpg b/resources/characterImg/五郎/2.jpg new file mode 100644 index 00000000..5fcc3f1b Binary files /dev/null and b/resources/characterImg/五郎/2.jpg differ diff --git a/resources/characterImg/优菈/1.jpg b/resources/characterImg/优菈/1.jpg new file mode 100644 index 00000000..289ed3fb Binary files /dev/null and b/resources/characterImg/优菈/1.jpg differ diff --git a/resources/characterImg/优菈/10.jpg b/resources/characterImg/优菈/10.jpg new file mode 100644 index 00000000..7c419e70 Binary files /dev/null and b/resources/characterImg/优菈/10.jpg differ diff --git a/resources/characterImg/优菈/2.jpg b/resources/characterImg/优菈/2.jpg new file mode 100644 index 00000000..84732daa Binary files /dev/null and b/resources/characterImg/优菈/2.jpg differ diff --git a/resources/characterImg/优菈/3.jpg b/resources/characterImg/优菈/3.jpg new file mode 100644 index 00000000..45c97b27 Binary files /dev/null and b/resources/characterImg/优菈/3.jpg differ diff --git a/resources/characterImg/优菈/4.jpg b/resources/characterImg/优菈/4.jpg new file mode 100644 index 00000000..c9910e28 Binary files /dev/null and b/resources/characterImg/优菈/4.jpg differ diff --git a/resources/characterImg/优菈/5.jpg b/resources/characterImg/优菈/5.jpg new file mode 100644 index 00000000..07875346 Binary files /dev/null and b/resources/characterImg/优菈/5.jpg differ diff --git a/resources/characterImg/优菈/6.jpg b/resources/characterImg/优菈/6.jpg new file mode 100644 index 00000000..efd619d8 Binary files /dev/null and b/resources/characterImg/优菈/6.jpg differ diff --git a/resources/characterImg/优菈/7.jpg b/resources/characterImg/优菈/7.jpg new file mode 100644 index 00000000..2a9a9e83 Binary files /dev/null and b/resources/characterImg/优菈/7.jpg differ diff --git a/resources/characterImg/优菈/8.jpg b/resources/characterImg/优菈/8.jpg new file mode 100644 index 00000000..35da12ec Binary files /dev/null and b/resources/characterImg/优菈/8.jpg differ diff --git a/resources/characterImg/优菈/9.jpg b/resources/characterImg/优菈/9.jpg new file mode 100644 index 00000000..01e52bf4 Binary files /dev/null and b/resources/characterImg/优菈/9.jpg differ diff --git a/resources/characterImg/八重神子/1.jpg b/resources/characterImg/八重神子/1.jpg new file mode 100644 index 00000000..4faa7a11 Binary files /dev/null and b/resources/characterImg/八重神子/1.jpg differ diff --git a/resources/characterImg/八重神子/10.jpg b/resources/characterImg/八重神子/10.jpg new file mode 100644 index 00000000..8e782107 Binary files /dev/null and b/resources/characterImg/八重神子/10.jpg differ diff --git a/resources/characterImg/八重神子/11.jpg b/resources/characterImg/八重神子/11.jpg new file mode 100644 index 00000000..35e4e75a Binary files /dev/null and b/resources/characterImg/八重神子/11.jpg differ diff --git a/resources/characterImg/八重神子/12.jpg b/resources/characterImg/八重神子/12.jpg new file mode 100644 index 00000000..f04806ae Binary files /dev/null and b/resources/characterImg/八重神子/12.jpg differ diff --git a/resources/characterImg/八重神子/13.jpg b/resources/characterImg/八重神子/13.jpg new file mode 100644 index 00000000..2d6cb48d Binary files /dev/null and b/resources/characterImg/八重神子/13.jpg differ diff --git a/resources/characterImg/八重神子/14.jpg b/resources/characterImg/八重神子/14.jpg new file mode 100644 index 00000000..d03be765 Binary files /dev/null and b/resources/characterImg/八重神子/14.jpg differ diff --git a/resources/characterImg/八重神子/15.jpg b/resources/characterImg/八重神子/15.jpg new file mode 100644 index 00000000..4a846d8c Binary files /dev/null and b/resources/characterImg/八重神子/15.jpg differ diff --git a/resources/characterImg/八重神子/16.jpg b/resources/characterImg/八重神子/16.jpg new file mode 100644 index 00000000..94d2fdc2 Binary files /dev/null and b/resources/characterImg/八重神子/16.jpg differ diff --git a/resources/characterImg/八重神子/17.jpg b/resources/characterImg/八重神子/17.jpg new file mode 100644 index 00000000..60f43144 Binary files /dev/null and b/resources/characterImg/八重神子/17.jpg differ diff --git a/resources/characterImg/八重神子/18.jpg b/resources/characterImg/八重神子/18.jpg new file mode 100644 index 00000000..4f3e3328 Binary files /dev/null and b/resources/characterImg/八重神子/18.jpg differ diff --git a/resources/characterImg/八重神子/19.jpg b/resources/characterImg/八重神子/19.jpg new file mode 100644 index 00000000..39a865c0 Binary files /dev/null and b/resources/characterImg/八重神子/19.jpg differ diff --git a/resources/characterImg/八重神子/2.jpg b/resources/characterImg/八重神子/2.jpg new file mode 100644 index 00000000..1bc0ec26 Binary files /dev/null and b/resources/characterImg/八重神子/2.jpg differ diff --git a/resources/characterImg/八重神子/20.jpg b/resources/characterImg/八重神子/20.jpg new file mode 100644 index 00000000..98f471f4 Binary files /dev/null and b/resources/characterImg/八重神子/20.jpg differ diff --git a/resources/characterImg/八重神子/21.jpg b/resources/characterImg/八重神子/21.jpg new file mode 100644 index 00000000..cf912122 Binary files /dev/null and b/resources/characterImg/八重神子/21.jpg differ diff --git a/resources/characterImg/八重神子/22.jpg b/resources/characterImg/八重神子/22.jpg new file mode 100644 index 00000000..74d97364 Binary files /dev/null and b/resources/characterImg/八重神子/22.jpg differ diff --git a/resources/characterImg/八重神子/23.jpg b/resources/characterImg/八重神子/23.jpg new file mode 100644 index 00000000..258510fa Binary files /dev/null and b/resources/characterImg/八重神子/23.jpg differ diff --git a/resources/characterImg/八重神子/24.jpg b/resources/characterImg/八重神子/24.jpg new file mode 100644 index 00000000..611ea5f4 Binary files /dev/null and b/resources/characterImg/八重神子/24.jpg differ diff --git a/resources/characterImg/八重神子/3.jpg b/resources/characterImg/八重神子/3.jpg new file mode 100644 index 00000000..17e33a9f Binary files /dev/null and b/resources/characterImg/八重神子/3.jpg differ diff --git a/resources/characterImg/八重神子/5.jpg b/resources/characterImg/八重神子/5.jpg new file mode 100644 index 00000000..fbb7f9f3 Binary files /dev/null and b/resources/characterImg/八重神子/5.jpg differ diff --git a/resources/characterImg/八重神子/6.jpg b/resources/characterImg/八重神子/6.jpg new file mode 100644 index 00000000..67444fcb Binary files /dev/null and b/resources/characterImg/八重神子/6.jpg differ diff --git a/resources/characterImg/八重神子/7.jpg b/resources/characterImg/八重神子/7.jpg new file mode 100644 index 00000000..5ad9d131 Binary files /dev/null and b/resources/characterImg/八重神子/7.jpg differ diff --git a/resources/characterImg/八重神子/8.jpg b/resources/characterImg/八重神子/8.jpg new file mode 100644 index 00000000..174cb747 Binary files /dev/null and b/resources/characterImg/八重神子/8.jpg differ diff --git a/resources/characterImg/八重神子/9.jpg b/resources/characterImg/八重神子/9.jpg new file mode 100644 index 00000000..557270f8 Binary files /dev/null and b/resources/characterImg/八重神子/9.jpg differ diff --git a/resources/characterImg/凝光/1.jpg b/resources/characterImg/凝光/1.jpg new file mode 100644 index 00000000..84c5dc2d Binary files /dev/null and b/resources/characterImg/凝光/1.jpg differ diff --git a/resources/characterImg/凝光/2.jpg b/resources/characterImg/凝光/2.jpg new file mode 100644 index 00000000..904702ed Binary files /dev/null and b/resources/characterImg/凝光/2.jpg differ diff --git a/resources/characterImg/凝光/3.jpg b/resources/characterImg/凝光/3.jpg new file mode 100644 index 00000000..346e3dbe Binary files /dev/null and b/resources/characterImg/凝光/3.jpg differ diff --git a/resources/characterImg/凯亚/1.jpg b/resources/characterImg/凯亚/1.jpg new file mode 100644 index 00000000..05ec499a Binary files /dev/null and b/resources/characterImg/凯亚/1.jpg differ diff --git a/resources/characterImg/凯亚/2.jpg b/resources/characterImg/凯亚/2.jpg new file mode 100644 index 00000000..4d71a598 Binary files /dev/null and b/resources/characterImg/凯亚/2.jpg differ diff --git a/resources/characterImg/凯亚/3.jpg b/resources/characterImg/凯亚/3.jpg new file mode 100644 index 00000000..cc6a3e7e Binary files /dev/null and b/resources/characterImg/凯亚/3.jpg differ diff --git a/resources/characterImg/凯亚/4.jpg b/resources/characterImg/凯亚/4.jpg new file mode 100644 index 00000000..1520b905 Binary files /dev/null and b/resources/characterImg/凯亚/4.jpg differ diff --git a/resources/characterImg/凯亚/5.jpg b/resources/characterImg/凯亚/5.jpg new file mode 100644 index 00000000..8a09413e Binary files /dev/null and b/resources/characterImg/凯亚/5.jpg differ diff --git a/resources/characterImg/刻晴/1.jpg b/resources/characterImg/刻晴/1.jpg new file mode 100644 index 00000000..8951fce2 Binary files /dev/null and b/resources/characterImg/刻晴/1.jpg differ diff --git a/resources/characterImg/刻晴/10.jpg b/resources/characterImg/刻晴/10.jpg new file mode 100644 index 00000000..e292cffa Binary files /dev/null and b/resources/characterImg/刻晴/10.jpg differ diff --git a/resources/characterImg/刻晴/2.jpg b/resources/characterImg/刻晴/2.jpg new file mode 100644 index 00000000..f4f50d3d Binary files /dev/null and b/resources/characterImg/刻晴/2.jpg differ diff --git a/resources/characterImg/刻晴/3.jpg b/resources/characterImg/刻晴/3.jpg new file mode 100644 index 00000000..b1f8b6e8 Binary files /dev/null and b/resources/characterImg/刻晴/3.jpg differ diff --git a/resources/characterImg/刻晴/4.jpg b/resources/characterImg/刻晴/4.jpg new file mode 100644 index 00000000..01fbe1b3 Binary files /dev/null and b/resources/characterImg/刻晴/4.jpg differ diff --git a/resources/characterImg/刻晴/5.jpg b/resources/characterImg/刻晴/5.jpg new file mode 100644 index 00000000..ba12ccce Binary files /dev/null and b/resources/characterImg/刻晴/5.jpg differ diff --git a/resources/characterImg/刻晴/6.jpg b/resources/characterImg/刻晴/6.jpg new file mode 100644 index 00000000..21debf95 Binary files /dev/null and b/resources/characterImg/刻晴/6.jpg differ diff --git a/resources/characterImg/刻晴/7.jpg b/resources/characterImg/刻晴/7.jpg new file mode 100644 index 00000000..81c0bcb6 Binary files /dev/null and b/resources/characterImg/刻晴/7.jpg differ diff --git a/resources/characterImg/刻晴/8.jpg b/resources/characterImg/刻晴/8.jpg new file mode 100644 index 00000000..9986a44c Binary files /dev/null and b/resources/characterImg/刻晴/8.jpg differ diff --git a/resources/characterImg/刻晴/9.jpg b/resources/characterImg/刻晴/9.jpg new file mode 100644 index 00000000..53d6c173 Binary files /dev/null and b/resources/characterImg/刻晴/9.jpg differ diff --git a/resources/characterImg/北斗/1.jpg b/resources/characterImg/北斗/1.jpg new file mode 100644 index 00000000..ba16f557 Binary files /dev/null and b/resources/characterImg/北斗/1.jpg differ diff --git a/resources/characterImg/北斗/2.jpg b/resources/characterImg/北斗/2.jpg new file mode 100644 index 00000000..0e4ab430 Binary files /dev/null and b/resources/characterImg/北斗/2.jpg differ diff --git a/resources/characterImg/北斗/3.jpg b/resources/characterImg/北斗/3.jpg new file mode 100644 index 00000000..69caa518 Binary files /dev/null and b/resources/characterImg/北斗/3.jpg differ diff --git a/resources/characterImg/北斗/4.jpg b/resources/characterImg/北斗/4.jpg new file mode 100644 index 00000000..172ab9e2 Binary files /dev/null and b/resources/characterImg/北斗/4.jpg differ diff --git a/resources/characterImg/北斗/5.jpg b/resources/characterImg/北斗/5.jpg new file mode 100644 index 00000000..ea16df3f Binary files /dev/null and b/resources/characterImg/北斗/5.jpg differ diff --git a/resources/characterImg/可莉/1.jpg b/resources/characterImg/可莉/1.jpg new file mode 100644 index 00000000..b1bbe17e Binary files /dev/null and b/resources/characterImg/可莉/1.jpg differ diff --git a/resources/characterImg/可莉/2.jpg b/resources/characterImg/可莉/2.jpg new file mode 100644 index 00000000..1839dad2 Binary files /dev/null and b/resources/characterImg/可莉/2.jpg differ diff --git a/resources/characterImg/可莉/3.jpg b/resources/characterImg/可莉/3.jpg new file mode 100644 index 00000000..bd7e963f Binary files /dev/null and b/resources/characterImg/可莉/3.jpg differ diff --git a/resources/characterImg/可莉/4.jpg b/resources/characterImg/可莉/4.jpg new file mode 100644 index 00000000..b319b6b2 Binary files /dev/null and b/resources/characterImg/可莉/4.jpg differ diff --git a/resources/characterImg/可莉/5.jpg b/resources/characterImg/可莉/5.jpg new file mode 100644 index 00000000..bff09f82 Binary files /dev/null and b/resources/characterImg/可莉/5.jpg differ diff --git a/resources/characterImg/可莉/6.jpg b/resources/characterImg/可莉/6.jpg new file mode 100644 index 00000000..b704e030 Binary files /dev/null and b/resources/characterImg/可莉/6.jpg differ diff --git a/resources/characterImg/安柏/1.jpg b/resources/characterImg/安柏/1.jpg new file mode 100644 index 00000000..da992d1d Binary files /dev/null and b/resources/characterImg/安柏/1.jpg differ diff --git a/resources/characterImg/安柏/2.jpg b/resources/characterImg/安柏/2.jpg new file mode 100644 index 00000000..b60a7217 Binary files /dev/null and b/resources/characterImg/安柏/2.jpg differ diff --git a/resources/characterImg/安柏/3.jpg b/resources/characterImg/安柏/3.jpg new file mode 100644 index 00000000..2e0aa69d Binary files /dev/null and b/resources/characterImg/安柏/3.jpg differ diff --git a/resources/characterImg/安柏/4.jpg b/resources/characterImg/安柏/4.jpg new file mode 100644 index 00000000..ba01e4ac Binary files /dev/null and b/resources/characterImg/安柏/4.jpg differ diff --git a/resources/characterImg/安柏/5.jpg b/resources/characterImg/安柏/5.jpg new file mode 100644 index 00000000..d7fcef6f Binary files /dev/null and b/resources/characterImg/安柏/5.jpg differ diff --git a/resources/characterImg/安柏/6.jpg b/resources/characterImg/安柏/6.jpg new file mode 100644 index 00000000..1fa6f57d Binary files /dev/null and b/resources/characterImg/安柏/6.jpg differ diff --git a/resources/characterImg/宵宫/1.jpg b/resources/characterImg/宵宫/1.jpg new file mode 100644 index 00000000..39b21b9f Binary files /dev/null and b/resources/characterImg/宵宫/1.jpg differ diff --git a/resources/characterImg/宵宫/2.jpg b/resources/characterImg/宵宫/2.jpg new file mode 100644 index 00000000..a0afdd25 Binary files /dev/null and b/resources/characterImg/宵宫/2.jpg differ diff --git a/resources/characterImg/宵宫/3.jpg b/resources/characterImg/宵宫/3.jpg new file mode 100644 index 00000000..16792367 Binary files /dev/null and b/resources/characterImg/宵宫/3.jpg differ diff --git a/resources/characterImg/托马/1.jpg b/resources/characterImg/托马/1.jpg new file mode 100644 index 00000000..4602f2f7 Binary files /dev/null and b/resources/characterImg/托马/1.jpg differ diff --git a/resources/characterImg/托马/2.jpg b/resources/characterImg/托马/2.jpg new file mode 100644 index 00000000..84326cf7 Binary files /dev/null and b/resources/characterImg/托马/2.jpg differ diff --git a/resources/characterImg/托马/3.jpg b/resources/characterImg/托马/3.jpg new file mode 100644 index 00000000..4f1f029a Binary files /dev/null and b/resources/characterImg/托马/3.jpg differ diff --git a/resources/characterImg/托马/4.jpg b/resources/characterImg/托马/4.jpg new file mode 100644 index 00000000..cd17ebe6 Binary files /dev/null and b/resources/characterImg/托马/4.jpg differ diff --git a/resources/characterImg/早柚/1.jpg b/resources/characterImg/早柚/1.jpg new file mode 100644 index 00000000..28a8cca5 Binary files /dev/null and b/resources/characterImg/早柚/1.jpg differ diff --git a/resources/characterImg/早柚/2.jpg b/resources/characterImg/早柚/2.jpg new file mode 100644 index 00000000..fe4b1c44 Binary files /dev/null and b/resources/characterImg/早柚/2.jpg differ diff --git a/resources/characterImg/早柚/3.jpg b/resources/characterImg/早柚/3.jpg new file mode 100644 index 00000000..7c2ac28b Binary files /dev/null and b/resources/characterImg/早柚/3.jpg differ diff --git a/resources/characterImg/枫原万叶/1.jpg b/resources/characterImg/枫原万叶/1.jpg new file mode 100644 index 00000000..717c7b99 Binary files /dev/null and b/resources/characterImg/枫原万叶/1.jpg differ diff --git a/resources/characterImg/枫原万叶/10.jpg b/resources/characterImg/枫原万叶/10.jpg new file mode 100644 index 00000000..88662f15 Binary files /dev/null and b/resources/characterImg/枫原万叶/10.jpg differ diff --git a/resources/characterImg/枫原万叶/2.jpg b/resources/characterImg/枫原万叶/2.jpg new file mode 100644 index 00000000..42587609 Binary files /dev/null and b/resources/characterImg/枫原万叶/2.jpg differ diff --git a/resources/characterImg/枫原万叶/3.jpg b/resources/characterImg/枫原万叶/3.jpg new file mode 100644 index 00000000..66c1abd9 Binary files /dev/null and b/resources/characterImg/枫原万叶/3.jpg differ diff --git a/resources/characterImg/枫原万叶/4.jpg b/resources/characterImg/枫原万叶/4.jpg new file mode 100644 index 00000000..29ab5660 Binary files /dev/null and b/resources/characterImg/枫原万叶/4.jpg differ diff --git a/resources/characterImg/枫原万叶/5.jpg b/resources/characterImg/枫原万叶/5.jpg new file mode 100644 index 00000000..a5e86372 Binary files /dev/null and b/resources/characterImg/枫原万叶/5.jpg differ diff --git a/resources/characterImg/枫原万叶/6.jpg b/resources/characterImg/枫原万叶/6.jpg new file mode 100644 index 00000000..dac1efbc Binary files /dev/null and b/resources/characterImg/枫原万叶/6.jpg differ diff --git a/resources/characterImg/枫原万叶/7.jpg b/resources/characterImg/枫原万叶/7.jpg new file mode 100644 index 00000000..96b978d3 Binary files /dev/null and b/resources/characterImg/枫原万叶/7.jpg differ diff --git a/resources/characterImg/枫原万叶/8.jpg b/resources/characterImg/枫原万叶/8.jpg new file mode 100644 index 00000000..41e22f6c Binary files /dev/null and b/resources/characterImg/枫原万叶/8.jpg differ diff --git a/resources/characterImg/枫原万叶/9.jpg b/resources/characterImg/枫原万叶/9.jpg new file mode 100644 index 00000000..03f7e9ee Binary files /dev/null and b/resources/characterImg/枫原万叶/9.jpg differ diff --git a/resources/characterImg/温迪/1.jpg b/resources/characterImg/温迪/1.jpg new file mode 100644 index 00000000..50b08a48 Binary files /dev/null and b/resources/characterImg/温迪/1.jpg differ diff --git a/resources/characterImg/温迪/2.jpg b/resources/characterImg/温迪/2.jpg new file mode 100644 index 00000000..afeec7f2 Binary files /dev/null and b/resources/characterImg/温迪/2.jpg differ diff --git a/resources/characterImg/温迪/3.jpg b/resources/characterImg/温迪/3.jpg new file mode 100644 index 00000000..aa263770 Binary files /dev/null and b/resources/characterImg/温迪/3.jpg differ diff --git a/resources/characterImg/温迪/4.jpg b/resources/characterImg/温迪/4.jpg new file mode 100644 index 00000000..a6900a03 Binary files /dev/null and b/resources/characterImg/温迪/4.jpg differ diff --git a/resources/characterImg/温迪/5.jpg b/resources/characterImg/温迪/5.jpg new file mode 100644 index 00000000..bdec8c42 Binary files /dev/null and b/resources/characterImg/温迪/5.jpg differ diff --git a/resources/characterImg/温迪/6.jpg b/resources/characterImg/温迪/6.jpg new file mode 100644 index 00000000..d3a883d0 Binary files /dev/null and b/resources/characterImg/温迪/6.jpg differ diff --git a/resources/characterImg/烟绯/1.jpg b/resources/characterImg/烟绯/1.jpg new file mode 100644 index 00000000..c5730a17 Binary files /dev/null and b/resources/characterImg/烟绯/1.jpg differ diff --git a/resources/characterImg/烟绯/2.jpg b/resources/characterImg/烟绯/2.jpg new file mode 100644 index 00000000..fd5d7198 Binary files /dev/null and b/resources/characterImg/烟绯/2.jpg differ diff --git a/resources/characterImg/烟绯/3.jpg b/resources/characterImg/烟绯/3.jpg new file mode 100644 index 00000000..55cc28de Binary files /dev/null and b/resources/characterImg/烟绯/3.jpg differ diff --git a/resources/characterImg/珊瑚宫心海/1.jpg b/resources/characterImg/珊瑚宫心海/1.jpg new file mode 100644 index 00000000..bcd5fa75 Binary files /dev/null and b/resources/characterImg/珊瑚宫心海/1.jpg differ diff --git a/resources/characterImg/珊瑚宫心海/2.jpg b/resources/characterImg/珊瑚宫心海/2.jpg new file mode 100644 index 00000000..4bb5366d Binary files /dev/null and b/resources/characterImg/珊瑚宫心海/2.jpg differ diff --git a/resources/characterImg/珊瑚宫心海/3.jpg b/resources/characterImg/珊瑚宫心海/3.jpg new file mode 100644 index 00000000..d5a20642 Binary files /dev/null and b/resources/characterImg/珊瑚宫心海/3.jpg differ diff --git a/resources/characterImg/珊瑚宫心海/4.jpg b/resources/characterImg/珊瑚宫心海/4.jpg new file mode 100644 index 00000000..88a0db45 Binary files /dev/null and b/resources/characterImg/珊瑚宫心海/4.jpg differ diff --git a/resources/characterImg/班尼特/1.jpg b/resources/characterImg/班尼特/1.jpg new file mode 100644 index 00000000..4afbc8c4 Binary files /dev/null and b/resources/characterImg/班尼特/1.jpg differ diff --git a/resources/characterImg/班尼特/2.jpg b/resources/characterImg/班尼特/2.jpg new file mode 100644 index 00000000..ed1bae59 Binary files /dev/null and b/resources/characterImg/班尼特/2.jpg differ diff --git a/resources/characterImg/班尼特/3.jpg b/resources/characterImg/班尼特/3.jpg new file mode 100644 index 00000000..011a1004 Binary files /dev/null and b/resources/characterImg/班尼特/3.jpg differ diff --git a/resources/characterImg/班尼特/4.jpg b/resources/characterImg/班尼特/4.jpg new file mode 100644 index 00000000..788aab2f Binary files /dev/null and b/resources/characterImg/班尼特/4.jpg differ diff --git a/resources/characterImg/班尼特/5.jpg b/resources/characterImg/班尼特/5.jpg new file mode 100644 index 00000000..d856f8f5 Binary files /dev/null and b/resources/characterImg/班尼特/5.jpg differ diff --git a/resources/characterImg/班尼特/6.jpg b/resources/characterImg/班尼特/6.jpg new file mode 100644 index 00000000..2a605247 Binary files /dev/null and b/resources/characterImg/班尼特/6.jpg differ diff --git a/resources/characterImg/班尼特/7.jpg b/resources/characterImg/班尼特/7.jpg new file mode 100644 index 00000000..ad6bfd9b Binary files /dev/null and b/resources/characterImg/班尼特/7.jpg differ diff --git a/resources/characterImg/班尼特/8.jpg b/resources/characterImg/班尼特/8.jpg new file mode 100644 index 00000000..2cce59f2 Binary files /dev/null and b/resources/characterImg/班尼特/8.jpg differ diff --git a/resources/characterImg/琴/1.jpg b/resources/characterImg/琴/1.jpg new file mode 100644 index 00000000..ba274ef2 Binary files /dev/null and b/resources/characterImg/琴/1.jpg differ diff --git a/resources/characterImg/琴/2.jpg b/resources/characterImg/琴/2.jpg new file mode 100644 index 00000000..2e60676a Binary files /dev/null and b/resources/characterImg/琴/2.jpg differ diff --git a/resources/characterImg/琴/3.jpg b/resources/characterImg/琴/3.jpg new file mode 100644 index 00000000..a2989518 Binary files /dev/null and b/resources/characterImg/琴/3.jpg differ diff --git a/resources/characterImg/琴/4.jpg b/resources/characterImg/琴/4.jpg new file mode 100644 index 00000000..ceb034c5 Binary files /dev/null and b/resources/characterImg/琴/4.jpg differ diff --git a/resources/characterImg/琴/5.jpg b/resources/characterImg/琴/5.jpg new file mode 100644 index 00000000..a26addf3 Binary files /dev/null and b/resources/characterImg/琴/5.jpg differ diff --git a/resources/characterImg/琴/6.jpg b/resources/characterImg/琴/6.jpg new file mode 100644 index 00000000..b2032baa Binary files /dev/null and b/resources/characterImg/琴/6.jpg differ diff --git a/resources/characterImg/甘雨/1.jpg b/resources/characterImg/甘雨/1.jpg new file mode 100644 index 00000000..6d783d1a Binary files /dev/null and b/resources/characterImg/甘雨/1.jpg differ diff --git a/resources/characterImg/甘雨/2.jpg b/resources/characterImg/甘雨/2.jpg new file mode 100644 index 00000000..db46a026 Binary files /dev/null and b/resources/characterImg/甘雨/2.jpg differ diff --git a/resources/characterImg/甘雨/3.jpg b/resources/characterImg/甘雨/3.jpg new file mode 100644 index 00000000..5399cca2 Binary files /dev/null and b/resources/characterImg/甘雨/3.jpg differ diff --git a/resources/characterImg/甘雨/4.jpg b/resources/characterImg/甘雨/4.jpg new file mode 100644 index 00000000..69ae1cb6 Binary files /dev/null and b/resources/characterImg/甘雨/4.jpg differ diff --git a/resources/characterImg/甘雨/5.jpg b/resources/characterImg/甘雨/5.jpg new file mode 100644 index 00000000..164d5111 Binary files /dev/null and b/resources/characterImg/甘雨/5.jpg differ diff --git a/resources/characterImg/申鹤/1.jpg b/resources/characterImg/申鹤/1.jpg new file mode 100644 index 00000000..d3bd82ff Binary files /dev/null and b/resources/characterImg/申鹤/1.jpg differ diff --git a/resources/characterImg/申鹤/2.jpg b/resources/characterImg/申鹤/2.jpg new file mode 100644 index 00000000..cf4f04dd Binary files /dev/null and b/resources/characterImg/申鹤/2.jpg differ diff --git a/resources/characterImg/申鹤/3.jpg b/resources/characterImg/申鹤/3.jpg new file mode 100644 index 00000000..372732ff Binary files /dev/null and b/resources/characterImg/申鹤/3.jpg differ diff --git a/resources/characterImg/申鹤/4.jpg b/resources/characterImg/申鹤/4.jpg new file mode 100644 index 00000000..c8688ad4 Binary files /dev/null and b/resources/characterImg/申鹤/4.jpg differ diff --git a/resources/characterImg/申鹤/5.jpg b/resources/characterImg/申鹤/5.jpg new file mode 100644 index 00000000..51cf7e3d Binary files /dev/null and b/resources/characterImg/申鹤/5.jpg differ diff --git a/resources/characterImg/申鹤/6.jpg b/resources/characterImg/申鹤/6.jpg new file mode 100644 index 00000000..178f71a2 Binary files /dev/null and b/resources/characterImg/申鹤/6.jpg differ diff --git a/resources/characterImg/申鹤/7.jpg b/resources/characterImg/申鹤/7.jpg new file mode 100644 index 00000000..2e366a66 Binary files /dev/null and b/resources/characterImg/申鹤/7.jpg differ diff --git a/resources/characterImg/申鹤/8.jpg b/resources/characterImg/申鹤/8.jpg new file mode 100644 index 00000000..4ce4fc66 Binary files /dev/null and b/resources/characterImg/申鹤/8.jpg differ diff --git a/resources/characterImg/申鹤/9.jpg b/resources/characterImg/申鹤/9.jpg new file mode 100644 index 00000000..ee18c64a Binary files /dev/null and b/resources/characterImg/申鹤/9.jpg differ diff --git a/resources/characterImg/砂糖/1.jpg b/resources/characterImg/砂糖/1.jpg new file mode 100644 index 00000000..2a38d522 Binary files /dev/null and b/resources/characterImg/砂糖/1.jpg differ diff --git a/resources/characterImg/砂糖/2.jpg b/resources/characterImg/砂糖/2.jpg new file mode 100644 index 00000000..5e477da2 Binary files /dev/null and b/resources/characterImg/砂糖/2.jpg differ diff --git a/resources/characterImg/砂糖/3.jpg b/resources/characterImg/砂糖/3.jpg new file mode 100644 index 00000000..dd00f7ff Binary files /dev/null and b/resources/characterImg/砂糖/3.jpg differ diff --git a/resources/characterImg/砂糖/4.jpg b/resources/characterImg/砂糖/4.jpg new file mode 100644 index 00000000..d9128a55 Binary files /dev/null and b/resources/characterImg/砂糖/4.jpg differ diff --git a/resources/characterImg/神里绫华/1.jpg b/resources/characterImg/神里绫华/1.jpg new file mode 100644 index 00000000..0595e2de Binary files /dev/null and b/resources/characterImg/神里绫华/1.jpg differ diff --git a/resources/characterImg/神里绫华/10.jpg b/resources/characterImg/神里绫华/10.jpg new file mode 100644 index 00000000..7d47dc35 Binary files /dev/null and b/resources/characterImg/神里绫华/10.jpg differ diff --git a/resources/characterImg/神里绫华/2.jpg b/resources/characterImg/神里绫华/2.jpg new file mode 100644 index 00000000..b9ee6f98 Binary files /dev/null and b/resources/characterImg/神里绫华/2.jpg differ diff --git a/resources/characterImg/神里绫华/3.jpg b/resources/characterImg/神里绫华/3.jpg new file mode 100644 index 00000000..cc737a5d Binary files /dev/null and b/resources/characterImg/神里绫华/3.jpg differ diff --git a/resources/characterImg/神里绫华/4.jpg b/resources/characterImg/神里绫华/4.jpg new file mode 100644 index 00000000..c9c2dbfe Binary files /dev/null and b/resources/characterImg/神里绫华/4.jpg differ diff --git a/resources/characterImg/神里绫华/5.jpg b/resources/characterImg/神里绫华/5.jpg new file mode 100644 index 00000000..a23e1c48 Binary files /dev/null and b/resources/characterImg/神里绫华/5.jpg differ diff --git a/resources/characterImg/神里绫华/6.jpg b/resources/characterImg/神里绫华/6.jpg new file mode 100644 index 00000000..0b140769 Binary files /dev/null and b/resources/characterImg/神里绫华/6.jpg differ diff --git a/resources/characterImg/神里绫华/7.jpg b/resources/characterImg/神里绫华/7.jpg new file mode 100644 index 00000000..90e323f7 Binary files /dev/null and b/resources/characterImg/神里绫华/7.jpg differ diff --git a/resources/characterImg/神里绫华/8.jpg b/resources/characterImg/神里绫华/8.jpg new file mode 100644 index 00000000..b951db21 Binary files /dev/null and b/resources/characterImg/神里绫华/8.jpg differ diff --git a/resources/characterImg/神里绫华/9.jpg b/resources/characterImg/神里绫华/9.jpg new file mode 100644 index 00000000..c7c41ee5 Binary files /dev/null and b/resources/characterImg/神里绫华/9.jpg differ diff --git a/resources/characterImg/空/1.jpg b/resources/characterImg/空/1.jpg new file mode 100644 index 00000000..ea61b899 Binary files /dev/null and b/resources/characterImg/空/1.jpg differ diff --git a/resources/characterImg/罗莎莉亚/1.jpg b/resources/characterImg/罗莎莉亚/1.jpg new file mode 100644 index 00000000..3b9111a3 Binary files /dev/null and b/resources/characterImg/罗莎莉亚/1.jpg differ diff --git a/resources/characterImg/罗莎莉亚/2.jpg b/resources/characterImg/罗莎莉亚/2.jpg new file mode 100644 index 00000000..25c861b7 Binary files /dev/null and b/resources/characterImg/罗莎莉亚/2.jpg differ diff --git a/resources/characterImg/罗莎莉亚/3.jpg b/resources/characterImg/罗莎莉亚/3.jpg new file mode 100644 index 00000000..1a778674 Binary files /dev/null and b/resources/characterImg/罗莎莉亚/3.jpg differ diff --git a/resources/characterImg/胡桃/1.jpg b/resources/characterImg/胡桃/1.jpg new file mode 100644 index 00000000..f1be12bc Binary files /dev/null and b/resources/characterImg/胡桃/1.jpg differ diff --git a/resources/characterImg/胡桃/10.jpg b/resources/characterImg/胡桃/10.jpg new file mode 100644 index 00000000..2b1e937c Binary files /dev/null and b/resources/characterImg/胡桃/10.jpg differ diff --git a/resources/characterImg/胡桃/11.jpg b/resources/characterImg/胡桃/11.jpg new file mode 100644 index 00000000..601ae069 Binary files /dev/null and b/resources/characterImg/胡桃/11.jpg differ diff --git a/resources/characterImg/胡桃/12.jpg b/resources/characterImg/胡桃/12.jpg new file mode 100644 index 00000000..201898b7 Binary files /dev/null and b/resources/characterImg/胡桃/12.jpg differ diff --git a/resources/characterImg/胡桃/13.jpg b/resources/characterImg/胡桃/13.jpg new file mode 100644 index 00000000..8ff1024a Binary files /dev/null and b/resources/characterImg/胡桃/13.jpg differ diff --git a/resources/characterImg/胡桃/14.jpg b/resources/characterImg/胡桃/14.jpg new file mode 100644 index 00000000..05026bcb Binary files /dev/null and b/resources/characterImg/胡桃/14.jpg differ diff --git a/resources/characterImg/胡桃/15.jpg b/resources/characterImg/胡桃/15.jpg new file mode 100644 index 00000000..963b27f8 Binary files /dev/null and b/resources/characterImg/胡桃/15.jpg differ diff --git a/resources/characterImg/胡桃/16.jpg b/resources/characterImg/胡桃/16.jpg new file mode 100644 index 00000000..f3e89e52 Binary files /dev/null and b/resources/characterImg/胡桃/16.jpg differ diff --git a/resources/characterImg/胡桃/17.jpg b/resources/characterImg/胡桃/17.jpg new file mode 100644 index 00000000..b035c4f4 Binary files /dev/null and b/resources/characterImg/胡桃/17.jpg differ diff --git a/resources/characterImg/胡桃/18.jpg b/resources/characterImg/胡桃/18.jpg new file mode 100644 index 00000000..21b9e0e0 Binary files /dev/null and b/resources/characterImg/胡桃/18.jpg differ diff --git a/resources/characterImg/胡桃/19.jpg b/resources/characterImg/胡桃/19.jpg new file mode 100644 index 00000000..05f0758f Binary files /dev/null and b/resources/characterImg/胡桃/19.jpg differ diff --git a/resources/characterImg/胡桃/2.jpg b/resources/characterImg/胡桃/2.jpg new file mode 100644 index 00000000..ab5c34e7 Binary files /dev/null and b/resources/characterImg/胡桃/2.jpg differ diff --git a/resources/characterImg/胡桃/3.jpg b/resources/characterImg/胡桃/3.jpg new file mode 100644 index 00000000..35140e7b Binary files /dev/null and b/resources/characterImg/胡桃/3.jpg differ diff --git a/resources/characterImg/胡桃/4.jpg b/resources/characterImg/胡桃/4.jpg new file mode 100644 index 00000000..5c03792b Binary files /dev/null and b/resources/characterImg/胡桃/4.jpg differ diff --git a/resources/characterImg/胡桃/5.jpg b/resources/characterImg/胡桃/5.jpg new file mode 100644 index 00000000..57061e7e Binary files /dev/null and b/resources/characterImg/胡桃/5.jpg differ diff --git a/resources/characterImg/胡桃/6.jpg b/resources/characterImg/胡桃/6.jpg new file mode 100644 index 00000000..c4a9f74c Binary files /dev/null and b/resources/characterImg/胡桃/6.jpg differ diff --git a/resources/characterImg/胡桃/7.jpg b/resources/characterImg/胡桃/7.jpg new file mode 100644 index 00000000..4d9c4949 Binary files /dev/null and b/resources/characterImg/胡桃/7.jpg differ diff --git a/resources/characterImg/胡桃/8.jpg b/resources/characterImg/胡桃/8.jpg new file mode 100644 index 00000000..a0e19602 Binary files /dev/null and b/resources/characterImg/胡桃/8.jpg differ diff --git a/resources/characterImg/胡桃/9.jpg b/resources/characterImg/胡桃/9.jpg new file mode 100644 index 00000000..3ba07c31 Binary files /dev/null and b/resources/characterImg/胡桃/9.jpg differ diff --git a/resources/characterImg/芭芭拉/1.jpg b/resources/characterImg/芭芭拉/1.jpg new file mode 100644 index 00000000..955a4966 Binary files /dev/null and b/resources/characterImg/芭芭拉/1.jpg differ diff --git a/resources/characterImg/芭芭拉/2.jpg b/resources/characterImg/芭芭拉/2.jpg new file mode 100644 index 00000000..e4b587a7 Binary files /dev/null and b/resources/characterImg/芭芭拉/2.jpg differ diff --git a/resources/characterImg/芭芭拉/3.jpg b/resources/characterImg/芭芭拉/3.jpg new file mode 100644 index 00000000..5286fd30 Binary files /dev/null and b/resources/characterImg/芭芭拉/3.jpg differ diff --git a/resources/characterImg/芭芭拉/4.jpg b/resources/characterImg/芭芭拉/4.jpg new file mode 100644 index 00000000..81dec6f1 Binary files /dev/null and b/resources/characterImg/芭芭拉/4.jpg differ diff --git a/resources/characterImg/芭芭拉/5.jpg b/resources/characterImg/芭芭拉/5.jpg new file mode 100644 index 00000000..330cdedc Binary files /dev/null and b/resources/characterImg/芭芭拉/5.jpg differ diff --git a/resources/characterImg/芭芭拉/6.jpg b/resources/characterImg/芭芭拉/6.jpg new file mode 100644 index 00000000..21de0314 Binary files /dev/null and b/resources/characterImg/芭芭拉/6.jpg differ diff --git a/resources/characterImg/芭芭拉/7.jpg b/resources/characterImg/芭芭拉/7.jpg new file mode 100644 index 00000000..c9164679 Binary files /dev/null and b/resources/characterImg/芭芭拉/7.jpg differ diff --git a/resources/characterImg/芭芭拉/8.jpg b/resources/characterImg/芭芭拉/8.jpg new file mode 100644 index 00000000..304edd44 Binary files /dev/null and b/resources/characterImg/芭芭拉/8.jpg differ diff --git a/resources/characterImg/芭芭拉/9.webp b/resources/characterImg/芭芭拉/9.webp new file mode 100644 index 00000000..14b3b753 Binary files /dev/null and b/resources/characterImg/芭芭拉/9.webp differ diff --git a/resources/characterImg/荒泷一斗/1.jpg b/resources/characterImg/荒泷一斗/1.jpg new file mode 100644 index 00000000..f559c15a Binary files /dev/null and b/resources/characterImg/荒泷一斗/1.jpg differ diff --git a/resources/characterImg/荒泷一斗/2.jpg b/resources/characterImg/荒泷一斗/2.jpg new file mode 100644 index 00000000..5558d278 Binary files /dev/null and b/resources/characterImg/荒泷一斗/2.jpg differ diff --git a/resources/characterImg/荒泷一斗/3.jpg b/resources/characterImg/荒泷一斗/3.jpg new file mode 100644 index 00000000..782f93b8 Binary files /dev/null and b/resources/characterImg/荒泷一斗/3.jpg differ diff --git a/resources/characterImg/荒泷一斗/4.jpg b/resources/characterImg/荒泷一斗/4.jpg new file mode 100644 index 00000000..c431d974 Binary files /dev/null and b/resources/characterImg/荒泷一斗/4.jpg differ diff --git a/resources/characterImg/荒泷一斗/5.jpg b/resources/characterImg/荒泷一斗/5.jpg new file mode 100644 index 00000000..312830ef Binary files /dev/null and b/resources/characterImg/荒泷一斗/5.jpg differ diff --git a/resources/characterImg/荒泷一斗/6.jpg b/resources/characterImg/荒泷一斗/6.jpg new file mode 100644 index 00000000..b433bd11 Binary files /dev/null and b/resources/characterImg/荒泷一斗/6.jpg differ diff --git a/resources/characterImg/荒泷一斗/7.jpg b/resources/characterImg/荒泷一斗/7.jpg new file mode 100644 index 00000000..dc74fab5 Binary files /dev/null and b/resources/characterImg/荒泷一斗/7.jpg differ diff --git a/resources/characterImg/荧/1.jpg b/resources/characterImg/荧/1.jpg new file mode 100644 index 00000000..83e096be Binary files /dev/null and b/resources/characterImg/荧/1.jpg differ diff --git a/resources/characterImg/荧/2.jpg b/resources/characterImg/荧/2.jpg new file mode 100644 index 00000000..aef4765e Binary files /dev/null and b/resources/characterImg/荧/2.jpg differ diff --git a/resources/characterImg/荧/3.jpg b/resources/characterImg/荧/3.jpg new file mode 100644 index 00000000..bd86f3a8 Binary files /dev/null and b/resources/characterImg/荧/3.jpg differ diff --git a/resources/characterImg/荧/4.jpg b/resources/characterImg/荧/4.jpg new file mode 100644 index 00000000..227af99c Binary files /dev/null and b/resources/characterImg/荧/4.jpg differ diff --git a/resources/characterImg/莫娜/1.jpg b/resources/characterImg/莫娜/1.jpg new file mode 100644 index 00000000..6bb6ebe1 Binary files /dev/null and b/resources/characterImg/莫娜/1.jpg differ diff --git a/resources/characterImg/莫娜/2.jpg b/resources/characterImg/莫娜/2.jpg new file mode 100644 index 00000000..94fa0c93 Binary files /dev/null and b/resources/characterImg/莫娜/2.jpg differ diff --git a/resources/characterImg/莫娜/3.jpg b/resources/characterImg/莫娜/3.jpg new file mode 100644 index 00000000..5d9c70b9 Binary files /dev/null and b/resources/characterImg/莫娜/3.jpg differ diff --git a/resources/characterImg/莫娜/4.jpg b/resources/characterImg/莫娜/4.jpg new file mode 100644 index 00000000..fa4e5b17 Binary files /dev/null and b/resources/characterImg/莫娜/4.jpg differ diff --git a/resources/characterImg/莫娜/5.jpg b/resources/characterImg/莫娜/5.jpg new file mode 100644 index 00000000..15d227b4 Binary files /dev/null and b/resources/characterImg/莫娜/5.jpg differ diff --git a/resources/characterImg/菲谢尔/1.jpg b/resources/characterImg/菲谢尔/1.jpg new file mode 100644 index 00000000..b7760aa6 Binary files /dev/null and b/resources/characterImg/菲谢尔/1.jpg differ diff --git a/resources/characterImg/菲谢尔/2.jpg b/resources/characterImg/菲谢尔/2.jpg new file mode 100644 index 00000000..5021bbc0 Binary files /dev/null and b/resources/characterImg/菲谢尔/2.jpg differ diff --git a/resources/characterImg/菲谢尔/3.jpg b/resources/characterImg/菲谢尔/3.jpg new file mode 100644 index 00000000..5a89655a Binary files /dev/null and b/resources/characterImg/菲谢尔/3.jpg differ diff --git a/resources/characterImg/菲谢尔/4.jpg b/resources/characterImg/菲谢尔/4.jpg new file mode 100644 index 00000000..a6e4e443 Binary files /dev/null and b/resources/characterImg/菲谢尔/4.jpg differ diff --git a/resources/characterImg/行秋/1.jpg b/resources/characterImg/行秋/1.jpg new file mode 100644 index 00000000..a15519de Binary files /dev/null and b/resources/characterImg/行秋/1.jpg differ diff --git a/resources/characterImg/行秋/10.jpg b/resources/characterImg/行秋/10.jpg new file mode 100644 index 00000000..4c41647c Binary files /dev/null and b/resources/characterImg/行秋/10.jpg differ diff --git a/resources/characterImg/行秋/11.jpg b/resources/characterImg/行秋/11.jpg new file mode 100644 index 00000000..b030a181 Binary files /dev/null and b/resources/characterImg/行秋/11.jpg differ diff --git a/resources/characterImg/行秋/12.jpg b/resources/characterImg/行秋/12.jpg new file mode 100644 index 00000000..3969f610 Binary files /dev/null and b/resources/characterImg/行秋/12.jpg differ diff --git a/resources/characterImg/行秋/13.jpg b/resources/characterImg/行秋/13.jpg new file mode 100644 index 00000000..ba10cde2 Binary files /dev/null and b/resources/characterImg/行秋/13.jpg differ diff --git a/resources/characterImg/行秋/2.jpg b/resources/characterImg/行秋/2.jpg new file mode 100644 index 00000000..28ab54c2 Binary files /dev/null and b/resources/characterImg/行秋/2.jpg differ diff --git a/resources/characterImg/行秋/3.jpg b/resources/characterImg/行秋/3.jpg new file mode 100644 index 00000000..6fff68eb Binary files /dev/null and b/resources/characterImg/行秋/3.jpg differ diff --git a/resources/characterImg/行秋/4.jpg b/resources/characterImg/行秋/4.jpg new file mode 100644 index 00000000..e6310db2 Binary files /dev/null and b/resources/characterImg/行秋/4.jpg differ diff --git a/resources/characterImg/行秋/5.jpg b/resources/characterImg/行秋/5.jpg new file mode 100644 index 00000000..05be8c96 Binary files /dev/null and b/resources/characterImg/行秋/5.jpg differ diff --git a/resources/characterImg/行秋/6.jpg b/resources/characterImg/行秋/6.jpg new file mode 100644 index 00000000..e794e63a Binary files /dev/null and b/resources/characterImg/行秋/6.jpg differ diff --git a/resources/characterImg/行秋/7.jpg b/resources/characterImg/行秋/7.jpg new file mode 100644 index 00000000..7760b302 Binary files /dev/null and b/resources/characterImg/行秋/7.jpg differ diff --git a/resources/characterImg/行秋/8.jpg b/resources/characterImg/行秋/8.jpg new file mode 100644 index 00000000..e060e377 Binary files /dev/null and b/resources/characterImg/行秋/8.jpg differ diff --git a/resources/characterImg/行秋/9.jpg b/resources/characterImg/行秋/9.jpg new file mode 100644 index 00000000..a935bda6 Binary files /dev/null and b/resources/characterImg/行秋/9.jpg differ diff --git a/resources/characterImg/诺艾尔/1.jpg b/resources/characterImg/诺艾尔/1.jpg new file mode 100644 index 00000000..976fb50f Binary files /dev/null and b/resources/characterImg/诺艾尔/1.jpg differ diff --git a/resources/characterImg/诺艾尔/2.jpg b/resources/characterImg/诺艾尔/2.jpg new file mode 100644 index 00000000..5cf8c65e Binary files /dev/null and b/resources/characterImg/诺艾尔/2.jpg differ diff --git a/resources/characterImg/诺艾尔/3.jpg b/resources/characterImg/诺艾尔/3.jpg new file mode 100644 index 00000000..20414cc1 Binary files /dev/null and b/resources/characterImg/诺艾尔/3.jpg differ diff --git a/resources/characterImg/诺艾尔/4.jpg b/resources/characterImg/诺艾尔/4.jpg new file mode 100644 index 00000000..0c974212 Binary files /dev/null and b/resources/characterImg/诺艾尔/4.jpg differ diff --git a/resources/characterImg/诺艾尔/5.jpg b/resources/characterImg/诺艾尔/5.jpg new file mode 100644 index 00000000..5d00359a Binary files /dev/null and b/resources/characterImg/诺艾尔/5.jpg differ diff --git a/resources/characterImg/诺艾尔/6.jpg b/resources/characterImg/诺艾尔/6.jpg new file mode 100644 index 00000000..f8fecdc2 Binary files /dev/null and b/resources/characterImg/诺艾尔/6.jpg differ diff --git a/resources/characterImg/辛焱/1.jpg b/resources/characterImg/辛焱/1.jpg new file mode 100644 index 00000000..6f1d07ab Binary files /dev/null and b/resources/characterImg/辛焱/1.jpg differ diff --git a/resources/characterImg/达达利亚/1.jpg b/resources/characterImg/达达利亚/1.jpg new file mode 100644 index 00000000..3bc2335c Binary files /dev/null and b/resources/characterImg/达达利亚/1.jpg differ diff --git a/resources/characterImg/达达利亚/2.jpg b/resources/characterImg/达达利亚/2.jpg new file mode 100644 index 00000000..a121bb14 Binary files /dev/null and b/resources/characterImg/达达利亚/2.jpg differ diff --git a/resources/characterImg/达达利亚/3.jpg b/resources/characterImg/达达利亚/3.jpg new file mode 100644 index 00000000..b7076290 Binary files /dev/null and b/resources/characterImg/达达利亚/3.jpg differ diff --git a/resources/characterImg/达达利亚/4.jpg b/resources/characterImg/达达利亚/4.jpg new file mode 100644 index 00000000..d1078159 Binary files /dev/null and b/resources/characterImg/达达利亚/4.jpg differ diff --git a/resources/characterImg/达达利亚/5.jpg b/resources/characterImg/达达利亚/5.jpg new file mode 100644 index 00000000..2e626c65 Binary files /dev/null and b/resources/characterImg/达达利亚/5.jpg differ diff --git a/resources/characterImg/达达利亚/6.jpg b/resources/characterImg/达达利亚/6.jpg new file mode 100644 index 00000000..21f9f2fc Binary files /dev/null and b/resources/characterImg/达达利亚/6.jpg differ diff --git a/resources/characterImg/达达利亚/7.jpg b/resources/characterImg/达达利亚/7.jpg new file mode 100644 index 00000000..1bcb859e Binary files /dev/null and b/resources/characterImg/达达利亚/7.jpg differ diff --git a/resources/characterImg/达达利亚/8.jpg b/resources/characterImg/达达利亚/8.jpg new file mode 100644 index 00000000..260a74a2 Binary files /dev/null and b/resources/characterImg/达达利亚/8.jpg differ diff --git a/resources/characterImg/迪卢克/1.jpg b/resources/characterImg/迪卢克/1.jpg new file mode 100644 index 00000000..cd4df6e4 Binary files /dev/null and b/resources/characterImg/迪卢克/1.jpg differ diff --git a/resources/characterImg/迪卢克/2.jpg b/resources/characterImg/迪卢克/2.jpg new file mode 100644 index 00000000..63bc2833 Binary files /dev/null and b/resources/characterImg/迪卢克/2.jpg differ diff --git a/resources/characterImg/迪卢克/3.jpg b/resources/characterImg/迪卢克/3.jpg new file mode 100644 index 00000000..5272e149 Binary files /dev/null and b/resources/characterImg/迪卢克/3.jpg differ diff --git a/resources/characterImg/迪卢克/4.jpg b/resources/characterImg/迪卢克/4.jpg new file mode 100644 index 00000000..167a2b06 Binary files /dev/null and b/resources/characterImg/迪卢克/4.jpg differ diff --git a/resources/characterImg/迪奥娜/1.jpg b/resources/characterImg/迪奥娜/1.jpg new file mode 100644 index 00000000..fb564ed6 Binary files /dev/null and b/resources/characterImg/迪奥娜/1.jpg differ diff --git a/resources/characterImg/迪奥娜/2.jpg b/resources/characterImg/迪奥娜/2.jpg new file mode 100644 index 00000000..ba47839a Binary files /dev/null and b/resources/characterImg/迪奥娜/2.jpg differ diff --git a/resources/characterImg/迪奥娜/3.jpg b/resources/characterImg/迪奥娜/3.jpg new file mode 100644 index 00000000..a1470943 Binary files /dev/null and b/resources/characterImg/迪奥娜/3.jpg differ diff --git a/resources/characterImg/迪奥娜/4.jpg b/resources/characterImg/迪奥娜/4.jpg new file mode 100644 index 00000000..a33a3bf2 Binary files /dev/null and b/resources/characterImg/迪奥娜/4.jpg differ diff --git a/resources/characterImg/迪奥娜/5.jpg b/resources/characterImg/迪奥娜/5.jpg new file mode 100644 index 00000000..c9a97e80 Binary files /dev/null and b/resources/characterImg/迪奥娜/5.jpg differ diff --git a/resources/characterImg/迪奥娜/6.jpg b/resources/characterImg/迪奥娜/6.jpg new file mode 100644 index 00000000..33b07bf2 Binary files /dev/null and b/resources/characterImg/迪奥娜/6.jpg differ diff --git a/resources/characterImg/重云/1.jpg b/resources/characterImg/重云/1.jpg new file mode 100644 index 00000000..1518121b Binary files /dev/null and b/resources/characterImg/重云/1.jpg differ diff --git a/resources/characterImg/重云/2.jpg b/resources/characterImg/重云/2.jpg new file mode 100644 index 00000000..100f748d Binary files /dev/null and b/resources/characterImg/重云/2.jpg differ diff --git a/resources/characterImg/重云/3.jpg b/resources/characterImg/重云/3.jpg new file mode 100644 index 00000000..4b0ff232 Binary files /dev/null and b/resources/characterImg/重云/3.jpg differ diff --git a/resources/characterImg/重云/4.jpg b/resources/characterImg/重云/4.jpg new file mode 100644 index 00000000..6dbe483e Binary files /dev/null and b/resources/characterImg/重云/4.jpg differ diff --git a/resources/characterImg/重云/5.jpg b/resources/characterImg/重云/5.jpg new file mode 100644 index 00000000..199d19e0 Binary files /dev/null and b/resources/characterImg/重云/5.jpg differ diff --git a/resources/characterImg/重云/6.jpg b/resources/characterImg/重云/6.jpg new file mode 100644 index 00000000..11a9b43e Binary files /dev/null and b/resources/characterImg/重云/6.jpg differ diff --git a/resources/characterImg/重云/7.jpg b/resources/characterImg/重云/7.jpg new file mode 100644 index 00000000..6419f385 Binary files /dev/null and b/resources/characterImg/重云/7.jpg differ diff --git a/resources/characterImg/重云/8.jpg b/resources/characterImg/重云/8.jpg new file mode 100644 index 00000000..c5207c97 Binary files /dev/null and b/resources/characterImg/重云/8.jpg differ diff --git a/resources/characterImg/重云/9.jpg b/resources/characterImg/重云/9.jpg new file mode 100644 index 00000000..4fc84f1f Binary files /dev/null and b/resources/characterImg/重云/9.jpg differ diff --git a/resources/characterImg/钟离/1.jpg b/resources/characterImg/钟离/1.jpg new file mode 100644 index 00000000..f35ca381 Binary files /dev/null and b/resources/characterImg/钟离/1.jpg differ diff --git a/resources/characterImg/钟离/10.jpg b/resources/characterImg/钟离/10.jpg new file mode 100644 index 00000000..e9519c38 Binary files /dev/null and b/resources/characterImg/钟离/10.jpg differ diff --git a/resources/characterImg/钟离/11.jpg b/resources/characterImg/钟离/11.jpg new file mode 100644 index 00000000..2d5b3e24 Binary files /dev/null and b/resources/characterImg/钟离/11.jpg differ diff --git a/resources/characterImg/钟离/12.jpg b/resources/characterImg/钟离/12.jpg new file mode 100644 index 00000000..5f0cb530 Binary files /dev/null and b/resources/characterImg/钟离/12.jpg differ diff --git a/resources/characterImg/钟离/13.jpg b/resources/characterImg/钟离/13.jpg new file mode 100644 index 00000000..c07d63b7 Binary files /dev/null and b/resources/characterImg/钟离/13.jpg differ diff --git a/resources/characterImg/钟离/14.jpg b/resources/characterImg/钟离/14.jpg new file mode 100644 index 00000000..a6129f5c Binary files /dev/null and b/resources/characterImg/钟离/14.jpg differ diff --git a/resources/characterImg/钟离/15.jpg b/resources/characterImg/钟离/15.jpg new file mode 100644 index 00000000..41fb27f1 Binary files /dev/null and b/resources/characterImg/钟离/15.jpg differ diff --git a/resources/characterImg/钟离/16.jpg b/resources/characterImg/钟离/16.jpg new file mode 100644 index 00000000..fef1e733 Binary files /dev/null and b/resources/characterImg/钟离/16.jpg differ diff --git a/resources/characterImg/钟离/17.jpg b/resources/characterImg/钟离/17.jpg new file mode 100644 index 00000000..a1bede76 Binary files /dev/null and b/resources/characterImg/钟离/17.jpg differ diff --git a/resources/characterImg/钟离/18.jpg b/resources/characterImg/钟离/18.jpg new file mode 100644 index 00000000..29ee7451 Binary files /dev/null and b/resources/characterImg/钟离/18.jpg differ diff --git a/resources/characterImg/钟离/19.jpg b/resources/characterImg/钟离/19.jpg new file mode 100644 index 00000000..1f5f3b79 Binary files /dev/null and b/resources/characterImg/钟离/19.jpg differ diff --git a/resources/characterImg/钟离/2.jpg b/resources/characterImg/钟离/2.jpg new file mode 100644 index 00000000..8c34d6ac Binary files /dev/null and b/resources/characterImg/钟离/2.jpg differ diff --git a/resources/characterImg/钟离/20.jpg b/resources/characterImg/钟离/20.jpg new file mode 100644 index 00000000..23774aee Binary files /dev/null and b/resources/characterImg/钟离/20.jpg differ diff --git a/resources/characterImg/钟离/3.jpg b/resources/characterImg/钟离/3.jpg new file mode 100644 index 00000000..d02a4f1c Binary files /dev/null and b/resources/characterImg/钟离/3.jpg differ diff --git a/resources/characterImg/钟离/4.jpg b/resources/characterImg/钟离/4.jpg new file mode 100644 index 00000000..ff0f9460 Binary files /dev/null and b/resources/characterImg/钟离/4.jpg differ diff --git a/resources/characterImg/钟离/5.jpg b/resources/characterImg/钟离/5.jpg new file mode 100644 index 00000000..e2ecd492 Binary files /dev/null and b/resources/characterImg/钟离/5.jpg differ diff --git a/resources/characterImg/钟离/6.jpg b/resources/characterImg/钟离/6.jpg new file mode 100644 index 00000000..231dc557 Binary files /dev/null and b/resources/characterImg/钟离/6.jpg differ diff --git a/resources/characterImg/钟离/7.jpg b/resources/characterImg/钟离/7.jpg new file mode 100644 index 00000000..34e706e3 Binary files /dev/null and b/resources/characterImg/钟离/7.jpg differ diff --git a/resources/characterImg/钟离/8.jpg b/resources/characterImg/钟离/8.jpg new file mode 100644 index 00000000..bd4ae124 Binary files /dev/null and b/resources/characterImg/钟离/8.jpg differ diff --git a/resources/characterImg/钟离/9.jpg b/resources/characterImg/钟离/9.jpg new file mode 100644 index 00000000..f08a6430 Binary files /dev/null and b/resources/characterImg/钟离/9.jpg differ diff --git a/resources/characterImg/阿贝多/1.jpg b/resources/characterImg/阿贝多/1.jpg new file mode 100644 index 00000000..a8ec0527 Binary files /dev/null and b/resources/characterImg/阿贝多/1.jpg differ diff --git a/resources/characterImg/阿贝多/3.jpg b/resources/characterImg/阿贝多/3.jpg new file mode 100644 index 00000000..58be4c52 Binary files /dev/null and b/resources/characterImg/阿贝多/3.jpg differ diff --git a/resources/characterImg/阿贝多/4.jpg b/resources/characterImg/阿贝多/4.jpg new file mode 100644 index 00000000..884dbff3 Binary files /dev/null and b/resources/characterImg/阿贝多/4.jpg differ diff --git a/resources/characterImg/阿贝多/5.jpg b/resources/characterImg/阿贝多/5.jpg new file mode 100644 index 00000000..d49a5f92 Binary files /dev/null and b/resources/characterImg/阿贝多/5.jpg differ diff --git a/resources/characterImg/雷泽/1.jpg b/resources/characterImg/雷泽/1.jpg new file mode 100644 index 00000000..7b3cfa38 Binary files /dev/null and b/resources/characterImg/雷泽/1.jpg differ diff --git a/resources/characterImg/雷电将军/1.jpg b/resources/characterImg/雷电将军/1.jpg new file mode 100644 index 00000000..52e3443c Binary files /dev/null and b/resources/characterImg/雷电将军/1.jpg differ diff --git a/resources/characterImg/雷电将军/2.jpg b/resources/characterImg/雷电将军/2.jpg new file mode 100644 index 00000000..f7f70b19 Binary files /dev/null and b/resources/characterImg/雷电将军/2.jpg differ diff --git a/resources/characterImg/雷电将军/3.jpg b/resources/characterImg/雷电将军/3.jpg new file mode 100644 index 00000000..76dcd0a1 Binary files /dev/null and b/resources/characterImg/雷电将军/3.jpg differ diff --git a/resources/characterImg/雷电将军/4.jpg b/resources/characterImg/雷电将军/4.jpg new file mode 100644 index 00000000..4be17b05 Binary files /dev/null and b/resources/characterImg/雷电将军/4.jpg differ diff --git a/resources/characterImg/雷电将军/5.jpg b/resources/characterImg/雷电将军/5.jpg new file mode 100644 index 00000000..d56688fe Binary files /dev/null and b/resources/characterImg/雷电将军/5.jpg differ diff --git a/resources/characterImg/雷电将军/6.jpg b/resources/characterImg/雷电将军/6.jpg new file mode 100644 index 00000000..47a9a40e Binary files /dev/null and b/resources/characterImg/雷电将军/6.jpg differ diff --git a/resources/characterImg/香菱/1.jpg b/resources/characterImg/香菱/1.jpg new file mode 100644 index 00000000..dd7d261e Binary files /dev/null and b/resources/characterImg/香菱/1.jpg differ diff --git a/resources/characterImg/香菱/2.jpg b/resources/characterImg/香菱/2.jpg new file mode 100644 index 00000000..02a18cd3 Binary files /dev/null and b/resources/characterImg/香菱/2.jpg differ diff --git a/resources/characterImg/香菱/3.jpg b/resources/characterImg/香菱/3.jpg new file mode 100644 index 00000000..cce8118c Binary files /dev/null and b/resources/characterImg/香菱/3.jpg differ diff --git a/resources/characterImg/香菱/4.jpg b/resources/characterImg/香菱/4.jpg new file mode 100644 index 00000000..e5249c12 Binary files /dev/null and b/resources/characterImg/香菱/4.jpg differ diff --git a/resources/characterImg/香菱/5.jpg b/resources/characterImg/香菱/5.jpg new file mode 100644 index 00000000..20b02dab Binary files /dev/null and b/resources/characterImg/香菱/5.jpg differ diff --git a/resources/characterImg/魈/1.jpg b/resources/characterImg/魈/1.jpg new file mode 100644 index 00000000..66735600 Binary files /dev/null and b/resources/characterImg/魈/1.jpg differ diff --git a/resources/characterImg/魈/10.jpg b/resources/characterImg/魈/10.jpg new file mode 100644 index 00000000..3fdd1350 Binary files /dev/null and b/resources/characterImg/魈/10.jpg differ diff --git a/resources/characterImg/魈/11.jpg b/resources/characterImg/魈/11.jpg new file mode 100644 index 00000000..0257883e Binary files /dev/null and b/resources/characterImg/魈/11.jpg differ diff --git a/resources/characterImg/魈/12.jpg b/resources/characterImg/魈/12.jpg new file mode 100644 index 00000000..05f4a159 Binary files /dev/null and b/resources/characterImg/魈/12.jpg differ diff --git a/resources/characterImg/魈/13.jpg b/resources/characterImg/魈/13.jpg new file mode 100644 index 00000000..a98e0e77 Binary files /dev/null and b/resources/characterImg/魈/13.jpg differ diff --git a/resources/characterImg/魈/14.jpg b/resources/characterImg/魈/14.jpg new file mode 100644 index 00000000..07bdad9c Binary files /dev/null and b/resources/characterImg/魈/14.jpg differ diff --git a/resources/characterImg/魈/15.jpg b/resources/characterImg/魈/15.jpg new file mode 100644 index 00000000..e53d20b0 Binary files /dev/null and b/resources/characterImg/魈/15.jpg differ diff --git a/resources/characterImg/魈/16.jpg b/resources/characterImg/魈/16.jpg new file mode 100644 index 00000000..494a8ea9 Binary files /dev/null and b/resources/characterImg/魈/16.jpg differ diff --git a/resources/characterImg/魈/17.jpg b/resources/characterImg/魈/17.jpg new file mode 100644 index 00000000..61cb4dd8 Binary files /dev/null and b/resources/characterImg/魈/17.jpg differ diff --git a/resources/characterImg/魈/18.jpg b/resources/characterImg/魈/18.jpg new file mode 100644 index 00000000..394a2442 Binary files /dev/null and b/resources/characterImg/魈/18.jpg differ diff --git a/resources/characterImg/魈/19.jpg b/resources/characterImg/魈/19.jpg new file mode 100644 index 00000000..216fc06b Binary files /dev/null and b/resources/characterImg/魈/19.jpg differ diff --git a/resources/characterImg/魈/2.jpg b/resources/characterImg/魈/2.jpg new file mode 100644 index 00000000..8034d423 Binary files /dev/null and b/resources/characterImg/魈/2.jpg differ diff --git a/resources/characterImg/魈/3.jpg b/resources/characterImg/魈/3.jpg new file mode 100644 index 00000000..fe3df47d Binary files /dev/null and b/resources/characterImg/魈/3.jpg differ diff --git a/resources/characterImg/魈/4.jpg b/resources/characterImg/魈/4.jpg new file mode 100644 index 00000000..6a56cafc Binary files /dev/null and b/resources/characterImg/魈/4.jpg differ diff --git a/resources/characterImg/魈/5.jpg b/resources/characterImg/魈/5.jpg new file mode 100644 index 00000000..7e166903 Binary files /dev/null and b/resources/characterImg/魈/5.jpg differ diff --git a/resources/characterImg/魈/6.jpg b/resources/characterImg/魈/6.jpg new file mode 100644 index 00000000..9f9909e0 Binary files /dev/null and b/resources/characterImg/魈/6.jpg differ diff --git a/resources/characterImg/魈/7.jpg b/resources/characterImg/魈/7.jpg new file mode 100644 index 00000000..a5e4d2cf Binary files /dev/null and b/resources/characterImg/魈/7.jpg differ diff --git a/resources/characterImg/魈/8.jpg b/resources/characterImg/魈/8.jpg new file mode 100644 index 00000000..248c6ccb Binary files /dev/null and b/resources/characterImg/魈/8.jpg differ diff --git a/resources/characterImg/魈/9.jpg b/resources/characterImg/魈/9.jpg new file mode 100644 index 00000000..0ec11865 Binary files /dev/null and b/resources/characterImg/魈/9.jpg differ diff --git a/resources/font/NZBZ.ttf b/resources/font/NZBZ.ttf new file mode 100644 index 00000000..61601b00 Binary files /dev/null and b/resources/font/NZBZ.ttf differ