小玉米图文教程No.3 - 如何撸出GEX扩展

这篇教程教大家如何使用本站提供的GM8里面的extmaker来制作一个gex扩展。

如果你有脚本,或者DLL插件什么的,想以扩展包的形式发布,并且还不会制作gex扩展包,那么这篇教程一定会对你有很大的帮助。

说一下:这里所针对的扩展包是在GM8上使用的,当然GMS也可以,如果你想做GMS专用的格式,请出门左转找凹凸。

首先你需要下载本站所提供的超强GM8中文版,下载地址:http://www.gamemaker.cn/thread-310-1-1.html
下完了就无视这步好了~

安装好之后,在安装目录的extmaker文件夹里找到Extension_Maker.exe或在开始菜单里找到GM扩展包制作程序,打开后你会看到如下界面。

0.jpg


首先来瞅一下General Information里面的东西吧,反正我也不认识这俩单词啥意思,不过知道啥意思也没用,直接往里面看就好了。
这里面有很多的输入框,我就挨个解释下好了。
在这些框框里面输入的东西,输出完GEX并安装进GM8之后,都会显示在扩展窗口的指定位置,这里方便大家查看,我就贴个GM8的扩展窗口图上来。
1.jpg

Name:表示你这个扩展包的名字,以前大家用过gex的都知道,这个名字不是你的gex文件名,而是要在GM里显示出来的名字。显示在①号位置。
Folder:临时文件夹的名字,当游戏使用这个扩展包之后,首先在游戏的临时目录下创建这个文件夹,之后会将扩展包里面的文件解压到这个文件夹里,如果你要读取的话务必要在这个文件夹里读取,GML文件是不会被释放出来的这个请放心。
Version:扩展包的版本,不多解释了。显示在③号位置
Author:作者,如果是你制作的扩展包就写你的大名吧。显示在②号位置
Date:制作日期,这个禁止编辑,放那不要管,显示在④号位置
description:扩展包的描述,就是说一下你这个包是干嘛用的。显示在⑥号位置
License:协议,像什么免费使用啦,一袋辣条获得商业授权什么的啦~写进去就好了。显示在⑤号位置
Help File:扩展包的帮助文档,可以使用任何格式的帮助文档,TXT啊DOC啊CHM啊EXE啊JPG啊AVI啊RMVB啊MP4啊MP3啊OGG啊 都行,只要使用你扩展包的那台电脑支持就好。在点击⑦号位置的按钮时,GM会打开你这个文件。如果你这个包里没有帮助文件的话,那帮助按钮就像图示那样子灰掉啦~
Uses:表示使用这个扩展包需要使用的一些其他扩展包的名字,一行一个,如果发现用户没有安装这些扩展包的话会在游戏开始的时候弹出提示。

接下来说主要的,就是左下角的那些文件列表啦,扩展包所做到的就是在GM8里扩展一些函数、按钮和常量,那么就需要动用下面的那六个按钮,这里我们按照自制GML扩展包和DLL扩展包为例子来讲解。
1.自制GML脚本扩展包:
首先你要有一份GML文件!
在GM里写好脚本然后在scripts上点右键选择导出脚本,就可以生成GML文件什么的我就不说啦~
有了GML文件之后,单击左下角的Add GML按钮,把要导入的GML文件扔进去,接下来就可以写函数啦~
这里我用我的GMFMOD为例子,上个图先:
2.jpg

增加一个函数点Add,删除一个函数就选中那个函数后点Delete,按名称排序就点Sort,从TXT文件导入就点Import。
点完Add按钮后,会弹出右面的那些输入框,这些参数我也来解释一下。

·Name表示该函数的名字,他会在你写代码的时候出现在代码提示框里面,也是函数的唯一标识符,这里我使用fmod_init作为这个函数的名字。

·External Name表示在GML文件里面这个函数的名字,我的GML脚本的这个函数名也是fmod_init,所以这里就写了这个,如果你的GML脚本里不是这个名字的话,这里改一下也是可以的。

那么,总体来说,这两个参数的意思就是说,你使用GEX扩展增加了一个叫Name的函数,当在GM里调用这个函数会执行你GML文件里名字为External Name的脚本。

·Help Line不用多解释,这个就是在你输入函数的时候显示在代码编辑器下面的参数提示,把函数名,参数提示符,括号什么的写全即可,比如:
fmod_music_load(fname,loop?,start_pos,end_pos)

·Arguments表示的是这个函数的参数数量,0表示没有,然后有几个就选几个就好了,这里有个Arbitrary项,这个项的意思就表示这个函数不一定会有多少个参数,表示输入进去几个参数都可以的,就像是GM自带的min函数或者是max函数,参数的个数都是不固定的。

·Hidden选择框有必要解释一下,如果你不想你的这个函数出现在函数提示框里的话,这个勾上就好了,
  那么有同学就会问了,如果不显示的话不就没什么意义了吗?那干脆就不要添加这条函数好了。
  这么理解是错误的,有的时候,你需要你脚本文件里面的一个脚本来执行相应的功能,并且在其他的脚本中调用了很多次这个脚本,而你并不想让使用你扩展包的人也使用这个函数,只是把他作为你私有的一条函数来使用,这个时候hidden就非常的有效,但是,如果你要是不把这个函数导入进gex的话,GM会认为你的游戏根本就不存在这个函数,想想如果你在其他的脚本中调用了很多次这个不存在的函数有什么后果吧。
  一般情况下,如果是你自己构建的系统函数,会将hidden勾选上,保证用户不使用这个函数。

那么function选项卡就讲到这里。

Constants选项卡:
3.jpg

  这个没什么特别的,实际上就是增加常量啦~记住是常量而不是变量,如果你的扩展包需要使用常量的话,在这里导入就可以了,Name是常量名,Value是常量值,Hidden是同上面讲的一样的道理。这个就不多说辣。

Misc选项卡:
4.jpg

  当你选择添加一个GML文件后,最上面的三个都是自动生成的,没必要去管,第一个是文件名,不多说了,第二个是你GML文件的绝对路径,每次生成GEX的时候都会把这个GML文件打包进去,所以说这个路径一定要填写对哦~,接下来kind是自动生成的,表示这是扩展一个gml脚本文件。接下来的initialization和finalization要说明一下,这两个其实就是初始化函数和卸载函数,把函数名添加进去,GM会自动在游戏开始的时候和游戏结束的时候执行这两个脚本,记住这里只填函数名字就好!当然,你的这两个函数也必须是0参数的东西。如果你祚死非要把一个需要参数的脚本添加进去的话,鬼会知道发生什么情况。

接下来就是输出GEX文件辣,这时你可能会去点击保存按钮,但是保存的文件却是GED文件,这是为什么?其实你完全可以把这个工具想象成一个IDE,保存的GED文件只不过是一个工程文件而已,就好比GM8所保存的工程文件是GMK,你要想让别人玩你的游戏要导出一个EXE文件。这里,点击菜单栏的file -> Build Package...可以导出一个GEX文件供他人使用,接下来,你只要把这份GEX文件上传到网络就好啦,如果以后想更新扩展,或者修复bug什么的,就用extmaker打开ged文件,改完之后重新输出gex就可以啦~

2.自制DLL扩展包:
自制DLL扩展和GML扩展其实只有几小部分不同,所以这里我只说下不同之处。
①:你要有一个GM可以使用的DLL文件。
②:导入DLL的时候要点击Add DLL按钮而不是Add GML按钮。
③:添加函数的一些不同
5.jpg

  函数名字,依然是函数名字,但是这里的External Name只的是DLL中导出函数的名字,如图所示,表明在GM中使用show_mes函数就调用了DLL导出的MessageBoxA函数,而这里给出完参数的个数之后还要说明每个参数的类型,是实数型(real)还是字符串型(string),当然,定义类型只有参数个数小于等于4的时候才有效,因为GM规定如果DLL的参数多余4个,则所有的参数类型必须都为real型。
  之后,还要定义这个函数的返回值类型还有调用的方式是stdcall或者cdecl,懂DLL的人不用我多多解释这些术语。如果你想制作DLL的话可以参见小狐狸的DLL制作教程。联动:http://www.gamemaker.cn/forum.php?mod=viewthread&tid=546

3.最后再说几句:
·如果你想在扩展包里加入按钮的话,可以点击Add LIB向扩展包里面添加GM用的按钮LIB文件,制作LIB文件要用到超强中文GM8内extmaker文件夹里的动作库制作工具.exe 这个是中文版的研究研究就可以做啦。
·Add Other按钮的作用:如果你想在你的扩展包中加入些其他的文件,比如TXT文本啊,或者是用到的gmspr/gmbck资源文件,可以使用Add Other按钮来将这些文件导入,使用Add Other导入的文件会在游戏开始的时候解压到GM临时目录下的一个文件夹里,这个文件夹就是我在最开始将的那个Folder里所填写的文件夹。你可以使用GML语句 temp_directory + "\???\*.*"来访问指定的文件。(这里请自行把???换成你的文件夹名,*换成你的文件名)
·如果你想用GML来调用DLL文件的话,可以使用Add Other将DLL文件导入,然后使用GML语言文件调用这个dll。dll的文件路径也是在临时路径里面哦~
·切记每次更新扩展一定要重新导出一次GEX文件!!


それ以上,お楽しみだね kira~

分享:

支付宝

微信