魔兽世界是一款全球最受欢迎的网络游戏之一。在这个游戏中,玩家可以选择不同的角色来探索一个虚构的世界。除了任务和探索,玩家还可以进行一些休闲活动,如钓鱼。不过由于钓鱼收杆需要在游戏中不断移动鼠标,时间比较长,所以很多玩家都不是很喜欢钓鱼。
幸运的是,有一些魔兽世界钓鱼玩家开发出了一些“宏”,可以帮助玩家一键钓鱼收杆。在这篇文章中,我们就来看看其中一个魔兽世界怀旧服一键钓鱼收杆宏的具体实现。
该宏的代码如下:
```
/cast [nochanneling:Fishing] Fishing
/run local s={"Shift","Ctrl","Alt"}for _,v in pairs(s) do if IsShiftKeyDown()then s=v break end end AutoLootMailDelay=GetTime()local f=CreateFrame("frame")f:RegisterEvent("MODIFIER_STATE_CHANGED")f:SetScript("OnEvent",function(_,n,r)if(n~="LSHIFT")and(n~="RSHIFT")then return end if IsModifierKeyDown()then return end if r==1 then s=""else s=v end end)local o=CreateFrame("FRAME")o:RegisterEvent("BAG_UPDATE")o:RegisterEvent("PLAYER_ENTERING_WORLD")o:SetScript("OnEvent",function()if GetTime()-AutoLootMailDelay>5 and not CursorHasItem()then for c=0,4 do for d=1,GetContainerNumSlots(c)do local e={GetContainerItemInfo(c,d)}if e[1]and e[13]and string.find(e[13],".+")then AutoLootMailDelay=GetTime()UseContainerItem(c,d)end end end end end)
```
该宏的功能相当强大,能够在钓鱼时使用技能Fishing,判断是否有Shift键按下,自动拾取附件,实现一键钓鱼收杆。
具体来说,这个宏可以分为三个部分。
第一部分是钓鱼技能的使用,用到了游戏内置的技能“Fishing”。这部分代码如下:
```
/cast [nochanneling:Fishing] Fishing
```
Fishing是一个游戏内置的技能,在钓鱼时非常有用。该代码简单地使用该技能,让角色开始钓鱼。
第二部分是判断Shift键是否按下,实现自动拾取附件功能。这部分代码如下:
```
local s={"Shift","Ctrl","Alt"}
for _,v in pairs(s) do
if IsShiftKeyDown()then
s=v
break
end
end
AutoLootMailDelay=GetTime()
local f=CreateFrame("frame")
f:RegisterEvent("MODIFIER_STATE_CHANGED")
f:SetScript("OnEvent",function(_,n,r)
if(n~="LSHIFT")and(n~="RSHIFT")then
return
end
if IsModifierKeyDown()then
return
end
if r==1 then
s=""
else
s=v
end
end)
```
这部分代码主要用于检测Shift键是否按下。如果按下,s变量的值就被设置为"Shift",否则s保持原值。同时,该代码还创建了一个frame来注册MODIFIER_STATE_CHANGED事件,当Shift键的状态改变时,会触发该事件。事件的回调函数会判断Shift键是否按下,并作出相应的响应。
第三部分是自动拾取附件功能的实现。这部分代码如下:
```
local o=CreateFrame("FRAME")
o:RegisterEvent("BAG_UPDATE")
o:RegisterEvent("PLAYER_ENTERING_WORLD")
o:SetScript("OnEvent",function()
if GetTime()-AutoLootMailDelay>5 and not CursorHasItem()then
for c=0,4 do
for d=1,GetContainerNumSlots(c)do
local e={GetContainerItemInfo(c,d)}
if e[1]and e[13]and string.find(e[13],".+")then
AutoLootMailDelay=GetTime()
UseContainerItem(c,d)
end
end
end
end
end)
```
该代码为自动拾取附件功能的实现。该功能非常智能,只有在过了一段时间后并且鼠标没有物品的时候才会触发。同时,该代码还会遍历所有容器,查找有没有带有附件的邮件,并使用物品自动拾取这些附件。
综上所述,这个魔兽世界钓鱼收杆宏非常实用,既能自动钓鱼,又能自动拾取附件。同时,它的代码也很复杂,需要结合魔兽世界的游戏机制来编写。如果您想在游戏中自动钓鱼收杆,可以利用这个宏大大提高效率,赚取更多的游戏内货币或物品。