在查阅开发者学院中的脚本API时,若有任何问题或建议,欢迎通过问卷进行反馈!【点我填写问卷】
开发者在创作地图时要实现的各种玩法,依赖于迷你世界提供的一系列接口;玩法的运行又依赖于一系列事件。比如一个简单的玩法点石成金:“每当玩家点击石头,就把石头变成金块”,要实现这个玩法需要:
①首先监听事件任意玩家点击方块;
②事件触发后判断被点击的方块是否为石头;
③如果是,就在被点击的位置创建金块。
像这样,监听事件、进行判断、执行操作是进行玩法创作的基本形式。“监听事件”可以在下面事件列表里查询,“进行判断”可以根据需要自行处理,“执行操作”一般就要用到各种接口了。
每个接口相当于一个小功能,调用之后可以进行各种操作,组合起来就可以实现各种玩法。比如上面例子里,“在被点击的位置创建金块”,我们需要“在指定位置创建指定方块”的功能,通过查询方块管理接口,可以找到:
·设置指定坐标处为某方块:
result=Block:setBlockAll(x , y , z , blockid , data) |
|
result:0成功 1001失败 |
x,y,z:要设置的坐标 blockid:要设置的方块id data:要设置的方块数据 |
Block:setBlockAll(0 , 7 , 0 , 1 , 0) |
|
在(0,0)高度7的位置生成一个基石,数据为0 |
也就是说,只要调用这个接口,传入被点击的坐标、金块id和方块数据(这里不用考虑,传入0即可),就可以把指定坐标的方块设置为金块。
那么如何获取“被点击的位置”呢?通过查询方块事件列表:
Player.ClickBlock |
玩家点击方块 |
eventobjid:点击方块的玩家迷你号 blockid:被点击的方块id x,y,z:被点击的方块坐标 |
可以看到,“玩家点击方块”这个事件参数共有{eventobjid,blockid,x,y,z}五个值,其中x、y、z就是我们需要的坐标值,另外还需要blockid来判断被点击的方块是否为石头。迷你里注册事件监听的脚本代码为:
ScriptSupportEvent:registerEvent([=[事件名]=],函数名)
比如这里我们需要监听事件“玩家点击方块”,那么就需要(函数名是任意的):
ScriptSupportEvent:registerEvent([=[Player.ClickBlock]=],click)
然后新建click函数:
local function click(e)
if e.blockid==104 then
Block:setBlockAll(e.x,e.y,e.z,400,0)
end
end
这里104是石头的id,400是金矿的id。完整代码如下:
local function click(e)
if e.blockid==104 then
Block:setBlockAll(e.x,e.y,e.z,400,0)
end
end
ScriptSupportEvent:registerEvent([=[Player.ClickBlock]=],click)
这样就实现了一个简单的小功能;各种小功能组合起来就可以实现复杂有趣的玩法。如果需要更详细的讲解可以参考迷你世界脚本教程。或者查看我们准备的Lua编程基础课程,以及Lua实例应用课程。
强烈推荐使用此方法在游戏内查询ID,更新快且查询方便
第一步:点击编辑框上方“ID库”,选择要查询的ID类型
第二步:左侧选择分类,点击对象即可显示对应ID
第三步:点击“插入ID”即可直接输入使用
第一步:使用快捷键“Ctrl+I”,或右键单击输入框任意位置,选择“插入ID”
第二步:在弹出的“ID搜索工具”窗口输入要查询的对象名称,即可直接搜索ID
第三步:点击搜索列表即可输入使用
-- UI动效表数据
-- 显示动效
10001 渐显
10002 放大显示
10003 缩小显示
-- 隐藏动效
20001 渐隐
20002 放大隐藏
20003 缩小隐藏
-- 循环动效
30001 颤抖
30002 跳动
30003 心跳
30004 摇摆
30005 旋转
30006 翻转
30007 顺时针扫描
30008 逆时针扫描
30009 闪烁
-- 文字动效
40001 打字机