|
本帖最后由 托托 于 2016-2-5 20:51 编辑
最近在做一个骑士方案 想完整重现SIMC的输出流程
BTW:
前面有个用OVALE加载SIMC脚本的帖子 初学者用是不错 最小投入最大回报 但是有2个问题
1.很多功能无法微调
2.SIMC流程做得很细,根据技能范围精确到怪物个数使用不同技能,对目标数量判断使用不同技能OVALE不行,只有简单粗暴的一个AOE
在制作过程中发现SIMC经常用到2个参数:gcd 和 gcd.max
两者区别就是gcd.max是常态的gcd时间,gcd是即时的gcd时间(比如触发了带急速的附魔饰品,或者开嗜血啦)
发现GC的函数库里好像没有类似功能 索性自己写
调用方法:(没有任何依赖,全部魔兽API,经测试数据准确没有任何浮动)
提供三个函数
1.MY_GetBaseGCD() 返回本职业裸态GCD
2.MY_GetMaxGCD() 返回常态GCD(刷新机制:非战斗状态放任意技能,就记录目前的GCD)
3.MY_GetNowGCD() 返回即时GCD(刷新机制:放任意技能,就记录当前的GCD)
使用方法:
1.用记事本打开Interface\AddOns\GC\wowamfunctions.lua
2.翻到最后另起一行
3.粘贴
- --------------GCD Start--------------
- local MY_BASE_GCD = {
- ["DEATHKNIGHT"] = { 1.0 },
- ["DRUID"] = { 1.5 },
- ["HUNTER"] = { 1.0 },
- ["MAGE"] = { 1.5 },
- ["MONK"] = { 1.5 },
- ["PALADIN"] = { 1.5 },
- ["PRIEST"] = { 1.5 },
- ["ROGUE"] = { 1.0 },
- ["SHAMAN"] = { 1.5 },
- ["WARLOCK"] = { 1.5 },
- ["WARRIOR"] = { 1.5 },
- }
- local MY_MAX_GCD = nil
- local MY_NOW_GCD = nil
- function MY_GetBaseGCD()
- local gcd
- local baseGCD = MY_BASE_GCD[select(2, UnitClass("player"))
- ]
- if baseGCD then
- gcd = baseGCD[1]
- else
- gcd = 1.5
- end
- return gcd
- end
- function MY_GetMaxGCD()
- if MY_MAX_GCD==nil
- then
- MY_RegGCD()
- return MY_GetBaseGCD()
- else
- return MY_MAX_GCD
- end
- end
- function MY_GetNowGCD()
- if MY_NOW_GCD==nil
- then
- MY_RegGCD()
- return MY_GetBaseGCD()
- else
- return MY_NOW_GCD
- end
- end
- function MY_RegGCD()
- MY_GCD_EVENT=MY_GCD_EVENT or CreateFrame("frame")
- MY_GCD_EVENT:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
- MY_GCD_EVENT:SetScript("OnEvent",function(_,_,_,e,_,_,_,_,_,_,_,_,_,_)
- if(e=="SPELL_CAST_SUCCESS")
- then
- local _,x=GetSpellCooldown(61304)
- if (x>0)
- then
- if UnitAffectingCombat("player")
- then
- MY_NOW_GCD=x
- --print("NOW "..x.."")
- else
- MY_MAX_GCD=x
- MY_NOW_GCD=x
- --print("MAX "..x.."")
- end
- end
- end
- end)
- end
- --------------GCD End--------------
复制代码
|
评分
-
查看全部评分
|