simonw代码@痕记

WOW插件:让ShortKey更好的为你工作(2006.10.4)


        ShortKey使用说明:http://simonw.cnblogs.com/archive/2005/10/20/258271.html

        自ShortKey发布以来得到不少朋友的支持当然也包括疑问,为了让大家更好的使用这个插件,于是写了这个补充说明,更详细其他职业用例会根据更多朋友的实践慢慢补全。也希望更多朋友展示出你们的职业用例。
1.10以后Blz对插件的限制更加严格, SpellStopTargeting 以及Movement系列API被禁止, 会影响用户以前自己的配置
StopCast 参数失效, 请酌情修改.

ShortKey的优势:
1.静态配置易于保存迁移相互交流,免除了你在不同场所游戏的配置痛苦。
2.强大的功能和可扩展性为你提供了一个支持条件,延时,组合,保留目标,脚本等功能的平台,灵活使用你可以以最简单的方式定制出符合你自己习惯的强大操作方式。
3.许多朋友经常在寻找一些绷带,自我施法,施法后保留目标,装备切换,脱衣服,无需固定包中位置使用物品,组合延时施法等等常用功能,而使用ShortKey可以轻松实现。
4.对界面元素的鼠标动作绑定使你完全可以放弃那些庞大复杂的治疗插件.

ShortKey二次开发指南:
1.API:SK_DoAction,执行一个动作包括装备,物品,技能使用以及自定义动作。参数args需是这样的一个数据结构Array = {Type = Type.SkillType, Name = "SkillName", Rank = "N", ToggleBuff = "BuffName", Target = "Unit", StopCast = false, HoldTarget = true, Condition = {...}, Parameters = {...}}
API:SK_DoActions,执行一个动作组,可以任意设置延时,循环次数,循环间隔,多动作映射等参数。参数args需要为ShortKey配置文件中的一个组合动作的数据结构。
2.Action与Condition的自定义扩展可以添加到ShortKeyExtLib.lua文件中单独发布。
3.延时库的应用,其中延时库所处理的数据结构为
array = {
    [0] = {Cycle = N, Interval = N},
    [N] = {"FunctionName", {"arg1","arg2",...}, DelayTime, KeyPress},...}
调用方式为
SK_Delay_SetTable(array);--设置延时表
SK_Delay_Register();--注册到延时引擎,交由引擎执行
如果你的数据结构想使用ShortKey的延时库,需要重写ShortKey.lua文件中--Read Delay Data Structure Function--注释以下的5个函数来读取你的数据结构。      

鼠标绑定示例:
对队友栏实现不同的鼠标动作.
SK_Config_Frame = {PartyMemberFrame1, PartyMemberFrame2, PartyMemberFrame3, PartyMemberFrame4}
SK_Config_FrameEvent = {"PartyMemberFrame_OnClick"}
SK_Config_MouseSpell = {
 --牧师--
 [SK_Constant_Class_PRIEST] = {
  ["LeftButton"]  = {Name = "快速治疗", Rank = "7"},  
  ["LeftButton_Alt"] = {Name = "强效治疗术", Rank = "4"},
  ["LeftButton_Shift"] = {Name = "TargetUnit"},
  ["LeftButton_Control"] = {Name = "真言术:韧", Rank = "6"},

  ["RightButton"]  = {Name = "真言术:盾", Rank = "10"},
  --["RightButton_Alt"] = 'PartyDropDown',
  ["RightButton_Shift"] = {Name = "AssistUnit"},
  ["RightButton_Control"] = {Name = "防护暗影", Rank = "3"},

  ["MiddleButton"] = {Name = "恢复", Rank = "9"},
  ["MiddleButton_Alt"] = {Name = "复活术", Rank = "1"},
 },
}

示例:
1.组合技能,当短暂能量护符有效时施放短暂能量+痛
[0] = {Name = "短暂能量+痛", Condition = {Name = Condition.IsItemUseable, State = true, Parameters = {"短暂能量护符"}}},  
[1] = {Type = Type.Equip, Name = "饰品1"},   
[2] = {Type = Type.Spell, Name = "暗言术:痛", Rank = "8", Target = "target"},  

2.组合技能,切换鱼杆和法杖然后跳起来说话
[0] = {Name = "装备切换"},
[1] = {Type = Type.Action, Name = Action.SwitchEquip, Parameters = {"主手", "奥金钓鱼竿", "细碎法杖"}},
[2] = {Type = Type.Action, Name = Action.Jump},
[3] = {Type = Type.Action, Name = Action.Say, Parameters = {"我换,我换,我换换换!"}},

3.组合技能,生命小于75%的时候吃面包,魔法小于80%的时候喝水
[0] = {Name = "面包+水"},  
[1] = {Type = Type.Item, Name = "晨露酒",Condition = {Name = Condition.IsMpInRange, State = true, Parameters = {"player", "<", "0.8"}}}, 
[2] = {Type = Type.Item, Name = "面包",Condition = {Name = Condition.IsHpInRange, State = true, Parameters = {"player", "<", "0.75"}}}, 

4.法术技能,当身没有恢复buff的时候施放恢复魔法
[1] = {Name = "恢复", Rank = "9", Target = "player", HoldTarget = true, Condition = {Name = Condition.IsBuffUp, State = false, Parameters = {"player", "Renew"}}},

5.组合技能,每隔3秒说话一次
[0] = {Name = "延时倒计数"},   
[1] = {Type = Type.Action, Name = Action.Say, Parameters = {"5"}, Delay = 3},
 [2] = {Type = Type.Action, Name = Action.Say, Parameters = {"4"}, Delay = 3},
[3] = {Type = Type.Action, Name = Action.Say, Parameters = {"3"}, Delay = 3},
[4] = {Type = Type.Action, Name = Action.Say, Parameters = {"2"}, Delay = 3},
[5] = {Type = Type.Action, Name = Action.Say, Parameters = {"1"}, Delay = 3},

6.组合技能,脚本命令
[0] = {Name = "Script演示"},
[1] = {Type = Type.Action, Name = "", Script = "DEFAULT_CHAT_FRAME:AddMessage(\"Script演示....\")"},

7.物品使用,自我帮绷带同时保留当前目标不丢失
[1] = {Name = "绷带", Target = "player", HoldTarget = true, StopCast = false},

8.组合技能,脱衣舞(由霜之嫁衣朋友提供)
[0] = {Name = "装备切换-脱衣舞"},
[1] = {Type = Type.Action, Name = Action.Say, Parameters = {"马上就是帽子了!"},Delay=1},
[2] = {Type = Type.Action, Name = Action.SwitchEquip, Parameters = {"头部", "预言头饰"},Delay=1},
[3] = {Type = Type.Action, Name = Action.Say, Parameters = {"马上就是项链了!"},Delay=1},
[4] = {Type = Type.Action, Name = Action.SwitchEquip, Parameters = {"颈部", "凯维恩的珠宝护符"},Delay=1},
[5] = {Type = Type.Action, Name = Action.Say, Parameters = {"马上就是披肩了!"},Delay=1},
[6] = {Type = Type.Action, Name = Action.SwitchEquip, Parameters = {"肩部", "鬼雾衬肩]"},Delay=1},
[7] = {Type = Type.Action, Name = Action.Say, Parameters = {"马上就是我的小披风了!"},Delay=1},
[8] = {Type = Type.Action, Name = Action.SwitchEquip, Parameters = {"背部", "野性之皮"},Delay=1},
[9] = {Type = Type.Action, Name = Action.Say, Parameters = {"关键时刻来拉.....!"},Delay=1},
[10] = {Type = Type.Action, Name = Action.SwitchEquip, Parameters = {"胸部", "信仰外衣"},Delay=1},
[11] = {Type = Type.Action, Name = Action.Say, Parameters = {"我的手镯!"},Delay=1},
[12] = {Type = Type.Action, Name = Action.SwitchEquip, Parameters = {"手腕", "庄严护腕"},Delay=1},
[13] = {Type = Type.Action, Name = Action.Say, Parameters = {"靓女也有武器!"},Delay=1},
[14] = {Type = Type.Action, Name = Action.SwitchEquip, Parameters = {"主手", "银色十字军"},Delay=1},
[15] = {Type = Type.Action, Name = Action.Say, Parameters = {"远程武器...厉害吧!!!"},Delay=1},
[16] = {Type = Type.Action, Name = Action.SwitchEquip, Parameters = {"远程", "治疗之烁星魔棒"},Delay=1},
[17] = {Type = Type.Action, Name = Action.Say, Parameters = {"现在是慢慢是我的手套了!!"},Delay=1},
[18] = {Type = Type.Action, Name = Action.SwitchEquip, Parameters = {"手", "预言手套"},Delay=1},
[19] = {Type = Type.Action, Name = Action.Say, Parameters = {"腰带松了!大家屏住呼吸!"},Delay=1},
[20] = {Type = Type.Action, Name = Action.SwitchEquip, Parameters = {"腰部", "预言束带"},Delay=1},
[21] = {Type = Type.Action, Name = Action.Say, Parameters = {"裤子 !!裤子 !裤子!!!"},Delay=1},
[22] = {Type = Type.Action, Name = Action.SwitchEquip, Parameters = {"腿部", "预言短裤"},Delay=1},
[23] = {Type = Type.Action, Name = Action.Say, Parameters = {"小金莲....."},Delay=1},
[24] = {Type = Type.Action, Name = Action.SwitchEquip, Parameters = {"脚", "龙骑兵长靴"},Delay=1},
[25] = {Type = Type.Action, Name = Action.Say, Parameters = {"靠!干吗呢?醒醒,我们只劫财不劫色!戒指取下来~快点!"},Delay=1},
[26] = {Type = Type.Action, Name = Action.SwitchEquip, Parameters = {"手指1", "碧绿烈焰戒指"},Delay=1},
[27] = {Type = Type.Action, Name = Action.Say, Parameters = {"还有一个呢??"},Delay=1},
[28] = {Type = Type.Action, Name = Action.SwitchEquip, Parameters = {"手指2", "魔法导师的封印"},Delay=1},
[29] = {Type = Type.Action, Name = Action.Say, Parameters = {"居然忘记了耳环!也交出来!!"},Delay=1},
[30] = {Type = Type.Action, Name = Action.SwitchEquip, Parameters = {"饰品2", "埃雷萨拉斯皇家徽记"},Delay=1},
[31] = {Type = Type.Action, Name = Action.Say, Parameters = {"55555大哥!你把我的财产都拿光了!!我怎么活呀...干脆你把我也要了吧!!!","emote"},Delay=2},

9.组合技能,锁定PVP目标,让目标不在丢失
[0] = {Name = "锁定PVP目标"},
[1] = {Type = Type.Action, Name = Action.LockTarget},

10.组合技能,复活并且随机喊话(由霜之嫁衣朋友提供)
[1] = {
[0] = {Name = "复活1"},
[1] = {
Type = Type.Spell, Name = "复活术", Rank = "5",Target = "target",StopCast = false
},
[2] = {Type = Type.Action, Name = "", Script = "SAY={\"%t,乖,快起来~姐姐给你吃糖~\",\"%t,起来吧起来吧,不要赖皮~\",\"%t就要复活了,大家开不开心丫~ %t答:开心~[嫁衣]是最棒的~oh~yeah~\",\"%t,猪撞树上,你撞猪上了,起来起来~\",\"扑在%t的身上开始人工呼吸。%t睁开了美丽的双眼,饱含热泪的扑进[嫁衣]的怀抱大声说:[嫁衣]你救了我,无以为报,让我嫁给你吧\",\"%t,太阳都晒PP了,便便啦~\",\"感谢CCTV,MTV,SMG,上海文广,星空卫视,无线卫视。。。和一直支持,热爱我的FANS给我这次复活%t的机会。%t~以至高无上滴偶的名义,站起来,为偶战斗吧!\",\"请求%t为我冲值点卡,愿意的请点同意\"};"},
[3] = {Type = Type.Action, Name = "", Script = "SendChatMessage(SAY[math.random(1,9)],\"emote\");"},
},

passarella提供的猎人配置:

--猎人--
        [SK_Constant_Class_HUNTER] = {
                [1] = {
                        [0] = {Name = "假死+跳跃+冰冻陷阱", HoldTarget = true},
                        [1] = {Type = Type.Spell, Name = "假死"},
                        [2] = {Type = Type.Action, Name = Action.Jump},
                        [3] = {Type = Type.Spell, Name = "冰冻陷阱", Rank = "3"},
                        [4] = {Type = Type.Action, Name = Action.Say, Parameters = {"敌人靠近我了9999我!"}},
                },
                [2] = {
                        [0] = {Name = "跳跃+摔绊+反击", HoldTarget = true},
                        [1] = {Type = Type.Spell, Name = "猛禽一击", Rank = "8", Target = "target"},
                        [2] = {Type = Type.Action, Name = Action.Jump},
                        [3] = {Type = Type.Spell, Name = "摔绊", Rank = "3", Target = "target",
                                Condition = {Name = Condition.IsDebuffUp, State = false, Parameters = {"target", "Ability_Warrior_Challange"}}
                        },
                        [4] = {Type = Type.Spell, Name = "反击", Rank = "3", Target = "target",
                                Condition = {Name = Condition.IsDebuffUp, State = false, Parameters = {"target", "Ability_Warrior_Challange"}}
                        },
                        [5] = {Type = Type.Spell, Name = "猫鼬撕咬", Rank = "3", Target = "target"},
                },
                [3] = {
                        [0] = {Name = "急速射击+魔暴龙之怒", HoldTarget = true},
                        [1] = {Type = Type.Equip, Name = "饰品1"},
                        [2] = {Type = Type.Spell, Name = "急速射击", Rank = "3", Target = "player"},
                        [3] = {Type = Type.Spell, Name = "影遁"},
                        [4] = {Type = Type.Spell, Name = "瞄准射击", Rank = "6", Target = "target"},
                },
                [4] = {
                        [0] = {Name = "逃脱L3+冰冻陷阱", HoldTarget = true},
                        [1] = {Type = Type.Spell, Name = "逃脱", Rank = "3", Target = "target"},
                        [2] = {Type = Type.Spell, Name = "冰冻陷阱", Rank = "3"},
                },
                [5] = {
                        [0] = {Name = "联盟徽章换魔暴龙眼"},
                        [1] = {Type = Type.Action, Name = Action.SwitchEquip, Parameters = {"饰品1", "联盟徽章", "魔暴龙眼"}},
                        [2] = {Type = Type.Action, Name = Action.SwitchEquip, Parameters = {"远程", "觅血者", "血木猎弓"}},
                        [3] = {Type = Type.Action, Name = Action.Jump},
                        [4] = {Type = Type.Action, Name = Action.Say, Parameters = {"我换,魔暴龙眼,联盟徽章!"}},
                },
                [6] = {
                        [0] = {Name = "冰冻陷阱", HoldTarget = true},
                        [1] = {Type = Type.Spell, Name = "冰冻陷阱", Rank = "3"},
                },
                [7] = {
                        [0] = {Name = "魔法甜面包+魔法晶水"},               
                        [1] = {
                                Type = Type.Item, Name = "魔法晶水",
                                Condition = {Name = Condition.IsMpInRange, State = true, Parameters = {"player", "<", "0.8"}}
                        },       
                        [2] = {
                                Type = Type.Item, Name = "魔法甜面包",
                                Condition = {Name = Condition.IsHpInRange, State = true, Parameters = {"player", "<", "0.75"}}
                        },                               
                        [3] = {Type = Type.Spell, Name = "影遁"},
                },
                [8] = {
                        [0] = {Name = "魔法甜面包+魔法苏打水"},               
                        [1] = {
                                Type = Type.Item, Name = "魔法苏打水",
                                Condition = {Name = Condition.IsMpInRange, State = true, Parameters = {"player", "<", "0.8"}}
                        },       
                        [2] = {
                                Type = Type.Item, Name = "魔法甜面包",
                                Condition = {Name = Condition.IsHpInRange, State = true, Parameters = {"player", "<", "0.75"}}
                        },                               
                        [3] = {Type = Type.Spell, Name = "影遁"},
                },
                [9] = {
                        [0] = {Name = "影遁"},                                       
                        [1] = {Type = Type.Spell, Name = "影遁"},
                },
                [10] = {
                        [0] = {Name = "联盟徽章", HoldTarget = true},
                        [1] = {Type = Type.Equip, Name = "饰品1"},
                },
                [11] = {
                        [0] = {Name = "快速暗影反射器", HoldTarget = true},
                        [1] = {Type = Type.Equip, Name = "饰品1"},
                },
        },



FAQ:

1.保存config文件出现乱码怎么办?
这是由于保存文件的格式不正确,应该将文件保存为utf-8或者unicode的格式。

2.如何准确获取技能名称?
中文技能名称如果把握不准确可以在wow中打开宏设置编辑一个宏,按住shift点击你法术书中的技能就会出现中文名,复制下来即可。

3.如何获取buff、debuff的英文名称?
在ShortKey默认配置中有组合技能“查看目标buff/debuff”一项,绑定按键后选中目标按键即可查看。从末尾取最后一个单词即可。

4.我的script为什么不能执行?
需要把你的脚本复制到Script="...your script"中,其中你的脚本中凡是带"的都要替换成\" 不支持宏形如/say这样的代码。

5.延时功能合法么,为什么我的技能无法延时?
延时是利用wow api提供的合法功能实现的,因此可以放心使用。其实很多插件支持延时功能,例如著名的flexbar,Cosmos,不少进度条插件等等。延时指令对所有魔法技能无效,这是wow游戏的限制。

posted on 2005-10-31 14:25 simonw 阅读(13299) 评论(55)  编辑 收藏 所属分类: World Of Warcraft

评论

#1楼  2005-11-01 12:45 colortear [未注册用户]

呵呵。不错,现在说明档也很全面了。支持!   回复  引用    

#2楼  2005-11-10 21:31 pass [未注册用户]

猎人的'急速射击'这个buff(猎人学习来的技能,当激活时候,加快自己射击速度,持续20秒,需要5分钟冷却,不占用公共DC)
+
猎人职业任务奖励的'魔暴龙眼'这个饰品装备(当装备在身上时候,点击激活后buff叫'魔暴龙之怒',作用是增加自己远程攻击强度150,持续20秒,需要5分钟冷却,不占用公共DC)

2个如何一键绑定激活?怎么配置?

  回复  引用    

#3楼  2005-11-11 10:00 pass [未注册用户]

可否将buff和动作绑定?比如跳跃同时射击
或者向后同时射击,假设目标是敌人   回复  引用    

#4楼  2005-11-11 10:03 pass [未注册用户]

--组合技能3 假死+3级冰冻陷阱 PVP用时候狂按绑定键
SK_ComboSkills[3][1] = ShortKey_CreateComboInfo("SPELL", "假死", "", "", "");
SK_ComboSkills[3][2] = ShortKey_CreateComboInfo("SPELL", "冰冻陷阱", "3", "", "");

--组合技能4 摔拌+反击+猛禽一击8级 PVP用时候狂按绑定键
SK_ComboSkills[4][1] = ShortKey_CreateComboInfo("SPELL", "摔拌", "3", "ENEMY", "");
SK_ComboSkills[4][2] = ShortKey_CreateComboInfo("SPELL", "反击", "3", "ENEMY", "");
SK_ComboSkills[4][3] = ShortKey_CreateComboInfo("SPELL", "猛禽一击", "8", "ENEMY", "");

--组合技能5 急速射击+魔暴龙之怒 饰品魔暴龙眼 要求饰品1上已经装备魔暴龙眼 且2者已经冷却
SK_ComboSkills[5][1] = ShortKey_CreateComboInfo("EQUIP", "Trinket0Slot", "", "", "");
SK_ComboSkills[5][2] = ShortKey_CreateComboInfo("SPELL", "急速射击", "", "SELF", "");   回复  引用    

#5楼  2005-11-11 16:28 pass [未注册用户]

除了把'摔绊'写成'摔拌'外,其他的都能用。。。。

希望尽快完成动作和Buff物品装备等的一键绑定

早日成功1   回复  引用    

#6楼  2005-11-30 18:23 霜之嫁衣 [未注册用户]

可否加一个condition 如果没有目标 则 默认目标就是自己   回复  引用    

#7楼 [楼主] 2005-11-30 19:45 simonw      

利用已有函数即可实现
Condition = {Name = "UnitIsUnit", State = true, Parameters = {"player","target"}}, 目标是自己时条件成立。然后在你的动作中target="player"。同样反过来在做个动作实现target="target"。
不过就我个人观点始终认为“如果没有目标 则 默认目标就是自己”这样的操作很不可取,目标不固定极大影响判断力,本来想对自己施放的结果紧张不小心点了目标就坏事了。   回复  引用  查看    

#8楼  2005-12-01 14:15 BICT [未注册用户]

好象很强大,我从某帖追踪到这来了~
我不太会,只想求一个配置,不知道行不行

能不能象暗黑那样,
本来双手武器,按个键换上单手武器加盾
再按同一个键既可换回来,而且武器/副手的具体配置能很容易更改
在包的位置也不需要固定(因为双手是1个物品单手加盾是2个,而物品栏很容易乱的)

非常感谢!!   回复  引用    

#9楼 [楼主] 2005-12-02 00:09 simonw      

[0] = {Name = "装备切换"},
[1] = {Type = Type.Action, Name = Action.SwitchEquip, Parameters = {"副手", "你的盾"}},
[2] = {Type = Type.Action, Name = Action.SwitchEquip, Parameters = {"主手", "你的单手武器", "你的双手武器"}},
位置无需固定,一切配置修改都在配置文件中,更改后需要从新载入UI

  回复  引用  查看    

#10楼  2005-12-02 01:14 霜之嫁衣 [未注册用户]

/施放 真言术:盾(等级 10)
/script if( SpellIsTargeting() ) then SpellTargetUnit("player"); end;
这个是我写游戏里面的宏!!
能实现我说的要求 !
不晓得怎么改?

我牧师技能放了30个到自定义技能里面了 只能显示25个技能 后面5个怎么都不显示名字 只显示你xml里面定义的"自定义技能"... 当然 你里面几个文件我都添加了 数组添加 xml添加 config添加.....   回复  引用    

#11楼 [楼主] 2005-12-02 21:00 simonw      

to 霜之嫁衣
目前实现你这样的要求稍微麻烦些需要2个组合动作,下个版本我会加入直接支持script的功能。请勿一贴多发,谢谢配合。

to szlee
我不是很了解防御型这个技能,不知是否使用正确,你可以先写出宏的施放方式我看看   回复  引用  查看    

#12楼  2005-12-02 22:49 szlee [未注册用户]

问一下斑主。
ShortKey是否可以在语句中加入“按键符号”
比如宝宝的防御型是按: “shift+F4" 那语句中是否可以怎么写
[0] = {Name = "收宝宝+假死+冰冻陷阱", HoldTarget = true},
[1] = {Type = Type.Spell, Name = "shift+F4"},
[2] = {Type = Type.Spell, Name = "假死"},
[3] = {Type = Type.Spell, Name = "冰冻陷阱", Rank = "3"},
我只是这中想法,可以语句不通!就想问可不可以!
可以的话,
[1] = {Type = Type.Spell, Name = "shift+F4"}, 该怎么写1多谢1
很感谢你的作品,期待下个版本!
  回复  引用    

#13楼  2005-12-02 22:56 szlee [未注册用户]

说明一下:比如按”shift+F4“就是收宝宝回来的动作。   回复  引用    

#14楼 [楼主] 2005-12-02 22:58 simonw      

to szlee
不能用“按键符号”,至少需要知道使用宏该如何写才行的。
  回复  引用  查看    

#15楼  2005-12-03 14:06 霜之嫁衣 [未注册用户]

to:simonw
谢谢你的回复!!期待你的下个产品!!同时希望加入在代码中多加入一点注释 :)   回复  引用    

#16楼  2005-12-07 12:46 se7en [未注册用户]

请问如果是法师开奥术能量的同时使用饰品短暂能量护符,这个应该怎么编写,谢谢   回复  引用    

#17楼 [楼主] 2005-12-07 15:57 simonw      

[0] = {Name = "短暂能量+奥术能量},
[1] = {Type = Type.Equip, Name = "饰品1"},
[2] = {Type = Type.Spell, Name = "奥术能量"},
在第一个饰品位置放置短暂能量护符   回复  引用  查看    

#18楼  2005-12-08 14:30 se7en [未注册用户]

谢谢你的回复 愿你的产品越做越好   回复  引用    

#19楼  2005-12-11 07:00 霜之嫁衣 [未注册用户]

[6] = { [0] = {Name = "复活2"},
[1] = {Type = Type.Action, Name = Action.Say, Parameters = {"复活=【%t】=在十秒后~同意=【XX】=是黑手的点确定,不同意的点取消~"}},
[2] = {Type = Type.Spell, Name = "复活术", Rank = "5",Target = "target",StopCast = false},
[3] = {Type = Type.Action, Name = Action.Say, Parameters = {"=【%t】=点了确定!同意楼上的说法"}, Delay=10},
[4] = {Type = Type.Action, Name = Action.Say, Parameters = {"给了=【%t】=一个飞吻!真有见地!!","emote"}, Delay = 5},
[5] = {Type = Type.Action, Name = Action.Say, Parameters = {"=【%t】=害羞的说!别吻我,我只是诚实了一点点而已罢了....."}, Delay = 5},
},   回复  引用    

#20楼  2005-12-11 07:01 霜之嫁衣 [未注册用户]

其实用script 结合 Shortkey 可以实现很多更有趣的功能!!希望大家都把自己的心得发在这里!!共享下   回复  引用    

#21楼  2006-01-08 13:24 zzzzxxxx [未注册用户]

我的角色是牧师,用过SHORTKEY后,只能给自己+盾,不能给别人+盾,删掉SHORTKEY还是如此,怎么解决啊?   回复  引用    

#22楼  2006-01-08 15:27 zzzzxxxx [未注册用户]

.....现在自己好了,不知道为什么......谢谢   回复  引用    

#23楼  2006-01-09 15:14 HOOHOO [未注册用户]

怎么把say改成yell,喊话比较好点,我直接改掉好像进游戏就不行了   回复  引用    

#24楼  2006-02-05 09:31 yooohk [未注册用户]

你好呀,我是"同僚"ShortKey刚上手,有点问题,想请教..
如能答复就太感谢了...
2个占用公共时间的技能是否能通过延时(Delay)来完成按键绑定呢.我举个例子,比如战士的"狂暴姿态"和"防御姿态":我的战士原想在狂暴姿态施放"狂暴之怒",然后切换到防御姿态施放"血性狂暴",如下
[0] = {Name = "怒气冲天"},
[1] = {Type = Type.Spell, Name = "狂暴姿态"},
[2] = {Type = Type.Spell, Name = "狂暴之怒",Delay=0.1},
[3] = {Type = Type.Spell, Name = "防御姿态",Delay=1},
[4] = {Type = Type.Spell, Name = "血性狂暴"},
,但我在使用时候,在狂暴姿态就释放了"血性狂暴"(这个本来想在防御姿态下使用的),而且是先释放的"血性狂暴"才到施放"狂暴之怒,我的问题是1.延时(Delay)在"狂暴姿态"和"防御姿态"切换上没效果,2."狂暴之怒"和"血性狂暴"好象也没效果,没有先后了~如果有效果,应该如何设计呢   回复  引用    

#25楼 [楼主] 2006-02-05 10:43 simonw      

to hoohoo
wow api没有yell这个函数,用法是这样的SendChatMessage( msg, "YELL", Language)

to yooohk
有公共cd的技能无法延时,这是游戏的限制   回复  引用  查看    

#26楼  2006-02-06 15:23 风御骋 [未注册用户]

我想请教一下,我是DLY 如何实现 一键 让自己给变会人形态,释放回春 ,再变回以前形态,并且保持先前选定目标不变 ?谢谢   回复  引用    

#27楼  2006-02-07 04:26 yyk444 [未注册用户]

Type = Type.Action, Name = Action.Say, Parameters = {"1"}
请问我只是想在聊天fram上增添一个一句只有我自己能看见的话 应该怎么办,我不想用say 或者yell等大家都能看到的话 这样我就能计算猎人照明蛋的时间,然后在聊天框显示一句我自己才能看到的话没,主要用与和猎人决斗 谢谢   回复  引用    

#28楼  2006-02-07 04:33 yyk444 [未注册用户]

还有盗贼的赞达拉英雄勋章饰品只能用Type = Type.Equip, Name = "饰品2"
如果换成Type = Type.Equip, Name = "赞达拉英雄勋章" 就不可以了
  回复  引用    

#29楼  2006-02-10 00:45 阿达 [未注册用户]

[0] = {Name = "火球术+寒冰箭"},
[1] = {Type = Type.Spell, Name = "火球术", Rank = "11", Target = "target"},
[2] = {Type = Type.Spell, Name = "寒冰箭", Rank = "1", Target = "target", StopCast = false,Delay = 3.5},

为什么只出火球术~后面就跟不出冰箭啊~高手指点   回复  引用    

#30楼  2006-02-10 18:25 Ashama [未注册用户]

to 阿达,风御骋:
两个有共工冷却的技能间不能延时,这个是系统的限制
如果通过第三方实现就是外挂了。。

to yyk444:
用这个可以实现
/script DEFAULT_CHAT_FRAME:AddMessage("猎人照明弹已经发射!");

  回复  引用    

#31楼  2006-02-11 08:34 maya [未注册用户]

不知道可不可以实现猎人放风筝的宏?   回复  引用    

#32楼  2006-02-11 21:06 anyr [未注册用户]

{Type = Type.Action, Name ="", Script ="TurnLeftStart()"}, 执行起来不能停止该动作而进行下一语句<{Type = Type.Action, Name ="", Script ="TurnLeftStop()"},>的动作,如果改成{Type = Type.Action, Name ="", Script ="TurnLeftStart()" ,Delay = 1}, 则本语句不执行   回复  引用    

#33楼 [楼主] 2006-02-12 14:20 simonw      

to anyr
行动及大多数施法指令都必须通过按键才能执行,这是游戏的限制,你无法按一个键执行多个这样的动作,以上你说的情况是正常的,必须使用序列动作的keypress参数   回复  引用  查看    

#34楼  2006-02-12 19:17 yyk444 [未注册用户]

[6] = {
[0] = {Name = "猎人照明弹", Cycle = 2, Interval = 5, KeyPress = false, Delay = 30},
[1] = {Type = Type.Action, Name = Action.Say, Parameters = {"1"}},

},   回复  引用    

#35楼  2006-02-12 21:10 anyr [未注册用户]

还是不能正确的使用 回复 5:ok 下面的语句 怎样写才正确.能指导一下吗?
[0] = {Name = "tiaoshe", HoldTarget = true},
[1] = {Type = Type.Action, Name = Action.Jump},
[2] = {Type = Type.Action, Name ="", Script ="TurnLeftStart()", KeyPress =true, Delay = 0.4},
[3] = {Type = Type.Action, Name ="", Script ="TurnLeftStop()", KeyPress =true},
[4] = {Type = Type.Spell, Name = "xxxxxx", Rank = "3", Target = "target"},   回复  引用    

#36楼 [楼主] 2006-02-12 22:34 simonw      

[0] = {Name = "tiaoshe",KeyPress =true},
[1] = {Type = Type.Action, Name = Action.Jump},
[2] = {Type = Type.Action, Name ="TurnLeftStart", Delay = 1},
[3] = {Type = Type.Action, Name ="TurnLeftStop", Delay = 1},
[4] = {Type = Type.Spell, Name = "xxxxxx", Rank = "3", Target = "target",HoldTarget = true,Delay = 1},

意思是每隔1秒会自动将列表中的1个动作按顺序绑定到动态动作按键上,你必须按下才会执行,所以你需要狂按。你这样的组合动作就不要指望按一下键就全执行了,再合法情况下任何手段都无法做到。   回复  引用  查看    

#37楼  2006-02-17 11:11 哇哈哈 [未注册用户]

[0] = {Name = "猎人印记+BB攻极+奥术射击", HoldTarget = true},
[1] = {Type = Type.Spell, Name = "猎人印记", Rank = "8", Target = "target"},
[2] = {Type = Type.Action, Name = BB攻极},
[3] = {Type = Type.Spell, Name = "奥术射击", Rank = "6", Target = "target",

请问各位大吓我这个能实现吗????   回复  引用    

#38楼  2006-02-19 10:03 生理盐水 [未注册用户]

[4] = {
[0] = {Name = "极品组合技能"},
[1] = {Type = Type.Spell, Name = "冰霜新星", Rank = "4"},
[2] = {Type = Type.Spell, Name = "冰锥术", Rank = "5" },
[3] = {Type = Type.Spell, Name = "火焰冲击", Rank = "7", Target = "target"},
[4] = {Type = Type.Spell, Name = "气定神闲"},
[5] = {Type = Type.Spell, Name = "寒冰箭", Rank = "10", Target = "target"},
},

为什么气定羊就一下能自动放出来,为什么我的这个就不能呢?   回复  引用    

#39楼  2006-02-20 09:05 青水近蓝 [未注册用户]

请教下:

[6] = {
[0] = {Name = "喊开怪", HoldTarget = true},
[1] = {Type = Type.Action, Name = Action.Say, Parameters = {"要开怪了!大家准备好咯,请在<<<三破甲>>>后攻击"}, Delay = 1},
[2] = {Type = Type.Action, Name = Action.Say, Parameters = {"倒数三秒。。。 3"}, Delay = 1},
[3] = {Type = Type.Action, Name = Action.Say, Parameters = {"。。。2"}, Delay = 1},
[4] = {Type = Type.Action, Name = Action.Say, Parameters = {"。。1 。。开怪"}, Delay = 1},
},

如果改成在 大喊 或者 团队 模式说话   回复  引用    

#40楼  2006-02-20 11:24 青水近蓝 [未注册用户]

请教下:

[6] = {
[0] = {Name = "喊开怪", HoldTarget = true},
[1] = {Type = Type.Action, Name = Action.Say, Parameters = {"要开怪了!大家准备好咯,请在<<<三破甲>>>后攻击"}, Delay = 1},
[2] = {Type = Type.Action, Name = Action.Say, Parameters = {"倒数三秒。。。 3"}, Delay = 1},
[3] = {Type = Type.Action, Name = Action.Say, Parameters = {"。。。2"}, Delay = 1},
[4] = {Type = Type.Action, Name = Action.Say, Parameters = {"。。1 。。开怪"}, Delay = 1},
},

如何改成在 大喊 或者 团队 模式说话
我将Action.Say改成Yell没用,请园主详细说下,谢谢   回复  引用    

#41楼  2006-02-23 09:27 wsmyth [未注册用户]

我法师想实现这么一动作:

用闪现术后,扭头180度,然后放10级冰箭术

请问怎样实现???

谢谢!!   回复  引用    

#42楼  2006-02-23 10:46 木子鱼鱼 [未注册用户]

首先说下,我是狂暴战士,raid时双持做输出。有时侯遇到突发情况,需要换上盾抗怪。盾是副手物品,换上直接在副手位。这不是什么难题。
我的问题是,在不改变主手武器的情况下,如何一键实现 “盾>副手武器” “副手武器>盾” 的切换。   回复  引用    

#43楼  2006-03-08 13:37 lpyedge [未注册用户]

[0] = {Name = "偷袭+冲动+闪避"},
[1] = {Type = Type.Spell, Name = "偷袭", Target = "target"},
[2] = {Type = Type.Spell, Name = "闪避"},
[3] = {Type = Type.Spell, Name = "冲动"},

为什么只能实现偷袭和闪避却不能冲动呢?   回复  引用    

#44楼  2006-11-15 23:42 liujia [未注册用户]

如何设置“自定义技能”?   回复  引用    

#45楼  2007-03-04 00:43 slamfinger [未注册用户]

如何设置法师的鼠标动作,在哪个文件中修改?
--法师鼠标动作--
[SK_Constant_Class_PRIEST] = {
["LeftButton"] = {Name = "寒冰箭", Rank = "11"},
["RightButton"] = {
[6] = {
[0] = {Name = "短暂能量+冰霜新星"},
[1] = {Type = Type.Equip, Name = "饰品1"},
[2] = {Type = Type.Spell, Name = "冰霜新星", Rank = "4"},
},
},
},   回复  引用    

#46楼  2007-04-05 19:45 xuxukkk [未注册用户]

怎么设置组合技能?这些要写在哪里啊?




1.组合技能,当短暂能量护符有效时施放短暂能量+痛
[0] = {Name = "短暂能量+痛", Condition = {Name = Condition.IsItemUseable, State = true, Parameters = {"短暂能量护符"}}},
[1] = {Type = Type.Equip, Name = "饰品1"},
[2] = {Type = Type.Spell, Name = "暗言术:痛", Rank = "8", Target = "target"},
  回复  引用    

#47楼  2007-04-11 19:00 玉面 [未注册用户]

请LZ,如何实现以下内容

一首先判断自身有无“命令圣印(等级5)”BUFF,如果有,则对目标施放“审判”并在施放“命令圣印(等级5)”;如果无,则先施放“命令圣印(等级5)”,再对对方施放“审判”,就是这样一个循环宏

  回复  引用    

#48楼  2007-07-11 18:33 叶子 [未注册用户]

麻烦问个很弱的问题啊
刚看了这个插件,感觉功能真是太好了.
能绑定技能到按键.
我一直就是想找一个插件,能将技能绑定到按键,而又不占用技能条的位置.
之前用了一个SpellBinder 能实现上面的功能,但是当使用聊天窗口的时候,按到绑定技能的按键还是会施放技能,感觉是个不小的BUG了.
后来看了这个插件感觉不错.不过我是个菜鸟,实在是不太明白怎么设置.
刚下载完成以后,里边就三个文件.ShortKey.lua ShortKey.toc ShortKeyConfig.lua 三个文件
我就是想实现按键绑定技能的功能
[0] = {Name = "圣光术"},
[1] = {Type = Type.Spell, Name = "圣光术", Rank = "1", Target = "target"}

语句,我也看了一些,应该是这么写吧?
但是这个语句应该写在哪个文件里,保存成什么扩展名的文件.
这两句话,是否还需要加些其他什么语句,才能执行?
是否还需要ACE2的库?
麻烦帮忙解答下...我特别想用这个插件...麻烦了.   回复  引用    

#49楼 [楼主] 2007-07-12 10:21 simonw      

to 叶子
你下错版本了吧, 以前的版本才是这么配置, 而且已经失效了.
http://blog.cwowaddon.com/simonw 看这里. 不需要任何库支持, 记事本打开这个ShortKeyConfig.lua文件直接编辑就行.   回复  引用  查看    

#50楼  2007-07-12 11:19 叶子 [未注册用户]

呵呵,太感谢你啦...
我终于知道怎么使了?

我一开始是在ShortKeyConfig.lua的--[[ ]]-- 中间加的代码.
后来才刚发现,是不是类似于其他编程语言里的注释...然后就写到后边去了.
然后把您写的代码后边的职业,角色名改了...果然能使了.
不过还有点问题
比如说:我把Q键设置成圣光术(骑士的补血技能).如果是平常在游戏里,不用插脚,设置个快捷键,那么当你配合游戏里的界面设置里的"自我释法(当选择目标时候,为目标施法,当选择敌对目标时候则为自己释法)",就可以这样:
如果选择队友则为队友释法,如果未选择目标或者选择敌对目标,则为自己释法.
麻烦问下,这个功能怎么用代码实现.
麻烦啦....   回复  引用    

#51楼  2007-07-12 12:41 叶子 [未注册用户]

对了,您的MSN是什么啊?
我还有点问题,可能一两句话说不清楚,留言又不及时.
麻烦啦.
  回复  引用    

#52楼  2007-07-12 13:19 叶子 [未注册用户]

嘿嘿,选定施放法术时候,目标的那个会弄啦.
我是这么写的:
ShortKey.Config[1] = {

{Key = "Q", Type = "spell", Value = "治疗之触"},
}
也是照着例子里的代码改的.
这么写的代码,执行出来的效果就是,进入游戏后,按Q就跟按了技能一样的效果,然后把界面设置里的"自我施法"打开,就能完成之前我说的功能了.
可是我之前在别的地方比如:duowan,wowoui,等地放看到的介绍里.
能按Esc(主菜单)->按键设置里,设置将技能设置成哪个按键.
而现在这么写,只能在ShortKeyConfig.lua里调.
写完了,再进游戏,设置的是哪个按键就是哪个,不能在游戏里修改.
请问怎么写,才能把技能设置成在游戏里也能修改按键?

另外麻烦解释下
ShortKey.Config ShortKey.ExtFrame [SK_Constant_Class_HUNTER] 是什么意思啊?

这篇文章,最前面的那些有关猎人的代码,是用[0][1][2]编号写的,这些代码,我复制过去,根本就不起作用,复活的那个代码,我把复活改成补血技能,想试下随机喊话,也不能实现.
请问,这些代码还用加什么其他代码吗?

有关宏命令的按键绑定,我按了4.01的例子..还是不太明白.
其中绑定的宏的名字是什么? 怎么知道绑定的宏的名字.
就这些了...麻烦了.
我的MSN cnfczn@hotmail.com
还是希望能跟您聊聊,有好多问题,总是这么说也不方便啊.
  回复  引用    

#53楼 [楼主] 2007-07-12 18:46 simonw      

我的blog左上有写我msn   回复  引用  查看    

#54楼  2007-08-16 21:19 王动 [未注册用户]

其实我想有个比较详细的例子,因为你说4.0以后都改变了,但是现在你以前帖子的例子现在都不适用的,所以除了你默认的配置能看懂一点外,其他真的不知道怎么用.
譬如Type: 动作类型, 常用枚举值包含action,spell,item,marco,stop,target,focus,assist,menu,command
那这些类型怎么用?每个后面的value能跟什么东西?
还有ShortKey.ExtFrame里只说明了小队里面的,那团队里面叫什么名字?

可能以上这些在学习过wow相关的lua知识都知道答案,但是对于我们初学者或者说使用者来说真的一点都不懂的,希望有比较详细的说明或者例子能告诉我们,或者我一时没有找到你给我个地址参考一下也行,谢谢

还有就是我比较感兴趣那个复活死者而且随机喊话的例子,能把它改成现在可以用的版本的例子说一下吗?谢谢   回复  引用    

#55楼 [楼主] 2007-08-26 16:48 simonw      

参数详细说明已经完成, 见我wow blog   回复  引用  查看    


标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
博客园首页

新闻频道

社区

小组

博问

网摘

闪存

  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2006-10-04 16:50 编辑过
成果网帮您增加网站收入


相关链接: