Board logo

标题: 继续请教新的宏改良方法,请firesun进 [打印本页]

作者: Ming    时间: 2005-6-14 22:01     标题: 继续请教新的宏改良方法,请firesun进

例1:
/cast 自然迅捷
/cast 治疗之触(等级 8)
/script TargetUnit("player"

以上的宏作用是按第1下先施放3分钟冷却的自然迅捷,按第2下就施放治疗之触(等级 8)。这个宏我只能用于给自己连续施放这2个法术,无论我选定的目标是什么,因为按第1次的时候,目标会自动切换成我自己,所以按第2次就给自己施放了治疗了。请问怎么才能改写一下,让作用变为:如果我选定的是敌人或没有选定任何目标,则给自己施放治疗之触(等级 8);如果我选定的是队友或其他同阵营的玩家,则对他施放治疗之触(等级 8)。


例2:
/cast 治疗之触(等级 8)
/script if ( UnitName("target" ~=nil and UnitIsFriend("player","target" ) then SendChatMessage("开始对 %T 施放耗时3.5秒且容易OT的大治疗法术", "EMOTE"; end

以上的宏作用是当我选定友方目标的时候,我按宏键,就会给友方目标施放治疗之触(等级 8)。但是存在缺陷,当我选定的目标是敌人或者没有选定目标的时候,按宏键,无法给自己施放治疗之触(等级 8)。请问怎么才能改写一下,让作用变为:如果我选定的是敌人或没有选定任何目标,则给自己施放治疗之触(等级 8);如果我选定的是队友或其他同阵营的玩家,则对他施放治疗之触(等级 8)。


其实以上2段宏都用了不同的处理目标的脚本,但是都无法两全其美,换用则等于缺陷互换而已。望高人指导。
作者: firesun    时间: 2005-6-14 22:55     标题: 写了一些宏,存在缺陷,请教改良方法

第二个
/cast 治疗之触(等级 8)
/script if (not UnitIsFriend("player", "target" then target("player";end
/script if ( UnitName("target" ~=nil and UnitIsFriend("player","target" ) then SendChatMessage("开始对 %T 施放耗时3.5秒且容易OT的大治疗法术", "EMOTE"; end

其实就是增加一点条件

原理是这样的:

/施放 魔法×××
(说明)-如果这个时候选择了友方角色,那么运行到这里的时候已经施放给队友了。
(说明)-如果这个时候没有选择目标或者选择敌人,那么这个时候相当于鼠标变成选择目标的图标,就好像你没有选择目标的情况下使用恢复魔法那样效果
/script if(目标不是友方 )then 施放给自己
(说明)这个就相当于选择目标的操作,如果是友方的话就不用这个操作了。
作者: 暴走男    时间: 2005-6-15 10:46     标题: 写了一些宏,存在缺陷,请教改良方法

1、一个宏是不允许有2个Cast的。
2、其实给自己加血用SelfCast最高。写宏不够麻烦的
作者: Ming    时间: 2005-6-15 21:00     标题: 写了一些宏,存在缺陷,请教改良方法

谢firesun指点,问题解决了,在国家地理发了2贴也没能得到解答。继续请教新的宏:

以下例子:
/say 月神艾露尼,请以野兽之力赐福 %t。
/script l={1,10,20,30,40,50,60};
/script t=UnitLevel("target";
/script for j=5,1,-1 do if (t>=l[j]-10) then CastSpellByName("野性印记(等级 "..j.."";break;end;end;

宏的作用是按目标的级别施放相应等级的野性印记,但是如果选择了敌对目标或者没有选择目标,则不会对自己施放印记,而且/say也说出了错误的语句。

请问有办法改良成:如果选择了敌对目标或者没有选择目标,则会对自己施放最大等级(由j=5决定)的印记,而且这个时候不会运行/say说话。
作者: Ming    时间: 2005-6-15 21:05     标题: 继续请教新的宏改良方法,请firesun进

1、是的不允许,我那个宏是连按2下来实现作用的
2、写宏主要是想一个键就可以实现对别人或对自己的综合性智能加血,自己加血一个给别人加血一个就不方便了

暴走男在上个帖子中说
引用:
1、一个宏是不允许有2个Cast的。
2、其实给自己加血用SelfCast最高。写宏不够麻烦的

作者: firesun    时间: 2005-6-16 00:54     标题: 继续请教新的宏改良方法,请firesun进

/script l={1,10,20,30,40,50,60};
/script t=UnitLevel("target";
/script if( not UnitIsFriend("player","target" ) then CastSpellByName("野性印记(等级 "..j..""else for j=5,1,-1 do if (t>=l[j]-10) then CastSpellByName("野性印记(等级 "..j.."";break;end;SendChatMessage("月神艾露尼,请以野兽之力赐福 %t。","SAY";end;


试试看吧,或许有一些语法上面的错误,比如多一个少一个括号,或者差个逗号分号什么的

没有办法检查……抱歉,大体应该这样吧




欢迎光临 TGFC Lifestyle (http://club.tgfcer.com/) Powered by Discuz! 6.0.0