(: 3系德鲁伊常用宏集合 :)
玩小德已经有大半年时间了,这期间我到处查看,发现了好多特别好用的宏。不过呢,一直都没有找到一套比较系统的宏集合,尤其是野性篇的。
(一)熊形态
1. 冲锋:
(1) 要先判断一下是否处于熊或者巨熊形态。要是不在这两种形态下,那就得先变成熊,再进行冲锋并且释放低吼技能;要是已经处于这两种形态之中了,那就直接冲锋释放低吼技能。
/Script local c,s,i,f,n,a,_ = CastSpellByName,"巨熊形态";for i = 1,GetNumShapeshiftForms() do _,n,a = GetShapeshiftFormInfo(i);if n == s then break;end;end;if a == 1 then if IsActionInRange (34)
在这大半年的游戏历程里,寻找宏的过程就像是一场漫长的探索之旅。每一个发现的宏都像是一颗珍贵的宝石,虽然散落在各处,但都有着独特的作用。而我一直心心念念想要找到的这个系统的宏集合,就像是一个装满宝藏的宝箱,特别是野性篇的宏集合对我的小德角色的提升应该会有很大的帮助。对于熊形态下的冲锋宏,这个宏的逻辑其实是非常贴合实战需求的。在战斗的瞬息万变之中,快速准确地判断自身的形态并且做出正确的操作,这是非常关键的。这就好比在真实的战场上,士兵要迅速判断自己的装备状态采取相应的战斗策略一样。
如果满足某种条件,就调用“野性冲锋”这个函数;否则的话,就调用“低吼”这个函数。到这里就结束了。如果还有其他情况,那就调用c(s)这个函数,整个过程结束。
这里需要注意的是:红字标注的“34”是技能栏编号,在使用这个宏(Macro)之前,得先把“野性冲锋”这个技能放置在一个技能栏的位置上(建议放在那些不常用的按键位置上)。
(2)下面这种情况基本是类似的,不过不会出现“低吼”的操作。
/script 本地定义变量,像c表示CastSpellByName(按照法术名称释放法术)这个操作,s暂时未明确(根据上下文推测可能是某种状态或者函数等),i用于循环计数,f、n、a、_这些变量具体用途需根据更多代码上下文确定。这里定义“巨熊形态”为s这个变量的值;通过循环,循环变量i从1开始,一直到获取到变形形态(GetNumShapeshiftForms)的数量为止。
,令_,n,a等于GetShapeshiftFormInfo(i)。要是n的值等同于s的话,那就直接中断(跳出循环或者操作等,根据上下文确定)。到此为止(这里指代前面的循环或者操作序列等结束)。如果a的值为1的话,那就执行c("野性冲锋");否则就执行c(s)。
(3)这种操作在角色被击飞或者处于紧急状况的时候使用是比较有效的。在施展野性冲锋的同时发出低吼,要是此时的怒气值仍然大于35的话,那就使用挥击来消耗怒气从而拉住仇恨。接着是释放低吼技能,再释放野性冲锋技能。运行脚本判断,如果(玩家的法力值(这里假设在这个情境下怒气值与法力值有类似的判定逻辑,根据具体游戏机制可能需要调整)大于35)。
接着,通过“挥击”这个名称来施展法术(CastSpellByName("挥击"););到此为止。
关于拉仇恨方面:使用“槌击”加上“挥击”这两个技能能够大量地释放怒气。要是目标所针对的目标并非小D(德鲁伊)或者战士的话,那就使用“低吼”技能。(这部分由OBLIND修改)
下面是一段脚本内容:/script 定义局部变量,local class(代表目标的目标职业), c(代表施展法术的函数) = UnitClass("targettarget"), CastSpellByName; 如果class(目标的目标职业)不等于“德鲁伊”……
如果职业类别近似于“战士”的话,就执行函数c(“低吼”);不然就执行c(“槌击”),再执行c(“挥击”)。要是这样的话,就通过名称来释放“低吼”这个法术。结束3、攻击与槌击:(起到补充作用)当怒气值低于10的时候就进行普通攻击,要是不低于10就使用槌击。/脚本 如果(玩家的法力值<10)那么
在游戏的战斗逻辑设定里,职业类别是一个非常关键的因素。就像这里提到的,如果角色的职业类别和“战士”相近似,就会触发特定的技能操作。而对于“攻击与槌击”这一操作逻辑,怒气值的多少决定了攻击的方式。怒气值低的时候,也就是小于10的时候,只能进行普通攻击,而一旦怒气值达到10或者更高,就可以使用槌击这个技能了。,在整个操作流程里,脚本中的判断条件也起着重要的作用,像“玩家的法力值<10”这样的判断条件,会引导游戏中的各种行为。
若要施展名为“攻击”的法术;若不行,则施展名为“槌击”的法术。
4、熊形态与蛮兽神像:在人形状态时,按一次按键是变为熊形态,按两次按键则是更换为蛮兽神像;处于熊形态下时,操作是换上蛮兽神像。(由漠铭骑喵制作)需要注意的是,这里红字部分对应的操作是UseContainerItem(背包编号,格子编号)。
请将[蛮兽神像]放置于初始的16格包的左上角处。备注:背包编号顺序为从左到右:4,3,2,1,0。这就意味着,最初你所拥有的16格行囊即为0号背包。
关于背包格子编号的情况如下:第一行按照从左到右的顺序为1,2,3,4(要注意是从1开始计数的);第二行从左到右则是5,6,7,8,按照这样的规律依次类推……/script
我们在进行这类操作的时候,一定要格外仔细。因为在很多游戏场景中,物品的放置位置往往会影响到游戏的进程或者角色的属性等情况。如果放错了位置,可能会引发一些意想不到的问题,比如某些功能无法正常使用或者任务无法顺利推进。所以准确地按照要求放置[蛮兽神像]就显得尤为重要了。
以下是一段关于游戏角色形态及相关操作的代码与操作说明。
是关于巨熊形态相关的操作代码部分。在本地定义了一些变量,像“c”(用于通过名称释放法术)、“s”(其值为“巨熊形态”)、“i”、“f”、“n”、“a”以及一个未使用的“_”。通过一个循环来查找特定的变形形态信息。循环从1开始,一直到获取到的变形形态数量(GetNumShapeshiftForms())。在每次循环中,获取变形形态的信息,分别存储到“_”、“n”和“a”中。如果获取到的形态名称“n”与我们设定的“巨熊形态”“s”相同,那么就跳出循环。循环结束后,如果“a”的值等于1,就使用容器中的第1个物品(UseContainerItem(0,1));否则就释放名为“巨熊形态”的法术(c(s))。
接下来是猫形态部分。
(二)猫形态
1、猫形态常用攻击宏:
在游戏中,存在一种猫形态下的常用攻击策略。正常的情况下,会使用名为“爪击”的技能。不过当积累的连击点数达到或者超过3点的时候(这里我们将其称为“3星”),就需要使用“凶猛撕咬”这个技能。对应的代码是这样的:通过脚本来判断,如果获取到的连击点数(GetComboPoints())大于等于3,那么就释放名为“凶猛撕咬”的法术(CastSpellByName("凶猛撕咬"));否则就释放“爪击”这个法术(CastSpellByName("爪击"))。
end2、猫形态起手宏(潜行状态下使用):当处于潜行状态时,使用毁灭技能,之后检查目标身上是否存在精灵之火这个状态。要是没有的话,就给目标施加一个;要是有的话,就使用爪击技能。
具体的宏命令内容如下:
/cast 毁灭
/cast 爪击
/script x = 1; found = 0; while(UnitDebuff("target", x)) do if(string.find(UnitDebuff("target", x), "Spell_Nature_FaerieFire")) then
found = 1;
end;
x = x + 1;
end;
/script
if (found == 1)
{
CastSpellByName("爪击");
}
else
{
CastSpellByName("精灵之火(野性)");
}
end
3、背面攻击宏:要进行判断,如果毁灭技能能够使用就使用毁灭技能,如果不能使用就使用撕碎技能。
/script
x = 1;
found = 0;
while (UnitBuff("player", x))
If (string.find(UnitBuff("player", x), "Ambush")) then
found = 1
end
x = x + 1
End
/script
If (found == 1) then
CastSpellByName("Annihilation")
Else
CastSpellByName("Tear Apart")
End
4. Stealth + Surprise Attack: First, make a judgment. If in the stealth state, then carry out a surprise attack; otherwise, enter stealth. /script
令x = 1,再令found = 0。当“player”(玩家)的单位增益效果(UnitBuff)存在(这里用x来表示不同的增益效果序号)时,就执行循环操作(while循环)。在循环内部,若在玩家的某个单位增益效果(通过UnitBuff("player", x)获取)中能找到“Ambush”(伏击)这个字符串,那么就把found的值设为1。每循环一次,x的值就增加1。循环结束后,执行一段脚本(/script)。如果found的值等于1,那么就施展名为“突袭”的法术;否则就施展名为“潜行”的法术。
接下来是关于技能组合“爪击 + 撕碎”的策略。在战斗输出(DPS,尤其是BOSS战中的输出)时,要依据能量值来决定使用哪个技能。当能量值大于等于60时,就使用“撕碎”技能;而当能量值小于60时,就使用“爪击”技能。相应的脚本(/Script)如下:如果玩家(“Player”)的法力值(这里将能量值类比为法力值概念来理解,UnitMana)大于等于60,就施展名为“撕碎”的法术;否则就施展名为“爪击”的法术。
还有关于“攻击 + 爪击”的策略(这里可以理解为一种技能组合的运用方式或者补充策略)。当能量值小于37时,就进行普通攻击;当能量值大于37时,就使用“爪击”技能。这部分也有相应的脚本(/script)来实现这个策略。
如果玩家的法力值(“UnitMana("player")”)低于37点的话,那就施展名为“攻击”的法术;反之,则施展名为“爪击”的法术。
关于“突袭 + 扫击”:(起到补充作用)当处于潜行状态的时候就使用突袭技能,要是没有潜行就使用扫击技能。
下面是一段脚本相关内容:设定变量x等于1,同时设定found等于0。在玩家拥有的增益效果(“UnitBuff("player",x)”)中进行循环查找,当进行循环查找的时候,如果在玩家的某个增益效果(“UnitBuff("player",x)”)中发现(“string.find”)有“Ambush”(突袭)这个效果存在的话……
设变量found的值为1;结束此操作;令x的值增加1;再结束。/script 如果(found等于1),那么施展名为“突袭”的法术;否则就施展名为“扫击”的法术。8、猫形态与凶猛神像: 在人形态的时候,按一次按键是变为猫形态,按两次按键则是换上凶猛神像;处于猫形态时则是换上凶猛神像。(此内容由漠铭骑喵制作)[ 这里红字部分所代表的是UseContainerItem(背包编号,格子编号)。
为了让这个流程和操作的表述更清晰准确,我们可以详细解释一下。当我们设定found的值为1之后,就完成了一个初始的设置动作。而x = x + 1这个操作,在很多程序逻辑或者计算流程里,可能是一个计数或者逐步递增某个变量的操作,每完成一次这样的操作,就代表着某个过程的推进或者某种状态的更新。
在法术施展部分,如果found的值确实是1,那就意味着满足了施展“突袭”法术的条件,否则就会施展“扫击”法术。这可能是根据游戏中的某种机制或者角色状态来决定的。
对于猫形态和凶猛神像的操作部分,这是在描述游戏角色在不同形态下与装备(这里是凶猛神像)之间的交互操作。在人形态下通过特定的按键操作来切换形态和装备神像,而猫形态下则单纯是换上神像的操作,这体现了游戏操作的一种逻辑性和角色功能的多样性。而最后的关于“红字部分”的解释,则是对特定代码或者标识所代表意义的明确说明,有助于玩家或者阅读者更好地理解整个内容。
请将[凶猛神像]放置于初始的16格背包里,在这个背包的第一行,按照从左向右的顺序,放在第2格的位置。补充说明一下:背包的编号是按照从左到右的顺序为4,3,2,1,0。也就是说,你一开始所拥有的那个16格行囊,它的编号是0号背包。至于背包格子的编号,第一行从左到右依次为1,2,3,4(这里要注意是从1开始编号的);第二行从左到右的编号则是5,6,7,8,按照这样的规律依次类推……/script
这里我们可以详细解释一下为什么要特别强调这些编号规则。在很多游戏或者特定的系统中,对于物品的放置位置有着严格的规定,这些编号规则就是为了确保玩家或者使用者能够准确无误地将物品放置到正确的位置。就像在这个例子中,如果不清楚背包和格子的编号,就很可能会放错[凶猛神像]的位置,这可能会影响到后续的操作或者功能的实现。比如说,可能在某些游戏剧情或者任务环节中,只有当[凶猛神像]放在指定的位置时,才能够触发特定的事件或者获得相应的奖励。所以,准确理解和遵循这些编号规则是非常重要的。
Let "c", "s", "i", "f", "n", "a", "_" stand for CastSpellByName and "Leopard Form" respectively. For i = 1 to GetNumShapeshiftForms(), do _, n, a, s = GetShapeshiftFormInfo(i); if n is equal to s, then break; end; end. If a is equal to 1, then UseContainerItem(0, 2); otherwise, c(s).
(3) General for Any Forms
1. Human - form Macro: Judge. If it is not in human form, then return to human form. It can be used in any form.
/script Let i, a, _ be variables; for i = 1 to GetNumShapeshiftForms()
do
local _, _, a = GetShapeshiftFormInfo(i)
if a then
CastShapeshiftForm(i)
break
end
end
end
**恢复篇:**
1. **树皮 + 宁静:**
要判断是否存在树皮效果。如果不存在树皮效果,那就施加树皮术;要是已经有树皮效果了,就施加宁静。简单来讲,点击一下技能是释放树皮术,点击两下就是释放树皮术加上宁静。
以下是具体的脚本代码实现。设置一个变量x初始值为1,再设置一个变量found初始值为0,通过循环来检查玩家身上的增益效果。在循环中,只要玩家身上存在名为“StoneClaw”的增益效果(通过查找玩家身上第x个增益效果的名称中是否包含“StoneClaw”来判断),就将found设置为1,同时x的值每次循环都增加1。循环结束后,再进行判断,如果found的值为1,那就释放3级的宁静法术;否则就释放树皮术。
/script x = 1; found = 0; while(UnitBuff("player", x)) do if(string.find(UnitBuff("player", x), "StoneClaw")) then found = 1; end; x = x + 1; end; /script if(found == 1) then CastSpellByName("宁静(等级 3)"); else CastSpellByName("树皮术") end
2. **激活:**
这个技能的释放逻辑是这样的:进行一系列的判断。如果目标是敌对的,或者是NPC,或者没有目标,又或者目标是没有法力值(蓝量)的职业,在这些情况下,激活技能就对自己使用;如果目标是有蓝量的职业,那么激活技能就对目标使用。并且在使用完激活技能之后,会自动把目标切换回之前的目标。
这里通过脚本来实现这个逻辑。获取目标的职业类型,将其存储在变量x中。进行判断,如果目标不是玩家的友方(包括目标是敌对的或者是NPC的情况),或者目标的最大法力值小于200并且目标职业不是德鲁伊(这里假设没有蓝量的职业最大法力值小于200,并且德鲁伊是有蓝职业的一种特殊情况,这只是为了举例说明逻辑),那么就将目标设置为玩家自己;释放激活技能;最后再将目标切换回之前的目标。
/script x = UnitClass("target"); if (not UnitIsFriend("player", "target") or (UnitManaMax("target") < 200 and x ~= "Druid")) then TargetUnit("player"); end; CastSpellByName("激活"); TargetLastTarget();
3. **自然迅捷 + 治疗之触:**
正常情况下只需要按一下技能就可以了,但偶尔,比如在网络延迟比较高的时候,可能需要按两下。(这里注明是light_arm修改的内容)
通过以下脚本实现技能的释放逻辑。停止当前的施法(如果有的话),释放自然迅捷,接着再次停止施法(确保前一个技能释放完成),最后释放11级的治疗之触。
/script SpellStopCasting() /施放 自然迅捷 /script SpellStopCasting() /施放 治疗之触(等级 11)
4. **回春术 + 迅捷治愈:**
如果目标身上已经有回春术的效果,那就释放迅捷治愈;如果没有回春术的效果,就释放回春术。
下面是相关的脚本部分,设置变量x为1,变量found为0,通过循环检查目标身上的增益效果。
/Script x = 1; found = 0; while(UnitBuff("target", x))
If the string contains "Rejuvenation" in the unit buff of "target" (with x being incremented in the process), then set "found" to 1. That is, if (string.find(UnitBuff("target", x), "Rejuvenation")) then found = 1; end; and then increment x by 1; end. In the script, if found is equal to 1, then cast the spell named "Swiftmend"; otherwise, cast the spell named "Rejuvenation (Rank 11)".
5. Healing Touch:
(1) Determine whether to use the highest - level Healing Touch or spam Rank 4 Healing Touch (when the target has lost less than 1200 health) based on the target's health.
Cast Healing Touch. In the script, if the "target" is a friend of the "Player" and if the "target" is in combat, then if the difference between the maximum health of the "target" and the current health of the "target" is less than 1200, then cast the spell named "Healing Touch (Rank...".
Here, we need to expand on the concept of how these spell - casting decisions are crucial in a combat or healing scenario. For example, when dealing with different levels of damage on the target, the appropriate spell selection can greatly affect the outcome of the battle or the survival of the target. This requires the caster to have a good understanding of not only the spells at their disposal but also the real - time status of the target, such as its current health level and whether it is in combat or not. This knowledge helps in making more efficient and effective decisions regarding spell - casting, which is essential for success in any combat - related or healing - related situation.
(4);如果满足这个条件就结束,如果还有其他情况也结束;否则,如果法术是针对目标的,那就将目标设定为“玩家”;结束。
(2)要依据目标的血量来确定使用哪一个等级的治疗之触。
/脚本 H等于目标的最大生命值减去目标的当前生命值;S是一个包含多个数值的集合,这些数值分别为{41, 98, 213, 394, 617, 799, 1004, 1285, 1621, 2010, 2496};/脚本 针对j这个变量,让它从11开始,每次减1,一直到1为止。
如果 (H >= S[j]) 的话,那就执行CastSpellByName("治疗之触(等级 "..j..")");跳出循环;到此结束;最后结束。
6、回春术:要依据目标的等级来判断使用哪一个等级的回春术。
设变量j等于r,r取值为1或者 - 1。进行如下操作,如果(t大于等于l这个表中索引为j的值再减去10),那么就执行名为“回春术(等级 "与j的值连接起来的字符串)"的法术;之后就跳出循环;循环结束。
j = r, 1, -1
do
if (t >= l[j] - 10) then
CastSpellByName("愈合(等级 "..j..")")
break
end
end
8、驱毒:在任意形态下转变回人形,对目标施加驱毒效果。
/script
local i, a, _
for i = 1, GetNumShapeshiftForms() do
_, _, a = GetShapeshiftFormInfo(i)
if
a;
Then, CastShapeshiftForm(i);
Break;
End;
End;
Cast "驱毒术". This spell, which was created by Warlock Jin'do the Hexxer, can remove the curse and poison effects on oneself.
/Script
Set dbk = {'Poison', 'Curse'};
Set spl = {'驱毒术', '解除诅咒'};
For m = 0, 31, 1 Do
For...
当n取值为1、2、1时,执行以下操作。如果获取玩家身上有害魔法效果(GetPlayerBuff)的驱散类型(GetPlayerBuffDispelType)与数组dbk[n]中的值相等的话,那么就将目标设定为玩家(TargetUnit('player')),根据spl[n]所对应的法术名称释放法术(CastSpellByName(spl[n])),再重新将目标设定为之前的最后一个目标(TargetLastTarget()),并终止循环(break)。以上操作结束后,整个循环也结束(end)。
下面是关于平衡方面的内容:
其一,月火术用于打击图腾。先搜寻周边敌方的图腾,接着使用1级的月火术,完成之后会自动把目标切换回之前的目标。具体的操作指令是先选定目标为图腾(/Target图腾),释放1级的月火术(/cast月火术(等级1)),最后通过脚本命令切换回之前的敌人目标(/Script TargetLastEnemy())。
其二,树皮术与飓风术的使用组合。要先判断玩家是否拥有树皮术的效果,如果没有就释放树皮术,如果已经有了树皮术的效果就释放飓风术。简单来讲,点击一下执行这个操作就是释放树皮术,点击两下就是先释放树皮术再释放飓风术。对应的脚本操作是,设定变量x为1,同时设定found为0,当玩家身上存在第x个增益效果(UnitBuff("player",x))的时候……
这里我们可以补充一些关于游戏操作逻辑的理解内容。在游戏中,这样的操作设定是为了更高效地应对不同的战斗场景。例如在团队作战时,对图腾的快速打击能够有效地限制敌方的某些能力,而树皮术和飓风术的组合使用则可以根据实际情况灵活地控制战场局势或者应对敌人的攻击。这种操作的精准性和策略性是玩家在游戏中提升自身实力和团队协作能力的重要部分。
If we check and find that the unit buff of "player" for variable x contains "StoneClaw" through the string.find function, then we set the variable found to be equal to 1. After that, we increment the value of x by 1. This process is repeated until the relevant conditions are met.
Now, in the script part, if the value of found is indeed 1, then we cast the spell named "飓风" (Hurricane). However, if found is not equal to 1, then we cast the spell named "树皮术" (Barkskin).
And then there is this "月火机关枪?: (6楼light_arm". It seems rather unclear what exactly this part means in relation to the previous spell - casting logic. It might be some sort of reference or note that needs further clarification perhaps related to a strategy on the 6th floor by someone named light_arm regarding a so - called "月火机关枪" (Moonfire Machine - gun - like effect? This is just speculation as the description is rather ambiguous).
/script
local x = 1
local found = 0
while (UnitDebuff("target", x)) do
local debuffInfo = UnitDebuff("target", x)
if (string.find(debuffInfo, "Spell_Nature_StarFall")) then
found = 1
end
x = x + 1
end
/script
if (found == 1) then
CastSpellByName("月火术(9级)")
else
CastSpellByName("月火术(10级)")
end
在涉及到游戏角色技能的状态相关内容里,其中野性印记这个技能有一个操作要点。那就是要根据目标等级去确定使用爪子的等级。这就好比是在一个复杂的游戏体系中,不同等级的目标可能有着不同的防御或者抗性等属性,而我们通过判定目标等级来选择合适等级的爪子,是为了让这个野性印记技能在战斗或者交互场景中发挥出更有效的作用。这里所给出的脚本内容,像设定r = 7以及定义l这个包含多个等级数值的集合,都是为了在后续根据目标等级t(也就是“UnitLevel("target")”所代表的内容)进行某种计算或者操作(由于后面内容不完整,无法确切知道具体操作)而做的准备工作。
设j=r,其取值为1或者 -1。执行如下操作:如果(t >= l[j] - 10),那么就施展名为“野性印记(等级 “..j..”)”的法术,跳出循环;循环结束。
(二)自动查找团队里那些没有野性印记的成员,并为他们补上印记。掉线的成员、已经死亡的成员以及不在视野范围内的成员都会被忽略掉。(由OBLIND制作)
/script 以下是一段脚本内容:定义局部变量i、j、b、f、p。对于从1到40的每个i,令f为nil,p为“raid”..i。如果单位p是可见的(即能被看到),那么……
For j = 1 to 16 do
b = UnitBuff(p, j)
If b and strfind(b, "Regen") then
f = 1
Break
End if
End for
If not f then
TargetUnit(p)
CastSpellByName("野性印记")
Break
End if
End if
End if
2. 荆棘术:依据目标的等级来判定应当使用哪一个等级的荆棘。/script
设变量r的值为6,再设定集合l,其元素为{6, 14, 24, 34, 44, 54}。倘若“player”与“target”并非友方单位(这里的“UnitIsFriend”表示判断单位是否为友方关系),那么就将“player”设为目标(“TargetUnit”用于设定目标)。结束这个判断操作后,令t等于目标单位(“target”)的等级(“UnitLevel”用于获取单位等级)。针对j这个变量,让它从r的值开始,以步长为 -1逐步递减至1。在这个循环过程中,如果t的值大于或等于集合l中第j个元素减去10的值,那么就施展名为“荆棘术(等级 "..j..")”的法术(“CastSpellByName”用于施展指定名称的法术),并且中断这个循环;循环结束。
特殊部分:其一,技能冷却时间公告:此功能能够显示任何技能剩余的冷却时间,使用者可自行调整。注意:这里提到的红字“8”代表的是技能栏编号。在使用这个宏(一种可执行一系列游戏命令的预设操作)之前,需要先将想要显示冷却时间(“CD”即“Cool Down”,冷却时间)的技能放置在某个技能栏位上。以下是相关的脚本内容:/script a,d,e = GetActionCooldown(8); 这里通过“GetActionCooldown”函数获取编号为8的技能栏位上技能的冷却时间相关信息,将结果分别赋给a、d、e三个变量。s = d - (GetTime() - a); 通过当前时间(“GetTime”用于获取游戏中的当前时间)与之前获取的冷却时间相关信息进行计算,得出剩余冷却时间,结果赋给s变量。q = string.format("%.f", s); 对剩余冷却时间进行格式化处理,最后赋给q变量。/script
设变量(m),令(m = q)除以(60)。再设变量(n),(n)的值通过将(m)以特定格式(("%d"))进行格式化得到,这里是在脚本环境下进行的操作。接着设变量(o),(o)的值为(q)减去(n)乘以(60)的结果,同样是在脚本环境下。假如(a)不等于(0),那么就执行发送聊天消息的操作,发送的消息内容为“技能名 CD时间:”加上(n)的值(以分钟为单位)再加上“分”字,加上(o)的值(以秒为单位)再加上“秒”字,发送的频道为“yell”。到此暂时更新结束,暂时也想不出还有别的内容了。欢迎大家跟帖补充啊。
澄拾游戏