第二讲、我要变文豪
很多熊(xiao)孩(xue)子(sheng)喜欢穿着钻石装到贴吧里秀优越,殊不知大部分吧友早已看穿了一切——他们用了修改器啊这是不争的事实......
为了抵制不良风气,弘扬浩然正气,宣传传统文化(度云八秒短片绝不是我的错),我教大家秒变文豪~
提示:本课必须认真听!否则一会儿你就不知道我在说什么了!
代码如下:
//------------------------------------------------------------------------------------
function useItem(x,y,z,itemId,blockId,side,itemDamage,blockDamage)
{
var X=getPlayerX();
var Y=getPlayerY();
var Z=getPlayerZ();
Level.dropItem(X,Y+10,Z,1,386,64,0);
print("Books are the ladder of human progress,but why my head is painful?");
}
//------------------------------------------------------------------------------------
看不懂?没关系,听我慢慢讲......
①新的钩子函数
这里出现了一个新钩子函数:
function useItem(x,y,z,itemId,blockId,side,itemDamage,blockDamage){}
在函数表中,我们可以发现它的解释是这样的:
function useItem(x,y,z,itemId,blockId,side,itemDamage,blockDamage){}
当进行一次点击时(如使用物品或放置方块,食用食物不包括在内)会触发这个函数,并返回数据。
x:被点击方块的x坐标
y:被点击方块的y坐标
z:被点击方块的z坐标
itemId:点击时手里拿的物品id(空手为0)//UP:物品ID详情请搜索Minecraft ID表,PC与PE是通用的
blockId:被点击方块的id
side:方块被从哪个方向点击
itemDamage:点击时手里拿的物品附加值(伤害值)
blockDamage:被点击方块的附加值(伤害值)
UP主特别说明:
用不上的参数可以省略,但顺序绝不能变!
例如UP只需要获取itemId和side这两个参数,那么我可以这么写:
function useItem(x,y,z,itemId,blockId,side){}
还可以更加简化:
function useItem(x,y,z,i,b,s){}
但后面的赋值必须对应(此处道理马上就讲,稍安勿躁)
②关于形参与实参(非常重要)
我们发现这个钩子的括号里有很多用逗号隔开的单词,它们是什么?
关于这个问题,我摘录一段材料并予以简单解释,大家也记记笔记:
形参:指出现在Function过程中的变量名、数组名,该过程在被调用前,没有为它们分配内存,其作用是说明自变量的类型和形态以及在过程中的作用。形参可以是除定长字符串变量之外的合法变量名,也可以带括号的数组名。
//也就是说,像上面的itemId,blockId等,都是形参哦~这也是函数可以像上面那样简化的原因!
实参:实参就是在调用Function过程时,从主调过程传递给被调用过程的参数值。实参可以是变量名、数组名、常数或表达式。在过程调用传递参数时,形参与实参是按位置结合的,形参表和实参表中对应的变量名可以不必相同,但它们的数据类型、参数个数及位置必须一一对应。
//理解了形参,这个也差不多能理解了吧?
参数传递(传参):在程序运行时,实际参数将参数值传递给相应的形式参数,然后在函数中实现对数据处理和返回的过程叫传参。
帮助理解:实参与形参的个数应一样,类型应一致。形参可以类比于公式中的符号,那么实参就是符号具体的值,在调用过程前必须得到赋值。把实参的值通过调用传递给形参,就相当于把值代入公式进行计算。
(这部分如果不明白就多读几遍,尽量理解否则以后就不好学)
③用var给变量赋值
小白: var X=getPlayerX() 这句里 var 是什么意思?后面接的一坨是干什么用的?
UP:var 是赋值的意思,如:
var a=1;//把1这个常量赋值给a这个变量。