- 角色页新增「回满疲劳」,走 POST /dnf/gm/characters/{id}/fatigue/refill(需角色下线)
- 新增「赞助」页:支付宝 / 微信收款码占位,图放 gmweb/qr/ 下即显示
- 删除背包页与邮件页(发到邮箱按钮保留在发物品页)
- 去掉页头「GM 控制台」文字(窗口标题栏已画标题,重复),页头只留连接状态
- serve.py 补 jpg/jpeg/gif/webp/bmp/svg 的 MIME
- 控制台宽度 1040 -> 920
160 lines
6.5 KiB
HTML
160 lines
6.5 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
<meta charset="utf-8">
|
|
<title>GM 控制台</title>
|
|
<link rel="stylesheet" href="/style.css">
|
|
</head>
|
|
<body>
|
|
<div id="hd">
|
|
<div id="hd-s"><span id="dot" class="dot off"></span><span id="stat">连接中…</span></div>
|
|
</div>
|
|
|
|
<div id="tabs">
|
|
<a class="tab on" data-tab="home" href="javascript:void(0)">状态</a>
|
|
<a class="tab" data-tab="char" href="javascript:void(0)">角色</a>
|
|
<a class="tab" data-tab="item" href="javascript:void(0)">发物品</a>
|
|
<a class="tab" data-tab="donate" href="javascript:void(0)">赞助</a>
|
|
</div>
|
|
|
|
<div id="body">
|
|
|
|
<div class="pane on" id="pane-home">
|
|
<table class="kv">
|
|
<tr><th>在线角色</th><td id="v-online">-</td></tr>
|
|
<tr><th>角色库</th><td id="v-repo">-</td></tr>
|
|
<tr><th>物品库</th><td id="v-items">-</td></tr>
|
|
<tr><th>等级上限</th><td id="v-cap">-</td></tr>
|
|
</table>
|
|
<div class="sec">当前角色</div>
|
|
<div id="cur" class="cur">未选择 —— 到「角色」页选一个</div>
|
|
<div class="sec">快捷操作</div>
|
|
<div class="row">
|
|
<button id="btn-refresh" class="btn">刷新状态</button>
|
|
<button id="btn-resync" class="btn">同步角色数据</button>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="pane" id="pane-char">
|
|
<div class="row">
|
|
<input id="q-char" class="inp" placeholder="角色名 / 账号,留空列全部">
|
|
<button id="btn-search-char" class="btn">查询</button>
|
|
</div>
|
|
<div id="char-list" class="list"></div>
|
|
<div class="sec">改数值</div>
|
|
<div class="row">
|
|
<label class="lb">金币</label><input id="in-gold" class="inp sm" value="">
|
|
<button id="btn-gold" class="btn">写入</button>
|
|
</div>
|
|
<div class="row">
|
|
<label class="lb">等级</label><input id="in-level" class="inp sm" value="">
|
|
<button id="btn-level" class="btn">写入</button>
|
|
</div>
|
|
<div class="sec">疲劳</div>
|
|
<div class="row">
|
|
<button id="btn-fatigue" class="btn pri">回满疲劳</button>
|
|
<span class="dim">角色需先在游戏里下线(回到角色选择)才能写库</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="pane" id="pane-item">
|
|
<div class="row">
|
|
<label class="lb">分组</label>
|
|
<select id="in-group" class="inp sm">
|
|
<option value="">全部</option>
|
|
<option value="equipment">装备</option>
|
|
<option value="avatar">时装</option>
|
|
<option value="pet">宠物 / 神器</option>
|
|
<option value="stackable">道具</option>
|
|
<option value="other">其他</option>
|
|
</select>
|
|
<label class="lb">类型</label>
|
|
<select id="in-tag" class="inp sm"><option value="">不限</option></select>
|
|
</div>
|
|
<div class="row">
|
|
<label class="lb">等级</label>
|
|
<input id="in-lv-min" class="inp xs" value="">
|
|
<span class="dim">~</span>
|
|
<input id="in-lv-max" class="inp xs" value="">
|
|
<button class="btn sm" data-lv="1-20">1-20</button>
|
|
<button class="btn sm" data-lv="21-40">21-40</button>
|
|
<button class="btn sm" data-lv="41-60">41-60</button>
|
|
<button class="btn sm" data-lv="61-90">61-90</button>
|
|
</div>
|
|
<div class="row">
|
|
<textarea id="q-item" class="inp ta" rows="1" placeholder="物品名关键字(可留空,用上面分类浏览)"></textarea>
|
|
<select id="in-page-size" class="inp sm">
|
|
<option value="10">每页 10 行</option>
|
|
<option value="20" selected>每页 20 行</option>
|
|
<option value="50">每页 50 行</option>
|
|
</select>
|
|
<button id="btn-search-item" class="btn">搜索</button>
|
|
</div>
|
|
<div id="item-list" class="list fixed"></div>
|
|
<div class="pager">
|
|
<button id="btn-prev" class="btn sm">上一页</button>
|
|
<span id="page-info" class="pg">-</span>
|
|
<button id="btn-next" class="btn sm">下一页</button>
|
|
</div>
|
|
|
|
<div id="picked" class="cur">未选择物品 —— 先搜索,再点一行</div>
|
|
|
|
<div class="sec">装备属性 <span class="dim">(武器 / 防具 / 首饰)</span></div>
|
|
<div class="row">
|
|
<label class="lb">强化</label><input id="in-reinforce" class="inp xs" value="0">
|
|
<label class="lb">增幅</label><select id="in-amplify" class="inp xs2">
|
|
<option value="0" selected>不增幅</option>
|
|
<option value="1">1 物理防御</option>
|
|
<option value="2">2 魔法防御</option>
|
|
<option value="3">3 物理攻击</option>
|
|
<option value="4">4 魔法攻击</option>
|
|
</select>
|
|
</div>
|
|
<div class="row">
|
|
<label class="lb">增幅等级</label><input id="in-amplify-level" class="inp xs" value="0">
|
|
<label class="lb">锻造</label><input id="in-forging" class="inp xs" value="0">
|
|
</div>
|
|
<div class="row">
|
|
<label class="lb">品质</label><select id="in-quality" class="inp sm">
|
|
<option value="" selected>默认</option>
|
|
<option value="random">随机</option>
|
|
<option value="top">最上级</option>
|
|
</select>
|
|
<label class="lb">数量</label><input id="in-count" class="inp xs" value="1">
|
|
</div>
|
|
<div class="row">
|
|
<button id="btn-grant" class="btn pri">发到背包</button>
|
|
<button id="btn-mailitem" class="btn">发到邮箱</button>
|
|
</div>
|
|
<div class="hint">强化 0-31、增幅等级 0-31、锻造 0-8。增幅填了就直接覆盖强化(红字装不能同时白字强化),非装备行忽略这些值。</div>
|
|
</div>
|
|
|
|
<div class="pane" id="pane-donate">
|
|
<div class="sec">赞助支持</div>
|
|
<div class="hint">服务器长期免费维护。如果玩得开心,可以扫码赞助一点,金额随意,感谢支持。</div>
|
|
<div class="qr-wrap">
|
|
<div class="qr-card">
|
|
<div class="qr-title">支付宝</div>
|
|
<div class="qr-box"><img id="qr-alipay" src="/qr/alipay.png" alt="支付宝收款码">
|
|
<div class="qr-miss">二维码未配置<div class="qr-path">gmweb\qr\alipay.png</div></div>
|
|
</div>
|
|
</div>
|
|
<div class="qr-card">
|
|
<div class="qr-title">微信</div>
|
|
<div class="qr-box"><img id="qr-wechat" src="/qr/wechat.png" alt="微信收款码">
|
|
<div class="qr-miss">二维码未配置<div class="qr-path">gmweb\qr\wechat.png</div></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="hint">把收款码图片按上面的文件名放进 gmweb\qr\ 目录,刷新这一页就会显示;换成 jpg 也可以,改一下上面的文件名后缀即可。</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div id="log"></div>
|
|
|
|
<script src="/app.js"></script>
|
|
</body>
|
|
</html>
|