编写第一个WOW插件

目录

  • 插件的基本构成
    • 插件目录
    • toc文件
    • lua文件
    • XML文件
    • 其他文件
  • 第一个插件的编写
    • 创建一个插件目录
    • 创建CombatDet.toc文件
    • 创建CombatDet.lua文件
      • 对进入/退出战斗做出响应(提示音&文字提醒)
  • 加载插件并实测:
    • 加载自定义插件
    • 游戏内测试

插件的基本构成

插件目录

要让WOW客户端识别一个插件,首先要在指定位置上设置一个独立的目录。WOW会将这个目录中的所有内容扫描识别成一个插件。对于windows系统而言,这个独立的目录必须位于Interface/AddOns内。

toc文件

toc文件 = table of content file,中文翻译为内容表格文件,他必须和插件目录同名。该文件内部包含插件的一些描述性信息包括:标题、插件描述、作者、插件中需要加载的文件等。

lua文件

lua是一门脚本语言。通常游戏开发中,游戏引擎负责进行交互式图像应用处理,脚本语言则负责组织游戏内容和逻辑部分(调用游戏引擎内部机能)。因此在插件中,lua文件会实现插件的动态行为。

XML文件

XML是一种标记语言,与HTML不用,主要用来进行数据传输。在很多UI框架中,他负责定义UI界面的外观。WOW插件的可视元素通常由它来定义。

其他文件

其他文件主要是多媒体文件,例如音乐和图片。

第一个插件的编写

创建一个插件目录

在Interface/AddOns目录中创建目录CombatDet.

创建CombatDet.toc文件

toc文件必须和目录同名,因此应为CombatDet.toc。其内容至少应该包含:

  1. 匹配的游戏版本号。如"## Interface: 20300",20300对应于游戏版本2.0.3。
  2. 标题。如"## Title: Combat Detection",指明该插件用于检测是否进入或离开战斗状态。
  3. 描述。如"## Note: This addons is used to detect the state of combat"。
  4. 插件启动时需要加载的文件。如"combat_det.lua"

创建CombatDet.lua文件

对进入/退出战斗做出响应(提示音&文字提醒)

  1. WOW游戏本身是通过一系列Game Event驱动的,进入或退出战斗时,都会产生对应的事件上报到游戏客户端的应用层。进入/退出战斗对应的事件名为"PLAYER_REGEN_ENABLED"、“PLAYER_REGEN_DISABLED”。
  2. 知道了进入/退出战斗的事件名称,只需要为lua脚本注册事件,并提供对应的回调函数即可。
  3. 因为所有的Game Event通常都需要通过UI处理并反应出来,因此我们需要创建一个UI元素,并利用该元素注册对应的事件:
    if not MyCombatFrame then
    	CreateFrame("Frame", "MyCombatFrame", UIParent)
    end
    MyCombatFrame:RegisterEvent("PLAYER_REGEN_ENABLED")
    MyCombatFrame:RegisterEvent("PLAYER_REGEN_DISABLED")
    
  4. 创建处理函数并作为回调注册,类型为OnEvent,即发生事件时调用。
    function MyCombatFrame_OnEvent(self, event, ...)
    if event == "PLAYER_REG_ENABLE" then
    	ChatFrame3:AddMessage("退出战斗!!!")
    	PlaySoundFile("Interface//AddOns//CombatDet//exit_combat.mp3")
    	elseif event == "PLAYER_REGEN_DISABLED" then 
       	ChatFrame3:AddMessage("进入战斗!!!")
       	PlaySoundFile("Interface//AddOns//CombatDet//enter_combat.mp3")
       	end
    end
    MyCombatFrame:SetScript("OnEvent", MyCombatFrame_OnEvent)
    
  5. PlaySoundFile用于播放音频,且播放时不会有fade out。
  6. ChatFrame3:AddMessage用来向聊天窗口3输出文本。

加载插件并实测:

加载自定义插件

下图是角色选择窗口中打开的插件列表,其中能够看到我们刚才定义好的Combat Detection插件
编写第一个WOW插件_第1张图片

游戏内测试

可以看到,自定义"聊天"窗口是第三个聊天窗口,可以收到战斗状态的提示。
编写第一个WOW插件_第2张图片

你可能感兴趣的:(WOW,AddOns,lua,游戏插件)