wow插件补充说明篇

本文详细介绍了Wow插件的TOC文件结构,包括Interface、Title、Notes等字段的作用,并讲解了lua文件的加载方式。此外,还讨论了插件的系统事件监听、自定义宏命令、数据保存以及延时处理和定时器的实现,是Wow插件开发者的实用指南。
摘要由CSDN通过智能技术生成

关于TOC文件

  • Interface - 标记该插件用于wow的哪个游戏版本,如果标记值低于当前游戏版本将不能被加载,除非用户选择加载过期插件,所以,大版本更新时,最好修改这个标记值来符合新的游戏版本,可以在进入游戏后使用宏来获得当前游戏的版本号: /run print((select(4, GetBuildInfo())))
  • Title - 插件的名称,不需要和插件名一致,会被显示在选择人物界面的插件列表中。如果需要实现不同语种的客户端显示不同的文字的话(本地化机能),可以修改标签名,在标签名后加上一个"-",再跟上客户端的语种名就可以了,比如国服的实际标签名: Title-zhCN。如果客户端的语种对应的标签不存在,那么就使用默认的Title标签的值。
  • Notes - 在插件列表中,鼠标移到插件名称上时显示的提示信息。同样,可以用类似-zhCN这样的后缀来做本地化申明。
  • RequiredDeps, Dependencies, 或者任意以 “Dep” 开始的字符串 - 一些以逗号分割的其他插件的名字,表示本插件必须在这些插件都存在,且都已经被加载的情况下,才能被加载,也就是插件依赖。
  • OptionalDeps - 一些以逗号分割的其他插件的名字,表示如果这些插件存在,那么这些插件需要在本插件加载前,被加载,可选依赖。
  • LoadOnDemand - 如果这个值被设置为1,那么这个插件不会在游戏开始时就加载,而是由其他插件在需要时,另行加载,wow自带的一些插件都是如此设置的。
  • LoadWith - 一些以逗号分割的其他插件的名字, 如果本插件的LoadOnDemand为1,那么,当这些插件在游戏开始被加载时,也加载本插件。
  • LoadManagers - 一些以逗号分割的其他插件的名字, 如果这些插件都不存在,那么客户端会自动加载本插件,如果这些插件中的一个存在,那么,本插件将按照LoadOnDemand设置为1的情况处理。
  • SavedVariables - 一些以逗号分割的变量名称,这些变量一般是保存在游戏中的Lua全局环境中的表,这些变量的值在退出游戏时将被保存到硬盘上,在下一次游戏开始再被加载进入游戏,可以用来保存用户的配置信息等。这些变量的值对同一账户在同一服务器的所有角色都是通用的。
  • SavedVariablesPerCharacter - 类似SavedVariables,不过,每个角色都有各自不同的变量值,也就是说,SavedVariables适合保存通用配置,SavedVariablesPerCharacter适合保存个人配置。
  • DefaultState - 本插件安装后默认是否开启,如果设置成 “disabled”,那么只有在插件列表中勾选本插件后,才会被加载。默认值 “enabled”
  • Author - 作者名字
  • Version - 插件自身的版本号

关于lua文件加载

假设插件名为TestAddon,有两个Lua文件test.lua,another.lua`。

下面是加载插件的代码:

-- Load TestAddon
local TestAddon = {}

f = loadfile("test.lua")
f("TestAddon", TestAddon)

f = loadfile("another.lua")
f("TestAddon", TestAddon)
-- 上面两个参数,第一个表示插件名,第二个是一个table(这个table可以作为各个文件间交换数据的存储位置)

test.lua:

local addonName, addon = ...

print(addonName .. " is loaded.")

addon.TestAddon = 123

another.lua:

local addonName, addon = ...
print("TestAddon is " .. addon.TestAddon)

每次书写全局变量都需要addon.,开头也是很麻烦的事情,下面推荐一种普通插件的写法:

test.lua中:

-- 插件第一个lua文件中,以下一行代码确保代码以addon为环境,而不是_G
-- 在addon环境中可以访问_G的任意思变量;
-- 所定义的全部全局变量会保存在addon表中,而不是_G;
setfenv(1, setmetatable(select(2, ...), {
    __index = function(self, key) 
        local v = _G[key];
        rawset(self, key, v);
        return v
    end
}))

function testA()
    print("test case A")
end
<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值