当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[@KillMonster]
IF
EQUAL[100]1
ACT
CALCexp=KILLMONSTEREXP*2
GIVEEXPexp
SENDMSG5获得双倍经验:
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表是否记录了变量值。

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