新手入门
这篇文章按照一个新角色真实会经历的顺序来写:先建角色,再熟悉操作,然后在家乡村子里转一圈、出村练级、登记记录点,最后在 30 级去参加成人礼。所有数字都取自原版 2.5 服务端源码与数据(gmsv),网页版按同一套规则运行。
一、创建角色
登录页输入账号和密码:第一次使用的账号会自动注册,以后用同一组密码登录。每个账号有 2 个角色位。
出处:
docs/STATUS.md第 0 节「账号」。
建角分三步:选外观 → 设定名字、长相与能力 → 选出身地。
1. 外观
可选的人物共 48 种:12 种体型(男孩、少年、青年、女孩、少女、女性等)× 每种 4 个颜色。服务端只接受这 48 个图号,其余一律拒绝建角。第二个画面还能分别调整眼睛(部分体型是鼻子)和嘴巴的形状,各有 5 种。
出处:
char/char_data.cCHAR_playerImageNumber[]、CHAR_checkPlayerImageNumber;网页版client/src/ui/sa/login/CharMakeScreens.ts(graphicOf = 100000 + 20×体型 + 5×颜色)。
名字最长 16 个字节(一个汉字算 2 字节,最多 8 个汉字),不能含空格、逗号、| 和 \。
2. 能力点:4 项共 20 点
| 能力 | 主要影响 |
|---|---|
| 体力 | 耐久力(HP) |
| 腕力 | 攻击力 |
| 耐力 | 防御力 |
| 速度 | 战斗时的行动顺序 |
规则:
- 每一项 0~20 点,四项合计必须正好 20 点,否则服务端拒绝建角。
- 存档里的能力值是「点数 × 100」,比如腕力 8 点即 800。
出处:
char/char.cCHAR_makeCharFromOptionAtCreate(MAXPARAMETER 20;ch->data[CHAR_STR] = str*100)。说明:版本宏_NEW_PLAYER_CF开着时,源码只检查「合计不超过 20」,但客户端建角画面必须把 20 点用完才能确定,结果一样。
各能力怎样换算成攻击、防御、HP,见 人物属性与成长。
3. 四元素:共 10 点
地、水、火、风四种属性:
- 每种 0~10 点,合计必须正好 10 点;
- 最多只能有两种属性;
- 地和火不能同时有,水和风不能同时有(它们互为对面)。所以合法组合只有:纯地/纯水/纯火/纯风,或 地+水、水+火、火+风、风+地。
- 服务端存为点数 × 10,比如地 6 水 4 即地 60、水 40。
出处:
char/char.cCHAR_makeCharFromOptionAtCreate(MAXATTRIBUTE 10、cnt > 2拒绝、attr[0]&&attr[2]、attr[1]&&attr[3]拒绝)。
相克关系是 地克水、水克火、火克风、风克地(建角画面的说明文字:「地属性。与水属性的对手战斗时较为有利」等)。克制带来的伤害加减见 战斗。
4. 出身地:4 个村子
| 编号 | 村子 | 所在岛 | 画面上的介绍 | 出生位置 | 送的宠物 |
|---|---|---|---|---|---|
| 0 | 萨姆吉尔村 | 萨伊那斯 | 位在萨伊那斯的东边,四个村子中最大也最整齐 | 萨姆吉尔的村长家 (15,22) | 乌力乌力 |
| 1 | 玛丽娜丝渔村 | 萨伊那斯 | 位在萨伊那斯的西边,面向美丽海滩 | 玛丽娜丝的村长家 (20,16) | 凯比 |
| 2 | 加加村 | 加鲁卡 | 位在加鲁卡的东边,四周被森林围绕 | 加加的村长家 (21,16) | 克克尔 |
| 3 | 卡鲁它那村 | 加鲁卡 | 位在加鲁卡的西边,建在好几个小岛上 | 卡鲁它那的村长家 (14,20) | 威伯 |
出处:出生位置
char/char_data.celders[]与CHAR_getInitElderPosition;村子介绍文字取自网页版建角画面CharMakeScreens.ts TOWN_TEXT(与原版客户端相同)。
二、新角色的初始状态
- 等级 1,经验 0;魅力 60;气力(MP)100/100;HP 按能力算出后补满。
- 石币 0。
- 送一只家乡宠物:服务端用怪物表
enemy.txt里编号 = 出身地编号 + 1 的「初期拥有的××」生成,等级 1,直接设为出战宠物。
| 出身地 | 宠物 | 宠物图鉴编号 | 属性 |
|---|---|---|---|
| 萨姆吉尔村 | 乌力乌力 | 2 | 水 4、火 6 |
| 玛丽娜丝渔村 | 凯比 | 112 | 地 2、风 8 |
| 加加村 | 克克尔 | 102 | 水 7、火 3 |
| 卡鲁它那村 | 威伯 | 34 | 地 6、风 4 |
- 不送道具:新手道具由私服配置
setup.cf的ITEM1~ITEM15决定,原版默认全空,所以背包是空的。(私服可改。) - 骑乘:
RIDEPETLEVEL原版默认 -1,新角色还不会骑宠物,要找骑乘训练师上课,见 骑乘。
出处:
char/char.cCHAR_createNewChar(CHAR_CHARM = 60、CHAR_MAXMP = CHAR_MP = 100、家乡宠物setNewplayergivepet(0, LASTTALKELDER+1)、CHAR_loginAddItemForNew);configfile.cgetNewplayergiveitem/getNewplayerpetlv/getRidePetLevel的默认值;宠物属性取自enemybase.txt。
三、网页版怎么操作
网页版照原版的鼠标操作来做,同时补了手机触控。下面都是对照客户端代码确认过的行为。
鼠标
| 操作 | 效果 |
|---|---|
| 左键点地面 | 走到那一格(自动寻路,路线会绕开门和楼梯的传送格,除非你点的就是那一格) |
| 按住左键满 1 秒 | 进入「移动模式」:人物一直朝鼠标所在格走,松开后仍然有效,下一次左键点击才退出 |
| 左键点 2 格以内的 NPC 或玩家 | 不走路,转身面对对方(同时向服务端发送「看」) |
| 面对其他玩家后按画面上方的按钮 | 「名片」「交易」「加入队伍」「决斗」等按钮都是对面前一格的玩家生效,先点对方让自己转身面对他再按 |
| 右键 | 转身面向鼠标所在的格子;如果身边一格(含脚下)有地上的物品,就捡起来 |
| 滚轮 | 无作用(原版没有缩放,镜头一直跟着人物) |
出处:
client/src/demo/MapViewBootstrap.tssetupInput(右键对应原版mouseRightCrick → turnAround + getItem,map.cpp)、lookAtTile、tryPickupAt。
和 NPC 说话
原版的「说话」不是点击,而是面对 NPC,在聊天行打字,按回车送出。网页版一样:
- 走到 NPC 旁边(一般要在 2 格内,有的要正对面一格),左键点它让自己转身面对它;
- 直接打字(野外时键盘输入会自动进入聊天行),比如打「你好」或「hi」;
- 按回车。NPC 会回答、开窗口,或者开店。
商店 NPC 不管你说什么都会打开买卖窗口;有些商店还认得「买」「卖」等关键词。护士、记录点、传送员等也都是这样触发的。
出处:
MapViewBootstrap.ts注释「原版对 NPC 说话 = 面向它按回车说一句话(TK → TALKEDFUNC)」;商店见tools/src/game/world.tsshopTalked(对应NPC_ItemShopTalked)。
键盘
| 按键 | 功能 |
|---|---|
| 回车 | 送出聊天 / 和面前的 NPC 说话 |
| ↑ ↓ | 聊天历史 |
| Esc | 关闭最上层的窗口 |
| Ctrl+M / S / P / I / E / A | 地图 / 状态 / 宠物 / 道具 / 邮件 / 相簿 |
| Ctrl+T | 交易窗口 |
| Ctrl+Q | 游戏设定(等于左上「选单」按钮) |
| Ctrl+W | 动作窗口 |
| Ctrl+数字 | 人物动作,例如 Ctrl+1 坐下、Ctrl+2 挥手、Ctrl+3 点头 |
| F1~F8 | 插入预先登录的常用文字 |
| F11 | 显示/隐藏人物名字 |
| F12 | 截图 |
| Page Up / Page Down | 玩家模式 ⇄ AI 模式(自动战斗) |
| Alt+Enter | 全屏切换 |
完整的按键说明见 网页版说明。
聊天频道:/p 内容 队伍频道,/f 内容 家族频道,/w 名字 内容 密语。
手机 / 平板(触控)
- 点地面走路,和鼠标左键相同。
- 点 2 格内的 NPC:人物转身并自动对它说一句话(内容是常用文字 F8 那一行,没设定就是「hi」),用来代替回车键。
- 点左下角聊天输入行:弹出系统键盘打字。
- 道具、邮件、交易等窗口里的双击动作,可以用快速连点两下代替。
- 目前触屏上没有对应「右键」的操作,捡地上的东西需要鼠标右键。
出处:
MapViewBootstrap.tsonTouchTalk、serverGame.ts(chatRegistry()[7] || 'hi')、ui/sa/hud/FieldUi.ts(点聊天行弹键盘)、ui/sa/core/touchInput.ts。
四、熟悉你的家乡
出生时人在村长家里。走出村长家就是村子本身。以萨姆吉尔村为例(另外三个村子的设施相同,门的坐标见 世界与地图):
| 设施 | 萨姆吉尔村里的入口 | 用途 |
|---|---|---|
| 出村 | (49,116) → 萨伊那斯 (637,491) | 去野外练级 |
| 村长家 | (98,44) | 出生点;家族管理员、家族银行、战斗指导员、占卜师 |
| 武器店 | (63,99) | 武器店、防具店两个柜台 |
| 道具店 | (67,108) | 首饰、手环、附带精灵的饰品 |
| 宠物店 | (69,72) | 卖宠物、寄放宠物、超级饲育员(学宠物技能) |
| 肉店 | (54,81) | 回复 HP 的肉 |
| 医院 | (81,66) | 护士(回复)、药剂师(回复药、解异常的草药)、美容师 |
| 便利商店 | (106,91) | 素材屋、加工的老师、寄放店(寄放一件 50 石币)、委托 |
| 长毛象快递 | (63,117)、(63,118) | 送货打工 |
| 储存点 NPC | 村中 (94,99) | 登记记录点(见下一节) |
| 斗技场向导 | 村中 (56,59) | 凭斗技场门票去 竞技场 |
出处:门的坐标来自
data/map/mapwarp.txt与npcgen_warp;设施来自data/npc/**.create。
新手用得到的商品(萨姆吉尔)
武器店里等级要求 0 的入门武器(价格单位:石币):
| 道具 | 价格 | 效果 |
|---|---|---|
| 小斧头 | 65 | 攻 +9 防 -3 敏 -3 |
| 小棍棒 | 50 | 攻 +4 |
| 小的枪 | 60 | 攻 +5 敏 -1 魅 +1 |
| 小的爪 | 55 | 攻 +3(两次攻击) |
| 小的投掷斧头 | 50 | 攻 +4(远程) |
防具店的入门防具:粗杂的兜 50(防 +3)、破烂的帽子 40(防 +1)、粗杂的铠 75(防 +4 敏 -1)、破烂的服 60(防 +2)。
医院药剂师:耐久力回复药 25(回复约 100)、复活药(100) 100,以及各种解异常的草药。
肉店:小的肉 12(回复约 20)、乾燥肉 18、大的肉 30、高级肉 48。
出处:各店
ItemList与itemset.txt价格;售价 = 道具价格 ×buy_rate(这些店都是 1.0),卖回店里按sell_rate(武器/道具店 0.2,肉店 1.0)。
刚出生时一块钱也没有,先出村打几场,把掉落的肉和道具卖掉,就能买第一把武器。装备怎么选,见 道具与装备。
医院:10 级以前免费
四个出生村的护士都是 等级 9 以下免费。10 级起收费:耐久力回复收 等级 × 0.5 石币,气力回复收 等级 × 2.0 石币(不足 1 收 1),宠物回复始终免费。
出处:护士参数
10|0.5|2.0|2(npcgen_winhealer:免费等级上限 | HP 倍率 | MP 倍率 | 范围);npc_windowhealer.cNPC_WindowCostCheck,网页版world.ts healCost / healMoney。
五、记录点:第一件要做的事
记录点决定你登出后从哪里上线、战斗失败后被送回哪里。
- 新角色的记录点是家乡的村长家(出生的位置)。
- 用「登出」正常离开游戏,下次上线就在记录点。
- 战斗失败会被送回记录点,HP 剩 1。
每个村子都有一位储存点 NPC。第一次登记要交给他指定的肉,以后再跟他说话就能免费把记录点改到这里。家乡村子的储存点也一样要交肉(新角色只登记了村长家,没有登记村里的储存点)。
| 村子 | 储存点 NPC | 位置 | 第一次登记要交 | 这种肉从哪来 |
|---|---|---|---|---|
| 萨姆吉尔村 | 萨姆吉尔的储存点 | 萨姆吉尔村 (94,99) | 凯比特的肉 ×1 | 村外的凯比特,掉率 30% |
| 玛丽娜丝渔村 | 玛丽那斯的储存点 | 玛丽娜丝渔村 (67,58) | 乌力斯坦的肉 ×1 | 村外的乌力斯坦,掉率 30% |
| 加加村 | 加加的储存点 | 加加村 (96,97) | 乌宝宝的肉 ×1 | 村外的乌宝宝,掉率 30% |
| 卡鲁它那村 | 卡鲁它那的储存点 | 卡鲁它那村 (68,55) | 克邦凯斯的肉 ×1 | 加鲁卡 (194,551)-(250,577) 一带的克邦凯斯,掉率 30% |
肉的品质有好几种(同一种肉有 6 个编号,例如 凯比特的肉 1930~1935),任何一种都可以。玛丽娜丝要的是 乌力斯坦的肉,加加要 乌宝宝的肉,卡鲁它那要 克邦凯斯的肉。
出处:
npcgen_savepoint参数(GetItem:1930*1,1931*1,…);npc_savepoint.c;char/char_data.cCHAR_getInitElderPosition(CHAR_SAVEPOINT |= 1<<hometown);登出位置见网页版sa-server.ts fullCharLogout;掉率见enemy.txt(掉率 300 / 1000)。
六、出村练级:每个村子门口的怪
野外是否遇敌、遇到什么,由 encount.txt 的遇敌区决定:一块矩形区域对应一组怪物和等级范围,重叠时取优先级(zorder)最高的那块。走路时每一步都在累积遇敌机率。
萨姆吉尔村门口(萨伊那斯东部)
出村后在 萨伊那斯 (637,491)。
| 区域(萨伊那斯坐标) | 怪物 | 等级 |
|---|---|---|
| (582,399)-(783,560),村口一带 | 昆依、凯比特 | 1~3 |
| (591,552)-(685,695),村子南边 | 昆依、凯比特 | 1~3 |
| (541,375)-(592,554),村子西边 | 昆依、凯比特、龟之盾、绿龟 | 1~4 |
| (479,355)-(541,557) | 昆依、凯比特、龟之盾、绿龟 | 3~6 |
| (425,387)-(480,554) | 龟之盾、绿龟 | 4~6 |
| (547,241)-(679,331),北边 | 布比、布伊、火鸡、奇宝 | 9~13 |
玛丽娜丝渔村门口(萨伊那斯西南)
出村后在 萨伊那斯 (79,614)。
| 区域 | 怪物 | 等级 |
|---|---|---|
| (11,567)-(155,707),村口一带 | 乌力、乌力斯坦、多利凯拉、贝恩达斯 | 1~2 |
| (11,524)-(208,708),外圈 | 同上 | 2~4 |
| (63,392)-(308,524),往北 | 乌力、乌力斯坦、昆依、贝恩达斯 | 2~4 |
| (308,387)-(426,524),中部 | 多利凯拉、贝恩达斯 | 4~6 |
加加村门口(加鲁卡东部)
出村后在 加鲁卡 (570,376)。
| 区域(加鲁卡坐标) | 怪物 | 等级 |
|---|---|---|
| (550,282)-(652,403),村口 | 乌宝宝、威威 | 1~2 |
| (516,238)-(772,452),外圈 | 乌宝宝、威威 | 1~4 |
| (384,238)-(516,415),往西 | 克洛尔、多利诺布斯、乌宝宝、威威 | 1~5 |
| 村子南边的林道(约 (520,385)-(630,485) 一带的几块小区域) | 乌宝宝、威威、乌卡鲁 | 10~12 |
卡鲁它那村门口(加鲁卡西南)
出村后在 加鲁卡 (304,599)。
| 区域 | 怪物 | 等级 |
|---|---|---|
| (262,565)-(333,686),村口 | 克雷尔、里斯基 | 1~3 |
| (194,551)-(250,577) | 克邦凯斯 | 1~2 |
| (333,565)-(401,666)、(304,494)-(401,565) | 克雷尔、里斯基、乌卡鲁 | 2~4 |
| (30,327)-(251,502) | 乌卡鲁、尼可斯 | 3~5 |
出处:
data/encount.txt+group.txt+enemy.txt(区域按ENCOUNT_getEncountAreaArray取 zorder 最高者;矩形为左上-右下坐标)。
下一步去哪
- 10 级以后可以去两大岛上更远的村子:萨伊那斯的柯奥村、霍特尔村、卡坦村、柯尔克村,加鲁卡的塔姆塔姆村、多多村、乌鲁力村、奇喀喀村。走路太远可以搭巴士,见 世界与地图。
- 宠物怎么抓、怎么养,见 宠物;战斗指令与伤害,见 战斗。
七、长毛象快递:新手打工
每个出生村都有两间「长毛象快递」(萨姆吉尔在 (63,117) 和 (63,118))。
- 送货:在第一间对店主说话,买下「往××的行李」(只需付押金 = 行李价格 × 0.2),带到目的村的长毛象快递第二间,卖给店主,按行李价格 × 1.5 收购。行李价格 40~75 石币,路越远越贵(例如萨姆吉尔→玛丽娜丝 40,萨姆吉尔→加加 70)。行李不能带上巴士和飞机(它们的
denieditem正是这 12 种行李),只能自己走过去。 - 店员的委托:同一间里的「店员」按你的等级给不同的委托(只限没转生的角色):
- 1~9 级:送一件礼物(例如萨姆吉尔给「顶级的红宝石」)到另一个村子的长毛象快递老板;
- 10~19 级:做一把指定属性的合成枪送过去(萨姆吉尔要的是风属性的「合成枪 1」);
- 20~29 级:抓一只 1 级的布伊(在霍特尔村附近出没)送给老板。
出处:
data/npc长毛象快递npcgen_shop(buy_rate:0.2、ItemList:2405,2408,2411、EXPRESSMAN)与npcgen_limitshop(sell_rate:1.5);店员npcgen_warpman的TALKEVENT1~3;行李价格见itemset.txt2402~2413。押金与收购价按网页版商店公式(价格 × rate)推算,店员台词提到「中午前送达酬劳比较高」,时段加成未核实。
八、成人礼(30 级)
村民们常提到「成人礼」:卡鲁它那村长家的厨师说「等级到30可以进行成人式」,玛丽娜丝村长的儿子说「不能在团队的状况下参加典礼」。成人礼是原版事件 4 号,完成后会得到一顶头盔,还会解锁很多高等级地区。
地点
成人礼在两大岛之间的海底通路里举行:
海底通路地下2楼中间有「海底洞窟关卡」((22,28) 和 (22,32) 两位守卫),要有 通行证 才放行。通行证在柯奥村 (86,107)「贩卖通行证」和卡鲁它那村 (99,85)「通行证贩卖」有卖,200 石币。
仪式入口「仪的值班者」站在海底通路地下2楼 (31,13),从坐标看和柯奥这一侧的入口在关卡的同一边;从加鲁卡过来就要先过关卡。
出处:
npcgen_warp/mapwarp.txt(10201~10203 的连接)、npcgen_warpman「海底洞窟关卡」(FREE:ITEM=2422)、通行证商店ItemList:2422(价格 200 ×buy_rate1.0)。
步骤
- 等级 30 以上,一个人去(组队会被拒绝)。
- 和海底通路地下2楼 (31,13) 的「仪的值班者」说话(条件
LV>29),被送进仪式的通道 海底通路地下2楼(仪道) (2,6)。 - 和 (14,6) 的「仪式的审判」说话,接受考验。他会说:「在这条路尽头的一尊石像上有一块仪之玉的勾玉,请从在仪道中的守护使者中,取回15个来」。
- 沿通道一直走到尽头(这张图宽 200 格),和 (188,13) 的「仪式审判的差使」说话,他会一次给你 15 个 仪的玉(背包要空出 15 格)。
- 带着 15 个仪的玉走回审判那里交差。仪的玉是「掉在地上就会消失」的道具,审判也提醒「小心不要让仪玉掉落地面」,回程别把它丢出去。
- 交出 15 个仪的玉,获得 仪之兜(防 +15、敏 -3、全异常状态防止 +3,装备需 30 级),事件 4 完成:「这么一来,你也是个顶天立地的成人了」。
通道里会遇到 20~30 级的 克克尔、凯比、乌力乌力、威伯——正是四个村子送的那四种宠物,掉落带骨的肉。
出处:
data/npc海底通路地下2楼(10204)的changeevent:「仪式的审判」EventNo:4 TYPE:REQUEST EVENT:LV>0/TYPE:ACCEPT EVENT:ITEM=2417*15 GetItem:2418 DelItem:2417*15 EndSetFlg:4;「仪式审判的差使」EVENT:NOWEV=4&ITEM!=2417 GetItem:2417*15;itemset.txt2417(丢弃即消失)、2418;encount.txt区域 208。
成人之后
很多地方的守门人要求「完成事件 4」(ENDEV=4),也就是成人礼:
| 守门人 | 位置 | 条件 | 通往 |
|---|---|---|---|
| 看门人 | 加鲁卡 (73,696) | 65 级以上 + 成人礼 | 碧青的洞窟 |
| 守人 | 加鲁卡 (359,671) | 65 级以上 + 成人礼 | 琉璃的洞窟 |
| 守人 | 萨伊那斯 (278,325) | 70 级以上 + 成人礼 | 玄黄的洞窟 |
| 守人 | 巴那姆的洞窟地下2楼 | 65 级以上 + 成人礼 | 深红的洞窟 |
| 洞窟的守门人 | 吉鲁岛 (247,222)、(182,162) | 65 级以上 + 成人礼 | 吉鲁岛的洞窟 |
此外人物转生、宠物转生的一连串事件也以成人礼为前提,见 人物转生 与 任务。
出处:各
npcgen_warpman的FREE:条件(LV>64&ENDEV=4等;LV>64即 65 级以上)。
九、新手检查清单
- 建角:20 点能力、10 点属性(最多两种、对面属性不能并存)。
- 走出村长家,到村口打 1~3 级的怪,攒钱、攒肉。
- 拿到家乡储存点要的肉,登记村里的记录点。
- 买第一把武器和防具;10 级以前看病免费。
- 在长毛象快递接送货、跑委托。
- 10 级以后去其他村子;30 级参加成人礼,拿仪之兜。