传奇单机添加双倍经验药:死亡下线不消失设置方法

来源: 作者: 点击:
在自架设的传奇单机环境中,若需添加一种使用后获得双倍经验、且死亡或下线后效果不消失的药物,需通过修改服务端脚本与物品数据库实现。以下以标准MirServer架构为例,分步说明配置流程。

第一步:在物品数据库中注册新药

进入服务端目录 MirServerMir200EnvirMarket_def,找到 StdItems.txt 文件。在末尾添加一行新物品定义,格式如下:

10000 双倍经验丹 药品 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0......(此处省略大量0)

关键字段说明:
10000:物品唯一ID,需确保不与其他物品冲突。
双倍经验丹:物品名称,可自定义。
第4个数字(当前为1)代表物品类型,1为药品。
后续数值可保持默认,重点在脚本中调用。

保存文件后,在 MirServerMir200MapQuest_def 目录下新建或编辑 QFunction-0.txt,用于绑定使用效果。

第二步:编写使用脚本实现双倍经验

在 QFunction-0.txt 中添加以下代码段:

[@@StdModeFunc10000]
IF
CHECKITEM 双倍经验丹 1
ACT
DELITEM 双倍经验丹 1
SET [100] 1
SENDMSG 0 您已激活双倍经验,持续30分钟。
STARTTIMER 1800
BREAK

[@Timer_1800]
IF
EQUAL [100] 1
ACT
SET [100] 0
SENDMSG 0 双倍经验效果已结束。

说明:
@@StdModeFunc10000:对应物品ID 10000的使用事件。
SET [100] 1:将变量100设为1,作为双倍经验开关。
STARTTIMER 1800:启动1800秒(30分钟)倒计时。
[@Timer_1800]:倒计时结束时触发,关闭效果。

第三步:在经验获取逻辑中加入双倍判断

打开 QFunction-0.txt,找到角色获得经验的处理段(通常为 [@KillMonster] 或 [@GetExp]),插入判断语句:

[@KillMonster]
IF
EQUAL [100] 1
ACT
CALC exp = KILLMONSTEREXP * 2
GIVEEXP exp
SENDMSG 5 获得双倍经验:
ELSEACT
GIVEEXP $KILLMONSTEREXP

若服务端未显式定义 [@KillMonster],可在 M2Server.ini 中启用经验事件,或直接在怪物死亡脚本中处理。

第四步:确保效果不因死亡或下线消失

默认情况下,变量 [100] 在角色下线后会被清空。为持久化该状态,需启用服务端的角色变量保存功能。
进入 MirServerMir200!Setup.txt,查找 UserItemSaveMode 和 UserVarSaveMode,确保:

UserVarSaveMode=1

此设置使角色变量(如[100])在下线时写入数据库,上线时自动恢复。死亡不影响变量值,因此无需额外处理。

第五步:测试与验证

启动服务端,创建角色。
使用GM命令 @make 双倍经验丹 1 获取药品。
使用药品,观察提示“已激活双倍经验”。
击杀怪物,确认经验翻倍。
死亡或退出游戏后重新登录,再次打怪,验证双倍效果是否仍在。
等待30分钟后,确认效果自动清除。

若效果未持久化,检查 !Setup.txt 中 UserVarSaveMode 是否生效,并确认数据库(如HeroDB.mdb)中 PlayVar 表是否记录了变量值。

通过以上步骤,即可实现一个死亡与下线均不消失的双倍经验药物,满足单机娱乐需求。