传奇泡点功能的核心是让玩家在线时自动获得经验,不需要打怪升级。实现方式主要有两种:一种是通过个人定时器定时触发脚本发放经验,另一种是通过引擎内置的自动泡点命令。不同引擎支持的命令不同,下面以常见GOM/GEE类引擎为例,按可直接套用的思路写示例。
第一种:个人定时器实现泡点
这是最通用的泡点写法。玩家通过NPC开启泡点后,引擎每隔固定秒数执行一次脚本,检测玩家是否在指定地图、是否满足等级条件,然后发放经验。
实现步骤分三步:
第一步,在QManage.txt中编写定时器执行标签。打开MirServerMir200EnvirMapQuest_DefQManage.txt,添加以下内容:
[@OnTimer15]
IF
CHECKMAPNAME3
CHECKLEVELEX>49
CHECKLEVELEX<80
ACT
CHANGEEXP+50000
SENDMSG72500初级泡点,每秒获得5万经验
[@OnTimer16]
IF
CHECKMAPNAME3
CHECKLEVELEX>99
CHECKLEVELEX<200
ACT
CHANGEEXP+60000
SENDMSG72500高级泡点,每秒获得6万经验
这里CHECKMAPNAME后面跟地图编号,3代表盟重地图,不同版本地图编号需要对照MapInfo.txt确认。CHANGEEXP+50000表示每次触发增加50000经验。定时器编号15、16可以自定义,但必须确保未被其他脚本占用。
第二步,在NPC脚本中开启定时器。在Market_Def目录下创建NPC文件,例如泡点使者-3.txt:
[@main]
IF
ACT
SAY
请选择泡点服务:\
<初级泡点/@初级泡点>50-80级每秒5万经验\
<高级泡点/@高级泡点>100-200级每秒6万经验\
<关闭泡点/@关闭泡点>\
<离开/@exit>
[@初级泡点]
IF
CHECKLEVELEX>49
CHECKLEVELEX<80
ACT
SETOFFTIMER16
SETONTIMER151
SENDMSG6已开启初级泡点,每秒获得5万经验
ELSEACT
SENDMSG6等级不符合条件
[@高级泡点]
IF
CHECKLEVELEX>99
CHECKLEVELEX<200
ACT
SETOFFTIMER15
SETONTIMER161
SENDMSG6已开启高级泡点,每秒获得6万经验
ELSEACT
SENDMSG6等级不符合条件
[@关闭泡点]
IF
ACT
SETOFFTIMER15
SETOFFTIMER16
SENDMSG6已关闭泡点功能
SETONTIMER151表示开启15号定时器,每1秒执行一次。SETOFFTIMER用于关闭指定定时器,切换泡点档位时需要先关闭其他定时器,避免同时触发。
第三步,在QManage.txt的[@Login]标签中设置登录时自动开启泡点。如果希望玩家上线后自动享受泡点,可以这样写:
[@Login]
IF
CHECKLEVELEX>49
CHECKLEVELEX<80
ACT
SETONTIMER151
这样玩家每次登录时,如果等级在50到79之间,就会自动开启初级泡点。
第二种:SETAUTOGETEXP自动泡点命令
部分GOM/GEE引擎支持SETAUTOGETEXP命令,可以直接开启自动获取经验功能,不需要手动编写定时器标签。
示例:
[@Login]
IF
CHECKLEVELEX>35
ACT
SETAUTOGETEXP1200013
参数含义通常是:第一个1表示开启状态,2000表示每次获得的经验值,第二个1表示执行间隔秒数,3表示地图编号。不同引擎参数顺序可能不同,需要对照当前引擎说明确认。
这种写法更简洁,但兼容性不如个人定时器。如果当前引擎不支持该命令,就需要回到第一种写法。
第三种:收费泡点实现
收费泡点在免费泡点基础上增加金币或元宝扣除逻辑。玩家每次获得经验时,脚本检测并扣除对应货币。
示例:
[@OnTimer17]
IF
CHECKMAPNAME3
CHECKLEVELEX>49
CHECKGOLD10000
ACT
TAKEGOLD10000
CHANGEEXP+500000
SENDMSG72500金币泡点,扣除1万金币获得50万经验
ELSEACT
SETOFFTIMER17
SENDMSG6金币不足,泡点已自动关闭
元宝泡点写法类似:
[@OnTimer18]
IF
CHECKMAPNAME3
CHECKLEVELEX>49
CHECKGAMEGOLD>0
ACT
GAMEGOLD-1
CHANGEEXP+5000000
SENDMSG72500元宝泡点,扣除1元宝获得500万经验
ELSEACT
SETOFFTIMER18
SENDMSG6元宝不足,泡点已自动关闭
NPC开启部分:
[@金币泡点]
IF
CHECKLEVELEX>49
ACT
SETOFFTIMER15
SETOFFTIMER16
SETOFFTIMER18
SETONTIMER171
SENDMSG6已开启金币泡点
[@元宝泡点]
IF
CHECKLEVELEX>49
ACT
SETOFFTIMER15
SETOFFTIMER16
SETOFFTIMER17
SETONTIMER181
SENDMSG6已开启元宝泡点
第四种:安全区泡点限制
如果希望泡点仅在安全区生效,可以在定时器检测中增加安全区判断:
[@OnTimer15]
IF
CHECKMAPNAME3
CHECKLEVELEX>49
CHECKLEVELEX<80
CHECKINSAFEZONE
ACT
CHANGEEXP+50000
ELSEACT
SETOFFTIMER15
SENDMSG6已离开安全区,泡点已关闭
CHECKINSAFEZONE用于检测玩家是否在安全区内。离开安全区后自动关闭定时器,防止玩家在野外无风险泡点。
第五种:性能优化
当在线人数较多时,每秒触发一次的定时器会产生大量脚本运算。可以采用以下优化方式:
将泡点间隔从1秒改为5秒,每次发放5倍经验,减少触发频率:
SETONTIMER155
CHANGEEXP+250000
将泡点地图按坐标分区,不同区域使用不同定时器错开执行时间,避免同一时刻所有玩家同时触发脚本。
第六种:部署与调试
修改QManage.txt后,在M2控制台执行@ReloadManage重新加载登录脚本。修改NPC文件后,执行@ReloadNpc重新加载NPC。
调试时按以下顺序检查:
定时器编号是否与其他脚本冲突,可用查找替换功能确认
CHECKMAPNAME后面的地图编号是否与MapInfo.txt一致
CHANGEEXP是否能正常增加经验
SETONTIMER和SETOFFTIMER编号是否对应
收费泡点中货币扣除是否正常
离开地图或安全区后定时器是否自动关闭
登录时自动开启泡点是否生效
如果泡点不触发,先检查定时器编号是否被占用,再确认CHECKMAPNAME地图编号是否正确。如果经验不增加,检查CHANGEEXP命令是否被当前引擎支持,部分引擎可能使用其他经验发放命令。如果收费泡点不扣货币,检查CHECKGOLD或CHECKGAMEGOLD写法是否与当前引擎一致。
第一种:个人定时器实现泡点
这是最通用的泡点写法。玩家通过NPC开启泡点后,引擎每隔固定秒数执行一次脚本,检测玩家是否在指定地图、是否满足等级条件,然后发放经验。
实现步骤分三步:
第一步,在QManage.txt中编写定时器执行标签。打开MirServerMir200EnvirMapQuest_DefQManage.txt,添加以下内容:
[@OnTimer15]
IF
CHECKMAPNAME3
CHECKLEVELEX>49
CHECKLEVELEX<80
ACT
CHANGEEXP+50000
SENDMSG72500初级泡点,每秒获得5万经验
[@OnTimer16]
IF
CHECKMAPNAME3
CHECKLEVELEX>99
CHECKLEVELEX<200
ACT
CHANGEEXP+60000
SENDMSG72500高级泡点,每秒获得6万经验
这里CHECKMAPNAME后面跟地图编号,3代表盟重地图,不同版本地图编号需要对照MapInfo.txt确认。CHANGEEXP+50000表示每次触发增加50000经验。定时器编号15、16可以自定义,但必须确保未被其他脚本占用。
第二步,在NPC脚本中开启定时器。在Market_Def目录下创建NPC文件,例如泡点使者-3.txt:
[@main]
IF
ACT
SAY
请选择泡点服务:\
<初级泡点/@初级泡点>50-80级每秒5万经验\
<高级泡点/@高级泡点>100-200级每秒6万经验\
<关闭泡点/@关闭泡点>\
<离开/@exit>
[@初级泡点]
IF
CHECKLEVELEX>49
CHECKLEVELEX<80
ACT
SETOFFTIMER16
SETONTIMER151
SENDMSG6已开启初级泡点,每秒获得5万经验
ELSEACT
SENDMSG6等级不符合条件
[@高级泡点]
IF
CHECKLEVELEX>99
CHECKLEVELEX<200
ACT
SETOFFTIMER15
SETONTIMER161
SENDMSG6已开启高级泡点,每秒获得6万经验
ELSEACT
SENDMSG6等级不符合条件
[@关闭泡点]
IF
ACT
SETOFFTIMER15
SETOFFTIMER16
SENDMSG6已关闭泡点功能
SETONTIMER151表示开启15号定时器,每1秒执行一次。SETOFFTIMER用于关闭指定定时器,切换泡点档位时需要先关闭其他定时器,避免同时触发。
第三步,在QManage.txt的[@Login]标签中设置登录时自动开启泡点。如果希望玩家上线后自动享受泡点,可以这样写:
[@Login]
IF
CHECKLEVELEX>49
CHECKLEVELEX<80
ACT
SETONTIMER151
这样玩家每次登录时,如果等级在50到79之间,就会自动开启初级泡点。
第二种:SETAUTOGETEXP自动泡点命令
部分GOM/GEE引擎支持SETAUTOGETEXP命令,可以直接开启自动获取经验功能,不需要手动编写定时器标签。
示例:
[@Login]
IF
CHECKLEVELEX>35
ACT
SETAUTOGETEXP1200013
参数含义通常是:第一个1表示开启状态,2000表示每次获得的经验值,第二个1表示执行间隔秒数,3表示地图编号。不同引擎参数顺序可能不同,需要对照当前引擎说明确认。
这种写法更简洁,但兼容性不如个人定时器。如果当前引擎不支持该命令,就需要回到第一种写法。
第三种:收费泡点实现
收费泡点在免费泡点基础上增加金币或元宝扣除逻辑。玩家每次获得经验时,脚本检测并扣除对应货币。
示例:
[@OnTimer17]
IF
CHECKMAPNAME3
CHECKLEVELEX>49
CHECKGOLD10000
ACT
TAKEGOLD10000
CHANGEEXP+500000
SENDMSG72500金币泡点,扣除1万金币获得50万经验
ELSEACT
SETOFFTIMER17
SENDMSG6金币不足,泡点已自动关闭
元宝泡点写法类似:
[@OnTimer18]
IF
CHECKMAPNAME3
CHECKLEVELEX>49
CHECKGAMEGOLD>0
ACT
GAMEGOLD-1
CHANGEEXP+5000000
SENDMSG72500元宝泡点,扣除1元宝获得500万经验
ELSEACT
SETOFFTIMER18
SENDMSG6元宝不足,泡点已自动关闭
NPC开启部分:
[@金币泡点]
IF
CHECKLEVELEX>49
ACT
SETOFFTIMER15
SETOFFTIMER16
SETOFFTIMER18
SETONTIMER171
SENDMSG6已开启金币泡点
[@元宝泡点]
IF
CHECKLEVELEX>49
ACT
SETOFFTIMER15
SETOFFTIMER16
SETOFFTIMER17
SETONTIMER181
SENDMSG6已开启元宝泡点
第四种:安全区泡点限制
如果希望泡点仅在安全区生效,可以在定时器检测中增加安全区判断:
[@OnTimer15]
IF
CHECKMAPNAME3
CHECKLEVELEX>49
CHECKLEVELEX<80
CHECKINSAFEZONE
ACT
CHANGEEXP+50000
ELSEACT
SETOFFTIMER15
SENDMSG6已离开安全区,泡点已关闭
CHECKINSAFEZONE用于检测玩家是否在安全区内。离开安全区后自动关闭定时器,防止玩家在野外无风险泡点。
第五种:性能优化
当在线人数较多时,每秒触发一次的定时器会产生大量脚本运算。可以采用以下优化方式:
将泡点间隔从1秒改为5秒,每次发放5倍经验,减少触发频率:
SETONTIMER155
CHANGEEXP+250000
将泡点地图按坐标分区,不同区域使用不同定时器错开执行时间,避免同一时刻所有玩家同时触发脚本。
第六种:部署与调试
修改QManage.txt后,在M2控制台执行@ReloadManage重新加载登录脚本。修改NPC文件后,执行@ReloadNpc重新加载NPC。
调试时按以下顺序检查:
定时器编号是否与其他脚本冲突,可用查找替换功能确认
CHECKMAPNAME后面的地图编号是否与MapInfo.txt一致
CHANGEEXP是否能正常增加经验
SETONTIMER和SETOFFTIMER编号是否对应
收费泡点中货币扣除是否正常
离开地图或安全区后定时器是否自动关闭
登录时自动开启泡点是否生效
如果泡点不触发,先检查定时器编号是否被占用,再确认CHECKMAPNAME地图编号是否正确。如果经验不增加,检查CHANGEEXP命令是否被当前引擎支持,部分引擎可能使用其他经验发放命令。如果收费泡点不扣货币,检查CHECKGOLD或CHECKGAMEGOLD写法是否与当前引擎一致。

