This commit is contained in:
qsc
2026-06-19 18:12:30 +08:00
parent 62917a0dbc
commit 104772ba2e
21 changed files with 2967 additions and 28 deletions
+132
View File
@@ -0,0 +1,132 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>掉落记录</title>
<style>
body {
font-family: "Microsoft YaHei", Arial, sans-serif;
background: #f1f2f6;
margin: 0;
padding: 20px;
color: #2c2c33;
}
.container {
max-width: 1080px;
margin: 0 auto;
}
h1 {
font-size: 32px;
margin: 0 0 8px 0;
color: #222;
font-weight: 800;
text-align: center;
}
.meta {
margin-bottom: 24px;
color: #7a7f99;
font-size: 16px;
text-align: center;
}
table {
width: 100%;
border-collapse: collapse;
background: white;
border-radius: 12px;
overflow: hidden;
box-shadow: 0 4px 16px rgba(0,0,0,0.08);
text-align: left;
}
thead {
background: #d93939;
color: white;
font-size: 17px;
}
th, td {
padding: 12px 10px;
border-bottom: 1px solid #eee;
font-size: 15px;
vertical-align: middle;
}
tbody tr:nth-child(even) {
background: #fafafa;
}
.item-col {
min-width: 120px;
color: #d93939;
font-weight: 800;
white-space: nowrap;
}
.server-col {
min-width: 90px;
text-align: center;
white-space: nowrap;
}
.map-col {
max-width: 260px;
color: #333;
word-break: break-word;
line-height: 1.45;
}
.role-col {
max-width: 260px;
color: #333;
font-weight: 700;
word-break: break-word;
line-height: 1.45;
}
.time-col {
min-width: 150px;
color: #60657a;
text-align: center;
white-space: nowrap;
font-variant-numeric: tabular-nums;
}
</style>
</head>
<body>
<div class="container">
<h1>{{ name }} 掉落记录</h1>
<div class="meta">{{ server }} · 数量:{{ limit }} · 更新时间:{{ update_time }}</div>
<table>
<thead>
<tr>
<th>物品名称</th>
<th>服务器</th>
<th>地点</th>
<th>角色名称</th>
<th>时间</th>
</tr>
</thead>
<tbody>
{% for item in items %}
<tr>
<td class="item-col">{{ item.item_name }}</td>
<td class="server-col">{{ item.server }}</td>
<td class="map-col">{{ item.map_name }}</td>
<td class="role-col">{{ item.role_name }}</td>
<td class="time-col">{{ item.time }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</body>
</html>
+36 -4
View File
@@ -164,20 +164,52 @@ body {
<div class="command"><div class="cmd-name">的卢记录</div><div class="cmd-usage">的卢 [服务器]</div><div class="cmd-desc"></div></div>
<div class="command"><div class="cmd-name">烟花记录</div><div class="cmd-usage">烟花 角色名 [服务器]</div><div class="cmd-desc"></div></div>
<div class="command"><div class="cmd-name">骗子查询</div><div class="cmd-usage">骗子 QQ号</div><div class="cmd-desc"></div></div>
<div class="command"><div class="cmd-name">角色奇遇</div><div class="cmd-usage">查询 角色名 [服务器]</div><div class="cmd-desc"></div></div>
<div class="command"><div class="cmd-name">奇遇统计</div><div class="cmd-usage">统计 奇遇名称 [服务器]</div><div class="cmd-desc">统计指定奇遇触发次数</div></div>
<div class="command"><div class="cmd-name">角色奇遇</div><div class="cmd-usage">奇遇 角色名 [服务器]</div><div class="cmd-desc"></div></div>
<div class="command"><div class="cmd-name">未做奇遇</div><div class="cmd-usage">未做奇遇 角色名 [服务器]</div><div class="cmd-desc"></div></div>
<div class="command"><div class="cmd-name">奇遇统计</div><div class="cmd-usage">奇遇统计 奇遇名称 [服务器]</div><div class="cmd-desc">统计指定奇遇触发次数</div></div>
<div class="command"><div class="cmd-name">近期奇遇</div><div class="cmd-usage">近期奇遇 [服务器]</div><div class="cmd-desc">查询指定服务器最近触发的奇遇记录</div></div>
<div class="command"><div class="cmd-name">奇遇汇总</div><div class="cmd-usage">奇遇汇总 [天数] [服务器]</div><div class="cmd-desc">统计指定服务器最近一段时间的奇遇触发汇总</div></div>
<div class="command"><div class="cmd-name">名剑战绩</div><div class="cmd-usage">战绩 角色名 [服务器] [模式]</div><div class="cmd-desc">33 22</div></div>
<div class="command"><div class="cmd-name">名剑排行</div><div class="cmd-usage">排行 [数量] [模式]</div><div class="cmd-desc">33 22</div></div>
<div class="command"><div class="cmd-name">名剑统计</div><div class="cmd-usage">名剑统计 [模式]</div><div class="cmd-desc">22 33 55</div></div>
<div class="command"><div class="cmd-name">副本招募</div><div class="cmd-usage">招募 副本名称 [服务器]</div><div class="cmd-desc"></div></div>
<div class="command"><div class="cmd-name">拜师列表</div><div class="cmd-usage">拜师 [搜索关键词] [服务器]</div><div class="cmd-desc">查询徒弟找师傅信息</div></div>
<div class="command"><div class="cmd-name">收徒列表</div><div class="cmd-usage">收徒 [搜索关键词] [服务器]</div><div class="cmd-desc">查询师傅找徒弟信息</div></div>
<div class="command"><div class="cmd-name">名士五十强</div><div class="cmd-usage">名士五十强 [服务器]</div><div class="cmd-desc">查询风云录角色榜单</div></div>
<div class="command"><div class="cmd-name">老江湖五十强</div><div class="cmd-usage">老江湖五十强 [服务器]</div><div class="cmd-desc">查询风云录角色榜单</div></div>
<div class="command"><div class="cmd-name">兵甲藏家五十强</div><div class="cmd-usage">兵甲藏家五十强 [服务器]</div><div class="cmd-desc">查询风云录角色榜单</div></div>
<div class="command"><div class="cmd-name">名师五十强</div><div class="cmd-usage">名师五十强 [服务器]</div><div class="cmd-desc">查询风云录角色榜单</div></div>
<div class="command"><div class="cmd-name">阵营英雄五十强</div><div class="cmd-usage">阵营英雄五十强 [服务器]</div><div class="cmd-desc">查询风云录角色榜单</div></div>
<div class="command"><div class="cmd-name">薪火相传五十强</div><div class="cmd-usage">薪火相传五十强 [服务器]</div><div class="cmd-desc">查询风云录角色榜单</div></div>
<div class="command"><div class="cmd-name">庐园广记一百强</div><div class="cmd-usage">庐园广记一百强 [服务器]</div><div class="cmd-desc">查询风云录角色榜单</div></div>
<div class="command"><div class="cmd-name">浩气神兵宝甲五十强</div><div class="cmd-usage">浩气神兵宝甲五十强 [服务器]</div><div class="cmd-desc">查询风云录帮会榜单</div></div>
<div class="command"><div class="cmd-name">恶人神兵宝甲五十强</div><div class="cmd-usage">恶人神兵宝甲五十强 [服务器]</div><div class="cmd-desc">查询风云录帮会榜单</div></div>
<div class="command"><div class="cmd-name">浩气爱心帮会五十强</div><div class="cmd-usage">浩气爱心帮会五十强 [服务器]</div><div class="cmd-desc">查询风云录帮会榜单</div></div>
<div class="command"><div class="cmd-name">恶人爱心帮会五十强</div><div class="cmd-usage">恶人爱心帮会五十强 [服务器]</div><div class="cmd-desc">查询风云录帮会榜单</div></div>
<div class="command"><div class="cmd-name">赛季恶人五十强</div><div class="cmd-usage">赛季恶人五十强 [服务器]</div><div class="cmd-desc">查询风云录帮会榜单</div></div>
<div class="command"><div class="cmd-name">赛季浩气五十强</div><div class="cmd-usage">赛季浩气五十强 [服务器]</div><div class="cmd-desc">查询风云录帮会榜单</div></div>
<div class="command"><div class="cmd-name">上周恶人五十强</div><div class="cmd-usage">上周恶人五十强 [服务器]</div><div class="cmd-desc">查询风云录帮会榜单</div></div>
<div class="command"><div class="cmd-name">上周浩气五十强</div><div class="cmd-usage">上周浩气五十强 [服务器]</div><div class="cmd-desc">查询风云录帮会榜单</div></div>
<div class="command"><div class="cmd-name">本周恶人五十强</div><div class="cmd-usage">本周恶人五十强 [服务器]</div><div class="cmd-desc">查询风云录帮会榜单</div></div>
<div class="command"><div class="cmd-name">本周浩气五十强</div><div class="cmd-usage">本周浩气五十强 [服务器]</div><div class="cmd-desc">查询风云录帮会榜单</div></div>
<div class="command"><div class="cmd-name">掉落记录</div><div class="cmd-usage">掉落 物品名称 [数量] [服务器]</div><div class="cmd-desc">查询团队秘境贵重物品掉落记录</div></div>
<div class="command"><div class="cmd-name">角色信息</div><div class="cmd-usage">角色 名称 [服务器]</div><div class="cmd-desc">查询角色基础信息</div></div>
<div class="command"><div class="cmd-name">角色名片</div><div class="cmd-usage">名片 角色名 [服务器]</div><div class="cmd-desc"></div></div>
<div class="command"><div class="cmd-name">角色名片</div><div class="cmd-usage">名片 角色名 [服务器]</div><div class="cmd-desc">查询角色当前名片</div></div>
<div class="command"><div class="cmd-name">所有名片</div><div class="cmd-usage">所有名片 角色名 [服务器]</div><div class="cmd-desc"></div></div>
<div class="command"><div class="cmd-name">随机名片</div><div class="cmd-usage">随机 职业 体型 [服务器]</div><div class="cmd-desc"></div></div>
<div class="command"><div class="cmd-name">刷马</div><div class="cmd-usage">刷马 [服务器]</div><div class="cmd-desc"></div></div>
<div class="command"><div class="cmd-name">角色百战</div><div class="cmd-usage">精耐 角色名 [服务器]</div><div class="cmd-desc">查询角色百战精力耐力和技能列表</div></div>
<div class="command"><div class="cmd-name">心法阵眼</div><div class="cmd-usage">阵眼 心法</div><div class="cmd-desc">查询指定心法阵眼效果</div></div>
<div class="command"><div class="cmd-name">奇穴详情</div><div class="cmd-usage">奇穴 心法</div><div class="cmd-desc">查询指定心法奇穴详情</div></div>
<div class="command"><div class="cmd-name">技能详情</div><div class="cmd-usage">技能 心法</div><div class="cmd-desc">查询指定心法技能详情</div></div>
<div class="command"><div class="cmd-name">资历排行</div><div class="cmd-usage">资历排行 职业 [服务器]</div><div class="cmd-desc">查询指定职业资历排行榜</div></div>
<div class="command"><div class="cmd-name">马场刷新</div><div class="cmd-usage">刷马 [服务器]</div><div class="cmd-desc"></div></div>
<div class="command"><div class="cmd-name">金价查询</div><div class="cmd-usage">金价 [服务器]</div><div class="cmd-desc"></div></div>
<div class="command"><div class="cmd-name">外观物价</div><div class="cmd-usage">物价 外观名称 [服务器]</div><div class="cmd-desc"></div></div>
<div class="command"><div class="cmd-name">八卦记录</div><div class="cmd-usage">八卦 类型</div><div class="cmd-desc">818 616 避雷</div></div>
<div class="command"><div class="cmd-name">交易行</div><div class="cmd-usage">交易行 物品名称 [服务器]</div><div class="cmd-desc"></div></div>
</div>
</div>
+158
View File
@@ -0,0 +1,158 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>技能详情</title>
<style>
body {
font-family: "Microsoft YaHei", Arial, sans-serif;
background: #f1f2f6;
margin: 0;
padding: 20px;
color: #2c2c33;
}
.container {
max-width: 1120px;
margin: 0 auto;
}
h1 {
font-size: 34px;
margin: 0 0 8px 0;
color: #222;
font-weight: 800;
text-align: center;
}
.meta {
margin-bottom: 24px;
color: #7a7f99;
font-size: 16px;
text-align: center;
}
.section {
margin-bottom: 24px;
}
.section-title {
display: flex;
align-items: center;
gap: 10px;
margin: 0 0 12px 0;
color: #222;
font-size: 24px;
font-weight: 800;
}
.section-title::before {
content: "";
display: block;
width: 5px;
height: 30px;
background: #2f74d0;
border-radius: 3px;
}
.cards {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 14px;
}
.card {
display: grid;
grid-template-columns: 54px minmax(0, 1fr);
gap: 12px;
background: white;
border-radius: 12px;
padding: 14px;
box-shadow: 0 4px 16px rgba(0,0,0,0.08);
}
.icon {
width: 48px;
height: 48px;
border-radius: 8px;
object-fit: cover;
background: #f1f2f6;
}
.head {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 8px;
margin-bottom: 8px;
}
.name {
color: #222;
font-size: 18px;
font-weight: 800;
line-height: 1.25;
}
.tag {
color: #5d6680;
background: #eef2f8;
border-radius: 999px;
padding: 2px 8px;
font-size: 13px;
white-space: nowrap;
}
.desc {
color: #333;
font-size: 15px;
line-height: 1.55;
word-break: break-word;
}
</style>
</head>
<body>
<div class="container">
<h1>{{ name }} 技能详情</h1>
<div class="meta">更新时间:{{ update_time }}</div>
{% for group in groups %}
<div class="section">
<div class="section-title">{{ group.title }}</div>
<div class="cards">
{% for skill in group.skills %}
<div class="card">
{% if skill.icon %}
<img class="icon" src="{{ skill.icon }}" alt="{{ skill.name }}">
{% else %}
<div class="icon"></div>
{% endif %}
<div>
<div class="head">
<span class="name">{{ skill.name }}</span>
{% if skill.interval %}
<span class="tag">{{ skill.interval }}</span>
{% endif %}
{% if skill.distance %}
<span class="tag">{{ skill.distance }}</span>
{% endif %}
{% if skill.release_type %}
<span class="tag">{{ skill.release_type }}</span>
{% endif %}
{% if skill.weapon %}
<span class="tag">{{ skill.weapon }}</span>
{% endif %}
</div>
<div class="desc">{{ skill.desc }}</div>
</div>
</div>
{% endfor %}
</div>
</div>
{% endfor %}
</div>
</body>
</html>
+165
View File
@@ -0,0 +1,165 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>精耐查询</title>
<style>
body {
font-family: "Microsoft YaHei", Arial, sans-serif;
background: #f1f2f6;
margin: 0;
padding: 20px;
color: #2c2c33;
}
.container {
max-width: 980px;
margin: 0 auto;
}
h1 {
font-size: 32px;
margin: 0 0 8px 0;
color: #222;
font-weight: 800;
text-align: center;
}
.meta {
margin-bottom: 22px;
color: #7a7f99;
font-size: 16px;
text-align: center;
}
.summary {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 14px;
margin-bottom: 22px;
}
.stat {
background: white;
border-radius: 12px;
padding: 18px 14px;
text-align: center;
box-shadow: 0 4px 16px rgba(0,0,0,0.08);
}
.label {
color: #7a7f99;
font-size: 16px;
margin-bottom: 8px;
}
.value {
color: #d93939;
font-size: 30px;
line-height: 1;
font-weight: 800;
font-variant-numeric: tabular-nums;
}
table {
width: 100%;
border-collapse: collapse;
background: white;
border-radius: 12px;
overflow: hidden;
box-shadow: 0 4px 16px rgba(0,0,0,0.08);
text-align: left;
}
thead {
background: #d93939;
color: white;
font-size: 17px;
}
th, td {
padding: 12px 10px;
border-bottom: 1px solid #eee;
font-size: 15px;
vertical-align: middle;
}
tbody tr:nth-child(even) {
background: #fafafa;
}
.skill-col {
width: 34%;
font-weight: 800;
color: #333;
word-break: break-word;
line-height: 1.45;
}
.leader-col {
width: 30%;
color: #333;
word-break: break-word;
line-height: 1.45;
}
.color-col,
.level-col {
text-align: center;
white-space: nowrap;
font-weight: 700;
}
.level-col {
color: #d93939;
font-variant-numeric: tabular-nums;
}
</style>
</head>
<body>
<div class="container">
<h1>{{ server }} - {{ role_name }}</h1>
<div class="meta">更新时间:{{ update_time }}</div>
<div class="summary">
<div class="stat">
<div class="label">精力</div>
<div class="value">{{ skill_energy }}</div>
</div>
<div class="stat">
<div class="label">耐力</div>
<div class="value">{{ skill_stamina }}</div>
</div>
<div class="stat">
<div class="label">技能数量</div>
<div class="value">{{ skill_count }}</div>
</div>
</div>
<table>
<thead>
<tr>
<th>技能名称</th>
<th>首领</th>
<th>破绽颜色</th>
<th>技能等级</th>
</tr>
</thead>
<tbody>
{% for item in items %}
<tr>
<td class="skill-col">{{ item.skill_name }}</td>
<td class="leader-col">{{ item.leader_name }}</td>
<td class="color-col">{{ item.skill_color_text }}</td>
<td class="level-col">{{ item.skill_level }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</body>
</html>
+109
View File
@@ -0,0 +1,109 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>近期奇遇</title>
<style>
body {
font-family: "Microsoft YaHei", Arial, sans-serif;
background: #f1f2f6;
margin: 0;
padding: 20px;
color: #2c2c33;
}
.container {
max-width: 1040px;
margin: 0 auto;
}
h1 {
font-size: 32px;
margin: 0 0 8px 0;
color: #222;
font-weight: 800;
text-align: center;
}
.meta {
margin-bottom: 24px;
color: #7a7f99;
font-size: 16px;
text-align: center;
}
table {
width: 100%;
border-collapse: collapse;
background: white;
border-radius: 12px;
overflow: hidden;
box-shadow: 0 4px 16px rgba(0,0,0,0.08);
text-align: left;
}
thead {
background: #d93939;
color: white;
font-size: 18px;
}
th, td {
padding: 14px 12px;
border-bottom: 1px solid #eee;
font-size: 16px;
white-space: nowrap;
}
tbody tr:nth-child(even) {
background: #fafafa;
}
.event-col {
font-weight: 700;
color: #333;
}
.role-col {
color: #333;
}
.time-col {
color: #60657a;
font-variant-numeric: tabular-nums;
}
</style>
</head>
<body>
<div class="container">
<h1>{{ server }} 近期奇遇</h1>
<div class="meta">更新时间:{{ update_time }}</div>
<table>
<thead>
<tr>
<th>区服</th>
<th>角色</th>
<th>奇遇名称</th>
<th>触发时间</th>
</tr>
</thead>
<tbody>
{% for m in items %}
<tr>
<td>{{ m.server }}</td>
<td class="role-col">{{ m.name }}</td>
<td class="event-col">{{ m.event }}</td>
<td class="time-col">{{ m.time }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</body>
</html>
+124
View File
@@ -0,0 +1,124 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>名剑统计</title>
<style>
body {
font-family: "Microsoft YaHei", Arial, sans-serif;
background: #f1f2f6;
margin: 0;
padding: 20px;
color: #2c2c33;
}
.container {
max-width: 640px;
margin: 0 auto;
}
h1 {
font-size: 30px;
margin: 0 0 8px 0;
color: #222;
font-weight: 800;
text-align: center;
}
.meta {
margin-bottom: 24px;
color: #7a7f99;
font-size: 16px;
text-align: center;
}
table {
width: 100%;
border-collapse: collapse;
background: white;
border-radius: 12px;
overflow: hidden;
box-shadow: 0 4px 16px rgba(0,0,0,0.08);
text-align: left;
}
thead {
background: #d93939;
color: white;
font-size: 18px;
}
th, td {
padding: 12px 10px;
border-bottom: 1px solid #eee;
font-size: 15px;
white-space: nowrap;
vertical-align: middle;
}
tbody tr:nth-child(even) {
background: #fafafa;
}
.school {
display: flex;
align-items: center;
gap: 8px;
font-weight: 700;
color: #333;
}
.school-icon {
width: 32px;
height: 32px;
border-radius: 50%;
object-fit: contain;
flex: 0 0 auto;
}
.num-col {
color: #d93939;
font-weight: 700;
text-align: center;
font-variant-numeric: tabular-nums;
}
</style>
</head>
<body>
<div class="container">
<h1>名剑统计(前1000) · {{ mode }}</h1>
<div class="meta">更新时间:{{ update_time }}</div>
<table>
<thead>
<tr>
<th>门派</th>
<th>当前赛季数量</th>
<th>上赛季数量</th>
</tr>
</thead>
<tbody>
{% for m in items %}
<tr>
<td>
<div class="school">
{% if icons.sect.get(m.name) %}
<img class="school-icon" src="{{ icons.sect[m.name] }}" alt="{{ m.name }}">
{% endif %}
<span>{{ m.name }}</span>
</div>
</td>
<td class="num-col">{{ m.this }}</td>
<td class="num-col">{{ m.last }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</body>
</html>
+160
View File
@@ -0,0 +1,160 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>奇穴详情</title>
<style>
body {
font-family: "Microsoft YaHei", Arial, sans-serif;
background: #f1f2f6;
margin: 0;
padding: 20px;
color: #2c2c33;
}
.container {
max-width: 1120px;
margin: 0 auto;
}
h1 {
font-size: 34px;
margin: 0 0 8px 0;
color: #222;
font-weight: 800;
text-align: center;
}
.meta {
margin-bottom: 24px;
color: #7a7f99;
font-size: 16px;
text-align: center;
}
.section {
margin-bottom: 24px;
}
.section-title {
display: flex;
align-items: center;
gap: 10px;
margin: 0 0 12px 0;
color: #222;
font-size: 24px;
font-weight: 800;
}
.section-title::before {
content: "";
display: block;
width: 5px;
height: 30px;
background: #d93939;
border-radius: 3px;
}
.cards {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 14px;
}
.card {
display: grid;
grid-template-columns: 54px minmax(0, 1fr);
gap: 12px;
background: white;
border-radius: 12px;
padding: 14px;
box-shadow: 0 4px 16px rgba(0,0,0,0.08);
}
.icon {
width: 48px;
height: 48px;
border-radius: 8px;
object-fit: cover;
background: #f1f2f6;
}
.head {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 8px;
margin-bottom: 8px;
}
.name {
color: #222;
font-size: 18px;
font-weight: 800;
line-height: 1.25;
}
.tag {
color: white;
background: #d93939;
border-radius: 999px;
padding: 2px 8px;
font-size: 13px;
font-weight: 700;
white-space: nowrap;
}
.interval {
color: #7a7f99;
background: #f1f2f6;
border-radius: 999px;
padding: 2px 8px;
font-size: 13px;
white-space: nowrap;
}
.desc {
color: #333;
font-size: 15px;
line-height: 1.55;
word-break: break-word;
}
</style>
</head>
<body>
<div class="container">
<h1>{{ name }} 奇穴详情</h1>
<div class="meta">更新时间:{{ update_time }}</div>
{% for group in groups %}
<div class="section">
<div class="section-title">{{ group['title'] }}</div>
<div class="cards">
{% for item in group.talents %}
<div class="card">
{% if item['icon'] %}
<img class="icon" src="{{ item['icon'] }}" alt="{{ item['name'] }}">
{% else %}
<div class="icon"></div>
{% endif %}
<div>
<div class="head">
<span class="name">{{ item['name'] }}</span>
<span class="tag">{{ item['class_text'] }}</span>
{% if item['interval'] %}
<span class="interval">{{ item['interval'] }}</span>
{% endif %}
</div>
<div class="desc">{{ item['desc'] }}</div>
</div>
</div>
{% endfor %}
</div>
</div>
{% endfor %}
</div>
</body>
</html>
+117
View File
@@ -0,0 +1,117 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>奇遇汇总</title>
<style>
body {
font-family: "Microsoft YaHei", Arial, sans-serif;
background: #f1f2f6;
margin: 0;
padding: 20px;
color: #2c2c33;
}
.container {
max-width: 1080px;
margin: 0 auto;
}
h1 {
font-size: 32px;
margin: 0 0 8px 0;
color: #222;
font-weight: 800;
text-align: center;
}
.meta {
margin-bottom: 24px;
color: #7a7f99;
font-size: 16px;
text-align: center;
}
table {
width: 100%;
border-collapse: collapse;
background: white;
border-radius: 12px;
overflow: hidden;
box-shadow: 0 4px 16px rgba(0,0,0,0.08);
text-align: left;
}
thead {
background: #d93939;
color: white;
font-size: 18px;
}
th, td {
padding: 14px 12px;
border-bottom: 1px solid #eee;
font-size: 16px;
white-space: nowrap;
}
tbody tr:nth-child(even) {
background: #fafafa;
}
.event-col {
font-weight: 700;
color: #333;
}
.count-col {
color: #d93939;
font-weight: 700;
text-align: center;
}
.role-col {
color: #333;
}
.time-col {
color: #60657a;
font-variant-numeric: tabular-nums;
}
</style>
</head>
<body>
<div class="container">
<h1>{{ server }} 奇遇汇总</h1>
<div class="meta">最近 {{ num }} 天 · 更新时间:{{ update_time }}</div>
<table>
<thead>
<tr>
<th>区服</th>
<th>奇遇名称</th>
<th>触发次数</th>
<th>最近角色</th>
<th>最近时间</th>
</tr>
</thead>
<tbody>
{% for m in items %}
<tr>
<td>{{ m.server }}</td>
<td class="event-col">{{ m.event }}</td>
<td class="count-col">{{ m.count }}</td>
<td class="role-col">{{ m.latest_name }}</td>
<td class="time-col">{{ m.latest_time }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</body>
</html>
+158
View File
@@ -0,0 +1,158 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>角色榜单</title>
<style>
body {
font-family: "Microsoft YaHei", Arial, sans-serif;
background: #f1f2f6;
margin: 0;
padding: 20px;
color: #2c2c33;
}
.container {
max-width: 1120px;
margin: 0 auto;
}
h1 {
font-size: 32px;
margin: 0 0 8px 0;
color: #222;
font-weight: 800;
text-align: center;
}
.meta {
margin-bottom: 24px;
color: #7a7f99;
font-size: 16px;
text-align: center;
}
table {
width: 100%;
border-collapse: collapse;
background: white;
border-radius: 12px;
overflow: hidden;
box-shadow: 0 4px 16px rgba(0,0,0,0.08);
text-align: left;
}
thead {
background: #d93939;
color: white;
font-size: 17px;
}
th, td {
padding: 12px 10px;
border-bottom: 1px solid #eee;
font-size: 15px;
vertical-align: middle;
}
tbody tr:nth-child(even) {
background: #fafafa;
}
.rank-col,
.level-col,
.camp-col,
.score-col {
white-space: nowrap;
text-align: center;
}
.rank-col {
width: 56px;
color: #d93939;
font-weight: 800;
}
.force {
display: flex;
align-items: center;
gap: 8px;
min-width: 108px;
font-weight: 700;
color: #333;
white-space: nowrap;
}
.force-icon {
width: 30px;
height: 30px;
border-radius: 50%;
object-fit: contain;
flex: 0 0 auto;
}
.role-col {
min-width: 120px;
font-weight: 700;
color: #333;
white-space: nowrap;
}
.tong-col {
max-width: 260px;
word-break: break-word;
color: #333;
}
.score-col {
color: #d93939;
font-weight: 800;
font-variant-numeric: tabular-nums;
}
</style>
</head>
<body>
<div class="container">
<h1>{{ rank_name }}</h1>
<div class="meta">{{ server }} · 更新时间:{{ update_time }}</div>
<table>
<thead>
<tr>
<th>排名</th>
<th>职业</th>
<th>角色名称</th>
<th>等级</th>
<th>阵营</th>
<th>帮会</th>
<th>排行积分</th>
</tr>
</thead>
<tbody>
{% for item in items %}
<tr>
<td class="rank-col">{{ loop.index }}</td>
<td>
<div class="force">
{% if icons.sect.get(item.force_name) %}
<img class="force-icon" src="{{ icons.sect[item.force_name] }}" alt="{{ item.force_name }}">
{% endif %}
<span>{{ item.force_name }}</span>
</div>
</td>
<td class="role-col">{{ item.role_name }}</td>
<td class="level-col">{{ item.role_level }}</td>
<td class="camp-col">{{ item.camp_name }}</td>
<td class="tong-col">{{ item.tong_name }}</td>
<td class="score-col">{{ item.total_score }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</body>
</html>
+141
View File
@@ -0,0 +1,141 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>帮会榜单</title>
<style>
body {
font-family: "Microsoft YaHei", Arial, sans-serif;
background: #f1f2f6;
margin: 0;
padding: 20px;
color: #2c2c33;
}
.container {
max-width: 1040px;
margin: 0 auto;
}
h1 {
font-size: 32px;
margin: 0 0 8px 0;
color: #222;
font-weight: 800;
text-align: center;
}
.meta {
margin-bottom: 24px;
color: #7a7f99;
font-size: 16px;
text-align: center;
}
table {
width: 100%;
border-collapse: collapse;
background: white;
border-radius: 12px;
overflow: hidden;
box-shadow: 0 4px 16px rgba(0,0,0,0.08);
text-align: left;
}
thead {
background: #d93939;
color: white;
font-size: 17px;
}
th, td {
padding: 12px 10px;
border-bottom: 1px solid #eee;
font-size: 15px;
vertical-align: middle;
}
tbody tr:nth-child(even) {
background: #fafafa;
}
.rank-col,
.people-col,
.score-col {
white-space: nowrap;
text-align: center;
}
.rank-col {
width: 56px;
color: #d93939;
font-weight: 800;
}
.tong-col {
min-width: 220px;
font-weight: 800;
color: #333;
word-break: break-word;
}
.master-col {
min-width: 150px;
color: #333;
word-break: break-word;
}
.castle-col {
min-width: 110px;
color: #60657a;
word-break: break-word;
}
.people-col {
color: #333;
font-variant-numeric: tabular-nums;
}
.score-col {
color: #d93939;
font-weight: 800;
font-variant-numeric: tabular-nums;
}
</style>
</head>
<body>
<div class="container">
<h1>{{ rank_name }}</h1>
<div class="meta">{{ server }} · 更新时间:{{ update_time }}</div>
<table>
<thead>
<tr>
<th>排名</th>
<th>帮会名称</th>
<th>帮主</th>
<th>据点</th>
<th>人数</th>
<th>排行积分</th>
</tr>
</thead>
<tbody>
{% for item in items %}
<tr>
<td class="rank-col">{{ loop.index }}</td>
<td class="tong-col">{{ item.tong_name }}</td>
<td class="master-col">{{ item.master_name }}</td>
<td class="castle-col">{{ item.castle_name }}</td>
<td class="people-col">{{ item.now_count }}/{{ item.max_count }}</td>
<td class="score-col">{{ item.total_score }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</body>
</html>
+151
View File
@@ -0,0 +1,151 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>师徒招募</title>
<style>
body {
font-family: "Microsoft YaHei", Arial, sans-serif;
background: #f1f2f6;
margin: 0;
padding: 20px;
color: #2c2c33;
}
.container {
max-width: 1280px;
margin: 0 auto;
}
h1 {
font-size: 32px;
margin: 0 0 8px 0;
color: #222;
font-weight: 800;
text-align: center;
}
.meta {
margin-bottom: 24px;
color: #7a7f99;
font-size: 16px;
text-align: center;
}
table {
width: 100%;
border-collapse: collapse;
background: white;
border-radius: 12px;
overflow: hidden;
box-shadow: 0 4px 16px rgba(0,0,0,0.08);
text-align: left;
}
thead {
background: #d93939;
color: white;
font-size: 18px;
}
th, td {
padding: 14px 12px;
border-bottom: 1px solid #eee;
font-size: 16px;
vertical-align: middle;
}
tbody tr:nth-child(even) {
background: #fafafa;
}
.force-col {
min-width: 120px;
}
.force {
display: flex;
align-items: center;
gap: 8px;
font-weight: 700;
color: #333;
white-space: nowrap;
}
.force-icon {
width: 32px;
height: 32px;
border-radius: 50%;
object-fit: contain;
flex: 0 0 auto;
}
.name-col {
font-weight: 700;
color: #333;
white-space: nowrap;
}
.small-col {
white-space: nowrap;
text-align: center;
}
.comment-col {
max-width: 420px;
line-height: 1.5;
word-break: break-word;
color: #333;
}
</style>
</head>
<body>
<div class="container">
<h1>{{ title }}</h1>
<div class="meta">
{{ server }}
{% if keyword %} · 关键词:{{ keyword }}{% endif %}
· 更新时间:{{ update_time }}
</div>
<table>
<thead>
<tr>
<th>职业</th>
<th>角色名称</th>
<th>等级</th>
<th>体型</th>
<th>帮会</th>
<th>阵营</th>
<th>信息</th>
</tr>
</thead>
<tbody>
{% for item in items %}
<tr>
<td class="force-col">
<div class="force">
{% if icons.sect.get(item.forceName) %}
<img class="force-icon" src="{{ icons.sect[item.forceName] }}" alt="{{ item.forceName }}">
{% endif %}
<span>{{ item.forceName }}</span>
</div>
</td>
<td class="name-col">{{ item.roleName }}</td>
<td class="small-col">{{ item.roleLevel }}</td>
<td class="small-col">{{ item.bodyName }}</td>
<td>{{ item.tongName }}</td>
<td class="small-col">{{ item.campName }}</td>
<td class="comment-col">{{ item.comment }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</body>
</html>
+139
View File
@@ -0,0 +1,139 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>未做奇遇</title>
<style>
body {
margin: 0;
padding: 24px;
background: #f5f7fb;
color: #2c2c33;
font-family: "Microsoft YaHei", Arial, sans-serif;
}
.header {
margin-bottom: 24px;
color: #1f2a44;
}
.title {
font-size: 34px;
font-weight: 800;
margin-bottom: 8px;
}
.meta {
font-size: 20px;
color: #7a7f99;
}
.section {
margin-bottom: 32px;
}
.section-title {
font-size: 36px;
font-weight: bold;
margin-bottom: 16px;
border-left: 4px solid #4f7cff;
padding-left: 10px;
color: #1f2a44;
}
.card-container {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 16px;
}
.card {
background: #ffffff;
border-radius: 8px;
padding: 16px 12px;
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.08);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
text-align: center;
min-height: 90px;
}
.card img {
width: 100%;
max-width: 180px;
height: auto;
object-fit: contain;
margin-bottom: 6px;
}
.event-name {
font-size: 22px;
font-weight: 600;
margin-bottom: 4px;
color: #2b3a67;
}
.time {
font-size: 22px;
color: #7a7f99;
}
.empty {
background: #ffffff;
border-radius: 8px;
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.06);
color: #7a7f99;
font-size: 20px;
padding: 22px;
}
</style>
</head>
<body>
<div class="header">
<div class="title">未做奇遇</div>
<div class="meta">{{ server }} · {{ name }}</div>
</div>
<div class="section">
<div class="section-title">普通奇遇({{ ptqy|length if ptqy else 0 }}</div>
{% if ptqy %}
<div class="card-container">
{% for item in ptqy %}
<div class="card">
{% if icons.serendipity.get(item.event) %}
<img src="{{ icons.serendipity[item.event] }}" alt="{{ item.event }}">
{% else %}
<div class="event-name">{{ item.event }}</div>
{% endif %}
<div class="time">{{ item.time }}</div>
</div>
{% endfor %}
</div>
{% else %}
<div class="empty">暂无未做普通奇遇</div>
{% endif %}
</div>
<div class="section">
<div class="section-title">绝世奇遇({{ jsqy|length if jsqy else 0 }}</div>
{% if jsqy %}
<div class="card-container">
{% for item in jsqy %}
<div class="card">
{% if icons.serendipity.get(item.event) %}
<img src="{{ icons.serendipity[item.event] }}" alt="{{ item.event }}">
{% else %}
<div class="event-name">{{ item.event }}</div>
{% endif %}
<div class="time">{{ item.time }}</div>
</div>
{% endfor %}
</div>
{% else %}
<div class="empty">暂无未做绝世奇遇</div>
{% endif %}
</div>
</body>
</html>
+71 -16
View File
@@ -107,7 +107,8 @@ table {
width: 100%;
border-collapse: collapse;
margin-top: 20px;
font-size: 22px;
font-size: 18px;
table-layout: fixed;
}
thead {
@@ -115,7 +116,7 @@ thead {
}
th, td {
padding: 10px;
padding: 8px 6px;
text-align: center;
}
@@ -154,6 +155,36 @@ tbody tr:nth-child(odd) {
color: #f5a623;
font-weight: bold;
}
.time-col {
width: 170px;
font-size: 16px;
font-variant-numeric: tabular-nums;
}
.duration-col {
width: 92px;
}
.kungfu-col {
width: 150px;
}
.result-col {
width: 64px;
}
.score-col {
width: 104px;
}
.grade-col {
width: 96px;
}
.mvp-col {
width: 58px;
}
</style>
</head>
@@ -210,28 +241,30 @@ tbody tr:nth-child(odd) {
<table>
<thead>
<tr>
<th>对战时长</th>
<th>心法</th>
<th>胜负</th>
<th>积分变化</th>
<th>最终积分</th>
<th>平均段位</th>
<th>MVP</th>
<th class="time-col">开始时间</th>
<th class="duration-col">对战时长</th>
<th class="kungfu-col">心法</th>
<th class="result-col">胜负</th>
<th class="score-col">积分变化</th>
<th class="score-col">最终积分</th>
<th class="grade-col">平均段位</th>
<th class="mvp-col">MVP</th>
</tr>
</thead>
<tbody>
{% for m in history %}
<tr>
<td>{{ m.endTime - m.startTime }}</td>
<td>{{ m.kungfu }}</td>
<td class="{{ 'win' if m.won else 'lose' }}">{{ '胜' if m.won else '负' }}</td>
<td class="{{ 'mmr-up' if m.mmr > 0 else 'mmr-down' }}">
<td class="time-col start-time" data-ts="{{ m.startTime }}">{{ m.startTime }}</td>
<td class="duration-col">{{ m.endTime - m.startTime }}</td>
<td class="kungfu-col">{{ m.kungfu }}</td>
<td class="result-col {{ 'win' if m.won else 'lose' }}">{{ '胜' if m.won else '负' }}</td>
<td class="score-col {{ 'mmr-up' if m.mmr > 0 else 'mmr-down' }}">
{{ m.mmr }}
</td>
<td>{{ m.totalMmr }}</td>
<td>{{ m.avgGrade }}</td>
<td class="{{ 'mvp' if m.mvp else '' }}">
<td class="score-col">{{ m.totalMmr }}</td>
<td class="grade-col">{{ m.avgGrade }}</td>
<td class="mvp-col {{ 'mvp' if m.mvp else '' }}">
{{ '是' if m.mvp else '-' }}
</td>
</tr>
@@ -240,5 +273,27 @@ tbody tr:nth-child(odd) {
</table>
</div>
<script>
document.querySelectorAll(".start-time").forEach(function (cell) {
var raw = cell.dataset.ts || cell.textContent.trim();
var ts = Number(raw);
if (!Number.isFinite(ts) || ts <= 0) {
cell.textContent = raw || "-";
return;
}
var date = new Date(ts * 1000);
var pad = function (n) { return String(n).padStart(2, "0"); };
cell.textContent = [
date.getFullYear(),
pad(date.getMonth() + 1),
pad(date.getDate())
].join("-") + " " + [
pad(date.getHours()),
pad(date.getMinutes()),
pad(date.getSeconds())
].join(":");
});
</script>
</body>
</html>
+163
View File
@@ -0,0 +1,163 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>资历排行</title>
<style>
body {
font-family: "Microsoft YaHei", Arial, sans-serif;
background: #f1f2f6;
margin: 0;
padding: 20px;
color: #2c2c33;
}
.container {
max-width: 1040px;
margin: 0 auto;
}
h1 {
font-size: 32px;
margin: 0 0 8px 0;
color: #222;
font-weight: 800;
text-align: center;
}
.meta {
margin-bottom: 24px;
color: #7a7f99;
font-size: 16px;
text-align: center;
}
table {
width: 100%;
border-collapse: collapse;
background: white;
border-radius: 12px;
overflow: hidden;
box-shadow: 0 4px 16px rgba(0,0,0,0.08);
text-align: left;
}
thead {
background: #d93939;
color: white;
font-size: 17px;
}
th, td {
padding: 12px 10px;
border-bottom: 1px solid #eee;
font-size: 15px;
vertical-align: middle;
}
tbody tr:nth-child(even) {
background: #fafafa;
}
.rank-col,
.server-col,
.score-col {
white-space: nowrap;
text-align: center;
}
.rank-col {
width: 56px;
color: #d93939;
font-weight: 800;
}
.role,
.force {
display: flex;
align-items: center;
gap: 8px;
min-width: 150px;
font-weight: 700;
color: #333;
white-space: nowrap;
}
.avatar {
width: 34px;
height: 34px;
border-radius: 50%;
object-fit: cover;
flex: 0 0 auto;
background: #eef2f8;
}
.force-icon {
width: 30px;
height: 30px;
border-radius: 50%;
object-fit: contain;
flex: 0 0 auto;
background: #eef2f8;
}
.server-col {
color: #333;
}
.score-col {
color: #d93939;
font-weight: 800;
font-variant-numeric: tabular-nums;
}
</style>
</head>
<body>
<div class="container">
<h1>{{ school }} 资历排行</h1>
<div class="meta">{{ server }} 更新时间:{{ update_time }}</div>
<table>
<thead>
<tr>
<th>排名</th>
<th>角色</th>
<th>职业</th>
<th>服务器</th>
<th>资历值</th>
</tr>
</thead>
<tbody>
{% for item in items %}
<tr>
<td class="rank-col">{{ loop.index }}</td>
<td>
<div class="role">
{% if item.avatarUrl %}
<img class="avatar" src="{{ item.avatarUrl }}" alt="{{ item.roleName }}">
{% endif %}
<span>{{ item.roleName }}</span>
</div>
</td>
<td>
<div class="force">
{% set force_icon = item.forceIcon or icons.sect.get(item.forceName) %}
{% if force_icon %}
<img class="force-icon" src="{{ force_icon }}" alt="{{ item.forceName }}">
{% endif %}
<span>{{ item.forceName }}</span>
</div>
</td>
<td class="server-col">{{ item.serverName }}</td>
<td class="score-col">{{ item.seniority }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</body>
</html>