level 7
此贴只是一个知识普及贴,不会详细讲解js语法,只是告诉会js的朋友该如何编写脚本,内容对会写脚本的人来说基本没什么用处
Ps:学习js推荐javaScript入门经典与javaScript权威指南,前者用来学习基本语法,后者是在写脚本时碰到不懂的地方用来查询的,类似于字典.
Q:自己脚本的代码应该编写在何处?
A:(function(){在该处插入你的脚本 })();
Q:写好的脚本该放入那里?
A:你的项目名下的js\plugins\内,而js内存放的则是后台脚本
Q:F1教程里的API该如何使用?
A:F1教程里的API是不建议直接使用的,事实上,F1里的部分API主要是用来给后台脚本创建一个Base类,例如Window_Base是由Window API创建的.
然后该Base类又用于创建其余子类,例如游戏里所有窗口,都是以rpg_window.js里的Window_Base作为父类的而创建的.为了直观,我将在下面的楼层上传继承关系视图
剩下的一部分API则是在查看后台代码时用于参考.
2015年11月28日 09点11分
2
挖坟做一点微小的工作:写成function(){code_body}()的形式是因为这是JS的一种匿名函数调用方式,适用于全局执行的插件脚本。如果想要通过事件命令调用需要写成function name(args){code_body}的样子,然后复写Game_Interpreter.prototype.pluginCommand = function(command,args){}提供命令接口
2018年06月10日 07点06分
level 7
Q:那脚本如何编写呢?
A:在创建一个脚本时,我们首先需要知道,我们要创建一个具有什么功能的脚本.
为了便于说明,我就以创建一个具有改变游戏天气这个功能的脚本作为例子
首先,我们需要用编辑器的查找功能,来查找后台脚本是否有相关的对象供我们使用(如果没有的话,就只有自己写了,难度大)
然后用weather作为关键字在遍历所有官方后台数据后,我们在位于rpg_sprites.js里发现了如下函数
Spriteset_Map.prototype.updateWeather = function() {
this._weather.type = $gameScreen.weatherType();
this._weather.power = $gameScreen.weatherPower();
this._weather.origin.x = $gameMap.displayX() * $gameMap.tileWidth();
this._weather.origin.y = $gameMap.displayY() * $gameMap.tileHeight();
};
十分简单直白的告诉了我们,各个参数的作用,现在直接将此函数复制进我们的脚本以方便修改.
首先,创建这样一个语句var _Spriteset_Map_updateWeather = Spriteset_Map.prototype.updateWeather;
在他的下面紧跟着编写如下代码
Spriteset_Map.prototype.updateWeather = function() {
_Spriteset_Map_updateWeather.call(this) ;
this._weather.power = 9;
this._weather.type = "rain";
};
_Spriteset_Map_updateWeather.call(this) ;的作用是为了在上述函数中,调用Spriteset_Map.prototype.updateWeather
所以上述函数等价于:
Spriteset_Map.prototype.updateWeather = function() {
this._weather.type = $gameScreen.weatherType();
this._weather.power = $gameScreen.weatherPower();
this._weather.origin.x = $gameMap.displayX() * $gameMap.tileWidth();
this._weather.origin.y = $gameMap.displayY() * $gameMap.tileHeight();
this._weather.power = 9;
this._weather.type = "rain";
};
此脚本的修改原理就是直接覆盖旧变量,引入call指令是为了不破坏原始函数的代码,避免发生难以查找的bug
此例中的power,type等,可参考F1教程中的weather API.
上面就是我以前走过的坑了,此贴目的只是不想让有意写脚本的新人,把时间和精力浪费在这些地方以至于熄灭了热情.
2015年11月28日 09点11分
3
其实F1里有这个规范介绍。
2015年12月01日 12点12分
level 4
哇,谢谢楼主啦,正打算一个人苦逼的画UML图,没想到你已经搞定了。说实话这次的文档完整程度真的很差啊,实际脚本用的api基本没有。所有的类统统没有,要搞只能看源码,真是有点呵呵啊。苦了我这个JS菜鸟了。
2016年03月24日 12点03分
14
level 1
哈哈,楼主对的,为什么直接调用Weather类???感谢UML图谢谢
2016年04月26日 13点04分
15
level 1
我想问一下,因为以前的确学过一点JS,但是感觉官方插件里面的JS写法和我所认知的差距实在比较大(汗),所以写插件的时候有什么必须要注意的区别吗?
2016年04月30日 11点04分
16