|
最近一直有坛友在问一些魔法触发方面的问题!我也在传奇脚本区写了两个技能,由于想象力有限也只能写那么多了!下面我来详细解释一下我对魔法触发的一些见解!也并不一定我说的都是很正确的!欢迎有不同意见的坛友来探讨!首先解释一下魔法触发功能,即使用魔法的同时触发QF功能脚本!在M2说明书里面有提到几个段落!分别是
[@MagSelfFuncX]段自身技能触发!
[@MagTagFuncX]段对目标人物使用时自身触发!
[@MagTagFuncExX]段目标人物技能触发!
[@MagMonFuncX]段目标怪物技能触发
之所以设计这几个段落说明制造引擎的考虑还是比较周到的!因为使用魔法的同时有产生对目标人物的控制自身的控制以及怪物的控制!而我们魔法DB里面一些普通的技能在使用时都会有一个检测存在!例如野蛮冲撞只有等级高的能对等级低的起作用抗拒火环也是如此!而且在安全区之内对目标人物使用不会有效果!那么我们在自己设置魔法触发功能的同时也同样需要一个检测的存在!说到这里这就是好多版本一些自创的技能或者使用了魔法触发功能时产生漏洞的原因!因为无法对目标进行检测!其实这个并不难!因为在对目标使用魔法的同时目标人物或者怪物对自身来说就是一个变量“<$STR(S0)>”!如果知道了这个那么我们就可以利用这个变量来进行一些检测!所以很多坛友一些异想天开的想法不再会是梦想!很有可能会实现下面我会讲一些利用<$STR(S0)>变量检测的一些实例!比方说我们来自行设计一个类似于隔空取物的技能!功能为对目标人物使用时取走目标人物身上的物品!假设DB编号为450我们可以在QF触发脚本里用[@MagTagFuncX]段写如下:
[@MagTagFunc450]
#IF
S0.checkitemw 圣战戒指 1 ;检测目标人物身上是否有此物品
#ACT
S0.takew 圣战戒指 1 ;有的话拿走
give 圣战戒指 1 ;然后再给你一个
goto @MagTagFunc480
break
#IF
S0.checkitemw 圣战项链 1
#ACT
S0.takew 圣战项链 1
give 圣战项链 1
goto @MagTagFunc480
break
#IF
S0.checkitemw 圣战手镯 1
#ACT
S0.takew 圣战手镯 1
give 圣战手镯 1
goto @MagTagFunc480
break
写成这样只要检测到人物身上有其中的任何一样物品都会被统统取走并且转移到你的包裹!当然这只是一个有意思的范例大家千万不要引用到自己的版本里面!因为没加任何的限制我在这里也只是讲技巧而已!说到这里可能有人会问为什么使用[@MagTagFuncX]段,因为也只有这一段变量<$STR(S0)>才会存在![@MagSelfFuncX]段只是在使用的时候自身触发不涉及到攻击目标,简单点儿说吧就是当鼠标放于空白的位置或者自身时才会触发,这一段仅仅可以给使用技能的人物自己来一些功能!例如在使用技能的同时自身获得一定时间的无敌功能或者隐身功能!同样的道理[@MagTagFuncExX]段是对目标人物来触发不涉及到使用技能的人物本身!也就是说这两段都有一定的局限性,不能同时对使用技能人物和目标人物来进行检测!那么我们都知道在只要有一方在安全区使用技能是无效果的!这两段都只能检测到一方是否在安全区不能检测到对方是否在安全区,所以这两段只能进行一些简单的触发!比如只触发给予自身N秒钟无敌时间可以用到[@MagSelfFuncX]段!而[@MagTagFuncExX]段可以搞一些当时没效果过后才会有反应的东西!例如我们来个诅咒术吧!对目标人物使用技能时触发[@MagTagFuncExX]段
[@MagTagFuncEx450]
#IF
INSAFEZONE ;目标人物自己检测是否在安全区
#ACT
#ELSEACT ;如果不在的话
AddTextList .\QuestDiary\数据文件\名单.txt <$USERNAME> ;目标人物把自己名字写入名单
QM登陆脚本如下:
[@Login]
#IF
CHECKNAMELIST ..\QuestDiary\数据文件\名单.txt
#ACT
PkPoint + 10000000
DELNAMELIST ..\QuestDiary\数据文件\名单.txt
这样一来目标人物再上线就会变成大红名!如果你想搞一些复杂的有难度的东西最好不要用这两段,使用[@MagTagFuncX]段多进行一些检测,比如双方等级,攻击力或者魔法值甚至是否穿戴一些特殊物品都可以!如果检测好了使用Hcall功能让目标人物自己去执行会非常简单!这里不举例说明了大家可以去参考我写的两篇!检测到了人物的等级以及职业!说到这里我想到某位坛友发过的一个悬赏贴,如果检测到对方的攻魔道总和小于自己直接将对方杀死! 你觉得还会很难实现吗?当然不会!我没去挣你的素材币是因为你说谁能解决逢年过节的给谁烧香,这不是诅咒人么?我可不想被诅咒!
下面来说[@MagMonFuncX]段,这一段局限性比较大因为对怪物状态检测的命令很少,像检测怪物等级或者是否为弓箭手大刀之类的都没有命令可执行,而让怪物执行的命令更少,不像人物的多,比如想让怪物下多少血,让怪物速度变慢,锁定怪物不许移动这些都没有,有的也仅仅是让怪物转移死亡或者召唤怪物为宝宝!这里要强调一下的是这一段的主体还是人物自己,因为脚本都是让人物来执行的!如果你写成 [@MagMonFuncX]
#IF
#ACT
kill 3
这样的话是人物死亡可不是怪物死亡!检测怪物状态我们可以用到名单把他限定死!大家可以去参考克隆术,只对名单里面有的怪物起作用,没有则不起作用,这样是因为刚刚提到一般默认弓箭手大刀之类也是怪物,如果不加以限制的话便会出BUG!
好了先说这么多吧!大家对魔法技能的想象力都是很丰富的!如果我说的对你有用的话可以自己去尝试实现!我们需要丰富的想象力不能扼杀它!坛友们要是都把理想变为现实的话希望你能来发帖!那样的话站长是不是可以考虑搞个“传奇版本新技能”板块!也算是我们版本库的一大特色!有不同意见的也欢迎你来探讨!因为太晚了有一些没有讲到!像以上讲的对目标人物触发仅仅是指单个的!但是冰咆哮之类的魔法都是有范围攻击的呀!这个我也有一些思路!抽时间再说吧! |
上一篇:如何设置百倍攻击勋章下一篇:Leg引擎致命一击实现的(完整?)三种方法
|