牧师的宏
,在/script中要告知系统,接下来的这段文字是运用宏语言撰写的。要是玩家想要运用函数的话,那就必须在每行的开头添加上这样一句话。
一 随机说话
/script
设a为“%t,给你个有限无敌圈”;
令b表示“%t,把你变上帝”;
再设c为“%t,给你一个小恢复”;
d = random(1, 3),这里的random表示随机生成一个1到3之间(包含1和3)的数字。这种设定可能是在某个程序或者游戏相关的情境下,用于根据不同的随机结果(1、2或者3)来触发不同的效果,比如当d为1时,可能与“%t,给你个有限无敌圈”这个设定相关的操作会被执行;当d为2时,也许就会涉及到“%t,把你变上帝”相关的动作;而当d为3时,“%t,给你一个小恢复”相关的情况可能就会发生。
在脚本中,如果变量d的值等于1,那么就执行SendChatMessage(a)这个操作;要是变量d的值等于2呢,那就执行SendChatMessage(b);而当变量d的值为3的时候,就执行SendChatMessage(c);除此之外的情况,就不进行任何操作了。整个过程到此结束。
/施放 xx法术(等级xx)
二 说话宏
/script SendChatMessage("要么主动把钱交出来,要么就等着我来抢劫,二选一。"," say","通用语"," YELL")
在关于“语言”这一内容方面,需要写上“通用语”、“精灵语”、“侏儒语”以及“兽人语”。
在参数“频道”里,必须明确指出频道的编号。如果省略该编号的话,那么频道就默认为“综合”。
我们还可以用以下的参数:
1."GUILD":工会
2."PARTY":小队
3."RAID":组团
4."YELL":大喊
三 生成一个随机数的函数random()
使用格式:random(起始值,结束值)
作用:生成一个在起始值和结束值之间的随机数
随机数的取值区间是有不同情况的。当没有起始值和结束值的时候,随机数会处于[0,1]这个区间之内。要是仅仅提供了一个参数n的话,那么随机数就会落在[1,n]这个区间之中。而在提供了起始值和结束值这两个参数的时候,随机数便会位于[起始值,结束值]这个区间里。
例如:/script random(50, 100)
四 坦克打谁我打谁的宏
将目标设定为(主坦克的名字),协助(可能是某个队友或者特定的操作情境),并释放10级的火球术。
五 怪物打谁我加谁的宏
以“怪物名称”为目标,进行协助操作,接着施放等级为7的快速治疗法术。
六 牧师的群加宏
例如:当小队成员的生命值低于一半的时候,使用宏命令,接着使用治疗祷言,这样小队人员的生命值就几乎全都满了。
/施放 能量灌注
在脚本编写中,存在这样一个指令,即“/script SpellStopCasting()”,它的主要功能是停止施法相关的操作。在脚本的复杂体系里,这一指令发挥着独特的作用。例如,当游戏角色正在进行一系列复杂的魔法施放流程时,如果遇到某些特定情况,像受到敌方的干扰法术影响,或者角色自身的状态发生突然变化(例如生命值突然降低到一个危险的临界值等),就需要及时停止当前的施法动作,这个时候“/script SpellStopCasting()”指令就派上用场了。它就像是一个紧急制动按钮,能够让施法进程瞬间停止,以避免可能出现的更糟糕的情况,比如法术反噬或者被敌人趁机攻击等。
/施放 心灵专注
七 按等级施放法术的宏
真言术:韧
设变量r的值为6,再设集合l包含元素1、12、24、36、48、60。倘若“player”(玩家)与“target”(目标)并非为友方关系,那么就让“player”(玩家)选定“target”(目标)。之后将“target”(目标)的等级赋值给变量t。从变量r开始,以步长为 -1进行循环操作,循环到1为止。在循环过程中,如果变量t的值大于或等于集合l中的元素减去10的结果,那么就施展名为“真言术:韧(等级 ”加上变量i的值再加上“)”的法术,终止循环。
神圣之灵
设变量r的值为3,再设一个列表l,其中包含40、42、54这几个数值。要是“玩家”与“目标”并非友方关系的话,那就将“玩家”设定为目标单位。,确定“目标”的等级并将其赋值给变量t。从r这个数值开始,以步长为 -1进行循环操作(也就是依次取r、r - 1、r - 2……直到1)。在每次循环时,如果目标的等级t大于或等于列表l中的数值减去10的话,那就施展名为“神圣之灵(等级 "加上当前循环的i值再加上")"的法术,停止循环。
在游戏编程或者脚本编写中,这种逻辑是比较常见的。它要对目标的身份关系进行判断,这是为了确定操作的合法性或者必要性。之后通过获取目标等级,并与预设的数值进行比较,从而决定是否施展特定等级的法术。这种精确的数值判断有助于在游戏场景中根据不同的目标情况准确地执行技能释放操作,以达到游戏平衡或者满足游戏情节发展的需求。
恢复
/script
local r = 9
local l = {8, 14, 20, 26, 32, 38, 44, 50, 56}
if not UnitIsFriend("player", "target") then
TargetUnit("player")
end
local t = UnitLevel("target")
for i = r, 1, -1 do
if (t >= l[i - 1] - 10) then
CastSpellByName("恢复(等级 "..i..")")
break
end
end
/script
Let the variable r be set to 9. And we have a list l which contains the numbers 8, 14, 20, 26, 32, 38, 44, 50 and 56 respectively. If the unit named "target" is not a friend of the "player", then we make the "player" as the target. After that, we get the level of the "target" unit and assign it to the variable t. Now, we start a loop. The loop variable i is initially set to the value of r which is 9, and it will decrease by 1 in each iteration until it reaches 1. In each iteration, if the level of the "target" unit (t) is greater than or equal to the (i - 1)th element of the list l minus 10, then we will cast the spell named "恢复(等级 "..i..")". Once this condition is met, we break out of the loop.
真言术:盾
/script
-- 设置一个变量r,其值为10
r = 10
-- 创建一个包含多个数值的表l
l = {6, 12, 18, 24, 30, 36, 42, 48, 54, 60}
-- 如果玩家和目标不是友方关系,那么将玩家设为目标
if not UnitIsFriend("player", "target") then
TargetUnit("player")
end
-- 获取目标的等级并赋值给变量t
t = UnitLevel("target")
-- 从r开始以步长为 -1进行循环,直到1
for i = r, 1, -1 do
-- 如果目标等级大于等于表l中的某个值减10
if (t >= l[i] - 10) then
-- 释放名为“真言术:盾(等级 [具体等级])”的法术,其中[具体等级]为当前的i值
CastSpellByName("真言术:盾(等级 "..i..")")
break
end
end
八 复活的说话宏
/E 在箱柜里翻找了半天,才拿出脂粉、眉笔、口红之类的东西。一边给 %t 化妆,一边叹息着说道:“孩子啊,你生前都没怎么打扮过自己,如今在装殓之前,我要好好给你装扮一番。”
/施放 复活术(等级 5)
九 复活的话
我们拿牧师来举例。先选中牧师“复活术”这个图标,在名称的位置填写“复活”二字。接着,返回到第一个窗口,在输入栏里输入以下命令:
/me 开始施放复活术
/me 的复活术被%t抵抗
/me 开始变得愤怒了
/me 获得了狂暴效果
/me 施放皮鞭失败:%t对此免疫
/me 施放辣椒水失败:%t爱吃川菜
我开始施展色诱术(中间有若干空格),%t复活了!
/施放 复活术(等级 1)
法师的宏
一 节能施法时自动放奥术飞弹的宏
/script
local q = nil
local t = nil
for i = 0, 15, 1 do
t = GetPlayerBuffTexture(i)
if t and string.find(t, "ManaBurn") then
q = 1
break
end
end
if q ~= nil then
CastSpellByName("奥术飞弹 (等级7)")
else
CastSpellByName("灼烧 (等级7)")
end
二 气定-炎爆
/script这个代码部分看起来像是用于停止施法(Spell Stop Casting)相关的操作,这里的“SpellStopCasting()”可能是一个函数调用,其功能是终止正在进行的施法动作。不过仅从这串字符来看,缺乏更多的上下文信息,难以确切知晓它在整个程序或者脚本中的具体用途和影响范围等详细情况。
/施放 气定神闲
在游戏或者特定的程序操作中,我们常常会遇到需要停止施法的情况,这时候就会用到一个特定的指令,即 /script SpellStopCasting()。这个指令的主要功能就是让正在进行施法动作的角色或者程序立即停止施法的相关操作。无论是在充满奇幻冒险的大型多人在线角色扮演游戏里,角色正在施展强大的魔法技能时,可能因为各种突发状况,比如受到敌人的打断技能影响,或者玩家自身改变策略不想继续施法了,就可以通过这个指令来终止施法进程;还是在一些涉及法术模拟或相关功能测试的程序场景下,当不需要继续进行施法模拟时,/script SpellStopCasting() 这个指令也能起到停止施法操作的关键作用。
/施放 炎爆术 等级(X)
“/script SpellStopCasting()”这个语句的含义是终止正在进行的施法操作。
盗贼的宏
一 盗贼攻击的宏
```lua
local targetName = UnitName("target")
if targetName == nil then
TargetNearestEnemy()
else
local canAttack = UnitCanAttack("player", "target")
if not canAttack then
AssistUnit("target")
end
end
```
/script If the number of combo points obtained is greater than or equal to 5, then cast the spell named "Eviscerate (Rank 8)".
```
local tooltip = GameTooltip
tooltip:SetInventoryItem("player", GetInventorySlotInfo("MainHandSlot"))
local rightText = GameTooltipTextRight3:GetText()
if rightText == " 匕首 " then
CastSpellByName(" 背刺 ( 等级 8)")
else
CastSpellByName(" 邪恶攻击 ( 等级 8)")
end
```
功能如下:要是目标身上呈现5灯状态的话,那就施展剔骨;倘若主手武器为匕首,那就打出背刺;要是主手为其他武器,则使出邪恶攻击。
猎人的宏
功能如下:(连续按下相关按键时)能够将宠物收回,并且让其进入冬眠状态,宠物会自动停止跑动,解除装死状态(这里的“释放装死”可理解为解除装死的状态)。要是已经脱离战斗状态的话,就会释放冰冻陷阱。
/script PetPassiveMode()
/script PetFollow()
If the unit is affecting the player's combat and the value is 1, then cast the spell named "假死". However, if the unit affecting the player's combat has a value of nil, then cast the spell named "冰冻陷阱 (等级2)". After that, start moving forward.
/script
If the unit affecting combat is the "player" (that is, if UnitAffectingCombat("player") equals 1), then perform the following actions. Make the forward movement stop, which means MoveForwardStop(). Also, halt the left - side strafing, namely StrafeLeftStop(), and stop the right - side strafing as well, that is StrafeRightStop().
二、功能:(需连续按数次来实现功能)在无目标的情况下,选择距离最近的目标;若目标为队友,则选定队友所指向的目标;当目标没有印记时,施加印记,若已有印记,则施放毒蛇钉刺;在攻击时会自动判断是否进行自动射击,若没有(自动射击的情况)则自动射击。
Create a function named PetDefensiveMode(). This function is likely to be related to the defensive behavior or state of a pet in a certain system or scenario. It could potentially handle various aspects such as how the pet responds to threats, protects itself, or maybe even defends its territory within the context where it exists.
/script
If the name of the "target" unit is nil, then target the nearest enemy.
Otherwise, if the "player" cannot attack the "target", then assist the "target" unit.
Else, if the "猎人印记" buff is not active on the "target", then cast the spell named "猎人印记 (等级3)".
Finally, let the pet attack.
If the "Hunter's Mark" buff is active on the target, then make the pet launch an attack.
/script
If the "猎人印记" buff is active on the "target" and the "毒蝎钉刺" buff is not active on the "target", then cast the spell named "毒蝎钉刺 (等级3)".
End
/script
If the action with ID 40 is not set to auto - repeat and the "猎人印记" buff is active on the "target", then cast the spell named "自动射击".
End
/施放 召唤宠物
附一些宏命令参数的意义
1.法术
1.1 使用“spellname(Rank X)”这个名称来施展法术(CastSpellByName)。
作用:施放指定名称的法术
1.2执行“CastSpell”这个操作,在操作中需要传入“spellID”(法术ID)以及“spellbookTabNum”(法术书标签编号)这两个参数。
作用:在由参数spellbookTabNum所指定的法术书标签里,施放处于参数spellID所指定位置的法术。
参数spellbookTabNum的值为“spell”或者“pet”。
1.3 ObtainSpellCooldown(spellID, spellbookTabNum)
作用:返回指定法术的冷却信息
返回值是这样的:会有2个值被返回,其一是冷却开始的时间,其二是冷却周期。要是不存在冷却情况的话,这两个值都会返回0。
1.4 SpellIsTargeting()
作用:判断是否有法术正在施放并等待选择目标
在某个程序或者代码体系之中,存在一个名为“SpellCanTargetUnit”的函数或者方法,而此处涉及到这个函数针对特定单元(这里表示为“unit”)进行操作的一个数值或者标识为1.5。也就是说,这个1.5或许是与“SpellCanTargetUnit”针对名为“unit”的这个单元的操作相关联的一个特定量值或者标识代码部分。
作用:判断那些正在等待目标选择的法术是否能够对由参数“unit”所指定的单位进行施放。
在版本1.6当中,有一个操作是针对名为“unit”的单位进行法术目标选定,这个操作被表述为SpellTargetUnit("unit")。
作用:将那些正在等待选择目标的法术,朝着参数“unit”所指定的单位释放。
1.7 SpellStopCasting()
作用:停止当前的施法
2.目标选择
2.1 ClearTarget()
作用:清除选定的目标
2.2 TargetUnit("unit")
作用:选定参数”unit”指定的单位为当前目标
2.3 TargetByName("name")
作用:选定指定名字的玩家为当前目标
2.4 TargetLastEnemy()
作用:选定前次曾选定的敌人为当前目标
2.5 TargetLastTarget()
作用:选定前次曾选定的目标为当前目标
2.6.1 目标:寻找距离最近的朋友(TargetNearestFriend)
这一表述可能是在某个特定的系统、程序或者规则体系下的一个功能名称或者操作指令。它明确指出了要将“寻找距离最近的朋友”作为目标。例如,在一个社交类的游戏当中,这个指令可能被用于让角色自动去寻找离自己最近的好友角色,以便进行互动,像是组队、交换物品之类的操作。又或者在一个团队协作的模拟场景中,此指令能够帮助某个成员快速定位距离自己最近的同伴,从而更好地开展合作任务,像共同完成某个特定的项目或者应对某种突发的情况等。
作用:选定位置最近的友方单位为当前目标
2.6.2 目标:寻找距离最近的队伍成员(Target Nearest Party Member)。
在某些游戏或者特定的团队协作场景中,往往会有这样一个需求或者功能设定,被标记为2.6.2,那就是去确定距离最近的同队伍成员。这一功能无论是在战斗场景下,比如需要快速支援距离自己最近的队友,还是在非战斗的团队协作情境里,像共同完成某个任务时进行快速的资源传递或者信息交流等,都有着重要的意义。它有助于提高团队协作的效率,使整个团队能够更加迅速、精准地做出反应。
作用:选定位置最近的队友为当前目标
2.6.3 目标为距离最近的团队成员(Target Nearest Raid Member)
作用:选定位置最近的团友为当前目标
2.7 TargetNearestEnemy()
作用:选定位置最近的敌人为当前目标
参数为“TargetNearestEnemy(1)”,其选择方式为逆序。
2.8 AssistUnit("unit")
作用:把由参数“unit”所指定单位的当前目标设定为自身的当前目标。
2.9 AssistByName("name")
作用:选定指定名字玩家的当前目标为自身的当前目标
澄拾游戏