LUACN论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
热搜: YJWOW MagicStone BoL
查看: 9455|回复: 9

[综合] 【教程】【GC七段】 扩充你的GC函数库---获取GCD数值

[复制链接]
发表于 2015-7-8 07:31:22 | 显示全部楼层 |阅读模式
本帖最后由 托托 于 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.粘贴
  1. --------------GCD Start--------------
  2. local MY_BASE_GCD = {
  3.     ["DEATHKNIGHT"]    = { 1.0 },
  4.     ["DRUID"]        = { 1.5 },
  5.     ["HUNTER"]        = { 1.0 },
  6.     ["MAGE"]        = { 1.5 },
  7.     ["MONK"]        = { 1.5 },
  8.     ["PALADIN"]        = { 1.5 },
  9.     ["PRIEST"]        = { 1.5 },
  10.     ["ROGUE"]        = { 1.0 },
  11.     ["SHAMAN"]        = { 1.5 },
  12.     ["WARLOCK"]        = { 1.5 },
  13.     ["WARRIOR"]        = { 1.5 },
  14. }

  15. local MY_MAX_GCD = nil
  16. local MY_NOW_GCD = nil

  17. function MY_GetBaseGCD()
  18.     local gcd
  19.     local baseGCD = MY_BASE_GCD[select(2, UnitClass("player"))
  20.     ]
  21.     if baseGCD then
  22.         gcd = baseGCD[1]
  23.     else
  24.         gcd = 1.5
  25.     end
  26.     return gcd
  27. end

  28. function MY_GetMaxGCD()
  29.     if MY_MAX_GCD==nil
  30.     then
  31.         MY_RegGCD()
  32.         return MY_GetBaseGCD()
  33.     else
  34.         return MY_MAX_GCD
  35.     end
  36. end


  37. function MY_GetNowGCD()
  38.     if MY_NOW_GCD==nil
  39.     then
  40.         MY_RegGCD()
  41.         return MY_GetBaseGCD()
  42.     else
  43.         return MY_NOW_GCD
  44.     end
  45. end

  46. function MY_RegGCD()   
  47.     MY_GCD_EVENT=MY_GCD_EVENT or CreateFrame("frame")
  48.     MY_GCD_EVENT:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
  49.     MY_GCD_EVENT:SetScript("OnEvent",function(_,_,_,e,_,_,_,_,_,_,_,_,_,_)
  50.             if(e=="SPELL_CAST_SUCCESS")
  51.             then  
  52.                 local _,x=GetSpellCooldown(61304)
  53.                 if (x>0)
  54.                 then
  55.                     if UnitAffectingCombat("player")
  56.                     then
  57.                         MY_NOW_GCD=x
  58.                         --print("NOW "..x.."")
  59.                     else
  60.                         MY_MAX_GCD=x
  61.                         MY_NOW_GCD=x
  62.                         --print("MAX "..x.."")
  63.                     end
  64.                 end
  65.             end
  66.     end)
  67. end

  68. --------------GCD End--------------
复制代码



评分

参与人数 1伸手费 +500 收起 理由
老血 + 500 将会更新到后续版本中

查看全部评分

回复

使用道具 举报

发表于 2015-7-8 07:33:59 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

发表于 2015-7-8 10:30:16 | 显示全部楼层
自己写函数什么的太给力了!
回复 支持 反对

使用道具 举报

发表于 2015-7-8 10:32:11 | 显示全部楼层
膜拜啊,一直也想自己写点函数丰富一下,但始终找不到头绪,希望能多交流
回复 支持 反对

使用道具 举报

发表于 2015-7-8 10:50:32 | 显示全部楼层
我是慕名而来,请收下我的膝盖
回复 支持 反对

使用道具 举报

发表于 2015-8-4 02:30:05 | 显示全部楼层
我用GetSpellCooldown,必须是执行后,才可以读取。求教,请问是否有官方函数可以直接读取到技能的实时冷却周期?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-17 04:10:11 | 显示全部楼层
ydh 发表于 2015-8-4 02:30
我用GetSpellCooldown,必须是执行后,才可以读取。求教,请问是否有官方函数可以直接读取到技能的实时冷却 ...

根据急速缩短CD的技能一般可以这样算 GetSpellBaseCooldown(spellName)/(1+GetMeleeHaste()/100)/1000
回复 支持 反对

使用道具 举报

发表于 2015-8-17 19:17:31 | 显示全部楼层
htt0528 发表于 2015-8-17 04:10
根据急速缩短CD的技能一般可以这样算 GetSpellBaseCooldown(spellName)/(1+GetMeleeHaste()/100)/1000

谢谢提供获取GCD数值解决办法
回复 支持 反对

使用道具 举报

发表于 2017-1-23 13:59:03 来自手机 | 显示全部楼层
谢谢大神。学习了。。
回复 支持 反对

使用道具 举报

发表于 2017-1-23 15:33:13 来自手机 | 显示全部楼层
谢谢大神。学习了。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

小黑屋|手机版|Archiver|LUACN论坛

GMT+8, 2024-4-25 05:34 PM , Processed in 0.096126 second(s), 35 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表