基于RPGMakerMV的JavaScript基础-3

来源:互联网 发布:日本轻小说软件 编辑:程序博客网 时间:2024/05/24 05:07
第三章        插件及插件参数和命令

第一节        先做一道练习题

好了,现在我们就要正式开始了,首先先测试一下自己的水平,也可以帮着回忆一下学到的知识。请听题:


咪咪是一只聪明的小老鼠(什么什么?谁规定老鼠就不能叫咪咪了?真是!),她正在四处找水喝呢……她发现了一些水罐,里面都有水。她趴在每个水罐口上都试了一遍,结果仍然一口水没喝到——这些水罐里的水都很少,水面距离罐口太远,她用嘴够不着。这可怎么办呢?



如果是你,你是不是会想把水罐打翻?只可惜,咪咪只是一只小老鼠,没那么大力气呢。不过,这也难不倒她,聪明的咪咪自然有办法:她转过身来,把尾巴放进去浸湿,再喝尾巴上的水就好了,够聪明吧?


我们已知每个水罐里水面到水罐口的距离,还知道咪咪的尾巴最多可以伸进水罐口t 厘米。



根据这些条件,请你判断一下:有多少个水罐中的水可以被咪咪喝到?


要求:写一个函数,参数有两个值,一个是咪咪的尾巴长度t,一个是储存有水罐高度信息的数组,函数的返回值是可以被咪咪喝到的水罐的数量。


在事件的中插入脚本,并输入如下代码。


  1. function ifDrink(t,pitcher){
  2. //input your code
  3. };
  4. var t=10;
  5. var pitcher=[8,7,13,5,12];
  6. alert(ifDrink(t,pitcher));
复制代码

如果感觉脚本的编辑框太小,放不下的话,可以写好后去掉一些换行,或者直接把ifDrink函数放到一个插件里面,然后在事件中的插入脚本输入剩余部分。


另外,一些格式上的问题,或者语法上的问题,(数组的长度该如何获取呢?)这些都可以百度搜索到的。


百度是个好工具。百度是个好工具。百度是个好工具。



好了,这个题目自己就可以多用几个算例自己测试一下,下面我给出我的代码,放在图3-1里面,别想ctrl+c,ctrl+v,自己照着一个个的敲一遍,也是很有成就感的。


另外,写在js文件里面然后开启插件的方式也可以,这样你可以试试把后面几句也直接放在js里面有什么不同,如图3-2。


注意,插件里面的代码是会在游戏开始的时候就开始执行的,这点需要特别注意,这个特性如果把握不好就很酸爽了。


 
图3-1
 
图3-2
第二节        开始黑魔法-随机购买装备

如果前面的例子完成了,那就来看我的黑魔法吧。这次我们来做一个随机购买装备的插件。


就像这样,使用1000元钱,然后随机从设置好的装备列表获得一件装备,主要看运气,有可能获得一件小木剑,也有可能获得屠龙刀。


首先,我们得先搞清楚这几点,这样才能完成我们的工作。


所有装备的列表在哪里呢?

所有装备的列表,是在data文件夹下面以json的形式记录着,在游戏进行的时候,会依照着json文件中的数据创建一个一样的对象,各个对象的对应关系可以从rpg_manager.js中看到,如图3-3。我们可以调用$dataWeapons来获得武器的信息。



图3-3
怎么获得装备呢?

通过在各个核心js文件中搜索gain item、 change item等关键词,我们找到了获得物品的函数是放在rpg_objects.js中的Game_Party.prototype.gainItem函数。这样的话,我们也可以调用这个函数来获取装备,如图3-4。


 
图3-4
怎么获得并且控制当前的金钱数量呢?

一样的对gold,money等进行搜索,我们找到了控制金钱数量的方法,Game_Party.prototype.gold等等,如图3-5。



图3-5
随机数怎么得到?

这里,我们介绍几个js自带的函数。


  • Math.random(); 结果为0-1间的一个随机数(包括0,不包括1)
  • Math.floor(num); 参数num为一个数值,函数结果为num的整数部分。
  • Math.round(num); 参数num为一个数值,函数结果为num四舍五入后的整数。

利用这三个函数,我们就可以获得我们想要的随机数。



这样对思路的初步考虑,我们发现了一些问题,然后找到了解决的办法,这样我们就可以开始编程了,代码如图3-6,3-7,看备注。



图3-6

图3-7

这样,我们的基本功能就完成了。


看看效果,如图3-8,这样简单的使用刚才的方法调用就好了。第一次使用后,来了一把弓,如图3-9。第二次使用后,又来了一把弓,如图3-10。第三次使用后,来了一把斧子,如图3-11。


试了试,感觉效果还不错,那么我们自己就可以简单的进行使用了。



图3-8
 
图3-9
 
图3-10
 
图3-11
第三节        插件参数和命令

现在,我们要让别人也能方便的使用这个插件,肯定要做一些说明,但是,单看注释对某些完全不懂js的人还是太费劲,mv特有的插件参数和命令可以让他们也能比较省力的学习使用插件。


我们也要把我们的这个随机买武器插件扩展出参数和命令功能来,该怎么办呢?


还是要对照着人家的代码来分析,再次翻出EnemyBook.js找找看有没有什么参数,命令相关的部分,如图3-12。



图3-12

好,在打头的注释里面,我们看到了help,这里面的内容和插件管理器的帮助显示的一样,上面还有个param,这和插件管理器的参数也是一样。我们可以猜测,这就是我们需要的部分。
事实上,插件管理器可以解析js的脚本中有特定的格式的部分,把它们当做一些有特定含义的内容表示出来,但是这些东西在js里面确实是不起作用的。



好了,我们也复制一份到我们的RandomWeapon.js里面。再改改,如图3-13。



图3-13

像这样,我们也有了一个参数,但是,js是不能识别注释里面的内容的,该怎么让它起作用呢?我们继续看EnemyBook.js。好,我们发现了Unknown Data,这个param后面的词,现在在这两句话里面出现了,那么,我们也一样抄下来就好了,如图3-14。



图3-14

事实上,这里面出现的PluginManager.parameters里面包含了对js插件文件中的参数解析结果,我们可以通过它来得到在插件管理器中输入的参数,另外,这些设置好的数组,都是储存在plugins.js里面的,可以打开看看哦。


现在,参数的问题解决了,那么命令该怎么办呢?


我们继续找找在EnemyBook.js里面关于命令的部分,找到了这么两个部分,如图3-15。


 
图3-15

先把Game_Interpreter.prototype.pluginCommand放进了一个断头鬼里面,然后又给Game_Interpreter.prototype.pluginCommand赋值一个函数,最后在新的函数里面又调用了断头鬼的call方法。


先解释一下call方法,将a对象的方法加在b对象执行。简单来讲,这个过程就是一个扩展原来的Game_Interpreter.prototype.pluginCommand函数的功能的过程。


断头鬼相当于一个两个变量交换值的时候的临时变量,里面储存了没有被重新赋值过的原来的Game_Interpreter.prototype.pluginCommand函数的内容,然后重新定义Game_Interpreter.prototype.pluginCommand的时候调用临时变量的call方法,就可以让新的函数里面继承了原来久的函数的内容。总之,我们照着写就可以了,完成后,如图3-16。


这时候,我们调用的话,就可以用插件命令来调用了,如图3-17。

图3-16

图3-17


原创粉丝点击