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
+
+
+ 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