商人的要价和商人的出价由两个不同的函数算出来,两者几乎不共享任何输入。这一页讲的是门派账本之外的钱。 资金、药粮和矿石见sect_building.md。
角色面板把这个货币叫铜钱,商店面板把同一个数字叫金币。它们是同一个属性。
货架上的东西,商人向你收多少,就是商店表里手填的一个数字。物品随机出来的品质和阶完全不进这个计算:
售价 = 商店行自己的价格
− 口才/1000 × 0.2 × 本单总额 (作用于整单,不是每件单算)
− 你身上任何按百分比减免花费的效果
背包里的东西,商人给你多少,是从物品的基础价和它的随机结果算出来的:
收购价 = floor( 基础价 × (1 + 0.15 × Δ品质) × (1 + 0.4 × Δ阶) )
+ 任务脚本为这件物品、在这个角色身上设定的值
然后,在整单总额上:
+ 捕快特技加成 (最高 +100%)
+ 商道/1000 × 0.2 (最高 +10%)
Δ品质和Δ阶不是从零算起,是从这件物品能随机出的最低值算起的。品质和阶都固定的物品(表里7,394件
物品中,6,580件只有一种可能的品质,6,311件只有一种可能的阶)永远只能按基础价卖出,一分不多。
买卖差价大约是一半。 整张商店表里,手填售价的中位数正好是物品基础价的2.0倍,其余常见的 手填值是1倍、2.4倍、2.5倍、2.8倍、3倍和4倍。所以买进来再卖回去,默认要亏掉一半;两个商业技能都顶到上限 (买入−10%,卖出+10%)之后,这个比例收窄到大约1.64倍,还是不赚。
售价不看随机结果,收购价看。 货架上一件东西的品质或阶能随机到高值时,你买进用的是固定价,卖出用的是 缩放价。这是游戏里唯一一处结构性套利,而且规模很小。
| 输入 | 方向 | 幅度 | 作用范围 |
|---|---|---|---|
| 商店表自己的价格列 | 定售价 | 每行手填,中位数为基础价的2倍 | 只作用于货架商品 |
| 物品基础价 | 定收购价 | 全额 | 你卖的一切 |
| 高于物品下限的随机品质 | 抬高收购价 | 每档+15% | 你卖的一切 |
| 高于物品下限的随机阶 | 抬高收购价 | 每档+40% | 你卖的一切 |
| 口才 | 压低售价 | 每点0.02%,上限500→−10% | 整单总额 |
| 商道 | 抬高收购价 | 每点0.02%,上限500→+10% | 整单总额 |
| 擒纵自如(捕快特技,需装备) | 抬高收购价 | 不夜京贡献值÷1000,最高+100% | 整单总额 |
| 难度 | 两边都影响 | 见下 | 每一次金钱的获得或消耗 |
| 生财有道 / 高门大族 / 天罚 之类的天赋 | 两边都影响 | ±20%到±50% | 每一次金钱获得 |
| 任务脚本按物品、按角色的覆盖值 | 任一边 | 任意 | 某个角色身上的某件物品 |
| 游戏模式(侠恶江湖 / 真实江湖 / 荡魔江湖) | 两边都影响 | 整张价格表都换掉 | 一切 |
至于不影响价格的东西,检查方法和character_build.md里查那些无人读取的属性 一样:把程序集里对这个名字的每一次读取都过一遍,而不只看声明。
威望有三处读取,没有一处是价格。 两处是显示,一处是排行榜排序。道德也一样。 门派职位、门派好感 和正邪在商店代码里一次也没出现。这个游戏没有声望折扣。
两个都有代码在读。商道由卖出面板读,口才由买入面板读,游戏里带的两套商店UI都是如此。两个都不属于那十个 无人读取的属性。
商道加成 = round( 本单总额 × 商道 / 1000 × 0.2 ) 加到给你的钱上
口才折扣 = round( 本单总额 × 口才 / 1000 × 0.2 ) 从你要付的钱里减掉
两边都是每点0.02%。角色面板把这两条进度条都按400画,那也不是它们的上限。
两者都被硬性卡在500,而且这个上限就写在授予它们的那段代码里。 每一次授予都走同一个函数,属性到500 之后它就拒绝再加,一次授予超了就截回500。所以两个商业技能全部的价值就是买入−10%、卖出+10%,再无更多。
没有别的东西能提高它们。 没有装备词条授予这两项中的任何一项:把词条表的效果行按这两个属性id全表扫过, 一条都没有。没有任何物品的基础属性组会随机出它们。品性页上的数字只靠交易涨,此外没有来源。
实测确认:角色身上的商道是500,正好压在代码强制的上限上;口才是196。这两个数字读自运行中的游戏。
卖东西加的商道,按成交额的对数算,不按成交额本身算:
增加值 = max( 1, round( 4.6667 × log10(成交总额) − 8.3333 ) )
| 成交总额 | 商道增加 |
|---|---|
| 100 | 1 |
| 1,000 | 6 |
| 10,000 | 10 |
| 100,000 | 15 |
| 500,000 | 18 |
也就是说,大约五十笔普通交易就能从零顶到上限,而一笔巨额交易也不过勉强抵得上一笔小额交易的两倍。 没有理由攒着货等一笔大单。
买东西每次固定只加1点口才,不管你花了多少。 购买的处理函数传进成长曲线的不是买入总额,而是卖出总额; 购买过程中那个数是零,而曲线对零输入返回它的下限1。所以这一对里管折扣的那个,每逛一次商店只涨一点,顶到 上限要500次单独购买,而商道只要五十笔卖出。(唯一能加快的办法是先在卖出页勾上物品,不卖,直接切回买入页, 然后买:被换算的是那个残留下来的卖出总额。)
捕快身份线共五级特技。第二级擒纵自如的效果和它说明上写的完全一致——抬高商店给你的收购价,幅度是:
加成 = min( 100%, 不夜京贡献值 / 1000 )
不夜京贡献值到1,000,就是每一笔卖出+100%,是商道上限的十倍,而且叠在商道之上。必须装备才生效。
不夜京贡献值在程序集里只有一处授予(赢一场不夜京擂台+1),另一处是悬赏板:127个悬赏事件完成时给 +20不夜京贡献值和+20捕快,另有六个各给+40。所以算下来是:
| 完成悬赏数 | 不夜京贡献值 | 卖价加成 | 同时解锁 |
|---|---|---|---|
| 13 | 260 | +26% | 捕快250→可用擒纵自如 |
| 25 | 500 | +50% | |
| 35 | 700 | +70% | 捕快700→铁口直断 |
| 50 | 1,000 | +100%(上限) |
刷五十个悬赏,就把这份存档里所有商人给你的收入翻了一倍,此后一直有效。经济系统里没有第二样东西能接近它。
这条特技线剩下的两点。抽丝剥茧提高委托奖励升一档的概率,走的是同一条不夜京贡献值÷1000的曲线,加在 20%的基数上,所以贡献值到1,000时每个委托都会升档。铁口直断——它的说明和所有社区资料都写它降低拍卖行 手续费——什么也没做:挂单代码在应用折扣之前就把手续费置成了0,折扣打在0上,而这笔手续费本来就从没收过。
商店和拍卖代码调用了九个具名的特技效果,其中只有四个在特技表里有对应行:上面那三个捕快特技,加上打听 折扣。其余五个(一个额外的卖价加成、一个按口才缩放的卖价加成、一个佛学购买折扣、一个饮食购买折扣,以及 拍卖成功率加成)每次都算成0,因为数据里没有定义它们。游戏里还带了一个±5%的「商人价格浮动」函数,但 它从来没有被调用过,所以本版本里商人之间没有随机价格浮动。
一个商人就是商店表里的一个行组,用一个id挂在某个角色身上。表里420个组有336个挂在了人身上;另外84个够 不着,所以纸面上看着是白捡钱的一些条目其实不是(见下)。
库存。 刷新时游戏取出组里所有条件通过的行,够30行就随机抽30行,不够就全要。然后每一行的数量都被 压到45件,不管表里写多少——有124行要得更多,被削到45。社区说的「限购45」就是这个上限, 它不是购买上限,是库存上限。
这个随机抽取值得知道:代码在挑选循环内部构造随机数生成器,每抽一次构造一个。在这个运行时上,生成器 用毫秒时钟做种子,所以一次刷新里三十次抽取共用一个种子,实际的多样性远比看上去的少:一次随机结果摊成了 三十个确定的选择。这是读代码得出的,没有实测;要验的话,连着强制刷新两次,比对两次的货架。
钱袋。 每个商人每次刷新都带一笔固定的钱;一旦你这一单的总额超出他剩下的数,整笔交易直接被拒,不会 只收一部分。
| 商人 | 钱袋 | 位置 |
|---|---|---|
| 其中466个 | 500,000 | 到处都是 |
| 老铁匠 | 50,000,000 | (922, 1445) |
| 老药师 | 50,000,000 | (923, 1444) |
| 百晓生 | 0——他没法从你手里收任何东西 | (1033, 1428) |
这两个50,000,000的钱袋是这一页上最有用的经济事实。他们是全游戏仅有的两个不会没钱的商人,两人只隔几步, 而且就在新手村。除他们之外,每个商人每次补货都把你的收入卡在500,000。
百晓生的钱袋在数据里是空的,解析成零,所以他那三十行的店只能买、不能卖。
刷新周期。 刷新间隔是商店行上的一列,单位是游戏内一天的1/3,600:
| 数值 | 行数 | 实际含义 |
|---|---|---|
| 3,600 | 8,390 | 游戏内一天 |
| 5,400 | 7,256 | 游戏内一天半 |
| 1,200 | 135 | 游戏内八小时 |
| 1,000 | 52 | 六小时四十分 |
刷新是惰性的:只有你打开商店、或者游戏去查这家商店时才会看计时器。你不在的时候什么都不会补货;计时器到点 之后,你走进去的那一刻它才补。
付费刷新按钮要300铜钱,而且越点越贵。 每强制刷新一次,下一次就涨300(300、600、900、1,200),一次 自然刷新会把它重置回300。所以刷一个商人最省钱的办法是强制刷几次,隔一天再回来。社区把这个按钮说成免费 且能无限刷;两样都不是,不过300铜钱已经便宜到这点差别很少真的影响什么。强制刷新四次一共3,000铜钱。
267行永远不补货。 被标为限量的行会把剩余数量带过刷新:重建库存时,限量行复制的是旧行剩下的数量。 买空了,对这个角色来说就没了。第一次打开一家商店时,游戏会特意清掉造成这件事的那个引用; 另一条能创建商店记录的路径不清,所以限量行还可能继承你上一家打开过的商店的数量。
回购栏不进存档。 你卖出的东西会以他付给你价格的两倍进入商人的回购列表,而这张列表既不写进存档, 也不写进刷新。它能挺过同一次游戏会话里的商店刷新,读档就没了。以物易物商人的代币余额同样不存(只存铜钱 那份钱袋),所以贡献兑换类商店读档后代币是0,要等它自己的计时器到点。
一家商店是不是以物易物,由它的第一行决定。 整家店用什么货币,是从这个组第一行读的,所以开头那行写了 消耗物品的商店,全店都用那件物品交易,后面的行写什么都不算。
1,172条商店行带条件,写法全都是同一个形状:一个标记、一个对话id、一个标志位。这个字符串在两条路径上被 两个不同的解析器读,而它们对那个标记的理解不一致。
24变成「击杀NPC数量」,对话id变成所需击杀数。24的意思是「这段对话发生过没有」。
这显然才是本来的读法:899,000以上的22个id全都是对话表里真实存在的行。带条件的行里有1,005条写的对话id是1,于是补货解析器只要求杀一个人,这时两种读法的差别没有实际意义。另外
167条写的id在899,369到982,332之间,当成击杀数来读达不到。所以这167行永远不会被刷新补进货,
只能通过开店那一遍出现:对话发生过时,那一遍会把它们加到货架上。
表面症状是:走进去看到的是刚刷新的货架,商人最稀有的货不在上面,再看一次就有了,等下一次补货又消失。
百晓生三十行里有十五行是这么锁的,包括他那三本10,000铜钱的书。
在够得着、挂在真实角色身上、并且以铜钱计价的5,947条商店行里,有十六条按保底随机结果卖回去还比买价高, 其中真正有意义的只有几条:
| 物品 | 售价 | 回收价 | 倍数 | 库存 | 出售者 |
|---|---|---|---|---|---|
| 特殊玄脉丹 / 特级神照经残卷 / 经脉详解·卷七 | 10,000 | 27,418 | 2.74 | 各45 | 百晓生(1033, 1428)——有门槛,见上 |
| 极品玄脉丹 / 极品神照经残卷 / 经脉详解·卷六 | 7,000 | 10,546 | 1.51 | 各45 | 百晓生——有门槛 |
| 桃花叶配方 | 2,160 | 5,135 | 2.38 | 1 | 天机阁 |
| 经悟丹 | 585 | 1,313 | 2.24 | 1 | 丹师(723, 767) |
| 花灯配方 | 150 | 383 | 2.55 | 5 | 工匠(185, 658) |
| 远牵衣配方 | 1,800 | 2,935 | 1.63 | 1 | 天机阁 |
| 逍遥丸配方 / 混元塑骨丹配方 | 1,800 | 2,568 | 1.43 | 各1 | 天机阁 |
| 青灵丹 | 1,170 | 1,510 | 1.29 | 5 | 三个游方郎中 / 医馆大夫 |
| 周天吐纳功 | 5,000 | 6,240 | 1.25 | 1 | 杂货商(1082, 1499) |
百晓生那几行是全部重点,其余是零头。他那三本七阶书各45本,按一天一次补货算,进1,350,000铜钱,出 3,700,620——前提是解锁它们的那段对话发生过;而他自己的钱袋是0,卖只能到别处卖。老铁匠和老药师在110 单位之外,两人各有50,000,000。这是读代码和数据得出的;那道门槛没有在游戏里确认过,而它恰恰决定了这条 路线到底存不存在。
还有两个小一点的情形,要运气好的随机结果才压过售价:(214, 652)的杂货商卖的春盟,100 铜钱,0.6%的随机结果下最高能卖回1,440;以及513组里的两行。不值得追。
有304件物品同时挂在不止一个商人那里,铜钱价格各不相同,因为售价是逐行手填的数字。最极端的几个:
| 物品 | 最低价 | 最高价 | 倍数 |
|---|---|---|---|
| 万兽秘技-仙鹿 | 10,502(万兽山庄商人) | 500,000(新手村万兽山庄) | 47.6× |
| 山膏配方 | 1,564(铁匠) | 20,000(钱富贵) | 12.8× |
| 罹患配方 | 1,564(首饰商人) | 15,000(钱富贵) | 9.6× |
| 虾 | 45(楚盈袖·淮陵) | 400(郑守业·枰栌) | 8.9× |
| 猪 / 鸭 | 30(洛锦风·云鹤村) | 240(楚盈袖·淮陵) | 8× |
| 茶叶 | 80(秦重山·云潇山庄) | 600(楚盈袖·淮陵) | 7.5× |
| 丝绸 | 200(晏璇玑·不夜京) | 1,200(楚盈袖·淮陵) | 6× |
社区那句「买秘籍之前先离开新手村」是对的,原因就在这里。注意生鲜食材是反过来的:淮陵的楚盈袖是六种食材里 卖得最贵的,只有一种是最便宜的。
五个游戏模式各自带一条对金钱属性的永久效果,而游戏自己那块难度界面上的描述,和这些效果行做的事完全对得上:
| 模式 | 对金钱的影响 |
|---|---|
| 简单 | 消耗的钱−25% |
| 标准 | 无 |
| 困难 | 获得的钱−20% |
| 极难 | 获得的钱−30% |
| 地狱 | 获得的钱−40% |
这些是作用在金钱属性上的百分比修正,凡是代码走了「获得/消耗」这一遍的地方就生效,包括货架商品的售价和 背包物品的单件卖出价,但不包括最终整单的转账,那一步被特意标成跳过。实际效果是:你在商店里看到的 数字,已经含了难度的这层扣减。
四条惩罚行里有三条在数据里标的是感悟惩罚,实际接的却是金钱;感悟和修为另有各自正确的行, 所以这不是机制缺失,是命名写错了。
五个模式里有两个还会整套换掉价格表。侠恶江湖和真实江湖各自加载自己那份物品表和商店表,分别带7,386件和 7,569件物品(标准表是7,394件),商店行分别是15,734和15,793(标准表是15,833)。所以在这两个模式里,基础价 和售价是实打实不同的数字,这一页上的任何数字都是标准/荡魔的数字。荡魔江湖换了物品表,但没有自己的商店表, 回落到标准的那张。
技能效果表里有十四条效果按百分比修改金钱,其中四条就是上面的难度行。 其余里有名字的:生财有道 (金钱获得+20%,由三条不同的天赋行授予)、高门大族(金钱、修为和感悟+20%)、天罚(金钱获得−50%)、 自力更生(金钱消耗+30%)。它们和难度行走同一套机制,并且与难度行叠加。
按代码和表能撑住的程度排序,用的是它们自己的数字。
1. 把战利品卖给商人。 别的一切最终都要走这条路,而它就是那道约束条件:每个商人每游戏日500,000,或者 在新手村那两位老人那里50,000,000。擒纵自如在贡献值拉满、商道顶到上限时,一包战利品的价值是什么都不带时的 2.2倍,因为特技把总额翻了一倍,商道再在翻倍后的数字上取一成。
2. 杀人。 表里18,150个角色中有3,960个的掉落组里有铜钱行,这类行共1,716条。把一个组里所有金钱行的 期望加起来,中位数约为每杀一人1,100铜钱——这是个上限,因为只抽取其中几行的掉落组不会把所有行都触发。 区间顶端且必掉的是具名首领的5,000到7,000:游逸、镜无双、明空大师、公输弘、澄道和阎法禅师是稳定的7,000, 重刃、守魁长老和宗和是6,000。掉落来的钱会吃到那些百分比获得修正,卖出所得则不会。
3. 杀人拿背包。 游戏给出这个选项时,会把他身上带的每一件东西连同装备一起交给你,外加他自己金钱属性 里的数。最后这部分通常是零,因为商人的钱袋是挂在商店记录上的独立资金池,不在角色身上,而属性表里 也没有任何一条给NPC自己的钱。背包才是奖品,钱袋里那500,000不会跟着来。
4. 任务步骤。 掉落表里最大的几笔单次铜钱奖励(15,000、11,250、10,000、9,750,以及一组九个9,000) 都在只有任务表引用的组里。
5. 打造出来卖。 委托打造的费用按配方是个固定数,中位数932,而它产出的物品,基础价中位数是这笔费用的 5.75倍。3,395个能解析的配方里,有3,375个产出的东西比费用值钱。自己动手做,花的是精力,不花钱,也 完全没有手续费。
6. 拍卖行。 不收费,不动商人的钱袋,最优挂单的期望价值约为物品参考价的2.75倍。
7. 委托。 委托和悬赏几乎全部以物品结算,不给钱,主奖励组里没有金钱行。它们真正的经济价值是 每个悬赏给的+20不夜京贡献值,也就是那个卖价倍率。
8. 赌钱。 不夜京的纸牌游戏按赢牌倍率之和乘你的赌注,输了则全额没收。旁边的擂台前十场每赢一场给200 铜钱,之后每场2,000,另加代币和一点贡献值。
钓鱼这个社区最常推的路子,本质是掉落组加烹饪的循环,它的上限和别的一样,是商人的钱袋。所谓一小时一百 万铜钱,要么一小时跑不止一个商人,要么用的是社区版本那种没有上限的钱袋。
| 消耗项 | 花费 | 备注 |
|---|---|---|
| 打听——问出某样东西的下落 | (2 + 一个类别系数)× 基础价,再乘第二个类别系数——装备是基础价的3.5倍,材料2倍,任务物品、宝物和秘籍升级道具6倍 | 全游戏单次收费最狠的一项 |
| 在货架上买任何东西 | 中位数为基础价的2倍 | |
| 修装备 | 基础价的30%,每级强化再+5% | |
| 委托打造 | 按配方固定,中位数932 | 自己做则免费,代价是精力 |
| 强制商店刷新 | 300,然后600、900、1,200 | 一次自然刷新后重置回300 |
| 一次性的剧情和服务收费 | 数据里以硬编码形式出现的有1,000和20,000 |
打听的费用由第五个捕快特技断案如神减免,走的是不夜京贡献值÷10,000的曲线,所以贡献值1,000时是10%的 折扣;同样这个数字在卖价加成那边能达到100%。这个差别在数据里只是一个数字之差。
野外修不了。恢复耐久的只有 Item.Repair() 这一个函数,而能走到它的只有商店界面的
OnRepairBtnClick。没有任何消耗品能修,没有任何生活技能能修,休息、扎营也不能。除此之外会写
m_Durability 的地方只剩物品生成和磨损计数。
那个按钮修的是你身上全部装备,不是某一件。RepairEquip 遍历身上十二个格子,按各自缺多少耐久排序,
从缺得最多的开始修,直到某一次 Repair() 因为钱不够返回 false 为止。所以钱不多的时候,先修上的正是
最该修的那几件。
耐久是个悬崖,不是斜坡。没有任何东西随它衰减。剩1点的装备和满耐久的表现完全一样,全代码里的判定
只有 m_Durability > 0 这一条。归零时游戏把它从你身上脱下来(装备{0}无耐久,已卸下),并且不让你再
穿上去(装备无耐久,无法穿戴)。它不会消失,词条、强化、锋锐也都还在。
磨损按使用次数算,不按时间,而且每个部位一套计数:
| 部位 | 每掉1点耐久需要的次数 |
|---|---|
| 武器 | 250 |
| 身甲 | 200 |
| 腰带、鞋 | 600 |
| 首饰 | 2000 |
本来能让你少磨损的那两个接口是死的。ConsumeDurability 会从上面那个阈值里减去自定义类型2
(NaijiuXiaohao)和315(WuQiNaijiuXiaohao)的效果值,而 stunt_proto 里没有任何一行用这两个
subType。代码在那儿,游戏里没有东西喂给它,所以你能学到的特技没有一个能改上表里的任何数字。
能改的是装备出厂时的耐久。有两条打造效果会抬它——一条把炼器、缝纫、巧手做出来的成品的外攻、耐久、 锋锐、坚韧一起提升50%,另一条直接给成品加一段耐久。自己打的装备,比货架上买的同款更耐用,跑修理铺的 次数也更少。
在不夜京挂单不花钱。手续费的代码先算出0,再从0里减掉一个折扣。
参考价 = 基础价 × 一个类别系数
普通1.0 · 装备按部位1.1–1.3 · 材料1.2
消耗品按子类1.2 / 1.3 / 1.5 · 任务物品1.5
你可以按参考价的1倍到10倍挂单
成功率 = lerp(99%, 下限, (你的定价 − 参考价) / (参考价 × 9))
下限 = 六阶物品20%,七阶物品10%,其余一切0%
拍出去就按你挂的全价付给你,没拍出去东西退回来。没有挂单费,也没有惩罚,所以挂单永远不比不挂单差, 唯一的成本是等。
不要按参考价挂。 价格线性上升的同时成功率线性下降,所以两者的乘积在中间取到最大,不在任何一端:
| 物品 | 最优定价 | 该价位的成功率 | 每次挂单的期望回报 |
|---|---|---|---|
| 六阶以下的一切 | 参考价的5.0倍 | 55% | 参考价的2.75倍 |
| 七阶 | 参考价的5.5倍 | 54% | 参考价的3.0倍 |
| 六阶 | 参考价的6.1倍 | 54% | 参考价的3.3倍 |
相比之下,按参考价稳妥挂单只值参考价的0.99倍。按建议价的五倍挂,每一轮的价值是按建议价挂的将近三倍, 而失败时你付出的只有等下一场拍卖的时间。
类别系数只在这里存在。 那个按物品类别取1.0到1.5的乘数由一个函数算出,而商店这条路径从不调用它,因为 商店的收购价直接读基础价。所以拍卖行给任务物品的参考价是商人给价的1.5倍,宝物和秘籍升级道具1.5倍,材料 1.2倍,装备1.1到1.3倍。除普通物品外,其余每一类哪怕保守挂单也比卖给商人强,而且完全不动商人的钱袋。
出价当场扣钱,退款走书信。 你一出价钱就走了;被别人压过或者这件流拍,全额通过书信退回。社区说 「不管有没有拍到都扣钱」,对了一半:出价时确实扣,没拍到会通过书信退回来。
实际运行的那套商店,按「基础价非零」过滤你的背包,从不看表里自带的可出售标记。有414件物品既带这个 标记又有价格,商店照样把它们列出来。其中有价值6,240到39,425的秘籍,包括燎原百击、万剑归宗、天剑和 剑道归一。读一本秘籍和把它卖掉之间只隔一次误点,而本该拦住这件事的标记没人读。
旧的商店面板确实会检查它,但那个面板永远打不开,因为程序集里没有任何地方设置那个能唤起它的标志位。另有 一整套并行的商店实现,带自己的一套价格规则——包括拍卖那节讲的类别系数,以及一个按条件字符串触发的20% 折扣——情况也一样,这些全都不运行。谁要重新推这些数字,先查清楚哪个商店类有调用方,再决定信不信它。
当前装着的程序集是原版的那个。 创意工坊版本(物品3490012374,版本163)已经下载,应用脚本也在项目 目录里,但游戏目录里的那个文件和原版备份逐字节相同。上面写的全部是现在实际在跑的东西。下面是打上补丁 之后会变的部分。
| 改动 | 代码做了什么 |
|---|---|
| 商人钱袋 | 刷新时,钱袋在500,000及以上的商人一律改写成99,999,999。469个商人里有466个正好是500,000,另有两个在这之上,所以够线的是468个,全游戏的钱袋上限就此取消。它改写的是原型,因此在本次会话内持续有效。 |
| 9,999堆叠 | 只有堆叠上限正好是99的物品被提到9,999,其余保持原上限。 |
| Shift多选 | 批量模式下按住Shift点一行会选中一个区间。勾选一行仍然会把商人这一行的全部库存写进去,见shops_and_trading.md。 |
| 卖出时自动分解 | 卖出面板上的一个勾选框。勾上之后,你这一单里凡是可制作配方产物的物品都不会被卖掉——它会被销毁,你拿回它每种主材料和固定材料的随机1到(配方数量 × 件数),并且它对成交总额的贡献是零。 |
| 神兵保护 | 勾选框不勾时,批量选择里玩家自己打造的神兵会被静默跳过,不会卖出。 |
| 最大掉落 | 触发幸运掉落的击杀时,mod把组里每一行都掉出来,而不是逐行随机,每帧三行。它只在幸运掉落这个分支里生效。 |
| 欧皇随机 | 把装备的属性随机、武器威力、词条数量和数值都拉满。它不动物品的品质和阶,所以不改变商人给任何东西的收购价。 |
| 右键传送 | 要花钱;这是原版没有的一处金钱消耗。 |
经济上真正起决定作用的是第一条。不打补丁,这一页上每一笔收入计算都被每个商人每游戏日500,000卡着,绕开 它的路只有云鹤村那两位老人。打了补丁,这道上限就没了。
对照过红手指和 多多云的钓鱼循环攻略, TapTap和 星界云的属性梳理, GamerSky、 3DM和 游侠的金钱攻略, BWIKI的捕快页,以及 这个mod的创意工坊页面。
| 说法 | 结论 |
|---|---|
| 商道「提高你卖东西的价格」;口才「降低你买东西的价格」 | 说对了,但从来没人给过数字。 两个都是每点0.02%,两个都停在500——也就是±10%,全部价值就这些 |
| 商道和口才聊胜于无,不如福气和悟性 | 对,而且理由比任何人给的都硬: 它们有上限,而干同一件事的特技值它们的十倍 |
| 商道随交易量上涨 | 方向对,形状不对。 它按成交额的对数上涨,所以五十笔普通交易就到上限,一笔巨额交易只值十八点左右 |
| 裁缝特技吴锦软云「提高商道」(BWIKI) | 这两个名字在本版本里都不存在。 吴锦软云和蛮育都不是本地化表里的字符串,特技表里也没有任何特技授予商道。而且就算有也不相干:任何提高商道的东西都被同一个500卡住 |
| 商店刷新是个点了就能一直刷的按钮 | 确实是个按钮,但要花钱——300,然后600、900、1,200,一次自然刷新后重置回300。没人提过这笔钱 |
| 商店每游戏内一小时自动刷新一次 | 不对。 15,833行里有8,390行是游戏内一天,7,256行是一天半。八小时是第三常见的值,覆盖135行 |
| 每个商人限购45 | 数字对,机制不对。 45是一行能容纳多少件的上限,不是你能买多少件的上限 |
| 连锁 / 不连锁——有些商人共享库存 | 机制真实存在,只是名字不是这个。 267行被标为限量:它们的剩余数量能挺过刷新,一旦买空就一直空着 |
| 枰栌的儒家书卷「可以无限刷新,刷四次能把儒学刷到1000」 | 与代码一致,而这四次刷新一共要3,000铜钱 |
| 天机老人同样的书要价是别的商人的好几倍 | 对,而且这是普遍现象。 304件物品在不同商人那里卖不同的价格,最悬殊的差47倍 |
| 擒纵自如「提高你卖给商店的价格」 | 对,而且它是整个经济系统里影响最大的一项——最高+100%,五十个悬赏就能拿满。没有一份资料给过数字 |
| 铁口直断「降低不夜京拍卖手续费」 | 它什么也没做。 手续费在折扣应用之前就被算成0,根本没有手续费可减 |
| 「只要出价就扣钱,不管你有没有拍到」 | 对了一半。 出价时扣,没拍到会通过书信退回 |
| 断案如神「提高锻造成功率」(BWIKI) | 对本版本不成立。 它减免的是打听的费用,走的曲线比卖价加成浅十倍 |
| 悬赏给贡献点和龙角令 | 贡献这部分是对的,具体数额是每个悬赏+20不夜京贡献值和+20捕快,其中六个各+40。龙角令那一半没查 |
| 天榜俸禄可以靠打坐刷新 | 两份资料说法不一,这里都没有核实——仅为转述,未经验证 |
| 钓鱼是最快的来钱方式,约每小时1,000,000铜钱 | 没有被推翻,但有上限: 除了云鹤村那两位,没有商人一个游戏日会付超过500,000,所以这个说法需要一小时跑好几个商人,或者用社区版本 |
| 除了高阶金色物品,别的都卖 | 成立,但有一条没人提的注意事项:商店会列出414件数据里标为不可出售的物品,包括价值最高到39,425的秘籍,而且没有任何提示 |
| mod「提高了商人的金钱上限」 | 对,而且是全量的: 全游戏每个商人都变成99,999,999,因为他们全都正好压在它判断的那条阈值上 |
| 没有公开的按品质或阶的价格表 | 现在有了: 高出物品自身下限,每档品质+15%、每档阶+40%,且只作用于卖出一侧 |
| 没有公开的低买高卖路线 | 因为几乎没什么可写的。 5,947条够得着的商店行里只有十六条卖回去比买价高,而其中值得跑一趟的六条,卡在一个对话门槛后面,且那个商人没有钱 |
三件没人写下来过的事:两个商业技能的上限是500,因此一共只值一成;捕快身份才是真正的价格倍率,而刷悬赏 就是拿到它的办法;以及新手村的老铁匠和老药师,是仅有的两个不会没钱的商人。
ShopStoreSystem(NormalShopItemPrice、EquipShopItemPrice、GetEquipQuaLvlPriceWithBase、
GetWordsPriceByQua、ModPlayerMoney、CreateItemByShopPrototype、Save/Load)、ShopStoreData
(Refresh、TimeOutToRefresh、CheckConditionItemAndRefresh、OnPlayerSellToShop、AddToStorage、
Save/Load)、ShopStoreItemData(GetPrice、CalStuntEffectedPrice、OnBuyToDelete、
SetDoublePrice)、ShopBuyBackData.SetPrice、ShopViewNew(CalBuyPrice、CalSellPrice、Buy、
Sell、OnClickRefresh,以及背包过滤)、ShopStoreViewNew(CalSellPrice、ChuShou)、ShopHolder、
SweetPotato.Item(GetPrice、GetSellPrice、RepairPrice)、ItemPrototype(GetCostFactor、
GetGouMaiFactor、GetDaTingFactor、GetCost、GetRecyclePrice)、SweetPotato.ShopProto
(GetRandomShopDatas、GetTableName、ParseCondition)、BaseProbability、
SweetPotato.AttriManager(AddAttriField、CalculateGrowthValue、ModAttriField、
GetAttriGainAdditionRand、GetAttriConsumeReduceRand)、StuntManager.GetStuntEffectValue、
LootMgr(LootItemsByGroupId、LootOneItem)、EntrustManager(GenerateRewardItems、
GenerateRewardItems2)、BuYeJingManager(PaiMaiHangFinish、OnClickRightGuaPai、
OnClickRightJingPai)、DaTingItems.GetCostMoney、SweetPotato.Tools(RandomOne,以及那些时间
常量)、ConditionPrototype.CheckOneNewCondDef、AnswerManager.ParseAnswers,以及表shop、
item_base、base_probability、npc_prototype、loot_items、stunt_proto、spelleffect、
talent_proto、entrust_event_prototype、living_assemblyskill、wordentry、wordentrytype、
dialoguelist、nandu。
哪些在游戏里核对过,哪些没有。 有三个数字是从运行中的游戏里读的,不是从代码里读的:角色的 商道500,正好压在代码强制的上限上;口才196;以及不夜京贡献值0,卖价倍率就是从这里起步的。 角色面板上货币的名字铜钱来自同一次读取;商店面板的金币是从字符串表里读到的,没有在屏幕上见过。这一页 其余全部是对着发行数据表读代码得出的,页面上没有一个价格公式像character_build.md 里那些属性换算一样被实测过。既然那一篇里唯一一次实测就推翻了它所依据的表,那么在每个数字都被亲眼看着 发生之前,这里的算式只代表代码怎么说,不代表游戏怎么做。
最值得先补上的两个具体缺口,都很容易在游戏里验:
为这一页,社区版本反编译过,也和原版程序集做过差分,但它不是实际装着的那个程序集,所以mod那一节里的内容 同样没有被观察到。