2014-02-23 07:56| 查看: 5164 |作者: 小雪+陈雨
如何写宏 步骤1: 写宏最先要知道的就是技能的ID,将鼠标移到技能上面按住CTRL,会出现一个调试用信息,如下图 由于金山截图机制貌似有点改动,所以图片不是很清楚。 如图所示,有个ID的地方写着561,level 9 这就是技能的ID与等级,在写使用技能的宏时非常有用。 步骤2: IF条件判断: 这是剑三宏里面最常用的语句,其他的语句类型由于不常用则不做另外介绍 if 条件 then 语句 end ; if就是如果的意思,如果 “条件” 则执行 “语句” 如果达不到条件,则直接结束 if 语句块。 扩展格式: if 条件 then 语句 else (if 条件 then) 语句 end 如果 “条件” 则执行 “语句” 如果达不到条件,则执行ELSE的语句,然后结束 if 语句块。 for循环: for 循环变量 = 初值, 终值 do 语句块 end 扩展格式: for 循环变量 = 初值, 终值,每次的增量 do 语句块 end 函数封装: function 函数名(参数列表) 语句块 end 这是比较高级的运用,目的是为了简化宏,在判断同一类型条件的时候会用到,后面会详细介绍。 步骤3: 判断条件以及数值的表达式。 最常用的表达式为and,用于判断多个条件。其次是一些数值的判断例如: < > <= >= = == ~= 双等号是判断,单等号是赋值,最后一个是不等于(可能出现未知错误,尽量少用不等于这个符号),其他的,嗯,不多解释。 步骤4: 思考要做一个什么宏。 例如我想做一个减少键位的宏,将坐忘无我,回春妙手跟猛虎下山这三个技能合并为一个键上,属于装备猛虎下山秘籍后的PVP宏。 首先去寻找技能ID: 猛虎下山 58,1 回春妙手 52,2 坐忘无我 312,X 这里由于坐忘没有满级,可能在战斗中提升等级,而导致宏不能用,那么在下面将提出解决方法。 步骤5: 写一个宏。 写宏的时候尤其要注意大小写的问题以及括号的问题- -,本人多次因为有一个字母本该小写却打成大写后导致运行不成功。 看以下例子: /script N=GetClientPlayer() /script a,b,c=N.GetSkillCDProgress(312,N.GetSkillLevel(312)) /script d,e,f=N.GetSkillCDProgress(58,1) /script g,h,i=N.GetSkillCDProgress(52,2) /script if f==0 then OnUseSkill(58,1) end /script if c==0 then OnUseSkill(312,N.GetSkillLevel(312)) end /script if i==0 then OnUseSkill(52,2) end 第一行是宣告一个变量N作为GetClientPlayer()的代替,大致上就跟数学里的设X一样,属于一种简单的函数封装,为了简化下面的语句。 第二,三,四行为判断技能冷却的语句,由于这里并不是很多,所以不用通过FUNCTION来封装。 第二行有一个获取技能等级的是因为不确定技能等级为多少,如果错误的填一个数字进去,则整个宏作用失效。当然如果知道技能等级则可以像第三,四行一样简化。 这里每行设置的三个数,a到i,其中每行的第二个字母,为该技能的公共冷却,第三个字母为技能冷却。 则:a,d,g为空。b,e,h为技能当前冷却时间,c,f,i为技能总共冷却时间,所以说随便判断一个都是一样的。例如a,b,c是获取天地低昂的调息时间,那么a为空,b的值为剩余秒数乘以16,c的值为90秒乘以16(带秘籍)。 B,C在初始的时候为0,在有技能释放,例如江海凝光,B,C虽然是天地低昂的调息时间判断,却会改变自身的值,B为剩余公共冷却秒数乘以16,C为24。所以说公共调息时间为24除以16=1.5秒。如果使用不占用公共调息的技能时,则B,C值不变。 第五行,如果技能猛虎下山(58)冷却为零,则使用猛虎下山 第六行,如果技能坐忘无我(312)冷却为零,则使用坐忘无我 第七行,如果技能回春妙手(52)冷却为零,则使用回春妙手 步骤6: 检查宏的效果,如果达到预期效果,那么这个宏就算做好了。 如果出错则要看看错误是在哪里,比如说,回春妙手用不出来,那么就检查第四跟七行是否有语句上的基本错误,如果没有再从第一行开始检查。 |