您好,欢迎访问三七文档
剑三插件编写入门ConstantineQQ:4152209191/11剑三插件编写入门什么是插件插件是一种遵循一定规范的应用程序接口编写出来的程序。由于一个大型软件通常只由一家软件公司开发,在开发过程中,由于人手和时间的限制,这就决定了软件自身功能的局限性,而且软件的更新速度也是较为缓慢的,也不能满足所有的用户需求。正是处于这样的考虑,通常一些大型的软件都提供了调用外部插件程序的接口。这样一来,通过别人的插件使得自己的软件在功能和更新速度上都大大得到改善,同时使用者可以根据自己的需求来制作一些更适用于自己使用环境的插件程序。游戏中的插件和外挂是两个不同的概念,游戏外挂通常是通过修改游戏运行时的数据,包括网络通信、本机内存等方式欺骗服务器,让外挂使用者达到不劳而获的目的。而游戏插件是游戏开发者允许的,在一定限制下的改善游戏内容,比如界面显示、操作方式、或者为使用者提供方便功能,并不直接修改游戏数据的程序。游戏插件都只能运行在客户端。剑三中插件能做什么前面已经提到过,游戏插件都是运行在客户端的,也就是说我们通过客户端可以做的事情,理论上通过插件都可以做到。为了不影响游戏的正常运行,通常开发者都会对游戏插件做出一些限制、下面整理一下剑三中,插件所被允许做的事情。1、改善用户界面(UI)例如常用的头顶增强、战斗提示、气条拖动、Buff、Debuff缩放、弧形血条等。2、改善游戏操作例如拾取助手、自动Roll取绿装、自动贩卖灰色物品等。3、提供游戏开发者允许,但又没有提供的功能。剑三插件编写入门ConstantineQQ:4152209192/11例如仇恨插件、任务指引、焦点目标、技能CD提示等。3、其他不影响游戏数据的你能想到的任何东西。例如小游戏插件。插件的安装在剑三的安装目录下的interface文件夹中放入你需要安装的插件,登录游戏,在人物选择界面右侧点击插件管理,勾选上你想加载的插件,这样在你进入游戏,游戏程序就会去调用相应的插件程序了。以我的电脑为例,安装从多玩论坛下载的弧形血条插件我的剑三安装在D:\ProgramFiles\Kingsoft\JX3\目录下面。进入D:\ProgramFiles\Kingsoft\JX3\目录,找到interface文件夹。如果没有这个文件夹,直接新建文件夹并命名为interface即可。解压下载到的headEx.rar文件,得到一个HeadEx的文件夹,文件夹里包含了HeadEx.lua、info.ini、LEOConst_HeadEx.ini等文件,将HeadEx文件夹放入到interface文件夹中,进入游戏,在任务选择画面点击插件管理,勾选弧形血条插件,进入游戏后就可以看见插件了。很多人在安装插件时发现将插件文件放入了interface文件夹下,但在游戏中的插件管理中看不到自己下载的插件,这样的问题通常是因为在解压插件文件的过程中,多产生了一级目录。例如弧形血条插件中包含info.ini文件,这个文件应该处于的位置是Interface\HeadEx\info.ini而有的使用者在解压时直接将HeadEx下的文件解压到了interface中,或者在interface下的HeadEx文件夹中又创建的HeadEx文件夹,造成了如下的一些目录情况,这些都是不能运行插件的。Interface\info.iniInterface\HeadEx\HeadEx\info.ini学习制作插件需要哪些基础和工具简单Lua编程,包括lua基本语法,table的概念,函数的概念,面向对象的基础概念。工具上剑三客户端当然是不能少啦,剩下就是lua语言的编辑环境,最简单的就是txt文档编辑器来,一般我们还是习惯使用一些特殊的编辑器,比如UEStidio,NotePad++,这些支持语法高亮的编辑器。另外为了方便检查脚本错误,还需要使用luaforwindows的可执行文件。可以到lua的官方网站去下剑三插件编写入门ConstantineQQ:4152209193/11载()剑三插件的组成首先,剑三中的游戏插件是一个程序,那么我们肯定是需要一个文件来保存程序的代码。其次,插件程序是不可以脱离游戏独立运行的,它必须依赖于游戏程序,那么我们需要一种方式来告诉游戏程序,这个插件是干什么的,应该从哪开始执行这个插件程序,这个文件在剑三中就是info.ini文件。最后,由于在游戏中通常会运行很多个插件,那么这么多info.ini就会十分的混乱,为了方便管理,降低每个插件与其他插件的耦合度,剑三有这样一个规则,插件必须放在一个文件夹中,文件夹中必须有一个info.ini文件。并且ini文件中必须有一个Section名为文件夹名字。(一个Section就是INI文件中用中括号分割的一段区域,具体详见WindowsINI文件格式)综上,剑三插件的基本结构有以下5点:1、需要一个文件夹、至少一个程序文件、一个info.ini文件。2、info.ini文件必须在这个文件夹中。3、info.ini文件中的Section名必须为这个文件夹的文字。4、info.ini文件中必须指明需要运行的程序文件的路径与名称。5、info.ini文件中所指明的程序文件不能直接放在interface目录下,必须在其子目录中从上面这五点中可以得到这样一些隐含信息:info文件所指明的程序文件不必要和info在同一级目录下。Info中可以有多个Section,但由于Section名和文件夹名不相同,所以多余的Section并不起作用,且不影响正常的Section工作。Info文件中指明的程序文件可以有多个,随其编号决定调用顺序,编号越小越先调用。info指明的程序文件不需要是lua的扩展名,只要是lua程序文件,可以是任意扩展名。Info文件只能在interface目录的直接子目录下,比如interface\HeadEx,不能是interface\a\b\info.iniInfo.ini文件中的注释符号使用【#】,具体配置项如下所示:剑三插件编写入门ConstantineQQ:4152209194/11Info中的配置对应游戏中的显示界面:当我们指定的系统插件版本号低于右上角显示的系统版本号时,插件将变成灰色,这表示官方对插件的一些设置、开放的接口作出了调整,可能你所编写的插件在该版本下不能正常使用,我们可以通过勾选下面的允许加载过期插件来强制运行它,但是不一定可以正常工作哦。[Const_GettingStarted]#插件名,和文件夹名相同name=准备开始#在插件管理栏显示的插件名desc=描述怎样开始制作剑三插件。--By奶舟#插件名,和文件夹名相同name=准备开始#在插件管理栏显示的插件名desc=描述怎样开始制作剑三插件。--By奶舟#在插件管理栏名称后面跟随的插件描述default=1#是否默认加载插件version=0.3#插件对应的系统版本号#=================下面是入口程序文件路径====================lua_0=Interface\Const_GettingStarted\Main.lualua_1=Interface\Const_GettingStarted\Data.dat剑三插件编写入门ConstantineQQ:4152209195/11通常我们为了编写和管理插件的方便,有这样一些约定俗成的规矩。1、为你的插件新建一个文件夹,文件夹的名字尽量做到见即知意。2、为了避免和别的插件冲突,在你的文件夹前加一个自己的前缀,比如Const_HeadEx。3、将你的插件入口程序和info.ini文件放到同一目录下。4、在你的程序文件第一行首先定义一个table,这个table的名字是你插件的名字,用于存储所有与你插件相关的信息。5、所有的函数、属性、都写在自己定义的table中。6、在程序文件的最后一行调用你的入口函数。7、将界面配置文件和对应的程序文件取相同的文件名。剑三插件的HelloWorld下面开始我们进入剑三插件的HelloWorld程序,哈哈哈哈。1、首先在剑三目录下的interface中建立一个My_InterFaceTest文件夹2、在Interface文件夹中建立一个info.ini文件和Main.lua文件。3、在info.ini文件中输入以下内容:4、在Main.Lua文件中输入以下内容5、进入游戏,在插件管理界面勾选我的HelloWorldOutput(“HelloWorld”)[My_InterFaceTest]name=我的HelloWorlddesc=第一个插件version=0.4lua_0=Interface\My_InterFaceTest\Main.lua剑三插件编写入门ConstantineQQ:4152209196/116、进入游戏就可以看到聊天框里出现了这些文字。到这里我们的HelloWorld就完成了,下面将进一步介绍插件的制作,从这里开始就需要程序基础了。剑三插件用到的部分对象简介Player对象Player对象是玩家自己,是玩家所有属性的一个集合,这里有我们常用的一些属性。我们可以通过全局函数GetClientPlayer()来获得它。dwID人物ID双字属性szName名字字符串属性szTitle称号字符串属性nGender性别整型属性dwForceID门派ID双字属性nLevel等级整型属性nExperience经验整型属性nFaceDirection朝向整型属性nMoveState移动状态整型属性剑三插件编写入门ConstantineQQ:4152209197/11nXX坐标整型属性nYY坐标整型属性nZZ坐标整型属性nMaxMana内力最大值整型属性nCurrentMana当前内力值整型属性nMaxLife生命最大值整型属性nCurrentLife当前生命值整型属性bFightState战斗状态布尔型属性nCamp阵营整型属性TradingInviteRequest()向其他玩家请求交易无返回参数1:【dw】目标玩家IDHideHat()隐藏帽子无返回参数1:【b】是否隐藏StopCurrentAction()停止当前动作无返回无参数GetTarget()获取当前目标返回1:目标类型返回2:目标ID无参数Talk()说话返回:布尔型参数1:【n】频道参数2:【sz】人名参数3:【t】内容参数3有这样一些特性:1、自己是一个table,这个table中可以有很多项,每一项又是一个table。2、每一项可以用来描述一类信息,它包含以下字段:当type字段为text时,另外一个字段为text,其值就是要说的内容。当type值为name时,另外一个字段为name,其值是角色的名字。当type值为item时,另外一个字段为item,其值是道具的id。当type值为quest时,其它字段为questid,其值为任务的id。当type值为skill时,表示这个table包含的是技能信息,包括skill_id(技能ID),skill_level(技能等级),recipe1~recipe4(秘笈ID)eg:localdata={{type=“text”,text=“我要说话”},}剑三插件编写入门ConstantineQQ:4152209198/11NPC对象表示一个指定的NPC。可以使用全局函数GetNpc(dwID)来获得它。dwIDNPCID双字属性dwTemplateIDNPC模板ID双字属性dwForceID势力ID双字属性nLevel等级整型属性dwModelID模型ID双字属性一些其他的共有属性,例如血量,内力,坐标,朝向,名字,称号等于player相同。剑三插件的基本接口介绍GetClientPlayer()获取本机的player对象。GetNpc(dw)获取npc对象,参数为NPCID。GetPlayer(dw)获取一个player对象,参数为play
本文标题:剑三插件编写入门
链接地址:https://www.777doc.com/doc-4731121 .html