> 单机游戏 > 游戏攻略
我的世界函数命令怎么用 函数系统的构成介绍
2018-04-13 10:02:03 作者:佚名

  我的世界1.12版本中新增了函数系统,那么我的世界1.12版本函数命令怎么用?下面99小编就给大家带来我的世界函数命令系统的构成详细介绍。

我的世界函数命令怎么用 函数系统的构成介绍

  1.12中,函数与进度系统的出现,让命令脱离命令方块——这句曾经说过的玩笑般的预言,正式成为可能。

函数系统的构成

  函数系统的由来

  函数(function)系统,是 MC 1.12 Pre-1 版本中新增的一个功能,它将原来进度系统中返回指令的部分单独提取出来,做成了现在的函数系统。

  函数系统的形式

  函数系统由命名空间和函数文件组成,这些文件保存在存档目录/data/functions/下。functions目录下的文件夹,称为命名空间,各个命名空间下存放不同的函数文件。实际上,命名空间就是方便我们编写者分类并管理各种函数文件。

  函数文件是以.mcfunction为后缀名的文本文件,建议采用utf-8无BOM编码以防显示错乱。简单来讲,一个函数等价于一个多行命令方块,函数文件里面每一行写一条指令,当执行这个函数时,里面的指令会按行依次执行。如果在一个函数中调用其它函数,那么在同一游戏刻,被调用的函数中所有指令先执行完,再继续当前函数中后续的指令,就像插队一样,我们在后面对比命令方块时还会说到这个。

  请注意:在 1.12 Pre-3 版本中存在一个严重漏洞,即命令执行体不能正确地通过execute传递到被调用的函数中去,这个漏洞有望在后续版本以及正式版修复。

  以下是本文用到的一个函数系统的目录,带有"+"的表示为目录

  + functions

  + say

  hi.mcfunction

  bye.mcfunction

  Text1.mcfunction

  text2.mcfunction

  + system

  + process

  _process.mcfunction

  _main.mcfunction

  player_tick.mcfunction

  如何调用函数

  在 1.12 中,MOJANG新增了function指令和一条名为gameLoopFunction的游戏规则来辅助我们使用函数系统。function指令的格式如下:

  function <命名空间:函数名>

  function <命名空间:函数名> <选择器>

  这两条都是可行的。其中,if|unless是在1.12 pre-4加入的功能,后面我会解释到这个。我们先来说说第一种形式。例如上面的目录中,要调用system这个命名空间下的_main文件,就是输入这样的指令:

  function system:_main

  现在,我们来看一个例子例如say命名空间下的Text1.mcfunction和text2.mcfunction,里面分别写上这些内容

  Text1.mcfunction

  #这是一个范例,在function文件中可以用#来注释行。请注意,不能够使用//来注释!

  say 1

  function say:text2

  say 2

  text2.mcfunction

  say 3

  say 4

  当我在系统后台输入function say:text1时,聊天框会出现这些内容:

  [server] 1

  [server] 3

  [server] 4

  [server] 2

  也就是说,执行function指令的人,会把函数里面的指令依次执行——我在系统后台输入function指令,就是系统在执行,我自己输入function指令,就是我本人在执行。大家可能注意到了,函数中支持使用#进行注释(旧版本支持//注释,当前版本已经不再支持),也就是说被注释行不会作为指令而执行,这一点有多方便相比不比我再说了。同时需要大家注意:函数中所有指令不能够以/开头。例如,你可以这样写:

  say @s

  但是不能这样写:

  /say @s

  最后有一点需要注意的是,在function指令中调用函数时,不区分大小写。例如前面say命名空间下的Text1.mcfunction,我在调用的时候写的是say:text1

  然后是第二种形式,也就是带有if|unless的。我简单举两个例子,大家就知道是什么意思了。

  say:tellraw.mcfunction

  scoreboard objectives add timer dummy 计时器

  scoreboard players add @s timer 1

  function random:title if @s[score_timer_min=1200]

  scoreboard players reset @s[score_timer_min=1200] timer  random:title.mcfunction

  summon area_effect_cloud ~ ~ ~ {Tags:["rnd_title","rnd_title1"]}

  summon area_effect_cloud ~ ~ ~ {Tags:["rnd_title","rnd_title2"]}

  summon area_effect_cloud ~ ~ ~ {Tags:["rnd_title","rnd_title3"]}

  summon area_effect_cloud ~ ~ ~ {Tags:["rnd_title","rnd_title4"]}

  summon area_effect_cloud ~ ~ ~ {Tags:["rnd_title","rnd_title5"]}

  entitydata @r[r=0,type=area_effect_cloud,tag=rnd_title] {CustomName:"rnd_title"}

  execute @e[name=rnd_title,tag=rnd_title1] ~ ~ ~ tellraw @a[r=0,c=1] ["1"]

  execute @e[name=rnd_title,tag=rnd_title2] ~ ~ ~ tellraw @a[r=0,c=1] ["2"]

  execute @e[name=rnd_title,tag=rnd_title3] ~ ~ ~ tellraw @a[r=0,c=1] ["3"]

  execute @e[name=rnd_title,tag=rnd_title4] ~ ~ ~ tellraw @a[r=0,c=1] ["4"]

  execute @e[name=rnd_title,tag=rnd_title5] ~ ~ ~ tellraw @a[r=0,c=1] ["5"]

  将say:tellraw放到主进程中

  execute @a ~ ~ ~ function say:tellraw

  则每位玩家每分钟将会看到1~5中随机一个数字出现在聊天框。也就是说,只有计时器分数满1200的人会执行后面的随机部分。那么很显然,带有if的意思就是,如果能找到后面的选择器,就执行这个函数,否则不执行。相当于testfor。

  那么unless的意思也就很明显了:在找不到后面的选择器的时候,执行这个函数,相当于testfor+非门。

  gameLoopFunction

  讲完调用,就该讲讲高频了。玩命令方块的人都知道高频是实现许多功能的前提。在函数系统中,MOJANG 为我们提供了一条名为gameLoopFunction的游戏规则来实现高频。它的格式是

  gamerule gameLoopFunction <命名空间:函数>

  也就是说,你可以指定一个函数来高频执行,这个高频是20Hz的,也就是每一个游戏刻都会执行一遍。新建的存档如果没有执行过这条指令,而是用gamerule gameLoopFunction来查询的话,得到的返回值是-

  为了方便,我们将这个规则简称为glf。在旧版本中,glf指定的函数,由系统(server)作为执行体;而在新的版本中,MOJANG 引入了虚拟执行体,例如将 say:text2 指定为glf时,每一个游戏刻得到的结果是这样的

  [say:text2] 3

  [say:text2] 4

  也就是说,系统不再作为执行体,而是由虚拟的执行体代为执行。

  关于 glf 多说两句。使用 glf 去高频执行一个函数,和使用 RCB(循环型命令方块,紫色那种)去执行,是不一样的。区别主要在于其更新顺序先后。一般而言不会造成严重影响,但是在某些情况会不一样。比如,使用 CB 能检测到生物的{HurtTime:10s}这个 NBT,而使用 glf 执行函数只能检测到的是{HurtTime:9s},检测不到10,这是因为关于函数的更新,都放在了生物更新之后,而 CB 的更新则是在生物更新之前。详情可以看这里。按照 Searge 的说法,函数并不是命令方块的完全替代。这个说法,大家就见仁见智了。

  以上是函数系统的相关构成,以及如何调用函数。接下来我们来了解一下函数系统的模块分类>>>

99danji小编猜你还喜欢

2017-06-09我的世界函数系统的模块调用攻略 1.12版本函数命令系统教程2017-06-09我的世界函数系统与进度系统联动 函数系统的基础使用攻略2017-06-09我的世界函数系统与命令方块那个好 函数系统与命令方块对比

相关文章

234游戏网站地图
游戏中心
手机游戏
app大全
单机游戏
网络游戏
网页游戏
手机网游
新闻中心
网游新闻
手游新闻
单机新闻
原创栏目
综合热点
实用问答
专题文章
图片中心
美女图片
爆笑图
二次元
网游图片
单机图片
手游图片
视频中心
单机视频
手游视频
网游视频
视频综合
游戏赛事
攻略中心
单机攻略
手游攻略
网游攻略
爆料中心
娱乐八卦
新鲜事
国内新闻
评测中心
单机评测
手游评测
网游评测
子站导航
234游戏网
234问答
234游戏论坛
vr频道
问答2
问答3

大家都在搜