初识lua是我在玩一个WOW私服的时候,大德鲁伊大佬把我领进来lua的大门,让我接触到了lua论坛。我首先通过抄写别人的Bee片段来熟悉语法构成。这个阶段我主要学习了条件判断、循环控制、函数定义等基本语法。下面是一个简单的if判断语句的例子:
[Lua] 纯文本查看 复制代码
luaif health< 100 then
print("Youneed to rest!")
else
print("Youare healthy!")
end这段代码在健康值小于100时打印“你需要休息!”的提示,否则打印“你健康!”的提示。通过不断地抄写和实践,我逐渐理解了条件判断在编程中的重要性,并熟悉了其灵活的编程范式。
随着对Lua语法的熟悉,我开始尝试改编别人的Bee片段,以满足我的特定需求。这个阶段我深入理解了Lua的特性和编程范式,例如,Lua的变量是弱类型的,这意味着变量可以在不同类型之间进行转换。下面是一个使用弱类型变量的例子:
[Lua] 纯文本查看 复制代码
[mw_shl_code=lua,true]lualocalx = 10 --x is an integer
x= "hello" -- now x is a string
[/mw_shl_code]
这段代码首先将变量x设置为整数10,然后将其转换为字符串"hello"。通过不断地尝试和探索,我逐渐培养了对Lua编程的直觉,并开始尝试编写出自己的Bee片段。
在独立探索的过程中,我开始尝试自己编写一些Bee片段。这个阶段我结合查询官方API([size=13.3333px]https://wowpedia.fandom.com/wiki/API_GetContainerItemLink)逐渐积累了一些实用的编程技巧和经验。下面是一个简单的函数定义的例子:
[Lua] 纯文本查看 复制代码
luafunctionadd(a, b)
return a + b
end
这段代码定义了一个名为add的函数,接受两个参数a和b,并返回它们的和。通过不断地学习和实践,我不仅掌握了Lua的语法和编程范式,还积累了一些实用的编程技巧和经验。这些经验不仅让我能够更好地理解和使用Lua,也让我能够编写出一些适用的小玩意。
下面说一个我写分解装备的脚本精力
首先我明确的目的分解装备,然后解构分解装备的过程:首先要找到背包里面的装备,然后再使用分解。
我们想办法遍历背包找出装备的位置可以用到for循环和官方API:itemLink= GetContainerItemLink(bagID, slotIndex) 其中itemLink字符串是|cffxxxxxx|Hitem:payload|h[text]|h|r,因此我们办法截取字符串q:sub(5,10)=="1eff00"5到10位就是绿装的代码因此我们可以得到代码
[Lua] 纯文本查看 复制代码
localq;
for i=1,400 do
q=GetContainerItemLink(i/35,i%35)
if q and q:sub(5,10)=="1eff00"
then RunMacroText("/cast 分解")
UseContainerItem(i/35,i%35)
end;
end然而在具体实践的过程中我们发现它会分解所有的绿色物品所以我们再加个条件IsEquippableItem(q)
最终我们得到了分解装备的完整代码localq;
[Lua] 纯文本查看 复制代码
for i=1,400 do
q=GetContainerItemLink(i/35,i%35)
if q and q:sub(5,10)=="1eff00"and IsEquippableItem(q)
then RunMacroText("/cast 分解")
UseContainerItem(i/35,i%35)
end;
end 再此我们还有一个办法可以改变一下让他变成一个宏就更好用了
[Lua] 纯文本查看 复制代码
/脚本localq;for i=1,400 do q=GetContainerItemLink(i/35,i%35) if q andq:sub(5,10)=="1eff00"and IsEquippableItem(q) then RunMacroText("/cast 分解")UseContainerItem(i/35,i%35) end end
此时我们我们就完成了装备分解的小东西特别鸣谢:大德鲁伊,破天两位大佬在我刚接触lua的时候给了很多帮助