Npcs文件里沙巴克相关NPC如果功能代码填错,会直接影响沙城收入、修理扣费、税金入库和国库金币显示。沙巴克管理NPC通常使用管理类功能代码,比奇国王类NPC使用建会攻城类代码,两类不要混用。若把沙城收入NPC写成国王代码,可能出现点开只显示建会、攻城信息,不显示国库资金、税收比例、修理城墙费用的情况。
一、Npcs基础行与功能代码
Mir200\Envir\Npcs.txt 或不同引擎的Npc_def列表,标准行结构通常包含名称、功能代码、地图、X、Y、范围、图标。示例:
比奇国王 1 0122 29 32 0 8
沙城管理人员 2 0150 24 43 0 8
代码1按资料用于国王类,可建立行会、处理攻城相关;代码2用于沙巴克类,可修复城墙、管理收入、查询国库。 若沙巴克地图里的收入NPC被设成1,系统可能按国王逻辑加载,导致沙城税金、国库总额、每日收入上限等菜单不出现或显示空白。改回2后重载NPC再测试。
二、沙城税金与国库显示的后台参数
Npcs只负责呼出菜单,真正算钱在M2的!Setup或Setup.txt。常用字段:
CastleName=沙巴克 定义沙城名称,NPC对话里显示的城市名以此为准。
CastleGoldMax=10000000 沙城最高可存资金,国库超过该值不再入账,NPC查金会固定显示上限或停止增长。
CastleOneDayGold=10000 或2000000 沙城一天最高收入,按版本填写,税收达到日上限后当天不再累计到国库。
CastleTaxRate=5 所有商人交税百分比,NPC商店、部分交易税按此比例进入沙城;设为0则商店不纳税,城主看国库永远不涨。
CastleGetAllNpcTax=0或1 控制是否把所有NPC交易税汇总进沙城;0可能只收部分系统税,1按版本汇总更多NPC税。
HireGuard=10000 雇用护卫费用;HireArcher=10000 雇用弓箭手费用;RepairDoor、RepairWall分别为修门修墙费用。NPC显示修理价格取自这里,改错会让玩家看到0或超大数值。
CastleMemberPriceRate=80 沙城成员修理折扣率,写80表示成员享8折;写成0或空,NPC修理页可能不打折或显示异常。
HumanMaxGold=2100000000 人物携带金币上限,不关联国库,但城主从沙城领薪后若超过该值,客户端金币显示会被截断或异常。
修改!Setup后重启M2,或在引擎后台重新加载配置。只改Npcs不改Setup,税金比例和上限不会变;只改Setup不改Npcs代码,玩家可能点不到收入菜单。
三、Castle目录与sabukw资金文件
沙巴克国库真实数据多在Mir200\Envir\Castle或Mir200\Castle。不同版本路径可能是Castle\0\SabukW.txt、sabukw.txt、沙巴克配置文件.txt。重点字段:
OwnGuild=行会名 当前占领行会;行会名和游戏内不一致,NPC用ISCASTLEGUILD、ISCASTLEMASTER判断时会认为玩家不是沙城成员,导致不发薪、不显示城主收入。
TotalGold=国库总额 某些版本直接写上限或当前资金;和!Setup的CastleGoldMax冲突时以引擎加载顺序为准,建议两者设成同一量级。
MainDoorHP=城门血量;MainDoorOpen=0/1 城门开关,不直接管金币,但攻城脚本异常可能连带沙城收入NPC不刷新。
部分仿制版本存在沙城资金显示BUG,可替换Castle目录脚本或打服务端补丁;操作前备份SabukW.txt、List.txt、Npcs.txt。
M2若报CastleFile路径错误,检查!Setup里CastleFile=.\Castle\List.txt是否和实际目录一致;路径改盘后相对路径失效,手动改回相对路径或重新指定绝对路径,再重启M2,否则沙城NPC可能读不到国库数据。
四、Npcs脚本里的发薪与税金展示
沙城收入NPC放Npc_def或Market_def,按引擎而定。基础菜单可用:
[@main]
沙巴克当前由统治行会管理
<查看国库>/@castlegold
<修理城墙>/@repairwalls
<雇用弓箭手>/@hirearchers
<领取城主薪水>/@masterpay
<领取成员津贴>/@memberpay
[@castlegold]
IF
ISCASTLEMASTER
ACT
SENDMSG 7 国库资金请在M2或后台查看,NPC仅作菜单
ELSEACT
SENDMSG 7 非城主无权限查看详细国库
税金数字不要在NPC里写死,应该从!Setup的CastleTaxRate、CastleOneDayGold读;若脚本写固定“税率5%、今日已收10000”,实际!Setup改成10%后菜单仍显示5%,就属于Npcs显示和实际不一致。部分引擎支持变量获取沙城资金,没有变量就用GM命令@SabukWallGold核对,再把NPC说明改成区间提示。
城主发薪示例:
[@masterpay]
IF
ISCASTLEMASTER
CHECKLEVEL 40
ACT
GIVE 金币 500000
SENDMSG 7 已领取城主每日薪水50万
ELSEACT
SENDMSG 7 等级不足或非城主不能领取
成员发薪示例:
[@memberpay]
IF
ISCASTLEGUILD
CHECKLEVEL 30
ACT
GIVE 金币 200000
SENDMSG 7 已领取沙城成员津贴20万
ELSEACT
MESSAGEBOX 你不是沙城成员,无法领取
ISCASTLEMASTER判断城主,ISCASTLEGUILD判断行会成员;若Npcs挂在非沙城地图或功能代码不是沙城类,这两个条件可能始终不成立,表现为点领取没反应、金币不显示增加。
五、商店NPC税率与沙城入库关系
普通商人Npc_def里开头%100表示基准物价,%200表示两倍;若全局商店都改高比例,玩家交易扣钱变多,但只有当!Setup的CastleTaxRate大于0且CastleGetAllNpcTax正确开启,这部分税才进沙城。部分版本只在特定商店类型、特定交易命令下扣税,自定义脚本用GIVE、TAKE直接发金币不经由商店,则不会产生沙城税。检查税金不显示时按下面顺序:
1. 看Npcs沙城管理人员功能代码是否为沙城类,不是则改2并重载。
2. 看!Setup的CastleTaxRate是否大于0,CastleGetAllNpcTax按版本设1或0。
3. 看CastleGoldMax、CastleOneDayGold是否过小,达到上限后国库不再动。
4. 看SabukW里OwnGuild是否和实际城行会完全一致,含空格、符号、繁简都要相同。
5. 用@SabukWallGold或M2沙城管理页看真实国库,对比NPC菜单数值。
6. 若NPC菜单完全空白,检查Npcs.txt地图X Y是否在沙城安全区可站立点,MapInfo该地图是否加载,NPC名称是否重复导致初始化失败。
六、NPC初始化失败导致沙城菜单不显示
M2报加载NPC初始化失败,沙城NPC可能整段不读,表现为点人没反应或只出默认对话。常见原因:
MapInfo里没有Npcs.txt对应的地图标识,NPC坐标所在地图未注册。
Npcs坐标超出地图可行走范围,沙城地图未放对图层。
同一地图同名NPC重复,沙城收入NPC和自定义NPC重名会冲突。
Npcs文件时间格式错误,部分老引擎要求特定日期格式,报错带is not a valid date and time时删掉脚本里异常时间参数。
改完用M2重新加载NPC,或@ReloadNpc;仍不行重启M2并看启动日志中Npcs、Castle、Setup三项是否全部成功。
七、修墙修门价格显示异常的改法
沙城NPC修墙菜单若显示0、负数、超长数字,先查!Setup:
RepairWall=500000
RepairDoor=2000000
HireArcher=300000
HireGuard=300000
CastleMemberPriceRate=80
NPC脚本不要手动写死价格,尽量调用系统修理命令;若脚本用文本展示“修理城墙所需费用为XXX金币”,XXX应从M2参数读取。成员折扣在脚本里可判断ISCASTLEGUILD后再按CastleMemberPriceRate折算,例如原价50万、80%折扣实收40万。若脚本不判断成员直接全价,沙城人看价格会和普通玩家一样,不属于BUG但会被误认为金币显示错误。
八、城主领薪后客户端金币不变化的区分
分两种情况:NPC发薪成功但角色金币不变,可能是HumanMaxGold上限太低,或者角色已接近携带上限,领到后系统截断;NPC根本不执行GIVE,可能是ISCASTLEMASTER不成立、行会名不匹配、Npcs功能代码错误、脚本标签没对接主菜单。排错时让城主用GM命令@SabukWallGold看国库,再用小号在沙城NPC点领取,M2日志开脚本调试,能看到#IF条件通过还是被#ELSEACT拦截。
九、完整沙城收入NPC配置示例
Npcs.txt片段:
沙城财务官 2 0150 24 43 0 8
!Setup片段:
CastleName=沙巴克
CastleGoldMax=100000000
CastleOneDayGold=5000000
CastleTaxRate=5
CastleGetAllNpcTax=1
HireGuard=300000
HireArcher=300000
RepairDoor=2000000
RepairWall=500000
CastleMemberPriceRate=80
HumanMaxGold=2100000000
Npc_def\沙城财务官.txt片段:
[@main]
沙巴克财政菜单
<国库与税率>/@taxinfo
<修城墙>/@repairwalls
<修城门>/@repairdoor
<城主薪水>/@masterpay
<成员津贴>/@memberpay
[@taxinfo]
IF
ISCASTLEMASTER
ACT
SENDMSG 7 税率请在M2查看,日收入上限与国库上限以Setup为准
ELSEACT
SENDMSG 7 仅城主可查看财政摘要
[@repairwalls]
IF
ISCASTLEGUILD
ACT
修理命令按引擎调用修墙接口
SENDMSG 7 已提交修墙,费用按RepairWall与成员折扣计算
ELSEACT
SENDMSG 7 非沙城成员不能修墙
[@masterpay]
IF
ISCASTLEMASTER
CHECKLEVEL 40
ACT
GIVE 金币 500000
SENDMSG 7 城主薪水已发50万
ELSEACT
SENDMSG 7 条件不满足不发薪
上面修理命令按所用引擎替换;不同Hero、Blue、Gee、Leg、Gom对修墙、雇兵、取沙城资金变量名称不同,不要直接套用未知命令。
十、改完后的验证顺序
备份Npcs.txt、!Setup.txt、Castle全目录。先改Npcs功能代码为沙城类并重载;再改!Setup税率、上限、修理费并重启M2;进沙城用城主号点收入菜单,看税率、修墙费、国库入口是否齐全;用成员号点津贴,看ISCASTLEGUILD是否通过;用GM命令查国库,对比NPC文字;若仍不显示,查SabukW的OwnGuild、TotalGold、CastleFile路径以及M2启动日志NPC初始化报错。按功能代码、M2参数、Castle文件、脚本条件四层分开改,一次只动一项,能直接定位是哪一行Npcs设置把沙巴克金币显示带偏。
传奇Npcs沙巴克管理代码配置错误导致税金不显示与国库金币异常修复教程
来源:
作者:
点击:

