全局函数

有的时候,我们会在多个地方使用相同的代码,这个时候,就可以使用“全局函数”来实现。
全局函数有三个关键组成部分,分别为代码、参数和返回值。

创建函数

在领域开发面板,点击“添加全局函数”创建一个函数

代码

当调用函数时,会执行函数的代码。
例如,一个叫做“赠送新手礼包”的函数的代码是:
属性.金钱 += 1000
物品.木棍 +=5
物品.石块 +=10
物品.泥土 +=10
在脚本中,可以通过函数.函数名()执行这段代码。注意不要少了()符号。
在脚本中调用叫做“赠送新手礼包”的函数:
函数.赠送新手礼包() // 会进入函数代码内部
// 执行完函数后,继续执行下面的代码
当代码执行到`函数.xxx()`后,会进入函数内部,依次执行函数的代码,然后再回到调用函数的位置,继续往下执行。

参数

通过参数,可以向函数代码传入特定数值,从而实现相似但又有一些区别的代码。
例如,添加一个函数叫做“变动生命值”,这个函数有两个参数:“操作玩家id”和“变动值”。“操作玩家id”参数用于告诉函数应该给哪个玩家变动生命值,而“变动值”参数则表示要变动多少生命值。
var 操作玩家 = 查找玩家(操作玩家id)
var 新生命值 = 操作玩家.属性.生命值 + 变动值
if (新生命值 <= 0) {
    // 执行昏迷代码
    操作玩家.属性.状态 = '昏迷'
    操作玩家.属性.生命值 = 0
    操作玩家.发送未读消息("你的角色生命值为 0,已昏迷")
    return
}
if (新生命值 > 100) {
    新生命值 = 100
}

操作玩家.属性.生命值 = 新生命值
在脚本中,可以通过类似函数.函数名(参数1, 参数2, 参数3)的格式执行代码并传入参数
调用“变动生命值”函数,并传入参数:
函数.变动生命值(玩家.id, -10)
函数.变动生命值(属性.敌方, -20)
这段代码执行了两次该函数,第一次给当前玩家减少10生命值,第二次给玩家的“敌方”减少20生命值。

返回值

通过返回值,可以向调用函数的脚本返回特定数值,例如函数的执行结果等。
在函数中,返回一个值的格式为return xxxreturn指的是返回,这将让函数不再继续往下执行,回到调用函数的位置。
例如,一个叫做“获得玩家威望”的函数的代码是:
var 金钱威望 = 属性.金钱 /10
var 战斗力威望 = 属性.战斗力
var 历史战绩威望 = 属性.历史战绩 / 100
return  金钱威望 + 战斗力威望 + 历史战绩威望
在脚本中,可以通过var 临时变量 = 函数.函数名()获取返回值
获得玩家的威望并赋值给临时变量:
var 威望 = 函数.获得玩家威望()
属性.临时文本 = '你的威望是' + 威望 + '。'

编程思想

函数对于组织代码有重要作用。在脚本中,如果出现重复代码,你应当尽可能的把重复代码放到函数中。这样,当功能发生变化,或者修复代码中某个问题时,你只需要在函数中修改一次。
此外,函数还可以帮助你和合作者更好的理解代码正在做些什么。即使是自己写的代码,过了一段时间后,你也不一定能记住它是怎么工作了的。将代码拆分、细化和命名为多个函数,可以方便未来的自己和别人理解并修改代码。