网页版说明
网页版是《石器时代》2.5 在浏览器里的重制:打开网页就能玩,不用安装客户端。它的目标是按原版规则运行——游戏数据全部来自原版 2.5 服务端(gmsv),玩法逻辑逐条对照 gmsv 的 C 源码移植,画面、音乐和界面取自原版客户端。线上地址是 https://sa.darlingtree.com 。
一、复刻了什么
原版的数据
服务端直接读取原版 2.5 的数据表,没有另编一套:
| 内容 | 数量 | 来源 |
|---|---|---|
| 遇敌区 | 665 块 | encount.txt |
| 怪物 | 2048 种 | enemy.txt / enemybase.txt / group.txt |
| 道具 | 12620 件 | itemset.txt |
| NPC | 4952 个 | data/npc/**.create |
| 传送点 | 2892 个 | mapwarp.txt + npcgen_warp |
| 地图 | 696 张 | data/map(通行判定用 mapset.txt) |
| 经验表 | 200 级 | char/char_data.c 内建 NeedLevelUpTbls、enemyexptbl.h(exp.txt 只在私服宏 _USER_EXP_CF 下读取,且错开一格,不用) |
出处:
docs/STATUS.md第 0 节。
原版的规则
下面这些系统都按 gmsv 源码移植(详细规则见各专题文章):
- 建角与出生:48 种外观、20 点能力、四元素 10 点(最多两种、对面属性互斥)、4 个出生村和家乡宠物。见 新手入门。
- 走路:原版的走路协议和地图通行表,斜走要两侧都能走,撞墙会被拉回。
- 遇敌与怪物:走路累积遇敌、区域优先级、怪物组权重;怪物能力、经验、掉落按原版公式。
- 战斗:伤害与元素克制、闪避、会心一击、反击、合击、出手顺序、偷袭、捕捉、逃跑、击飞、异常状态(毒/麻/眠/石/醉/乱)、宠物忠诚度、换宠、远程武器、魔法与道具、场地属性。见 战斗。
- 人物与宠物:升级、加点、装备、宠物技能、骑乘规则、人物转生与宠物转生。见 人物属性与成长、宠物、骑乘、人物转生。
- NPC:原版台词、商店(原版价格倍率)、护士、记录点、传送员、任务事件(
changeevent/npc_eventaction的条件和奖励)、NPC 敌人与道场、猜谜、猜拳、巴士与飞机、宠物店、宠物技能商店、家族银行。见 任务、世界与地图。 - 社交:组队(最多 5 人)、交易、名片与邮件、宠物邮件、家族、家族 PK、庄园争夺与税收、决斗。见 社交、家族、决斗与 PK。
原版的画面与声音
- 640×480 的原版界面,按浏览器窗口等比缩放;状态、宠物、道具、邮件、相簿、地图等窗口照原版重画。
- 原版战斗画面:原版战斗背景(按脚下地面选)、20 个站位、全部动作帧、飘字和图标、指令栏、99 秒倒数。
- 原版音乐与音效:地图曲按原版的「音调格」切换,战斗曲、捕获成功小曲、140 个音效和环境音都按原版时机播放。在「游戏设定」窗口里可以调整音乐、音效音量(0~15 档,原版设定)。
- 浏览器规定网页不能自己发声,所以进游戏后第一次点击或按键之后才有声音。
出处:
docs/STATUS.md「大地图性能 + 原版战斗画面」「音乐与音效」;client/src/engine/audio/AudioManager.ts(第一次 click / keydown / touchstart 才解禁音频)。
二、和原版不一样的地方
1. 地上的宠物在服务器重启后还在
在原版里,把宠物放到地上(放生)后,它会在原地站着等人来捡;服务器一重启,地上的所有东西都会消失。网页版额外把地上的宠物写进存档(ground-pets.json),服务器更新重启后宠物还在原地。
- 放置时间照旧计算:地上的宠物放置超过 1800 秒(30 分钟) 没人捡就会消失(
Petdeletetime=1800),重启不会让计时重来。 - 跟着主人散步(溜宠)的宠物,在重启时没人带,会留在原地,主人可以自己捡回。
- 地上的道具和石币不保存,重启后消失——这一点和原版相同(gmsv 也不存地上物件)。道具放置 1800 秒后消失;石币不足 10000 也是 1800 秒,10000 以上不会消失。
出处:
tools/src/sa-server.ts地上物件一节(「网页版额外把地上的宠物写进 ground-pets.json,部署重启后还在(gmsv 重启会丢)」、sweepGround、loadGroundPets);时限取自服务器配置setup.cf(Petdeletetime=1800、Itemdeletetime=1800),私服可改。
2. 账号
- 不需要另外注册:登录画面输入账号和密码,第一次使用的账号会自动注册,之后要用同一组密码登录。
- 每个账号 2 个角色位。
3. 截图、全屏和离开页面
| 原版 | 网页版 |
|---|---|
| F12 截图,存成 BMP 放在游戏目录 | F12 截图,把 640×480 画面存成 PNG 由浏览器下载(文件名 sa_年月日_时分秒.png,0.5 秒内只截一张) |
| Alt+Enter 切换视窗模式 | Alt+Enter 切换浏览器全屏 |
| — | 全屏时会锁住键盘,Ctrl+W 等浏览器快捷键交给游戏;一般窗口里误按 Ctrl+W 关分页,会先跳出「确定离开」的确认 |
出处:
client/src/ui/sa/hud/hotkeys.ts(screenshot)、browserKeys.ts。
4. 设定存在浏览器里
常用文字(F1~F8)、自动战斗(AI 模式)设定、聊天行数与颜色等个人设定存在浏览器的本机存储里(原版是存在客户端目录的文件,如 AISetting.dat)。换一台电脑或换浏览器,这些设定要重新设。
5. 简化或尚未完成的部分
- 家族 PK 场:原版要先预约时段,网页版改为对方族长同意后立即开战。
- 战斗求救:别人加入你的战斗时,没有原版的「面向」判定和多人选择窗口;不能观战。
- 魔法:反射、吸收、结界类魔法尚未移植。
- 昼夜:没有昼夜变化,环境音一律按白天播放。
- 素材缺失:有 207 个怪物/NPC 的精灵图在 2.5 客户端资料里不存在,显示为占位图;15 张冷门地图缺原版瓦片;1179 号骑乘图缺失。
- 原版 2.5 本来就没有的:摆摊、职业技能等后期版本功能,这份 2.5 源码里没有,所以网页版也没有。
出处:
docs/STATUS.md「尚未实现 / 与原版的差异」及第三轮说明。
6. 服务器设定
经验、宠物经验、战斗石币、掉率、捕获率、遇敌率、走路速度、战斗速度等,管理员可以在后台即时调整。本 Wiki 写的都是原版默认值,实际数值以所在服务器为准。
出处:
docs/STATUS.md「管理后台 /admin」。
三、鼠标操作
| 操作 | 效果 |
|---|---|
| 左键点地面 | 走到那一格(自动寻路,绕开门和楼梯的传送格) |
| 按住左键满 1 秒 | 移动模式:一直朝鼠标走,松开后仍有效,下一次左键点击才退出 |
| 左键点 2 格内的 NPC / 玩家 | 转身面对对方(不走过去) |
| 右键点地面 | 转身面向那一格 |
| 右键点身边一格(含脚下)的物品 | 捡起来 |
| 画面上方的「名片」「交易」「加入队伍」「决斗」等按钮 | 对面前一格的玩家生效 |
| 面对巴士 / 飞机按「加入队伍」 | 上车(扣车资) |
和 NPC 说话:面对 NPC 打字、按回车(野外时键盘输入直接进入聊天行,不用先点输入框)。
道具窗口:按住道具拖到另一格是换位置 / 装备 / 卸下;拖到窗口左边是丢在地上;双击使用道具或穿脱装备;右键做加工 / 料理的标记。
战斗中:点「攻击」再点目标,也可以直接点怪;右键取消选择。
出处:
client/src/demo/MapViewBootstrap.tssetupInput、client/src/ui/sa/windows/ItemWindow.ts、client/src/game/battle/BattleScene.ts。
四、键盘快捷键
野外
| 按键 | 功能 |
|---|---|
| 回车 | 送出聊天(面对 NPC 时就是对 NPC 说话) |
| ↑ / ↓ | 聊天历史 |
| Esc | 关闭最上层的窗口;有「是/否」对话框时先关对话框 |
| Ctrl+M | 地图 |
| Ctrl+S | 状态 |
| Ctrl+P | 宠物(窗口打开时 ←→ 或 ↑↓ 切换宠物) |
| Ctrl+I | 道具 |
| Ctrl+E | 邮件 |
| Ctrl+A | 相簿 |
| Ctrl+T | 交易 |
| Ctrl+Q | 游戏设定(同左上「选单」按钮) |
| Ctrl+W | 动作窗口 |
| Ctrl+J | 家族频道快速加入 / 离开(原版 Ctrl+C 也是这个功能,但聊天行有焦点时网页版把 Ctrl+C 留给「复制」) |
| Ctrl+V / X / Z | 交给输入框(贴上 / 剪下 / 复原) |
| F1~F8 | 插入第 1~8 条常用文字(在「游戏设定 → 聊天设定 → 记录文字」编辑) |
| F11 | 显示 / 隐藏头上的名字 |
| F12 | 截图(PNG) |
| Page Up / Page Down | 玩家模式 ⇄ AI 模式(自动战斗;野外和战斗中都可以切) |
| Alt+Enter | 全屏 |
人物动作(站着不动时有效)
| 按键 | 动作 | 按键 | 动作 |
|---|---|---|---|
| Ctrl+1 | 坐下 | Ctrl+7 | 站立 |
| Ctrl+2 | 挥手 | Ctrl+8 | 走动 |
| Ctrl+3 | 点头 | Ctrl+9 | 晕倒 |
| Ctrl+4 | 高兴 | Ctrl+0 | 攻击 |
| Ctrl+5 | 生气 | Ctrl+- | 防御 |
| Ctrl+6 | 悲伤 | Ctrl+= | 受伤 |
| Ctrl+\ | 投掷 |
战斗中不能做动作。
聊天指令
| 写法 | 频道 |
|---|---|
/p 内容 |
队伍 |
/f 内容 |
家族 |
/w 名字 内容 |
密语 |
出处:
client/src/ui/sa/hud/hotkeys.ts(EMOTE_KEYS、CTRL_WIN、F1~F8、F11、F12、PageUp/PageDown、Alt+Enter、Esc);client/src/ui/sa/hud/Chat.ts;client/src/ui/sa/windows/PetWindow.ts;docs/UI_ORIGINAL.md§B.5(原版热键对照)。
五、手机与平板
网页版可以用触屏玩,操作对应如下:
| 触屏操作 | 等于 |
|---|---|
| 点地面 | 左键点地面,走过去 |
| 点 2 格内的 NPC | 转身面对它,并自动说一句话(常用文字第 8 条 F8,没设定就是「hi」)——代替电脑上的回车 |
| 点左下角的聊天输入行(画面坐标约 (0~420, 420~450)) | 弹出系统键盘打字 |
| 在邮件、交易、道具窗口里快速连点两下 | 双击 |
一些注意事项:
- 触屏上聊天行不会自动抢焦点(不然键盘会一直弹出来),要打字时再点聊天行。
- 输入框统一用 16px 字,iOS 聚焦时不会自动放大页面;账号栏关闭了首字母自动大写和自动更正。
- 目前触屏没有对应鼠标右键的操作,所以捡地上的物品、原地转向需要用鼠标。
- 第一次碰触屏幕后才会有声音。
出处:
client/src/demo/MapViewBootstrap.ts(onTouchTalk、isTouch)、client/src/serverGame.ts、client/src/ui/sa/hud/FieldUi.ts、client/src/ui/sa/core/touchInput.ts、client/src/ui/sa/hud/Chat.ts(keepFocus)。
六、登出与断线
- 用游戏里的「登出」离开:角色会回到记录点再存档,下次从记录点上线。
- 直接关掉网页或断线:角色停在原地存档。下次上线时照原版
CHAR_login的规则处理:所在地图列在appear.txt里就送回记录点,列在map_noexit.txt里就送到该图指定的出口,其余地图从原地上线。 - 战斗中断线:这场战斗里按「防御」处理直到战斗结束。
出处:
tools/src/sa-server.ts(fullCharLogout、loginPosition对照CHAR_login、fullDisconnect)。