【教程04】AMP新版-pgm教程—如何修改引擎界面,打造个性引擎



lrb2010
2011-04-10 11:38:17

各位好~~~~我就是上一篇的作者۩泣かないで,我们真的是很有缘分的说~> <,我才没想过下一篇教程也是我写的呢~.这次同样~13岁的本泣文笔不好,还请多多指教...
这次的教程其实主要是告诉各位如何通过修改am_init.lua,从而打造属于自己的PGM(AMT),这次的教程将分为几个部分,分别是:文字部分,分支选项部分,字体部分,标题部分,菜单部分,调查部分.但是由于有几个部分在前几篇教程中有所提及(=。=),有所提及的部分将于查漏补缺的方式交给各位更多知识.

【教程04】文字部分
嗯,那么请问,文字类冒险游戏最重要的是什么呢?
(众人:那还用说,当然是"文字"啦~)
嗯嗯,回答的不错,现在呢,先给各位讲讲关于文字部分,文字部分在kong君的【教程02】中已经有提及,比较容易理解的我就不多说了.

好了,首先呢,先打开src am_init.lua,然后在里面找到“dialog module constant var”这行注释,我们先试着修改一下DIALOG_DY = 196,将它修改为DIALOG_DY = 0 ,也就是把say指令写出的文字的Y坐标变为0,好了,现在就捅两下pack.bat,再捅两下run.bat看看效果吧~★~~~~

[IMG]http://img181.poco.cn/mypoco/myphoto/20110410/10/5658756720110410103742099.png[/IMG]

(众人:嗯?文字怎么不见了???)
嗯,因为现在的文字模式是半屏模式(DIALOG_HALFSCREEN),半屏模式假如在(0,136)坐标以上的话将不会显示,想要显示出来的话你只需把DIALOG_MODE = DIALOG_HALFSCREEN中的DIALOG_HALFSCREEN修改为DIALOG_FULLSCREEN即可,但是不推荐这样,按照白枫叔叔的说法这样会降低程序的效率.
修改过后你再测试一次你会发现文字显示出来了.
假如你想在剧情里临时改变文字坐标和文字显示模式的话可以用一下2个指令:
textmode(mode) –mode为想改变的模式

textxy(dx,dy) –dx和dy为文字的xy坐标

这2个指令记得原来的AMP也有的说…
好了,各位有没有发现在PGM(AMT)对话中的小图标像一个小动画一样十分的美,我记得以前用AMP的时候的图标都没有它那么美,其实这就像很多动画制作软件一样,由一张张的图片组成,但是强大的PGM可以将这一张张图片组合起来,我们先来看看图标的格式吧.
打开srcimageswin_wait_a.png.

[IMG]http://img181.poco.cn/mypoco/myphoto/20110410/10/5658756720110410103843057.jpg[/IMG]

嗯,如你所见,强大的PGM可以把一张图片分成12个部分,并且依次串连起来,形成一个图标动画.假如是自己制作的图标动画图片别忘了一定要分为由左到右的12个部分喔~~~
(众人:那个图标只能分为12个部分么?)
呃…你说的没错,假如呢,你不想PGM把对话图标分成12个部分的话就要修改脚本了.
话说半年前人家觉得AMP真的好神奇啊~当文字超过对话框时,文字就会自动换行,而当行数超过对话框底部时,文字又会自动把多出来的部分推到下一句话,当然了~> <,这个强大的功能在PGM(AMT)中也会有,具体如何设置呢,也就是src am_init.lua中的:

DIALOG_LINELEN = 50
DIALOG_LINEMAX = 3

其中DIALOG_LINELEN = 50的意思为当某行对话超过50个字符时自动开始换到下一行, DIALOG_LINEMAX = 3的意思为当对话行数超过3行时超出的部分像后推到下一句话.
就这样,关于文字部分应该就讲完了吧,下面就到下一个部分,分支选择项部分了……╮(╯▽╰)╭
【教程04】分支部分

嗯,终于到第2部分了,分支选择项在本泣自己的教程【教程03】已经很好的教会各位了,这个部分呢,还是以查漏补缺的形式教会各位关于分支部分的其他知识.
首先呢,先考各位一个问题,来看看上次的【教程03】学习的怎么样,请听题> <:
当你的选择小手指着某一个选择项时, RAMUS_BUTTON_BG发生了什么变化.
(众人:嗯…在选到了那个选择项的时候上面多出了一条柱…)
回答的不错啊,这个就是PGM(AMT)的另一个特点,当选择到了某个选择项时,不单单是图标的坐标发生了变化,同时,被图标指着的选择项也发生了变化,而现在呢,我就讲讲关于那个选择项,首先,你先打开srcimages amus amus_bg.png.

[IMG]http://img181.poco.cn/mypoco/myphoto/20110410/10/5658756720110410104349098.png[/IMG]
嗯, PGM(AMT)当处理RAMUS_BUTTON_BG时,会把这张图片分为2半,这个就是选择项背景图片的格式,上面的为未被选择的选择项的背景图片,而下面呢,如你所想就是被选择的选择项的背景图片.

【教程04】字体部分

对话和选择项少不了什么?当然就是文字了,而在PGM中文字和字体是分不开的,字体部分比较简单,我就做个简单的说明吧.
先打开src am_init.lua,然后在里面找到“font msg constant var”这行注释,你会看到以下几行:
FONT_PATH = "data/fz.ttf" --字体文件
FONT_SIZE = 11 --文字字号
FONT_COLOR = MAKE_RGBA_4444(0,0,0,255) --颜色和透明度,即RGBA
am_font_getinstance() --读取以上的设置,(假如上面的已经在别处提早设置过时,将不给予读取,即该指令无效.也就是说,你不能在除这以外的地方设置FONT_PATH, FONT_SIZE, FONT_COLOR,想在别处更改且可以读取的话需修改脚本.)


lrb2010
2011-04-10 11:39:20

【教程04】标题部分

话说…话说刚刚还在犹豫要先讲菜单部分还是标题部分,想了想,还是先挑简单的吧 ,话说这一个部分在【教程03】中也有教各位如何运用,但是呢, 还有一些地方没有讲到,本泣这一部分还是以查漏补缺的形式跟各位讲解关于标题的一些小知识.

仔细观察以下图片喔…
[IMG]http://img181.poco.cn/mypoco/myphoto/20110410/10/5658756720110410103635079.png[/IMG]

当小手指向”load”时load图片发生了改变,怎么样?很神奇吧…
(众人:还好啦,我记得以前RMXP也有这样的脚本和这个差不多.)
╮(╯▽╰)╭算了,我还是不多说废话了,先翻开srcimages itles探索其中的奥秘吧,本泣先拿其中的” title_start.png”举例:
[IMG]http://img181.poco.cn/mypoco/myphoto/20110410/10/5658756720110410104518038.png[/IMG]

…相信已经理解了前一部分的同学看完这张图片就懂了吧,PGM(AMT)会将这张图片分为2半,当光标小手指向某个图片时, PGM(AMT)会取那张图片的下半部分,而当没有选择到时,和选择项背景一样,会取上面那一部分.
所以,当你增加TITLE_BUTTON的图片数时别忘了把那张图片做成未选择和被选择2个部分喔~~~
下面就是本篇教程的难点部分——菜单部分了~~~★~~~还没有心里准备的同学可以先看看上面的几个部分好好理解喔~
【教程04】菜单部分
终于到了这个部分了,要是你学好了这一部分,我可以说,这篇教程你懂了50%,不骗你喔.> <嘛嘛~首先我们就再次打开src am_init.lua,然后在里面找到“menu module constant var”这行注释,你会看到以下的东西:
-- ================================================================

-- menu module constant var

-- ================================================================

MENU_BOX = "menu_box.png" -- 菜单框框(在PGM(AMT)里已经把这个框框无视了,所以你怎么修改在开启菜单的时候也不会出现这张图片,除非你修改PGM(AMT)里面的脚本.)
MENU_BOX_DX = 142 -- 菜单框框的X坐标
MENU_BOX_DY = -8 -- 菜单框框的Y坐标
MENU_ICON = "hand_icon01.png" -- 设置菜单小手的图片
MENU_ICON_DX = 170 -- 设置菜单小手的X坐标
MENU_ICON_DY = 78 -- 设置菜单小手的Y坐标
MENU_ICON_STEP_DX = 0 -- 设置菜单按钮和菜单按钮间小手的关于X坐标的移动步长
MENU_ICON_STEP_DY = 26 -- 设置菜单按钮和菜单按钮间小手的关于Y坐标的移动步长
MENU_ICON_INDEX = 0 -- 没什么,一般无需设置,想知道作用的话自己改一下= =
MENU_BUTTON {"menu_skip.png","menu_auto.png","menu_load.png","menu_save.png","menu_quit.png"}
--菜单按钮的图片,每有一个按钮就要依次添加一张图片.
MENU_BUTTON_DX = 210 --菜单按钮的图片的X坐标
MENU_BUTTON_DY = 80 --菜单按钮的图片的Y坐标
MENU_BUTTON_STEP_DX = 0 --菜单按钮和菜单按钮关于X坐标的间隔
MENU_BUTTON_STEP_DY = 26 --菜单按钮和菜单按钮关于Y坐标的间隔
MENU_BUTTON_COUNT = 5 --菜单按钮的数量
MENU_SOUND = "data/sound_bi.wav" -- 移动光标时发出的声音

关于设置目前就先说到这里,下面是呼出菜单的指令:(在PGM(AMT)中,按START键就会呼出菜单)
drawmenu()
十分简单的指令对吧,只需这个指令就可以呼出菜单了,但是! 假如你使用了callmenuoff()这个函数时,将无法呼出菜单,同理, callmenuon()就是允许呼出菜单.
[IMG]http://img181.poco.cn/mypoco/myphoto/20110410/10/5658756720110410104540031.png[/IMG]
嗯….之后再随口说一句MENU_BUTTON图片格式标题菜单一样,分为2个部分, 当光标小手指向某个图片时, PGM(AMT)会取那张图片的下半部分,而当没有选择到时,会取上面那一部分.而还有一个要注意的地方:关于按钮的图片设置和【教程03】标题中的一样: 你的菜单有多少个按钮你就应该在MENU_BUTTON更改多少张图片和在MENU_BUTTON_COUNT中填写标题中按钮的数量.


lrb2010
2011-04-10 11:39:28

咳咳,最后就是讲菜单的最难点了,各位要打起十二分精神喔~~~> <
当你看到“menu module constant var”这行注释的MENU_SOUND = "data/sound_bi.wav"下面还有一堆脚本:
function menu_callback()
if menutest()==5 then
allclear()
stacknull()
jump("am_start.ev") --回到脚本开头
drawevent()
elseif menutest()==1 then
drawskip() --快速浏览对话模式
elseif menutest()==2 then
drawauto() --自动对话模式
elseif menutest()==3 then
drawload() --载入数据模式
elseif menutest()==4 then
drawsave() --保存数据模式
else drawevent() end

end
可不要犯晕喔,这段定义menu_callback()函数的脚本就是判断当菜单按到第几个按钮时执行的脚本, menutest()==1的意思就是按到第一个按钮时执行的脚本,明白了么?本泣在这里就给各位顺便讲讲些拓展知识吧…
else在LUA语言中的意思可以理解为”除此之外”,通常与if(“假如”或”当”)联用.如上面的脚本所示,它的意思为:
当按到第5个按键时,清除数据并回到脚本开头;
除此以外当按到第1个按键时,进入快速浏览对话模式;
除此以外当按到第2个按键时,进入自动对话模式;
除此以外当按到第3个按键时,进入载入数据模式;
除此以外当按到第4个按键时,进入保存数据模式;
除此以外,退出菜单模式进入普通对话模式.
怎么样,懂了么,假如你添加了一个按钮别忘了,添加按到那个按钮时的判断喔~(注意数值不要搞混> <)
呼…终于把最难点解决了,不管有没有理解,现在就到最后一个部分——调查部分

【教程04】调查部分
关于调查模式你先打开src am_init.lua,然后在里面找到“find module constant var”,之后呢,会看到一下的东西:
FIND_ICON = "find_icon.png" --设置调查模式的移动光标的图片
FIND_ICON_DX = 480/2-16 --刚开始调查模式时光标出现的关于X坐标的位置
FIND_ICON_DY = 272/2-16 --刚开始调查模式时光标出现的关于Y坐标的位置
FIND_ICON_SPEED = 2 --使用摇杆移动光标时移动的速度
FIND_ANALOG_SPEED = 0.35 --使用方向键时移动光标时移动的速度
FIND_SOUND = "data/sound_bi.wav" -- 当光标点击了热区时发出的声音
之后呢…好像就说完了…其他没什么好说的了吧…好像这个部分也结束了吧…
(众人问:调查模式是啥?怎么应用?什么是热区?你都没说呢?想跑?没门)
呜…不要这样嘛> <, AMP新版-pgm教程中的【教程05】和【教程06】都是讲调查模式的喔~而且还是PGM的作者——白枫叔叔为我们亲自讲解,敬请期待咯~(偷笑)
呼…终于把教程4给写完了,这个教程居然比前一个教程所用的时间的双倍还要多…相信各位理解了这篇教程后,就能把PGM(AMT)成为一个只属于自己的个性引擎了!
PS:有任何问题欢迎在回复提问~
话说…突然间肚子好饿喔…家里的奶油瑞士卷又吃光了> <找时间又要出去蛋糕店买…真讨厌…总之呢,各位再见咯~~~(我们下次说不定因为缘分还会再见面的~~~~★~~~)


伪·红莲
2011-04-10 11:51:41

前排支持泣叔的教程的说!!


yht19921212
2011-04-10 11:55:12

感谢指导的说


710895609
2011-04-10 11:58:47

原来就是你啊


ge4845469
2011-04-10 18:21:21

支持..看看


甲虫飞
2011-04-11 10:10:27

回复了再看教程


love_xiaolu
2011-04-19 15:16:41

教程啥滴,最那啥了。


牧濑红莉栖
2011-04-19 16:21:01

渣渣前来围观。


o70078
2011-04-19 23:13:31

13岁居然能学会如此多,表示佩服,我比你大几岁却什么也没有学会..