问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

像DBM这种插件是怎么制作的?

发布网友 发布时间:2022-04-30 04:53

我来回答

1个回答

热心网友 时间:2023-10-14 07:49

1.  准备开始   A.  可以选用的工具   第一步必须明白将要做些什么,但是为了能够正确的开始,我们必须选择一些编写脚本的工具。我想首先重要的一点是编辑器(用专业术语来说就是IDE-integrated development evironment), 这可能有许多种选择。由于我们编写脚本的语言是LUA(译注:一种脚本语言,参见:www.lua.org),我们需要的编辑器应当是针对这种语言的,以下十供选择的列表:  blua.sourceforge.net/ (译注:sourceforge.net是一个著名的开源项目网站)   B:Lua – 这是首当其充的脚本编辑工具之一,它提供了强大的IDE所提供的功能,足够用来编辑WOW的UI。而且它是用Java语言编写的,不论在何种操作系统中尼都能运行它。   www.ideais.com.br/luaeclipse/ (译注:一个运用于Eclipse IDE下的插件,建议使用过Java语言的专业人士使用。)  Lua Eclipse – 这是另外一个Java环境的IDE,我没有用过这个IDE(译注:本文中的我不代表译者),它基于Eclipse 平台(译注:请参见www.eclipse.org),它是一个有着多种功能的插件,我确信这是一个很好的工具。  editplus.com/ (译注:editPlus是类似于UltraEdit的文本编辑器)   EditPlus – 这是替代记事本程序的有效工具,这也是我编辑LUA的工具。它有着多种你所需的功能,而且它有着LUA语言的Schema(译注:Schema可以理解为一种模板,它规定者文件如何定义等内容)。但是它有着30天的评估期,你得注册拥有它。   这只是3种建议,我认为一旦掌握了B:Lua后,你就能够更好地使用其它工具了。   B.目标:WOW文件   你拥有了编辑器后,一切只是刚刚开始,我们需要一些工具来编辑WOW。首选的工具是WinMPQ,下载地址:shadowflare.gameproc.com/dwnload.html#WinMPQ   你需要运行库(VB4运行库)来运行它(译注:一般windows都安装了),有了它你就可以打开游戏目录中的MPQ文件或者MoPaO 文件。MPQ是暴雪公司存储游戏资料的文件格式,如果你有兴趣研究的话,请参阅:www.campaigncreations.org/starcraft/inside_mopaq/index.htm  有了WinMPQ,你就可以解开文件内容,并且打包到游戏安装目录。   了WinMPQ,你就可以解开文件内容,并且打包到游戏安装目录,里面就是你所需的所有内容。Interface.mpq文件里面有基本的界面数据,并且有着大量柯作为例子的文件。Patch.mpq文件里有着所有的补丁内容,在游戏运行时将覆盖所有基础的文件。打开WinMpq,我们将所有基础界面文件作为例子来使用。下面还将示范如何保证数据与最新的补丁保持一致。使用“Open”选项打开interface.mpq文件(该文件在游戏安装目录下),找到一个叫FrameXML的文件夹(还有一个叫glueXML的文件夹,不去管它),选中目录下所有文件并且解压到游戏安装以外的目录下。同样,打开Patch.mpq,其中不仅仅有界面文件,还有许多更新文件。打开Interface\FrameXML目录,将其中的内容解压到刚才interface.mpq文件的解压目录中,并覆盖已有的文件。这样我们就有了一份最新的游戏界面FrameXML目录数据作为参考。(你也可以用WinMPQ 解压其他的文件,例如音乐文件等)。   2.有了目标之后   一切准备就绪,让我们开始制作第一个插件吧!   首先你的知道具体文件的安排,哪个文件是做什么的。让我们看以下魔兽世界的安装吧。其中有许多目录,我们将要操作的目录是Interface目录(若不存在请创建)。在该目录下有3个主要的目录:   FrameXML: 有所有暴雪提供的界面,你将打交道的文件都在这。   GlueXML: 包含“游戏之外”的界面,例如登入界面,服务器选择,角色创建等。你不太需要关心这些文件。   AddOns: 所有游戏角色的模型。   在AddOns目录下每个角色都有其所有的目录并且有一个内容表。   3.开动!   A.  初始化   我们要开始创建“Hello world”啦!(译注:“Hello world”常指第一个程序),创建1个叫hello_world的目录在AddOns下,即Warcraft/Interface/AddOns/hello_world。在目录中建立1个叫hello_world.toc的文件,这就是内容表了,它定义了WOW该如何装载插件内容。例如以下就是文件内容:   ## Interface: 4114   ## Title: Hello World   ## Notes: The obligatory hello world script – WoW-style!   ## OptionalDeps:   ## Dependencies:   hello_world.xml   作一下解释,第一行表示新的代码段的开始。事实上每次暴雪更新补丁后,当前的版本号都会更新。如果你的脚本没有最新的版本号,那么这段脚本将“不会”装载入游戏。这就是为什么版本更新导致插件无法使用的原因。你可以通过打开Interface\FrameXML\FrameXML.toc文件来知道当前的版本号。接下来两行的Title和Nodes就不必解释了吧(译注:分别为标题和注解,可选)。在下一行,OptionalDeps中你可以列出所有你的插件的名称(你可以列出其他插件,用空格分隔)。Dependencies也是同样的,但它不是可选的,我不太确定如果没有这一行你的插件是否会装载。最好所有的都写,不管它是不是可选的,这样所有人都能更好阅读你的代码。   在开始的声明之后,你将写入一些XML文件的名称(次序未定),一行写一个文件的名称。你也可以将XML文件写在子目录中,例如“core/hello_world.xml”,这样能使文件夹里看起来更简洁。    注意里面的值必须在整个文件里是唯一的。建议你用你的插件模块名称作为前缀开始,后接下划线,再接上Frame真正意义的名称。在上面的例子里,我们把它叫做core,因而组成了上述名字。   在标签里有个  (译注: 真的是要了解编程的了哦。 这里处理事件就类似Win32处理事件的代码模式,可以用if(event=事件名称){操作代码}else if(event=事件名称2){操作代码}…..或者 switch case的方式来完成。)   现在,暴雪提供了存储变量的方法,你可以用RegisterForSave(“variable_name”)的方法来定义一个变量在游戏过程中。   在我们的例子中,当VARIABLES_LOADED发生后,将调用hello_world_initialize()函数来处理。对啦,这个hello_world_initialize()函数还没定义呢,下面就介绍如何定义函数。  B.加入内容   下面将是最有意思的部分,让我们从简单的开始。在目录中创建hello_world.xml文件(该文件名应写在了FrameXML.toc中),内容如下(译注:XML文件格式请寻找有关文档):   (没法加XML内容,请看wow.nevir.net/tutorial/hello_world/hello_world.xml)   哦。有些复杂了是么?其他不用管先看这一行,它告诉游戏 hello_world.lua 是脚本文件,也就是插件运行的脚本所在。每个界面都用的标签(Tag)扩起来。这里我们使用了一个Frame标签来简单地把所有事件脚本包进来,你也可以将所有的界面上的按钮,窗口等定义在Frame标签里面。在标签里,可以定义其一个叫name的属性(如:)   注意里面的值必须在整个文件里是唯一的。建议你用你的插件模块名称作为前缀开始,后接下划线,再接上Frame真正意义的名称。在上面的例子里,我们把它叫做core,因而组成了上述名字。   在标签里有个  (译注: 真的是要了解编程的了哦。 这里处理事件就类似Win32处理事件的代码模式,可以用if(event=事件名称){操作代码}else if(event=事件名称2){操作代码}…..或者 switch case的方式来完成。)   现在,暴雪提供了存储变量的方法,你可以用RegisterForSave(“variable_name”)的方法来定义一个变量在游戏过程中。   在我们的例子中,当VARIABLES_LOADED发生后,将调用hello_world_initialize()函数来处理。对啦,这个hello_world_initialize()函数还没定义呢,下面就介绍如何定义函数。  C. 补完 (译注:写代码的部分,会写脚本的人一定看得懂,不会写的需要学习:<)   好了,现在是真正要写代码的时候了。创建1个叫作hello_world.lua的文件。内容如下:   function hello_world_initialize()   -- add our very first chat command!   SlashCmdList["HELLOW"] = hello_world_command;   SLASH_HELLOW1 = "/hellow";   SLASH_HELLOW2 = "/hw";   end   function hello_world_command(msg)   -- this function handles our chat command   message(msg);   end   这里我不想对语法做出解释,如果不懂请看LUA的文档,那里会详细地介绍。参见:www.lua.org/manual/5.0/  注意这里系统的I/O 库文件,操作系统的库文件没有包含在魔兽世界UI的PATH路径之中。至于暴雪定义的函数(内置的)和事件,你可以在Cosmos网站上找到,参阅:www.cosmosui.org/texts/BlizzardCommands.xml  回到代码,在我们的函数中,我们定义了1个聊天用的命令。似乎我们的代码看起来挺怪的,是的,我们是直接修改了SlashCmdList这个表,其作用是当我们输入宏“/hellow 消息” 或者“/hw 消息”是会调用hello_world_command()函数,(至于游戏内部如何这种关系做映射不在本文讨论范围内)然后玩家看到打出“消息”的聊天信息的窗口(译注:事实上是msg()函数创建的窗口)。可以看到“消息”作为参数传递给了hello_world_command()函数。   以上所有做的就是一个简单的插件,它加入了两条命令(宏)。如果你想测试它,进入游戏,输入/console reloai(重新加载UI),在登入游戏后的聊天框中输入“/hellow Why hello there!”,你会看到游戏中弹出一个消息框,消息是“Why hello there!”。   4.完成   这就是我们基本的例子,以后我可能抽空给出一些其它的例子。   如果你已经完成了以上这个例子,我真是要为你鼓掌了呀!(那花了你不少时间来阅读吧。)   如果你感兴趣的话,以下还有不少资料:LUA (www.lua.org/manual/5.0/),暴雪定义的函数(www.cosmosui.org/texts/BlizzardCommands.xml)。另外,试着看看Interface/FrameXML/BasicControls.xml文件,里面有不少操控语句;还有Font.xml文件,你可以定义自己的字体,颜色等。  到此为止了,希望它有所帮助!
>>>点击查看新浪魔兽世界论坛原帖链接
【火爆论坛】   【网友投稿】

热心网友 时间:2023-10-14 07:49

1.  准备开始   A.  可以选用的工具   第一步必须明白将要做些什么,但是为了能够正确的开始,我们必须选择一些编写脚本的工具。我想首先重要的一点是编辑器(用专业术语来说就是IDE-integrated development evironment), 这可能有许多种选择。由于我们编写脚本的语言是LUA(译注:一种脚本语言,参见:www.lua.org),我们需要的编辑器应当是针对这种语言的,以下十供选择的列表:  blua.sourceforge.net/ (译注:sourceforge.net是一个著名的开源项目网站)   B:Lua – 这是首当其充的脚本编辑工具之一,它提供了强大的IDE所提供的功能,足够用来编辑WOW的UI。而且它是用Java语言编写的,不论在何种操作系统中尼都能运行它。   www.ideais.com.br/luaeclipse/ (译注:一个运用于Eclipse IDE下的插件,建议使用过Java语言的专业人士使用。)  Lua Eclipse – 这是另外一个Java环境的IDE,我没有用过这个IDE(译注:本文中的我不代表译者),它基于Eclipse 平台(译注:请参见www.eclipse.org),它是一个有着多种功能的插件,我确信这是一个很好的工具。  editplus.com/ (译注:editPlus是类似于UltraEdit的文本编辑器)   EditPlus – 这是替代记事本程序的有效工具,这也是我编辑LUA的工具。它有着多种你所需的功能,而且它有着LUA语言的Schema(译注:Schema可以理解为一种模板,它规定者文件如何定义等内容)。但是它有着30天的评估期,你得注册拥有它。   这只是3种建议,我认为一旦掌握了B:Lua后,你就能够更好地使用其它工具了。   B.目标:WOW文件   你拥有了编辑器后,一切只是刚刚开始,我们需要一些工具来编辑WOW。首选的工具是WinMPQ,下载地址:shadowflare.gameproc.com/dwnload.html#WinMPQ   你需要运行库(VB4运行库)来运行它(译注:一般windows都安装了),有了它你就可以打开游戏目录中的MPQ文件或者MoPaO 文件。MPQ是暴雪公司存储游戏资料的文件格式,如果你有兴趣研究的话,请参阅:www.campaigncreations.org/starcraft/inside_mopaq/index.htm  有了WinMPQ,你就可以解开文件内容,并且打包到游戏安装目录。   了WinMPQ,你就可以解开文件内容,并且打包到游戏安装目录,里面就是你所需的所有内容。Interface.mpq文件里面有基本的界面数据,并且有着大量柯作为例子的文件。Patch.mpq文件里有着所有的补丁内容,在游戏运行时将覆盖所有基础的文件。打开WinMpq,我们将所有基础界面文件作为例子来使用。下面还将示范如何保证数据与最新的补丁保持一致。使用“Open”选项打开interface.mpq文件(该文件在游戏安装目录下),找到一个叫FrameXML的文件夹(还有一个叫glueXML的文件夹,不去管它),选中目录下所有文件并且解压到游戏安装以外的目录下。同样,打开Patch.mpq,其中不仅仅有界面文件,还有许多更新文件。打开Interface\FrameXML目录,将其中的内容解压到刚才interface.mpq文件的解压目录中,并覆盖已有的文件。这样我们就有了一份最新的游戏界面FrameXML目录数据作为参考。(你也可以用WinMPQ 解压其他的文件,例如音乐文件等)。   2.有了目标之后   一切准备就绪,让我们开始制作第一个插件吧!   首先你的知道具体文件的安排,哪个文件是做什么的。让我们看以下魔兽世界的安装吧。其中有许多目录,我们将要操作的目录是Interface目录(若不存在请创建)。在该目录下有3个主要的目录:   FrameXML: 有所有暴雪提供的界面,你将打交道的文件都在这。   GlueXML: 包含“游戏之外”的界面,例如登入界面,服务器选择,角色创建等。你不太需要关心这些文件。   AddOns: 所有游戏角色的模型。   在AddOns目录下每个角色都有其所有的目录并且有一个内容表。   3.开动!   A.  初始化   我们要开始创建“Hello world”啦!(译注:“Hello world”常指第一个程序),创建1个叫hello_world的目录在AddOns下,即Warcraft/Interface/AddOns/hello_world。在目录中建立1个叫hello_world.toc的文件,这就是内容表了,它定义了WOW该如何装载插件内容。例如以下就是文件内容:   ## Interface: 4114   ## Title: Hello World   ## Notes: The obligatory hello world script – WoW-style!   ## OptionalDeps:   ## Dependencies:   hello_world.xml   作一下解释,第一行表示新的代码段的开始。事实上每次暴雪更新补丁后,当前的版本号都会更新。如果你的脚本没有最新的版本号,那么这段脚本将“不会”装载入游戏。这就是为什么版本更新导致插件无法使用的原因。你可以通过打开Interface\FrameXML\FrameXML.toc文件来知道当前的版本号。接下来两行的Title和Nodes就不必解释了吧(译注:分别为标题和注解,可选)。在下一行,OptionalDeps中你可以列出所有你的插件的名称(你可以列出其他插件,用空格分隔)。Dependencies也是同样的,但它不是可选的,我不太确定如果没有这一行你的插件是否会装载。最好所有的都写,不管它是不是可选的,这样所有人都能更好阅读你的代码。   在开始的声明之后,你将写入一些XML文件的名称(次序未定),一行写一个文件的名称。你也可以将XML文件写在子目录中,例如“core/hello_world.xml”,这样能使文件夹里看起来更简洁。    注意里面的值必须在整个文件里是唯一的。建议你用你的插件模块名称作为前缀开始,后接下划线,再接上Frame真正意义的名称。在上面的例子里,我们把它叫做core,因而组成了上述名字。   在标签里有个  (译注: 真的是要了解编程的了哦。 这里处理事件就类似Win32处理事件的代码模式,可以用if(event=事件名称){操作代码}else if(event=事件名称2){操作代码}…..或者 switch case的方式来完成。)   现在,暴雪提供了存储变量的方法,你可以用RegisterForSave(“variable_name”)的方法来定义一个变量在游戏过程中。   在我们的例子中,当VARIABLES_LOADED发生后,将调用hello_world_initialize()函数来处理。对啦,这个hello_world_initialize()函数还没定义呢,下面就介绍如何定义函数。  B.加入内容   下面将是最有意思的部分,让我们从简单的开始。在目录中创建hello_world.xml文件(该文件名应写在了FrameXML.toc中),内容如下(译注:XML文件格式请寻找有关文档):   (没法加XML内容,请看wow.nevir.net/tutorial/hello_world/hello_world.xml)   哦。有些复杂了是么?其他不用管先看这一行,它告诉游戏 hello_world.lua 是脚本文件,也就是插件运行的脚本所在。每个界面都用的标签(Tag)扩起来。这里我们使用了一个Frame标签来简单地把所有事件脚本包进来,你也可以将所有的界面上的按钮,窗口等定义在Frame标签里面。在标签里,可以定义其一个叫name的属性(如:)   注意里面的值必须在整个文件里是唯一的。建议你用你的插件模块名称作为前缀开始,后接下划线,再接上Frame真正意义的名称。在上面的例子里,我们把它叫做core,因而组成了上述名字。   在标签里有个  (译注: 真的是要了解编程的了哦。 这里处理事件就类似Win32处理事件的代码模式,可以用if(event=事件名称){操作代码}else if(event=事件名称2){操作代码}…..或者 switch case的方式来完成。)   现在,暴雪提供了存储变量的方法,你可以用RegisterForSave(“variable_name”)的方法来定义一个变量在游戏过程中。   在我们的例子中,当VARIABLES_LOADED发生后,将调用hello_world_initialize()函数来处理。对啦,这个hello_world_initialize()函数还没定义呢,下面就介绍如何定义函数。  C. 补完 (译注:写代码的部分,会写脚本的人一定看得懂,不会写的需要学习:<)   好了,现在是真正要写代码的时候了。创建1个叫作hello_world.lua的文件。内容如下:   function hello_world_initialize()   -- add our very first chat command!   SlashCmdList["HELLOW"] = hello_world_command;   SLASH_HELLOW1 = "/hellow";   SLASH_HELLOW2 = "/hw";   end   function hello_world_command(msg)   -- this function handles our chat command   message(msg);   end   这里我不想对语法做出解释,如果不懂请看LUA的文档,那里会详细地介绍。参见:www.lua.org/manual/5.0/  注意这里系统的I/O 库文件,操作系统的库文件没有包含在魔兽世界UI的PATH路径之中。至于暴雪定义的函数(内置的)和事件,你可以在Cosmos网站上找到,参阅:www.cosmosui.org/texts/BlizzardCommands.xml  回到代码,在我们的函数中,我们定义了1个聊天用的命令。似乎我们的代码看起来挺怪的,是的,我们是直接修改了SlashCmdList这个表,其作用是当我们输入宏“/hellow 消息” 或者“/hw 消息”是会调用hello_world_command()函数,(至于游戏内部如何这种关系做映射不在本文讨论范围内)然后玩家看到打出“消息”的聊天信息的窗口(译注:事实上是msg()函数创建的窗口)。可以看到“消息”作为参数传递给了hello_world_command()函数。   以上所有做的就是一个简单的插件,它加入了两条命令(宏)。如果你想测试它,进入游戏,输入/console reloai(重新加载UI),在登入游戏后的聊天框中输入“/hellow Why hello there!”,你会看到游戏中弹出一个消息框,消息是“Why hello there!”。   4.完成   这就是我们基本的例子,以后我可能抽空给出一些其它的例子。   如果你已经完成了以上这个例子,我真是要为你鼓掌了呀!(那花了你不少时间来阅读吧。)   如果你感兴趣的话,以下还有不少资料:LUA (www.lua.org/manual/5.0/),暴雪定义的函数(www.cosmosui.org/texts/BlizzardCommands.xml)。另外,试着看看Interface/FrameXML/BasicControls.xml文件,里面有不少操控语句;还有Font.xml文件,你可以定义自己的字体,颜色等。  到此为止了,希望它有所帮助!
>>>点击查看新浪魔兽世界论坛原帖链接
【火爆论坛】   【网友投稿】
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
带艹字头的字,越多越好 独裁和一元化的区别 地下城里的硬直指的是什么属性啊 ?加了有什么用? 地下城与勇士装备上加硬直是什么意思 地下城与勇士的硬直 地下城勇士柔道加硬直有什么好处 地下城,弹药硬直弹究竟加不加?加多少? 地下城加多硬直有什么用 擦脸的精油是在擦脸的水和面霜之前用还是之后用 ...粉末20g与80g稀硫酸恰好完全反应,得到0.2g氢气.(1)计算这种合金中铜... 无锡科鹏科技有限公司怎么样? WOW大脚插件咋开DBM语音提示? 股票的发行价格有哪几种定价方式有哪几种定价的估值方法有哪几种? DBM币现在价格高吗?还能不能持有啊? 天湖啤酒的历史 多盟无限网络技术(北京)有限公司怎么样? DBM币靠谱吗?听说最近他们获得了韩国两家传统机构投资了几千万美金 Regular pin and Super pin , company DBM,是啥意思 格力空调如何取消健康模式? Dijkstra算法算最短路径 格力空调显示se怎么关? 乳胶漆弄窗框上了,干了 怎么处理掉啊??? 怎么才能把铁皮上干的乳胶漆清理干净 乳胶漆喷到车子上干了怎么处理 巫师三史戴潘在哪里 巫师3莫布里戴尔铁匠给什么 联想Y470bios界面如何设置U盘启动 联想y470怎么设置USB启动 巫师3乌鸦窝那两个铁匠给什么昆特牌 联想y470笔记本怎样u盘启动 50dBm等于多少瓦 WOW大脚插件打BOSS的时候怎么开启语音提示 VEGA是哪个公司的? 附近有个移动公司基站,对面(登高)大约50米,卧室手机信号-50dbm,长期居住辐射对人体有害么 erp&gt;24dbm是什么意思 make…easy是什么意思啊? shopping made easy 为什么用过去式 cryptocurrency mining made easy中文什么意思? Money Transfers Made Easy这个翻译成中文是什么意思? shopping made easy made前面省略了be动词?easy是副词? 单独的说shopping is made是话么? 是make it easy 还是make it easily.为什么 公司给个人办社保卡,要多久才能发下来 Young Life Made Easy是哪个品牌的广告语?大神们帮帮忙 怎么划分shopping made easy.的成分 pure water made easy 社保卡商制卡要多久 take it easy; make it easy的意思和区别? 是make it easy 还是make it easily.为什么? 泉州医保卡一般办理需要多久 shopping made easy the story told by Judy 这两个是句子么?