本人自己捣鼓传奇攻城相关脚本,现在有个需求一直搞不定,求高手详细指导,具体需求是:攻城结束5分钟后,两名沙城主界面自动跳出领取沙城主奖励的对话框,点击领取后,全服所有玩家界面都会跳出彩色字体的提示信息,想知道这个脚本具体怎么实现,每一步都要详细,新手能看懂、能直接复制使用,万分感谢!
先跟大家说下我的情况,我用的是传奇常见引擎(GOM、GEE都试过),攻城脚本已经能正常运行,攻城结束后能正常判定沙城主归属,现在就是差“攻城结束5分钟后自动弹出奖励对话框”和“领取后全服彩色提示”这两个功能,自己查了很多脚本资料,试了好几次都没成功,要么不弹出对话框,要么领取后没有全服提示,要么时间设置不对,折腾了好几天,实在摸不着头绪。
我先说说自己尝试过的方法,供高手参考,排除错误方向。一开始,我尝试在攻城结束的脚本后面,直接添加“WAIT 300”(5分钟=300秒),然后添加弹出对话框的命令,可这样设置后,攻城结束后,服务器进程会卡住5分钟,期间无法进行其他操作,而且也不能精准判定沙城主,导致不管是不是沙城主,所有玩家都弹出对话框,明显不对。
后来,我听说需要用定时器脚本,设置攻城结束后启动定时器,5分钟后触发奖励对话框,可我不知道定时器脚本怎么写,也不知道怎么关联攻城结束的触发节点,试了网上找的一些定时器脚本,要么加载报错,要么不生效,不知道是脚本格式错误,还是触发节点不对。
还有全服彩色提示的问题,我知道用SENDMSG命令可以发送全服提示,但不知道怎么设置彩色字体,试了添加颜色代码,比如“SENDMSG 0 【系统】%s领取了沙城主奖励!”,可发送后还是默认字体颜色,不是彩色,不知道颜色代码怎么正确添加,也不知道是不是需要搭配其他命令。
另外,还有一个疑问,两名沙城主怎么精准判定,脚本怎么识别当前的沙城主,确保只有沙城主才能弹出领取对话框,其他玩家不弹出?我知道沙城主的权限是2,可不知道怎么在脚本里判断玩家权限,避免对话框误弹给非沙城主玩家。
下面我把自己目前的攻城结束相关脚本片段贴出来,方便高手排查,看看怎么修改、添加内容,实现我需要的功能,目前的脚本只能判定攻城结束、确定沙城主,没有后续的奖励对话框和全服提示:
[@AttackSakuraEnd]
#IF
ISCASTLEOWNER 沙巴克
#ACT
SENDMSG 0 【攻城战结束】恭喜沙巴克行会成功守住沙巴克,沙巴克城主获得专属荣誉!
MAPMOVE 3 333 333 沙巴克城主
#ELSEACT
SENDMSG 0 【攻城战结束】沙巴克攻城战圆满结束,暂无行会成功占领沙巴克!
BREAK
就是在这个脚本的基础上,添加“攻城结束5分钟后,沙城主弹出奖励对话框”和“领取后全服彩色提示”,求高手详细指导,一步步说明怎么修改,添加哪些命令,脚本怎么写,最好能贴出完整的修改后脚本,我可以直接复制加载测试。
首先,我想知道,攻城结束后5分钟的定时器,具体怎么设置?是在攻城结束的脚本里添加定时器命令,还是单独写一个定时器脚本,关联攻城结束的触发节点?定时器的命令格式是什么,比如“TIMER 300 @SendRewardDlg”这样的格式对不对,有没有其他需要注意的地方,比如定时器的启动和关闭,避免重复触发。
然后是沙城主奖励对话框的实现,弹出对话框的命令是什么?我试过“DIALOG 奖励对话框”,但不知道对话框的配置怎么写,也不知道怎么关联领取按钮,点击领取后,能触发后续的全服提示,同时给沙城主发放奖励(比如元宝、装备),这里的奖励发放命令,我知道用ADDGAMEGOLD、ADDSKILL这些,但不知道怎么和对话框的领取按钮绑定。
还有,两名沙城主的判定,脚本里怎么写才能精准识别?比如用“CHECKADMINLEVEL 2”判断玩家权限,还是用“ISCASTLEOWNER 沙巴克”判断?如果有两名沙城主,是不是需要循环判断,确保两名沙城主都能弹出对话框,不会遗漏其中一个。
关于全服彩色提示,彩色字体的代码怎么添加?比如红色、黄色、绿色的颜色代码分别是什么,怎么搭配SENDMSG命令使用,比如“SENDMSG 0 【系统】<color=red>%s领取了沙城主奖励,全服同庆!</color>”这样的格式对不对,为什么我试了没效果,是不是引擎不同,颜色代码的格式也不一样?
另外,还有一些细节问题,比如攻城结束后,如果沙城主离线了,5分钟后还会弹出对话框吗?如果沙城主在线,弹出对话框后,长时间不点击领取,对话框会自动关闭吗?领取奖励后,怎么避免重复领取,比如领取一次后,就不能再领取第二次,脚本里怎么添加判断,防止重复领取。
我也查了一些相关的脚本命令,大概知道需要用到定时器(TIMER)、对话框(DIALOG)、全服提示(SENDMSG)、权限判断(CHECKADMINLEVEL)这些命令,但不知道怎么把这些命令组合起来,形成完整的脚本,也不知道命令的顺序和格式,稍微写错一点,加载就会报错,或者不生效。
下面,求高手详细拆解实现步骤,从定时器设置、沙城主判定、对话框配置、领取按钮绑定,到全服彩色提示、奖励发放、防重复领取,每一步都要详细说明,最好能贴出完整的脚本片段,包括攻城结束脚本的修改、定时器脚本的编写、对话框的配置,还有相关命令的解释,让我这样的新手能看懂、能操作。
先说说定时器的设置,我听说定时器脚本需要单独写在Scripts目录下,比如新建一个“Timer.txt”文件,然后在攻城结束的脚本里,添加启动定时器的命令,比如“TIMER 300 @SendRewardDlg”,其中300是5分钟(300秒),@SendRewardDlg是定时器触发后执行的节点,这个思路对不对?如果对,定时器脚本具体怎么写,@SendRewardDlg节点里,怎么添加沙城主判定和弹出对话框的命令。
然后是沙城主判定,脚本里怎么精准找到两名沙城主?比如用“SEARCHPLAYER 沙巴克城主”命令,还是用“CHECKADMINLEVEL 2”判断玩家权限?如果用CHECKADMINLEVEL 2,是不是所有权限为2的玩家,都会弹出对话框,这样就能覆盖两名沙城主?如果有多个权限为2的玩家,会不会误弹,怎么避免这种情况。
对话框的配置,我知道需要在Envir\Dialog文件夹下,新建一个对话框配置文件,比如“RewardDlg.txt”,里面填写对话框的标题、大小、领取按钮的位置和命令,比如按钮绑定@GetReward节点,点击领取后,执行发放奖励和全服提示的命令,这个配置文件具体怎么写,格式是什么,有没有需要注意的地方,比如对话框的ID、按钮的ID,不能和其他对话框冲突。
领取按钮绑定后,@GetReward节点里,需要添加哪些命令?首先是发放奖励,比如给沙城主添加1000元宝、一件专属装备,命令就是“ADDGAMEGOLD 1000”“ADDITEM 沙巴克城主戒指 1”;然后是全服彩色提示,用SENDMSG命令,搭配颜色代码,发送提示信息,比如“【系统】沙巴克城主XXX成功领取沙城主奖励,全服同庆,祝各位玩家游戏愉快!”;最后是防重复领取,比如给沙城主添加一个标记,比如“SET G1 1”,然后在弹出对话框之前,判断G1是否为1,如果为1,就不弹出对话框,避免重复领取。
还有颜色代码的问题,不同引擎的颜色代码是不是不一样?我用的是GOM引擎,彩色字体的代码应该怎么写,比如红色是“<R>”,黄色是“<Y>”,绿色是“<G>”,是不是这样?比如“SENDMSG 0 <R>【系统】</R><Y>沙巴克城主XXX领取了奖励!</Y>”,这样就能显示彩色字体吗?我试了几次都没效果,不知道是代码错了,还是命令格式不对。
另外,攻城结束后,定时器启动,5分钟后触发对话框,如果期间服务器重启,定时器会不会失效?如果会失效,怎么设置定时器,确保即使服务器重启,只要攻城结束了,5分钟后依然能弹出对话框,或者有没有其他方法,不用定时器,也能实现5分钟后弹出对话框。
我也尝试过不用定时器,在攻城结束的脚本里,添加“WAIT 300”,然后添加弹出对话框的命令,但这样会导致服务器进程卡住,期间无法进行其他操作,而且如果攻城结束后,沙城主离线,重新上线后,也不会弹出对话框,这个方法显然不可行,所以必须用定时器脚本,确保5分钟后,不管沙城主是否在线,重新上线后都能弹出对话框。
还有一个疑问,脚本加载后,需要重新启动服务器吗?还是直接在M2控制台重新加载脚本就能生效?我之前修改脚本后,直接重新加载脚本,很多时候都不生效,必须重启服务器才能生效,不知道是不是脚本格式的问题,还是引擎的问题,希望高手能提醒一下,加载脚本的注意事项。
总结一下我的核心需求和疑问,求高手逐一解答,详细指导:
1、 攻城结束5分钟后,两名沙城主界面自动弹出领取奖励对话框,怎么用定时器实现,定时器脚本怎么写,怎么关联攻城结束触发节点?
2、 怎么精准判定两名沙城主,确保只有沙城主弹出对话框,其他玩家不弹出,避免误弹?
3、 奖励对话框的配置文件怎么写,领取按钮怎么绑定,点击领取后怎么触发后续的奖励发放和全服提示?
4、 全服彩色提示怎么实现,GOM引擎的彩色字体代码是什么,怎么搭配SENDMSG命令使用?
5、 怎么设置防重复领取,确保沙城主只能领取一次奖励,不会重复领取?
6、 脚本编写完成后,怎么加载才能生效,需要重启服务器吗,有哪些加载注意事项?
我自己对传奇脚本的了解有限,尤其是定时器和对话框的配置,从来没接触过,折腾了好几天都没成功,只能来求助各位高手,希望能结合我的需求,给出详细的脚本实现步骤,贴出完整的脚本片段和配置文件内容,让我能直接复制使用,最好能解释一下每个命令的作用,让我能理解,以后遇到类似问题,也能自己解决,万分感谢!
补充说明一下,我用的是GOM引擎,服务器端解压路径没有中文、空格,脚本加载路径正确,其他脚本都能正常运行,只有这个沙城主奖励脚本搞不定,排除了路径错误、引擎不兼容的问题,重点就是脚本的编写和命令的搭配。
另外,奖励内容我可以自己修改,重点是实现“5分钟后弹出对话框”和“领取后全服彩色提示”这两个核心功能,只要这两个功能能实现,奖励内容我自己添加就行,希望高手能重点指导这两个功能的脚本实现,步骤详细、通俗易懂,新手能跟着操作。
还有,如果脚本里需要用到变量,比如标记沙城主是否领取奖励,变量的设置和判断怎么写,比如用G变量还是P变量,怎么赋值和判断,这些细节也希望高手能详细说明,避免我因为变量设置错误,导致脚本不生效。
跪求高手支招,帮我解决这个脚本问题,只要能实现需求,不管是修改原有攻城脚本,还是新增定时器、对话框配置,我都愿意尝试,希望能得到详细的指导,万分感谢!

