WOW插件编写快速入手指南
- 格式:docx
- 大小:42.27 KB
- 文档页数:11
利⽤Lua脚本语⾔制作魔兽WOW插件1 WOW内编程办法第⼀种:打开WOW⾃带macro宏编辑窗⼝-->输⼊/script或WOW API直接制作简单宏(1)跪倒求婚Macro/kneel/say 如果你不嫁给我,我就⼀辈⼦不起来(2)切换WOW程序的窗⼝与全屏模式/script SetCVar("gxWindow",1-GetCVar("gxWindow"));/console gxRestart(3) 打开所有包/script OpenAllBags()/script CloseBag(X) (X=4~0)(4) ALT键切换⽤Alt切换⼤⼩冰箭/cast [modifier:alt] 寒冰箭(等级 1);寒冰箭(等级 11)⽤Alt切换AOE⽕/雪/cast [modifier:alt] 烈焰风暴(等级 6);(等级 6)⽤Alt切换⼤⼩魔爆术/use 莫阿姆之眼/cast [modifier:alt] 魔爆术(等级 1);暴风雪(魔爆术 6)(5)饰品+技能(多饰品+stopcasting )/use 赞达拉英雄护符/cast ⽕球术(等级 12)(6)闪烁宏(按⼀次闪现后需再按⼀次以便调回⽅向)/stopcasting/cast 闪现术/script FlipCameraYaw(180);(7)招BB并⽴即攻击⽬标(连按2次)/cast [nopet] 召唤⽔元素/stopmacro [target=pettarget,exists]/petattack第⼆种:打开WOW⾃带macro宏编辑窗⼝-->结合WOW API+Lua制作复杂宏(255字以内)⽬标:把前4个包的灵魂碎⽚全放到最后⼀个包内/scriptbag=0 cw=1 sc=1 --定义好变量,bag是包的编号,cw表⽰查找包的槽位,sc指向最后⼀个包内的槽位for bag=0,3,1 do --从0号包开始,到3号包结束,最后⼀个包不搜索。
〓插件新手指南〓※游戏根目录树状图(更新材质文件夹详细分类简洁说明):< World of Warcraft >┣< Interface > ---接口┃┣< Addons > ---插件存放文件夹┃┃┗< addons' Folders > ---各类单体插件文件夹┃┣以下皆为游戏内部材质替换的相应文件夹,与Addons文件夹在同目录下┃┣<AUCTIONFRAME>---拍卖行框体┃┣<BattlefieldFrame>---战场队列框体┃┣<Buttons> ---界面按钮┃┣<ClassTrainerFrame>---训练师框体┃┣<COMMON>--输入框/复选框等┃┣<DialogFrame> ---对话框┃┣<FriendsFrame> ---好友框体┃┣<Glues> ---游戏登录界面材质(如:冰龙、游戏登录的输入框/帐号复选框,Loading画面等)┃┣<ItemTextFrame> ---物品文本框┃┣<Icons> ---图标替换材质┃┣<KeyBindingFrame>---按键绑定框体┃┣<LFGFrame> ---寻求组队框体┃┣<LootFrame> ---拾取框┃┣<MacroFrame> ---宏界面框体┃┣<MailFrame>---邮箱框体┃┣<MERCHANTFRAME>---商人贩卖界面框体┃┣<Minimap>---小地图框体┃┣<MoneyFrame>---金钱框体┃┣<PaperDollInfoFrame>---玩家界面各类框体元件,如上翻,下拉按钮,装备管理按钮,滚动条等┃┣<PetActionBar> ---宠物动作条框体┃┣<PetPaperDollFrame>---宠物面板┃┣<PetStableFrame> ---宠物技能界面框体┃┣<QuestFrame> ---任务框体┃┣<RAIDFRAME> ---团队框体┃┣<ShapeshiftBar> ---姿态切换栏动作条┃┣<Spellbook> ---法术技能框体┃┣<Stationery> ---暴雪官方信纸材质,比如GM寄给你的信的背景材质┃┣<TALENTFRAME> ---天赋框体┃┣<TargetingFrame> ---目标框体┃┣<TAXIFRAME> ---飞行地图框体┃┣<Tooltips>---界面/姓名板框体边框,背景材质┃┣<TradeFrame> ---交易框体┃┣<TradeSkillFrame> ---商业技能框体┃┗<WorldMap>---世界地图材质┗< WTF > ---插件配置文件┣Config.wtf ---游戏系统设置文件┗< Account >┗< Your Account Name > ---你的登录帐户┣< SavedVariables > ---全局插件设置,此帐户下所有角色都默认此设置┣bindings-cache.wtf > ---全局按键绑定,此帐户下所有角色都默认此设置┣cache.md5 ---MD5验证文件┣macros-cache.txt ---宏设定缓存┣macros-local.txt ---宏设定┣SavedVariables.lua --全局部分频道及游戏性设定┣SavedVariables.lua.bak ---全局部分频道及游戏性设定备份┗< Your Server Name > ---你的服务器名┣< Your Role Name 1 > ----你的角色名字1┃┣< SavedVariables > ---角色插件设置,该设置只针对此角色设定┃┣AddOns.txt ---插件的启用禁用设定信息文件┃┣camera-settings.txt ---游戏镜头设置┃┣layout-cache.txt ---框体层级设置┃┣bindings-cache.wtf ---个人按键绑定储存信息┃┣cache.md5 ---MD5验证文件┃┣macros-cache.txt ---宏设定缓存┃┣macros-local.txt ---宏设定┃┣SavedVariables.lua ---个人部分频道及游戏性设定┃┗SavedVariables.lua.bak ---个人部分频道及游戏性设定备份┣< Your Role Name 2 > ---你的角色名字2┣ ...以此类推Tip:一般我们为了在网吧也用上自己电脑上的插件配置,而保存addons和wtf这2个文件夹的含义也就不言而喻了~~所以如果你要在其他机子上保留一些设置,只需要保存相应的文件,替换系统默认生成的即可※如何安装一般来说,从网站或者论坛下载下来的插件都是RAR、ZIP、7z的压缩包形式,压缩包里一般包含以插件名字命名的文件夹、一些说明文档,一些插件网址的链接的广告,而我们要做的只是把这个插件文件夹解压缩到你X:\World of Warcraft\Interface\AddOns这个路径下,只有放到AddOns 这个文件夹里,插件才能被WOW编译程序导入加载发挥其作用。
话说5.3开荒完没什么事做,RL跑来跟我说,Grid好久都没更新了,卡得要命,你去寻一款团队框架来吧。
我说好的啊…于是尝试了Grid2、ouF、Healbot等都感觉不尽人意,终于又偶然地遇到了VuhDo…虽然回想起来LZ曾被他的设置虐了千百遍,为了我HD 7570M的破笔记本显卡,初恋我来了……当然还有别的原因。
神牧在2T16套装效果的支持下,光影相生变得异常强大。
CTM没玩过神牧的人可能受不太了这种治疗模式。
而VuhDo提供了非常友好的“打地鼠”模式设置,一定程度上降低了操作的繁琐程度。
ps.此贴里各种大神出没,LZ也在努力学习中……话说这软件真是潜力无穷啊设置命令“/vuhdo opt”可以移动位置…下载WTF的童鞋也一定要自己设置、适应一下~Q:为什么不用Grid呢?A:Grid虽然更新了但是对我来说还是有点卡,读祷言、环需要下载专门的模块,鼠标施法做的略微粗糙。
当然我不否认Grid是一款很强大的治疗框体,但是VuhDo给我带来了更多惊喜。
Grid和ouF更偏向于强化暴雪自带的团队框架,而VuhDo更专注于治疗者的使用。
Q:VuhDo有什么优点和缺点吗?A:优点是占内存小,可定制性高,能简化治疗操作,更新也比较方便。
而缺点也很明显,首先是第一次设置非常复杂,常常有人无法保持心灵专注设置并适应,最终放弃;还有一个缺点就是依赖性特别强,真的真的非常强……Q:看完了我还是不会设置怎么办?A:最好是再看几遍。
如果还是看不懂,而且非常想体验一下这款插件的话,[我的WTF下载地址]根据个人习惯不同大概需要改一些设置。
如果你现在心平气和、心如止水,可以继续往下看了……首先我们需要删除原有的团队框架,并下载一个VuhDo插件,解压后安装在world of warcraft\Interface\AddOns里。
登陆游戏会看到一个不怎么好看的团队框架,这就是没有经过设置的VuhDo,下面我们来调试一下。
在聊天框输入“/vuhdo opt”进入设置界面。
魔兽世界懒人宏编辑宏制作在魔兽世界中,宏是一种非常实用的工具,可以帮助玩家简化操作、提高效率。
对于那些想要在游戏中更轻松、更便捷地进行战斗和日常活动的“懒人”玩家来说,学会编辑和制作宏绝对是一项必备技能。
首先,我们要明白宏到底是什么。
简单来说,宏就是一系列指令的集合,玩家可以通过输入一个简单的命令来执行这些指令。
比如,你可以把多个技能组合在一个宏里,只需点击一次就能依次释放,或者实现一些特定的条件判断和动作。
那么,如何开始编辑宏呢?第一步,打开游戏中的宏界面。
在游戏菜单中,通常可以找到“宏”这个选项。
点击进入后,你会看到可以创建新宏的按钮。
接下来,给你的宏起一个容易识别的名字。
这个名字最好能清楚地反映出宏的功能,比如“爆发输出宏”“治疗急救宏”等等。
然后就是关键的指令编写部分了。
魔兽世界中的宏指令有很多种,常见的比如“/cast”(释放技能)、“/use”(使用物品)、“/target”(选择目标)等等。
比如说,你想制作一个简单的输出宏,让角色依次释放“技能A”“技能B”和“技能C”,那么宏指令就可以这样写:```/cast 技能 A/cast 技能 B/cast 技能 C```这样,当你点击这个宏的时候,角色就会按照顺序释放这三个技能。
但这只是最基础的用法,宏还可以加入一些条件判断,让它更加智能。
比如,你可以设置只有在特定的目标或者特定的状态下才释放某些技能。
假设你是一个治疗职业,想要制作一个只有当队友血量低于 50%时才释放治疗技能“治疗术”的宏,指令可以这样写:```/cast target=队友名字, health<50% 治疗术```这里的“target=队友名字, health<50%”就是一个条件判断,表示当指定队友的血量低于 50%时。
另外,宏还可以实现一些循环操作。
比如,你想让某个技能每隔一段时间自动释放,就可以使用“/in”指令。
比如:```/in 5 /cast 技能 D```这表示每隔 5 秒就释放一次“技能D”。
快速入门WordPress插件开发和定制第一章:介绍WordPress插件开发的基础知识WordPress插件是一种用于扩展和定制WordPress功能的软件。
在开始开发和定制WordPress插件之前,首先需要了解一些基础知识。
在这一章节中,我们将详细介绍WordPress插件的基础知识。
1.1 什么是WordPress插件WordPress插件是一个由PHP语言编写的软件模块,可以集成到WordPress系统中,用于扩展和定制其功能。
插件可以添加新的功能、修改现有功能、优化性能以及改变外观等。
1.2 WordPress插件的开发环境搭建在开发WordPress插件之前,需要搭建开发环境。
首先,安装本地服务器软件,如XAMPP或MAMP,以模拟WordPress的运行环境。
然后,下载并安装WordPress软件,创建一个本地站点。
1.3 WordPress插件开发的基本结构一个基本的WordPress插件由一个主插件文件和必要的附属文件组成。
主插件文件应该包含插件的初始化代码和功能定义,附属文件可以是样式表、脚本文件、模板文件等。
第二章:WordPress插件的创建与安装在第二章中,我们将学习如何创建和安装WordPress插件。
这是插件开发的第一步,掌握这些知识后,我们就可以进一步定制和扩展插件的功能。
2.1 创建插件文件夹和主文件首先,在WordPress的插件目录中创建一个新的文件夹,命名为插件的名称。
在该文件夹中,创建一个主插件文件,命名为插件的名称加上".php"后缀。
2.2 编写插件的基本代码打开主插件文件,编写插件的基本代码。
插件的基本代码包括插件的基本信息、初始化函数和其他功能函数。
这些代码将决定插件的功能和行为。
2.3 将插件文件上传到WordPress将插件文件夹上传到WordPress的插件目录中,然后在WordPress后台的插件管理页面中启用插件。
程序员快速入手指南作者:炽火Zero ℃原文发表于:猫扑魔兽板块实用资料区引言本文将以一般的软件编程的眼光审视魔兽插件。
剥去其难解的外皮,让你有个清晰的大致了解。
“一针见血”是技术性教学文章的最高境界——炽火魔兽插件的架构插件工程——每个插件就是一个项目(或称为工程)。
目录位置:魔兽目录\Interface\Addons\项目名\工程描述——即后缀名为Toc的文件。
描述工程的必要信息,也是项目载入时的总入口。
屏幕布局——布局描述使用XML文件。
使用各种标签代表特定对象(控件),并描述相互位置及各种特征属性。
功能脚本——脚本文件使用LUA语言。
使用WoW提供的API函数编写代码实现各种具体操作。
TOC ——工程描述文件后缀名为toc的文件就是工程文件,包含工程的基本信息。
主要包含以下内容:切换行号显示1 ##Interface:适用的魔兽版本号2 ##Title:显示的标题(默认语言)3 ##Notes:显示的说明(默认语言)4 ##Title-zhCN:特定语言的标题(简体中文)5 ##Notes-zhCN:特定语言的说明(简体中文)6 ## Author: 作者(不显示)7 ## Version: 版本8 ## eMail: 如题9 ## UIType: 插件类型10 ##Dependencies:依赖的插件11 ##RequiredDeps:必须依赖的其他插件12 ##OptionalDeps:可选倚赖13 ##SavedVariables:统一存放的变量14 ##SavedVariablesPerCharacter:按角色存放的变量15 ##LoadOnDemand: 1 (调用时加载)16 ##LoadWith:当指定插件加载时才加载,前提是调用时加载17 ##DefaultState: disabled 默认状态18 ##Secure:安全(功能未知)19 # 注释1 dklasjfkasdj20 Script.lua -- 脚本文件21 % 注释2 dskajfklasdjfklsdaj22 Layout.xml -- 布局文件∙‘#’和‘%’为行注释符号。
∙而以##开头的注释行可就不光是好看的了,这些都是插件的工程描述标记,要是不注意插件根本就不会载入。
∙示例中彩色的标记表示标准标记,每个标准标记都有特定功能。
其它eMail, Author等为扩展标记,只有注释功能。
∙工程标记之后的部分为包含文件列表,脚本文件和布局文件,数量随意,但每种至少要有一个:一个lua或一个xml。
包含文件列表中的顺序对应着载入顺序,非常要紧!!!!如果要写中文,一定要将toc文件保存为UTF-8格式,否则无法正确识别。
方法很简单:用记事本打开,另存为,选择编码就行;文件格式要选所有文件,否则会存成txt文件。
建议你多下几个插件,打开看看,参考一下。
XML ——屏幕布局描述文件在魔兽插件中使用XML来描述UI的屏幕布局。
∙注释符号:<!-- 注释内容--> 。
∙如果要写中文注释,必须在XML文件开头添加一行:<?xml version="1.0"encoding="UTF-8"?>XML文件主要内容一个XML文件往往包含以下内容:Ui标签<Ui>是最上级标签。
其中的schema用来语法检查,如果你的XML编辑器支持还可以用来代码提示。
否则对我们来说用处不大。
可以简化为:或者更加简化,不太规范但是可用:<Ui>布局内容</Ui>Script标签在Ui标签中最先包含的往往是<Script file="lua 文件名"/>表示在此处载入某lua文件。
注意这里也有顺序哦,如果发现变量、函数不存在,检查一下看是不是顺序问题。
这样一来我们有了两种方法载入lua文件。
在xml中载入lua实际上不是非如此不可的,有时候没必要用xml的就直接在toc中放个lua,把xml省掉。
这样做你必须在lua中有个入口,也就是有个裸语句(不在任何function中的)进行事件注册或者调用函数。
Frame标签XML中最主要的一个标签是<Frame></Frame>。
所谓Frame意指框架,就是用来包含其他东西的。
UIParent是最上层的框架,所有的UI都包含在其中。
与之并列的是一个特殊框架World Frame,包括FPS、截图。
其它控件一般都是Frame的子类,都包含类似的属性和子标签:背景、贴图、边框、事件处理。
如:<button> <slider> <statusbar> 等等。
Frame标签就像一个透明的玻璃容器。
你可以仅用它来装载其它部件,当然也可以给他添加贴图显示出来。
记得游戏中按下“Alt+z”的效果了么,被隐藏的就是UIParent。
容器被隐藏了,里面装的东西也就透明了。
子标签和属性∙UI对象的继承关系UIObject始祖,所有其他UI对象都由它继承。
LayoutFrame布局框架,继承UIObject,主要有一些布局函数,(这是一个虚类不可创建实例)。
LayoutFrame的重要函数:GetParent() SetParent() GetAlpha() SetAlpha() SetWidth() SetHeight()∙Frame∙框架,继承Layout Frame,最重要的UI对象,屏幕上可见的UI对象都是它的子类,一般用来在上面放置其他控件。
LUA ——脚本代码文件更深入的学习请阅读本站的其它文章:ProgrammingInLua,魔兽Api索引如果你有一门以上的语言基础,那么学习lua语言不是什么难事。
lua是一种灵活的语言,关于他的来源我并不知道多少,只谈一下自己的感受。
基本语法和Basic 类似,或者说更像是Asp的脚本语言吧。
但同时他又借鉴了Java的长处,更加的智能化、灵活。
写法多样又方便不同习惯的人上手。
lua语法很简单,相关资料也很多,我只列出需要注意的部分。
基本语法摘要∙行注释符号:“--”∙段注释符号:“--”“”;实际上还是行注释,而“”“”包围的部分编译器会认为是一行。
∙行结束符号:用“;”或者不写都行,看你的习惯了,只要没有歧义就好∙NULL空值:在这里是nil∙没有指针:和Java一样,没指针的意思就是所有变量都是引用。
要注意不是拷贝的副本,改变引用变量原始变量会同时改变。
∙变量作用域:默认是global(全局作用域),加上local前缀就是局部的了(文件内部作用域)。
∙函数作用域:和变量一样默认是全局作用域。
实际上函数也是变量。
∙数组,集合:只有一种,类似于。
我也不知道类似什么。
写法也很随意,举例:关于数组的就看上面的“Lua脚本语言入门”,讲的很清楚。
∙关于布尔变量:要注意的是只有nil和false表示false,其他一律为true(包括0),而false是要占用引用内存的,建议把false一律换成nil。
∙关于布尔运算:lua里的布尔运算是很有趣的,也相当合理。
注意运算的值并不是布尔值,而是其中一个操作数的值。
是不是有点晕?其实很合理。
如果你一时绕不清楚,就只要记住结果好了。
∙布尔运算的妙用:我坚定地认为lua中的布尔运算实际上不是布尔运算,而是简化了的条件语句。
比如:对象在lua里,框架和控件都作为对象存在。
要引用在XML中定义的框架或控件,使用如下语句:对象的属性属性在对象中就像集合成员一样,属性引用符号为:“.”,例如:frame.attribute1对象实际上就是一个特殊集合!!对象的属性同样可以用集合方式引用:frame["attribute2"]。
函数调用也是一样,见下面说明。
函数函数定义类似Basic,例如:覆盖函数函数定义实际上是把一个变量指向一段代码。
前面举的例子含义是:把变量add指向一段函数代码。
因此,我们可以很方便的覆盖(Override)Blizzard的系统函数,只要把系统函数变量指向自己定义的函数代码就可以了。
以覆盖上面的add函数为例,有几种方法:对象的函数函数在对象中有些特别,调用符号为冒号:“:”,例如:frame:Show();函数实际上是一种特殊变量它指向一段代码,更一般的调用符号和一般的对象属性相同,为“.”。
而特殊符号“:”实际上是在调用的时候多加了一个参数“self”,指代调用者本身。
例如:函数的默认参数有一些函数参数比较特殊:对象事件处理函数,有一些有默认参数,例如所以在定义这些函数的时候可以不写参数:但是要注意:如果函数定义里写了参数,那么调用函数的时候一定要写参数!!!!否则认为参数为nil。
例如:之所以有默认参数存在是因为在动态改变事件处理函数的时候不能写参数,例如默认参数的原理经过多方考证,这些默认参数均为全局变量。
实现默认参数得流程为:对象触发事件时会调用对应函数,在其中将全局变量即默认参数赋值。
例如xml中有如下描述:虽然不知道WoW虚拟机确切的处理方式,但我们可虚拟如下:默认参数还包括this,但是self 不是全局变量。