首页
欢迎
欢迎来到迷你世界!迷你世界是一个多人联机的3D创意平台,拥有着低门槛、高上限的工具,让不同能力的创作者都能把自己的奇思妙想构建、编辑并分享出来。我们相信大家能在迷你世界里创作出精彩的作品,把幻想变成现实。
在迷你世界中,创作一个属于自己的游戏有很多种方式,除了可视化的触发器之外,迷你世界原版的开发框架可以使用Lua脚本语言进行开发编辑。该类方法针对有一定编程基础的小伙伴,可以对自己的自定义生物、方块、UI、玩法等内容的逻辑进行开发,有着更高的自由度,阅读性,版本控制,可以更好的制作游戏, 我们也提供了完善的API接口给大家使用。建议在Windows PC平台上进行开发,以获得最好的体验。
简单入门
进入3.0地图后,点击右上角图标即可创建一个世界节点的脚本
脚本图标
脚本图标
代码功能非常强大,几乎能控制游戏的任何方面。举几个例子:
1、如何在聊天框打印:你好!迷你世界!(使用前请先将原有编辑器的代码全部删除哦!)
local Script = {}
-- 组件启动时调用
function Script:OnStart()
Chat:SendSystemMsg("你好,迷你世界!")
end
return Script
代码解读:
是不是很简单,把这段代码贴到脚本中试试吧!
还可以把里面的汉字换成其他的试试
如果想要输出很多句,那就多粘贴几行
2、在坐标:10,8,10的位置刷出一只野萌宝怪物
local Script = {}
-- 组件启动时调用
function Script:OnStart()
GameObject:CreatePrefab(ObjType.Mob, 3102, 10,8,10)
end
return Script
代码解读:
野萌宝是游戏中常见的怪物,但是由地图随机刷出的,这一句脚本指令就可以让野萌宝按照指定坐标点刷出了
把代码粘贴到脚本编辑区试试吧,如果不怕危险的话,还可以多刷出一些出来,当然坐标也是可以修改的
代码运行
在使用脚本编辑器之前,你要掌握一些Lua基础知识。每个地图的脚本会在主机端运行,对游戏世界里的各种事件做出反应,并且更新游戏的状态。
游戏状态每隔50毫秒更新一次,这个时间间隔叫做1tick。在每一tick内,游戏会按以下步骤运行:
应用来自玩家设备的更新
应用来自脚本的更新
更新游戏的物理状态
把状态同步给所有脚本,并安排脚本下一次更新
把更新后的状态发送给所有玩家设备
Events 事件
每当引擎发生更改时,事件就会分派到脚本中。可以使用 TriggerEvent 监听这些事件。要监听事件,请使用传入的处理程序作为参数来调用它。
比如一个简单的玩法点草成金:“每当点草块时,把它变成钛合金”,要实现这个玩法需要:
①首先监听事件任意玩家点击;
②事件触发后判断被点击的方块是否为草块;
③如果是,就在被点击的位置创建钛合金块。
像这样,监听事件、进行判断、执行操作是进行玩法创作的基本形式。“监听事件”可以在下面事件列表里查询,“进行判断”可以根据需要自行处理,“执行操作”一般就要用到各种接口了。
每个接口相当于一个小功能,调用之后可以进行各种操作,组合起来就可以实现各种玩法。比如上面例子里,“在被点击的位置创建钛合金块”,我们需要“在指定位置创建指定方块”的功能,通过查询方块管理接口,可以找到:
替换指定坐标处为某方块:
result=Block:ReplaceBlock( blockid , x , y , z ,face, color) result=Block:ReplaceBlock(452 , 0, 7 , 0 )
result:true成功 false失败 true
blockid:要设置的方块id
x,y,z:要设置的坐标
face:方块朝向
color:方块的颜色 452,
0,7,0
可不填
可不填
替换某位置的方块接口 替换(0,0)高度7的位置生成一个钛合金
也就是说,只要调用这个接口,传入钛合金块id和被点击的坐标,就可以把指定坐标的方块设置为钛合金块。
那么如何完成①首先监听事件任意玩家点击;获取“被点击的位置”呢?通过查询方块事件列表:
Player.ClickBlock:玩家点击方块时触发
eventobjid:点击方块的玩家迷你号
blockid:被点击的方块id
x,y,z:被点击的方块坐标
可以看到,“玩家点击方块”这个事件参数共有{eventobjid,blockid,x,y,z}五个值,其中x、y、z就是我们需要的坐标值,另外还需要blockid来判断被点击的方块是否为石头。迷你里注册事件监听的脚本代码为:
ScriptSupportEvent:registerEvent([=[事件名]=],函数名)
比如这里我们需要监听事件“玩家点击方块”,那么就需要将 TriggerEvent.PlayerClickBlock 派发到 self.Player_Click (函数名是任意的):
self:AddTriggerEvent(TriggerEvent.PlayerClickBlock, self.Player_Click)
--TriggerEvent.PlayerClickBlock是官方提供的事件监听,可以在wiki中查看更多的事件
--self.Player_Click 是自定义的一个函数名,可以改成其他你喜欢的
然后在组件启用的时候添加监听
-- 组件启动时调用
function Script:OnStart()
-- 添加玩家移动事件监听
self:AddTriggerEvent(TriggerEvent.PlayerClickBlock, self.Player_Click)
end
接着完成②事件触发后判断被点击的方块是否为草块; **③如果是,就在被点击的位置创建钛合金块。**在定义点击的时候进行判断,如果符合则执行对应效果
-- 定义事件触发时的动作
function Script:Player_Click(event)
-- 玩家点击方块时,判断点的是否是草块
if event.blockid == 100 then
local success = Block:ReplaceBlock(452, event.x, event.y, event.z)
-- Block:ReplaceBlock是官方提供的放置方块方法,可以在wiki中查看更多的方法
-- local success 用来接收Block:ReplaceBlock运行后的结果,可以用来做是否成功放置的判断
-- event.x是上面的官方事件产生的事件参数,可以通过Player_Click(event)中的event.x来获取事件中的x,event.blockid获取事件中的方块类型。event可以叫其他任意名字,例如Player_Click(aaa),获取的时候就是aaa.x。
end
end
最后是完整的代码,下面的脚本将会在玩家进入游戏后,监听玩家是否点击草块,如果点击草块则会把草块替换成钛合金(452)。
-- 官方定义的函数,不能修改变动
local Script = {}
-- 组件启动时调用
function Script:OnStart()
-- 添加玩家点击事件监听
self:AddTriggerEvent(TriggerEvent.PlayerClickBlock, self.Player_Click)
--TriggerEvent.PlayerClickBlock是官方提供的事件监听,可以在wiki中查看更多的事件
--self.Player_Click 是自定义的一个函数名,可以改成其他你喜欢的
end
-- 定义事件触发时的动作
function Script:Player_Click(event)
-- 玩家点击方块时,判断点的是否是草块
if event.blockid == 100 then
local success = Block:ReplaceBlock(452, event.x, event.y, event.z)
-- Block:ReplaceBlock是官方提供的放置方块方法,可以在wiki中查看更多的方法
-- local success 用来接收Block:ReplaceBlock运行后的结果,可以用来做是否成功放置的判断
end
end
-- 官方定义的函数,不能修改变动
return Script
完整教程视频
迷你世界常用类介绍
World 世界
world对象是整个迷你世界 API的入口点。它具有设置世界基础玩法、规则的作用。
Block 方块
block可让你修改世界地形。迷你世界的世界地形由一个个方块构建而成。你可以使用Block:PlaceBlock()在指定的世界坐标位置放置一个指定的方块。
Player 玩家
Player 是 迷你世界 世界中具有特殊类型的实体,玩家具有特殊的属性。可以使用 TriggerEvent.GameAnyPlayerEnterGame 捕获玩家进入游戏的事件,或使用 TriggerEvent.GameAnyPlayerLeaveGame 检测玩家离开游戏。
Actor 对象
迷你世界世界中的游戏对象,实体具有模型、变换、物理组件,还有其他的一些常见组件,如粒子特效、运动器、音效等。可以在脚本中调用 GameObject:CreatePrefab()来创建实体。还可以通过调用实体对象身上的 GameObject:Destroy() 来销毁该实体。
组件编辑
进入对象或者世界编辑后,我们可以看到它们身上都挂载了许多组件。这些组件可以控制对象的外观、属性、物理特性、行为逻辑等等,给“舞台”上的“演员”赋予了生命。
官方提供了一些封装好的组件,我们可以通过组件面板直接更改对象的属性。也可以卸载掉一些不需要使用的组件。
如果官方组件不能满足需求,我们也可以通过添加触发器组件/脚本组件来制作新的组件。(对于高手来说,通过把同类型的逻辑封装成组件,可以让我们的代码更加精简易于管理。)如果不了解触发器可以查看 触发器文档
例如:我们制作一个掉落物组件,来设置不同的生物被击败后,掉落不同的物品。
local Script = {}
--属性定义
Script.propertys = {
varNum = {
type = Mini.Number, --定义了一个数值类型的参数
default = 2,--默认值
displayName = "掉落物数值",
},
varItem = {
type = Mini.Item,-- --定义了一个道具类型的参数
default = 11668,-- 默认值
displayName = "掉落物道具",-- 属性别名
},
}
-- 组件启动时调用
function Script:OnStart()
-- 监听个体事件 当此对象被击败时触发
self:AddEvent(ObjectEvent.ObjectDie, self.OnObjectDie)
-- ObjectEvent.ObjectDie为官方事件,可以在wiki的事件库中查看更多事件
-- self.OnObjectDie 为下方自定义的一个函数
end
function Script:OnObjectDie(event)
-- 定义此生物死亡时的动作
GameObject:CreatePrefab(ObjType.DropItem, self.varItem, event.x,event.y+1,event.z, self.varNum)
-- 预制体类型:ObjType.DropItem 为掉落物,可以在wiki中查看其他类型
-- 掉落物类型:self.varItem从属性面板读取创建的道具类型
-- 事件中的位置: event.x,event.y+1,event.z, event.y+1让创建的高度必死亡的高一格
-- 掉落物数量:self.varNum从属性面板读取创建的掉落物数量
end
return Script
完整视频教程
所有自定义的组件,除了在编辑对象时使用之外,还可以在资源背包里统一编辑管理。(此处编辑组件,会影响所有调用了这个组件的对象)
继续学习
接下来你可以继续学习组件的使用,或Lua语言的基础语法,也可以阅读详细的迷你世界API接口,期待你做出精彩的作品。
MOD、组件介绍
1. 什么是MOD
MOD(模组)就像是给游戏准备的 “超级补丁”。想象一下,你有一个自己很喜欢的玩具(游戏),但是玩了一段时间后,觉得它还可以有一些新玩法或者新样子。MOD(模组)就是能帮你实现这个想法的东西。
在迷你世界里面,你可以通过模组给游戏添加各种各样的新东西,比如新的物品、方块、生物、地形等,让你有更多的素材去建造和探索。
你还能改变游戏的玩法规则,像把生存模式变得更难或更简单,另外还可以提升游戏的画面效果,让游戏里的世界看起来更漂亮、更真实,比如有更好的光影效果、更精美的材质等。甚至还能为你提供一些实用的工具和功能,比如方便的背包整理、地图导航、物品合成提示等。
多个模组还可以整合到一个地图里,融合成一个定制化的冒险世界。
那MOD是如何通过编辑器制作的呢?
2. 编辑器搭建一个“舞台”
游戏世界是一个舞台,可以把编辑器想象成一个搭建舞台(游戏世界)的工具。
首先,这个舞台有一个很大的空间,这个空间可能有各种各样的天气、时间变化、以及不同的灯光效果等,这个称为**“环境”**。
在这个空间里,你可以放置各种各样的东西,比如角色(像游戏里的英雄、怪物)、道具(武器、药品)、建筑(城堡、房屋)等。这些东西都被称为 游戏**“对象”**。例如,你要制作一个简单的冒险游戏,你可以先在这个 “舞台” 上放置一个代表玩家角色的游戏对象,再放置一些代表敌人的游戏对象,以及一些地牢、城堡、灯笼等作为场景装饰。
**“UI界面”**就像是游戏世界里的一个特殊区域,这个区域是专门为玩家和游戏进行交互而设立的。可以把它看作是一个操作控制台,上面有各种按钮、滑块、输入框等,就像我们生活中电器的遥控器一样。
上述所说的环境、对象、UI界面,对应在迷你世界里是这样的。
3. 组件是演员的技能和装备
每个游戏对象就像一个演员,它们有自己的 “技能” 和 “装备”,这些被称为 “组件”。
比如,对于玩家角色这个游戏对象,它可能有一个物理组件,开启了 “碰撞事件”,这就好比演员有了触觉,能够感知自己什么时候碰到了其他东西。如果玩家角色碰到了敌人,就可以通过这个组件来检测到碰撞,然后触发战斗场景。
通过模型组件,我们可以更改演员的外观以及物品的材质贴图。另外,游戏对象还可以有 触发器组件,这就像是演员的大脑,能够让它按照你编写的规则来行动,比如让玩家角色在按下某个按键时跳跃或者攻击。
4. 触发器、Lua是演员的表演指导
触发器、Lua是工具中非常重要的部分,它就像是给游戏对象(演员)的表演指导。例如,你写了一个逻辑,告诉玩家角色,当按下键盘上的 “W” 键时,就向前移动。这个逻辑会被附加到玩家角色这个游戏对象的 “自定义组件” 上。
而且逻辑还可以控制游戏对象之间的交互。比如,你可以写一个脚本,当玩家角色碰到一个金币道具(另一个游戏对象)时,就把金币的数量加 1,同时让金币消失。这样,通过逻辑,游戏中的各种游戏对象就能够按照你想要的方式进行互动,让游戏变得更加有趣。
5. 世界编辑
点击玩法,我们可以对世界进行基本设定。包括对时间、天气、天空盒、滤镜、音乐音效、生物生成规则、开局设定、重生规则、界面等等基本设置。
另外在资源背包里,仍有一部分内容也属于这个世界的运转规则和资源,我们导入或编辑之后,可以使用触发器或者组件来调用他们。
其中配方和熔炼属于迷你世界冒险里面的特有规则,配方是工作台或者秘银锅等的合成配方配置,而熔炼则是配置冶炼台的可燃烧材料、冶炼材料和熔炼产出。
6. 组件编辑
进入对象或者世界编辑后,我们可以看到它们身上都挂载了许多组件。这些组件可以控制对象的外观、属性、物理特性、行为逻辑等等,给“舞台”上的“演员”赋予了生命。
官方提供了一些封装好的组件,我们可以通过组件面板直接更改对象的属性。也可以卸载掉一些不需要使用的组件。
如果官方组件不能满足需求,我们也可以通过添加触发器组件/脚本组件来制作新的组件。(对于高手来说,通过把同类型的逻辑封装成组件,可以让我们的代码更加精简易于管理。)如果不了解触发器可以查看 触发器文档
例如:我们制作一个掉落物组件,来设置不同的生物被击败后,掉落不同的物品。
local Script = {}
--属性定义
Script.propertys = {
varNum = {
type = Mini.Number, --定义了一个数值类型的参数
default = 2,--默认值
displayName = "掉落物数值",
},
varItem = {
type = Mini.Item,-- --定义了一个道具类型的参数
default = 11668,-- 默认值
displayName = "掉落物道具",-- 属性别名
},
}
-- 组件启动时调用
function Script:OnStart()
-- 监听个体事件 当此对象被击败时触发
self:AddEvent(ObjectEvent.ObjectDie, self.OnObjectDie)
-- ObjectEvent.ObjectDie为官方事件,可以在wiki的事件库中查看更多事件
-- self.OnObjectDie 为下方自定义的一个函数
end
function Script:OnObjectDie(event)
-- 定义此生物死亡时的动作
GameObject:CreatePrefab(ObjType.DropItem, self.varItem, event.x,event.y+1,event.z, self.varNum)
-- 预制体类型:ObjType.DropItem 为掉落物,可以在wiki中查看其他类型
-- 掉落物类型:self.varItem从属性面板读取创建的道具类型
-- 事件中的位置: event.x,event.y+1,event.z, event.y+1让创建的高度必死亡的高一格
-- 掉落物数量:self.varNum从属性面板读取创建的掉落物数量
end
return Script
完整视频教程
所有自定义的组件,除了在编辑对象时使用之外,还可以在资源背包里统一编辑管理。(此处编辑组件,会影响所有调用了这个组件的对象)
接下来,你可以继续学习Lua语言的基础语法,也可以阅读详细的迷你世界API接口。
什么是Lua编程
以下部分内容引用自: https://www.runoob.com/lua/
lua语言简介
概述
Lua是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
特点
轻量级、可扩展,等等
轻量级: 它用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里。
可扩展: Lua提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样。
其它特性:
支持面向过程(procedure-oriented)编程和函数式编程(functional programming);
自动内存管理;只提供了一种通用类型的表(table),用它可以实现数组,哈希表,集合,对象;
语言内置模式匹配;闭包(closure);函数也可以看做一个值;提供多线程(协同进程,并非操作系统所支持的线程)支持;
通过闭包和table可以很方便地支持面向对象编程所需要的一些关键机制,比如数据抽象,虚函数,继承和重载等。
应用场景:
游戏开发
独立应用脚本
Web 应用脚本
扩展和数据库插件如:MySQL Proxy 和 MySQL WorkBench
安全系统,如入侵检测系统
注意:
以下的案例,为了方便演示,都使用Chat:sendSystemMsg接口,把需要查看的信息都输出在游戏的聊天框内! 复制代码到游戏中,可以在聊天框看到反馈。
Lua基本语法
注释
单行注释符: --
-- 这里的内容就不会执行了
注释
多行注释:
--[[
被包含的区域都不会执行
--]]
标识符
什么是标识符:
1. Lua 标示符用于定义一个变量,函数获取其他用户定义的项。
2. 标示符以一个字母 A 到 Z 或 a 到 z 或下划线 _ 开头后加上0个或多个字母,下划线,数字(0到9)。
3. 最好不要使用下划线加大写字母的标示符,因为Lua的保留字也是这样的。
4. Lua 不允许使用特殊字符如 @, $, 和 % 来定义标示符。
5. 因此在 Lua 中 Miniworld 与 miniworld 是两个不同的标示符
标识符
正确写法:
mini world abc mini_world a_123
mini521 _mini c mi5ni2 MiNi
关键词
以下列出了 Lua 的保留关键字。保留关键字不能作为常量或变量或其他用户自定义标示符:
and break do else elseif end false for function if
in local nil not or repeat return then true until
while goto
全局变量
在默认情况下,变量总是认为是全局的。 全局变量不需要声明,给一个变量赋值后即创建了这个全局变量,访问一个没有初始化的全局变量也不会出错,只不过得到的结果是:nil(空值)。
Chat:sendSystemMsg(b , 0) --未声明的变量b,不会报错,但把b的值打印出来是nil的
------------------
b=10
Chat:sendSystemMsg(b , 0) --声明的变量b,b的值打印出来是10
------------------
--如果你想删除一个全局变量,只需要将变量赋值为nil。
b = nil
Chat:sendSystemMsg(b , 0)
--这样变量b就好像从没被使用过一样。换句话说, 当且仅当一个变量不等于nil时,这个变量即存在。
Lua数据类型
数据名称 用法描述
nil 表示一个无效值(在条件表达式中相当于false)
boolean 布尔值,包含两个值:false和true
number 实数,表示双精度类型的实浮点数,也可以是整数
string 字符串,由一对单引号或双引号来表示
table Lua的一种数据结构,可用来创建不同的数据类型,如:数组、字典等
function 由 C 或 Lua 编写的函数
userdata 表示任意存储在变量中的C数据结构
thread 表示执行的独立线路,用于执行协同程序
Lua的变量
变量概述
什么是变量?
变量在使用前,必须在代码中进行声明,即创建该变量。
编译程序执行代码之前编译器需要知道如何给语句变量开辟存储区,用于存储变量的值。
Lua 变量有三种类型:全局变量、局部变量、表中的域。
Lua 中的变量全是全局变量,那怕是语句块或是函数里,除非用 local 显式声明为局部变量。
局部变量的作用域为从声明位置开始到所在语句块结束。
变量的默认值均为 nil。
a = 5 -- 全局变量
local b = 5 -- 局部变量
--------------
function joke() -- 定义函数
c = 5 -- 全局变量
local d = 6 -- 局部变量
end
--------------
joke()
Chat:sendSystemMsg(c,0) --> 5
Chat:sendSystemMsg(d,0) --> nil
do
local a = 6 -- 局部变量
b = 6 -- 对局部变量重新赋值
Chat:sendSystemMsg(a,0); --> 6
Chat:sendSystemMsg(b,0); --> 6
end
print(a,b) --> 5 6
赋值语句
赋值是改变一个变量的值和改变表域的最基本的方法。
a = "hello" .. "world"
--多个变量同时赋值,变量列表和值列表各元素用逗号分开,赋值语句右边的值会依次赋给左边变量。
a, b = 10, 2*x
--遇到赋值语句Lua会先计算右边所有的值然后再执行赋值操作,所以我们可以这样进行交换变量的值:
x, y = y, x
a[i], a[j] = a[j], a[i]
注意
当变量个数和值的个数不一致时,Lua会一直以变量个数为基础采取以下策略:
变量个数 > 值的个数, 按变量个数补足nil
变量个数 < 值的个数, 多余的值会被忽略
a, b, c = 0, 1
Chat:sendSystemMsg(a,0) --> 0
Chat:sendSystemMsg(b,0) --> 1
Chat:sendSystemMsg(c,0) --> nil
a, b, c = 0, 1
a, b = a+1, b+1, b+2
Chat:sendSystemMsg(a,0) --> 1
Chat:sendSystemMsg(b,0) --> 2
a, b, c = 0
Chat:sendSystemMsg(a,0) --> 0
Chat:sendSystemMsg(b,0) --> nil
Chat:sendSystemMsg(c,0) --> nil
--最后一个例子是一个常见的错误情况,注意:如果要对多个变量赋值必须依次对每个变量赋值。
a, b = f()
--多值赋值经常用来交换变量,或将函数调用返回给变量
--f()返回两个值,第一个赋给a,第二个赋给b。
--应该尽可能的使用局部变量,有两个好处:
--1. 避免命名冲突。
--2. 访问局部变量的速度比全局变量更快。
索引
对 table 的索引使用方括号 []。Lua 也提供了 . 操作。
t[i]
t.i -- 当索引为字符串类型时的一种简化写法
gettable_event(t,i) -- 采用索引访问本质上是一个类似这样的函数调用
site = {}
site["key"] = "www.mini1.com"
Chat:sendSystemMsg(site["key"],0)
--例子
Chat:sendSystemMsg(site.key , 0)
Lua的循环语句
序号 控制语句 描述
1 while循环 在条件为 true 时,让程序重复地执行某些语句。执行语句前会先检查条件是否为 true。
2 for循环 重复执行指定语句,重复次数可在 for 语句中控制。
3 repeat...until 重复执行循环,直到 指定的条件为真时为止
4 循环嵌套 可以在循环内嵌套一个或多个循环语句(while do ... end;for ... do ... end;repeat ... until;)
序号 控制语句 描述
1 break语句 退出当前循环或语句,并开始脚本执行紧接着的语句。
2 goto语句 将程序的控制点转移到一个标签处。
while循环
--案例:
--以下代码实例在聊天框循环输出a的值
a = 0
while( a < 5 ) --当a<5的时候才会执行do里面的内容
do
Chat:sendSystemMsg( a, 0) --输出a的值到聊天框
a = a+1 --每次循环a都会自身+1
end
--输出结果为:
-- 0
-- 1
-- 2
-- 3
-- 4
for循环
数值for循环:
for var=a , b , c do
<执行体>
end
var 从 a 变化到 b,每次变化以 c 为步长递增var,并执行一次 "执行体"。c 是可选的,如果不指定,默认为1。
--案例:
--简单的for循环,可以在聊天框输出i的值:
for i = 1 , 5 , 1 do
Chat:sendSystemMsg( i, 0)
end
--输出结果为:
-- 1
-- 2
-- 3
-- 4
-- 5
泛型for循环:
泛型 for 循环通过一个迭代器函数来遍历所有值,类似 java 中的 foreach 语句。
--实例:
--聊天框打印数组a的所有值
a = {"one", "two", "three"}
for i, v in ipairs(a) do
Chat:sendSystemMsg( v, 0)
end
--i是数组索引值,v是对应索引的数组元素值。ipairs是Lua提供的一个迭代器函数,用来迭代数组。
repeat...until循环
概述:
Lua 编程语言中 repeat...until 循环语句不同于 for 和 while循环,for 和 while 循环的条件语句在当前循环执行开始时判断,而 repeat...until 循环的条件语句在当前循环结束后判断。
--实例:
--以下代码在聊天框输出a的值
a = 0
--[ 执行循环 --]
repeat
Chat:sendSystemMsg( a, 0)
a = a + 1
until( a > 5 ) --循环直到a>5
--输出结果为:
-- 0
-- 1
-- 2
-- 3
-- 4
-- 5
循环嵌套
概述
Lua 编程语言中允许循环中嵌入循环。我们还可以使用不同的循环类型来嵌套,如 for 循环体中嵌套 while 循环。
--案例:
--以下代码在聊天框输出i和j的值
for i = 1 , 2 , 1 do
for j = 1, 2 , 1 do
Chat:sendSystemMsg( i, 0)
Chat:sendSystemMsg( j, 0)
end
end
end
--输出结果为:
-- 1
-- 1
-- 1
-- 2
-- 2
-- 1
-- 2
-- 2
break语句
break语句
Lua 编程语言 break 语句插入在循环体中,用于退出当前循环或语句,并开始脚本执行紧接着的语句。
如果你使用循环嵌套,break语句将停止最内层循环的执行,并开始执行的外层的循环语句。
--以下实例执行 while 循环,在变量 a 小于 20 时输出 a 的值,并在 a 大于 15 时终止执行循环:
--[ 定义变量 --]
a = 10
--[ while 循环 --]
while( a < 20 )
do
Chat:sendSystemMsg( a, 0)
a=a+1
if( a > 15)
then
--[ 使用 break 语句终止循环 --]
break
end
end
--输出结果为:
-- 10
-- 11
-- 12
-- 13
-- 14
-- 15
goto 语句
goto语句
Lua 语言中的 goto 语句允许将控制流程无条件地转到被标记的语句处。
local a = 1
::start:: Chat:sendSystemMsg("goto的位置",0)
a = a+1
if a < 3 then
goto start -- a 小于 3 的时候跳转到标签 start
end
--输出的结果:
-- goto的位置
-- goto的位置
流程控制语句(条件语句)
概述
Lua 编程语言流程控制语句通过程序设定一个或多个条件语句来设定。在条件为 true 时执行指定程序代码,在条件为 false 时执行其他指定代码。
控制结构的条件表达式结果可以是任何值,Lua认为false和nil为假,true和非nil为真。
要注意的是Lua中 0 为 true:
--[ 0 为 true ]
if(0)
then
Chat:sendSystemMsg("0 为 true", 0)
end
序号 语句 描述
1 if语句 if 语句 由一个布尔表达式作为条件判断,其后紧跟其他语句组成。
2 if...else语句 if 语句 可以与 else 语句搭配使用, 在 if 条件表达式为 false 时执行 else 语句代码。
3 if 嵌套语句 你可以在if 或 else if中使用一个或多个 if 或 else if 语句 。。
if语句
if语句
Lua if 语句 由一个布尔表达式作为条件判断,其后紧跟其他语句组成。
--以下实例用于判断变量 a 的值是否小于 20:
--[ 定义变量 --]
a = 10;
--[ 使用 if 语句 --]
if( a < 20 )
then
--[ if 条件为 true 时打印以下信息 --]
Chat:sendSystemMsg("a 小于 20" , 0);
end
Chat:sendSystemMsg( "a的值为:"..a.."", 0);
--输出的结果为:
--a小于20
--a的值为:10
if...else语句
if...else语句
Lua的if 语句可以与 else 语句搭配使用, 在 if 条件表达式为 false 时执行 else 语句代码块。
--以下实例用于判断变量 a 的值:
a = 100;
--[ 检查条件 --]
if( a < 20 )
then
--[ if 条件为 true 时执行该语句块 --]
Chat:sendSystemMsg("a 小于 20",0 )
else
--[ if 条件为 false 时执行该语句块 --]
Chat:sendSystemMsg("a 大于 20",0 )
end
Chat:sendSystemMsg("a的值为 :"..a.."", 0)
--输出的结果为:
--a 大于 20
--a的值为:100
if...elseif...else 语句
Lua的if 语句可以与 elseif...else 语句搭配使用, 在 if 条件表达式为 false 时执行 elseif...else 语句代码块,用于检测多个条件语句。
--以下实例对变量 a 的值进行判断:
--[ 定义变量 --]
a = 100
--[ 检查布尔条件 --]
if( a == 10 )
then
--[ 如果条件为 true 打印以下信息 --]
Chat:sendSystemMsg("a 的值为 10" ,0)
elseif( a == 20 )
then
--[ if else if 条件为 true 时打印以下信息 --]
Chat:sendSystemMsg("a 的值为 20" ,0)
elseif( a == 30 )
then
--[ if else if condition 条件为 true 时打印以下信息 --]
Chat:sendSystemMsg("a 的值为 30" ,0)
else
--[ 以上条件语句没有一个为 true 时打印以下信息 --]
Chat:sendSystemMsg("没有匹配 a 的值" ,0)
end
Chat:sendSystemMsg("a 的值为 :".. a .."", 0)
if嵌套语句
if嵌套语句
Lua 的if 语句允许嵌套, 这就意味着你可以在一个 if 或 else if 语句中插入其他的 if 或 else if 语句。
--以下实例用于判断变量 a 和 b 的值,并输出在聊天框:
--[ 定义变量 --]
a = 100;
b = 200;
--[ 检查条件 --]
if( a == 100 )
then
--[ if 条件为 true 时执行以下 if 条件判断 --]
if( b == 200 )
then
--[ if 条件为 true 时执行该语句块 --]
Chat:sendSystemMsg("a 的值为 100 ,b 的值为 200" );
end
end
Chat:sendSystemMsg("a 的值为 :" .. a.."", 0);
Chat:sendSystemMsg("b 的值为 :".. b .."", 0 );
Lua函数
什么是函数
在Lua中,函数是对语句和表达式进行抽象的主要方法。既可以用来处理一些特殊的工作,也可以用来计算一些值。
Lua 提供了许多的内建函数,你可以很方便的在程序中调用它们,如print()函数可以将传入的参数打印在控制台上。
Lua 函数主要有两种用途:
完成指定的任务,这种情况下函数作为调用语句使用;
计算并返回值,这种情况下函数作为赋值语句的表达式使用。
函数定义
Lua 编程语言函数定义格式如下:
optional_function_scope function function_name( argument1, argument2, argument3..., argumentn)
function_body
return result_params_comma_separated
end
代码解析:
optional_function_scope: 该参数是可选的制定函数是全局函数还是局部函数,未设置该参数默认为全局函数,如果你需要设置函数为局部函数需要使用关键字 local。
function_name: 指定函数名称。
argument1, argument2, argument3..., argumentn: 函数参数,多个参数以逗号隔开,函数也可以不带参数。
function_body: 函数体,函数中需要执行的代码语句块。
result_params_comma_separated: 函数返回值,Lua语言函数可以返回多个值,每个值以逗号隔开。
案例1:
以下实例定义了函数 max(),参数为 num1, num2,用于比较两值的大小,并返回最大值:
--[[ 函数返回两个值的最大值 --]]
function max(num1, num2)
if (num1 > num2) then
result = num1;
else
result = num2;
end
return result;
end
-- 调用函数
Chat:sendSystemMsg("两值比较最大值为:"..max(10,4).."",0)
Chat:sendSystemMsg("两值比较最大值为:"..max(5,6).."",0)
案例2: Lua 中我们可以将函数作为参数传递给函数,如下实例:
myprint = function(param)
Chat:sendSystemMsg("param的值:" ..param.. "",0)
end
function add(num1,num2,functionPrint)
result = num1 + num2
-- 调用传递的函数参数
functionPrint(result)
end
myprint(10)
-- myprint 函数作为参数传递
add(2,5,myprint)
多返回值
Lua函数可以返回多个结果值,比如string.find,其返回匹配串"开始和结束的下标"(如果不存在匹配串返回nil)。
案例: Lua函数中,在return后列出要返回的值的列表即可返回多值,如:
function maximum (a)
local mi = 1 -- 最大值索引
local m = a[mi] -- 最大值
for i,val in ipairs(a) do
if val > m then
mi = i
m = val
end
end
return m, mi
end
print(maximum({8,10,23,12,5}))
--由于Chat:sendSystemMsg输出机制只能输出一个值,只能用print打印来看输出的返回值
可变参数
Lua函数可以接受可变数目的参数,和 C 语言类似,在函数参数列表中使用三点 ... 表示函数有可变的参数。
案例1:拼接
-- 上段代码由于Chat:sendSystemMsg只能输出1个值,所以无法输出函数的两个返回值
-- 我们可以用可变参数来做拼接功能
function dump_args(...)
local buffer = ''
local size = select('#', ...)
for idx = 1, select('#', ...) do
local arg = select(idx, ...)
local ends = idx==size and "" or ", "
buffer = buffer..tostring(arg)..ends
end
return buffer
end
function maximum (a)
local mi = 1 -- 最大值索引
local m = a[mi] -- 最大值
for i,val in ipairs(a) do
if val > m then
mi = i
m = val
end
end
return m, mi
end
Chat:sendSystemMsg(dump_args(maximum({8,10,23,12,5})),0)
--这样调用可变参数dump_args,就可以打印出多个函数返回值了
案例2:求平均值
function average(...)
result = 0
local arg={...} --> arg 为一个表,局部变量
for i,v in ipairs(arg) do
result = result + v
end
Chat:sendSystemMsg("总共传入 " .. #arg .. " 个数",0)
return result/#arg
end
Chat:sendSystemMsg("平均值为" ..average(10,5,3,4,5,6).. " ",0)
案例3:求平均值
---我们也可以通过 select("#",...) 来获取可变参数的数量:
function average(...)
result = 0
local arg={...}
for i,v in ipairs(arg) do
result = result + v
end
print("总共传入 " .. select("#",...) .. " 个数")
return result/select("#",...)
end
Chat:sendSystemMsg("平均值为"..average(10,5,3,4,5,6).." ",0)
Lua运算符
运算符释义:
运算符是一个特殊的符号,用于告诉解释器执行特定的数学或逻辑运算。Lua提供了以下几种运算符类型:
算术运算符
关系运算符
逻辑运算符
其他运算符
算数运算符
下表列出了Lua语言中的常用算数运算符,设定 A 的值为10,B 的值为 20:
操作符 描述 实例
|加法| A + B 输出结果 30
|减法| A - B 输出结果 -10
|乘法| A * B 输出结果 200 / |除法| B / A w输出结果 2 % |取余| B % A 输出结果 0 ^ |乘幂| A^2 输出结果 100
|负号| -A 输出结果 -10
案例: 我们可以通过以下实例来更加透彻的理解算术运算符的应用:
a = 21
b = 10
c = a + b
print("Line 1 - c 的值为 ", c )
c = a - b
print("Line 2 - c 的值为 ", c )
c = a * b
print("Line 3 - c 的值为 ", c )
c = a / b
print("Line 4 - c 的值为 ", c )
c = a % b
print("Line 5 - c 的值为 ", c )
c = a^2
print("Line 6 - c 的值为 ", c )
c = -a
print("Line 7 - c 的值为 ", c )
--打印结果为:
--Line 1 - c 的值为 31
--Line 2 - c 的值为 11
--Line 3 - c 的值为 210
--Line 4 - c 的值为 2.1
--Line 5 - c 的值为 1
--Line 6 - c 的值为 441
--Line 7 - c 的值为 -21
关系运算符
下表列出了 Lua 语言中的常用关系运算符,设定 A 的值为10,B 的值为 20:
操作符 描述 实例
== 等于,检测两个值是否相等,相等返回 true,否则返回 false (A == B) 为 false。
~= 不等于,检测两个值是否相等,相等返回 false,否则返回 true (A ~= B) 为 true。
|大于,如果左边的值大于右边的值,返回 true,否则返回 false| (A > B) 为 false。 < |小于,如果左边的值大于右边的值,返回 false,否则返回 true| (A < B) 为 true。 = |大于等于,如果左边的值大于等于右边的值,返回 true,否则返回 false| (A >= B) 返回 false。 <= |小于等于, 如果左边的值小于等于右边的值,返回 true,否则返回 false| (A <= B) 返回 true。 案例: 我们可以通过以下实例来更加透彻的理解关系运算符的应用:
a = 21
b = 10
if( a == b )
then
print("Line 1 - a 等于 b" )
else
print("Line 1 - a 不等于 b" )
end
if( a ~= b )
then
print("Line 2 - a 不等于 b" )
else
print("Line 2 - a 等于 b" )
end
if ( a < b )
then
print("Line 3 - a 小于 b" )
else
print("Line 3 - a 大于等于 b" )
end
if ( a > b )
then
print("Line 4 - a 大于 b" )
else
print("Line 5 - a 小于等于 b" )
end
-- 修改 a 和 b 的值
a = 5
b = 20
if ( a <= b )
then
print("Line 5 - a 小于等于 b" )
end
if ( b >= a )
then
print("Line 6 - b 大于等于 a" )
end
--执行结果为:
--Line 1 - a 不等于 b
--Line 2 - a 不等于 b
--Line 3 - a 大于等于 b
--Line 4 - a 大于 b
--Line 5 - a 小于等于 b
--Line 6 - b 大于等于 a
逻辑运算符
操作符 描述 实例
and 逻辑与操作符。 若 A 为 false,则返回 A,否则返回 B。 (A and B) 为 false。
or 逻辑或操作符。 若 A 为 true,则返回 A,否则返回 B。 (A or B) 为 true。
not 逻辑非操作符。与逻辑运算结果相反,如果条件为 true,逻辑非为 false。 not(A and B) 为 true。
案例:
我们可以通过以下实例来更加透彻的理解逻辑运算符的应用:
a = true
b = true
if ( a and b )
then
print("a and b - 条件为 true" )
end
if ( a or b )
then
print("a or b - 条件为 true" )
end
print("---------分割线---------" )
-- 修改 a 和 b 的值
a = false
b = true
if ( a and b )
then
print("a and b - 条件为 true" )
else
print("a and b - 条件为 false" )
end
if ( not( a and b) )
then
print("not( a and b) - 条件为 true" )
else
print("not( a and b) - 条件为 false" )
end
--以上程序执行结果为:
--a and b - 条件为 true
--a or b - 条件为 true
--a and b - 条件为 false
--not( a and b) - 条件为 true
其他运算符
下表列出了 Lua 语言中的连接运算符与计算表或字符串长度的运算符:
操作符 描述 实例
.. 连接两个字符串 a..b ,其中 a 为 "Hello " , b 为 "World", 输出结果为 "Hello World"。
# 一元运算符,返回字符串或表的长度。 #"Hello" 返回 5
案例:
我们可以通过以下实例来更加透彻的理解连接运算符与计算表或字符串长度的运算符的应用:
a = "Hello "
b = "MiniWorld"
print("连接字符串 a 和 b ", a..b )
print("b 字符串长度 ",#b )
print("字符串 Test 长度 ",#"Test" )
print("迷你世界网址长度 ",#"https://www.mini1.cn/" )
--以上程序执行结果为:
--连接字符串 a 和 b Hello MiniWorld
--b 字符串长度 5
--字符串 Test 长度 4
--迷你世界网址长度 21
运算符优先级
从高到低的顺序:
^
not - (unary)
* /
+ -
..
< > <= >= ~= ==
and
or
除了 ^ 和 .. 外所有的二元运算符都是左连接的。
a+i < b/2+1 <--> (a+i) < ((b/2)+1)
5+x^2*8 <--> 5+((x^2)*8)
a < y and y <= z <--> (a < y) and (y <= z)
-x^2 <--> -(x^2)
x^y^z <--> x^(y^z)
案例: 我们可以通过以下实例来更加透彻的了解 Lua 语言运算符的优先级:
a = 20
b = 10
c = 15
d = 5
e = (a + b) * c / d;-- ( 30 * 15 ) / 5
print("(a + b) * c / d 运算值为 :",e )
e = ((a + b) * c) / d; -- (30 * 15 ) / 5
print("((a + b) * c) / d 运算值为 :",e )
e = (a + b) * (c / d);-- (30) * (15/5)
print("(a + b) * (c / d) 运算值为 :",e )
e = a + (b * c) / d; -- 20 + (150/5)
print("a + (b * c) / d 运算值为 :",e )
--以上程序执行结果为:
--(a + b) * c / d 运算值为 : 90.0
--((a + b) * c) / d 运算值为 : 90.0
--(a + b) * (c / d) 运算值为 : 90.0
--a + (b * c) / d 运算值为 : 50.0
Lua字符串
概述:
字符串或串(String)是由数字、字母、下划线组成的一串字符。Lua 语言中字符串可以使用以下三种方式来表示:
单引号间的一串字符。
双引号间的一串字符。
[[和]]间的一串字符。 案例:
string1 = "Lua"
print("\"字符串 1 是\"",string1)
string2 = 'https://www.mini1.cn/'
print("字符串 2 是",string2)
string3 = [["Lua 教程"]]
print("字符串 3 是",string3)
--以上代码执行输出结果为:
--"字符串 1 是" Lua
--字符串 2 是 https://www.mini1.cn/
--字符串 3 是 "Lua 教程"
转义字符用于表示不能直接显示的字符,比如后退键,回车键,等。如在字符串转换双引号可以使用 " \ ""。
转译字符 意义 ASCII码值(十进制)
\a 响铃(BEL) 007
\b 退格(BS) ,将当前位置移到前一列 008
\f 换页(FF),将当前位置移到下页开头 012
\n 换行(LF) ,将当前位置移到下一行开头 010
\r 回车(CR) ,将当前位置移到本行开头 013
\t 水平制表(HT) (跳到下一个TAB位置) 009
\v 垂直制表(VT) 011
|代表一个反斜线字符''' 092
' 代表一个单引号(撇号)字符 039
" 代表一个双引号字符 034
\0 空字符(NULL) 000
\ddd 1到3位八进制数所代表的任意字符 三位八进制
\xhh 1到2位十六进制所代表的任意字符 二位十六进制
字符串操作
Lua 提供了很多的方法来支持字符串的操作:
序号 方法 & 用途
1 string.upper(argument):
字符串全部转为大写字母。
2 string.lower(argument):
字符串全部转为小写字母。
3 string.gsub(mainString,findString,replaceString,num)
在字符串中替换。
mainString 为要操作的字符串, findString 为被替换的字符,replaceString 要替换的字符,num 替换次数(可以忽略,则全部替换),如:
string.gsub("aaaa","a","z",3)
zzza 3
4 string.find (str, substr, [init, [end]])
在一个指定的目标字符串中搜索指定的内容(第三个参数为索引),返回其具体位置。不存在则返回 nil。
string.find("Hello Lua user", "Lua", 1)
7 9
5 string.reverse(arg)
字符串反转
string.reverse("Lua")
auL
6 string.format(...)
返回一个类似printf的格式化字符串
string.format("the value is:%d",4)
the value is:4
7 string.char(arg) 和 string.byte(arg[,int])
char 将整型数字转成字符并连接, byte转换字符为整数值(可以指定某个字符,默认第一个字符)。
string.char(97,98,99,100)
abcd
string.byte("ABCD",4)
68
> string.byte("ABCD")
65
8 string.len(arg)
计算字符串长度。
string.len("abc")
3
9 string.rep(string, n)
返回字符串string的n个拷贝
string.rep("abcd",2)
abcdabcd
10 ..
链接两个字符串
print("www.mini1.".."cn")
www.mini1.cn
11 string.gmatch(str, pattern)
返回一个迭代器函数,每一次调用这个函数,返回一个在字符串 str 找到的下一个符合 pattern 描述的子串。如果参数 pattern 描述的字符串没有找到,迭代函数返回nil。
for word in string.gmatch("Hello Lua user", "%a+") do print(word) end
Hello
Lua
Lua
12 string.match(str, pattern, init)
string.match()只寻找源字串str中的第一个配对. 参数init可选, 指定搜寻过程的起点, 默认为1。
在成功配对时, 函数将返回配对表达式中的所有捕获结果; 如果没有设置捕获标记, 则返回整个配对字符串. 当没有成功的配对时, 返回nil。
string.match("I have 2 questions for you.", "%d+ %a+")
2 questions
string.format("%d, %q", string.match("I have 2 questions for you.", "(%d+) (%a+)"))
2, "questions"
字符串大小写转换
以下实例演示了如何对字符串大小写进行转换:
案例:
string1 = "Lua";
print(string.upper(string1))
print(string.lower(string1))
--以上代码执行结果为:
--LUA
--lua
字符串查找与反转
以下实例演示了如何对字符串进行查找与反转操作:
案例:
string = "Lua Tutorial"
-- 查找字符串
print(string.find(string,"Tutorial"))
reversedString = string.reverse(string)
print("新字符串为",reversedString)
--以上代码执行结果为:
--5 12
--新字符串为 lairotuT auL
字符串格式化
Lua 提供了 string.format() 函数来生成具有特定格式的字符串, 函数的第一个参数是格式 ,之后是对应格式中每个代号的各种数据。
由于格式字符串的存在, 使得产生的长字符串可读性大大提高了。这个函数的格式很像 C 语言中的 printf()。
以下实例演示了如何对字符串进行格式化操作:
格式字符串可能包含以下的转义码:
%c - 接受一个数字, 并将其转化为ASCII码表中对应的字符
%d, %i - 接受一个数字并将其转化为有符号的整数格式
%o - 接受一个数字并将其转化为八进制数格式
%u - 接受一个数字并将其转化为无符号整数格式
%x - 接受一个数字并将其转化为十六进制数格式, 使用小写字母
%X - 接受一个数字并将其转化为十六进制数格式, 使用大写字母
%e - 接受一个数字并将其转化为科学记数法格式, 使用小写字母e
%E - 接受一个数字并将其转化为科学记数法格式, 使用大写字母E
%f - 接受一个数字并将其转化为浮点数格式
%g(%G) - 接受一个数字并将其转化为%e(%E, 对应%G)及%f中较短的一种格式
%q - 接受一个字符串并将其转化为可安全被Lua编译器读入的格式
%s - 接受一个字符串并按照给定的参数格式化该字符串
为进一步细化格式, 可以在%号后添加参数. 参数将以如下的顺序读入:
(1) 符号: 一个+号表示其后的数字转义符将让正数显示正号. 默认情况下只有负数显示符号.
(2) 占位符: 一个0, 在后面指定了字串宽度时占位用. 不填时的默认占位符是空格.
(3) 对齐标识: 在指定了字串宽度时, 默认为右对齐, 增加-号可以改为左对齐.
(4) 宽度数值
(5) 小数位数/字串裁切: 在宽度数值后增加的小数部分n, 若后接f(浮点数转义符,如%6.3f)则设定该浮点数的小数只保留n位, 若后接s(字符串转义符, 如%5.3s)则设定该字符串只显示前n位.
案例:
string1 = "Lua"
string2 = "Tutorial"
number1 = 10
number2 = 20
-- 基本字符串格式化
print(string.format("基本格式化 %s %s",string1,string2))
-- 日期格式化
date = 2; month = 1; year = 2020
print(string.format("日期格式化 %02d/%02d/%03d", date, month, year))
-- 十进制格式化
print(string.format("%.4f",1/3))
--以上代码执行结果为:
--基本格式化 Lua Tutorial
--日期格式化 02/01/2020
--0.3333
其他案例:
string.format("%c", 83) -- 输出S
string.format("%+d", 17.0) -- 输出+17
string.format("%05d", 17) -- 输出00017
string.format("%o", 17) -- 输出21
string.format("%u", 3.14) -- 输出3
string.format("%x", 13) -- 输出d
string.format("%X", 13) -- 输出D
string.format("%e", 1000) -- 输出1.000000e+03
string.format("%E", 1000) -- 输出1.000000E+03
string.format("%6.3f", 13) -- 输出13.000
string.format("%q", "One\nTwo") -- 输出"One\
-- Two"
string.format("%s", "monkey") -- 输出monkey
string.format("%10s", "monkey") -- 输出 monkey
string.format("%5.3s", "monkey") -- 输出 mon
字符与整数相互转换
案例:
-- 字符转换
-- 转换第一个字符
print(string.byte("Lua"))
-- 转换第三个字符
print(string.byte("Lua",3))
-- 转换末尾第一个字符
print(string.byte("Lua",-1))
-- 第二个字符
print(string.byte("Lua",2))
-- 转换末尾第二个字符
print(string.byte("Lua",-2))
-- 整数 ASCII 码转换为字符
print(string.char(97))
--以上代码执行结果为:
--76
--97
--97
--117
--117
--a
其他常用函数
以下实例演示了其他字符串操作,如计算字符串长度,字符串连接,字符串复制等:
string1 = "www."
string2 = "mini1"
string3 = ".cn"
-- 使用 .. 进行字符串连接
print("连接字符串",string1..string2..string3)
-- 字符串长度
print("字符串长度 ",string.len(string2))
-- 字符串复制 2 次
repeatedString = string.rep(string2,2)
print(repeatedString)
--以上代码执行结果为:
--连接字符串 www.mini1.cn
--字符串长度 6
--mini1mini1
匹配模式
Lua 中的匹配模式直接用常规的字符串来描述。它用于模式匹配函数 string.find, string.gmatch, string.gsub, string.match。你还可以在模式串中使用字符类。
字符类指可以匹配一个特定字符集合内任何字符的模式项。比如,字符类 %d 匹配任意数字。所以你可以使用模式串 %d%d/%d%d/%d%d%d%d 搜索 dd/mm/yyyy 格式的日期:
s = "Deadline is 30/05/1999, firm"
date = "%d%d/%d%d/%d%d%d%d"
print(string.sub(s, string.find(s, date))) --> 30/05/1999
下面的表列出了Lua支持的所有字符类:
单个字符(除 ^$()%.[]*+-? 外): 与该字符自身配对
.(点): 与任何字符配对
%a: 与任何字母配对
%c: 与任何控制符配对(例如\n)
%d: 与任何数字配对
%l: 与任何小写字母配对
%p: 与任何标点(punctuation)配对
%s: 与空白字符配对
%u: 与任何大写字母配对
%w: 与任何字母/数字配对
%x: 与任何十六进制数配对
%z: 与任何代表0的字符配对
%x(此处x是非字母非数字字符): 与字符x配对. 主要用来处理表达式中有功能的字符(^$()%.[]*+-?)的配对问题, 例如%%与%配对
[数个字符类]: 与任何[]中包含的字符类配对. 例如[%w_]与任何字母/数字, 或下划线符号(_)配对
[^数个字符类]: 与任何不包含在[]中的字符类配对. 例如[^%s]与任何非空白字符配对
当上述的字符类用大写书写时, 表示与非此字符类的任何字符配对. 例如, %S表示与任何非空白字符配对.例如,'%A'非字母的字符:
> print(string.gsub("hello, up-down!", "%A", "."))
hello..up.down. 4
数字4不是字符串结果的一部分,他是gsub返回的第二个结果,代表发生替换的次数。
在模式匹配中有一些特殊字符,他们有特殊的意义,Lua中的特殊字符如下:
( ) . % + - * ? [ ^ $
'%' 用作特殊字符的转义字符,因此 '%.' 匹配点;'%%' 匹配字符 '%'。转义字符 '%'不仅可以用来转义特殊字符,还可以用于所有的非字母的字符。
模式条目可以是:
单个字符类匹配该类别中任意单个字符;
单个字符类跟一个 '*', 将匹配零或多个该类的字符。 这个条目总是匹配尽可能长的串;
单个字符类跟一个 '+', 将匹配一或更多个该类的字符。 这个条目总是匹配尽可能长的串;
单个字符类跟一个 '-', 将匹配零或更多个该类的字符。 和 '*' 不同, 这个条目总是匹配尽可能短的串;
单个字符类跟一个 '?', 将匹配零或一个该类的字符。 只要有可能,它会匹配一个;
%n, 这里的 n 可以从 1 到 9; 这个条目匹配一个等于 n 号捕获物(后面有描述)的子串。
%bxy, 这里的 x 和 y 是两个明确的字符; 这个条目匹配以 x 开始 y 结束, 且其中 x 和 y 保持 平衡 的字符串。 意思是,如果从左到右读这个字符串,对每次读到一个 x 就 +1 ,读到一个 y 就 -1, 最终结束处的那个 y 是第一个记数到 0 的 y。 举个例子,条目 %b() 可以匹配到括号平衡的表达式。
%f[set], 指 边境模式; 这个条目会匹配到一个位于 set 内某个字符之前的一个空串, 且这个位置的前一个字符不属于 set 。 集合 set 的含义如前面所述。 匹配出的那个空串之开始和结束点的计算就看成该处有个字符 '\0' 一样。
案例:
将阿拉伯数字转换为语文汉字数字: ``` lua local function NumToCN(num) local size = #tostring(num) local CN = "" local StrCN = {"一","二","三","四","五","六","七","八","九"} for i = 1 , size do CN = CN .. StrCN[tonumber(string.sub(tostring(num), i , i))] end return CN end print(NumToCN(56665)) ```
Lua数组
概述:
数组,就是相同数据类型的元素按一定顺序排列的集合,可以是一维数组和多维数组。 Lua 数组的索引键值可以使用整数表示,数组的大小不是固定的。
一维数组:
一维数组是最简单的数组,其逻辑结构是线性表。一维数组可以用for循环出数组中的元素,如下实例:
array = {"Lua", "Tutorial"}
for i= 0, 2 do
print(array[i])
end
--以上代码执行输出结果为:
--nil
--Lua
--Tutorial
正如你所看到的,我们可以使用整数索引来访问数组元素,如果知道的索引没有值则返回nil。 在 Lua 索引值是以 1 为起始,但你也可以指定 0 开始。
除此外我们还可以以负数为数组索引值:
array = {}
for i= -2, 2 do
array[i] = i *2
end
for i = -2,2 do
print(array[i])
end
--以上代码执行输出结果为:
-- -4
-- -2
-- 0
-- 2
-- 4
多维数组:
多维数组即数组中包含数组或一维数组的索引键对应一个数组。
以下是一个三行三列的阵列多维数组:
-- 初始化数组
array = {}
for i=1,3 do
array[i] = {}
for j=1,3 do
array[i][j] = i*j
end
end
-- 访问数组
for i=1,3 do
for j=1,3 do
print(array[i][j])
end
end
--以上代码执行输出结果为:
--1
--2
--3
--2
--4
--6
--3
--6
--9
不同索引键的三行三列阵列多维数组:
-- 初始化数组
array = {}
maxRows = 3
maxColumns = 3
for row=1,maxRows do
for col=1,maxColumns do
array[row*maxColumns +col] = row*col
end
end
-- 访问数组
for row=1,maxRows do
for col=1,maxColumns do
print(array[row*maxColumns +col])
end
end
--以上代码执行输出结果为:
--1
--2
--3
--2
--4
--6
--3
--6
--9
Lua table(表)
概述:
table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数组、字典等。 Lua table 使用关联型数组,你可以用任意类型的值来作数组的索引,但这个值不能是 nil。 Lua table 是不固定大小的,你可以根据自己需要进行扩容。 Lua也是通过table来解决模块(module)、包(package)和对象(Object)的。 例如string.format表示使用"format"来索引table string。
table(表)的构造:
构造器是创建和初始化表的表达式。表是Lua特有的功能强大的东西。最简单的构造函数是{},用来创建一个空表。可以直接初始化数组:
-- 初始化表
mytable = {}
-- 指定值
mytable[1]= "Lua"
-- 移除引用
mytable = nil
-- lua 垃圾回收会释放内存
当我们为 table a 并设置元素,然后将 a 赋值给 b,则 a 与 b 都指向同一个内存。如果 a 设置为 nil ,则 b 同样能访问 table 的元素。如果没有指定的变量指向a,Lua的垃圾回收机制会清理相对应的内存。 以下实例演示了以上的描述情况:
-- 简单的 table
mytable = {}
print("mytable 的类型是 ",type(mytable))
mytable[1]= "Lua"
mytable["wow"] = "修改前"
print("mytable 索引为 1 的元素是 ", mytable[1])
print("mytable 索引为 wow 的元素是 ", mytable["wow"])
-- alternatetable和mytable的是指同一个 table
alternatetable = mytable
print("alternatetable 索引为 1 的元素是 ", alternatetable[1])
print("mytable 索引为 wow 的元素是 ", alternatetable["wow"])
alternatetable["wow"] = "修改后"
print("mytable 索引为 wow 的元素是 ", mytable["wow"])
-- 释放变量
alternatetable = nil
print("alternatetable 是 ", alternatetable)
-- mytable 仍然可以访问
print("mytable 索引为 wow 的元素是 ", mytable["wow"])
mytable = nil
print("mytable 是 ", mytable)
以上代码执行结果为:
mytable 的类型是 table
mytable 索引为 1 的元素是 Lua
mytable 索引为 wow 的元素是 修改前
alternatetable 索引为 1 的元素是 Lua
mytable 索引为 wow 的元素是 修改前
mytable 索引为 wow 的元素是 修改后
alternatetable 是 nil
mytable 索引为 wow 的元素是 修改后
mytable 是 nil
Table操作:
序号 方法 & 用途
1 table.concat (table [, sep [, start [, end]]]):
concat是concatenate(连锁, 连接)的缩写. table.concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素, 元素间以指定的分隔符(sep)隔开。
2 table.insert (table, [pos,] value):
在table的数组部分指定位置(pos)插入值为value的一个元素. pos参数可选, 默认为数组部分末尾.
3 table.maxn (table)
指定table中所有正数key值中最大的key值. 如果不存在key值为正数的元素, 则返回0。(Lua5.2之后该方法已经不存在了,本文使用了自定义函数实现)
4 table.remove (table [, pos])
返回table数组部分位于pos位置的元素. 其后的元素会被前移. pos参数可选, 默认为table长度, 即从最后一个元素删起。
5 table.sort (table [, comp])
对给定的table进行升序排序。
接下来我们来看下这几个方法的实例。
Table连接:
我们可以使用 concat() 输出一个列表中元素连接成的字符串: ```lua fruits = {"banana","orange","apple"} -- 返回 table 连接后的字符串 print("连接后的字符串 ",table.concat(fruits))
-- 指定连接字符 print("连接后的字符串 ",table.concat(fruits,", "))
-- 指定索引来连接 table print("连接后的字符串 ",table.concat(fruits,", ", 2,3))
--执行以上代码输出结果为: --连接后的字符串 bananaorangeapple --连接后的字符串 banana, orange, apple --连接后的字符串 orange, apple
插入和移除:
以下实例演示了 table 的插入和移除操作:
```lua
fruits = {"banana","orange","apple"}
-- 在末尾插入
table.insert(fruits,"mango")
print("索引为 4 的元素为 ",fruits[4])
-- 在索引为 2 的键处插入
table.insert(fruits,2,"grapes")
print("索引为 2 的元素为 ",fruits[2])
print("最后一个元素为 ",fruits[5])
table.remove(fruits)
print("移除后最后一个元素为 ",fruits[5])
--执行以上代码输出结果为:
--索引为 4 的元素为 mango
--索引为 2 的元素为 grapes
--最后一个元素为 mango
--移除后最后一个元素为 nil
Table 排序:
以下实例演示了 sort() 方法的使用,用于对 Table 进行排序:
fruits = {"banana","orange","apple","grapes"}
print("排序前")
for k,v in ipairs(fruits) do
print(k,v)
end
table.sort(fruits)
print("排序后")
for k,v in ipairs(fruits) do
print(k,v)
end
--执行以上代码输出结果为:
--排序前
--1 banana
--2 orange
--3 apple
--4 grapes
--排序后
--1 apple
--2 banana
--3 grapes
--4 orange
Table 最大值:
table.maxn 在 Lua5.2 之后该方法已经不存在了,我们定义了 table_maxn 方法来实现。 以下实例演示了如何获取 table 中的最大值:
function table_maxn(t)
local mn=nil;
for k, v in pairs(t) do
if(mn==nil) then
mn=v
end
if mn < v then
mn = v
end
end
return mn
end
tbl = {[1] = 2, [2] = 6, [3] = 34, [26] =5}
print("tbl 最大值:", table_maxn(tbl))
print("tbl 长度 ", #tbl)
--执行以上代码输出结果为:
--tbl 最大值: 34
--tbl 长度 3
注意:
当我们获取 table 的长度的时候无论是使用 # 还是 table.getn 其都会在索引中断的地方停止计数,而导致无法正确取得 table 的长度。 可以使用以下方法来代替:
function table_leng(t)
local leng=0
for k, v in pairs(t) do
leng=leng+1
end
return leng;
end
组件说明
组件
进入对象或者世界编辑后,我们可以看到它们身上都挂载了许多组件。这些组件可以控制对象的外观、属性、物理特性、行为逻辑等等,给“舞台”上的“演员”赋予了生命。
官方提供了一些封装好的组件,我们可以通过组件面板直接更改对象的属性。也可以卸载掉一些不需要使用的组件。
如果官方组件不能满足需求,我们也可以通过添加触发器组件/脚本组件来制作新的组件。(对于高手来说,通过把同类型的逻辑封装成组件,可以让我们的代码更加精简易于管理。)如果不了解触发器可以查看 触发器文档
例如:我们制作一个掉落物组件,来设置不同的生物被击败后,掉落不同的物品。
local Script = {}
--属性定义
Script.propertys = {
varNum = {
type = Mini.Number, --定义了一个数值类型的参数
default = 2,--默认值
displayName = "掉落物数值",
},
varItem = {
type = Mini.Item,-- --定义了一个道具类型的参数
default = 11668,-- 默认值
displayName = "掉落物道具",-- 属性别名
},
}
-- 组件启动时调用
function Script:OnStart()
-- 监听个体事件 当此对象被击败时触发
self:AddEvent(ObjectEvent.ObjectDie, self.OnObjectDie)
-- ObjectEvent.ObjectDie为官方事件,可以在wiki的事件库中查看更多事件
-- self.OnObjectDie 为下方自定义的一个函数
end
function Script:OnObjectDie(event)
-- 定义此生物死亡时的动作
GameObject:CreatePrefab(ObjType.DropItem, self.varItem, event.x,event.y+1,event.z, self.varNum)
-- 预制体类型:ObjType.DropItem 为掉落物,可以在wiki中查看其他类型
-- 掉落物类型:self.varItem从属性面板读取创建的道具类型
-- 事件中的位置: event.x,event.y+1,event.z, event.y+1让创建的高度必死亡的高一格
-- 掉落物数量:self.varNum从属性面板读取创建的掉落物数量
end
return Script
完整视频教程
所有自定义的组件,除了在编辑对象时使用之外,还可以在资源背包里统一编辑管理。(此处编辑组件,会影响所有调用了这个组件的对象)
概述
组件依附在对象的逻辑片段,不可直接运行,需要挂载到对象上才能生效,一种组件在同一个对象上只能挂载一个。2.0的脚本功能就等同挂载在世界或者ui对象上的组件。
组件的属性
示例
注意:在这里定义的属性数据会自动保存, 更多类型参考 属性说明
local Script = {}
Script.propertys = {
-- 完整定义一个变量数字,属性字段为num
num = {
type = Mini.Number, -- 属性类型
default = 100, -- 默认值
displayName = "数字", -- 属性别名
permission = CmpProPermission.Private
-- 最大值等 其他属性说明配置参考属性说明
},
--大部分属性类型支持简单定义, 比如:
age = 8,
str = "你好!",
bool = true,
color = Mini.Color(255, 0, 0, 255), -- 红色
}
function Script:OnStart()
-- 组件属性的读写示例
-- 修改属性值
self.num = 88
--这里 num 属性声明了 permission = CmpProPermission.Private 表示该属性是私有的,其他组件是无法读写的。组件的属性默认是 Public 公开的。
-- 获取属性变量
if self.num then
self.size = self.num + 1
end
end
return Script
组件的数据存储
local Script = {}
Script.propertys = {
-- 完整定义一个变量数字,属性字段为num
num = {
type = Mini.Number, -- 属性类型
default = 100, -- 默认值
displayName = "数字", -- 属性别名
},
age = {
type = Mini.Number, -- 属性类型
default = 100, -- 默认值
displayName = "数字", -- 属性别名
isSave = false -- 表示不自动存数据,每次进游戏或者出了区块重新加载都是默认值
},
}
function Script:OnStart()
-- 组件存数据除了全局kv,变量等变量库的方式,还有组件属性本身也是会自动落地,只有声明了isSave = false 不保存默认都会存
-- 没有特殊情况尽量用属性存,不要用全局变量存,这样就不需要自行维护对象是否删除。
-- 数据不希望别人能修改可以设置属性为私有,或者只读
end
return Script
:::
组件的生命周期函数
示例
更多参考 组件函数
local Script = {}
-- 组件启动时调用
function Script:OnStart()
--在这个函数初始化,监听事件等
-- 监听触发器事件 玩家点击方块事件
self:AddTriggerEvent(TriggerEvent.PlayerClickBlock, self.OnPlayerClickBlock)
end
function Script:OnPlayerClickBlock(event)
print("玩家点击方块")
end
--定义了OnTick 则会有驱动。不需要时候尽量不定义tick,提高效率,
--定时逻辑可使用定时器代替
function Script:OnTick(dt)
end
-- 当组件删除
function Script:OnDestroy()
end
return Script
组件函数访问权限配置
示例
注意: 组件函数默认是私有函数,开放给其他组件调用时候需要额外配置,否则访问不到
local Script = {} -- 定义组件表
--属性
Script.propertys = {
-- 完整定义一个变量数字,属性字段为num
num = {
type = Mini.Number, -- 属性类型
default = 100, -- 默认值
displayName = "数字", -- 属性别名
-- 最大值等 其他属性说明配置参考属性说明
},
--大部分属性类型支持简单定义, 比如:
age = 8,
str = "你好!",
bool = true,
color = Mini.Color(255, 0, 0, 255), -- 红色
}
-- 需要开放给别的组件访问的函数需要配置(配置后触发器也能访问)
Script.openFnArgs = {
-- 函数开放配置示例
Add = {
returnType = Mini.Number, -- 返回值(不填则为无返回值)
displayName = "函数别名", -- 触发器上显示的别名(不填缺省则显示函数名Add)
params = {Mini.Number, Mini.Number},-- 参数列表类型(不填则为无参数)
},
-- 只想支持其他脚本组件访问,不需要支持触发器的简单写法可以直接配置
-- Add = true,
}
-- 函数定义示例
function Script:Add(a, b)
if a and b then
return a + b
end
end
-- 组件启动时调用
function Script:OnStart()
-- 调用自己定义的函数示例, ps:调用本组件的函数不需要任何配置
local result = self:Add(1, 2)
print("result", result)
end
return Script -- 返回组件定义的表
组件的相互操作
示例
-- 组件A
local Script = {} -- 定义组件表
-- 需要开放给别的组件访问的函数需要配置(配置后触发器也能访问)
Script.openFnArgs = {
-- 函数开放配置示例
Add = {
returnType = Mini.Number, -- 返回值(不填则为无返回值)
displayName = "函数别名", -- 触发器上显示的别名(不填缺省则显示函数名Add)
params = {Mini.Number, Mini.Number},-- 参数列表类型(不填则为无参数)
},
-- 只想支持其他脚本组件访问,不需要支持触发器的简单写法可以直接配置
-- Add = true,
}
-- 函数定义示例
function Script:Add(a, b)
if a and b then
return a + b
end
end
-- 组件启动时调用
function Script:OnStart()
-- 调用自己定义的函数示例, ps:调用本组件的函数不需要任何配置
local result = self:Add(1, 2)
print("result", result)
end
return Script -- 返回组件定义的表
-- 组件B
local Script = {} -- 定义组件表
-- 组件启动时调用
function Script:OnStart()
-- 同对象下操作
-- 获取对象上组件A
local cmpA = self:GetComponent("组件id") --组件id需要通过迷你世界脚本编辑器顶部选择【ID库】——【组件】插入
-- 调用组件A的函数
local result = cmpA:Add(1, 2)
print("result", result)
-- 跨对象操作
-- 获取一般对象
local obj = GameObject:FindObject("对象id")
-- 世界对象的获取方式
local world = GetWorld()
-- 获取对象上组件A
local cmpA = world:GetComponent("组件id") --组件id需要通过迷你世界脚本编辑器顶部选择【ID库】——【组件】插入
if cmpA then
-- 调用组件A的函数
local result = cmpA:Add(1, 2)
print("result", result)
--获取cmpA组件的age属性
local age = cmpA.age
--设置cmpA的age属性值为123 ,官方和开发者的操作都是一样的
cmpA.age = 123
end
end
return Script -- 返回组件定义的表
组件使用简单示例
组件互相操作
组件的相互操作
示例
-- 组件A
local Script = {} -- 定义组件表
-- 需要开放给别的组件访问的函数需要配置(配置后触发器也能访问)
Script.openFnArgs = {
-- 函数开放配置示例
Add = {
returnType = Mini.Number, -- 返回值(不填则为无返回值)
displayName = "函数别名", -- 触发器上显示的别名(不填缺省则显示函数名Add)
params = {Mini.Number, Mini.Number},-- 参数列表类型(不填则为无参数)
},
-- 只想支持其他脚本组件访问,不需要支持触发器的简单写法可以直接配置
-- Add = true,
}
-- 函数定义示例
function Script:Add(a, b)
if a and b then
return a + b
end
end
-- 组件启动时调用
function Script:OnStart()
-- 调用自己定义的函数示例, ps:调用本组件的函数不需要任何配置
local result = self:Add(1, 2)
print("result", result)
end
return Script -- 返回组件定义的表
-- 组件B
local Script = {} -- 定义组件表
-- 组件启动时调用
function Script:OnStart()
-- 同对象下操作
-- 获取对象上组件A
local cmpA = self:GetComponent("组件id") --组件id需要通过迷你世界脚本编辑器顶部选择【ID库】——【组件】插入
-- 调用组件A的函数
local result = cmpA:Add(1, 2)
print("result", result)
-- 跨对象操作
-- 获取一般对象
local obj = GameObject:FindObject("对象id")
-- 世界对象的获取方式
local world = GetWorld()
-- 获取对象上组件A
local cmpA = world:GetComponent("组件id") --组件id需要通过迷你世界脚本编辑器顶部选择【ID库】——【组件】插入
if cmpA then
-- 调用组件A的函数
local result = cmpA:Add(1, 2)
print("result", result)
--获取cmpA组件的age属性
local age = cmpA.age
--设置cmpA的age属性值为123 ,官方和开发者的操作都是一样的
cmpA.age = 123
end
end
return Script -- 返回组件定义的表
组件使用简单示例
组件函数
组件上的API函数名及描述如下:
序号 函数名 函数描述
1 GetGameObject(...) 获取该组件挂载的对象实例
2 GetGameObjectId(...) 获取组件挂载的对象实例id
3 IsValid(...) 获取组件是否有效
4 AddComponent(...) 在组件所在的对象上添加指定组件
5 RemoveComponent(...) 删除在组件所在的对象上的指定组件
6 GetComponent(...) 获取组件所在对象上的指定组件
7 PushCustomEvent(...) 发送自定义消息(异步)
8 PushCustomEventSync(...) 发送自定义消息(同步)
9 AddCustomEvent(...) 监听自定义消息(广播)
10 RemoveCustomEvent(...) 移除自定义事件监听
11 AddTriggerEvent(...) 添加触发事件
12 RemoveTriggerEvent(...) 移除触发事件监听
13 PushEvent(...) 发送对象事件(异步)
14 PushEventSync(...) 发送对象事件(同步)
15 AddEvent(...) 监听对象事件
16 RemoveEvent(...) 移除对象的事件监听
17 DoTaskInTime(...) 启动定时器在指定时间执行任务
18 DoPeriodicTask(...) 启动定时器周期性执行任务
19 ClearAllTask(...) 清除所有定时器任务
20 SetEventIsEnable(...) 设置是否启用事件
21 ThreadWork(...) 启动新协程
22 ThreadWait(...) 线程等待
23 PushCloudServerMsg(...) 发送云服广播消息(异步)
24 AddCloudSeverEvent(...) 添加云服消息监听(异步)
25 RemoveCloudSeverEvent(...) 移除云服消息监听(异步)
GetGameObject
参数及类型:
无
返回值及类型:
ret:GameObject 挂载对象
该方法的主要作用: 获取该组件挂载的对象实例
具体使用案例如下:
local Script = {}
-- 组件启动时调用
function Script:OnStart()
-- 该组件挂载的对象实例
local object = self:GetGameObject()
-- 可以使用 object 直接操作对象
-- 例如:给对象打上标签
object:AddTag("这是恐龙类型")
end
return Script
GetGameObjectId
参数及类型:
无
返回值及类型:
ret:GameObject 挂载对象
该方法的主要作用: 获取组件挂载的对象实例id
具体使用案例如下:
local Script = {}
-- 组件启动时调用
function Script:OnStart()
-- 该组件挂载的对象实例
--ui 获取的是ui的工程id, 方块获取的是方块的类型id, 其他类型获取的是对象的实例id
local id = self:GetGameObjectId()
end
return Script
IsValid
参数及类型:
无
返回值及类型:
ret:boolean 是否有效
该方法的主要作用: 获取组件是否有效
具体使用案例如下:
local Script = {}
-- 组件启动时调用
function Script:OnStart()
local isValid = self:IsValid()
if isValid then
print("组件有效")
else
print("组件无效")
end
-- 操作缓存的其他组件的,需要先判断组件是否有效,避免相关组件被销毁后,操作无效
if self.otherCmp and self.otherCmp:IsValid() then
self.otherCmp:DoSomething()
end
end
return Script
AddComponent
参数及类型:
string 组件id
返回值及类型:
ret:component 组件对象
该方法的主要作用:在组件所在的对象上添加指定组件(对象已经存在相同id组件的则添加不上)
具体使用案例如下:
local Script = {}
-- 组件启动时调用
function Script:OnStart()
-- 获取组件
local cmp = self:AddComponent("组件id")
if cmp then
print("组件添加成功")
cmp:DoSomething()
else
print("组件添加失败")
end
end
return Script
RemoveComponent
参数及类型:
string 组件id
返回值及类型:
ret: 无
该方法的主要作用:删除在组件所在的对象上的指定组件
具体使用案例如下:
local Script = {}
-- 组件启动时调用
function Script:OnStart()
-- 删除组件
self:RemoveComponent("组件id")
end
return Script
GetComponent
参数及类型:
string 组件id
返回值及类型:
ret:component 组件对象
该方法的主要作用:获取组件所在对象上的指定组件
具体使用案例如下:
local Script = {}
-- 组件启动时调用
function Script:OnStart()
-- 添加组件
local cmp = self:GetComponent("组件id")
if cmp then
print("获取到组件")
cmp:DoSomething()
else
print("获取组件失败")
end
end
return Script
PushCustomEvent
参数及类型:
string 消息id
多个基本数据类型 消息内容
返回值及类型:
ret: 无
该方法的主要作用:发送自定义消息(异步)
具体使用案例如下:
local Script = {}
-- 组件启动时调用
function Script:OnStart()
-- 发送自定义消息 id为 消息id, 3个参数:"消息参数1", 100, true
self:PushCustomEvent("消息id", "消息参数1", 100, true)
-- 自定义消息id 使用触发器的广播id 则触发器也能收到消息,
-- 参数类型需要跟触发器广播的定义对应上
end
return Script
PushCustomEventSync
参数及类型:
string 消息id
多个基本数据类型 消息内容
返回值及类型:
ret: 无
该方法的主要作用:发送自定义消息(同步)
具体使用案例如下:
local Script = {}
-- 组件启动时调用
function Script:OnStart()
-- 发送自定义消息 id为 消息id, 3个参数:"消息参数1", 100, true
self:PushCustomEventSync("消息id", "消息参数1", 100, true)
-- 自定义消息id 使用触发器的广播id 则触发器也能收到消息,
--参数类型需要跟触发器广播的定义对应上
end
return Script
AddCustomEvent
参数及类型:
string 消息id
function 回调函数
返回值及类型:
ret: 无
该方法的主要作用:监听自定义消息(广播)
具体使用案例如下:
local Script = {}
-- 组件启动时调用
function Script:OnStart()
-- 第一种写法
-- 自定义消息id 使用触发器的广播id 则触发器发送的消息会触发回调函数
self:AddCustomEvent("消息id", self.OnCustomEvent)
-- 第二种写法
self:AddCustomEvent("消息id", function(cmp,eventId, param1, param2, param3)
print("收到自定义消息", eventId, param1, param2, param3)
end)
end
function Script:OnCustomEvent(eventId, param1, param2, param3)
-- 假如广播发了3个参数, 1,2,3
-- 则param1, param2, param3 的值分别为 1, 2, 3
print("收到自定义消息", eventId, param1, param2, param3)
end
return Script
RemoveCustomEvent
参数及类型:
string 消息id
返回值及类型:
ret: 无
该方法的主要作用:移除自定义事件监听
具体使用案例如下:
local Script = {}
-- 组件启动时调用
function Script:OnStart()
-- 删除组件中监听的自定义消息(删除该组件全部 "消息id" 的监听)
self:RemoveCustomEvent("消息id")
end
return Script
AddTriggerEvent
参数及类型:
string 事件类型
function 回调函数
number|string 过滤参数1(可不传) 使用请参考触发器事件参数过滤
number|string 过滤参数2(可不传)
返回值及类型:
ret: 无
该方法的主要作用:添加触发事件(该函数只在ui跟世界类型组件有效)可以监听的事件列表参考触发器事件管理
具体使用案例如下:
local Script = {}
-- 组件启动时调用
function Script:OnStart()
-- 添加点击方块事件
self:AddTriggerEvent(TriggerEvent.PlayerClickBlock, self.OnPlayerClickBlock)
--监听玩家进入区域事件
-- self:AddTriggerEvent(TriggerEvent.PlayerAreaIn, self.OnPlayerAreaIn,4297367315)
--监听玩家点击界面id事件
-- self:AddTriggerEvent(TriggerEvent.UIButtonClick, self.OnBtnClick, "7589854082086094858-57016_1") --仅UI组件可用
end
function Script:OnPlayerClickBlock(event)
-- event.blockid 事件中的方块类型
-- event.x 事件中的x坐标
-- event.y 事件中的y坐标
-- event.z 事件中的z坐标
print("玩家点击方块")
end
return Script
RemoveTriggerEvent
参数及类型:
string 事件类型
返回值及类型:
ret: 无
该方法的主要作用:移除触发事件监听
具体使用案例如下:
local Script = {}
-- 组件启动时调用
function Script:OnStart()
-- 删除组件中监听点击方块事件
self:RemoveTriggerEvent(TriggerEvent.PlayerClickBlock)
end
return Script
PushEvent
参数及类型:
string 自定义事件类型
多个基本数据类型 事件内容
返回值及类型:
ret: 无
该方法的主要作用:发送对象事件(异步), 只有同个对象上监听的组件才能收到事件
具体使用案例如下:
local Script = {}
-- 组件启动时调用
function Script:OnStart()
-- 发送自定义消息 id为 自定义事件类型, 3个参数:"参数1", 100, true
self:PushEvent("自定义事件类型1", "参数1", 100, true)
end
return Script
PushEventSync
参数及类型:
string 自定义事件类型
多个基本数据类型 消息内容
返回值及类型:
ret: 无
该方法的主要作用:发送对象事件(同步), 只有同个对象上监听的组件才能收到事件
具体使用案例如下:
local Script = {}
-- 组件启动时调用
function Script:OnStart()
-- 发送自定义消息 id为 自定义事件类型, 3个参数:"参数1", 100, true
self:PushEventSync("自定义事件类型1", "参数1", 100, true)
end
return Script
AddEvent
参数及类型:
string 事件类型
function 回调函数
number 事件触发的优先级(可不传)
number|string 事件过滤参数1(可不传)
number|string 事件过滤参数2(可不传)
返回值及类型:
ret: 无
该方法的主要作用:监听对象事件(可以监听自定义的,也能监听官方内置对象事件)可以监听的事件列表参考组件事件管理
具体使用案例如下:
local Script = {}
-- 组件启动时调用
function Script:OnStart()
-- 监听此对象收到伤害事件
self:AddEvent(ObjectEvent.ObjectBeHurt, self.OnObjectBeHurt)
-- 监听对象自定义事件
self:AddEvent("自定义事件类型1", self.OnEvent)
--添加监听事件并且只按Q触发事件
-- self:AddEvent(ObjectEvent.PlayerInputKeyDown, self.OnInputKey, nil, KeyCode.Q)
--添加监听血量变化事件
-- self:AddEvent(ObjectEvent.ObjectChangeAttr, self.OnChangeAttr, nil, RoleAttr.CurHp)
end
function Script:OnObjectBeHurt(event)
print("此对象(玩家/生物)受到伤害")
end
function Script:OnEvent(event)
print("收到自定义事件")
end
return Script
RemoveEvent
参数及类型:
string 事件类型
返回值及类型:
ret: 无
该方法的主要作用:移除对象的事件监听
具体使用案例如下:
local Script = {}
function Script:OnStart()
self:RemoveEvent(ObjectEvent.ObjectBeHurt)
end
return Script
DoTaskInTime
参数及类型:
function 回调函数
number 时间间隔(秒)
返回值及类型:
ret: 无
该方法的主要作用:启动定时器在指定时间执行任务
具体使用案例如下:
local Script = {}
-- 组件启动时调用
function Script:OnStart()
-- 10秒后执行回调函数
local task = self:DoTaskInTime(self.OnTime, 10)
--task:Pause() -- 暂停定时器
--task:Resume() -- 恢复定时器
--task:Cancel() -- 取消定时器
end
function Script:OnTime()
print("10秒后执行")
end
return Script
DoPeriodicTask
参数及类型:
function 回调函数
number 间隔时间(秒)
number 延迟开始第一次执行时间(默认0)
number 执行次数(默认无限次)
返回值及类型:
ret: 无
该方法的主要作用:启动定时器周期性执行任务
具体使用案例如下:
local Script = {}
-- 组件启动时调用
function Script:OnStart()
-- 每10秒执行一次
local task = self:DoPeriodicTask(self.OnTask, 10)
--task:Pause() -- 暂停定时器
--task:Resume() -- 恢复定时器
--task:Cancel() -- 取消定时器
end
function Script:OnTask()
print("10秒执行一次")
end
return Script
ClearAllTask
参数及类型:
无
返回值及类型:
ret: 无
该方法的主要作用:清除所有定时器任务
具体使用案例如下:
local Script = {}
-- 组件启动时调用
function Script:OnStart()
-- 清除所有定时器任务
self:ClearAllTask()
end
return Script
SetEventIsEnable
参数及类型:
function 事件回调函数
boolean 是否启用
返回值及类型:
ret: 无
该方法的主要作用:设置是否启用事件
具体使用案例如下:
local Script = {}
-- 组件启动时调用
function Script:OnStart()
self:AddTriggerEvent(TriggerEvent.PlayerClickBlock, self.OnPlayerClickBlock)
-- 暂时不需要触发事件的,可以设置事件不会被触发, 也可以通过删除事件屏蔽
self:SetEventIsEnable(self.OnPlayerClickBlock, false)
end
function Script:OnPlayerClickBlock(event)
print("玩家点击方块")
end
return Script
ThreadWork
参数及类型:
function 协程执行函数
返回值及类型:
ret: 无
该方法的主要作用:启动新协程
具体使用案例如下:
local Script = {}
-- 组件启动时调用
function Script:OnStart()
-- 启动线程
self:ThreadWork(function()
print("线程启动")
end)
end
return Script
ThreadWait
参数及类型:
number 等待时间(默认一帧)
返回值及类型:
ret: 无
该方法的主要作用:启动新协程
具体使用案例如下:
local Script = {}
-- 组件启动时调用
function Script:OnStart()
-- 等待1秒
self:ThreadWait(1)
end
return Script
PushCloudServerMsg
参数及类型:
string 自定义事件类型
多个基本数据类型 事件内容
返回值及类型:
ret: 无
该方法的主要作用:发送云服广播消息(异步), 只有同个对象上监听的组件才能收到事件
具体使用案例如下:
local Script = {}
-- 组件启动时调用
function Script:OnStart()
-- 发送自定义消息 id为 自定义事件类型, 3个参数:"参数1", 100, true
self:PushCloudServerMsg("消息类型", "参数1", 100, true)
end
return Script
AddCloudSeverEvent
参数及类型:
string 事件类型
function 回调函数
返回值及类型:
ret: 无
该方法的主要作用:接收云服事件 可以监听的事件列表参考组件事件管理
具体使用案例如下:
local Script = {}
function Script:OnStart()
self:AddTriggerEvent(TriggerEvent.PlayerClickBlock, self.OnPlayerClickBlock)
self:AddCloudSeverEvent("cloudmsg", self.OnCloudMsgEvent)
end
function Script:OnPlayerClickBlock(event)
self:PushCloudServerMsg("cloudmsg", 999, "this is a cloud message")
end
function Script:OnCloudMsgEvent(event)
--输出到调试窗口日志
local customEventParams = event.CustomEventParams or {}
print("收到云服广播 ", customEventParams[1],customEventParams[2])
end
return Script
RemoveCloudSeverEvent
参数及类型:
string 消息id
返回值及类型:
ret: 无
该方法的主要作用:移除云服消息监听
具体使用案例如下:
local Script = {}
-- 组件启动时调用
function Script:OnStart()
-- 删除组件中监听的自定义消息(删除该组件全部 "消息id" 的监听)
self:RemoveCloudSeverEvent("消息id")
end
return Script
组件属性
序号 属性名 属性描述
1 Mini.Number 数值
2 Mini.String 字符串
3 Mini.Bool 布尔值
4 Mini.Color 颜色
5 Mini.Vec3 位置
6 Mini.MobType 生物类型
7 Mini.Block 方块类型
8 Mini.Item 道具类型
9 Mini.Effect 特效类型
10 Mini.Picture 图片
11 Mini.Buff 状态
12 Mini.Sound 音效
13 Mini.Model 外观
以下是类型特殊详细说明:
Mini.Number
参数及类型:
number:number数值
属性配置举例:
{
type = Mini.Number,-- 类型
default = 100,-- 默认值
displayName = "数字",-- 属性别名
sort = 1, -- 属性排序
minValue = -1000, -- 最小值
maxValue = 1000,-- 最大值
format = "%.0f米", -- 单位,可不填 %.0f 整数, %.1f 一位小数
style = ComponentUIStyle.NumberSlider,--属性控件样式滑动条
-- tips = "这是一个脚本组件的数值属性变量",
-- stride =1, --步长
},
数值属性style样式介绍
样式枚举 说明 效果图例
ComponentUIStyle.NumberSlider 滑动条 滑动条
ComponentUIStyle.NumberButton 按钮 按钮
ComponentUIStyle.NumberOnlyInput 输入框 输入框
Mini.String
参数及类型:
string:string字符串
属性配置举例:
{
type = Mini.String,-- 类型
default = "您好!",-- 默认值
displayName = "字符串",-- 属性别名
sort = 1, -- 属性排序
multiLine = false, -- 是否多行
maxLength = 10, -- 最多10个字符
-- tips = "属性作用提示",
},
Mini.Bool
参数及类型:
bool:boolean布尔值
属性配置举例:
{
type = Mini.Bool,-- 类型
default = true,-- 默认值
displayName = "布尔值",-- 属性别名
sort = 1, -- 属性排序
-- tips = "属性作用提示",
},
Mini.Color
参数及类型:
color: number,string 16进制颜色值或字符串
属性配置举例:
{
type = Mini.Color,-- 类型
default = 0xFFFFFF,-- 默认值
displayName = "颜色",-- 属性别名
sort = 1,
-- tips = "属性作用提示",
},
Mini.Vec3
参数及类型:
vec3:table三维坐标xyz
属性配置举例:
{
type = Mini.Vec3,-- 类型
default = Mini.Vec3(0, 0, 0),-- 默认值
displayName = "位置",
-- displayNames = {"yaw", "pitch", "roll"},-- 单个字段别名,不填写默认为X,Y,Z
sort = 1,
-- format = "%.2f",-- %.0f 整数, %.1f 一位小数
-- minValue = -10000,-- 最小值, 也可配置 {-10000, -20000, -30000}
-- maxValue = 10000,-- 最大值, 也可配置 {10000, 20000, 30000}
-- tips = "属性作用提示",
},
Mini.MobType
参数及类型:
mobtype: number,string 官方生物类型id或prefab预制id
属性配置举例:
{
type = Mini.MobType,-- 类型
default = 3400,-- 默认值
displayName = "生物类型",-- 属性别名
sort = 1,
-- tips = "属性作用提示",
},
Mini.Block
参数及类型:
block: number,string 官方方块类型id或prefab预制id
属性配置举例:
{
type = Mini.Block,-- 类型
default = 100,-- 默认值
displayName = "方块类型",-- 属性别名
sort = 1,
-- tips = "属性作用提示",
},
Mini.Item
参数及类型:
item: number,string 官方道具类型id或prefab预制id
属性配置举例:
{
type = Mini.Item,-- 类型
default = 11668,-- 默认值
displayName = "道具",-- 属性别名
sort = 1,
-- tips = "属性作用提示",
},
Mini.Effect
参数及类型:
effect: number 官方特效类型id
属性配置举例:
{
type = Mini.Effect,-- 类型
default = 1051,-- 默认值
displayName = "特效",-- 属性别名
sort = 1,
-- tips = "属性作用提示",
},
Mini.Picture
参数及类型:
picture:string图片id
属性配置举例:
{
type = Mini.Picture,-- 类型
default = "0_10001",-- 默认值
displayName = "图片",-- 属性别名
sort = 1,
-- tips = "属性作用提示",
},
Mini.Buff
参数及类型:
buff: number string 官方状态类型id或prefab预制id
属性配置举例:
{
type = Mini.Buff,-- 类型
default = 6002,-- 默认值
displayName = "状态",-- 属性别名
sort = 1,
-- tips = "属性作用提示",
},
Mini.Sound
参数及类型:
sound:number string 官方音效类型id或prefab预制id
属性配置举例:
{
type = Mini.Sound,-- 类型
default = 10713,-- 默认值
displayName = "boss出场音效",-- 属性别名
sort = 1,
-- tips = "属性作用提示",
},
Mini.Model
参数及类型:
model:string模型id
属性配置举例:
{
type = Mini.Model,-- 类型
default = "mob_3510",-- 默认值
displayName = "模型",-- 属性别名
sort = 1,
-- tips = "属性作用提示",
},
触发器事件管理
添加监听函数调用方式参考:组件函数
注意:事件中参数如果是nil,则可以用 CurEventParam 来替代获取,字段名如下:
CurEventParam.EventTargetPos 事件中的位置
CurEventParam.EventBuff 事件中的状态效果
CurEventParam.EventTargetEffect 事件中的特效
CurEventParam.EventTargetBlock 事件中的方块类型
CurEventParam.EventShortCutIdx 事件中的快捷栏
CurEventParam.EquipItemPos 事件中的装备栏
CurEventParam.EventElementID 事件中的元件
CurEventParam.EventUIID 事件中的界面
CurEventParam.EventString 事件中的字符串
CurEventParam.SelectUIID 当前编辑的界面
CurEventParam.EventAreaid 事件中的区域
CurEventParam.Hurtlv 事件中伤害值
CurEventParam.TriggerByPlayer 触发事件的玩家
CurEventParam.EventTargetPlayer 事件中的目标玩家
CurEventParam.TriggerByCreature 触发事件的生物
CurEventParam.EventTargetCreature 事件中的目标生物
CurEventParam.Actorid 触发事件的生物类型
CurEventParam.targetactorid 事件中的目标生物类型
CurEventParam.EventTargetItemID 事件中的道具类型
CurEventParam.TriggerByMissile 触发事件的投射物
CurEventParam.EventTargetDropItem 事件中的掉落物
CurEventParam.Itemnum 事件中的道具数量
CurEventParam.eventworldid 事件中的星球
事件参数添加参数过滤
注意:部分高频率事件可以添加过滤参数用以提高执行效率,特别是云服房间。添加过滤之后将提高帧率。如果第三个参数传 nil 或者 "",则不会进行过滤。
self:AddTriggerEvent(TriggerEvent.PlayerAreaIn, eventfunc,areaid) -- 自主修改 eventfunc 和 areaid
self:AddTriggerEvent(TriggerEvent.PlayerAreaOut, eventfunc,areaid) -- 自主修改 eventfunc 和 areaid
self:AddTriggerEvent(TriggerEvent.MobAreaIn, eventfunc,areaid) -- 自主修改 eventfunc 和 areaid
self:AddTriggerEvent(TriggerEvent.MobAreaOut, eventfunc,areaid) -- 自主修改 eventfunc 和 areaid
self:AddTriggerEvent(TriggerEvent.MissileAreaIn, eventfunc,areaid) -- 自主修改 eventfunc 和 areaid
self:AddTriggerEvent(TriggerEvent.MissileAreaOut, eventfunc,areaid) -- 自主修改 eventfunc 和 areaid
self:AddTriggerEvent(TriggerEvent.DropItemAreaIn, eventfunc,areaid) -- 自主修改 eventfunc 和 areaid
self:AddTriggerEvent(TriggerEvent.DropItemAreaIn, eventfunc,areaid) -- 自主修改 eventfunc 和 areaid
self:AddTriggerEvent(TriggerEvent.DropItemAreaOut, eventfunc,areaid) -- 自主修改 eventfunc 和 areaid
self:AddTriggerEvent(TriggerEvent.EntityAreaIn, eventfunc,areaid) -- 自主修改 eventfunc 和 areaid
self:AddTriggerEvent(TriggerEvent.EntityAreaOut, eventfunc,areaid) -- 自主修改 eventfunc 和 areaid
self:AddTriggerEvent(TriggerEvent.EntityAreaOut, eventfunc,areaid) -- 自主修改 eventfunc 和 areaid
self:AddTriggerEvent(TriggerEvent.AreaObjAreaIn, eventfunc,areaid) -- 自主修改 eventfunc 和 areaid
self:AddTriggerEvent(TriggerEvent.AreaObjAreaOut, eventfunc,areaid) -- 自主修改 eventfunc 和 areaid
self:AddTriggerEvent(TriggerEvent.MobChangeAttr, eventfunc, RoleAttr.CurHp) -- 自主修改 eventfunc 和 过滤枚举
self:AddTriggerEvent(TriggerEvent.PlayerChangeAttr, eventfunc, RoleAttr.CurHp) -- 自主修改 eventfunc 和 过滤枚举
self:AddTriggerEvent(TriggerEvent.MinitimerChange, eventfunc, timerid) -- 自主修改 eventfunc 和 计时器ID
self:AddTriggerEvent(TriggerEvent.PlayerGunAction, eventfunc, GunState.Entry,GunAction.Equip) -- 自主修改 eventfunc 和 过滤枚举
self:AddTriggerEvent(TriggerEvent.MobAttrStateChange, eventfunc, Ability.Walking) -- 自主修改 eventfunc 和 过滤枚举
self:AddTriggerEvent(TriggerEvent.PlayerAttrStateChange, eventfunc, Ability.Walking) -- 自主修改 eventfunc 和 过滤枚举
self:AddTriggerEvent(TriggerEvent.PlayerMotionStateChange, eventfunc, RoleMotion.Walk) -- 自主修改 eventfunc 和 过滤枚举
self:AddTriggerEvent(TriggerEvent.PlayerMotionStateChangeEnd, eventfunc, RoleMotion.Walk) -- 自主修改 eventfunc 和 过滤枚举
self:AddTriggerEvent(TriggerEvent.PlayerInputKeyDown, eventfunc, KeyCode.Q) -- 自主修改 eventfunc 和 过滤枚举
self:AddTriggerEvent(TriggerEvent.PlayerInputKeyOnPress, eventfunc, KeyCode.Q) -- 自主修改 eventfunc 和 过滤枚举
self:AddTriggerEvent(TriggerEvent.PlayerInputKeyUp, eventfunc, KeyCode.Q) -- 自主修改 eventfunc 和 过滤枚举
self:AddTriggerEvent(TriggerEvent.PlayerInputKeyClick, eventfunc, KeyCode.Q) -- 自主修改 eventfunc 和 过滤枚举
self:AddTriggerEvent(TriggerEvent.UIShow, eventfunc, uiid) -- 自主修改 eventfunc 和 uiid(界面ID)
self:AddTriggerEvent(TriggerEvent.UIHide, eventfunc, uiid) -- 自主修改 eventfunc 和 uiid(界面ID)
self:AddTriggerEvent(TriggerEvent.UIButtonClick, eventfunc, elementid) -- 自主修改 eventfunc 和 elementid(元件ID)
self:AddTriggerEvent(TriggerEvent.UIButtonTouchBegin, eventfunc, elementid) -- 自主修改 eventfunc 和 elementid(元件ID)
self:AddTriggerEvent(TriggerEvent.UIButtonTouchEnd, eventfunc, elementid) -- 自主修改 eventfunc 和 elementid(元件ID)
self:AddTriggerEvent(TriggerEvent.UIButtonLongPress, eventfunc, elementid) -- 自主修改 eventfunc 和 elementid(元件ID)
self:AddTriggerEvent(TriggerEvent.UILostFocus, eventfunc, elementid) -- 自主修改 eventfunc 和 elementid(元件ID)
self:AddTriggerEvent(TriggerEvent.UISpineComplete, eventfunc, elementid) -- 自主修改 eventfunc 和 elementid(元件ID)
self:AddTriggerEvent(TriggerEvent.UIGLoader3DTouchBegin, eventfunc, elementid) -- 自主修改 eventfunc 和 elementid(元件ID)
self:AddTriggerEvent(TriggerEvent.UIGLoader3DTouchEnd, eventfunc, elementid) -- 自主修改 eventfunc 和 elementid(元件ID)
self:AddTriggerEvent(TriggerEvent.UIGLoader3DTouchClick, eventfunc, elementid) -- 自主修改 eventfunc 和 elementid(元件ID)
self:AddTriggerEvent(TriggerEvent.UIGLoader3DLongPress, eventfunc, elementid) -- 自主修改 eventfunc 和 elementid(元件ID)
self:AddTriggerEvent(TriggerEvent.UISpineComplete, eventfunc, elementid) -- 自主修改 eventfunc 和 elementid(元件ID)
self:AddTriggerEvent(TriggerEvent.UIScrollPaneTouchBegin, eventfunc, elementid) -- 自主修改 eventfunc 和 elementid(元件ID)
self:AddTriggerEvent(TriggerEvent.UIScrollPaneTouchEnd, eventfunc, elementid) -- 自主修改 eventfunc 和 elementid(元件ID)
self:AddTriggerEvent(TriggerEvent.UIScrollPaneScrollEnd, eventfunc, elementid) -- 自主修改 eventfunc 和 elementid(元件ID)
简单示例:
--这个脚本的作用是当玩家点击草块时,把草块变成钛合金
-- 官方定义的函数,不能修改变动
local Script = {}
-- 组件启动时调用
function Script:OnStart()
-- 玩家点击方块事件
self:AddTriggerEvent(TriggerEvent.PlayerClickBlock, self.Player_Click)
--AddTriggerEvent(TriggerEvent.PlayerClickBlock是官方提供的事件监听,可以在wiki中查看更多的事件
--self.Player_Click 是自定义的一个函数名,可以改成其他你喜欢的
end
-- 定义事件触发时的动作
function Script:Player_Click(event)
local param = event.CurEventParam
-- 玩家点击方块时,判断点的是否是草块
if event.blockid == 100 then
local success = Block:ReplaceBlock(452, event.x, event.y, event.z)
-- Block:ReplaceBlock是官方提供的放置方块方法,可以在wiki中查看更多的方法
-- local success 用来接收Block:ReplaceBlock运行后的结果,可以用来做是否成功放置的判断
end
end
-- 官方定义的函数,不能修改变动
return Script
游戏
序号 事件名 事件名描述
0 TriggerEvent.GroupWeatherChanged 当地形组的天气改变
1 TriggerEvent.GameStart 游戏创建
2 TriggerEvent.GameHour 游戏时间
3 TriggerEvent.MinitimerChange 任意计时器改变
4 TriggerEvent.CraftEnd 配方合成完毕
5 TriggerEvent.TimelineStart 当 剧情动画 开始
6 TriggerEvent.TimelineStop 当 剧情动画 结束
7 TriggerEvent.FurnaceBegin 当 熔炼 开始
8 TriggerEvent.FurnaceEnd 当 熔炼 结束
triggerevent-groupweatherchanged
事件描述: 当地形组的天气改变
事件名: TriggerEvent.GroupWeatherChanged
事件传参:
参数名 说明
weathergroupid 事件中的天气组
triggerevent-gamestart
事件描述: 游戏创建
事件名: TriggerEvent.GameStart
事件传参: 无
triggerevent-gamehour
事件描述: 游戏时间
事件名: TriggerEvent.GameHour
事件传参:
参数名 说明
hour 小时
triggerevent-minitimerchange
事件描述: 任意计时器改变
事件名: TriggerEvent.MinitimerChange
事件传参:
参数名 说明
timerid 计时器ID
timername 计时器名称
timertime 计时器时间
triggerevent-craftend
事件描述: 配方合成完毕
事件名: TriggerEvent.CraftEnd
事件传参:
参数名 说明
craftid 事件中的配方ID
itemid 事件中的道具类型
itemnum 事件中的道具数量
actorid 触发事件的生物类型(玩家对象没有此参数)
eventobjid 触发事件的对象(第一个放入道具的对象)
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-timelinestart
事件描述: 当 剧情动画 开始
事件名: TriggerEvent.TimelineStart
事件传参:
参数名 说明
customdata 动画ID
defaultvalue 开始时间
second 结束时间
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-timelinestop
事件描述: 当 剧情动画 结束
事件名: TriggerEvent.TimelineStop
事件传参:
参数名 说明
customdata 动画ID
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-furnacebegin
事件描述: 当 熔炼 开始
事件名: TriggerEvent.FurnaceBegin
事件传参:
参数名 说明
furanceid 事件中的熔炼ID
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
triggerevent-furnaceend
事件描述: 当 熔炼 结束
事件名: TriggerEvent.FurnaceEnd
事件传参:
参数名 说明
furanceid 事件中的熔炼ID
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
玩家
序号 事件名 事件名描述
0 TriggerEvent.PlayerRevive 玩家复活
1 TriggerEvent.PlayerMoveOneBlockSize 玩家移动
2 TriggerEvent.PlayerSelectShortcut 玩家选中快捷栏
3 TriggerEvent.PlayerInvateFriend 玩家邀请好友
4 TriggerEvent.GameAnyPlayerEnterGame 当 玩家 进入游戏
5 TriggerEvent.GameAnyPlayerLeaveGame 当 玩家 离开游戏
6 TriggerEvent.GameAnyPlayerVictory 当 玩家 游戏胜利
7 TriggerEvent.GameAnyPlayerDefeat 当 玩家 游戏失败
8 TriggerEvent.PlayerClickBlock 当 玩家 点击任意方块
9 TriggerEvent.PlayerClickPlayer 当 玩家 点击任意玩家
10 TriggerEvent.PlayerClickMob 当 玩家 点击任意生物
11 TriggerEvent.PlayerClickProjectile 当 玩家 点击任意投掷物
12 TriggerEvent.PlayerClickDropItem 当 玩家 点击任意掉落物
13 TriggerEvent.PlayerClickEntity 当 玩家 点击任意实体
14 TriggerEvent.PlayerInputKeyClick 当 任意玩家 点击 按键
15 TriggerEvent.PlayerInputKeyDown 当 任意玩家 按下 按键
16 TriggerEvent.PlayerInputKeyUp 当 任意玩家 抬起 按键
17 TriggerEvent.PlayerInputKeyOnPress 当 任意玩家 长按 按键
18 TriggerEvent.PlayerNewInputContent 玩家发送聊天信息
19 TriggerEvent.PlayerGunAction 当玩家持枪状态改变时
20 TriggerEvent.PlayerMotionStateChange 当 玩家进入运动状态
21 TriggerEvent.PlayerMotionStateChangeEnd 当 玩家离开运动状态
22 TriggerEvent.PlayerAddItem 当 玩家 获得道具
23 TriggerEvent.PlayerUseItem 当 玩家 开始使用道具
24 TriggerEvent.PlayerChargeItemBegin 当 玩家 开始蓄力道具
25 TriggerEvent.PlayerConsumeItem 当 玩家 消耗道具
26 TriggerEvent.PlayerPickUpItem 当 玩家 拾取道具
27 TriggerEvent.PlayerDiscardItem 当 玩家 丢弃道具
28 TriggerEvent.PlayerChargeItemEnd 当 玩家 结束蓄力道具
29 TriggerEvent.PlayerShortcutChange 当 玩家的 快捷栏 发生改变
30 TriggerEvent.PlayerShortcutAddItem 当 玩家的 快捷栏 放入道具
31 TriggerEvent.PlayerShortcutRemItem 当 玩家的 快捷栏 取出道具
32 TriggerEvent.PlayerBackPackChange 当 玩家的 背包栏 发生改变
33 TriggerEvent.PlayerBackPackAddItem 当 玩家的 背包栏 放入道具
34 TriggerEvent.PlayerBackPackRemItem 当 玩家的 背包栏 取出道具
35 TriggerEvent.PlayerEquipChange 当 玩家的 装备栏 发生改变
36 TriggerEvent.PlayerEquipAddItem 当 玩家的 装备栏 放入道具
37 TriggerEvent.PlayerEquipRemItem 当 玩家的 装备栏 取出道具
38 TriggerEvent.PlayerEquipOn 当 玩家 穿上 装备
39 TriggerEvent.PlayerEquipOff 当 玩家 脱下 装备
40 TriggerEvent.PlayerOpenInnerView 当 任意玩家 打开 游戏 内部页面 界面
41 TriggerEvent.PlayerCloseInnerView 当 任意玩家 关闭 游戏 内部页面 界面
triggerevent-playerrevive
事件描述: 玩家复活
事件名: TriggerEvent.PlayerRevive
事件传参:
参数名 说明
defaultvalue 复活方式
eventobjid 触发事件的玩家
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playermoveoneblocksize
事件描述: 玩家移动
事件名: TriggerEvent.PlayerMoveOneBlockSize
事件传参:
参数名 说明
eventobjid 触发事件的玩家
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playerselectshortcut
事件描述: 玩家选中快捷栏
事件名: TriggerEvent.PlayerSelectShortcut
事件传参:
参数名 说明
eventobjid 触发事件的玩家
itemid 事件中的道具类型
itemnum 事件中的道具数量
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playerinvatefriend
事件描述: 玩家邀请好友
事件名: TriggerEvent.PlayerInvateFriend
事件传参:
参数名 说明
eventobjid 触发事件的玩家
x,y,z 事件中的位置
toobjid 事件中的目标对象
eventworldid 事件中的星球
triggerevent-gameanyplayerentergame
事件描述: 当 玩家 进入游戏
事件名: TriggerEvent.GameAnyPlayerEnterGame
事件传参:
参数名 说明
eventobjid 触发事件的玩家
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-gameanyplayerleavegame
事件描述: 当 玩家 离开游戏
事件名: TriggerEvent.GameAnyPlayerLeaveGame
事件传参:
参数名 说明
eventobjid 触发事件的玩家
eventworldid 事件中的星球
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
triggerevent-gameanyplayervictory
事件描述: 当 玩家 游戏胜利
事件名: TriggerEvent.GameAnyPlayerVictory
事件传参:
参数名 说明
eventobjid 触发事件的玩家
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-gameanyplayerdefeat
事件描述: 当 玩家 游戏失败
事件名: TriggerEvent.GameAnyPlayerDefeat
事件传参:
参数名 说明
eventobjid 触发事件的玩家
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playerclickblock
事件描述: 当 玩家 点击任意方块
事件名: TriggerEvent.PlayerClickBlock
事件传参:
参数名 说明
blockid 事件中的方块类型
eventobjid 触发事件的玩家
eventworldid 事件中的星球
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
triggerevent-playerclickplayer
事件描述: 当 玩家 点击任意玩家
事件名: TriggerEvent.PlayerClickPlayer
事件传参:
参数名 说明
eventobjid 触发事件的玩家
toobjid 事件中的目标对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playerclickmob
事件描述: 当 玩家 点击任意生物
事件名: TriggerEvent.PlayerClickMob
事件传参:
参数名 说明
eventobjid 触发事件的玩家
toobjid 事件中的目标生物
targetactorid 事件中的目标生物类型
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playerclickprojectile
事件描述: 当 玩家 点击任意投掷物
事件名: TriggerEvent.PlayerClickProjectile
事件传参:
参数名 说明
eventobjid 触发事件的玩家
toobjid 事件中的目标投掷物
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playerclickdropitem
事件描述: 当 玩家 点击任意掉落物
事件名: TriggerEvent.PlayerClickDropItem
事件传参:
参数名 说明
eventobjid 触发事件的玩家
toobjid 事件中的目标掉落物
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playerclickentity
事件描述: 当 玩家 点击任意实体
事件名: TriggerEvent.PlayerClickEntity
事件传参:
参数名 说明
eventobjid 触发事件的玩家
toobjid 事件中的目标实体
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playerinputkeyclick
事件描述: 当 任意玩家 点击 按键
事件名: TriggerEvent.PlayerInputKeyClick
事件传参:
参数名 说明
vkey 事件中的按键
eventobjid 触发事件的玩家
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playerinputkeydown
事件描述: 当 任意玩家 按下 按键
事件名: TriggerEvent.PlayerInputKeyDown
事件传参:
参数名 说明
vkey 事件中的按键
eventobjid 触发事件的玩家
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playerinputkeyup
事件描述: 当 任意玩家 抬起 按键
事件名: TriggerEvent.PlayerInputKeyUp
事件传参:
参数名 说明
vkey 事件中的按键
eventobjid 触发事件的玩家
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playerinputkeyonpress
事件描述: 当 任意玩家 长按 按键
事件名: TriggerEvent.PlayerInputKeyOnPress
事件传参:
参数名 说明
vkey 事件中的按键
eventobjid 触发事件的玩家
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playernewinputcontent
事件描述: 玩家发送聊天信息
事件名: TriggerEvent.PlayerNewInputContent
事件传参:
参数名 说明
content 事件中的字符串
eventobjid 触发事件的玩家
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playergunaction
事件描述: 当玩家持枪状态改变时
事件名: TriggerEvent.PlayerGunAction
事件传参:
参数名 说明
gunAction 枪械动作
gunState 枪械状态
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventobjid 触发事件的玩家
eventworldid 事件中的星球
triggerevent-playermotionstatechange
事件描述: 当 玩家进入运动状态
事件名: TriggerEvent.PlayerMotionStateChange
事件传参:
参数名 说明
playermotion 玩家行为动作
eventobjid 触发事件的玩家
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playermotionstatechangeend
事件描述: 当 玩家离开运动状态
事件名: TriggerEvent.PlayerMotionStateChangeEnd
事件传参:
参数名 说明
playermotion 玩家行为动作
eventobjid 触发事件的玩家
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playeradditem
事件描述: 当 玩家 获得道具
事件名: TriggerEvent.PlayerAddItem
事件传参:
参数名 说明
eventobjid 触发事件的玩家
itemid 事件中的道具类型
itemnum 事件中的道具数量
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playeruseitem
事件描述: 当 玩家 开始使用道具
事件名: TriggerEvent.PlayerUseItem
事件传参:
参数名 说明
eventobjid 触发事件的玩家
itemid 事件中的道具类型
itemnum 事件中的道具数量
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playerchargeitembegin
事件描述: 当 玩家 开始蓄力道具
事件名: TriggerEvent.PlayerChargeItemBegin
事件传参:
参数名 说明
defaultvalue 进度值
eventobjid 触发事件的玩家
itemid 事件中的道具类型
itemnum 事件中的道具数量
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playerconsumeitem
事件描述: 当 玩家 消耗道具
事件名: TriggerEvent.PlayerConsumeItem
事件传参:
参数名 说明
eventobjid 触发事件的玩家
itemid 事件中的道具类型
itemnum 事件中的道具数量
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playerpickupitem
事件描述: 当 玩家 拾取道具
事件名: TriggerEvent.PlayerPickUpItem
事件传参:
参数名 说明
eventobjid 触发事件的玩家
itemid 事件中的道具类型
itemnum 事件中的道具数量
toobjid 事件中的目标对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playerdiscarditem
事件描述: 当 玩家 丢弃道具
事件名: TriggerEvent.PlayerDiscardItem
事件传参:
参数名 说明
eventobjid 触发事件的玩家
itemid 事件中的道具类型
itemnum 事件中的道具数量
toobjid 事件中的目标对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playerchargeitemend
事件描述: 当 玩家 结束蓄力道具
事件名: TriggerEvent.PlayerChargeItemEnd
事件传参:
参数名 说明
defaultvalue 进度值
eventobjid 触发事件的玩家
itemid 事件中的道具类型
itemnum 事件中的道具数量
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playershortcutchange
事件描述: 当 玩家的 快捷栏 发生改变
事件名: TriggerEvent.PlayerShortcutChange
事件传参:
参数名 说明
eventobjid 触发事件的玩家
itemid 事件中的道具类型
itemix 事件中的格子ID
itemnum 事件中的道具数量(小于0是减少)
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playershortcutadditem
事件描述: 当 玩家的 快捷栏 放入道具
事件名: TriggerEvent.PlayerShortcutAddItem
事件传参:
参数名 说明
eventobjid 触发事件的玩家
itemid 事件中的道具类型
itemix 事件中的格子ID
itemnum 事件中的道具数量
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playershortcutremitem
事件描述: 当 玩家的 快捷栏 取出道具
事件名: TriggerEvent.PlayerShortcutRemItem
事件传参:
参数名 说明
eventobjid 触发事件的玩家
itemid 事件中的道具类型
itemix 事件中的格子ID
itemnum 事件中的道具数量
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playerbackpackchange
事件描述: 当 玩家的 背包栏 发生改变
事件名: TriggerEvent.PlayerBackPackChange
事件传参:
参数名 说明
eventobjid 触发事件的玩家
itemid 事件中的道具类型
itemix 事件中的格子ID
itemnum 事件中的道具数量
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playerbackpackadditem
事件描述: 当 玩家的 背包栏 放入道具
事件名: TriggerEvent.PlayerBackPackAddItem
事件传参:
参数名 说明
eventobjid 触发事件的玩家
itemid 事件中的道具类型
itemix 事件中的格子ID
itemnum 事件中的道具数量
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playerbackpackremitem
事件描述: 当 玩家的 背包栏 取出道具
事件名: TriggerEvent.PlayerBackPackRemItem
事件传参:
参数名 说明
eventobjid 触发事件的玩家
itemid 事件中的道具类型
itemix 事件中的格子ID
itemnum 事件中的道具数量
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playerequipchange
事件描述: 当 玩家的 装备栏 发生改变
事件名: TriggerEvent.PlayerEquipChange
事件传参:
参数名 说明
eventobjid 触发事件的玩家
itemid 事件中的道具类型
itemix 事件中的格子ID
itemnum 事件中的道具数量
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playerequipadditem
事件描述: 当 玩家的 装备栏 放入道具
事件名: TriggerEvent.PlayerEquipAddItem
事件传参:
参数名 说明
eventobjid 触发事件的玩家
itemid 事件中的道具类型
itemix 事件中的格子ID
itemnum 事件中的道具数量
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playerequipremitem
事件描述: 当 玩家的 装备栏 取出道具
事件名: TriggerEvent.PlayerEquipRemItem
事件传参:
参数名 说明
eventobjid 触发事件的玩家
itemid 事件中的道具类型
itemix 事件中的格子ID
itemnum 事件中的道具数量
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playerequipon
事件描述: 当 玩家 穿上 装备
事件名: TriggerEvent.PlayerEquipOn
事件传参:
参数名 说明
eventobjid 触发事件的玩家
itemid 事件中的道具类型
itemix 事件中的格子ID
itemnum 事件中的道具数量
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playerequipoff
事件描述: 当 玩家 脱下 装备
事件名: TriggerEvent.PlayerEquipOff
事件传参:
参数名 说明
eventobjid 触发事件的玩家
itemid 事件中的道具类型
itemix 事件中的格子ID
itemnum 事件中的道具数量
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playeropeninnerview
事件描述: 当 任意玩家 打开 游戏 内部页面 界面
事件名: TriggerEvent.PlayerOpenInnerView
事件传参:
参数名 说明
CustomUI 事件中的界面(InnerPopUpview枚举值)
eventobjid 触发事件的玩家
x,y,z 事件中的位置
eventworldid 事件中的星球
triggerevent-playercloseinnerview
事件描述: 当 任意玩家 关闭 游戏 内部页面 界面
事件名: TriggerEvent.PlayerCloseInnerView
事件传参:
参数名 说明
CustomUI 事件中的界面(InnerPopUpview枚举值)
eventobjid 触发事件的玩家
x,y,z 事件中的位置
eventworldid 事件中的星球
方块
序号 事件名 事件名描述
0 TriggerEvent.BlockAdd 方块被创建
1 TriggerEvent.BlockRemove 当 方块 被被破坏
2 TriggerEvent.BlockDigBegin 当 方块 被被挖掘
3 TriggerEvent.BlockDigEnd 当 方块 被被挖掘完毕
4 TriggerEvent.BlockDigCancel 当 方块 被被挖掘中断
5 TriggerEvent.BlockTrigger 当 方块 开关状态 发生改变
6 TriggerEvent.BlockChangeColor 当 方块 颜色 发生改变
8|TriggerEvent.BlockContainerChange|当 储存容器 内 发生改变 9|TriggerEvent.BlockContainerPutIn|当 储存容器 内 放入道具 10|TriggerEvent.BlockContainerTakeOut|当 储存容器 内 取出道具
triggerevent-blockadd
事件描述: 方块被创建
事件名: TriggerEvent.BlockAdd
事件传参:
参数名 说明
blockid 事件中的方块类型
eventworldid 事件中的星球
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
defaultvalue 方块data数据
triggerevent-blockremove
事件描述: 当 方块 被被破坏
事件名: TriggerEvent.BlockRemove
事件传参:
参数名 说明
blockid 事件中的方块类型
eventworldid 事件中的星球
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
defaultvalue 方块data数据
triggerevent-blockdigbegin
事件描述: 当 方块 被被挖掘
事件名: TriggerEvent.BlockDigBegin
事件传参:
参数名 说明
blockid 事件中的方块类型
eventobjid 触发事件的对象
eventworldid 事件中的星球
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
actorid 触发事件的生物类型(玩家没有此参数)
triggerevent-blockdigend
事件描述: 当 方块 被被挖掘完毕
事件名: TriggerEvent.BlockDigEnd
事件传参:
参数名 说明
blockid 事件中的方块类型
eventobjid 触发事件的对象
eventworldid 事件中的星球
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
actorid 触发事件的生物类型(玩家没有此参数)
triggerevent-blockdigcancel
事件描述: 当 方块 被被挖掘中断
事件名: TriggerEvent.BlockDigCancel
事件传参:
参数名 说明
blockid 事件中的方块类型
eventobjid 触发事件的对象
eventworldid 事件中的星球
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
actorid 触发事件的生物类型(玩家没有此参数)
triggerevent-blocktrigger
事件描述: 当 方块 开关状态 发生改变
事件名: TriggerEvent.BlockTrigger
事件传参:
参数名 说明
blockid 事件中的方块类型
eventobjid 触发事件的对象
eventworldid 事件中的星球
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
triggerevent-blockchangecolor
事件描述: 当 方块 颜色 发生改变
事件名: TriggerEvent.BlockChangeColor
事件传参:
参数名 说明
actorid 触发事件的生物类型(玩家没有此参数)
blockid 事件中的方块类型
eventobjid 触发事件的对象
eventworldid 事件中的星球
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
triggerevent-blockcontainerchange
事件描述: 当 储存容器 内 发生改变
事件名: TriggerEvent.BlockContainerChange
事件传参:
参数名 说明
blockid 事件中的方块类型
eventworldid 事件中的星球
itemid 事件中的道具类型
itemnum 事件中的道具数量
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
triggerevent-blockcontainerputin
事件描述: 当 储存容器 内 放入道具
事件名: TriggerEvent.BlockContainerPutIn
事件传参:
参数名 说明
blockid 事件中的方块类型
itemid 事件中的道具类型
itemnum 事件中的道具数量
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-blockcontainertakeout
事件描述: 当 储存容器 内 取出道具
事件名: TriggerEvent.BlockContainerTakeOut
事件传参:
参数名 说明
blockid 事件中的方块类型
itemid 事件中的道具类型
itemnum 事件中的道具数量
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
界面
序号 事件名 事件名描述
0 TriggerEvent.UILostFocus 玩家在界面输入字符串
1 TriggerEvent.UISpineComplete 当前界面的 元件 动画装载器播放完毕
2 TriggerEvent.UIShow 当前界面被打开
3 TriggerEvent.UIHide 当前界面被关闭
4 TriggerEvent.UIButtonClick 当前界面的元件被点击
5 TriggerEvent.UIButtonTouchBegin 当前界面的元件被按下
6 TriggerEvent.UIButtonTouchEnd 当前界面的元件被抬起
7 TriggerEvent.UIButtonLongPress 当前界面的元件被长按
8 TriggerEvent.UIGLoader3DTouchClick 当前界面的元件被点击
9 TriggerEvent.UIGLoader3DTouchBegin 当前界面的元件被按下
10 TriggerEvent.UIGLoader3DTouchEnd 当前界面的元件被抬起
11 TriggerEvent.UIGLoader3DLongPress 当前界面的元件被长按
12 TriggerEvent.UIScrollPaneTouchBegin 当前界面的触摸滑动开始%2
13 TriggerEvent.UIScrollPaneTouchEnd 当前界面的触摸滑动结束%2
14 TriggerEvent.UIScrollPaneScrollEnd 当前界面的惯性滑动结束%2
triggerevent-uilostfocus
事件描述: 玩家在界面输入字符串
事件名: TriggerEvent.UILostFocus
事件传参:
参数名 说明
CustomUI 事件中的界面
content 事件中的字符串
uielement 事件中的元件
eventobjid 触发事件的玩家
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-uispinecomplete
事件描述: 当前界面的 元件 动画装载器播放完毕
事件名: TriggerEvent.UISpineComplete
事件传参:
参数名 说明
CustomUI 事件中的界面
uielement 事件中的元件
eventobjid 触发事件的玩家
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-uishow
事件描述: 当前界面被打开
事件名: TriggerEvent.UIShow
事件传参:
参数名 说明
CustomUI 事件中的界面
uielement 事件中的元件
eventobjid 触发事件的玩家
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-uihide
事件描述: 当前界面被关闭
事件名: TriggerEvent.UIHide
事件传参:
参数名 说明
CustomUI 事件中的界面
uielement 事件中的元件
eventobjid 触发事件的玩家
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-uibuttonclick
事件描述: 当前界面的元件被点击
事件名: TriggerEvent.UIButtonClick
事件传参:
参数名 说明
CustomUI 事件中的界面
content 事件中的字符串
customdata 自定义字符串数据
uielement 事件中的元件
eventobjid 触发事件的玩家
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-uibuttontouchbegin
事件描述: 当前界面的元件被按下
事件名: TriggerEvent.UIButtonTouchBegin
事件传参:
参数名 说明
CustomUI 事件中的界面
uielement 事件中的元件
eventobjid 触发事件的玩家
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-uibuttontouchend
事件描述: 当前界面的元件被抬起
事件名: TriggerEvent.UIButtonTouchEnd
事件传参:
参数名 说明
CustomUI 事件中的界面
uielement 事件中的元件
eventobjid 触发事件的玩家
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-uibuttonlongpress
事件描述: 当前界面的元件被长按
事件名: TriggerEvent.UIButtonLongPress
事件传参:
参数名 说明
CustomUI 事件中的界面
content 事件中的字符串
uielement 事件中的元件
eventobjid 触发事件的玩家
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-uigloader3dtouchclick
事件描述: 当前界面的元件被点击
事件名: TriggerEvent.UIGLoader3DTouchClick
事件传参:
参数名 说明
CustomUI 事件中的界面
content 事件中的字符串
uielement 事件中的元件
eventobjid 触发事件的玩家
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-uigloader3dtouchbegin
事件描述: 当前界面的元件被按下
事件名: TriggerEvent.UIGLoader3DTouchBegin
事件传参:
参数名 说明
CustomUI 事件中的界面
uielement 事件中的元件
eventobjid 触发事件的玩家
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-uigloader3dtouchend
事件描述: 当前界面的元件被抬起
事件名: TriggerEvent.UIGLoader3DTouchEnd
事件传参:
参数名 说明
CustomUI 事件中的界面
uielement 事件中的元件
eventobjid 触发事件的玩家
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-uigloader3dlongpress
事件描述: 当前界面的元件被长按
事件名: TriggerEvent.UIGLoader3DLongPress
事件传参:
参数名 说明
CustomUI 事件中的界面
uielement 事件中的元件
eventobjid 触发事件的玩家
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-uiscrollpanetouchbegin
事件描述: 当前界面的触摸滑动开始%2
事件名: TriggerEvent.UIScrollPaneTouchBegin
事件传参:
参数名 说明
CustomUI 事件中的界面
uielement 事件中的元件
eventobjid 触发事件的玩家
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-uiscrollpanetouchend
事件描述: 当前界面的触摸滑动结束%2
事件名: TriggerEvent.UIScrollPaneTouchEnd
事件传参:
参数名 说明
CustomUI 事件中的界面
uielement 事件中的元件
eventobjid 触发事件的玩家
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-uiscrollpanescrollend
事件描述: 当前界面的惯性滑动结束%2
事件名: TriggerEvent.UIScrollPaneScrollEnd
事件传参:
参数名 说明
CustomUI 事件中的界面
uielement 事件中的元件
eventobjid 触发事件的玩家
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
特效
序号 事件名 事件名描述
0 TriggerEvent.ParticlePosOnCreate 当 特效 创建在任意位置
1 TriggerEvent.ParticleObjectOnCreate 当 特效 创建在任意对象
2 TriggerEvent.ParticlePlayerOnCreate 当 特效 创建在任意玩家
3 TriggerEvent.ParticleMobOnCreate 当 特效 创建在任意生物
4 TriggerEvent.ParticleProjectileOnCreate 当 特效 创建在任意投掷物
5 TriggerEvent.ParticleItemOnCreate 当 特效 创建在任意掉落物
6 TriggerEvent.ParticleEntityOnCreate 当 特效 创建在任意实体
triggerevent-particleposoncreate
事件描述: 当 特效 创建在任意位置
事件名: TriggerEvent.ParticlePosOnCreate
事件传参:
参数名 说明
effectid 事件中的特效
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-particleobjectoncreate
事件描述: 当 特效 创建在实体
事件名: TriggerEvent.ParticleObjectOnCreate
事件传参:
参数名 说明
effectid 事件中的特效
eventobjid 触发事件的实体
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-particleplayeroncreate
事件描述: 当 特效 创建在任意玩家
事件名: TriggerEvent.ParticlePlayerOnCreate
事件传参:
参数名 说明
effectid 事件中的特效
eventobjid 触发事件的玩家
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-particlemoboncreate
事件描述: 当 特效 创建在任意生物
事件名: TriggerEvent.ParticleMobOnCreate
事件传参:
参数名 说明
effectid 事件中的特效
eventobjid 触发事件的生物
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-particleprojectileoncreate
事件描述: 当 特效 创建在任意投掷物
事件名: TriggerEvent.ParticleProjectileOnCreate
事件传参:
参数名 说明
effectid 事件中的特效
eventobjid 触发事件的投掷物
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-particleitemoncreate
事件描述: 当 特效 创建在任意掉落物
事件名: TriggerEvent.ParticleItemOnCreate
事件传参:
参数名 说明
effectid 事件中的特效
eventobjid 触发事件的掉落物
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-particleentityoncreate
事件描述: 当 特效 创建在任意实体
事件名: TriggerEvent.ParticleEntityOnCreate
事件传参:
参数名 说明
effectid 事件中的特效
eventobjid 触发事件的实体
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
开发者
序号 事件名 事件名描述
0 TriggerEvent.DeveloperBuyItem 任意玩家购买或提取开发者商店道具
triggerevent-developerbuyitem
事件描述: 任意玩家购买或提取开发者商店道具
事件名: TriggerEvent.DeveloperBuyItem
事件传参:
参数名 说明
itemid 事件中的道具类型
itemnum 事件中的道具数量
customdata 道具预制id(不是则没有)
eventobjid 触发事件的对象
x,y,z 事件中的位置
eventworldid 事件中的星球
对象
序号 事件名 事件名描述
0 TriggerEvent.PlayerCollideToPlayer 当 任意玩家和任意玩家 碰撞开始
1 TriggerEvent.PlayerCollideToMob 当 任意玩家和任意生物 碰撞开始
2 TriggerEvent.PlayerCollideToMissile 当 任意玩家和任意投掷物 碰撞开始
3 TriggerEvent.PlayerCollideToDropItem 当 任意玩家和任意掉落物 碰撞开始
4 TriggerEvent.PlayerCollideToEntity 当 任意玩家和任意实体 碰撞开始
5 TriggerEvent.PlayerCollideToAreaObj 当 任意玩家和任意区域 碰撞开始
6 TriggerEvent.MobCollideToPlayer 当 任意生物和任意玩家 碰撞开始
7 TriggerEvent.MobCollideToMob 当 任意生物和任意生物 碰撞开始
8 TriggerEvent.MobCollideToMissile 当 任意生物和任意投掷物 碰撞开始
9 TriggerEvent.MobCollideToDropItem 当 任意生物和任意掉落物 碰撞开始
10 TriggerEvent.MobCollideToEntity 当 任意生物和任意实体 碰撞开始
11 TriggerEvent.MobCollideToAreaObj 当 任意生物和任意区域 碰撞开始
12 TriggerEvent.MissileCollideToPlayer 当 任意投掷物和任意玩家 碰撞开始
13 TriggerEvent.MissileCollideToMob 当 任意投掷物和任意生物 碰撞开始
14 TriggerEvent.MissileCollideToMissile 当 任意投掷物和任意投掷物 碰撞开始
15 TriggerEvent.MissileCollideToDropItem 当 任意投掷物和任意掉落物 碰撞开始
16 TriggerEvent.MissileCollideToEntity 当 任意投掷物和任意实体 碰撞开始
17 TriggerEvent.MissileCollideToAreaObj 当 任意投掷物和任意区域 碰撞开始
18 TriggerEvent.DropItemCollideToPlayer 当 任意掉落物和任意玩家 碰撞开始
19 TriggerEvent.DropItemCollideToMob 当 任意掉落物和任意生物 碰撞开始
20 TriggerEvent.DropItemCollideToMissile 当 任意掉落物和任意投掷物 碰撞开始
21 TriggerEvent.DropItemCollideToDropItem 当 任意掉落物和任意掉落物 碰撞开始
22 TriggerEvent.DropItemCollideToEntity 当 任意掉落物和任意实体 碰撞开始
23 TriggerEvent.DropItemCollideToAreaObj 当 任意掉落物和任意区域 碰撞开始
24 TriggerEvent.EntityCollideToPlayer 当 任意实体和任意玩家 碰撞开始
25 TriggerEvent.EntityCollideToMob 当 任意实体和任意生物 碰撞开始
26 TriggerEvent.EntityCollideToMissile 当 任意实体和任意投掷物 碰撞开始
27 TriggerEvent.EntityCollideToDropItem 当 任意实体和任意掉落物 碰撞开始
28 TriggerEvent.EntityCollideToEntity 当 任意实体和任意实体 碰撞开始
29 TriggerEvent.EntityCollideToAreaObj 当 任意实体和任意区域 碰撞开始
30 TriggerEvent.AreaObjCollideToPlayer 当 任意区域和任意玩家 碰撞开始
31 TriggerEvent.AreaObjCollideToMob 当 任意区域和任意生物 碰撞开始
32 TriggerEvent.AreaObjCollideToMissile 当 任意区域和任意投掷物 碰撞开始
33 TriggerEvent.AreaObjCollideToDropItem 当 任意区域和任意掉落物 碰撞开始
34 TriggerEvent.AreaObjCollideToEntity 当 任意区域和任意实体 碰撞开始
35 TriggerEvent.AreaObjCollideToAreaObj 当 任意区域和任意区域 碰撞开始
36 TriggerEvent.PlayerAreaIn 当 任意玩家 进入 区域
37 TriggerEvent.PlayerAreaOut 当 任意玩家 离开 区域
38 TriggerEvent.MobAreaIn 当 任意生物 进入 区域
39 TriggerEvent.MobAreaOut 当 任意生物 离开 区域
40 TriggerEvent.MissileAreaIn 当 任意投掷物 进入 区域
41 TriggerEvent.MissileAreaOut 当 任意投掷物 离开 区域
42 TriggerEvent.DropItemAreaIn 当 任意掉落物 进入 区域
43 TriggerEvent.DropItemAreaOut 当 任意掉落物 离开 区域
44 TriggerEvent.EntityAreaIn 当 任意实体 进入 区域
45 TriggerEvent.EntityAreaOut 当 任意实体 离开 区域
46 TriggerEvent.AreaObjAreaIn 当 任意区域 进入 区域
47 TriggerEvent.AreaObjAreaOut 当 任意区域 离开 区域
48 TriggerEvent.MobCreate 当 任意生物 被创建
49 TriggerEvent.EntityCreate 当 任意实体 被创建
50 TriggerEvent.AreaObjCreate 当 任意区域 被创建
triggerevent-playercollidetoplayer
事件描述: 当 任意玩家和任意玩家 碰撞开始
事件名: TriggerEvent.PlayerCollideToPlayer
事件传参:
参数名 说明
EventObjType 事件中的对象类型
ToolObjType 事件中的目标对象类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playercollidetomob
事件描述: 当 任意玩家和任意生物 碰撞开始
事件名: TriggerEvent.PlayerCollideToMob
事件传参:
参数名 说明
EventObjType 事件中的对象类型
ToolObjType 事件中的目标对象类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playercollidetomissile
事件描述: 当 任意玩家和任意投掷物 碰撞开始
事件名: TriggerEvent.PlayerCollideToMissile
事件传参:
参数名 说明
EventObjType 事件中的对象类型
ToolObjType 事件中的目标对象类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playercollidetodropitem
事件描述: 当 任意玩家和任意掉落物 碰撞开始
事件名: TriggerEvent.PlayerCollideToDropItem
事件传参:
参数名 说明
EventObjType 事件中的对象类型
ToolObjType 事件中的目标对象类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playercollidetoentity
事件描述: 当 任意玩家和任意实体 碰撞开始
事件名: TriggerEvent.PlayerCollideToEntity
说明: 当前 C++ 碰撞派发会排除任一方为实体的情况,此事件不会触发。
事件传参:
参数名 说明
EventObjType 事件中的对象类型
ToolObjType 事件中的目标对象类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playercollidetoareaobj
事件描述: 当 任意玩家和任意区域 碰撞开始
事件名: TriggerEvent.PlayerCollideToAreaObj
事件传参:
参数名 说明
EventObjType 事件中的对象类型
ToolObjType 事件中的目标对象类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-mobcollidetoplayer
事件描述: 当 任意生物和任意玩家 碰撞开始
事件名: TriggerEvent.MobCollideToPlayer
事件传参:
参数名 说明
EventObjType 事件中的对象类型
ToolObjType 事件中的目标对象类型
actorid 触发事件的生物类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
targetactorid 事件中的目标生物类型
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-mobcollidetomob
事件描述: 当 任意生物和任意生物 碰撞开始
事件名: TriggerEvent.MobCollideToMob
事件传参:
参数名 说明
EventObjType 事件中的对象类型
ToolObjType 事件中的目标对象类型
actorid 触发事件的生物类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
targetactorid 事件中的目标生物类型
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-mobcollidetomissile
事件描述: 当 任意生物和任意投掷物 碰撞开始
事件名: TriggerEvent.MobCollideToMissile
事件传参:
参数名 说明
EventObjType 事件中的对象类型
ToolObjType 事件中的目标对象类型
actorid 触发事件的生物类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-mobcollidetodropitem
事件描述: 当 任意生物和任意掉落物 碰撞开始
事件名: TriggerEvent.MobCollideToDropItem
事件传参:
参数名 说明
EventObjType 事件中的对象类型
ToolObjType 事件中的目标对象类型
actorid 触发事件的生物类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-mobcollidetoentity
事件描述: 当 任意生物和任意实体 碰撞开始
事件名: TriggerEvent.MobCollideToEntity
说明: 当前 C++ 碰撞派发会排除任一方为实体的情况,此事件不会触发。
事件传参:
参数名 说明
EventObjType 事件中的对象类型
ToolObjType 事件中的目标对象类型
actorid 触发事件的生物类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-mobcollidetoareaobj
事件描述: 当 任意生物和任意区域 碰撞开始
事件名: TriggerEvent.MobCollideToAreaObj
事件传参:
参数名 说明
EventObjType 事件中的对象类型
ToolObjType 事件中的目标对象类型
actorid 触发事件的生物类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-missilecollidetoplayer
事件描述: 当 任意投掷物和任意玩家 碰撞开始
事件名: TriggerEvent.MissileCollideToPlayer
事件传参:
参数名 说明
EventObjType 事件中的对象类型
ToolObjType 事件中的目标对象类型
actorid 触发事件的生物类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-missilecollidetomob
事件描述: 当 任意投掷物和任意生物 碰撞开始
事件名: TriggerEvent.MissileCollideToMob
事件传参:
参数名 说明
EventObjType 事件中的对象类型
ToolObjType 事件中的目标对象类型
actorid 触发事件的生物类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
targetactorid 事件中的目标生物类型
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-missilecollidetomissile
事件描述: 当 任意投掷物和任意投掷物 碰撞开始
事件名: TriggerEvent.MissileCollideToMissile
事件传参:
参数名 说明
EventObjType 事件中的对象类型
ToolObjType 事件中的目标对象类型
actorid 触发事件的生物类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
targetactorid 事件中的目标生物类型
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-missilecollidetodropitem
事件描述: 当 任意投掷物和任意掉落物 碰撞开始
事件名: TriggerEvent.MissileCollideToDropItem
事件传参:
参数名 说明
EventObjType 事件中的对象类型
ToolObjType 事件中的目标对象类型
actorid 触发事件的生物类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
targetactorid 事件中的目标生物类型
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-missilecollidetoentity
事件描述: 当 任意投掷物和任意实体 碰撞开始
事件名: TriggerEvent.MissileCollideToEntity
说明: 当前 C++ 碰撞派发会排除任一方为实体的情况,此事件不会触发。
事件传参:
参数名 说明
EventObjType 事件中的对象类型
ToolObjType 事件中的目标对象类型
actorid 触发事件的生物类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
targetactorid 事件中的目标生物类型
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-missilecollidetoareaobj
事件描述: 当 任意投掷物和任意区域 碰撞开始
事件名: TriggerEvent.MissileCollideToAreaObj
事件传参:
参数名 说明
EventObjType 事件中的对象类型
ToolObjType 事件中的目标对象类型
actorid 触发事件的生物类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
targetactorid 事件中的目标生物类型
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-dropitemcollidetoplayer
事件描述: 当 任意掉落物和任意玩家 碰撞开始
事件名: TriggerEvent.DropItemCollideToPlayer
事件传参:
参数名 说明
EventObjType 事件中的对象类型
ToolObjType 事件中的目标对象类型
actorid 触发事件的生物类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
targetactorid 事件中的目标生物类型
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-dropitemcollidetomob
事件描述: 当 任意掉落物和任意生物 碰撞开始
事件名: TriggerEvent.DropItemCollideToMob
事件传参:
参数名 说明
EventObjType 事件中的对象类型
ToolObjType 事件中的目标对象类型
actorid 触发事件的生物类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
targetactorid 事件中的目标生物类型
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-dropitemcollidetomissile
事件描述: 当 任意掉落物和任意投掷物 碰撞开始
事件名: TriggerEvent.DropItemCollideToMissile
事件传参:
参数名 说明
EventObjType 事件中的对象类型
ToolObjType 事件中的目标对象类型
actorid 触发事件的生物类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
targetactorid 事件中的目标生物类型
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-dropitemcollidetodropitem
事件描述: 当 任意掉落物和任意掉落物 碰撞开始
事件名: TriggerEvent.DropItemCollideToDropItem
事件传参:
参数名 说明
EventObjType 事件中的对象类型
ToolObjType 事件中的目标对象类型
actorid 触发事件的生物类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
targetactorid 事件中的目标生物类型
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-dropitemcollidetoentity
事件描述: 当 任意掉落物和任意实体 碰撞开始
事件名: TriggerEvent.DropItemCollideToEntity
说明: 当前 C++ 碰撞派发会排除任一方为实体的情况,此事件不会触发。
事件传参:
参数名 说明
EventObjType 事件中的对象类型
ToolObjType 事件中的目标对象类型
actorid 触发事件的生物类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
targetactorid 事件中的目标生物类型
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-dropitemcollidetoareaobj
事件描述: 当 任意掉落物和任意区域 碰撞开始
事件名: TriggerEvent.DropItemCollideToAreaObj
事件传参:
参数名 说明
EventObjType 事件中的对象类型
ToolObjType 事件中的目标对象类型
actorid 触发事件的生物类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
targetactorid 事件中的目标生物类型
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-entitycollidetoplayer
事件描述: 当 任意实体和任意玩家 碰撞开始
事件名: TriggerEvent.EntityCollideToPlayer
说明: 当前 C++ 碰撞派发会排除任一方为实体的情况,此事件不会触发。
事件传参:
参数名 说明
EventObjType 事件中的对象类型
ToolObjType 事件中的目标对象类型
actorid 触发事件的生物类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
targetactorid 事件中的目标生物类型
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-entitycollidetomob
事件描述: 当 任意实体和任意生物 碰撞开始
事件名: TriggerEvent.EntityCollideToMob
说明: 当前 C++ 碰撞派发会排除任一方为实体的情况,此事件不会触发。
事件传参:
参数名 说明
EventObjType 事件中的对象类型
ToolObjType 事件中的目标对象类型
actorid 触发事件的生物类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
targetactorid 事件中的目标生物类型
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-entitycollidetomissile
事件描述: 当 任意实体和任意投掷物 碰撞开始
事件名: TriggerEvent.EntityCollideToMissile
说明: 当前 C++ 碰撞派发会排除任一方为实体的情况,此事件不会触发。
事件传参:
参数名 说明
EventObjType 事件中的对象类型
ToolObjType 事件中的目标对象类型
actorid 触发事件的生物类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
targetactorid 事件中的目标生物类型
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-entitycollidetodropitem
事件描述: 当 任意实体和任意掉落物 碰撞开始
事件名: TriggerEvent.EntityCollideToDropItem
说明: 当前 C++ 碰撞派发会排除任一方为实体的情况,此事件不会触发。
事件传参:
参数名 说明
EventObjType 事件中的对象类型
ToolObjType 事件中的目标对象类型
actorid 触发事件的生物类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
targetactorid 事件中的目标生物类型
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-entitycollidetoentity
事件描述: 当 任意实体和任意实体 碰撞开始
事件名: TriggerEvent.EntityCollideToEntity
说明: 当前 C++ 碰撞派发会排除任一方为实体的情况,此事件不会触发。
事件传参:
参数名 说明
EventObjType 事件中的对象类型
ToolObjType 事件中的目标对象类型
actorid 触发事件的生物类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
targetactorid 事件中的目标生物类型
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-entitycollidetoareaobj
事件描述: 当 任意实体和任意区域 碰撞开始
事件名: TriggerEvent.EntityCollideToAreaObj
说明: 当前 C++ 碰撞派发会排除任一方为实体的情况,此事件不会触发。
事件传参:
参数名 说明
EventObjType 事件中的对象类型
ToolObjType 事件中的目标对象类型
actorid 触发事件的生物类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
targetactorid 事件中的目标生物类型
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-areaobjcollidetoplayer
事件描述: 当 任意区域和任意玩家 碰撞开始
事件名: TriggerEvent.AreaObjCollideToPlayer
事件传参:
参数名 说明
EventObjType 事件中的对象类型
ToolObjType 事件中的目标对象类型
actorid 触发事件的生物类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
targetactorid 事件中的目标生物类型
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-areaobjcollidetomob
事件描述: 当 任意区域和任意生物 碰撞开始
事件名: TriggerEvent.AreaObjCollideToMob
事件传参:
参数名 说明
EventObjType 事件中的对象类型
ToolObjType 事件中的目标对象类型
actorid 触发事件的生物类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
targetactorid 事件中的目标生物类型
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-areaobjcollidetomissile
事件描述: 当 任意区域和任意投掷物 碰撞开始
事件名: TriggerEvent.AreaObjCollideToMissile
事件传参:
参数名 说明
EventObjType 事件中的对象类型
ToolObjType 事件中的目标对象类型
actorid 触发事件的生物类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
targetactorid 事件中的目标生物类型
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-areaobjcollidetodropitem
事件描述: 当 任意区域和任意掉落物 碰撞开始
事件名: TriggerEvent.AreaObjCollideToDropItem
事件传参:
参数名 说明
EventObjType 事件中的对象类型
ToolObjType 事件中的目标对象类型
actorid 触发事件的生物类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
targetactorid 事件中的目标生物类型
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-areaobjcollidetoentity
事件描述: 当 任意区域和任意实体 碰撞开始
事件名: TriggerEvent.AreaObjCollideToEntity
说明: 当前 C++ 碰撞派发会排除任一方为实体的情况,此事件不会触发。
事件传参:
参数名 说明
EventObjType 事件中的对象类型
ToolObjType 事件中的目标对象类型
actorid 触发事件的生物类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
targetactorid 事件中的目标生物类型
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-areaobjcollidetoareaobj
事件描述: 当 任意区域和任意区域 碰撞开始
事件名: TriggerEvent.AreaObjCollideToAreaObj
事件传参:
参数名 说明
EventObjType 事件中的对象类型
ToolObjType 事件中的目标对象类型
actorid 触发事件的生物类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
targetactorid 事件中的目标生物类型
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playerareain
事件描述: 当 任意玩家 进入 区域
事件名: TriggerEvent.PlayerAreaIn
事件传参:
参数名 说明
areaid 事件中的区域ID
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playerareaout
事件描述: 当 任意玩家 离开 区域
事件名: TriggerEvent.PlayerAreaOut
事件传参:
参数名 说明
areaid 事件中的区域ID
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-mobareain
事件描述: 当 任意生物 进入 区域
事件名: TriggerEvent.MobAreaIn
事件传参:
参数名 说明
areaid 事件中的区域ID
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-mobareaout
事件描述: 当 任意生物 离开 区域
事件名: TriggerEvent.MobAreaOut
事件传参:
参数名 说明
areaid 事件中的区域ID
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-missileareain
事件描述: 当 任意投掷物 进入 区域
事件名: TriggerEvent.MissileAreaIn
事件传参:
参数名 说明
areaid 事件中的区域ID
eventobjid 触发事件的对象
itemid 事件中的道具类型
itemnum 事件中的道具数量
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-missileareaout
事件描述: 当 任意投掷物 离开 区域
事件名: TriggerEvent.MissileAreaOut
事件传参:
参数名 说明
areaid 事件中的区域ID
eventobjid 触发事件的对象
helperobjid
itemid 事件中的道具类型
itemnum 事件中的道具数量
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-dropitemareain
事件描述: 当 任意掉落物 进入 区域
事件名: TriggerEvent.DropItemAreaIn
事件传参:
参数名 说明
areaid 事件中的区域ID
eventobjid 触发事件的对象
itemid 事件中的道具类型
itemnum 事件中的道具数量
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-dropitemareaout
事件描述: 当 任意掉落物 离开 区域
事件名: TriggerEvent.DropItemAreaOut
事件传参:
参数名 说明
areaid 事件中的区域ID
eventobjid 触发事件的对象
itemid 事件中的道具类型
itemnum 事件中的道具数量
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-entityareain
事件描述: 当 任意实体 进入 区域
事件名: TriggerEvent.EntityAreaIn
事件传参:
参数名 说明
areaid 事件中的区域ID
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-entityareaout
事件描述: 当 任意实体 离开 区域
事件名: TriggerEvent.EntityAreaOut
事件传参:
参数名 说明
areaid 事件中的区域ID
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-areaobjareain
事件描述: 当 任意区域 进入 区域
事件名: TriggerEvent.AreaObjAreaIn
事件传参:
参数名 说明
areaid 事件中的区域ID
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-areaobjareaout
事件描述: 当 任意区域 离开 区域
事件名: TriggerEvent.AreaObjAreaOut
事件传参:
参数名 说明
areaid 事件中的区域ID
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-mobcreate
事件描述: 当 任意生物 被创建
事件名: TriggerEvent.MobCreate
事件传参:
参数名 说明
actorid 触发事件的生物类型
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-entitycreate
事件描述: 当 任意实体 被创建
事件名: TriggerEvent.EntityCreate
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-areaobjcreate
事件描述: 当 任意区域 被创建
事件名: TriggerEvent.AreaObjCreate
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
角色
序号 事件名 事件名描述
0 TriggerEvent.PlayerBeHurt 当 任意玩家 受到伤害
1 TriggerEvent.PlayerDie 当 任意玩家 被击败
2 TriggerEvent.MobBeHurt 当 任意生物 受到伤害
3 TriggerEvent.MobDie 当 任意生物 被击败
4 TriggerEvent.PlayerAttack 当 任意玩家 开始攻击
5 TriggerEvent.PlayerAttackHit 当 任意玩家 攻击命中
6 TriggerEvent.PlayerDefeatActor 当 任意玩家 击败目标
7 TriggerEvent.PlayerDamageActor 当 任意玩家 造成伤害
8 TriggerEvent.MobAttack 当 任意生物 开始攻击
9 TriggerEvent.MobAttackHit 当 任意生物 攻击命中
10 TriggerEvent.MobBeat 当 任意生物 击败目标
11 TriggerEvent.MobDamage 当 任意生物 造成伤害
12 TriggerEvent.PlayerAddBuff 当 任意玩家 获得 状态
13 TriggerEvent.PlayerRemoveBuff 当 任意玩家 失去 状态
14 TriggerEvent.MobAddBuff 当 任意生物 获得 状态
15 TriggerEvent.MobRemoveBuff 当 任意生物 失去 状态
16 TriggerEvent.PlayerChangeAttr 当 任意玩家 的属性改变
17 TriggerEvent.MobChangeAttr 当 任意生物 的属性改变
18 TriggerEvent.ActorPickupActor 当角色举起角色
19 TriggerEvent.PlayerModelChange 当 任意玩家 的主模型改变
20 TriggerEvent.MobModelChange 当 任意生物 的主模型改变
21 TriggerEvent.PlayerAttrStateChange 当 任意玩家权限发生改变
22 TriggerEvent.MobAttrStateChange 当 任意生物权限发生改变
23 TriggerEvent.PlayerMountActor 当任意玩家 骑乘坐骑/载具
24 TriggerEvent.MobMountActor 当任意生物 骑乘坐骑/载具
25 TriggerEvent.PlayerDismountActor 当 任意玩家 取消骑乘
26 TriggerEvent.MobDismountActor 当 任意生物 取消骑乘
triggerevent-playerbehurt
事件描述: 当 任意玩家 受到伤害
事件名: TriggerEvent.PlayerBeHurt
事件传参:
参数名 说明
eventobjid 触发事件的对象
hurtlv 事件中的伤害值
toobjid 事件中的目标对象
hurttype 伤害类型(只有跌落伤害)
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playerdie
事件描述: 当 任意玩家 被击败
事件名: TriggerEvent.PlayerDie
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-mobbehurt
事件描述: 当 任意生物 受到伤害
事件名: TriggerEvent.MobBeHurt
事件传参:
参数名 说明
actorid 触发事件的生物类型
eventobjid 触发事件的对象
hurtlv 事件中的伤害值
toobjid 事件中的目标对象
hurttype 伤害类型(目前只有跌落伤害)
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-mobdie
事件描述: 当 任意生物 被击败
事件名: TriggerEvent.MobDie
事件传参:
参数名 说明
actorid 触发事件的生物类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
helperobjid 发射者(目标对象是投掷物才有值)
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playerattack
事件描述: 当 任意玩家 开始攻击
事件名: TriggerEvent.PlayerAttack
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playerattackhit
事件描述: 当 任意玩家 攻击命中
事件名: TriggerEvent.PlayerAttackHit
事件传参:
参数名 说明
eventobjid 触发事件的对象
toobjid 事件中的目标对象
targetactorid 事件中的目标生物类型
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playerdefeatactor
事件描述: 当 任意玩家 击败目标
事件名: TriggerEvent.PlayerDefeatActor
事件传参:
参数名 说明
eventobjid 触发事件的对象
toobjid 事件中的目标对象
targetactorid 事件中的目标生物类型
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playerdamageactor
事件描述: 当 任意玩家 造成伤害
事件名: TriggerEvent.PlayerDamageActor
事件传参:
参数名 说明
defaultvalue 值包含1头部伤害+值包含2触发器伤害
eventobjid 触发事件的对象
hurtlv 事件中的伤害值
toobjid 事件中的目标对象
targetactorid 事件中的目标生物类型
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-mobattack
事件描述: 当 任意生物 开始攻击
事件名: TriggerEvent.MobAttack
事件传参:
参数名 说明
actorid 触发事件的生物类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
targetactorid 事件中的目标生物类型(生物对象才有值)
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-mobattackhit
事件描述: 当 任意生物 攻击命中
事件名: TriggerEvent.MobAttackHit
事件传参:
参数名 说明
actorid 触发事件的生物类型
defaultvalue 是否攻击头部(值等于1)
eventobjid 触发事件的对象
toobjid 事件中的目标对象
targetactorid 事件中的目标生物类型
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-mobbeat
事件描述: 当 任意生物 击败目标
事件名: TriggerEvent.MobBeat
事件传参:
参数名 说明
actorid 触发事件的生物类型
eventobjid 触发事件的对象
toobjid 事件中的目标对象
targetactorid 事件中的目标生物类型
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-mobdamage
事件描述: 当 任意生物 造成伤害
事件名: TriggerEvent.MobDamage
事件传参:
参数名 说明
actorid 触发事件的生物类型
defaultvalue 是否头部伤害(值等于1)
eventobjid 触发事件的对象
hurtlv 事件中的伤害值
toobjid 事件中的目标对象
targetactorid 事件中的目标生物类型
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playeraddbuff
事件描述: 当 任意玩家 获得 状态
事件名: TriggerEvent.PlayerAddBuff
事件传参:
参数名 说明
buff 事件中的状态效果
buffid 事件中的状态效果ID
bufflvl 事件中的状态效果等级
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playerremovebuff
事件描述: 当 任意玩家 失去 状态
事件名: TriggerEvent.PlayerRemoveBuff
事件传参:
参数名 说明
buff 事件中的状态效果
buffid 事件中的状态效果ID
bufflvl 事件中的状态效果等级
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-mobaddbuff
事件描述: 当 任意生物 获得 状态
事件名: TriggerEvent.MobAddBuff
事件传参:
参数名 说明
actorid 触发事件的生物类型
buff 事件中的状态效果
buffid 事件中的状态效果ID
bufflvl 事件中的状态效果等级
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-mobremovebuff
事件描述: 当 任意生物 失去 状态
事件名: TriggerEvent.MobRemoveBuff
事件传参:
参数名 说明
actorid 触发事件的生物类型
buff 事件中的状态效果
buffid 事件中的状态效果ID
bufflvl 事件中的状态效果等级
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playerchangeattr
事件描述: 当 任意玩家 的属性改变
事件名: TriggerEvent.PlayerChangeAttr
事件传参:
参数名 说明
defaultvalue 改变的属性值
playerattr 玩家属性
playerattrval 玩家属性值
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-mobchangeattr
事件描述: 当 任意生物 的属性改变
事件名: TriggerEvent.MobChangeAttr
事件传参:
参数名 说明
actorid 触发事件的生物类型
actorattr 生物属性
actorattrval 生物属性值
defaultvalue 改变的属性值
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-actorpickupactor
事件描述: 当角色举起角色
事件名: TriggerEvent.ActorPickupActor
事件传参:
参数名 说明
pickupType 举起或放下类型(RolePickupType)
eventobjid 触发事件的对象
toobjid 事件中的目标对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playermodelchange
事件描述: 当 任意玩家 的主模型改变
事件名: TriggerEvent.PlayerModelChange
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-mobmodelchange
事件描述: 当 任意生物 的主模型改变
事件名: TriggerEvent.MobModelChange
事件传参:
参数名 说明
actorid 触发事件的生物类型
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playerattrstatechange
事件描述: 当 任意玩家权限发生改变
事件名: TriggerEvent.PlayerAttrStateChange
事件传参:
参数名 说明
attstateType 权限类型
attstateValue 权限开关(boll)
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-mobattrstatechange
事件描述: 当 任意生物权限发生改变
事件名: TriggerEvent.MobAttrStateChange
事件传参:
参数名 说明
attstateType 权限类型
attstateValue 权限开关(boll)
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playermountactor
事件描述: 当任意玩家 骑乘坐骑/载具
事件名: TriggerEvent.PlayerMountActor
事件传参:
参数名 说明
eventobjid 触发事件的对象
toobjid 事件中的目标对象
targetactorid 事件中的目标生物类型
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-mobmountactor
事件描述: 当任意生物 骑乘坐骑/载具
事件名: TriggerEvent.MobMountActor
事件传参:
参数名 说明
eventobjid 触发事件的对象
toobjid 事件中的目标对象
targetactorid 事件中的目标生物类型
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-playerdismountactor
事件描述: 当 任意玩家 取消骑乘
事件名: TriggerEvent.PlayerDismountActor
事件传参:
参数名 说明
eventobjid 触发事件的对象
toobjid 事件中的目标对象
targetactorid 事件中的目标生物类型
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-mobdismountactor
事件描述: 当 任意生物 取消骑乘
事件名: TriggerEvent.MobDismountActor
事件传参:
参数名 说明
eventobjid 触发事件的对象
toobjid 事件中的目标对象
targetactorid 事件中的目标生物类型
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
投掷物
序号 事件名 事件名描述
0 TriggerEvent.MissileCreate 投掷物创建
1 TriggerEvent.ProjectileHitBlock 当 投掷物 击中 任意方块
2 TriggerEvent.ProjectileHitPlayer 当 投掷物 击中 任意玩家
3 TriggerEvent.ProjectileHitMob 当 投掷物 击中 任意生物
4 TriggerEvent.ProjectileHitProj 当 投掷物 击中 任意投掷物
5 TriggerEvent.ProjectileHitItem 当 投掷物 击中 任意掉落物
6 TriggerEvent.ProjectileHitEntity 当 投掷物 击中 任意实体
triggerevent-missilecreate
事件描述: 投掷物创建
事件名: TriggerEvent.MissileCreate
事件传参:
参数名 说明
itemid 事件中的道具类型
itemnum 事件中的道具数量
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
actorid 触发事件的生物类型
eventobjid 触发事件的对象
helperobjid
toobjid 事件中的目标对象
eventworldid 事件中的星球
triggerevent-projectilehitblock
事件描述: 当 投掷物 击中 任意方块
事件名: TriggerEvent.ProjectileHitBlock
事件传参:
参数名 说明
blockid 事件中的方块类型
defaultvalue 被命中对象类型(内部用于事件分流)
itemid 事件中的道具类型
itemnum 事件中的道具数量
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
helperobjid 发射投掷物的对象
actorid 发射投掷物的生物类型
eventobjid 被命中的对象
eventworldid 事件中的星球
triggerevent-projectilehitplayer
事件描述: 当 投掷物 击中 任意玩家
事件名: TriggerEvent.ProjectileHitPlayer
事件传参:
参数名 说明
defaultvalue 被命中对象类型(内部用于事件分流)
eventobjid 被命中的对象
itemid 事件中的道具类型
itemnum 事件中的道具数量
toobjid 命中的投掷物对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
helperobjid 发射投掷物的对象
actorid 发射投掷物的生物类型
eventworldid 事件中的星球
triggerevent-projectilehitmob
事件描述: 当 投掷物 击中 任意生物
事件名: TriggerEvent.ProjectileHitMob
事件传参:
参数名 说明
defaultvalue 被命中对象类型(内部用于事件分流)
eventobjid 被命中的对象
itemid 事件中的道具类型
itemnum 事件中的道具数量
toobjid 命中的投掷物对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
helperobjid 发射投掷物的对象
targetactorid 事件中的目标生物类型
actorid 发射投掷物的生物类型
eventworldid 事件中的星球
triggerevent-projectilehitproj
事件描述: 当 投掷物 击中 任意投掷物
事件名: TriggerEvent.ProjectileHitProj
事件传参:
参数名 说明
defaultvalue 被命中对象类型(内部用于事件分流)
eventobjid 被命中的对象
itemid 事件中的道具类型
itemnum 事件中的道具数量
toobjid 命中的投掷物对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
helperobjid 发射投掷物的对象
actorid 发射投掷物的生物类型
eventworldid 事件中的星球
triggerevent-projectilehititem
事件描述: 当 投掷物 击中 任意掉落物
事件名: TriggerEvent.ProjectileHitItem
事件传参:
参数名 说明
defaultvalue 被命中对象类型(内部用于事件分流)
eventobjid 被命中的对象
itemid 事件中的道具类型
itemnum 事件中的道具数量
toobjid 命中的投掷物对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
helperobjid 发射投掷物的对象
actorid 发射投掷物的生物类型
eventworldid 事件中的星球
triggerevent-projectilehitentity
事件描述: 当 投掷物 击中 任意实体
事件名: TriggerEvent.ProjectileHitEntity
事件传参:
参数名 说明
defaultvalue 被命中对象类型(内部用于事件分流)
eventobjid 被命中的对象
itemid 事件中的道具类型
itemnum 事件中的道具数量
toobjid 命中的投掷物对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
helperobjid 发射投掷物的对象
actorid 发射投掷物的生物类型
eventworldid 事件中的星球
掉落物
序号 事件名 事件名描述
0 TriggerEvent.ItemCreate 当掉落物创建
2|TriggerEvent.ItemDisappear|当 掉落物 消失
triggerevent-itemcreate
事件描述: 当掉落物创建
事件名: TriggerEvent.ItemCreate
事件传参:
参数名 说明
defaultvalue 道具创建方式
eventobjid 触发事件的对象
itemid 事件中的道具类型
itemnum 事件中的道具数量
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
triggerevent-itemdisappear
事件描述: 当 掉落物 消失
事件名: TriggerEvent.ItemDisappear
事件传参:
参数名 说明
eventobjid 触发事件的对象
itemid 事件中的道具类型
itemnum 事件中的道具数量
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
组件事件管理
添加监听函数调用方式参考:组件函数
注意:事件中参数如果是nil,则可以用 CurEventParam 来替代获取,字段名如下:
CurEventParam.EventTargetPos 事件中的位置
CurEventParam.EventBuff 事件中的状态效果
CurEventParam.EventTargetEffect 事件中的特效
CurEventParam.EventTargetBlock 事件中的方块类型
CurEventParam.EventShortCutIdx 事件中的快捷栏
CurEventParam.EquipItemPos 事件中的装备栏
CurEventParam.EventElementID 事件中的元件
CurEventParam.EventUIID 事件中的界面
CurEventParam.EventString 事件中的字符串
CurEventParam.SelectUIID 当前编辑的界面
CurEventParam.EventAreaid 事件中的区域
CurEventParam.Hurtlv 事件中伤害值
CurEventParam.TriggerByPlayer 触发事件的玩家
CurEventParam.EventTargetPlayer 事件中的目标玩家
CurEventParam.TriggerByCreature 触发事件的生物
CurEventParam.EventTargetCreature 事件中的目标生物
CurEventParam.Actorid 触发事件的生物类型
CurEventParam.targetactorid 事件中的目标生物类型
CurEventParam.EventTargetItemID 事件中的道具类型
CurEventParam.TriggerByMissile 触发事件的投射物
CurEventParam.EventTargetDropItem 事件中的掉落物
CurEventParam.Itemnum 事件中的道具数量
CurEventParam.eventworldid 事件中的星球
事件参数添加参数过滤
注意:部分高频率事件可以添加过滤参数用以提高执行效率,特别是云服房间。添加过滤之后将提高帧率。如果第三个参数传 nil 或者 "",则不会进行过滤。
self:AddEvent(ObjectEvent.PlayerInputKeyDown, eventfunc, nil, KeyCode.Q) -- 自主修改 eventfunc 和 过滤枚举
self:AddEvent(ObjectEvent.PlayerInputKeyClick, eventfunc, nil, KeyCode.Q) -- 自主修改 eventfunc 和 过滤枚举
self:AddEvent(ObjectEvent.PlayerInputKeyOnPress, eventfunc, nil, KeyCode.Q) -- 自主修改 eventfunc 和 过滤枚举
self:AddEvent(ObjectEvent.PlayerInputKeyUp, eventfunc, nil, KeyCode.Q) -- 自主修改 eventfunc 和 过滤枚举
self:AddEvent(ObjectEvent.ObjectMotionStateChange, eventfunc, nil, RoleMotion.Walk) -- 自主修改 eventfunc 和 过滤枚举
self:AddEvent(ObjectEvent.ObjectMotionStateChangeEnd, eventfunc, nil, RoleMotion.Walk) -- 自主修改 eventfunc 和 过滤枚举
self:AddEvent(ObjectEvent.ObjectChangeAttr, eventfunc, nil, RoleAttr.CurHp) -- 自主修改 eventfunc 和 过滤枚举
self:AddEvent(ObjectEvent.ObjectAttrStateChange, eventfunc, nil, Ability.Walking) -- 自主修改 eventfunc 和 过滤枚举
简单示例:
--这个脚本的作用是当玩家点击草块时,把草块变成钛合金
-- 官方定义的函数,不能修改变动
local Script = {}
-- 组件启动时调用
function Script:OnStart()
-- 玩家点击方块事件
self:AddEvent(ObjectEvent.PlayerClickBlock, self.Player_Click)
--AddEvent(ObjectEvent.PlayerClickBlock是官方提供的事件监听,可以在wiki中查看更多的事件
--self.Player_Click 是自定义的一个函数名,可以改成其他你喜欢的
end
-- 定义事件触发时的动作
function Script:Player_Click(event)
local param = event.CurEventParam
-- 玩家点击方块时,判断点的是否是草块
if event.blockid == 100 then
local success = Block:ReplaceBlock(452, event.x, event.y, event.z)
-- Block:ReplaceBlock是官方提供的放置方块方法,可以在wiki中查看更多的方法
-- local success 用来接收Block:ReplaceBlock运行后的结果,可以用来做是否成功放置的判断
end
end
-- 官方定义的函数,不能修改变动
return Script
玩家
序号 事件名 事件名描述
0 ObjectEvent.PlayerEnterGame 当 此玩家 进入游戏
1 ObjectEvent.PlayerLeaveGame 当 此玩家 离开游戏
2 ObjectEvent.PlayerVictory 当 此玩家 游戏胜利
3 ObjectEvent.PlayerDefeat 当 此玩家 游戏失败
4 ObjectEvent.PlayerClickBlock 当 此玩家 点击任意方块
5 ObjectEvent.PlayerClickPlayer 当 此玩家 点击任意玩家
6 ObjectEvent.PlayerClickMob 当 此玩家 点击任意生物
7 ObjectEvent.PlayerClickProjectile 当 此玩家 点击任意投掷物
8 ObjectEvent.PlayerClickDropItem 当 此玩家 点击任意掉落物
9 ObjectEvent.PlayerClickEntity 当 此玩家 点击任意实体
10 ObjectEvent.PlayerInputKeyClick 当 此玩家 点击 按键
11 ObjectEvent.PlayerInputKeyDown 当 此玩家 按下 按键
12 ObjectEvent.PlayerInputKeyUp 当 此玩家 抬起 按键
13 ObjectEvent.PlayerInputKeyOnPress 当 此玩家 长按 按键
14 ObjectEvent.PlayerNewInputContent 此玩家发送聊天信息
15 ObjectEvent.ObjectMotionStateChange 当 此玩家进入运动状态
16 ObjectEvent.ObjectMotionStateChangeEnd 当 此玩家离开运动状态
17 ObjectEvent.PlayerAddItem 当 此玩家获得道具
18 ObjectEvent.PlayerUseItem 当 此玩家开始使用道具
19 ObjectEvent.PlayerChargeItemBegin 当 此玩家开始蓄力道具
20 ObjectEvent.PlayerConsumeItem 当 此玩家消耗道具
21 ObjectEvent.PlayerPickUpItem 当 此玩家拾取道具
22 ObjectEvent.PlayerChargeItemEnd 当 此玩家结束蓄力道具
23 ObjectEvent.PlayerShortcutChange 当 此玩家 快捷栏的 发生改变
24 ObjectEvent.PlayerShortcutAddItem 当 此玩家 快捷栏的 放入道具
25 ObjectEvent.PlayerShortcutRemItem 当 此玩家 快捷栏的 取出道具
26 ObjectEvent.PlayerBackPackChange 当 此玩家 背包栏的 发生改变
27 ObjectEvent.PlayerBackPackAddItem 当 此玩家 背包栏的 放入道具
28 ObjectEvent.PlayerBackPackRemItem 当 此玩家 背包栏的 取出道具
29 ObjectEvent.PlayerEquipChange 当 此玩家 装备栏的 发生改变
30 ObjectEvent.PlayerEquipAddItem 当 此玩家 装备栏的 放入道具
31 ObjectEvent.PlayerEquipRemItem 当 此玩家 装备栏的 取出道具
32 ObjectEvent.PlayerEquipOn 当 此玩家 穿上 装备
33 ObjectEvent.PlayerEquipOff 当 此玩家 脱下 装备
34 ObjectEvent.PlayerRevive 此玩家复活
35 ObjectEvent.PlayerMoveOneBlockSize 此玩家移动
36 ObjectEvent.PlayerInvateFriend 此玩家邀请好友
37 ObjectEvent.PlayerSelectShortcut 此玩家选中快捷栏
objectevent-playerentergame
事件描述: 当 此玩家 进入游戏
事件名: ObjectEvent.PlayerEnterGame
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中星球
objectevent-playerleavegame
事件描述: 当 此玩家 离开游戏
事件名: ObjectEvent.PlayerLeaveGame
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中的星球
objectevent-playervictory
事件描述: 当 此玩家 游戏胜利
事件名: ObjectEvent.PlayerVictory
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中星球
objectevent-playerdefeat
事件描述: 当 此玩家 游戏失败
事件名: ObjectEvent.PlayerDefeat
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中星球
objectevent-playerclickblock
事件描述: 当 此玩家 点击任意方块
事件名: ObjectEvent.PlayerClickBlock
事件传参:
参数名 说明
blockid 事件中的方块类型
eventobjid 触发事件的对象
eventworldid 事件中的星球
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
objectevent-playerclickplayer
事件描述: 当 此玩家 点击任意玩家
事件名: ObjectEvent.PlayerClickPlayer
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
targetactorid 事件中的目标生物类型
toobjid 事件中的目标对象
eventworldid 事件中星球
objectevent-playerclickmob
事件描述: 当 此玩家 点击任意生物
事件名: ObjectEvent.PlayerClickMob
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
targetactorid 事件中的目标生物类型
toobjid 事件中的目标对象
eventworldid 事件中星球
objectevent-playerclickprojectile
事件描述: 当 此玩家 点击任意投掷物
事件名: ObjectEvent.PlayerClickProjectile
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
targetactorid 事件中的目标生物类型
toobjid 事件中的目标对象
eventworldid 事件中星球
objectevent-playerclickdropitem
事件描述: 当 此玩家 点击任意掉落物
事件名: ObjectEvent.PlayerClickDropItem
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
targetactorid 事件中的目标生物类型
toobjid 事件中的目标对象
eventworldid 事件中星球
objectevent-playerclickentity
事件描述: 当 此玩家 点击任意实体
事件名: ObjectEvent.PlayerClickEntity
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
targetactorid 事件中的目标生物类型
toobjid 事件中的目标对象
eventworldid 事件中星球
objectevent-playerinputkeyclick
事件描述: 当 此玩家 点击 按键
事件名: ObjectEvent.PlayerInputKeyClick
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
vkey 事件中的按键
eventworldid 事件中星球
objectevent-playerinputkeydown
事件描述: 当 此玩家 按下 按键
事件名: ObjectEvent.PlayerInputKeyDown
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
vkey 事件中的按键
eventworldid 事件中星球
objectevent-playerinputkeyup
事件描述: 当 此玩家 抬起 按键
事件名: ObjectEvent.PlayerInputKeyUp
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
vkey 事件中的按键
eventworldid 事件中星球
objectevent-playerinputkeyonpress
事件描述: 当 此玩家 长按 按键
事件名: ObjectEvent.PlayerInputKeyOnPress
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
vkey 事件中的按键
eventworldid 事件中星球
objectevent-playernewinputcontent
事件描述: 此玩家发送聊天信息
事件名: ObjectEvent.PlayerNewInputContent
事件传参:
参数名 说明
content 事件中的字符串
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中星球
objectevent-objectmotionstatechange
事件描述: 当 此玩家进入运动状态
事件名: ObjectEvent.ObjectMotionStateChange
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
playermotion 玩家行为动作
eventworldid 事件中星球
objectevent-objectmotionstatechangeend
事件描述: 当 此玩家离开运动状态
事件名: ObjectEvent.ObjectMotionStateChangeEnd
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
playermotion 玩家行为动作
eventworldid 事件中星球
objectevent-playeradditem
事件描述: 当 此玩家获得道具
事件名: ObjectEvent.PlayerAddItem
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
itemid 事件中的道具类型
itemix 事件中的格子ID
itemnum 事件中的道具数量
eventworldid 事件中星球
objectevent-playeruseitem
事件描述: 当 此玩家开始使用道具
事件名: ObjectEvent.PlayerUseItem
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
itemid 事件中的道具类型
itemix 事件中的格子ID
itemnum 事件中的道具数量
eventworldid 事件中星球
objectevent-playerchargeitembegin
事件描述: 当 此玩家开始蓄力道具
事件名: ObjectEvent.PlayerChargeItemBegin
事件传参:
参数名 说明
defaultvalue 自定义数值数据
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
itemid 事件中的道具类型
itemix 事件中的格子ID
itemnum 事件中的道具数量
eventworldid 事件中星球
objectevent-playerconsumeitem
事件描述: 当 此玩家消耗道具
事件名: ObjectEvent.PlayerConsumeItem
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
itemid 事件中的道具类型
itemix 事件中的格子ID
itemnum 事件中的道具数量
eventworldid 事件中星球
objectevent-playerpickupitem
事件描述: 当 此玩家拾取道具
事件名: ObjectEvent.PlayerPickUpItem
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
itemid 事件中的道具类型
itemix 事件中的格子ID
itemnum 事件中的道具数量
toobjid 事件中的目标对象
eventworldid 事件中星球
objectevent-playerchargeitemend
事件描述: 当 此玩家结束蓄力道具
事件名: ObjectEvent.PlayerChargeItemEnd
事件传参:
参数名 说明
defaultvalue 自定义数值数据
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
itemid 事件中的道具类型
itemix 事件中的格子ID
itemnum 事件中的道具数量
eventworldid 事件中星球
objectevent-playershortcutchange
事件描述: 当 此玩家 快捷栏的 发生改变
事件名: ObjectEvent.PlayerShortcutChange
事件传参:
参数名 说明
ShortCutIdx 事件中的快捷栏
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
itemid 事件中的道具类型
itemix 事件中的格子ID
itemnum 事件中的道具数量
eventworldid 事件中星球
objectevent-playershortcutadditem
事件描述: 当 此玩家 快捷栏的 放入道具
事件名: ObjectEvent.PlayerShortcutAddItem
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中星球
objectevent-playershortcutremitem
事件描述: 当 此玩家 快捷栏的 取出道具
事件名: ObjectEvent.PlayerShortcutRemItem
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中星球
objectevent-playerbackpackchange
事件描述: 当 此玩家 背包栏的 发生改变
事件名: ObjectEvent.PlayerBackPackChange
事件传参:
参数名 说明
ShortCutIdx 事件中的快捷栏
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
itemid 事件中的道具类型
itemix 事件中的格子ID
itemnum 事件中的道具数量
eventworldid 事件中星球
objectevent-playerbackpackadditem
事件描述: 当 此玩家 背包栏的 放入道具
事件名: ObjectEvent.PlayerBackPackAddItem
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中星球
objectevent-playerbackpackremitem
事件描述: 当 此玩家 背包栏的 取出道具
事件名: ObjectEvent.PlayerBackPackRemItem
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中星球
objectevent-playerequipchange
事件描述: 当 此玩家 装备栏的 发生改变
事件名: ObjectEvent.PlayerEquipChange
事件传参:
参数名 说明
ShortCutIdx 事件中的快捷栏
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
itemid 事件中的道具类型
itemix 事件中的格子ID
itemnum 事件中的道具数量
eventworldid 事件中星球
objectevent-playerequipadditem
事件描述: 当 此玩家 装备栏的 放入道具
事件名: ObjectEvent.PlayerEquipAddItem
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中星球
objectevent-playerequipremitem
事件描述: 当 此玩家 装备栏的 取出道具
事件名: ObjectEvent.PlayerEquipRemItem
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中星球
objectevent-playerequipon
事件描述: 当 此玩家 穿上 装备
事件名: ObjectEvent.PlayerEquipOn
事件传参:
参数名 说明
ShortCutIdx 事件中的快捷栏
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
itemid 事件中的道具类型
itemix 事件中的格子ID
itemnum 事件中的道具数量
eventworldid 事件中星球
objectevent-playerequipoff
事件描述: 当 此玩家 脱下 装备
事件名: ObjectEvent.PlayerEquipOff
事件传参:
参数名 说明
ShortCutIdx 事件中的快捷栏
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
itemid 事件中的道具类型
itemix 事件中的格子ID
itemnum 事件中的道具数量
eventworldid 事件中星球
objectevent-playerrevive
事件描述: 此玩家复活
事件名: ObjectEvent.PlayerRevive
事件传参:
参数名 说明
defaultvalue 自定义数值数据
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中星球
objectevent-playermoveoneblocksize
事件描述: 此玩家移动
事件名: ObjectEvent.PlayerMoveOneBlockSize
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中星球
objectevent-playerinvatefriend
事件描述: 此玩家邀请好友
事件名: ObjectEvent.PlayerInvateFriend
事件传参:
参数名 说明
eventobjid 触发事件的对象
x,y,z 事件中的位置
toobjid 事件中的目标对象
eventworldid 事件中的星球
objectevent-playerselectshortcut
事件描述: 此玩家选中快捷栏
事件名: ObjectEvent.PlayerSelectShortcut
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
itemid 事件中的道具类型
itemix 事件中的格子ID
itemnum 事件中的道具数量
eventworldid 事件中星球
方块
序号 事件名 事件名描述
0 ObjectEvent.BlockAdd 此类方块被创建
1 ObjectEvent.BlockClicked 当此类方块被被点击
2 ObjectEvent.BlockRemove 当此类方块被被破坏
3 ObjectEvent.BlockDigBegin 当此类方块被被挖掘
4 ObjectEvent.BlockDigEnd 当此类方块被被挖掘完毕
5 ObjectEvent.BlockDigCancel 当此类方块被被挖掘中断
6 ObjectEvent.OnInteract 当此类方块开关状态发生改变
7 ObjectEvent.BlockChangeColor 当此类方块颜色发生改变
8 ObjectEvent.BlockChangeDir 当此类方块方向发生改变
9 ObjectEvent.BlockContainerChange 当 储存容器 内 发生改变
10 ObjectEvent.BlockContainerPutIn 当 储存容器 内 放入道具
11 ObjectEvent.BlockContainerTakeOut 当 储存容器 内 取出道具
objectevent-blockadd
事件描述: 此类方块被创建
事件名: ObjectEvent.BlockAdd
事件传参:
参数名 说明
x,y,z 事件中的位置
blockid 事件中的方块类型
eventobjid 触发事件的对象
eventworldid 事件中的星球
objectevent-blockclicked
事件描述: 当此类方块被被点击
事件名: ObjectEvent.BlockClicked
事件传参:
参数名 说明
x,y,z 事件中的位置
blockid 事件中的方块类型
eventobjid 触发事件的对象
actorid 触发事件的生物类型
eventworldid 事件中的星球
objectevent-blockremove
事件描述: 当此类方块被被破坏
事件名: ObjectEvent.BlockRemove
事件传参:
参数名 说明
x,y,z 事件中的位置
blockid 事件中的方块类型
eventobjid 触发事件的对象
actorid 触发事件的生物类型
eventworldid 事件中的星球
objectevent-blockdigbegin
事件描述: 当此类方块被被挖掘
事件名: ObjectEvent.BlockDigBegin
事件传参:
参数名 说明
x,y,z 事件中的位置
blockid 事件中的方块类型
eventobjid 触发事件的对象
actorid 触发事件的生物类型
eventworldid 事件中的星球
objectevent-blockdigend
事件描述: 当此类方块被被挖掘完毕
事件名: ObjectEvent.BlockDigEnd
事件传参:
参数名 说明
x,y,z 事件中的位置
blockid 事件中的方块类型
eventobjid 触发事件的对象
actorid 触发事件的生物类型
eventworldid 事件中的星球
objectevent-blockdigcancel
事件描述: 当此类方块被被挖掘中断
事件名: ObjectEvent.BlockDigCancel
事件传参:
参数名 说明
x,y,z 事件中的位置
blockid 事件中的方块类型
eventobjid 触发事件的对象
actorid 触发事件的生物类型
eventworldid 事件中的星球
objectevent-oninteract
事件描述: 当此类方块开关状态发生改变
事件名: ObjectEvent.OnInteract
事件传参:
参数名 说明
x,y,z 事件中的位置
blockid 事件中的方块类型
eventworldid 事件中的星球
objectevent-blockchangecolor
事件描述: 当此类方块颜色发生改变
事件名: ObjectEvent.BlockChangeColor
事件传参:
参数名 说明
x,y,z 事件中的位置
blockid 事件中的方块类型
eventworldid 事件中的星球
objectevent-blockchangedir
事件描述: 当此类方块方向发生改变
事件名: ObjectEvent.BlockChangeDir
事件传参:
参数名 说明
x,y,z 事件中的位置
blockid 事件中的方块类型
eventworldid 事件中的星球
objectevent-blockcontainerchange
事件描述: 当 储存容器 内 发生改变
事件名: ObjectEvent.BlockContainerChange
事件传参:
参数名 说明
x,y,z 事件中的位置
blockid 事件中的方块类型
itemid 事件中的道具类型
eventworldid 事件中的星球
objectevent-blockcontainerputin
事件描述: 当 储存容器 内 放入道具
事件名: ObjectEvent.BlockContainerPutIn
事件传参:
参数名 说明
x,y,z 事件中的位置
blockid 事件中的方块类型
itemid 事件中的道具类型
eventworldid 事件中的星球
objectevent-blockcontainertakeout
事件描述: 当 储存容器 内 取出道具
事件名: ObjectEvent.BlockContainerTakeOut
事件传参:
参数名 说明
x,y,z 事件中的位置
blockid 事件中的方块类型
itemid 事件中的道具类型
eventworldid 事件中的星球
对象
序号 事件名 事件名描述
0 ObjectEvent.OnPropertyChange 当对象的当前组件属性发生改变
1 ObjectEvent.ObjectPlayAnim 当此对象播放动画时
objectevent-onpropertychange
事件描述: 当对象的当前组件属性发生改变
事件名: ObjectEvent.OnPropertyChange
事件传参: 无
objectevent-objectplayanim
事件描述: 当此对象播放动画时
事件名: ObjectEvent.ObjectPlayAnim
事件传参:
参数名 说明
eventobjid 触发事件的对象
actorid 触发事件的生物类型
x,y,z 事件中的位置
| 事件中的动作
eventworldid | 事件中的星球
角色
序号 事件名 事件名描述
0 ObjectEvent.ObjectCollideByPlayer 当 此角色和任意玩家 碰撞开始
1 ObjectEvent.ObjectCollideByMob 当 此角色和任意生物 碰撞开始
2 ObjectEvent.ObjectCollideByMissile 当 此角色和任意投掷物 碰撞开始
3 ObjectEvent.ObjectCollideByDropItem 当 此角色和任意掉落物 碰撞开始
4 ObjectEvent.ObjectCollideByEntity 当 此角色和任意实体 碰撞开始
5 ObjectEvent.ObjectCollideByAreaObj 当 此角色和任意区域 碰撞开始
6 ObjectEvent.ObjectBeClick 此角色被玩家点击
7 ObjectEvent.ObjectBeHurt 当 此角色 受到伤害
8 ObjectEvent.ObjectDie 当 此角色 被击败
9 ObjectEvent.ObjectAttack 当 此角色开始攻击
10 ObjectEvent.ObjectAttackHit 当 此角色攻击命中
11 ObjectEvent.ObjectDefeat 当 此角色击败目标
12 ObjectEvent.ObjectDamage 当 此角色造成伤害
13 ObjectEvent.ObjectAddBuff 当 此角色获得 状态
14 ObjectEvent.ObjectRemoveBuff 当 此角色失去 状态
15 ObjectEvent.ObjectAttrStateChange 当此角色权限改变
16 ObjectEvent.ObjectChangeAttr 当此角色属性改变
17 ObjectEvent.ObjectMountActor 此角色骑乘
18 ObjectEvent.ObjectDismountActor 此角色取消骑乘
objectevent-objectcollidebyplayer
事件描述: 当 此角色和任意玩家 碰撞开始
事件名: ObjectEvent.ObjectCollideByPlayer
事件传参:
参数名 说明
EventObjType
ToolObjType
actorid 触发事件的生物类型
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
targetactorid 事件中的目标生物类型
toobjid 事件中的目标对象
eventworldid 事件中星球
objectevent-objectcollidebymob
事件描述: 当 此角色和任意生物 碰撞开始
事件名: ObjectEvent.ObjectCollideByMob
事件传参:
参数名 说明
EventObjType
ToolObjType
actorid 触发事件的生物类型
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
targetactorid 事件中的目标生物类型
toobjid 事件中的目标对象
eventworldid 事件中星球
objectevent-objectcollidebymissile
事件描述: 当 此角色和任意投掷物 碰撞开始
事件名: ObjectEvent.ObjectCollideByMissile
事件传参:
参数名 说明
EventObjType
ToolObjType
actorid 触发事件的生物类型
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
targetactorid 事件中的目标生物类型
toobjid 事件中的目标对象
eventworldid 事件中星球
objectevent-objectcollidebydropitem
事件描述: 当 此角色和任意掉落物 碰撞开始
事件名: ObjectEvent.ObjectCollideByDropItem
事件传参:
参数名 说明
EventObjType
ToolObjType
actorid 触发事件的生物类型
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
targetactorid 事件中的目标生物类型
toobjid 事件中的目标对象
eventworldid 事件中星球
objectevent-objectcollidebyentity
事件描述: 当 此角色和任意实体 碰撞开始
事件名: ObjectEvent.ObjectCollideByEntity
事件传参:
参数名 说明
EventObjType
ToolObjType
actorid 触发事件的生物类型
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
targetactorid 事件中的目标生物类型
toobjid 事件中的目标对象
eventworldid 事件中星球
objectevent-objectcollidebyareaobj
事件描述: 当 此角色和任意区域 碰撞开始
事件名: ObjectEvent.ObjectCollideByAreaObj
事件传参:
参数名 说明
EventObjType
ToolObjType
actorid 触发事件的生物类型
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
targetactorid 事件中的目标生物类型
toobjid 事件中的目标对象
eventworldid 事件中星球
objectevent-objectbeclick
事件描述: 此角色被玩家点击
事件名: ObjectEvent.ObjectBeClick
事件传参:
参数名 说明
actorid 触发事件的生物类型
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
toobjid 事件中的目标对象
eventworldid 事件中星球
objectevent-objectbehurt
事件描述: 当 此角色 受到伤害
事件名: ObjectEvent.ObjectBeHurt
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
hurtlv 事件中的伤害值
hurttype 伤害类型
toobjid 事件中的目标对象
eventworldid 事件中星球
objectevent-objectdie
事件描述: 当 此角色 被击败
事件名: ObjectEvent.ObjectDie
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中星球
objectevent-objectattack
事件描述: 当 此角色开始攻击
事件名: ObjectEvent.ObjectAttack
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中星球
objectevent-objectattackhit
事件描述: 当 此角色攻击命中
事件名: ObjectEvent.ObjectAttackHit
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
targetactorid 事件中的目标生物类型
toobjid 事件中的目标对象
eventworldid 事件中星球
objectevent-objectdefeat
事件描述: 当 此角色击败目标
事件名: ObjectEvent.ObjectDefeat
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
targetactorid 事件中的目标生物类型
toobjid 事件中的目标对象
eventworldid 事件中星球
objectevent-objectdamage
事件描述: 当 此角色造成伤害
事件名: ObjectEvent.ObjectDamage
事件传参:
参数名 说明
defaultvalue 自定义数值数据
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
hurtlv 事件中的伤害值
targetactorid 事件中的目标生物类型
toobjid 事件中的目标对象
eventworldid 事件中星球
objectevent-objectaddbuff
事件描述: 当 此角色获得 状态
事件名: ObjectEvent.ObjectAddBuff
事件传参:
参数名 说明
buff
buffid 事件中的状态效果
bufflvl
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中星球
objectevent-objectremovebuff
事件描述: 当 此角色失去 状态
事件名: ObjectEvent.ObjectRemoveBuff
事件传参:
参数名 说明
buff
buffid 事件中的状态效果
bufflvl
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中星球
objectevent-objectattrstatechange
事件描述: 当此角色权限改变
事件名: ObjectEvent.ObjectAttrStateChange
事件传参:
参数名 说明
attstateType
attstateValue
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
eventworldid 事件中星球
objectevent-objectchangeattr
事件描述: 当此角色属性改变
事件名: ObjectEvent.ObjectChangeAttr
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
playerattr 玩家属性
playerattrval 玩家属性值
eventworldid 事件中星球
objectevent-objectmountactor
事件描述: 此角色骑乘
事件名: ObjectEvent.ObjectMountActor
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
targetactorid 事件中的目标生物类型
toobjid 事件中的目标对象
eventworldid 事件中星球
objectevent-objectdismountactor
事件描述: 此角色取消骑乘
事件名: ObjectEvent.ObjectDismountActor
事件传参:
参数名 说明
eventobjid 触发事件的对象
x 事件中位置X
y 事件中位置Y
z 事件中位置Z
targetactorid 事件中的目标生物类型
toobjid 事件中的目标对象
eventworldid 事件中星球
对象模块管理接口 GameObject
具体函数名及描述如下:
序号 函数名 函数描述
1 FindObject(...) 根据ID查找游戏对象
2 FindUIObject(...) 获取UI对象
3 FindBlockObject(...) 查找方块类别对象
4 CreatePrefabInst(...) 使用预制ID创建对象
5 CreatePrefab(...) 创建对象列表
6 Destroy(...) 删除对象
7 GetObjectPrefab(...) 获取对象预制ID
FindObject
参数及类型:
id:number / string 游戏对象唯一标识
返回值及类型:
obj:object游戏对象;未找到返回nil
该方法的其他说明: 根据ID查找游戏对象
具体使用案例如下:
local uiObj = GameObject:FindObject("7482986899365911542-22886")
if uiObj then
print("找到ui界面对象")
end
local hostUin = Player:GetHostUin()
local player = GameObject:FindObject(hostUin)
if player then
print("找到玩家对象")
end
FindUIObject
参数及类型:
id:number / string UI对象唯一标识
返回值及类型:
obj:objectUI游戏对象;未找到返回nil
该方法的其他说明: 根据ID查找UI游戏对象
具体使用案例如下:
local obj = GameObject:FindUIObject(id)
FindBlockObject
参数及类型:
id:number / string 方块类型ID
返回值及类型:
obj:object方块类别对象;未找到返回nil
该方法的其他说明: 根据方块类型ID查找方块类别对象
具体使用案例如下:
-- 方块对象接口只能查找到编辑过的方块或是自定义的方块
--获取方块类型对象(场景中至少有个方块才能获取到)
local blockObj = GameObject:FindBlockObject("r0_7495946400275515402_23048")
if blockObj then
print("找到方块对象")
end
CreatePrefabInst
参数及类型:
prefabId:string 预制体ID
worldId:number 星球ID(可选)
x:number X坐标
y:number Y坐标
z:number Z坐标
trigger:boolean 是否触发事件(可选)
返回值及类型:
obj:object创建的游戏对象;失败返回nil
该方法的其他说明: 在指定世界坐标使用预制体ID创建单个对象,可通过GetId()获取objId
具体使用案例如下:
-- 创建场景中对象类型预制
local obj = GameObject:CreatePrefabInst("r1_7482990429829028854_22890", WorldId, 10,8,10)
if obj then
local hpCmp = obj:GetComponent("HP") -- 获取血量组件
if hpCmp then
hpCmp.hp = 120 -- 设置血量
end
print("创建预制成功")
end
CreatePrefab
参数及类型:
objectType:number 对象类型(ObjType)ObjType
prefabId:number / string 类型ID或预制ID
x:number X坐标
y:number Y坐标
z:number Z坐标
num:number 数量(可选)
trigger:boolean 是否触发事件(可选)
worldId:number 星球ID(可选)
返回值及类型:
objids:table 创建对象列表(安全对象);失败返回nil
该方法的其他说明: 在指定位置按类型与预制ID创建多个对象,返回对象列表,可用GetId()获取每个对象的objId
具体使用案例如下:
-- 创建游戏内预设的生物2只
local objs = GameObject:CreatePrefab(ObjType.Mob, 3400, 10,8,10, 2, true, WorldId)
if objs and #objs > 0 then
-- obj.transform:SetPosition(10,8,10) -- 设置位置, 等同上面创的位置参数操作
for _, obj in ipairs(objs) do
local objid = obj:GetId() -- 获取对象的objid
local hpCmp = obj:GetComponent("HP") -- 获取血量组件
if hpCmp then
hpCmp.hp = 120 -- 设置血量
end
end
print("创建游戏内生物成功")
end
-- 创建自定义生物 1只
local customObjs = GameObject:CreatePrefab(ObjType.Mob, "r1_7482990429829028854_22890", 10,8,13, 1, true, WorldId)
if customObjs and #customObjs > 0 then
print("创建自定义生物成功")
end
Destroy
参数及类型:
objId:number / string 对象ID
返回值及类型:
bool:boolean 是否删除成功
该方法的其他说明: 销毁指定ID的游戏对象(玩家、方块、世界、UI对象不可删除)
具体使用案例如下:
local objid = nil
local obj = GameObject:CreatePrefabInst("r1_7482990429829028854_22890", nil, 10,8,10) --创建一个生物
if obj then
-- 删除对象
objid = obj:GetId()
GameObject:Destroy(objid)
-- obj:Destroy() 对象的也可以直接调用Destroy删除
end
GetObjectPrefab
参数及类型:
objId:number 对象ID
返回值及类型:
id:number / string 预制ID
num:number 对象类型(多返回值);失败返回nil
该方法的其他说明: 获取对象的预制ID及对象类型(掉落物、投掷物、生物等可用)
具体使用案例如下:
local id,num = GameObject:GetObjectPrefab(objId)
角色模块管理接口 Actor
具体函数名及描述如下:
序号 函数名 函数描述
1 GetItemId(...) 获取掉落物类型ID
2 GetDropItemNum(...) 获取掉落物品数量
3 SetTeam(...) 设置角色队伍
4 GetTeam(...) 获取角色队伍
5 AddHp(...) 增加角色当前生命值
6 GetMaxHP(...) 获取最大生命值
7 ShowNickName(...) 设置昵称显示
8 SetNickName(...) 设置角色昵称
9 GetNickName(...) 获取角色昵称
10 GetObjWorldId(...) 获取角色所在星球ID
11 IsPlayer(...) 检查对象是否为玩家
12 PlaySoundEffectById(...) 播放音效
13 StopSoundEffectById(...) 停止音效
14 PauseSoundEffectById(...) 暂停/恢复音效
15 RotateFaceToActor(...) 生物朝向目标
16 GetMotion(...) 获取对象移动速度
17 SetBeHurtTarget(...) 设置仇恨目标
18 GetActorFacade(...) 获取角色外观
19 CompareMainModel(...) 比较主模型外观
20 PlayBodyParticleById(...) 播放粒子特效
21 StopBodyEffectById(...) 停止粒子特效
22 SetBodyParticleTransform(...) 设置粒子特效变换
23 Jump(...) 对象跳跃
24 GetRidingActorObjId(...) 获取骑乘生物ID
25 GetFaceDirection(...) 获取对象朝向
26 TryMoveToActor(...) 对象移动到目标
27 SetFaceDirection(...) 设置对象朝向
28 KillSelf(...) 击败对象
29 SetAttr(...) 设置角色属性
30 IncreasesAttr(...) 增加角色属性值
31 GetAttr(...) 获取角色属性值
32 SetActorPermissions(...) 设置对象权限
33 GetActorPermissions(...) 获取对象权限
34 SetFaceYaw(...) 设置面向角度
35 GetFaceYaw(...) 获取面向角度
36 SetFacePitch(...) 设置仰望角度
37 GetFacePitch(...) 获取仰望角度
38 SetPosition(...) 设置角色位置
39 GetPosition(...) 获取对象位置
40 ChangeCustomModel(...) 改变对象外观
41 RecoverinitialModel(...) 恢复对象外观
42 ActorHurt(...) 对象造成伤害
43 SetImmuneType(...) 设置免疫伤害类型
44 ChangActorMoveType(...) 改变移动方式
45 GetActorMovementMode(...) 获取移动模式
46 GetBoundSzie(...) 获取模型大小
47 RandomFacadeID(...) 随机外观ID
48 GetObjType(...) 获取对象类型
49 TryMoveToPos(...) 移动对象到位置(寻路)
50 AppendSpeed(...) 附加速度
51 FindNearestBlock(...) 查找最近方块
52 GetEyeHeight(...) 获取角色眼睛高度
53 ClearActorWithId(...) 清除指定类型生物
54 IsExist(...) 对象是否存在
55 PlayAnim(...) 对象播放动作
56 PlayHandAnim(...) 对象手持播放动作
57 MountActor(...) 角色骑乘
58 DisMountActor(...) 角色取消骑乘
59 PickupActor(...) 角色举起角色
60 TryPickupActorForward(...) 尝试抓取前方对象
61 DropActor(...) 尝试投掷角色
62 EscapePickup(...) 尝试逃脱抓举
63 SetBtreeVarValue(...) 设置行为树变量
64 GetBtreeVarValue(...) 获取行为树变量
65 GetDropItemInstanceId(...) 获取掉落物实例ID
66 SetAblePick(...) 设置掉落物可拾取
67 GetEntityFacade(...) 获取实体类型外观
68 PickupItem(...) 角色拾取物品
69 GetPickupObjID(...) 获取举起行为中的角色ID
70 HasTags(...) 对象是否有标签
71 GetTags(...) 获取对象标签列表
72 AddTags(...) 添加标签
73 RemoveTags(...) 删除标签
74 ClearTags(...) 清空所有标签
75 PlayAnimByObj(...) 对象播放对象动作
GetItemId
参数及类型:
objid:number 掉落物对象ID
返回值及类型:
id:number 掉落物类型ID(失败返回nil)
该方法的其他说明: 根据掉落物对象ID获取对应的物品类型ID
具体使用案例如下:
local itemId = Actor:GetItemId(objId)
GetDropItemNum
参数及类型:
objid:number 掉落物对象ID
返回值及类型:
num:number 掉落物品数量
该方法的其他说明: 根据掉落物对象ID获取该掉落物的物品数量
具体使用案例如下:
local num = Actor:GetDropItemNum(objId)
SetTeam
参数及类型:
objid:number 角色对象ID
teamid:number 队伍ID(AbsoluteCampType)AbsoluteCampType
bResetAttr:boolean 是否重置属性(仅玩家有效,默认false)
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置指定角色的队伍ID,可指定是否重置属性(仅对玩家有效)
具体使用案例如下:
-- 设置玩家为3队
local result = Actor:SetTeam(Player:GetHostUin(), AbsoluteCampType.Team3)
GetTeam
参数及类型:
objid:number 角色对象ID
返回值及类型:
id:number 队伍ID(失败返回nil)
该方法的其他说明: 根据角色对象ID获取该角色所属的队伍ID
具体使用案例如下:
local team = Actor:GetTeam(Player:GetHostUin())
AddHp
参数及类型:
objid:number 角色对象ID
hp:number 血量值(hp>0增加血量,hp<0减少血量)
返回值及类型:
bool:boolean 是否操作成功
该方法的其他说明: 增加或减少指定角色的当前生命值,正数增加,负数减少
具体使用案例如下:
local bool = Actor:AddHp(objid, hp)
GetMaxHP
参数及类型:
objid:number 角色对象ID
返回值及类型:
num:number 最大生命值(失败返回nil)
该方法的其他说明: 获取指定角色的最大生命值,包括所有属性加成
具体使用案例如下:
local num = Actor:GetMaxHP(objid)
ShowNickName
参数及类型:
objid:number 角色对象ID
bshow:boolean 是否显示昵称
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置指定角色对象的昵称显示状态
具体使用案例如下:
-- 显示昵称
local result = Actor:ShowNickName(Player:GetHostUin(), true)
-- 隐藏昵称
local result2 = Actor:ShowNickName(Player:GetHostUin(), false)
SetNickName
参数及类型:
objid:number 角色对象ID
nickname:string 昵称
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置指定角色的昵称,会自动过滤敏感词
具体使用案例如下:
local result = Actor:SetNickName(Player:GetHostUin(), "昵称123")
GetNickName
参数及类型:
objid:number 角色对象ID
返回值及类型:
name:string 角色昵称(失败返回nil)
该方法的其他说明: 根据角色对象ID获取该角色的昵称,支持玩家和生物
具体使用案例如下:
-- 获取玩家昵称
local nickname = Actor:GetNickName(Player:GetHostUin())
GetObjWorldId
参数及类型:
objid:number 角色对象ID
返回值及类型:
id:number 星球ID(失败返回-1)
该方法的其他说明: 获取指定角色当前所在的星球ID
具体使用案例如下:
local worldId = Actor:GetObjWorldId(Player:GetHostUin())
IsPlayer
参数及类型:
objid:number 对象ID
返回值及类型:
bool:boolean 是否为玩家
该方法的其他说明: 检测指定对象ID是否为玩家对象
具体使用案例如下:
local isPlayer = Actor:IsPlayer(objId)
PlaySoundEffectById
参数及类型:
objid:number 角色对象ID
soundId:number 声音ID
volume:number 音量(0-100,实际会转换为0-1)
pitch:number 音调(默认1.0)
isLoop:boolean 是否循环播放(默认false)
返回值及类型:
bool:boolean 是否播放成功
该方法的其他说明: 在指定角色对象身上通过声音ID播放音效,支持设置音量、音调和循环播放
具体使用案例如下:
-- 对象上播放3d音效10379, 音量100, 音调1, 不循环
local result = Actor:PlaySoundEffectById(Player:GetHostUin(), 10379, 100, 1, false)
StopSoundEffectById
参数及类型:
objid:number 角色对象ID
soundId:number 声音ID
返回值及类型:
bool:boolean 是否停止成功
该方法的其他说明: 停止指定角色对象身上正在播放的音效
具体使用案例如下:
-- 停止播放3d音效10379
local result = Actor:StopSoundEffectById(Player:GetHostUin(), 10379)
PauseSoundEffectById
参数及类型:
objid:number 角色对象ID
soundId:number 声音ID(-1表示暂停所有音效)
pause:boolean true暂停/false恢复
返回值及类型:
bool:boolean 是否操作成功
该方法的其他说明: 暂停或恢复指定角色对象身上正在播放的音效,支持暂停所有音效(soundId=-1)
具体使用案例如下:
--暂停播放3d音效10379
local result = Actor:PauseSoundEffectById(Player:GetHostUin(), 10379, true)
RotateFaceToActor
参数及类型:
objid:number 生物对象ID
targetid:number 目标生物对象ID
返回值及类型:
bool:boolean 是否旋转成功
该方法的其他说明: 使指定生物对象旋转朝向目标生物对象
具体使用案例如下:
local result = Actor:RotateFaceToActor(objId, Player:GetHostUin())
GetMotion
参数及类型:
objid:number 对象ID
返回值及类型:
x:number 运动速度X
y:number 运动速度Y
z:number 运动速度Z(未移动时速度为0)
该方法的其他说明: 获取指定对象当前的移动速度,返回三个轴向的速度分量
具体使用案例如下:
local x, y, z = Actor:GetMotion(objId)
SetBeHurtTarget
参数及类型:
objid:number 生物对象ID
targetid:number 目标生物对象ID
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置指定生物对象的仇恨目标,用于AI战斗系统
具体使用案例如下:
local result = Actor:SetBeHurtTarget(objId, Player:GetHostUin())
GetActorFacade
参数及类型:
objid:number 对象ID
bhasequip:boolean 是否包含装备(默认false,仅玩家有效)
返回值及类型:
facade:string 对象外观描述信息(失败返回nil)
该方法的其他说明: 获取指定对象的外观描述信息,可设置是否包含装备信息(仅玩家有效,需要确保对象在场景中存在)
具体使用案例如下:
local facade = Actor:GetActorFacade(Player:GetHostUin()) --不带装备信息
local facade2 = Actor:GetActorFacade(Player:GetHostUin(),true) --附带装备信息目前只有使用avatar模型的玩家可以生效
CompareMainModel
参数及类型:
facade1:string 外观类型1
facade2:string 外观类型2
返回值及类型:
bool:boolean 是否相等(参数错误返回false)
该方法的其他说明: 比较两个主模型外观是否相等,通过外观描述信息进行对比
具体使用案例如下:
local bool = Actor:CompareMainModel(facade1, facade2)
PlayBodyParticleById
参数及类型:
objid:number 生物对象ID
particleId:number / string / table 粒子特效ID或ID数组
ptme:number 时长(单位:秒)
offset:table 偏移(默认{x=0,y=0,z=0})
rot:table 旋转(默认{x=0,y=0,z=0})
scale:table 缩放(默认{x=1,y=1,z=1})
返回值及类型:
bool:boolean 是否播放成功
该方法的其他说明: 在指定对象身上播放粒子特效,支持设置偏移、旋转和缩放,可批量播放多个特效
具体使用案例如下:
-- 对象上播放特效,特效id为1005,播放时间10秒,特效偏移y 2个方块位置,特效y旋转45,特效缩放为2倍
local result = Actor:PlayBodyParticleById(Player:GetHostUin(), 1005, 10, {x = 0, y = 2, z = 0}, {x = 0, y = 45, z = 0}, {x = 2, y = 2, z = 2})
StopBodyEffectById
参数及类型:
objid:number 生物对象ID
particleId:number / string / table 粒子特效ID或ID数组
返回值及类型:
bool:boolean 是否停止成功
该方法的其他说明: 停止指定对象身上正在播放的粒子特效,支持单个或批量停止
具体使用案例如下:
local result = Actor:StopBodyEffectById(Player:GetHostUin(), 1005)
SetBodyParticleTransform
参数及类型:
objid:number 生物对象ID
particleId:number / string / table 粒子特效ID或ID数组
offset:table 偏移(默认{x=0,y=0,z=0})
rot:table 旋转(默认{x=0,y=0,z=0})
scale:table 缩放(默认{x=1,y=1,z=1})
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置指定对象身上粒子特效的变换参数,包括偏移、旋转和缩放,支持批量设置
具体使用案例如下:
-- 修改对象上播放的特效,特效id为1005,播放时间10秒,特效偏移y 2个方块位置,特效y旋转45,特效缩放为2倍
local result = Actor:SetBodyParticleTransform(Player:GetHostUin(), 1005, {x = 0, y = 2, z = 0}, {x = 0, y = 45, z = 0}, {x = 2, y = 2, z = 2})
Jump
参数及类型:
objid:number 对象ID
返回值及类型:
bool:boolean 是否跳跃成功
该方法的其他说明: 使指定玩家或生物对象执行一次跳跃动作
具体使用案例如下:
local result = Actor:Jump(objId)
GetRidingActorObjId
参数及类型:
objid:number 角色对象ID
返回值及类型:
id:number 生物对象ID(失败返回0)
该方法的其他说明: 获取指定角色对象正在骑乘的生物对象ID
具体使用案例如下:
local ridingObjId = Actor:GetRidingActorObjId(Player:GetHostUin())
GetFaceDirection
参数及类型:
objid:number 对象ID
返回值及类型:
pos:table 轴向上的方向向量{x=number,y=number,z=number}(失败返回nil)
该方法的其他说明: 获取指定对象当前的朝向方向,返回三个轴向的方向向量
具体使用案例如下:
local face = Actor:GetFaceDirection(objId)
TryMoveToActor
参数及类型:
objid:number 执行动作的对象ID
targetObjid:number 目标对象ID
speed:number 移动速度
返回值及类型:
bool:boolean 是否移动成功
该方法的其他说明: 使指定对象向目标对象移动,可设置移动速度(注意:刚创建的对象需要加个等待时间)
具体使用案例如下:
local objs = World:SpawnCreature(x + 5, y + 1, z, 3400, 1, true, WorldId)
local objId = objs[1]
self:ThreadWait(0.2)
-- 创建嘟嘟鸟往房主走
local result = Actor:TryMoveToActor(objId, Player:GetHostUin(), 5)
SetFaceDirection
参数及类型:
objid:number 对象ID
x:number 轴向方向X
y:number 轴向方向Y
z:number 轴向方向Z
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置指定对象的朝向方向,通过三个轴向的方向向量控制
具体使用案例如下:
local result = Actor:SetFaceDirection(objId, 0, 90, 0)
KillSelf
参数及类型:
objid:number 生物对象ID
返回值及类型:
bool:boolean 是否击败成功
该方法的其他说明: 击败指定生物对象,使其死亡
具体使用案例如下:
local result = Actor:KillSelf(objId)
SetAttr
参数及类型:
objid:number 角色对象ID
atttype:number 属性类型枚举(RoleAttr)RoleAttr
val:number 属性值
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置指定角色对象的属性值,支持多种属性类型(血量、速度、体力等),属性改变会触发事件
具体使用案例如下:
-- 设置攻击力300
local result = Actor:SetAttr(objId, RoleAttr.Atk, 300)
IncreasesAttr
参数及类型:
objid:number 角色对象ID
atttype:number 属性类型枚举(RoleAttr)RoleAttr
val:number 增加值
返回值及类型:
bool:boolean 是否增加成功
该方法的其他说明: 增加指定角色对象的属性值,在原有属性值基础上增加指定数值
具体使用案例如下:
local bool = Actor:IncreasesAttr(objid, atttype, val)
GetAttr
参数及类型:
objid:number 角色对象ID
atttype:number 属性类型枚举(RoleAttr)RoleAttr
返回值及类型:
num:number 属性值(失败返回nil)
该方法的其他说明: 获取指定角色对象的属性值,支持多种属性类型(血量、速度、体力等)
具体使用案例如下:
-- 获取最大血量
local maxHp = Actor:GetAttr(objId, RoleAttr.MaxHp)
SetActorPermissions
参数及类型:
objid:number 对象ID
ability:number 行为枚举(Ability)Ability
switch:boolean 是否开启
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置指定对象的行为权限,控制对象的各种能力开关(推荐接口)
具体使用案例如下:
local result = Actor:SetActorPermissions(objId, Ability.EnableBeattacked, true)
GetActorPermissions
参数及类型:
objid:number 对象ID
ability:number 行为枚举(Ability)Ability
返回值及类型:
bool:boolean 权限开关状态
该方法的其他说明: 获取指定对象的行为权限状态,查询对象的各种能力开关(推荐接口)
具体使用案例如下:
local state = Actor:GetActorPermissions(objId, Ability.Attack)
SetFaceYaw
参数及类型:
objid:number 生物对象ID
yaw:number 面朝角度
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置指定生物对象的水平朝向角度(偏航角)
具体使用案例如下:
local result = Actor:SetFaceYaw(objId, 90)
GetFaceYaw
参数及类型:
objid:number 生物对象ID
返回值及类型:
num:number 面朝角度(失败返回nil)
该方法的其他说明: 获取指定生物对象的水平朝向角度(偏航角)
具体使用案例如下:
local yaw = Actor:GetFaceYaw(objId)
SetFacePitch
参数及类型:
objid:number 生物对象ID
pitch:number 仰望角度
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置指定生物对象的垂直仰望角度(俯仰角)
具体使用案例如下:
local pitch = Actor:GetFacePitch(Player:GetHostUin())
GetFacePitch
参数及类型:
objid:number 生物对象ID
返回值及类型:
num:number 仰望角度(失败返回nil)
该方法的其他说明: 获取指定生物对象的垂直仰望角度(俯仰角)
具体使用案例如下:
local num = Actor:GetFacePitch(objid)
SetPosition
参数及类型:
objid:number 角色对象ID
x:number 目标X坐标
y:number 目标Y坐标
z:number 目标Z坐标
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置指定角色对象的位置坐标,支持玩家和生物,坐标会自动转换为内部单位
具体使用案例如下:
local result = Actor:SetPosition(objId, x, y, z)
GetPosition
参数及类型:
objid:number 对象ID
返回值及类型:
x:number 目标X坐标
y:number 目标Y坐标
z:number 目标Z坐标(失败返回nil)
该方法的其他说明: 获取指定对象的位置坐标,返回三个轴向的坐标值,坐标会自动转换为外部单位
具体使用案例如下:
local x, y, z = Actor:GetPosition(objId)
ChangeCustomModel
参数及类型:
objid:number 对象ID
modleName:string 对象外观描述
返回值及类型:
bool:boolean 是否改变成功
该方法的其他说明: 改变指定对象的外观模型,支持多种模型类型(道具、生物、方块、实体等)
具体使用案例如下:
-- 改变玩家外观为萤火虫
local result = Actor:ChangeCustomModel(Player:GetHostUin(), "mob_3419")
RecoverinitialModel
参数及类型:
objid:number 对象ID
返回值及类型:
bool:boolean 是否恢复成功
该方法的其他说明: 恢复指定对象到初始外观模型,清除自定义外观设置
具体使用案例如下:
local result = Actor:RecoverinitialModel(Player:GetHostUin())
ActorHurt
参数及类型:
objid:number 攻击者对象ID
targetid:number 目标对象ID
damage:number 伤害值
attacktype:number 伤害类型枚举(HurtType)HurtType
ignoreResist:boolean 忽略伤害抵抗
ignoreTriggerEvent:boolean 忽略触发伤害事件
返回值及类型:
bool:boolean 是否造成伤害成功
该方法的其他说明: 使指定对象对目标对象造成伤害,支持设置伤害类型、是否忽略伤害抵抗和触发事件
具体使用案例如下:
-- 玩家对生物造成近战伤害10点
local result = Actor:ActorHurt(Player:GetHostUin(), objId, 10, HurtType.Melee)
SetImmuneType
参数及类型:
objid:number 对象ID
immunetype:number 伤害类型枚举(HurtType,-1表示免疫所有伤害)HurtType
isadd:boolean 是否开启免疫
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置指定对象对特定伤害类型的免疫状态,支持设置无敌状态(immunetype=-1)
具体使用案例如下:
-- 设置免疫爆炸伤害
local result = Actor:SetImmuneType(objId, HurtType.Bomb, true)
-- 设置免疫所有伤害
Actor:SetImmuneType(objId, HurtType.All, true)
ChangActorMoveType
参数及类型:
objid:number 对象ID
moveMode:number 移动模式枚举(MoveType)MoveType
返回值及类型:
bool:boolean 是否改变成功(角色没有对应能力时返回失败)
该方法的其他说明: 改变指定对象的移动方式,支持行走、游泳、飞行等模式,如果角色没有对应能力则返回失败
具体使用案例如下:
local result = Actor:ChangActorMoveType(Player:GetHostUin(), MoveType.Flying)
GetActorMovementMode
参数及类型:
objid:number 对象ID
返回值及类型:
num:number 移动模式枚举(MoveType)(失败返回nil)
该方法的其他说明: 获取指定角色对象当前的移动模式
具体使用案例如下:
local moveType = Actor:GetActorMovementMode(Player:GetHostUin())
GetBoundSzie
参数及类型:
objid:number 角色对象ID
返回值及类型:
vec:table 模型大小{x=长,y=高,z=宽}(失败返回nil)
该方法的其他说明: 获取指定角色对象的模型边界大小,返回长、高、宽三个维度的尺寸
具体使用案例如下:
local size = Actor:GetBoundSzie(objId)
RandomFacadeID
参数及类型: 无
返回值及类型:
id:string 随机外观ID(失败返回nil)
该方法的其他说明: 从外观列表中随机获取一个外观ID字符串,包括生物、角色、装扮等类型
具体使用案例如下:
local facadeID = Actor:RandomFacadeID()
GetObjType
参数及类型:
objid:number 对象ID
返回值及类型:
itype:number 对象类型枚举(ObjType)(失败返回nil)
该方法的其他说明: 获取指定对象的类型,判断对象是玩家、生物还是其他类型
具体使用案例如下:
local objType = Actor:GetObjType(objId)
TryMoveToPos
参数及类型:
objid:number 角色对象ID
x:number 目标X坐标
y:number 目标Y坐标
z:number 目标Z坐标
cancontrol:boolean 是否能控制(默认true)
bshowtip:boolean 是否显示提示(默认false)
返回值及类型:
bool:boolean 是否移动成功
该方法的其他说明: 尝试移动指定角色对象到目标位置,使用寻路算法,支持设置是否可控制和是否显示提示
具体使用案例如下:
local result = Actor:TryMoveToPos(objId, x + 10, y + 1, z, false, false)
AppendSpeed
参数及类型:
objid:number 对象ID
vx:number 轴向速度X
vy:number 轴向速度Y
vz:number 轴向速度Z
返回值及类型:
bool:boolean 是否附加成功
该方法的其他说明: 给指定对象附加一个速度,在三个轴向上叠加速度分量
具体使用案例如下:
-- 给对象增加个x轴20,y轴10,z轴0的移动速度
local result = Actor:AppendSpeed(objId, 20, 10, 0)
FindNearestBlock
参数及类型:
objid:number 对象ID
blockid:number / string 查找的方块类型ID
blockRange:number 查找范围(传1表示1格方块距离)
返回值及类型:
x:number 方块坐标X
y:number 方块坐标Y
z:number 方块坐标Z(失败返回nil)
该方法的其他说明: 在指定对象附近查找某个类型方块的最近位置,返回方块坐标
具体使用案例如下:
local x, y, z = Actor:FindNearestBlock(objid, blockid, blockRange)
GetEyeHeight
参数及类型:
objid:number 角色对象ID
返回值及类型:
num:number 眼睛高度(失败返回nil)
该方法的其他说明: 获取指定角色对象的眼睛高度,用于视线计算
具体使用案例如下:
local height = Actor:GetEyeHeight(objId)
ClearActorWithId
参数及类型:
actorid:number / string 生物类型ID
bkill:boolean 是否杀死生物(默认false,影响是否产生掉落物)
worldId:number 星球ID(默认当前主机所在星球)
返回值及类型:
bool:boolean 是否清除成功
该方法的其他说明: 清除指定类型的所有生物,可设置是否杀死生物(影响是否产生掉落物)和指定星球
具体使用案例如下:
local result = Actor:ClearActorWithId(3400, false, WorldId)
local count = 0
for _, objId in ipairs(objs) do
local obj = GameObject:FindObject(objId)
if obj then
count = count + 1
end
end
IsExist
参数及类型:
objid:number 对象ID
返回值及类型:
bool:boolean 是否存在
该方法的其他说明: 检测指定对象是否存在且存活
具体使用案例如下:
local isExist = Actor:IsExist(objId)
PlayAnim
参数及类型:
objid:number 对象ID
animid:number / string 动作ID
speed:number 播放速度
loop:number / boolean 播放模式(AnimMode)或是否循环AnimMode
返回值及类型:
bool:boolean 是否播放成功
该方法的其他说明: 在指定对象身上播放动作,支持设置播放速度和循环模式,播放成功会触发事件
具体使用案例如下:
local result = Actor:PlayAnim(objId, 100100, 1, AnimMode.Default)
PlayHandAnim
参数及类型:
objid:number 对象ID
animid:number / string 动作ID
speed:number 播放速度
loop:number / boolean 播放模式(AnimMode)或是否循环AnimMode
返回值及类型:
bool:boolean 是否播放成功
该方法的其他说明: 在指定对象的手部播放动作,支持设置播放速度和循环模式
具体使用案例如下:
local result = Actor:PlayHandAnim(objId, 100100, 1, AnimMode.Once)
MountActor
参数及类型:
objid:number 对象ID
rideobjid:number 被骑乘对象ID
isContrl:boolean 是否控制
isCloseAI:boolean 是否关闭AI
返回值及类型:
bool:boolean 是否骑乘成功
该方法的其他说明: 使指定角色对象骑乘到目标对象上,支持设置是否控制和是否关闭AI
具体使用案例如下:
local result = Actor:MountActor(Player:GetHostUin(), objId, true, true)
DisMountActor
参数及类型:
objid:number 对象ID
返回值及类型:
bool:boolean 是否取消成功
该方法的其他说明: 使指定角色对象取消当前骑乘状态
具体使用案例如下:
local result = Actor:DisMountActor(Player:GetHostUin())
PickupActor
参数及类型: objidA:number:对象objidA,objidB:number:对象objidB
返回值及类型:
bool:boolean 是否举起成功
该方法的其他说明: 使角色A尝试举起角色B
具体使用案例如下:
-- local result = Actor:PickupActor(uin, objId)
-- Actor:EscapePickup(objId) --取消抓举
--偏移量方块距离
local offset = {
x = 0,
y = 1,
z = 0,
}
--偏移量
local rotate = {
x = 0,
y = 0,
z = 0,
}
local result = Actor:PickupActor(uin,objId,100502,100113,offset,rotate)
TryPickupActorForward
参数及类型:
objid:number 角色对象ID
distance:number 抓取距离
返回值及类型:
bool:boolean 是否抓取成功
该方法的其他说明: 尝试抓取指定角色前方指定距离内的对象,失败时会播放尝试举起动作
具体使用案例如下:
local result = Actor:TryPickupActorForward(Player:GetHostUin(), 30)
DropActor
参数及类型:
objid:number 投掷动作对象ID
dir:table 投掷方向{x=number,y=number,z=number}
isThrow:boolean 是否投掷
speed:number 投掷速度
hasInertance:boolean 是否有惯性
返回值及类型:
bool:boolean 是否投掷成功
该方法的其他说明: 尝试投掷指定角色对象,支持设置投掷方向、速度、是否投掷和是否有惯性
具体使用案例如下:
local result = Actor:DropActor(Player:GetHostUin(), {x = 1, y = 2, z = 0}, true, 500, true)
EscapePickup
参数及类型:
objid:number 被抓举的对象ID
返回值及类型:
bool:boolean 是否逃脱成功
该方法的其他说明: 使指定被抓举的对象尝试逃脱抓举状态
具体使用案例如下:
self:ThreadWait(0.1)
local result = Actor:EscapePickup(objId)
SetBtreeVarValue
参数及类型:
objid:number 生物对象ID
varid:string 变量ID
val:any变量值
返回值及类型:
bool:boolean 是否设置成功(组数据无法设置)
该方法的其他说明: 设置指定生物对象行为树的变量值,组数据无法设置
具体使用案例如下:
local result = Actor:SetBtreeVarValue(objId, "7321982627776387751_26396", 1)
GetBtreeVarValue
参数及类型:
objid:number 生物对象ID
varid:string 变量ID
返回值及类型:
val:any变量值(失败返回nil,组数据无法获取)
该方法的其他说明: 获取指定生物对象行为树的变量值,组数据无法获取
具体使用案例如下:
local result = Actor:GetBtreeVarValue(objId, "7321982627776387751_26396")
GetDropItemInstanceId
参数及类型:
objid:number 掉落物对象ID
返回值及类型:
id:string 道具实例ID(失败返回nil)
该方法的其他说明: 根据掉落物对象ID获取对应的道具实例ID
具体使用案例如下:
local id = Actor:GetDropItemInstanceId(objid)
SetAblePick
参数及类型:
objid:number 掉落物对象ID
able:boolean 是否可以拾取
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置指定掉落物对象是否可以被拾取
具体使用案例如下:
local result = Actor:SetAblePick(objId, false)
GetEntityFacade
参数及类型:
prefab:string 实体类型名称
返回值及类型:
facade:string 外观描述信息(失败返回nil)
该方法的其他说明: 根据实体类型名称获取对应的外观描述信息,支持官方模板实体和自定义实体
具体使用案例如下:
--传入自定义实体prefabid
local result = Actor:GetEntityFacade("s_7509852525127419914_23098")
PickupItem
参数及类型:
objid:number 角色对象ID
itemobjid:number 掉落物或投掷物对象ID
bforcepickup:boolean 是否强制拾取(默认false)
返回值及类型:
num:number 拾取数量(失败返回0)
该方法的其他说明: 使指定角色对象拾取地上的掉落物或投掷物,支持强制拾取
具体使用案例如下:
local result = Actor:PickupItem(Player:GetHostUin(), objId)
if result then
print("拾取掉落物成功 数量 = " ,result)
end
GetPickupObjID
参数及类型:
objid:number 角色对象ID
roleType:number 角色类型(1=举起者CARRYING, 2=被举起者CARRIED)
返回值及类型:
id:number 角色对象ID(失败返回0)
该方法的其他说明: 获取指定角色举起的角色对象ID或被举起的角色对象ID
具体使用案例如下:
local id = Actor:GetPickupObjID(objid, roleType)
HasTags
参数及类型:
objid:number 对象ID
tags:string / table 标签或标签数组
mathcmode:number 匹配方式(MatchMode)MatchMode
bexactmatch:boolean 每条标签是否精确匹配
返回值及类型:
bool:boolean 是否具有标签
该方法的其他说明: 检测指定对象是否具有指定标签,支持部分匹配方式和精确匹配
具体使用案例如下:
local result = Actor:HasTags(uin, {"A.B.C", "A.D.E", "F.G.H" },MatchMode.All,true)
local result2 = Actor:HasTags(uin, {"A.B.C", "D.E", "S.T.D" },MatchMode.All,false)
local result3 = Actor:HasTags(uin, {"A.B.C","B.C", },MatchMode.Any,false)
local result4 = Actor:HasTags(uin, { "G.H" },MatchMode.Any,false)
GetTags
参数及类型:
objid:number 对象ID
返回值及类型:
tags:table 标签数组(失败返回nil)
该方法的其他说明: 获取指定对象的所有标签列表
具体使用案例如下:
local tags = Actor:GetTags(uin)
if tags then
print("玩家定义中的标签:", tags)
end
AddTags
参数及类型:
objid:number 对象ID
tags:string / table 标签或标签数组(数值字母下划线组合)
icount:number 引用计数(默认1)
返回值及类型:
bool:boolean 是否添加成功
该方法的其他说明: 为指定对象添加标签,支持批量添加,标签由数值、字母和下划线组合,支持引用计数
具体使用案例如下:
local tags = { "A.B.C", "A.D.E", "F.G.H" }
local result = Actor:AddTags(uin, tags, 1)
if result then
print("添加标签成功", result)
end
RemoveTags
参数及类型:
objid:number 对象ID
tags:string / table 标签或标签数组
icount:number 引用计数(默认0,传0全部删除)
返回值及类型:
bool:boolean 是否删除成功
该方法的其他说明: 从指定对象删除标签,支持批量删除,引用计数为0时全部删除
具体使用案例如下:
local bool = Actor:RemoveTags(objid, tags, icount)
ClearTags
参数及类型:
objid:number 对象ID
返回值及类型:
bool:boolean 是否清空成功
该方法的其他说明: 清空指定对象的所有标签
具体使用案例如下:
local result = Actor:ClearTags(uin)
PlayAnimByObj
参数及类型:
objidA:number 对象ID A
objidB:number 对象ID B
breplay:boolean 是否重新播放(默认false)
返回值及类型:
bool:boolean 是否播放成功(仅玩家、生物、实体生效)
该方法的其他说明: 使对象A播放对象B的动作,仅玩家、生物和实体生效,模型外观最好一致
具体使用案例如下:
local ret = Actor:PlayAnim(uin, "100101", 1, AnimMode.Loop) -- 玩家播放奔跑动画
if ret then
self:ThreadWait(0.2)
-- 如果objId对应的模型如果没有动画 就播放不成功 跟随播放的生物最好不要动 可能会被其他状态打断
ret = Actor:PlayAnimByObj(objId , uin ,true) -- 重新播放
end
玩家模块管理接口 Player
具体函数名及描述如下:
序号 函数名 函数描述
1 GetHostUin(...) 获取房主Uin
2 SetGameResults(...) 设置对局结果
3 SetGameWin(...) 设置玩家胜利
4 GetCurToolID(...) 获取手持道具ID
5 GetShotcutIndex(...) 获取当前快捷栏索引(索引从1开始)
6 SetShotcutIndex(...) 设置当前快捷栏索引
7 SetSkillCD(...) 设置技能CD
8 ReviveToPos(...) 玩家在指定位置复活
9 SetRevivePoint(...) 设置玩家复活点
10 NotifyGameInfo2Self(...) 显示飘窗文字
11 RotateCamera(...) 旋转摄像机角度
12 ShakeCamera(...) 抖动镜头
13 StopShakeCamera(...) 停止抖动镜头
14 RotateCameraToActor(...) 旋转摄像机朝向目标
15 ChangeViewMode(...) 切换视角模式
16 IsEquipByResID(...) 是否装备指定装备
17 IsHandWeaponSpellEnhancementActive(...) 手持武器铭刻法术强化方向激活状态
18 GetAimPos(...) 获取准心位置
19 GetAimDir(...) 获取准心方向
20 GetRayOriginPos(...) 获取射线起点位置
21 PlayMusic(...) 播放背景音乐2D
22 StopMusic(...) 停止背景音乐2D
23 PauseMusic(...) 暂停/恢复背景音乐
24 OpenUIView(...) 打开UI界面
25 HideUIView(...) 隐藏UI界面
26 GetClientInfo(...) 获取客机类型
27 GetNickname(...) 获取玩家昵称
28 OpenDevGoodsBuyDialog(...) 打开开发者商品购买弹框
29 OpenDevGoodsBuyDetailedDialog(...) 打开开发者商品详情页
30 OpenDevStore(...) 打开开发者商店
31 OpenDevStoreTab(...) 打开开发者商店二级分类
32 OpenDevGoodsPage(...) 打开开发者商店一级页面
33 GetMiniCurrency(...) 获取迷你币数量
34 GetPlayerCostStatic(...) 获取玩家消费统计
35 StandReportEvent(...) 上报埋点事件
36 ClearMotion(...) 清空运动趋势
37 SetMobileVibrate(...) 手机震动
38 GetScreenSpacePos(...) 获取屏幕坐标
39 GetScreenSpacePosV2(...) 获取屏幕坐标V2
40 SendFriendApply(...) 发送好友申请
41 SetCameraPosTransformTo(...) 摄像机移动到位置
42 SetCameraRotTransformTo(...) 摄像机旋转到角度
43 SetCameraFovTransformTo(...) 摄像机FOV到值
44 SetCameraPosTransformBy(...) 摄像机按偏移移动
45 SetCameraRotTransformBy(...) 摄像机相对旋转
46 SetCameraFovTransformBy(...) 摄像机按偏移调整视野
47 SetCameraAttrState(...) 设置摄像机属性开关
48 SetCameraRotMode(...) 设置摄像机旋转模式
49 SetCameraMountObj(...) 摄像机挂载对象
50 SetCameraMountPos(...) 摄像机挂载位置
51 ResetCameraAttr(...) 重置摄像机
52 OpenBoxByPos(...) 打开箱子
53 GetFirstInviter(...) 获取首次邀请人
54 HasFriend(...) 是否好友
55 GetMiniVipLevel(...) 获取VIP等级
56 ChangPlayerMoveType(...) 切换移动方式
57 PlayAdvertising(...) 播放广告
58 OpenInnerView(...) 打开/关闭游戏内弹窗
59 SetItemAttAction(...) 设置道具能力开关
60 ForceOpenBoxUI(...) 强制打开箱子UI
61 ItemSkillCDEnter(...) 道具技能进入冷却
62 ItemSkillCDDone(...) 道具技能结束冷却
63 SetGunActionState(...) 设置枪械动作开关
64 GetViewMode(...) 获取视角模式
65 GetRevivePoint(...) 获取复活点
66 GetRentCloudServerOwner(...) 获取云房间房主
67 RemovePlayer(...) 将玩家移出本局
68 GetFriendList(...) 获取好友列表
69 SetSettingEnable(...) 设置游戏开关
70 SetSettingAbility(...) 设置游戏设置权限
71 RotateMainModel(...) 旋转玩家模型
72 EnterGunState(...) 进入枪械状态
73 LevelGunState(...) 离开枪械状态
GetHostUin
参数及类型: 无
返回值及类型:
ret:number / nil 玩家Uin
该方法的其他说明: 获取房主Uin(云服/房间服环境优先走房主Uin)
具体使用案例如下:
local uin = Player:GetHostUin()
SetGameResults
参数及类型:
objid:number 玩家Uin
result:number 游戏结果(TeamResults)TeamResults
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 设置玩家的对局结果
具体使用案例如下:
local result = Player:SetGameResults(Player:GetHostUin(), TeamResults.Win)
SetGameWin
参数及类型:
objid:number 玩家Uin
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 结束游戏并将指定玩家设为胜者(会触发游戏结算)
具体使用案例如下:
local result = Player:SetGameWin(Player:GetHostUin())
GetCurToolID
参数及类型:
objid:number 玩家Uin
返回值及类型:
ret:number / string / nil 道具ID
该方法的其他说明: 获取玩家当前手持道具ID
具体使用案例如下:
local toolID = Player:GetCurToolID(Player:GetHostUin())
GetShotcutIndex
参数及类型:
objid:number 玩家Uin
返回值及类型:
ret:number / nil 索引值
该方法的其他说明: 获取玩家当前选中快捷栏索引(索引从1开始)
具体使用案例如下:
local index = Player:GetShotcutIndex(Player:GetHostUin())
SetShotcutIndex
参数及类型:
objid:number 玩家Uin
index:number 快捷栏索引(1~8)
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 设置玩家当前选中快捷栏索引(1~8)
具体使用案例如下:
local result = Player:SetShotcutIndex(Player:GetHostUin(), 2)
SetSkillCD
参数及类型:
objid:number 玩家Uin
itemid:number / string 道具类型或资源id
cd:number 冷却时间
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 设置道具技能冷却时间
具体使用案例如下:
local result = Player:SetSkillCD(Player:GetHostUin(), 12005, 10)
ReviveToPos
参数及类型:
objid:number 玩家Uin
x:number / table 方块坐标x或坐标表{x=方块坐标x,y=方块坐标y,z=方块坐标z,worldId=星球ID}
y:number / nil 方块坐标y
z:number / nil 方块坐标z
worldId:number / nil 星球ID
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 使玩家在指定方块坐标位置复活(支持传入坐标表)
具体使用案例如下:
local result = Player:ReviveToPos(Player:GetHostUin(), x, y, z)
SetRevivePoint
参数及类型:
objid:number 玩家Uin
x:number / table 方块坐标x或坐标表{x=方块坐标x,y=方块坐标y,z=方块坐标z,worldId=星球ID}
y:number / nil 方块坐标y
z:number / nil 方块坐标z
worldId:number / nil 星球ID
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 设置玩家复活点(方块坐标)
具体使用案例如下:
local result = Player:SetRevivePoint(Player:GetHostUin(), x, y, z)
NotifyGameInfo2Self
参数及类型:
objid:number 玩家Uin
info:string 文本内容
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 对玩家显示飘窗文字
具体使用案例如下:
local result = Player:NotifyGameInfo2Self(Player:GetHostUin(), "飘窗提示")
RotateCamera
参数及类型:
objid:number 玩家Uin
yaw:number 视角偏航角
pitch:number 视角俯仰角
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 旋转玩家摄像机角度(支持平滑/修正Yaw)
具体使用案例如下:
local result = Player:RotateCamera(Player:GetHostUin(), 45, 0)
ShakeCamera
参数及类型:
objid:number 玩家Uin
duration:number 持续时间
power:number 强度(1~1000)
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 抖动玩家镜头
具体使用案例如下:
local result = Player:ShakeCamera(Player:GetHostUin(), 1, 20)
StopShakeCamera
参数及类型:
objid:number 玩家Uin
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 停止抖动玩家镜头
具体使用案例如下:
local result = Player:StopShakeCamera(Player:GetHostUin())
RotateCameraToActor
参数及类型:
objid:number 玩家Uin
targetid:number 目标对象objid
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 将玩家摄像机朝向指定目标对象
具体使用案例如下:
local result = Player:RotateCameraToActor(Player:GetHostUin(), objId)
ChangeViewMode
参数及类型:
objid:number 玩家Uin
viewmode:number 视角枚举(ViewPortType)ViewPortType
islock:bool是否锁定
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 切换玩家视角模式
具体使用案例如下:
local result = Player:ChangeViewMode(Player:GetHostUin(), ViewPortType.Main, false)
IsEquipByResID
参数及类型:
objid:number 玩家Uin
itemid:number / string 道具类型或资源id
返回值及类型:
ret:boolean 是否已装备
该方法的其他说明: 判断玩家是否装备了指定装备(支持资源id或道具类型)
具体使用案例如下:
local result = Player:IsEquipByResID(Player:GetHostUin(), 12202)
IsHandWeaponSpellEnhancementActive
参数及类型:
uin:number 玩家Uin
enhanceIndex:number 强化方向索引(1-8)
返回值及类型:
ret:boolean 是否激活
该方法的其他说明: 判断玩家当前手持武器的铭刻法术强化方向是否激活
具体使用案例如下:
local ret = Player:IsHandWeaponSpellEnhancementActive(uin, enhanceIndex)
GetAimPos
参数及类型:
objid:number 玩家Uin
返回值及类型:
x:number / nil 坐标x
y:number / nil 坐标y
z:number / nil 坐标z
该方法的其他说明: 获取玩家准心射线命中点位置
具体使用案例如下:
local x, y, z = Player:GetAimPos(Player:GetHostUin())
GetAimDir
参数及类型:
objid:number 玩家Uin
返回值及类型:
dir:table / nil 单位方向向量{x=单位方向x,y=单位方向y,z=单位方向z}
该方法的其他说明: 获取玩家准心方向单位向量
具体使用案例如下:
local dir = Player:GetAimDir(objid)
GetRayOriginPos
参数及类型:
objid:number 玩家Uin
返回值及类型:
x:number / nil 坐标x
y:number / nil 坐标y
z:number / nil 坐标z
该方法的其他说明: 获取玩家射线检测起点位置
具体使用案例如下:
local x,y,z = Player:GetRayOriginPos(objid)
PlayMusic
参数及类型:
objid:number 玩家Uin
musicId:string 声音ID
volume:number 音量
pitch:number 音调
isLoop:bool是否循环
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 对玩家播放2D背景音乐
具体使用案例如下:
local result = Player:PlayMusic(Player:GetHostUin(), 10002, 100, 1, false)
StopMusic
参数及类型:
objid:number 玩家Uin
musicId:string 声音ID
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 停止玩家播放的2D背景音乐
具体使用案例如下:
local result = Player:StopMusic(Player:GetHostUin(), 10002)
PauseMusic
参数及类型:
objid:number 玩家Uin
musicId:string 声音ID
pause:booltrue暂停/false恢复
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 暂停或恢复玩家播放的背景音乐
具体使用案例如下:
local result = Player:PauseMusic(Player:GetHostUin(), 10002, true)
OpenUIView
参数及类型:
objid:number 玩家Uin
uiname:number 自定义UIID
effectid:number / nil 动作ID(可缺省)
time:number / nil 动画时间(可缺省)
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 打开一个自定义UI界面(可选播放动作与动画时间)
具体使用案例如下:
local result = Player:OpenUIView(Player:GetHostUin(), "7482986899365911542-22886")
HideUIView
参数及类型:
objid:number 玩家Uin
uiname:number 自定义UIID
effectid:number / nil 动作ID(可缺省)
time:number / nil 动画时间(可缺省)
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 隐藏一个自定义UI界面(可选播放动作与动画时间)
具体使用案例如下:
local result = Player:HideUIView(Player:GetHostUin(), "7482986899365911542-22886")
GetClientInfo
参数及类型:
uin:number / nil 玩家Uin(兼容参数,当前未使用)
返回值及类型:
ret:number 设备类型(DeviceType:1 PC 2 Android 3 iOS)
该方法的其他说明: 获取当前客户端设备类型
具体使用案例如下:
local ret = Player:GetClientInfo(uin)
GetNickname
参数及类型:
objid:number 玩家Uin
返回值及类型:
name:string / nil 玩家昵称
该方法的其他说明: 获取玩家昵称
具体使用案例如下:
local name = Player:GetNickname(objid)
OpenDevGoodsBuyDialog
参数及类型:
objid:number 玩家Uin
devGoodsId:number 商品ID
customDesc:string 自定义商品描述
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 打开开发者商店商品购买弹框(开发者账号和自定义按钮点击事件可用)
具体使用案例如下:
local ret = Player:OpenDevGoodsBuyDialog(objid, devGoodsId, customDesc)
OpenDevGoodsBuyDetailedDialog
参数及类型:
objid:number 玩家Uin
devGoodsId:number 商品ID
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 打开开发者商店商品详情页(仅开发者可用)
具体使用案例如下:
local ret = Player:OpenDevGoodsBuyDetailedDialog(objid, devGoodsId)
OpenDevStore
参数及类型:
objid:number 玩家Uin
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 打开开发者商店(仅开发者可用)
具体使用案例如下:
local ret = Player:OpenDevStore(objid)
OpenDevStoreTab
参数及类型:
objid:number 玩家Uin
page:string 分类页码
name:string 分类名称
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 打开开发者商品二级分类页(仅开发者可用)
具体使用案例如下:
local ret = Player:OpenDevStoreTab(objid, page, name)
OpenDevGoodsPage
参数及类型:
playerid:number 玩家Uin
pagetype:number 页面枚举值(MiniShopPage)MiniShopPage
pagetitle:string 页面标题
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 打开开发者商店页一级页面(仅开发者可用)
具体使用案例如下:
local ret = Player:OpenDevGoodsPage(playerid, pagetype, pagetitle)
GetMiniCurrency
参数及类型:
objid:number 玩家Uin
itype:number 币种类型(MiniCurrency)MiniCurrency
返回值及类型:
num:number 数量
该方法的其他说明: 获取本地玩家迷你币数量(阻塞等待函数)
具体使用案例如下:
-- 获取玩家迷你币数量
local result = Player:GetMiniCurrency(playerUin, MiniCurrency.MiniCoin)
print("迷你币数量",result)
GetPlayerCostStatic
参数及类型:
call_back:function内部回调(缺省参数)
playerid:number 玩家Uin
tbegin:number 开始时间
tend:number 结束时间
costtype:number 查询类型(MiniCurrency)MiniCurrency
返回值及类型:
icount:number 消费数量(-1表示失败)
该方法的其他说明: 获取玩家消费统计(有5s冷却限制,频繁调用可能失败)
具体使用案例如下:
-- 获取玩家24小时内消耗的迷你币
local result = Player:GetPlayerCostStatic(Player:GetHostUin(), os.time() - 24 * 60 * 60, os.time(), MiniCurrency.MiniCoin)
StandReportEvent
参数及类型:
playerid:number 玩家Uin
eventstr:string 事件名称
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 上报玩家自定义埋点事件
具体使用案例如下:
local result = Player:StandReportEvent(Player:GetHostUin(), "自动测试上报")
ClearMotion
参数及类型:
uin:number 玩家Uin
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 清空玩家运动趋势(配合“禁止移动”使用)
具体使用案例如下:
local result = Player:ClearMotion(Player:GetHostUin())
SetMobileVibrate
参数及类型:
playerid:number 玩家Uin
time:number 震动时长(ms)
amplitude:number 震动强度(1~255)
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 触发玩家手机震动
具体使用案例如下:
local result = Player:SetMobileVibrate(Player:GetHostUin(), 1, 20)
GetScreenSpacePos
参数及类型:
playerid:number 玩家Uin
x:number 坐标x(cm)
y:number 坐标y(cm)
z:number 坐标z(cm)
返回值及类型: retX:number:x坐标 retY:number:y坐标
该方法的其他说明: 根据玩家Uin与3D坐标计算屏幕2D坐标(需要注意这里的X、Y、Z需要将方块坐标*100后来使用,例如原方块坐标为(1 ,7 ,1),则需要传入(100,700,100),之后版本会新增接口替代该接口。)
具体使用案例如下:
local screenX, screenY = Player:GetScreenSpacePos(Player:GetHostUin(), x, y, z)
GetScreenSpacePosV2
参数及类型:
playerid:number 玩家Uin
x:number 方块坐标x
y:number 方块坐标y
z:number 方块坐标z
返回值及类型: retX:number:x坐标 retY:number:y坐标
该方法的其他说明: 根据玩家Uin与方块坐标计算屏幕2D坐标(不能高频调用)
具体使用案例如下:
local retX = Player:GetScreenSpacePosV2(playerid, x, y, z)
SendFriendApply
参数及类型:
playerid:number 玩家Uin
uin2:number 目标玩家Uin
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 向指定玩家发送好友申请
具体使用案例如下:
local result = Player:SendFriendApply(Player:GetHostUin(), friendUin)
SetCameraPosTransformTo
参数及类型:
playerid:number 玩家Uin
vec:table 位置坐标(单位:方块)
animid:number 缓动枚举(Easing)Easing
time:number 动画时长
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 让玩家摄像机插值移动到指定位置
具体使用案例如下:
local result = Player:SetCameraPosTransformTo(Player:GetHostUin(), {x = 0, y = 100, z = 0}, Easing.ExpoIn, 0.2)
SetCameraRotTransformTo
参数及类型:
playerid:number 玩家Uin
vec:table 角度坐标
animid:number 缓动枚举(Easing)Easing
time:number 动画时长
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 让玩家摄像机插值旋转到指定角度
具体使用案例如下:
local result = Player:SetCameraRotTransformTo(Player:GetHostUin(), {x = 0, y = 45, z = 0}, Easing.Linear, 1)
SetCameraFovTransformTo
参数及类型:
playerid:number 玩家Uin
fov:number FOV值
animid:number 缓动枚举(Easing)Easing
time:number 动画时长
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 让玩家摄像机插值调整到指定FOV
具体使用案例如下:
local result = Player:SetCameraFovTransformTo(Player:GetHostUin(), 60, Easing.Linear, 1)
SetCameraPosTransformBy
参数及类型:
playerid:number 玩家Uin
vec:table 相对当前位置的偏移量
animid:number 缓动枚举(Easing)Easing
time:number 动画时长
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 在当前相机位置基础上再移动一段距离,镜头会平滑跟过去;传入的是相对偏移,不是地图上的目标点坐标。
具体使用案例如下:
local result = Player:SetCameraPosTransformBy(Player:GetHostUin(), {x = 0, y = 0, z = 100}, Easing.Linear, 1)
SetCameraRotTransformBy
参数及类型:
playerid:number 玩家Uin
vec:table 相对角度
animid:number 缓动枚举(Easing)Easing
time:number 动画时长
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 让玩家摄像机按相对角度进行插值旋转
具体使用案例如下:
-- 摄像机线性旋转,时间1秒
local result = Player:SetCameraRotTransformBy(Player:GetHostUin(), {x = 0, y = 100, z = 0}, Easing.Linear, 1)
SetCameraFovTransformBy
参数及类型:
playerid:number 玩家Uin
fov:number 相对当前FOV的增减量(非目标FOV)
animid:number 缓动枚举(Easing)Easing
time:number 动画时长
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 在当前视野(FOV)基础上再增减一段,平滑过渡;传入的是相对变化量,不是要设成的最终FOV。
具体使用案例如下:
local result = Player:SetCameraFovTransformBy(Player:GetHostUin(), 45, Easing.Linear, 1)
SetCameraAttrState
参数及类型:
playerid:number 玩家Uin
attr:number 摄像机属性(CameraModel)CameraModel
enable:bool是否启用
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 设置玩家摄像机属性开关
具体使用案例如下:
local result = Player:SetCameraAttrState(Player:GetHostUin(), CameraModel.MoveFollow, true)
SetCameraRotMode
参数及类型:
playerid:number 玩家Uin
attr:number 摄像机旋转模式(CameraRotate)CameraRotate
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 设置玩家摄像机旋转模式
具体使用案例如下:
local result = Player:SetCameraRotMode(Player:GetHostUin(), CameraRotate.AllDir)
SetCameraMountObj
参数及类型:
playerid:number 玩家Uin
objid:number 挂载对象ID
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 将玩家摄像机挂载到指定对象
具体使用案例如下:
local result = Player:SetCameraMountObj(Player:GetHostUin(), playerUin)
SetCameraMountPos
参数及类型:
playerid:number 玩家Uin
pos:table 挂载位置坐标
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 将玩家摄像机挂载到指定位置
具体使用案例如下:
local result = Player:SetCameraMountPos(Player:GetHostUin(), {x = x, y = y, z = z})
ResetCameraAttr
参数及类型:
playerid:number 玩家Uin
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 重置玩家摄像机到默认状态
具体使用案例如下:
local result = Player:ResetCameraAttr(Player:GetHostUin())
OpenBoxByPos
参数及类型:
objid:number 玩家Uin
x:number / table 方块x坐标或坐标table
y:number / nil 方块y坐标
z:number / nil 方块z坐标
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 打开指定坐标处的箱子
具体使用案例如下:
local result = Player:OpenBoxByPos(Player:GetHostUin(), x, y, z)
GetFirstInviter
参数及类型:
call_back:function内部回调(缺省参数)
objid:number 被邀请玩家Uin
返回值及类型:
uin:number / nil 邀请人玩家Uin(失败时回调错误码number)
该方法的其他说明: 获取玩家首次邀请人(阻塞接口,触发请求间隔10s)
具体使用案例如下:
local inviterUin = Player:GetFirstInviter(Player:GetHostUin())
HasFriend
参数及类型:
playerid:number 玩家Uin
friendid:number 目标玩家Uin
返回值及类型:
ret:boolean 是否成功上报
该方法的其他说明: 判断目标玩家是否为好友(阻塞接口)
具体使用案例如下:
local result = Player:HasFriend(Player:GetHostUin(), "123456")
GetMiniVipLevel
参数及类型:
playerid:number 玩家Uin
返回值及类型:
ret:boolean 是否成功上报
该方法的其他说明: 获取玩家VIP等级
具体使用案例如下:
local level = Player:GetMiniVipLevel(Player:GetHostUin())
ChangPlayerMoveType
参数及类型:
uin:number 玩家Uin
moveType:number 移动方式枚举(MoveType)MoveType
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 改变玩家移动方式
具体使用案例如下:
local result = Player:ChangPlayerMoveType(Player:GetHostUin(), MoveType.Flying)
PlayAdvertising
参数及类型:
objid:number 玩家Uin
adname:string 广告名称
返回值及类型:
code:number 执行结果(ErrorCode)ErrorCode
objid:number 玩家Uin
adname:string 广告名称
该方法的其他说明: 触发器播放广告接口
具体使用案例如下:
local code,uin,adname = Player:PlayAdvertising(Player:GetHostUin(),'测试广告')
if code == ErrorCode.OK then
print("广告播放成功")
else
print("广告播放失败")
end
OpenInnerView
参数及类型:
uin:number 玩家Uin
iview:number 弹窗类型枚举(InnerPopUpview)InnerPopUpview
bopen:bool是否打开
data:any / nil 弹窗附加数据(如储物箱需传入位置)
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 控制玩家侧游戏内弹窗显示与隐藏
具体使用案例如下:
local result = Player:OpenInnerView(Player:GetHostUin(), InnerPopUpview.InviteFriend, true)
local result2 = Player:OpenInnerView(Player:GetHostUin(),InnerPopUpview.StorageBox, true,{x=0,y = 7,z = 0}) -- 打开坐标(0 7 0)位置的储物箱
SetItemAttAction
参数及类型:
objid:number 玩家Uin
itemid:number / string 道具ID或资源ID
atttype:number 能力枚举(ItemAbility)ItemAbility
switch:bool是否开启
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 设置玩家道具能力开关(如是否可掉落,是否可丢弃)
具体使用案例如下:
local result = Player:SetItemAttAction(Player:GetHostUin(), 10025, ItemAbility.Drop, true)
ForceOpenBoxUI
参数及类型:
objid:number 玩家Uin
itemid:number 枚举(WorkStage)Stage
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 强制打开指定箱子/工作台UI
具体使用案例如下:
local result = Player:ForceOpenBoxUI(Player:GetHostUin(), WorkStage.Repair)
ItemSkillCDEnter
参数及类型:
objid:number 玩家Uin
itemid:number / string 道具ID或资源ID
cd:number / nil 冷却时长
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 让指定道具技能进入冷却(可指定CD时长)
具体使用案例如下:
local result = Player:ItemSkillCDEnter(Player:GetHostUin(), 12005)
ItemSkillCDDone
参数及类型:
objid:number 玩家Uin
itemid:number / string 道具ID或资源ID
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 结束指定道具技能冷却
具体使用案例如下:
local result = Player:ItemSkillCDDone(Player:GetHostUin(), 12005)
SetGunActionState
参数及类型:
objid:number 玩家Uin
action:number 枪械动作枚举(GunActionBan)GunActionBan
switch:bool是否开启
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 开关玩家枪械相关能力(开火、开镜等,具体项见枚举 GunActionBan)
具体使用案例如下:
local result = Player:SetGunActionState(Player:GetHostUin(), GunActionBan.AimFire, true)
GetViewMode
参数及类型:
uin:number 玩家Uin
返回值及类型:
ret:number / nil 视角模式(ViewPortType)
该方法的其他说明: 查询玩家当前视角模式
具体使用案例如下:
local ret = Player:GetViewMode(uin)
GetRevivePoint
参数及类型:
uin:number 玩家Uin
worldId:number / nil 星球ID
返回值及类型:
x:number / nil 方块x
y:number / nil 方块y
z:number / nil 方块z
worldId:number / nil 复活点所在星球ID
该方法的其他说明: 获取玩家复活点的方块坐标
具体使用案例如下:
local x,y,z,worldId = Player:GetRevivePoint(uin, worldId)
GetRentCloudServerOwner
参数及类型: 无
返回值及类型:
uin:number / nil 房主玩家Uin
该方法的其他说明: 在租赁云房间中取当前房间房主是谁(仅租赁云服生效)
具体使用案例如下:
local uin = Player:GetRentCloudServerOwner()
RemovePlayer
参数及类型:
objid:number 玩家Uin
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 让玩家输掉本局并离开当前对局。
具体使用案例如下:
local ret = Player:RemovePlayer(objid)
GetFriendList
参数及类型:
uin:number 玩家Uin
index:number 起始索引
size:number 获取数量
返回值及类型:
totalnum:number 好友总人数
friendlist:table 好友列表{..,{name = string,uin = number,headframe = string,live = bool},...},...}
该方法的其他说明: 分页取好友,把总人数和这一页好友信息回给主机。
具体使用案例如下:
-- 获取玩家好友列表,从第1个好友开始,总共20个好友信息
local maxnum,infos = Player:GetFriendList(playerUin,1,20)
print("好友最大好友数量",maxnum)
print("好友信息列表",infos)
if infos then
for i = 1, #infos, 1 do
print("好友昵称",infos[i].name)
print("好友UIn",infos[i].uin)
print("好友头像",infos[i].headframe)
print("是否在线",infos[i].live)
end
SetSettingEnable
参数及类型:
playerid:number 玩家Uin
itype:number 设置项(GameSetting)GameSetting
enable:bool是否开启
返回值及类型:
ret:boolean 是否生效
该方法的其他说明: 改游戏里某项开关(如开镜、镜头抖、自动跳等),并立刻生效到当前局。
具体使用案例如下:
-- 设置玩家相机抖动关闭
local result = Player:SetSettingEnable(playerUin, GameSetting.CameraShake,false)
SetSettingAbility
参数及类型:
playerid:number 玩家Uin
itype:number 设置项(GameSetting)GameSetting
enable:bool是否允许修改
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 允许或禁止玩家在设置界面里改某一项。
具体使用案例如下:
-- 设置玩家相机抖动按钮不可点击
local result = Player:SetSettingAbility(playerUin, GameSetting.CameraShake,false)
RotateMainModel
参数及类型:
uin:number 玩家Uin
yaw:number 水平角
pitch:number 俯仰角
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 转动本机玩家模型的朝向,角度会自动限制在合法范围。
具体使用案例如下:
-- 旋转玩家主模型,此接口摄像机也会旋转
local yaw = 90 -- 限制范围0~360
local pitch = 15 -- 限制范围-88 ~ 88
local result = Player:RotateMainModel(playerUin, yaw,pitch)
print("旋转玩家主模型",result)
EnterGunState
参数及类型:
objid:number 玩家Uin
state:number 枪械状态(GunActionState)GunActionState
返回值及类型:
bool:boolean 是否设置成功
该方法的主要作用: 进入枪械状态
具体使用案例如下:
local bool = Player:EnterGunState(objid, state)
LevelGunState
参数及类型:
objid:number 玩家Uin
state:number 枪械状态(GunActionState)GunActionState
返回值及类型:
bool:boolean 是否设置成功
该方法的主要作用: 离开枪械状态
具体使用案例如下:
local bool = Player:LevelGunState(objid, state)
生物模块管理接口 Monster
具体函数名及描述如下:
序号 函数名 函数描述
1 GetActorID(...) 获取生物类型ID
2 GetActorName(...) 获取生物类型名称
3 ReplaceActor(...) 替换生物
4 GetMonsterDefName(...) 获取生物名称
5 GetMonsterDefLevelExp(...) 获取击杀掉落经验
6 SetMonsterDefLevelExp(...) 设置击杀掉落经验
7 ChangeAI(...) 切换AI行为树
8 CanSee(...) 怪物是否可见目标
9 GetDropItemInfo(...) 获取生物的掉落物信息
10 SetTameTarget(...) 使生物被指定对象驯服
11 RandomActorID(...) 随机获取生物类型ID
12 GetTamedOwnerID(...) 获取驯养主ID
13 GetFacade(...) 获取生物外观
14 GetTags(...) 获取生物标签组
GetActorID
参数及类型:
objid:number 生物objid
返回值及类型:
actorid:number / nil 生物defId
该方法的其他说明: 获取生物类型ID
具体使用案例如下:
local actorid = Monster:GetActorID(objid)
GetActorName
参数及类型:
objid:number 生物objid
返回值及类型:
name:string / nil 生物类型名称
该方法的其他说明: 获取生物类型名称
具体使用案例如下:
local actorName = Monster:GetActorName(objId)
ReplaceActor
参数及类型:
objidSrc:number 源对象ID
actorid:number / string 目标生物defId或资源id
replacehp:bool / nil 是否替换血量
返回值及类型:
ret:number / nil 替换后的生物objid
该方法的其他说明: 将源生物替换为目标类型生物,并同步队伍/图文信息/变量引用(可选同步血量比例)
具体使用案例如下:
local newObjId = Monster:ReplaceActor(objId, 3812)
GetMonsterDefName
参数及类型:
actorid:number / string 生物类型ID或生物预制ID
返回值及类型:
name:string / nil 生物类型名字
该方法的其他说明: 获取生物名称
具体使用案例如下:
local name = Monster:GetMonsterDefName(actorid)
GetMonsterDefLevelExp
参数及类型:
actorid:number / string 生物类型id或生物预制ID
返回值及类型:
exp:number / nil 掉落经验
该方法的其他说明: 获取击杀生物的掉落经验
具体使用案例如下:
local levelExp = Monster:GetMonsterDefLevelExp(3400)
SetMonsterDefLevelExp
参数及类型:
actorid:number / string 生物类型id或生物预制ID
levelExp:number 掉落经验
返回值及类型:
ret:bool是否成功
该方法的其他说明: 设置击杀生物的掉落经验
具体使用案例如下:
local result = Monster:SetMonsterDefLevelExp(3400, 100)
ChangeAI
参数及类型:
objid:number 生物objid
treeid:string 行为树ID
返回值及类型:
ret:bool是否成功
该方法的其他说明: 切换生物AI行为树
具体使用案例如下:
local ret = Monster:ChangeAI(objid, treeid)
CanSee
参数及类型:
objid:number 怪物对象ID
targetObjid:number 目标对象ID
返回值及类型:
result:bool是否可见
该方法的其他说明: 判断怪物是否能看见目标
具体使用案例如下:
local isSuccess = Monster:CanSee(objId, Player:GetHostUin())
GetDropItemInfo
参数及类型:
actorid:number / string 生物类型id或生物预制ID
返回值及类型:
ret:table / nil 掉落物信息数组({itemId,num,odds})
该方法的其他说明: 获取生物的掉落物信息列表(道具ID/数量/概率)
具体使用案例如下:
local dropInfos = Monster:GetDropItemInfo(3400)
if dropInfos then
for i, v in ipairs(dropInfos) do
print("掉落物信息:道具ID,数量,概率", v[1], v[2], v[3])
end
end
SetTameTarget
参数及类型:
objidA:number 生物对象ID
objidB:number 玩家对象ID
返回值及类型:
ret:bool是否成功
该方法的其他说明: 使生物被指定对象驯服
具体使用案例如下:
--设置生物A被房主驯服
local result = Monster:SetTameTarget(objIdA, Player:GetHostUin())
RandomActorID
参数及类型: 无
返回值及类型:
ret:number / nil 随机生物类型ID
该方法的其他说明: 从可触发类型的生物定义中随机取一个生物类型id
具体使用案例如下:
local actorTypeId = Monster:RandomActorID()
GetTamedOwnerID
参数及类型:
objid:number 生物对象ID
返回值及类型:
ownerId:number / nil 驯养主对象ID
该方法的其他说明: 获取生物的驯养主对象ID
具体使用案例如下:
local ownerID = Monster:GetTamedOwnerID(objId)
GetFacade
参数及类型:
monsterid:number / string 生物类型id或生物预制ID
返回值及类型:
model:string / nil 外观名
该方法的其他说明: 根据生物类型id或预制ID生成外观名(用于UI/选择器显示,如果是prefab资源会带有子部件信息,选择器选择不带子部件信息)
具体使用案例如下:
local model = Monster:GetFacade(monsterid)
GetTags
参数及类型:
actorid:number / string 生物类型id或生物预制ID
返回值及类型:
ret:table / nil 标签组
该方法的其他说明: 获取生物定义中的标签组
具体使用案例如下:
local ret = Monster:GetTags(actorid)
方块模块管理接口 Block
具体函数名及描述如下:
序号 函数名 函数描述
1 IsSolidBlock(...) 判断是否为固体方块
2 IsLiquidBlock(...) 判断是否为液体方块
3 IsAirBlock(...) 判断是否为空气方块
4 GetBlockID(...) 获取方块类型ID
5 DestroyBlock(...) 摧毁方块
6 PlaceBlock(...) 放置方块
7 ReplaceBlock(...) 替换方块
8 SetBlockData(...) 设置方块数据
9 GetBlockData(...) 获取方块数据
10 GetBlockDir(...) 获取方块朝向
11 PlayAnim(...) 播放方块动作
12 SetBlockSettingAttState(...) 设置方块属性状态
13 GetBlockSettingAttState(...) 获取方块属性状态
14 GetBlockSwitchStatus(...) 获取功能方块开关状态
15 SetBlockSwitchStatus(...) 设置功能方块开关状态
16 GetBlockPowerStatus(...) 获取方块通电状态
17 RandomBlockID(...) 随机获取方块ID
18 GetBlockDefName(...) 获取方块名称
19 GetBlockDefDesc(...) 获取方块描述
20 ReplaceBluePrint(...) 放置蓝图
21 PlayCrackEffect(...) 播放方块裂纹特效
22 PlayDestroyEffect(...) 播放方块损毁特效
23 GetBlockDropItemType(...) 获取方块掉落物信息
24 GetBlockDropExp(...) 获取方块采集经验
25 SetBlockColor(...) 设置方块颜色
26 SetBlockDir(...) 设置方块方向
27 GetFacade(...) 获取方块类型外观
28 SetBlockTextureColor(...) 设置方块纹理颜色
IsSolidBlock
参数及类型:
x:number 位置X坐标
y:number 位置Y坐标
z:number 位置Z坐标
worldId:number 星球id(默认当前主机所在星球)
返回值及类型:
bool:boolean 是否为固体方块
该方法的其他说明: 判断指定位置的方块是否为固体方块
具体使用案例如下:
local isSolidBlock = Block:IsSolidBlock(x, y, z, WorldId)
IsLiquidBlock
参数及类型:
x:number 位置X坐标
y:number 位置Y坐标
z:number 位置Z坐标
worldId:number 星球id(默认当前主机所在星球)
返回值及类型:
bool:boolean 是否为液体方块
该方法的其他说明: 判断指定位置的方块是否为液体方块
具体使用案例如下:
local isLiquidBlock = Block:IsLiquidBlock(x, y, z, WorldId)
IsAirBlock
参数及类型:
x:number 位置X坐标
y:number 位置Y坐标
z:number 位置Z坐标
worldId:number 星球id(默认当前主机所在星球)
返回值及类型:
bool:boolean 是否为空气方块
该方法的其他说明: 判断指定位置的方块是否为空气方块
具体使用案例如下:
local isAirBlock = Block:IsAirBlock(x, y, z, WorldId)
GetBlockID
参数及类型:
x:number 位置X坐标
y:number 位置Y坐标
z:number 位置Z坐标
worldId:number 星球id(默认当前主机所在星球)
返回值及类型:
id:number 方块类型ID
该方法的其他说明: 获取指定位置的方块类型ID
具体使用案例如下:
local blockID = Block:GetBlockID(x, y, z, WorldId)
DestroyBlock
参数及类型:
x:number 位置X坐标
y:number 位置Y坐标
z:number 位置Z坐标
dropitem:boolean 是否掉落物品(默认false)
worldId:number 星球id(默认当前主机所在星球)
btrigger:boolean 是否触发全局事件(默认true)
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 摧毁指定位置的方块
具体使用案例如下:
-- 删除方块,没有掉落物
local success = Block:DestroyBlock(x, y, z, false, WorldId)
PlaceBlock
参数及类型:
blockid:number / string 方块类型ID
x:number 位置X坐标
y:number 位置Y坐标
z:number 位置Z坐标
face:number 朝向(默认0)
color:number / string 十六进制颜色值(0XFFFFFF 颜色方块类型才生效,默认-1)
worldId:number 星球id(默认当前主机所在星球)
btrigger:boolean 是否触发全局事件(默认true)
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 在指定位置放置方块(支持颜色方块)
具体使用案例如下:
-- 摆放方块,376 是方块ID,x, y, z 是位置,FaceDir.PosX 是方向,0XFFFFFF 是颜色
local success2 = Block:PlaceBlock(376, x, y, z, FaceDir.PosX, nil, WorldId)
-- 创建颜色方块
local success = Block:PlaceBlock(605, x + 1, y, z, FaceDir.PosX, 0XFFFFFF, WorldId)
ReplaceBlock
参数及类型:
blockid:number / string 方块类型ID
x:number 位置X坐标
y:number 位置Y坐标
z:number 位置Z坐标
face:number 朝向(默认0)
color:number / string 十六进制颜色值(0XFFFFFF 颜色方块类型才生效,默认-1)
worldId:number 星球id(默认当前主机所在星球)
btrigger:boolean 是否触发全局事件(默认true)
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 替换指定位置的方块(支持颜色方块)
具体使用案例如下:
local success = Block:ReplaceBlock(105, x, y, z, nil, nil, WorldId)
SetBlockData
参数及类型:
x:number 位置X坐标
y:number 位置Y坐标
z:number 位置Z坐标
data:number 方块数据
worldId:number 星球id(默认当前主机所在星球)
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 设置指定位置方块的data数据(更新当前位置方块)
具体使用案例如下:
local bool = Block:SetBlockData(x, y, z, data, worldId)
GetBlockData
参数及类型:
x:number 位置X坐标
y:number 位置Y坐标
z:number 位置Z坐标
worldId:number 星球id(默认当前主机所在星球)
返回值及类型:
num:number 方块data数据值
该方法的其他说明: 获取指定位置方块的data数据
具体使用案例如下:
local blockData = Block:GetBlockData(x, y, z, WorldId)
GetBlockDir
参数及类型:
x:number 位置X坐标
y:number 位置Y坐标
z:number 位置Z坐标
worldId:number 星球id(默认当前主机所在星球)
返回值及类型:
num:number 方块朝向(FaceDir枚举)
该方法的其他说明: 获取指定位置方块的朝向
具体使用案例如下:
local blockDir = Block:GetBlockDir(x, y, z, WorldId)
PlayAnim
参数及类型:
pos:table 位置坐标{x=x,y=y,z=z}
animid:number / string 动作ID
speed:number 播放速度(默认1)
loop:number 循环模式(AnimMode枚举)AnimMode
worldId:number 星球id(默认当前主机所在星球)
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 播放指定位置方块的动作动画
具体使用案例如下:
local success = Block:PlayAnim({x = x, y = y, z = z}, 100100, 1, AnimMode.Default, WorldId)
SetBlockSettingAttState
参数及类型:
blockid:number / string 方块类型ID
atttype:number 属性枚举(BlockLimits)BlockLimits
switch:boolean 是否开启
worldId:number 星球id(默认当前主机所在星球)
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 设置方块类型的属性状态(全局设置)
具体使用案例如下:
-- 设置爆炸抗性打开
local success = Block:SetBlockSettingAttState(100, BlockAttr.ExplodeResistance, true, WorldId)
GetBlockSettingAttState
参数及类型:
blockid:number / string 方块类型ID
atttype:number 属性枚举(BlockLimits)BlockLimits
worldId:number 星球id(默认当前主机所在星球)
返回值及类型:
bool:boolean 是否开启
该方法的其他说明: 获取方块类型的属性状态(全局设置)
具体使用案例如下:
local state = Block:GetBlockSettingAttState(100, BlockAttr.ExplodeResistance, WorldId)
GetBlockSwitchStatus
参数及类型:
x:number 位置X坐标
y:number 位置Y坐标
z:number 位置Z坐标
worldId:number 星球id(默认当前主机所在星球)
返回值及类型:
bool:boolean 是否开启
该方法的其他说明: 获取指定位置功能方块的开关状态
具体使用案例如下:
local status = Block:GetBlockSwitchStatus(x, y, z, WorldId)
SetBlockSwitchStatus
参数及类型:
x:number 位置X坐标
y:number 位置Y坐标
z:number 位置Z坐标
isactive:boolean 是否开启
worldId:number 星球id(默认当前主机所在星球)
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 设置指定位置功能方块的开关状态
具体使用案例如下:
local bool = Block:SetBlockSwitchStatus(x, y, z, isactive, worldId)
GetBlockPowerStatus
参数及类型:
x:number 位置X坐标
y:number 位置Y坐标
z:number 位置Z坐标
worldId:number 星球id(默认当前主机所在星球)
返回值及类型:
bool:boolean 是否通电
该方法的其他说明: 获取指定位置方块的通电状态
具体使用案例如下:
local status = Block:GetBlockPowerStatus(x, y, z, WorldId)
RandomBlockID
参数及类型: 无参数
返回值及类型:
id:number 随机的方块类型ID
该方法的其他说明: 在资源库里随机获取一个方块类型ID
具体使用案例如下:
local blockID = Block:RandomBlockID()
GetBlockDefName
参数及类型:
blockid:number / string 方块类型ID
返回值及类型:
name:string 方块名称
该方法的其他说明: 获取方块类型的名称
具体使用案例如下:
local blockDefName = Block:GetBlockDefName(100)
GetBlockDefDesc
参数及类型:
blockid:number / string 方块类型ID
返回值及类型:
value:string 方块描述
该方法的其他说明: 获取方块类型的描述
具体使用案例如下:
local blockDefDesc = Block:GetBlockDefDesc(100)
ReplaceBluePrint
参数及类型:
x:number 位置X坐标
y:number 位置Y坐标
z:number 位置Z坐标
blueprint:string 蓝图资源ID
angle:number 旋转角度
mirror:boolean 是否镜像
placeMode:boolean 是否蓝图区域全部覆盖
worldId:number 星球id(默认当前星球)
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 在指定位置放置蓝图
具体使用案例如下:
local success = Block:ReplaceBluePrint(x, y, z, [=[1,bp6666_1679897969_0_]=], 90, false, true)
PlayCrackEffect
参数及类型:
x:number 位置X坐标
y:number 位置Y坐标
z:number 位置Z坐标
process:number 进度(-1~10)
worldId:number 星球id(默认当前主机所在星球)
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 播放指定位置方块的裂纹特效
具体使用案例如下:
local process = 10
local success = Block:PlayCrackEffect(x, y, z,process, WorldId)
PlayDestroyEffect
参数及类型:
x:number 位置X坐标
y:number 位置Y坐标
z:number 位置Z坐标
worldId:number 星球id(默认当前主机所在星球)
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 播放指定位置方块的损毁特效
具体使用案例如下:
local success = Block:PlayDestroyEffect(x, y, z, WorldId)
GetBlockDropItemType
参数及类型:
blockid:number / string 方块ID
itype:number 类型(1手持敲方块,2手持道具正确,3手持道具不正确)
返回值及类型:
obj:table 掉落道具信息{itemid,itemnum,odds} 道具ID、数量、概率
该方法的其他说明: 获取方块掉落物信息
具体使用案例如下:
-- 1手持敲方块,2手持道具正确,3手持道具不正确
local tb = Block:GetBlockDropItemType(100,1)
if tb then
print("获取方块掉落物品类型", tb[1])
print("获取方块掉落物品数量", tb[2])
print("获取方块掉落物品概率", tb[3])
end
GetBlockDropExp
参数及类型:
blockid:number / string 方块ID
返回值及类型:
num:number 经验值
该方法的其他说明: 获取方块的采集经验值
具体使用案例如下:
local exp = Block:GetBlockDropExp(100,1)
SetBlockColor
参数及类型:
x:number 位置X坐标
y:number 位置Y坐标
z:number 位置Z坐标
color:number 颜色值
worldId:number 星球id(默认当前主机所在星球)
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 设置指定位置方块的颜色(仅支持颜色方块)
具体使用案例如下:
local success = Block:SetBlockColor(x, y, z, 0XFF0000, WorldId)
SetBlockDir
参数及类型:
x:number 位置X坐标
y:number 位置Y坐标
z:number 位置Z坐标
dir:number 方向值(FaceDir枚举)FaceDir
worldId:number 星球id(默认当前主机所在星球)
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 设置指定位置方块的方向
具体使用案例如下:
local success = Block:SetBlockDir(x, y, z, FaceDir.PosZ, WorldId)
-- self:ThreadWait(1)
GetFacade
参数及类型:
blockid:number / string 方块类型ID或方块预制ID
返回值及类型:
value:string 方块类型外观
该方法的其他说明: 获取方块类型的外观
具体使用案例如下:
-- 官方默认方块示例
local facade1 = Block:GetFacade(100)
if facade1 == nil then
print("facade1 is nil")
end
-- 自定义方块示例
local facade2 = Block:GetFacade('r0_7495946400275515402_23048')
if facade2 == nil then
print("facade2 is nil")
end
SetBlockTextureColor
参数及类型:
blockid:number 方块ID
color:number:颜色值(0:还原默认颜色)
alpha:number 混合比例(0-100)
slotindex:number 材质槽索引(默认1)
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 设置方块纹理颜色(仅支持草块、土块、树叶、花草等方块,其它方块暂不支持;设置后不会存档;玩法转编辑后需要重进地图才可还原)
具体使用案例如下:
local bool = Block:SetBlockTextureColor(blockid, color, alpha, slotindex)
背包模块管理接口 Backpack
具体函数名及描述如下:
序号 函数名 函数描述
1 SetGridItem(...) 设置背包格道具
2 RemoveGridItem(...) 移除背包格道具
3 RemoveGridItemByItemID(...) 通过道具ID移除背包道具
4 ClearPack(...) 清空背包栏
5 ClearAllPack(...) 清空全部背包
6 MoveGridItem(...) 移动背包道具
7 SwapGridItem(...) 交换背包道具
8 EnoughSpaceForItem(...) 检查背包空间是否足够
9 CalcSpaceNumForItem(...) 计算背包剩余空间
10 HasItemByBackpackBar(...) 检测背包是否持有道具
11 GetItemNumByBackpackBar(...) 获取背包栏道具数量
12 GetItemNum(...) 获取背包道具数量
13 GetGridItemID(...) 获取背包格道具ID
14 GetGridItemName(...) 获取背包格道具名称
15 AddItem(...) 添加道具到背包
16 DiscardItem(...) 丢弃背包格道具
17 DiscardItemByID(...) 通过道具ID丢弃道具
18 ActEquipUpByResID(...) 穿上装备
19 ActEquipOffByEquipID(...) 脱下装备
20 ActDestructEquip(...) 销毁装备
21 CreateItem(...) 创建道具到背包
22 PlayShortCutIxParticle(...) 手持道具播放粒子特效
23 StopShortCutIxEffect(...) 手持道具停止特效
24 PlayShortCutItemParticle(...) 手持指定道具播放粒子特效
25 StopShortCutItemEffect(...) 手持指定道具停止特效
26 GetGridInfos(...) 批量获取背包格信息
27 LoadGridInfos(...) 加载背包和快捷栏格子信息数据
28 DecodeGridInfo(...) 解析格子信息
29 EncodeTableGridInfo(...) 打包格子信息
30 SetGridsLock(...) 设置背包格锁定状态
31 ClearGrids(...) 批量清理背包格
32 SetBackPackNum(...) 设置背包数量
33 GetAllBackPackInstanceIds(...) 获取背包所有道具实例ID
34 CreateItemInstInBackpack(...) 创建道具实例到背包
35 CreateGunInBackpack(...) 创建枪械到背包
36 GetInstIdByGridIndex(...) 根据背包索引获取道具实例ID
37 GetGunInstIdInBackpack(...) 获取背包所有枪械实例ID
38 IsLock(...) 获取背包格是否锁定
39 GetGridAttr(...) 获取背包格属性
40 SetGridAttr(...) 设置背包格属性
SetGridItem
参数及类型:
playerid:number 玩家ID
gridid:number 格子ID
itemid:number / string 道具类型
num:number 道具数量(默认1)
durability:number 耐久值(默认1)
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 设置背包指定格子中的道具(对应UGC3.0版本)
具体使用案例如下:
local playerid = Player:GetHostUin()
-- 设置快捷栏第一个格子为100,数量为3
local result = Backpack:SetGridItem(playerid, BackpackBeginIndex.Shortcut, 100, 3)
RemoveGridItem
参数及类型:
playerid:number 玩家ID
gridid:number 格子ID
num:number 道具数量(默认全部移除)
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 移除背包格内一定数量道具
具体使用案例如下:
local playerid = Player:GetHostUin()
-- 移除快捷栏第一个格内1个道具
local result = Backpack:RemoveGridItem(playerid, BackpackBeginIndex.Shortcut, 1)
RemoveGridItemByItemID
参数及类型:
playerid:number 玩家ID
itemid:number / string 道具类型
num:number 道具数量
返回值及类型:
num:number 移除数量(num and num> 0 成功)
该方法的其他说明: 移除背包内一定数量道具,通过道具ID移除,默认全部移除
具体使用案例如下:
local playerid = Player:GetHostUin()
-- 移除背包内 5个草块
local result = Backpack:RemoveGridItemByItemID(playerid, 100, 5)
-- 移除背包内 全部草块
local resul2t = Backpack:RemoveGridItemByItemID(playerid, 100)
ClearPack
参数及类型:
playerid:number 玩家ID
bartype:number 快捷栏枚举(BackpackType)BackpackType
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 清空指定背包栏中的所有道具
具体使用案例如下:
local playerid = Player:GetHostUin()
-- 清除快捷栏全部道具
Backpack:ClearPack(playerid, BackpackType.Shortcut)
ClearAllPack
参数及类型:
playerid:number 玩家ID
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 清空玩家所有背包栏中的道具(包含背包栏、快捷栏、装备栏)
具体使用案例如下:
local result = Backpack:ClearAllPack(Player:GetHostUin())
MoveGridItem
参数及类型:
playerid:number 玩家ID
gridsrc:number 源格子ID
griddst:number 目标格子ID
num:number 道具数量(默认全部)
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 将指定格子的道具移动到目标格子,默认全部转移
具体使用案例如下:
-- 移动快捷栏第一个格子到第二个格子
local result = Backpack:MoveGridItem(playerid, BackpackBeginIndex.Shortcut, BackpackBeginIndex.Shortcut + 1)
SwapGridItem
参数及类型:
playerid:number 玩家ID
gridsrc:number 源格子ID
griddst:number 目标格子ID
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 交换两个背包格子中的道具位置
具体使用案例如下:
local playerid = Player:GetHostUin()
-- 交换快捷栏第一个格子和第二个格子
local result = Backpack:SwapGridItem(playerid, BackpackBeginIndex.Shortcut, BackpackBeginIndex.Shortcut + 1)
EnoughSpaceForItem
参数及类型:
playerid:number 玩家ID
itemid:number / string 道具类型
num:number 道具数量(默认1)
返回值及类型:
bool:boolean 是否有足够空间
该方法的其他说明: 检查背包(包含背包栏、快捷栏)是否有足够的空间存放指定数量的道具
具体使用案例如下:
local playerid = Player:GetHostUin()
local result = Backpack:EnoughSpaceForItem(playerid, 12005, 1)
CalcSpaceNumForItem
参数及类型:
playerid:number 玩家ID
itemid:number / string 道具类型
返回值及类型:
num:number 可以存放的数量
该方法的其他说明: 计算背包(包含背包栏、快捷栏)能存放指定道具的剩余总数量
具体使用案例如下:
local playerid = Player:GetHostUin()
local spaceNum = Backpack:CalcSpaceNumForItem(playerid, 12005)
HasItemByBackpackBar
参数及类型:
playerid:number 玩家ID
bartype:number 快捷栏枚举(BackpackType)BackpackType
itemid:number / string 道具类型
返回值及类型:
bool:boolean 是否持有
id:number 道具所在格子ID(如果持有)
该方法的其他说明: 检测指定背包栏中是否持有指定道具
具体使用案例如下:
-- 快捷栏是否有草块
local result = Backpack:HasItemByBackpackBar(playerid, BackpackType.Shortcut, 100)
GetItemNumByBackpackBar
参数及类型:
playerid:number 玩家ID
bartype:number 快捷栏枚举(BackpackType)BackpackType
itemid:number / string 道具类型
返回值及类型:
num:number 道具总数量
ids:table 装有道具的格子ID数组
该方法的其他说明: 获取指定背包栏中指定道具的总数量,并返回装有该道具的格子ID数组
具体使用案例如下:
local itemNum, grids = Backpack:GetItemNumByBackpackBar(playerid, BackpackType.Shortcut, 100)
GetItemNum
参数及类型:
playerid:number 玩家ID
itemid:number / string 道具类型
isAddEquip:boolean 是否包含装备栏(默认True)
返回值及类型:
num:number 道具总数量
ids:table 装有道具的格子ID数组
该方法的其他说明: 获取背包中指定道具的总数量,并返回装有该道具的格子ID数组(可选择是否包含装备栏)
具体使用案例如下:
-- 获取道具的数量,包含装备栏
local itemNum = Backpack:GetItemNum(playerid, 12202)
-- 获取道具的数量,不包含装备栏
local itemNum2 = Backpack:GetItemNum(playerid, 12202, false)
GetGridItemID
参数及类型:
playerid:number 玩家ID
gridid:number 格子ID (BackpackBeginIndex.Shortcut + 0 是快捷栏第一个格子)BackpackBeginIndex
返回值及类型:
itemid:number / string 道具类型
num:number 道具数量(无道具时数量为0,itemid为0)
该方法的其他说明: 获取指定背包格子中的道具ID和数量
具体使用案例如下:
local playerid = Player:GetHostUin()
local gridItemID = Backpack:GetGridItemID(playerid, BackpackBeginIndex.Shortcut)
GetGridItemName
参数及类型:
playerid:number 玩家ID
gridid:number 格子ID
返回值及类型:
name:string 道具名称
该方法的其他说明: 获取指定背包格子中道具的名称
具体使用案例如下:
-- 获取快捷栏第一个格子物品名称
local gridItemName = Backpack:GetGridItemName(playerid, BackpackBeginIndex.Shortcut)
AddItem
参数及类型:
playerid:number 玩家ID
itemid:number / string 道具类型
num:number 道具数量
prioritytype:number 优先存放位置(1优先快捷栏,2优先背包栏,默认1)
返回值及类型:
num:number 成功添加的数量
该方法的其他说明: 向玩家背包添加指定数量的道具(可指定优先存放位置)
具体使用案例如下:
local playerid = Player:GetHostUin()
-- 创建物品,只添加能放入的数量
local successNum = Backpack:AddItem(playerid, 100, 10)
DiscardItem
参数及类型:
playerid:number 玩家ID
gridid:number 格子ID
num:number 道具数量
ablePick:boolean 是否允许拾取
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 丢弃指定背包格子中的道具,可设置是否允许拾取
具体使用案例如下:
local bool = Backpack:DiscardItem(playerid, gridid, num, ablePick)
DiscardItemByID
参数及类型:
playerid:number 玩家ID
itemid:number / string 道具ID
itemnum:number 道具数量
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 通过道具ID丢弃背包中指定数量的道具
具体使用案例如下:
local playerid = Player:GetHostUin()
local result = Backpack:DiscardItemByID(playerid, 12005)
local result2 = Backpack:DiscardItemByID(playerid, "r2_7485931052202679286_22924")
ActEquipUpByResID
参数及类型:
playerid:number 玩家ID
itemid:number / string 道具类型
frompos:number 格子ID(可不传,如果不为nil则必须和itemid一致)
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 让玩家穿上指定装备(自动从背包或快捷栏查找并装备)
具体使用案例如下:
local playerid = Player:GetHostUin()
local result = Backpack:ActEquipUpByResID(playerid, 12202)
ActEquipOffByEquipID
参数及类型:
playerid:number 玩家ID
grid:number 装备栏ID(EquipStartIndex + EquipSlotType.Head是装备栏第一个格子,EquipSlotType.Weapon无效)EquipSlotType
togrid:number 目标格子ID(可不传,如果不为nil则必须是空格子)
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 让玩家脱下指定装备栏中的装备(可指定移动到目标格子,否则自动寻找空格子或丢弃)
具体使用案例如下:
local playerid = Player:GetHostUin()
-- 卸下装备的皮胸甲
-- 头盔1(BackpackBeginIndex.Equip),胸甲2,护腿3,靴子4,披风5
local result = Backpack:ActEquipOffByEquipID(playerid, BackpackBeginIndex.Equip + 1)
ActDestructEquip
参数及类型:
playerid:number 玩家ID
grid:number 装备栏ID(EquipStartIndex + EquipSlotType.Head是装备栏第一个格子,EquipSlotType.Weapon无效)EquipSlotType
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 销毁指定装备栏中的装备
具体使用案例如下:
-- 销毁装备栏的皮胸甲
local result = Backpack:ActDestructEquip(playerid, BackpackBeginIndex.Equip + 1)
CreateItem
参数及类型:
objid:number 玩家ID
itemid:number / string 道具类型
itemnum:number 道具数量
ipos:number 优先存放的位置
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 创建指定数量的道具到玩家背包(可指定优先存放位置,背包满时生成掉落物)
具体使用案例如下:
local playerid = Player:GetHostUin()
-- 创建物品,默认放快捷栏跟背包栏(放不下会掉落在地上)
Backpack:CreateItem(playerid, 100, 3)
-- 创建物品,默认放快捷栏(快捷栏放不下会掉落在地上)
Backpack:CreateItem(playerid, 100, 2, BackpackType.Shortcut)
-- 创建皮胸甲,直接装备上,装备不上会掉落
Backpack:CreateItem(playerid, 12202, 1, BackpackType.Equip)
PlayShortCutIxParticle
参数及类型:
playerid:number 玩家ID
effectids:number / string / table 特效ID或特效名称或ID数组
offset:table 偏移向量{x,y,z}
rot:table 旋转向量{x,y,z}
scale:table 缩放向量{x,y,z}
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 在玩家手持道具上播放粒子特效(可设置偏移、旋转和缩放)
具体使用案例如下:
local playerid = Player:GetHostUin()
-- 播放手持特效, 偏移量(0, 1, 0), 不旋转, 缩放(2, 2, 2)
local result = Backpack:PlayShortCutIxParticle(playerid, 1011, {x = 0, y = 1, z = 0}, nil, {x = 2, y = 2, z = 2})
StopShortCutIxEffect
参数及类型:
playerid:number 玩家ID
effectids:number / string / table 特效ID或特效名称或ID数组
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 停止玩家手持道具上播放的特效
具体使用案例如下:
local playerid = Player:GetHostUin()
local result = Backpack:StopShortCutIxEffect(playerid, 1011)
PlayShortCutItemParticle
参数及类型:
playerid:number 玩家ID
itemid:number 道具类型
effectids:number / string / table 特效ID或特效名称或ID数组
offset:table 偏移向量{x,y,z}
rot:table 旋转向量{x,y,z}
scale:table 缩放向量{x,y,z}
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 在玩家手持指定道具时播放粒子特效(可设置偏移、旋转和缩放)
具体使用案例如下:
local playerid = Player:GetHostUin()
-- 播放手持能量剑时候播放特效1011, 不偏移量, 不旋转, 不缩放
local result = Backpack:PlayShortCutItemParticle(playerid, 12005, 1011)
StopShortCutItemEffect
参数及类型:
playerid:number 玩家ID
itemid:number 道具类型
effectids:number / string / table 特效ID或特效名称或ID数组
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 停止玩家手持指定类型道具时播放的特效
具体使用案例如下:
local playerid = Player:GetHostUin()
-- 停止手持能量剑时候播放特效1011
local result = Backpack:StopShortCutItemEffect(playerid, 12005, 1011)
GetGridInfos
参数及类型:
playerid:number 玩家ID
begingridId:number 开始格子ID
endgridId:number 结束格子ID
返回值及类型:
value:string 格子信息字符串(nil表示失败,否则成功)
该方法的其他说明: 批量获取背包和快捷栏连续格子的信息数据(需要连续格子否则返回nil)
具体使用案例如下:
local result = Backpack:GetGridInfos(Player:GetHostUin(),BackpackBeginIndex.Inventory,BackpackBeginIndex.Inventory+29);
LoadGridInfos
参数及类型:
playerid:number 玩家ID
gridinfo:string 格子信息字符串(由GetGridInfos返回)
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 加载背包和快捷栏格子信息数据(需要相应格子没有道具否则会加载失败)
具体使用案例如下:
local sGridInfos = Backpack:GetGridInfos(Player:GetHostUin(),BackpackBeginIndex.Inventory,BackpackBeginIndex.Inventory+29);
if sGridInfos then
local result = Backpack:LoadGridInfos(Player:GetHostUin(),sGridInfos);
return result
end
DecodeGridInfo
参数及类型:
str:string GetGridInfos打包字符串
返回值及类型:
obj:table 解析后的数组(数组元素包含index格子ID、info格子详细信息、itemid物品ID、num数量,nil表示解析失败)
该方法的其他说明: 解析格子信息数据(将GetGridInfos返回的字符串解析为表格)
具体使用案例如下:
local sGridInfos = Backpack:GetGridInfos(Player:GetHostUin(),BackpackBeginIndex.Inventory,BackpackBeginIndex.Inventory+29);
if sGridInfos then
local result = Backpack:DecodeGridInfo(sGridInfos);
return result
end
EncodeTableGridInfo
参数及类型:
infos:table DecodeGridInfo解析后的数据
返回值及类型:
value:string 打包后的字符串(nil表示打包失败,否则成功)
该方法的其他说明: 将解析的格子信息数据打包为字符串
具体使用案例如下:
local sGridInfos = Backpack:GetGridInfos(Player:GetHostUin(),BackpackBeginIndex.Inventory,BackpackBeginIndex.Inventory+29);
if sGridInfos then
local infos = Backpack:DecodeGridInfo(sGridInfos);
local result = Backpack:EncodeTableGridInfo(infos);
return result
end
SetGridsLock
参数及类型:
playerid:number 玩家ID
begingridId:number 开始格子ID
endgridId:number 结束格子ID
lock:boolean 是否锁定(true锁定,false解锁)
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 设置背包和快捷栏连续格子的锁定状态(需要连续格子否则返回失败)
具体使用案例如下:
local result = Backpack:SetGridsLock(Player:GetHostUin(),BackpackBeginIndex.Inventory,BackpackBeginIndex.Inventory+29,true);
ClearGrids
参数及类型:
playerid:number 玩家ID
begingridId:number 开始格子ID
endgridId:number 结束格子ID
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 批量清理背包连续格子的数据(需要连续格子否则返回失败)
具体使用案例如下:
local result = Backpack:ClearGrids(Player:GetHostUin(),BackpackBeginIndex.Inventory,BackpackBeginIndex.Inventory+29);
return result
SetBackPackNum
参数及类型:
playerid:number 玩家ID
num:number 背包格子数量(范围0-100)
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 设置玩家背包的格子数量(范围0-100)
具体使用案例如下:
local result = Backpack:SetBackPackNum(Player:GetHostUin(),33);
return result
GetAllBackPackInstanceIds
参数及类型:
playerid:number 玩家ID
bartype:number 快捷栏枚举(BackpackType)BackpackType
返回值及类型:
ids:table 道具实例ID数组
该方法的其他说明: 获取指定背包栏中所有道具实例的ID列表
具体使用案例如下:
local ids = Backpack:GetAllBackPackInstanceIds(playerid, bartype)
CreateItemInstInBackpack
参数及类型:
playerid:number 玩家Uin
itemid:number / string 道具ID
gridIndex:number / nil 格子索引(nil表示自动选择)
返回值及类型:
id:string 道具实例ID
该方法的其他说明: 在玩家的背包内创建一个道具实例(格子未锁定才能创建)
具体使用案例如下:
local itemid = 12005
local gridIndex = 2
local instId = Backpack:CreateItemInstInBackpack(playerid, itemid, gridIndex)
if instId then
print("创建物品实例", instId)
end
CreateGunInBackpack
参数及类型:
playerid:number 玩家Uin
itemid:number / string 道具ID
gridIndex:number / nil 格子索引(nil表示自动选择)
返回值及类型:
id:string 道具实例ID
该方法的其他说明: 在玩家的背包内创建一把实例化的枪械(格子未锁定才能创建)
具体使用案例如下:
local id = Backpack:CreateGunInBackpack(playerid, itemid, gridIndex)
GetInstIdByGridIndex
参数及类型:
playerid:number 玩家Uin
gridIndex:number 背包索引
返回值及类型:
id:string 道具实例ID
该方法的其他说明: 根据背包索引获取道具实例ID(格子未锁定才能获取)
具体使用案例如下:
local id = Backpack:GetInstIdByGridIndex(playerid, gridIndex)
GetGunInstIdInBackpack
参数及类型:
playerid:number 玩家Uin
返回值及类型:
ids:table 枪械实例ID数组
该方法的其他说明: 获取背包中所有实例化的枪械ID列表(仅返回未锁定格子的枪械)
具体使用案例如下:
local ids = Backpack:GetGunInstIdInBackpack(playerid)
IsLock
参数及类型:
playerid:number 玩家Uin
gridIndex:number 格子索引
返回值及类型:
bool:boolean 是否锁定(参数错误返回true)
该方法的其他说明: 获取背包格子是否锁定(1.48+版本,参数错误返回true)
具体使用案例如下:
local bool = Backpack:IsLock(playerid, gridIndex)
GetGridAttr
参数及类型:
playerid:number 玩家ID
gridid:number 格子ID
attr:number 属性枚举(GridAttr)GridAttr
返回值及类型:
num:number 属性值
该方法的其他说明: 获取背包格子的指定属性值(支持道具数量、耐久度、韧性)
具体使用案例如下:
local ret = Backpack:SetGridAttr(playerid, gridid,GridAttr.ItemNum,2)
print("设置格子道具数量", ret) --如果数量超过最大堆叠数 则取最大堆叠数
local num1 = Backpack:SetGridAttr(playerid, gridid,GridAttr.Durable,100)
print("设置格子耐久度", num1) --最大耐久为0,设置值直接返回false
-- local num2 = Backpack:SetGridAttr(playerid, gridid,GridAttr.Toughness)
-- print("设置格子韧性", num2) --最大韧性为0,设置值直接返回false
return ret and num1
end
function BackpackTask:GetGridAttr()
local playerid = Player:GetHostUin()
local gridid = 2
--Backpack:GetGridAttr
local num = Backpack:GetGridAttr(playerid, gridid,GridAttr.ItemNum)
print("获取格子属性", num)
SetGridAttr
参数及类型:
playerid:number 玩家ID
gridid:number 格子ID
attr:number 属性枚举(GridAttr)GridAttr
value:number 属性值
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 设置背包格子的指定属性值(支持道具数量、耐久度、韧性,会自动限制在有效范围内)
具体使用案例如下:
local bool = Backpack:SetGridAttr(playerid, gridid, attr, value)
界面模块管理接口 CustomUI
具体函数名及描述如下:
序号 函数名 函数描述
1 SetText(...) 设置文本元件内容
2 SetTexture(...) 设置元件图案纹理
3 SetSize(...) 设置元件大小
4 SetFontSize(...) 设置文本元件字体大小
5 SetColor(...) 设置元件颜色
6 ShowElement(...) 显示元件
7 HideElement(...) 隐藏元件
8 RotateElement(...) 旋转元件
9 SetAlpha(...) 设置透明度
10 SetState(...) 设置界面状态
11 SetPosition(...) 设置元件位置
12 SetScale(...) 设置元件缩放
13 GetItemIcon(...) 获取道具图标
14 GetMonsterObjIcon(...) 获取生物图标(对象)
15 GetMonsterIcon(...) 获取生物图标(类型)
16 GetStatusIcon(...) 获取状态图标
17 GetBlockIcon(...) 获取方块图标
18 GetRoleIcon(...) 获取角色图标
19 GetRoleHeadIcon(...) 获取角色头像图标
20 GetShortcutIcon(...) 获取快捷栏图标
21 SmoothMoveTo(...) 元件平滑移动到指定位置
22 SmoothMoveBy(...) 元件平滑移动相对距离
23 SmoothScaleTo(...) 元件平滑缩放到指定尺寸
24 SmoothScaleBy(...) 元件平滑改变相对宽高
25 SmoothScaleByEx(...) 元件平滑缩放(扩展)
26 SmoothRotateTo(...) 元件平滑旋转到指定角度
27 SmoothRotateBy(...) 元件平滑旋转相对角度
28 PlayElementAnim(...) 播放元件动画
29 StopAnim(...) 停止元件动画
30 SetLoaderModel(...) 设置装载器模型
31 SetLoaderModelScale(...) 设置装载器模型缩放
32 SetLoaderModelDir(...) 设置装载器模型方向
33 SetLoaderModelPosition(...) 设置装载器模型位置
34 SetLoaderModelAct(...) 设置装载器模型动画
35 TurnSliderToPos(...) 滑动列表跳转到位置
36 SetSliderDir(...) 设置滑动列表滑动方式
37 SetSliderBarImg(...) 设置滑动条图案
38 SetRelationPosition(...) 设置元件相对位置
39 SetRelationSize(...) 设置元件相对大小
40 CreateElement(...) 动态创建元件
41 CloneElement(...) 克隆元件
42 ChangeParent(...) 修改元件父元件
43 SetProgressBarValue(...) 设置进度条值
44 GetProgressBarValue(...) 获取进度条值
45 SetProgressBarResId(...) 设置进度条纹理
46 SmoothChangeProgress(...) 进度条文本平滑变化
47 SetSpineAnimID(...) 设置Spine动画ID
48 SmoothIncreaseProgress(...) 进度条文本平滑变化(增减)
49 SetFloatDamageTxt(...) 设置浮动伤害文本
50 GetScreenSize(...) 获取屏幕分辨率
51 DeleteElement(...) 删除UI元件
52 SetBeaconBandPos(...) 设置信标位置
53 SetBeaconObjId(...) 设置信标对象
54 SetBeaconOffset(...) 设置信标偏移
55 SetBeaconClampType(...) 设置信标限制范围
56 SetBeaconRadius(...) 设置信标半径
57 SetBeaconMargin(...) 设置信标矩形范围
SetText
参数及类型:
objid:number 玩家/对象ID
uiid:string 界面ID
elementid:string 元件ID
text:string 文本内容
animid:number 动画ID(可选)
time:number 动画时长(可选)
mode:number 播放模式(可选)
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置指定文本元件的内容,可选带动画效果(打字机等)
具体使用案例如下:
local isSuccess = CustomUI:SetText(Player:GetHostUin(),"7482986899365911542-22886","7482986899365911542-22886_2", "测试文本")
SetTexture
参数及类型:
objid:number 玩家/对象ID
uiid:string 界面ID
elementid:string 元件ID
url:string 图案纹理ID
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置指定元件的图案纹理(使用纹理资源ID)
具体使用案例如下:
local isSuccess = CustomUI:SetTexture(Player:GetHostUin(),"7482986899365911542-22886","7482986899365911542-22886_3", "0_10103")
SetSize
参数及类型:
objid:number 玩家/对象ID
uiid:string 界面ID
elementid:string 元件ID
width:number 元件宽度
height:number 元件高度
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置指定元件的尺寸(宽高)
具体使用案例如下:
local isSuccess = CustomUI:SetSize(Player:GetHostUin(),"7482986899365911542-22886","7482986899365911542-22886_3", 200, 100)
SetFontSize
参数及类型:
objid:number 玩家/对象ID
uiid:string 界面ID
elementid:string 元件ID
size:number 字体大小
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置指定文本元件的字体大小
具体使用案例如下:
local isSuccess = CustomUI:SetFontSize(Player:GetHostUin(),"7482986899365911542-22886","7482986899365911542-22886_2", 20)
SetColor
参数及类型:
objid:number 玩家/对象ID
uiid:string 界面ID
elementid:string 元件ID
color:number 颜色值(0xFFFFFF)
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置指定元件的颜色
具体使用案例如下:
local isSuccess = CustomUI:SetColor(Player:GetHostUin(),"7482986899365911542-22886","7482986899365911542-22886_1", "0xf44336")
ShowElement
参数及类型:
objid:number 玩家/对象ID
uiid:string 界面ID
elementid:string 元件ID
effectid:number 动画ID(可选)
time:number 动画时长(可选)
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 显示指定元件,可选播放显示动画
具体使用案例如下:
local isSuccess = CustomUI:ShowElement(Player:GetHostUin(),"7482986899365911542-22886","7482986899365911542-22886_1")
HideElement
参数及类型:
objid:number 玩家/对象ID
uiid:string 界面ID
elementid:string 元件ID
effectid:number 动画ID(可选)
time:number 动画时长(可选)
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 隐藏指定元件,可选播放隐藏动画
具体使用案例如下:
local isSuccess = CustomUI:HideElement(Player:GetHostUin(),"7482986899365911542-22886","7482986899365911542-22886_1")
RotateElement
参数及类型:
objid:number 玩家/对象ID
uiid:string 界面ID
elementid:string 元件ID
rotate:number 旋转角度
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置指定元件的旋转角度
具体使用案例如下:
local isSuccess = CustomUI:RotateElement(Player:GetHostUin(),"7482986899365911542-22886","7482986899365911542-22886_1", 45)
SetAlpha
参数及类型:
objid:number 玩家/对象ID
uiid:string 界面ID
elementid:string 元件ID
alpha:number 透明度(0~100)
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置指定元件的透明度
具体使用案例如下:
local isSuccess = CustomUI:SetAlpha(Player:GetHostUin(),"7482986899365911542-22886","7482986899365911542-22886_1", 0.5)
SetState
参数及类型:
objid:number 玩家/对象ID
uiid:string 界面ID
pageIndex:string 状态ID
easeType:number 缓动类型(Easing)(可选)Easing
time:number 过渡时长(可选)
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置界面状态,可指定缓动类型与过渡时长
具体使用案例如下:
local isSuccess = CustomUI:SetState(Player:GetHostUin(),"7482986899365911542-22886","7482986899365911542-22886-状态2", Easing.Linear, 1)
SetPosition
参数及类型:
objid:number 玩家/对象ID
uiid:string 界面ID
elementid:string 元件ID
x:number X坐标值
y:number Y坐标值
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置指定元件在界面上的坐标位置
具体使用案例如下:
local isSuccess = CustomUI:SetPosition(Player:GetHostUin(),"7482986899365911542-22886","7482986899365911542-22886_1", 600, 200)
SetScale
参数及类型:
objid:number 玩家/对象ID
uiid:string 界面ID
elementid:string 元件ID
x:number X缩放
y:number Y缩放
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置指定元件的缩放比例
具体使用案例如下:
local isSuccess = CustomUI:SetScale(Player:GetHostUin(),"7482986899365911542-22886","7482986899365911542-22886_1", 2, 2)
GetItemIcon
参数及类型:
itemid:number / string 道具类型ID/预制ID
返回值及类型:
icon:string 道具图标标识;失败返回""
该方法的其他说明: 根据道具类型ID/预制ID获取道具图标
具体使用案例如下:
local icon = CustomUI:GetItemIcon(12004)
if icon and icon ~= "" then
print("获取图标成功")
end
GetMonsterObjIcon
参数及类型:
objid:number 对象ID
返回值及类型:
icon:string 生物图标标识;无效返回""
该方法的其他说明: 根据生物对象ID获取对应的生物图标标识字符串
具体使用案例如下:
local obj = GameObject:CreatePrefabInst("r1_7482990429829028854_22890", nil, 10,8,10)
if obj then
local icon = CustomUI:GetMonsterObjIcon(obj:GetId())
if icon and icon ~= "" then
print("获取怪物图标成功")
end
end
GetMonsterIcon
参数及类型:
actorid:number / string 生物类型ID/预制ID
返回值及类型:
icon:string 生物图标标识;无效返回""
该方法的其他说明: 根据生物类型ID/预制ID生成生物图标标识字符串
具体使用案例如下:
local icon = CustomUI:GetMonsterIcon(3400)
if icon and icon ~= "" then
print("获取怪物图标成功")
end
GetStatusIcon
参数及类型:
buffid:number / string 状态ID/预制ID
返回值及类型:
icon:string 状态图标标识;无效返回""或nil
该方法的其他说明: 根据状态ID/预制ID获取状态图标标识字符串
具体使用案例如下:
local icon = CustomUI:GetStatusIcon(4001)
if icon and icon ~= "" then
print("获取状态图标成功")
end
GetBlockIcon
参数及类型:
blockid:number / string 方块类型ID/预制ID
返回值及类型:
icon:string 方块图标标识;无效返回""
该方法的其他说明: 根据方块类型ID/预制ID生成方块图标标识字符串
具体使用案例如下:
local icon = CustomUI:GetBlockIcon(200)
if icon and icon ~= "" then
print("获取方块图标成功")
end
GetRoleIcon
参数及类型:
playerid:number 玩家ID
返回值及类型:
icon:string 角色图标标识;失败返回nil
该方法的其他说明: 获取玩家当前角色的图标标识字符串
具体使用案例如下:
local icon = CustomUI:GetRoleIcon(Player:GetHostUin())
if icon and icon ~= "" then
print("获取角色图标成功")
end
GetRoleHeadIcon
参数及类型:
playerid:number 玩家ID
返回值及类型:
icon:string 头像图标标识
该方法的其他说明: 根据玩家ID生成默认头像图标标识字符串
具体使用案例如下:
local icon = CustomUI:GetRoleHeadIcon(Player:GetHostUin())
if icon and icon ~= "" then
print("获取角色头像成功")
end
GetShortcutIcon
参数及类型:
playerid:number 玩家ID
ix:number 快捷栏索引(1-8)
返回值及类型:
icon:string 道具图标标识;失败返回nil
该方法的其他说明: 获取玩家快捷栏指定格子的道具图标标识字符串
具体使用案例如下:
local icon = CustomUI:GetShortcutIcon(Player:GetHostUin(), 1)
SmoothMoveTo
参数及类型:
playerid:number 玩家ID
uiid:string 界面ID
elementid:string 元件ID
time:number 执行时间(需大于0)
x:number X坐标(可选)
y:number Y坐标(可选)
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 让元件在指定时间内平滑移动到绝对坐标位置
具体使用案例如下:
local isSuccess = CustomUI:SmoothMoveTo(Player:GetHostUin(),"7482986899365911542-22886","7482986899365911542-22886_4", 1, 200, 300)
SmoothMoveBy
参数及类型:
playerid:number 玩家ID
uiid:string 界面ID
elementid:string 元件ID
time:number 执行时间(需大于0)
x:number X方向距离
y:number Y方向距离
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 让元件在指定时间内按相对距离平滑移动
具体使用案例如下:
local isSuccess = CustomUI:SmoothMoveBy(Player:GetHostUin(),"7482986899365911542-22886","7482986899365911542-22886_1", 1, 100, 100)
SmoothScaleTo
参数及类型:
playerid:number 玩家ID
uiid:string 界面ID
elementid:string 元件ID
time:number 执行时间(需大于0)
w:number 宽度(可选)
h:number 高度(可选)
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 让元件在指定时间内平滑改变到指定宽度和高度
具体使用案例如下:
local isSuccess = CustomUI:SmoothScaleTo(Player:GetHostUin(),"7482986899365911542-22886","7482986899365911542-22886_1", 1, 100, 200)
SmoothScaleBy
参数及类型:
playerid:number 玩家ID
uiid:string 界面ID
elementid:string 元件ID
time:number 执行时间(需大于0)
w:number 宽度增量
h:number 高度增量
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 让元件在指定时间内按相对增量平滑改变宽度和高度
具体使用案例如下:
local isSuccess = CustomUI:SmoothScaleBy(Player:GetHostUin(),"7482986899365911542-22886","7482986899365911542-22886_1", 1, 30, 20)
SmoothScaleByEx
参数及类型:
playerid:number 玩家ID
uiid:string 界面ID
elementid:string 元件ID
time:number 执行时间(需大于0)
x:number X缩放值
y:number Y缩放值
delayTime:number 延迟时间(可选)
easeType:number 缓动枚举(Easing,可选)Easing
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 让元件在指定时间内平滑改变相对缩放大小(子节点也会改变大小)<1.47+>
具体使用案例如下:
local isSuccess = CustomUI:SmoothScaleByEx(Player:GetHostUin(),"7482986899365911542-22886","7482986899365911542-22886_1",5, 3, 3)
SmoothRotateTo
参数及类型:
playerid:number 玩家ID
uiid:string 界面ID
elementid:string 元件ID
time:number 执行时间(需大于0)
angle:number 角度值
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 让元件在指定时间内平滑旋转到指定角度
具体使用案例如下:
local isSuccess = CustomUI:SmoothRotateTo(Player:GetHostUin(),"7482986899365911542-22886","7482986899365911542-22886_1", 1, 45)
SmoothRotateBy
参数及类型:
playerid:number 玩家ID
uiid:string 界面ID
elementid:string 元件ID
time:number 执行时间(需大于0)
angle:number 角度增量
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 让元件在指定时间内按相对角度平滑旋转
具体使用案例如下:
local isSuccess = CustomUI:SmoothRotateBy(Player:GetHostUin(),"7482986899365911542-22886","7482986899365911542-22886_1", 1, 20)
PlayElementAnim
参数及类型:
playerid:number 玩家ID
uiid:string 界面ID
elementid:string 元件ID
animid:number 动画ID
time:number 单次执行时间(需大于0)
mode:number 播放模式(AnimMode)AnimMode
easetype:number 缓动类型(Easing,可选)Easing
delaytime:number 延迟播放时间(可选)
endvalue:number / table 动画结束值(可选)
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 播放元件动画(动效/缓动/延迟等参数按配置生效)
具体使用案例如下:
local isSuccess = CustomUI:PlayElementAnim(Player:GetHostUin(),"7482986899365911542-22886","7482986899365911542-22886_1", 30007, 1, ViedoPlayMode.Once)
StopAnim
参数及类型:
playerid:number 玩家ID
uiid:string 界面ID
elementid:string 元件ID
itype:number 停止类型(0全部/1指定元件)
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 停止元件动画(可停止全部动效或指定元件动效)
具体使用案例如下:
local isSuccess = CustomUI:StopAnim(Player:GetHostUin(),"7482986899365911542-22886","7482986899365911542-22886_1", 0)
SetLoaderModel
参数及类型:
playerid:number 玩家ID
uiid:string 界面ID
elementid:string 元件ID
modleName:string 模型名称(如ItemInstance_xxx/avator_xxx等)stance
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置装载器元件显示的模型(支持按约定格式解析模型来源)
具体使用案例如下:
local isSuccess = CustomUI:SetLoaderModel(Player:GetHostUin(),"7482986899365911542-22886","7482986899365911542-22886_5", "mob_3419")
SetLoaderModelScale
参数及类型:
playerid:number 玩家ID
uiid:string 界面ID
elementid:string 元件ID
modlescale:number 缩放大小
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置装载器元件模型缩放大小
具体使用案例如下:
local isSuccess = CustomUI:SetLoaderModelScale(Player:GetHostUin(),"7482986899365911542-22886","7482986899365911542-22886_5", 1.5)
SetLoaderModelDir
参数及类型:
playerid:number 玩家ID
uiid:string 界面ID
elementid:string 元件ID
yaw:number 水平角度(角度制)
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置装载器元件模型的水平旋转角度
具体使用案例如下:
local isSuccess = CustomUI:SetLoaderModelDir(Player:GetHostUin(),"7482986899365911542-22886","7482986899365911542-22886_5", 90)
SetLoaderModelPosition
参数及类型:
playerid:number 玩家ID
uiid:string 界面ID
elementid:string 元件ID
x:number x坐标
y:number y坐标
z:number z坐标
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置装载器元件模型的位置坐标
具体使用案例如下:
local isSuccess = CustomUI:SetLoaderModelPosition(Player:GetHostUin(),"7482986899365911542-22886","7482986899365911542-22886_5", 100, 200, 300)
SetLoaderModelAct
参数及类型:
playerid:number 玩家ID
uiid:string 界面ID
elementid:string 元件ID
animid:number / string 动画ID
playmode:number 播放模式(AnimMode)AnimMode
speed:number 播放速度(0~1)
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置装载器元件模型播放的动画
具体使用案例如下:
local isSuccess = CustomUI:SetLoaderModelAct(Player:GetHostUin(),"7482986899365911542-22886","7482986899365911542-22886_5", "100100", AnimMode.Default,1)
TurnSliderToPos
参数及类型:
playerid:number 玩家ID
uiid:string 界面ID
elementid:string 元件ID
x:number X坐标值
y:number Y坐标值
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 让滑动列表跳转到指定坐标位置
具体使用案例如下:
local isSuccess = CustomUI:TurnSliderToPos(Player:GetHostUin(), "7482986899365911542-22886","7482986899365911542-22886_6",0, 50)
SetSliderDir
参数及类型:
playerid:number 玩家ID
uiid:string 界面ID
elementid:string 元件ID
dir:number 滑动方式(0仅左右/1仅上下/2自由滑动)
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置滑动列表的滑动方向限制
具体使用案例如下:
local isSuccess = CustomUI:SetSliderDir(Player:GetHostUin(), "7482986899365911542-22886","7482986899365911542-22886_6", 1)
SetSliderBarImg
参数及类型:
playerid:number 玩家ID
uiid:string 界面ID
elementid:string 元件ID
url:string 图片资源ID/链接
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置滑动条/滑动列表滑块的图案资源
具体使用案例如下:
local isSuccess = CustomUI:SetSliderBarImg(Player:GetHostUin(), "7482986899365911542-22886","7482986899365911542-22886_6", 10100)
SetRelationPosition
参数及类型:
playerid:number 玩家ID
uiid:string 界面ID
elementid:string 元件ID
v:number 水平偏移枚举(HorizontalOffset)HorizontalOffset
xOffset:number X偏移值
xUnits:number 单位枚举(PixelUnits)PixelUnits
h:number 垂直偏移枚举(VerticalOffset)VerticalOffset
yOffset:number Y偏移值
yUnits:number 单位枚举(PixelUnits)PixelUnits
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置元件相对锚点/单位的偏移位置
具体使用案例如下:
local isSuccess = CustomUI:SetRelationPosition(Player:GetHostUin(), "7482986899365911542-22886", "7482986899365911542-22886_1", HorizontalOffset.Left, 10, PixelUnits.Percentage, VerticalOffset.Top, 10, PixelUnits.Percentage)
SetRelationSize
参数及类型:
playerid:number 玩家ID
uiid:string 界面ID
elementid:string 元件ID
width:number 宽度值
widthUnits:number 单位枚举(PixelUnits)PixelUnits
height:number 高度值
heightUnits:number 单位枚举(PixelUnits)PixelUnits
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置元件相对单位的宽高大小
具体使用案例如下:
local isSuccess = CustomUI:SetRelationSize(Player:GetHostUin(), "7482986899365911542-22886","7482986899365911542-22886_7", 100, PixelUnits.Percentage, 100, PixelUnits.Percentage)
CreateElement
参数及类型:
playerid:number 玩家ID
uiid:string 界面ID
elementType:number 元件类型枚举(ElementType)ElementType
返回值及类型:
elementid:string 新建元件ID;失败返回nil/false
该方法的其他说明: 动态创建元件并返回新元件ID,创建元件的子节点用 A.B 操作。
具体使用案例如下:
local id = CustomUI:CreateElement(Player:GetHostUin(), "7482986899365911542-22886",ElementType.Texture)
if id ~= nil then
print("创建元件成功")
end
CloneElement
参数及类型:
playerid:number 玩家ID
uiid:string 界面ID
elementid:string 被克隆元件ID
返回值及类型:
elementid:string 克隆元件ID;失败返回nil/false
该方法的其他说明: 克隆指定元件,并返回克隆后的新元件ID
具体使用案例如下:
local id = CustomUI:CloneElement(Player:GetHostUin(), "7482986899365911542-22886", "7482986899365911542-22886_7")
if id ~= nil then
print("克隆元件成功")
end
ChangeParent
参数及类型:
playerid:number 玩家ID
uiid:string 界面ID
elementid:string 元件ID
parentElementid:string 父元件ID
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 修改元件的父元件(调整层级结构)
具体使用案例如下:
local isSuccess = CustomUI:ChangeParent(Player:GetHostUin(), "7482986899365911542-22886", "7482986899365911542-22886_7", "7482986899365911542-22886_1")
if isSuccess then
print("改变父节点成功")
end
SetProgressBarValue
参数及类型:
playerid:number 玩家ID
uiid:string 界面ID
elementid:string 元件ID
itype:number 类型枚举(ProgressVal)ProgressVal
value:number 设定值
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置进度条元件的数值(最小/最大/当前等,按类型枚举生效)
具体使用案例如下:
local isSuccess = CustomUI:SetProgressBarValue(Player:GetHostUin(), "7482986899365911542-22886","7482986899365911542-22886_7", ProgressVal.Current, 100)
GetProgressBarValue
参数及类型:
reportid:number 上报ID
playerid:number 玩家ID
uiid:string 界面ID
elementid:string 元件ID
返回值及类型:
bool:boolean 是否上报成功
该方法的其他说明: 获取进度条元件的最小值/最大值/当前值,并通过reportid上报给主机
具体使用案例如下:
local min,max,value = CustomUI:GetProgressBarValue(Player:GetHostUin(), "7482986899365911542-22886","7482986899365911542-22886_7")
SetProgressBarResId
参数及类型:
playerid:number 玩家ID
uiid:string 界面ID
elementid:string 元件ID
itype:number 类型枚举(ProgressImg)ProgressImg
url:string 图片资源ID
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置进度条元件的纹理资源(背景/进度等,按类型枚举生效)
具体使用案例如下:
local isSuccess = CustomUI:SetProgressBarResId(Player:GetHostUin(), "7482986899365911542-22886", "7482986899365911542-22886_7", ProgressImg.Background, 10100)
SmoothChangeProgress
参数及类型:
playerid:number 玩家ID
uiid:string 界面ID
elementid:string 元件ID
bval:number 开始值
eval:number 结束值
time:number 执行时间
返回值及类型:
bool:boolean 是否触发成功(无显式返回值时为nil)
该方法的其他说明: 让进度条文本在指定时间内从起始值平滑变化到结束值
具体使用案例如下:
local bool = CustomUI:SmoothChangeProgress(playerid, uiid, elementid, bval, eval, time)
SetSpineAnimID
参数及类型:
playerid:number 玩家ID
uiid:string 界面ID
elementid:string 元件ID
animid:number 内置动画ID
animindex:number 动画序列
playmode:number 播放模式(ViedoPlayMode)ViedoPlayMode
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置动画元件的动画ID/序列/播放模式
具体使用案例如下:
local isSuccess = CustomUI:SetSpineAnimID(Player:GetHostUin(),"7482986899365911542-22886","7482986899365911542-22886_4", 10052, 1, ViedoPlayMode.Repeat)
SmoothIncreaseProgress
参数及类型:
playerid:number 玩家ID
uiid:string 界面ID
elementid:string 元件ID
time:number 时长
ptype:number 类型(1增加/2减小/3变化至)
value:number 变化值
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 让进度条文本在指定时间内按类型平滑变化(增加/减少/变化至)
具体使用案例如下:
local isSuccess = CustomUI:SmoothIncreaseProgress(Player:GetHostUin(), "7482986899365911542-22886","7482986899365911542-22886_7", 3, 1, 50)
SetFloatDamageTxt
参数及类型:
playerid:number 玩家ID
elementid:string 元件ID
objid:number 对象ID
text:string 文本
color:number 颜色(可选)
offsetx:number X偏移(可选)
offsety:number Y偏移(可选)
movex:number 移动X(可选)
movey:number 移动Y(可选)
showtime:number 显示时长(可选)
movex2:number 移动X2(可选)
movey2:number 移动Y2(可选)
showtime2:number 显示时长2(可选)
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 在对象屏幕坐标附近显示浮动伤害文本,并按参数播放移动/渐隐效果
具体使用案例如下:
local bool = CustomUI:SetFloatDamageTxt(playerid, elementid, objid, text, color, offsetx, offsety, movex, movey, showtime, movex2, movey2, showtime2)
GetScreenSize
参数及类型:
playerid:number 玩家ID
返回值及类型:
Width:number 屏幕宽度
Height:number 屏幕高度
该方法的其他说明: 获取客机屏幕分辨率
具体使用案例如下:
local width, height = CustomUI:GetScreenSize(Player:GetHostUin())
DeleteElement
参数及类型:
playerid:number 玩家ID
uiid:string 界面ID
elementid:string 元件ID
返回值及类型:
bool:boolean 是否删除成功
该方法的其他说明: 删除UI元件
具体使用案例如下:
local bool = CustomUI:DeleteElement(playerid, uiid, elementid)
SetBeaconBandPos
参数及类型:
playerid:number 玩家ID
elementid:string 元件ID
bandPosX:number x坐标
bandPosY:number y坐标
bandPosZ:number z坐标
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置信标绑定位置坐标
具体使用案例如下:
local bool = CustomUI:SetBeaconBandPos(playerid, elementid, bandPosX, bandPosY, bandPosZ)
SetBeaconObjId
参数及类型:
playerid:number 玩家ID
elementid:string 元件ID
objId:number 对象ID
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置信标绑定的对象ID
具体使用案例如下:
local bool = CustomUI:SetBeaconObjId(playerid, elementid, objId)
SetBeaconOffset
参数及类型:
playerid:number 玩家ID
elementid:string 元件ID
offsetX:number x偏移
offsetY:number y偏移
offsetZ:number z偏移
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置信标偏移量
具体使用案例如下:
local bool = CustomUI:SetBeaconOffset(playerid, elementid, offsetX, offsetY, offsetZ)
SetBeaconClampType
参数及类型:
playerid:number 玩家ID
elementid:string 元件ID
clampRange:number 限制类型
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置信标限制范围类型
具体使用案例如下:
local bool = CustomUI:SetBeaconClampType(playerid, elementid, clampType)
SetBeaconRadius
参数及类型:
playerid:number 玩家ID
elementid:string 元件ID
radius:number 半径
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置信标显示半径
具体使用案例如下:
local bool = CustomUI:SetBeaconRadius(playerid, elementid, radius)
SetBeaconMargin
参数及类型:
playerid:number 玩家ID
elementid:string 元件ID
horizontalMargin:number 水平边距
verticalMargin:number 垂直边距
uiid:string 界面ID
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置信标矩形限制范围
具体使用案例如下:
local bool = CustomUI:SetBeaconMargin(playerid, elementid, horizontalMargin, verticalMargin)
图文信息模块管理接口 Graphics
具体函数名及描述如下:
序号 函数名 函数描述
1 MakeGraphicsText(...) 创建文字板信息
2 MakeflotageText(...) 创建漂浮文字信息
3 MakeGraphicsProgress(...) 创建进度条信息
4 MakeGraphicsArrowToPos(...) 生成指向位置的箭头数据
5 MakeGraphicsLineToPos(...) 生成指向位置的线数据
6 MakeGraphicsNavPathToPos(...) 生成寻路引导线数据
7 MakeGraphicsSurfaceToPos(...) 生成指向位置的面数据
8 MakeGraphicsArrowToActor(...) 生成指向对象的箭头数据
9 MakeGraphicsLineToActor(...) 生成指向对象的线数据
10 MakeGraphicsSurfaceToActor(...) 生成指向对象的面数据
11 MakeGraphicsImage(...) 生成图片信息
12 CreateGraphicsTxtByPos(...) 在位置上创建图文
13 CreateGraphicsTxtByActor(...) 在生物身上创建文字板
14 CreateflotageTextByPos(...) 在位置上创建漂浮文字
15 CreateflotageTextByActor(...) 在生物身上创建漂浮文字
16 CreateGraphicsProgressByPos(...) 在位置上创建进度条
17 CreateGraphicsProgressByActor(...) 在生物身上创建进度条
18 RemoveGraphicsByPos(...) 删除位置上的图文
19 RemoveGraphicsByObjID(...) 删除生物的图文
20 UpdateGraphicsTextById(...) 更新文字板内容
21 UpdateGraphicsProgressById(...) 更新进度条进度
22 CreateGraphicsArrowByActorToPos(...) 生物指向位置箭头
23 CreateGraphicsArrowByActorToActor(...) 生物指向生物箭头
24 CreateGraphicsArrowByPosToPos(...) 位置指向位置箭头
25 CreateGraphicsArrowByPosToActor(...) 位置指向生物箭头
26 CreateGraphicsLineByActorToPos(...) 生物到位置线
27 CreateGraphicsNavPathByActorToPos(...) 生物到位置寻路引导线
28 CreateGraphicsLineByActorToActor(...) 生物到生物线
29 CreateGraphicsLineByPosToPos(...) 位置到位置线
30 CreateGraphicsLineByPosToActor(...) 位置到生物线
31 CreateGraphicsSurfaceByActorToPos(...) 生物到位置面
32 CreateGraphicsSurfaceByActorToActor(...) 生物到生物面
33 CreateGraphicsSurfaceByPosToPos(...) 位置到位置面
34 CreateGraphicsSurfaceByPosToActor(...) 位置到生物面
35 ReplaceAllGraphics(...) 迁移所有图文到目标对象
36 CreateGraphicsImageByPos(...) 在位置上创建图像
37 CreateGraphicsImageByActor(...) 在生物上创建图像
38 GetInnerGraphicsOffset(...) 获取内嵌图文偏移高度
39 CreateBrushByPos(...) 在位置上创建笔刷
40 RemoveGraphicsByGraphicsID(...) 按ID删除图文
MakeGraphicsText
参数及类型:
title:string 文本内容
font:number 字体大小
apha:number 不透明度
itype:number 文字板ID
autoWrap:number 是否自动换行(默认1)
返回值及类型:
obj:table 文字板信息表;失败返回nil
该方法的其他说明: 创建文字板图文信息数据(供创建接口使用)
具体使用案例如下:
local data = Graphics:MakeGraphicsText([=[123]=], 16, 0, 1, true)
MakeflotageText
参数及类型:
title:string 文本内容
font:number 字体大小
itype:number 漂浮文字ID
返回值及类型:
obj:table 漂浮文字信息表;失败返回nil
该方法的其他说明: 创建漂浮文字图文信息数据(供创建接口使用)
具体使用案例如下:
local data = Graphics:MakeflotageText([=[123]=], 16, 1)
MakeGraphicsProgress
参数及类型:
v1:number 当前值
v2:number 最大值
color:number / string 颜色值(0xFFFFFF)
itype:number 进度条ID
返回值及类型:
obj:table 进度条信息表;失败返回nil
该方法的其他说明: 创建进度条图文信息数据(供创建接口使用)
具体使用案例如下:
local data = Graphics:MakeGraphicsProgress(100, 100, [=[0xf44336]=], 1)
MakeGraphicsArrowToPos
参数及类型:
x:number 方块X
y:number 方块Y
z:number 方块Z
size:number 缩放值(可选)
color:number / string 颜色值(0xFFFFFF)
itype:number 箭头ID
返回值及类型:
obj:table 箭头信息表;失败返回nil
该方法的其他说明: 生成指向位置的箭头图文信息数据(供创建接口使用)
具体使用案例如下:
local x, y, z = Actor:GetPosition(Player:GetHostUin())
local data = Graphics:MakeGraphicsArrowToPos(x + 10, y, z, 1, [=[0xf44336]=], 1)
MakeGraphicsLineToPos
参数及类型:
x:number 方块X
y:number 方块Y
z:number 方块Z
size:number 缩放值(可选)
color:number / string 颜色值(0xFFFFFF)
itype:number 线ID
返回值及类型:
obj:table 线信息表;失败返回nil
该方法的其他说明: 生成指向位置的线图文信息数据(供创建接口使用)
具体使用案例如下:
local x, y, z = Actor:GetPosition(Player:GetHostUin())
local data = Graphics:MakeGraphicsLineToPos(x + 10, y, z, 1, [=[0xf44336]=], 1)
MakeGraphicsNavPathToPos
参数及类型:
x:number 方块X
y:number 方块Y
z:number 方块Z
itype:number 线ID
返回值及类型:
obj:table 寻路线信息表
该方法的其他说明: 生成指向位置的寻路引导线图文信息数据(供创建接口使用)
具体使用案例如下:
local obj = Graphics:MakeGraphicsNavPathToPos(x, y, z, itype, tCanSeePlayers)
MakeGraphicsSurfaceToPos
参数及类型:
x:number 方块X
y:number 方块Y
z:number 方块Z
size:number 缩放值(可选)
color:number / string 颜色值(0xFFFFFF)
itype:number 面ID
返回值及类型:
obj:table 面信息表;失败返回nil
该方法的其他说明: 生成指向位置的面图文信息数据(供创建接口使用)
具体使用案例如下:
local x, y, z = Actor:GetPosition(Player:GetHostUin())
local data = Graphics:MakeGraphicsSurfaceToPos(x + 10, y, z, 1, [=[0xf44336]=], 1)
MakeGraphicsArrowToActor
参数及类型:
objid:number 对象ID
size:number 缩放值(可选)
color:number / string 颜色值(0xFFFFFF)
itype:number 箭头ID
返回值及类型:
obj:table 箭头信息表;失败返回nil
该方法的其他说明: 生成指向对象的箭头图文信息数据(供创建接口使用)
具体使用案例如下:
local data = Graphics:MakeGraphicsArrowToActor(Player:GetHostUin(), 1, [=[0xf44336]=], 1)
MakeGraphicsLineToActor
参数及类型: objid:number:对象数据,size:number:缩放值,color:number:颜色值(0xFFFFFF),itype:number:线ID
返回值及类型:
info:table 线信息内容
该方法的主要作用: 生成指向对象的线数据
具体使用案例如下:
local data = Graphics:MakeGraphicsLineToActor(Player:GetHostUin(), 1, [=[0xf44336]=], 1)
MakeGraphicsSurfaceToActor
参数及类型: objid:number:对象数据,size:number:缩放值,color:number:颜色值(0xFFFFFF),itype:number:面ID
返回值及类型:
info:table 面信息内容
该方法的主要作用: 生成指向对象的面数据
具体使用案例如下:
local data = Graphics:MakeGraphicsSurfaceToActor(Player:GetHostUin(), 1, [=[0xf44336]=], 1)
MakeGraphicsImage
参数及类型:
imgid:string 图片资源ID
scale:number 缩放值(可选)
apha:number 透明度(0~100,可选)
itype:number 图片ID
返回值及类型:
obj:table 图片信息表;参数无效返回nil
该方法的其他说明: 生成图片图文信息数据(供创建接口使用)
具体使用案例如下:
local data = Graphics:MakeGraphicsImage([=[0_10004]=], 1, 100, 1)
CreateGraphicsTxtByPos
参数及类型:
x:number 方块X
y:number 方块Y
z:number 方块Z
graphicInfo:table 图文信息(MakeGraphicsText等)GraphicsT
x2:number X偏移(可选)
y2:number Y偏移(可选)
worldId:number 星球ID(可选)
返回值及类型:
id:number 图文实例ID;失败返回nil
该方法的其他说明: 在指定位置创建图文信息(文字板等)
具体使用案例如下:
local x, y, z = Actor:GetPosition(Player:GetHostUin())
y = y + 1
local data = Graphics:CreateGraphicsTxtByPos(x, y, z, Graphics:MakeGraphicsText([=[123 test]=], 16, 0, 1, true), 0 , 100, WorldId)
CreateGraphicsTxtByActor
参数及类型:
objid:number 对象ID
info:table 图文信息
dir:table 方向{x,y,z}
offest:number 方向偏移距离
x2:number X偏移(可选)
y2:number Y偏移(可选)
返回值及类型:
id:number 图文实例ID;失败返回nil
该方法的其他说明: 在生物身上创建文字板图文
具体使用案例如下:
local data = Graphics:CreateGraphicsTxtByActor(Player:GetHostUin(), Graphics:MakeGraphicsText([=[123 test]=], 16, 0, 1, true), {x = 0, y = 1, z = 0}, 20)
CreateflotageTextByPos
参数及类型:
x:number 方块X
y:number 方块Y
z:number 方块Z
info:table 图文信息(MakeflotageText)
x2:number X偏移(可选)
y2:number Y偏移(可选)
worldId:number 星球ID(可选)
返回值及类型:
id:number 图文实例ID;失败返回nil
该方法的其他说明: 在指定位置创建漂浮文字
具体使用案例如下:
local x, y, z = Actor:GetPosition(Player:GetHostUin())
local data = Graphics:CreateflotageTextByPos(x, y, z, Graphics:MakeflotageText([=[123 floatage text 111]=], 16, 1), WorldId)
CreateflotageTextByActor
参数及类型:
objid:number 对象ID
info:table 图文信息
dir:table 方向{x,y,z}
offest:number 方向偏移距离
x2:number X偏移(可选)
y2:number Y偏移(可选)
返回值及类型:
id:number 图文实例ID;失败返回nil
该方法的其他说明: 在生物身上创建漂浮文字
具体使用案例如下:
local data = Graphics:CreateflotageTextByActor(Player:GetHostUin(), Graphics:MakeflotageText([=[123 floatage text 222]=], 16, 1), {x = 0, y = 1, z = 0}, 100)
CreateGraphicsProgressByPos
参数及类型:
x:number 方块X
y:number 方块Y
z:number 方块Z
info:table 图文信息(MakeGraphicsProgress)Graphics
x2:number X偏移(可选)
y2:number Y偏移(可选)
worldId:number 星球ID(可选)
返回值及类型:
id:number 图文实例ID;失败返回nil
该方法的其他说明: 在指定位置创建进度条
具体使用案例如下:
local x, y, z = Actor:GetPosition(Player:GetHostUin())
local data = Graphics:CreateGraphicsProgressByPos(x, y, z, Graphics:MakeGraphicsProgress(100, 101, [=[0xf44336]=], 1), WorldId)
CreateGraphicsProgressByActor
参数及类型:
objid:number 对象ID
info:table 图文信息
dir:table 方向{x,y,z}
offest:number 方向偏移距离
x2:number X偏移(可选)
y2:number Y偏移(可选)
返回值及类型:
id:number 图文实例ID;失败返回nil
该方法的其他说明: 在生物身上创建进度条
具体使用案例如下:
local data = Graphics:CreateGraphicsProgressByActor(Player:GetHostUin(), Graphics:MakeGraphicsProgress(99, 100, [=[0xf44336]=], 1), {x = 0, y = 1, z = 0}, 100)
RemoveGraphicsByPos
参数及类型:
x:number 方块X
y:number 方块Y
z:number 方块Z
itype:number 图文实例ID
graphType:number 图文类型枚举(Graphics)Graphics
worldId:number 星球ID(可选)
返回值及类型:
bool:boolean 是否删除成功
该方法的其他说明: 删除指定位置上指定类型与ID的图文信息
具体使用案例如下:
self:ThreadWait(1)
local result = Graphics:RemoveGraphicsByPos(x, y, z, 11, GraphicsType.Progress, WorldId)
RemoveGraphicsByObjID
参数及类型:
objid:number 对象ID
itype:number 图文实例ID
graphType:number 图文类型枚举(Graphics)Graphics
返回值及类型:
bool:boolean 是否删除成功
该方法的其他说明: 删除指定生物上指定类型与ID的图文信息
具体使用案例如下:
self:ThreadWait(1)
local result = Graphics:RemoveGraphicsByObjID(Player:GetHostUin(), 11, GraphicsType.Progress)
UpdateGraphicsTextById
参数及类型:
graphid:number 图文实例ID
title:string 文本内容
fontsize:number 字体大小
apha:number 不透明度
isync:boolean 是否同步到客机(可选)
返回值及类型:
bool:boolean 是否更新成功
该方法的其他说明: 按实例ID更新文字板图文的内容(字体、透明度等)
具体使用案例如下:
local x, y, z = Actor:GetPosition(Player:GetHostUin())
y = y + 2
local txtgraphis1 = Graphics:CreateGraphicsTxtByPos(x, y, z, Graphics:MakeGraphicsText([=[创建的文本]=], 16, 0, 1, true), 0 , 100, WorldId)
local txtgraphis2 = Graphics:CreateGraphicsTxtByPos(x+1, y, z, Graphics:MakeGraphicsText([=[创建的文本]=], 16, 0, 1, true), 0 , 100, WorldId)
if txtgraphis1 and txtgraphis2 then
self:ThreadWait(1)
-- 图文信息更新 一般用于间隔一段时间同步
Graphics:UpdateGraphicsTextById(txtgraphis1, "更新的文本1",20,0.5,false) -- 更新文本内容 字体 透明度
Graphics:UpdateGraphicsTextById(txtgraphis2, "更新的文本2",20,0.5,true) -- 更新文本内容 字体 透明度 (最后一次传入true会同步到其他客户端)
end
local txtgraphis3 = Graphics:CreateGraphicsTxtByPos(x+3, y, z, Graphics:MakeGraphicsText("动态文本",16, 0, 1, true), 0 , 100, WorldId)
if txtgraphis3 then
local extendparam = {1,2,3}
-- 脚本添加自动刷新图文信息功能
local function getvalues(extendparam) --参数信息是添加监听时传入的参数
return tostring(math.random(1, 9999))
end
Listen:AddGraphicsListenParam(txtgraphis3,{getvalues},extendparam) -- 添加自动刷新函数 extparam 扩展参数会传递到刷新函数里面
end
UpdateGraphicsProgressById
参数及类型:
graphid:number 图文实例ID
val1:number 当前值
val2:number 最大值
isync:boolean 是否同步到客机(可选)
返回值及类型:
bool:boolean 是否更新成功
该方法的其他说明: 按实例ID更新进度条图文的当前值/最大值
具体使用案例如下:
local x, y, z = Actor:GetPosition(Player:GetHostUin())
y = y + 1
local prograhics1 = Graphics:CreateGraphicsProgressByPos(x, y, z, Graphics:MakeGraphicsProgress(90, 100, [=[0xf44336]=], 1), WorldId)
local prograhics3 = Graphics:CreateGraphicsProgressByPos(x + 4, y, z, Graphics:MakeGraphicsProgress(89, 100, [=[0xf44336]=], 1), WorldId)
if prograhics1 and prograhics3 then
self:ThreadWait(1)
Graphics:UpdateGraphicsProgressById(prograhics1, 10,200,false) -- 更新进度条的最小值和最大值
Graphics:UpdateGraphicsProgressById(prograhics3, 30,40,true) -- 更新进度条的最小值和最大值 (最后一次传入true会同步到其他客户端)
end
local prograhics2 = Graphics:CreateGraphicsProgressByPos(x-4, y, z, Graphics:MakeGraphicsProgress(10, 20, [=[0xf40000]=], 1, true), WorldId)
if prograhics2 then
local extendparam = {1,2,3}
-- 脚本添加自动刷新图文信息功能
local function getvalues()
return math.random(1, 20), math.random(20, 40) -- 最小值 最大值
end
Listen:AddGraphicsListenParam(prograhics2,{getvalues},extendparam) -- 添加自动刷新函数 extparam 扩展参数会传递到刷新函数里面
end
CreateGraphicsArrowByActorToPos
参数及类型:
objid:number 对象ID
info:table 图文信息(MakeGraphicsArrowToPos等)Graphics
dir:table 方向{x,y,z}
offset:number 方向偏移距离
返回值及类型:
bool:boolean 是否创建成功
该方法的其他说明: 创建从生物指向位置的箭头
具体使用案例如下:
local x, y, z = Actor:GetPosition(Player:GetHostUin())
local isSuccess = Graphics:CreateGraphicsArrowByActorToPos(Player:GetHostUin(), Graphics:MakeGraphicsArrowToPos(x + 10, y, z, 1, [=[0xf44336]=], 1), {x = 0, y = 1, z = 0}, 20)
CreateGraphicsArrowByActorToActor
参数及类型:
objid:number 对象ID
info:table 图文信息
dir:table 方向{x,y,z}
offset:number 方向偏移距离
返回值及类型:
bool:boolean 是否创建成功
该方法的其他说明: 创建从生物指向生物的箭头
具体使用案例如下:
local isSuccess = Graphics:CreateGraphicsArrowByActorToActor(Player:GetHostUin(), Graphics:MakeGraphicsArrowToActor(Player:GetHostUin(), 1, [=[0xf44336]=], 1), {x = 0, y = 1, z = 0}, 20)
CreateGraphicsArrowByPosToPos
参数及类型:
pos:table 位置坐标{x,y,z}
info:table 图文信息
worldId:number 星球ID(可选)
返回值及类型:
bool:boolean 是否创建成功
该方法的其他说明: 创建从位置指向位置的箭头
具体使用案例如下:
local x, y, z = Actor:GetPosition(Player:GetHostUin())
y = y + 3
local isSuccess = Graphics:CreateGraphicsArrowByPosToPos({x = x, y = y, z = z}, Graphics:MakeGraphicsArrowToPos(x + 10, y, z, 1, [=[0xf44336]=], 1), WorldId)
CreateGraphicsArrowByPosToActor
参数及类型:
pos:table 位置坐标{x,y,z}
info:table 图文信息
worldId:number 星球ID(可选)
返回值及类型:
bool:boolean 是否创建成功
该方法的其他说明: 创建从位置指向生物的箭头
具体使用案例如下:
local x, y, z = Actor:GetPosition(Player:GetHostUin())
y = y + 3
local isSuccess = Graphics:CreateGraphicsArrowByPosToActor({x = x, y = y, z = z}, Graphics:MakeGraphicsArrowToActor(Player:GetHostUin(), 1, [=[0xf44336]=], 1), WorldId)
CreateGraphicsLineByActorToPos
参数及类型:
objid:number 对象ID
info:table 图文信息
dir:table 方向{x,y,z}
offset:number 方向偏移距离
返回值及类型:
bool:boolean 是否创建成功
该方法的其他说明: 创建生物到位置的线
具体使用案例如下:
local x, y, z = Actor:GetPosition(Player:GetHostUin())
local isSuccess = Graphics:CreateGraphicsLineByActorToPos(Player:GetHostUin(), Graphics:MakeGraphicsLineToPos(x + 10, y, z, 1, [=[0xf44336]=], 1), {x = 0, y = 1, z = 0}, 20)
CreateGraphicsNavPathByActorToPos
参数及类型:
objid:number 对象ID
info:table 图文信息(含pos、id、tCanSeePlayers等)Player
dir:table 方向{x,y,z}
offset:number 方向偏移距离
返回值及类型:
bool:boolean 是否创建成功
该方法的其他说明: 创建生物到位置的寻路引导线
具体使用案例如下:
local bool = Graphics:CreateGraphicsNavPathByActorToPos(objid, info, dir, offset)
CreateGraphicsLineByActorToActor
参数及类型:
objid:number 对象ID
info:table 图文信息
dir:table 方向{x,y,z}
offset:number 方向偏移距离
返回值及类型:
bool:boolean 是否创建成功
该方法的其他说明: 创建生物到生物的线
具体使用案例如下:
local isSuccess = Graphics:CreateGraphicsLineByActorToActor(Player:GetHostUin(), Graphics:MakeGraphicsLineToActor(Player:GetHostUin(), 1, [=[0xf44336]=], 1), {x = 0, y = 1, z = 0}, 500)
CreateGraphicsLineByPosToPos
参数及类型:
pos:table 位置坐标{x,y,z}
info:table 图文信息
worldId:number 星球ID(可选)
返回值及类型:
bool:boolean 是否创建成功
该方法的其他说明: 创建位置到位置的线
具体使用案例如下:
local x, y, z = Actor:GetPosition(Player:GetHostUin())
y = y + 3
local isSuccess = Graphics:CreateGraphicsLineByPosToPos({x = x, y = y, z = z}, Graphics:MakeGraphicsLineToPos(x + 10, y, z, 1, [=[0xf44336]=], 1), WorldId)
CreateGraphicsLineByPosToActor
参数及类型:
pos:table 位置坐标{x,y,z}
info:table 图文信息
worldId:number 星球ID(可选)
返回值及类型:
bool:boolean 是否创建成功
该方法的其他说明: 创建位置到生物的线
具体使用案例如下:
local x, y, z = Actor:GetPosition(Player:GetHostUin())
x = x + 3
local isSuccess = Graphics:CreateGraphicsLineByPosToActor({x = x, y = y, z = z}, Graphics:MakeGraphicsLineToActor(Player:GetHostUin(), 1, [=[0xf44336]=], 1), WorldId)
CreateGraphicsSurfaceByActorToPos
参数及类型:
objid:number 对象ID
info:table 图文信息
dir:table 方向{x,y,z}
offset:number 方向偏移距离
返回值及类型:
bool:boolean 是否创建成功
该方法的其他说明: 创建生物到位置的面
具体使用案例如下:
local x, y, z = Actor:GetPosition(Player:GetHostUin())
local isSuccess = Graphics:CreateGraphicsSurfaceByActorToPos(Player:GetHostUin(), Graphics:MakeGraphicsSurfaceToPos(x + 10, y, z, 1, [=[0xf44336]=], 1), {x = 0, y = 1, z = 0}, 20)
CreateGraphicsSurfaceByActorToActor
参数及类型:
objid:number 对象ID
info:table 图文信息
dir:table 方向{x,y,z}
offset:number 方向偏移距离
返回值及类型:
bool:boolean 是否创建成功
该方法的其他说明: 创建生物到生物的面
具体使用案例如下:
local isSuccess = Graphics:CreateGraphicsSurfaceByActorToActor(Player:GetHostUin(), Graphics:MakeGraphicsSurfaceToActor(Player:GetHostUin(), 1, [=[0xf44336]=], 1), {x = -1, y = 0, z = 0}, 500)
CreateGraphicsSurfaceByPosToPos
参数及类型:
pos:table 位置坐标{x,y,z}
info:table 图文信息
worldId:number 星球ID(可选)
返回值及类型:
bool:boolean 是否创建成功
该方法的其他说明: 创建位置到位置的面
具体使用案例如下:
local x, y, z = Actor:GetPosition(Player:GetHostUin())
y = y + 3
local isSuccess = Graphics:CreateGraphicsSurfaceByPosToPos({x = x, y = y, z = z}, Graphics:MakeGraphicsSurfaceToPos(x + 10, y, z, 1, [=[0xf44336]=], 1), WorldId)
CreateGraphicsSurfaceByPosToActor
参数及类型:
pos:table 位置坐标{x,y,z}
info:table 图文信息
worldId:number 星球ID(可选)
返回值及类型:
bool:boolean 是否创建成功
该方法的其他说明: 创建位置到生物的面
具体使用案例如下:
local x, y, z = Actor:GetPosition(Player:GetHostUin())
y = y + 3
local isSuccess = Graphics:CreateGraphicsSurfaceByPosToActor({x = x, y = y, z = z}, Graphics:MakeGraphicsSurfaceToActor(Player:GetHostUin(), 1, [=[0xf44336]=], 1), WorldId)
ReplaceAllGraphics
参数及类型:
srcObjid:number 源对象ID
desObjid:number 目标对象ID
返回值及类型:
bool:boolean 是否迁移成功
该方法的其他说明: 将源对象上的所有图文信息迁移到目标对象
具体使用案例如下:
local objs = GameObject:CreatePrefab(ObjType.Mob, 3400, x + 1,y,z, 1) -- 创建两个游戏内生物
if objs and #objs > 0 then
objid2 = objs[1]:GetId()
result = Graphics:ReplaceAllGraphics(objid1,objid2)
print("result", result)
end
CreateGraphicsImageByPos
参数及类型:
x:number 方块X
y:number 方块Y
z:number 方块Z
info:table 图文信息(MakeGraphicsImage)Graphics
x2:number X偏移(可选)
y2:number Y偏移(可选)
worldId:number 星球ID(可选)
返回值及类型:
bool:boolean 是否创建成功
该方法的其他说明: 在指定位置创建图像图文
具体使用案例如下:
local x, y, z = Actor:GetPosition(Player:GetHostUin())
y = y + 3
local isSuccess = Graphics:CreateGraphicsImageByPos(x, y, z, Graphics:MakeGraphicsImage([=[0_10004]=], 1, 100, 1), WorldId)
CreateGraphicsImageByActor
参数及类型:
objid:number 对象ID
info:table 图文信息
dir:table 方向{x,y,z}
offest:number 方向偏移距离
x2:number X偏移(可选)
y2:number Y偏移(可选)
返回值及类型:
bool:boolean 是否创建成功
该方法的其他说明: 在生物上创建图像图文
具体使用案例如下:
local isSuccess = Graphics:CreateGraphicsImageByActor(Player:GetHostUin(), Graphics:MakeGraphicsImage([=[0_10004]=], 1, 100, 1), {x = 0, y = 1, z = 0}, 200)
GetInnerGraphicsOffset
参数及类型:
tuin:number 玩家Uin
itype:number 类型(PlayerNameType)PlayerNameType
callback:function回调函数(参数为高度值)
返回值及类型: 无返回值(结果通过callback回调)
该方法的其他说明: 获取玩家昵称/称号的偏移高度并通过回调返回(玩家脚本调用)
具体使用案例如下:
Graphics:GetInnerGraphicsOffset(Player:GetHostUin(), PlayerNameType.Nick, function (height)
if height == 0 then
print("未展示")
else
print("高度", height)
end
end)
CreateBrushByPos
参数及类型:
pos:table 位置坐标{x,y,z}
dim:table 尺寸{x,y,z}
color:number / string 颜色值(0xFFFFFF)
showuin:number 显示玩家Uin(0全部)
itype:number 类别ID
worldId:number 星球ID(可选)
返回值及类型:
id:number 笔刷实例ID;失败返回false
该方法的其他说明: 在指定位置创建笔刷区域图文<1.54+>
具体使用案例如下:
local x, y, z = Actor:GetPosition(Player:GetHostUin())
local pos = {x = x, y = y, z = z}
local dim = {x = 3, y = 3, z = 3}
local itype = 11
-- 在玩家位置创建一个3x3x3的方块预览
local graphicsid = Graphics:CreateBrushByPos( pos, dim, 0xFF00ff, Player:GetHostUin(), itype)
RemoveGraphicsByGraphicsID
参数及类型:
objid:number 图文实例ID
返回值及类型:
bool:boolean 是否删除成功
该方法的其他说明: 按图文实例ID删除图文信息
具体使用案例如下:
local x, y, z = Actor:GetPosition(Player:GetHostUin())
y = y + 2
local graphicsid = Graphics:CreateGraphicsTxtByPos(x, y, z, Graphics:MakeGraphicsText([=[123 test]=], 16, 0, 1, true), 0 , 100, WorldId)
self:ThreadWait(2)
local result = Graphics:RemoveGraphicsByGraphicsID(graphicsid)
区域模块管理接口 Area
具体函数名及描述如下:
序号 函数名 函数描述
1 CreateAreaPrefab(...) 创建区域对象
2 GetAreaUuidByObjId(...) 通过区域对象ID获取区域uuid
3 CreateAreaRectByRange(...) 创建矩形区域
4 DestroyArea(...) 销毁区域
5 GetAreaCenter(...) 获取区域中间点
6 GetAreaRectLength(...) 获取区域各边长
7 GetAreaRectRange(...) 获取区域范围
8 GetRandomPos(...) 随机区域内位置
9 ObjInArea(...) 检测对象是否在区域内
10 BlockInArea(...) 检测区域内是否有某个方块
11 PosInArea(...) 位置是否在区域内
12 GetAreaPlayers(...) 获取区域中的所有玩家
13 GetAreaCreatures(...) 获取区域中的所有生物
14 ClearAllBlock(...) 清空区域内全部方块
15 CloneAreaBlock(...) 复制区域内方块到另一个区域
16 ReplaceAreaBlock(...) 替换方块类型为新的方块类型
17 GetAllObjsInAreaRange(...) 获取区域范围内全部对象
18 GetAllPlayersInAreaRange(...) 获取区域范围内全部玩家
19 GetAllCreaturesInAreaRange(...) 获取区域范围内全部生物
20 FillBlockAreaRange(...) 用方块填充区域范围
21 ClearAllBlockAreaRange(...) 清空区域范围内方块
22 DestroyAllBlock(...) 破坏区域内的方块
23 CloneAreaRange(...) 复制区域范围内方块到另一个区域
24 ReplaceAreaRangeBlock(...) 替换区域范围方块
25 GetRandomAirPos(...) 获取一个区域内随机空气方块
26 GetAreaBlockTypes(...) 获取区域内的方块类型
27 GetBlockNum(...) 获取区域内的方块数量
28 CheckRangeCanPlace(...) 检查指定范围内是否可以放置方块
29 GetRelativeActors(...) 获取区域中指定玩家关系的角色
CreateAreaPrefab
参数及类型:
pos:table 区域底部中心位置
size:table 区域大小
worldId:number 星球id(默认当前主机所在星球)
返回值及类型:
obj:table 区域对象
id:number 区域对象ID
该方法的其他说明: 创建区域预制体对象,设置区域大小和位置,返回区域对象和对象ID
具体使用案例如下:
-- 在玩家位置下方上创建一个20*20*20 尺寸的区域对象, 玩家在整个区域包围盒底面正中心
local area = Area:CreateAreaPrefab({x = x, y = y, z = z}, {x = 21, y = 21, z = 21}, WorldId)
--区域对象也是对象,可以挂载组件等
if area then
local areaId = area:GetId() -- 获取区域对象的id
-- area:AddComponent("组件id")
end
local startPos, endPos = Area:GetAreaRectRange(area:GetId())
GetAreaUuidByObjId
参数及类型:
objId:number 区域对象ID
返回值及类型:
id:number 区域uuid
该方法的其他说明: 根据区域对象ID获取对应的区域唯一标识符(uuid)
具体使用案例如下:
local id = Area:GetAreaUuidByObjId(objId)
CreateAreaRectByRange
参数及类型:
posBeg:table 区域起始坐标
posEnd:table 区域结束坐标
btmp:boolean 是否是临时区域
worldId:number 星球id(默认当前主机所在星球)
返回值及类型:
id:number 区域ID
该方法的其他说明: 根据起始和结束坐标创建矩形区域,通过范围定义区域边界
具体使用案例如下:
-- 以玩家为底面中心位置 创建一个矩形区域,指定起始点和终点
local startPos = {x = x - 10, y = y , z = z - 10}
local endPos = {x = x + 10, y = y + 20, z = z + 10}
local areaId = Area:CreateAreaRectByRange(startPos, endPos, false, WorldId)
DestroyArea
参数及类型:
areaid:number 区域ID
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 销毁指定ID的区域,释放区域资源
具体使用案例如下:
-- 销毁区域
local result = Area:DestroyArea(areaId)
GetAreaCenter
参数及类型:
areaid:number 区域ID
返回值及类型:
pos:table 区域中心位置
该方法的其他说明: 获取指定区域的中心点坐标位置
具体使用案例如下:
-- 获取区域中心点
local centerPos = Area:GetAreaCenter(areaId)
GetAreaRectLength
参数及类型:
areaid:number 区域ID
返回值及类型:
lenx:number x轴向长度
leny:number y轴向长度
lenz:number z轴向长度
该方法的其他说明: 获取指定区域在三个轴向上的长度尺寸
具体使用案例如下:
-- 获取矩形区域的长度
local lengthX, lengthY, lengthZ = Area:GetAreaRectLength(areaId)
GetAreaRectRange
参数及类型:
areaid:number 区域ID
返回值及类型:
posBeg:table 区域起始坐标
posEnd:table 区域结束坐标
worldId:number 星球id
该方法的其他说明: 获取指定区域的边界范围,返回起始坐标、结束坐标和所在星球ID
具体使用案例如下:
-- 获取矩形区域的范围
local startPos, endPos = Area:GetAreaRectRange(areaId)
GetRandomPos
参数及类型:
areaid:number 区域ID
返回值及类型:
pos:table 随机坐标
该方法的其他说明: 在指定区域内随机获取一个坐标位置
具体使用案例如下:
-- 获取区域内随机位置
local pos = Area:GetRandomPos(areaId)
ObjInArea
参数及类型:
areaid:number 区域ID
objid:number 对象ID
返回值及类型:
bool:boolean 是否在区域内
该方法的其他说明: 检测指定对象是否位于指定区域内
具体使用案例如下:
-- 检查对象是否在区域内
local result = Area:ObjInArea(areaId, Player:GetHostUin())
BlockInArea
参数及类型:
areaid:number 区域ID
blockid:number / string 方块类型ID
返回值及类型:
bool:boolean 是否在区域内
该方法的其他说明: 检测指定区域内是否存在指定类型的方块
具体使用案例如下:
-- 检查指定位置的方块是否在区域内
local isInArea = Area:BlockInArea(areaId, 200)
PosInArea
参数及类型:
areaid:number 区域唯一ID
pos:table 位置(x|y|z)
worldId:number 星球id(默认当前主机所在星球)
返回值及类型:
bool:boolean 是否在区域内
该方法的其他说明: 检测指定位置坐标是否位于指定区域内
具体使用案例如下:
-- 检查位置是否在区域内
local result = Area:PosInArea(areaId, {x = x, y = y, z = z}, WorldId)
GetAreaPlayers
参数及类型:
areaid:number 区域唯一ID
返回值及类型:
objids:table 玩家ID组
该方法的其他说明: 获取指定区域内的所有玩家对象ID列表
具体使用案例如下:
-- 获取区域内所有玩家
local players = Area:GetAreaPlayers(areaId)
GetAreaCreatures
参数及类型:
areaid:number 区域唯一ID
返回值及类型:
objids:table 生物ID组
该方法的其他说明: 获取指定区域内的所有生物对象ID列表,注意当帧创建的生物无法获取
具体使用案例如下:
-- 获取区域内的所有生物
local creatures = Area:GetAreaCreatures(areaId)
ClearAllBlock
参数及类型:
areaid:number 区域唯一ID
blockid:number / string 方块类型ID
num:number 最大清除数量
btriggerevent:boolean 是否触发事件(默认false)
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 清空指定区域内的所有方块,可指定方块类型和最大清除数量,支持触发事件
具体使用案例如下:
-- 清除区域内的所有201方块
local result = Area:ClearAllBlock(areaId, 201)
CloneAreaBlock
参数及类型:
areaid:number 区域唯一ID
pos:table 目标起始位置
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 将指定区域内的方块复制到目标位置的另一个区域
具体使用案例如下:
-- 克隆区域内的方块
local isSuccess = Area:CloneAreaBlock(areaId, {x = x + 10, y = y, z = z - 10})
ReplaceAreaBlock
参数及类型:
areaid:number 区域唯一ID
srcblockid:number / string 区域内的方块类型
destblockid:number / string 替换的方块类型
face:number 方块朝向
color:string / number 颜色
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 将区域内指定类型的方块替换为新的方块类型,支持设置朝向和颜色
具体使用案例如下:
-- 替换区域内的方块, 200 替换为 203
local result = Area:ReplaceAreaBlock(areaId, 200, 203) -- 将方块ID为1的替换为2
GetAllObjsInAreaRange
参数及类型:
posbeg:table 起始位置
posend:table 末点位置
objtype:number 对象类型(ObjType)ObjType
worldId:number 星球id(默认当前主机所在星球)
返回值及类型:
objids:table 对象ID组
该方法的其他说明: 获取指定位置范围内指定类型的所有对象ID列表
具体使用案例如下:
-- 获取区域中的全部玩家
local posBeg, posEnd = Area:GetAreaRectRange(areaId)
local objects = Area:GetAllObjsInAreaRange(posBeg, posEnd, ObjType.Player, WorldId)
GetAllPlayersInAreaRange
参数及类型:
posbeg:table 起始位置
posend:table 末点位置
worldId:number 星球id(默认当前主机所在星球)
返回值及类型:
objids:table 对象ID组
该方法的其他说明: 获取指定位置范围内的所有玩家对象ID列表
具体使用案例如下:
local posBeg, posEnd = Area:GetAreaRectRange(areaId)
local players = Area:GetAllPlayersInAreaRange(posBeg, posEnd, WorldId)
GetAllCreaturesInAreaRange
参数及类型:
posbeg:table 起始位置
posend:table 末点位置
worldId:number 星球id(默认当前主机所在星球)
返回值及类型:
objids:table 对象ID组
该方法的其他说明: 获取指定位置范围内的所有生物对象ID列表
具体使用案例如下:
local posBeg, posEnd = Area:GetAreaRectRange(areaId)
local creatures = Area:GetAllCreaturesInAreaRange(posBeg, posEnd, WorldId)
FillBlockAreaRange
参数及类型:
posbeg:table 起始位置
posend:table 末点位置
blockid:number / string 方块类型
face:number 朝向
color:string / number 颜色
switch:boolean 是否开启
filltype:number 填充类型(AreaFillType)AreaFillType
worldId:number 星球id(默认当前主机所在星球)
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 用指定方块填充位置范围,支持设置朝向、颜色和填充类型,分帧处理当前帧无法操作填充的方块
具体使用案例如下:
local startPos = {x = x + 5, y = y, z = z}
local endPos = {x = x + 6, y = y + 2, z = z + 1}
-- 填充区域内的方块
local result = Area:FillBlockAreaRange(startPos, endPos, 105, nil, nil, nil,nil, WorldId)
ClearAllBlockAreaRange
参数及类型:
posbeg:table 起始位置
posend:table 末点位置
blockid:number / string 方块类型
btriggerevent:boolean 是否触发事件
worldId:number 星球id(默认当前主机所在星球)
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 清空指定位置范围内的方块,可指定方块类型和是否触发事件
具体使用案例如下:
local posBeg, posEnd = Area:GetAreaRectRange(areaId)
local result = Area:ClearAllBlockAreaRange(posBeg, posEnd, 205, nil, WorldId)
DestroyAllBlock
参数及类型:
areaid:number 区域ID
blockid:string / number 方块ID或资产ID
n:number 销毁数量(不填或者0则全部销毁)
candrop:boolean 是否掉落物品
btriggerevent:boolean 是否触发事件
返回值及类型:
bool:boolean 操作是否成功
该方法的其他说明: 破坏指定区域内的方块,可指定方块类型、销毁数量、是否掉落物品和是否触发事件
具体使用案例如下:
-- 销毁区域内的所有105方块
local result = Area:DestroyAllBlock(areaId, 105)
CloneAreaRange
参数及类型:
posbeg:table 起始位置
posend:table 末点位置
deststartpos:table 目标起始位置
itype:number 操作类型
worldId:number 星球id(默认当前主机所在星球)
返回值及类型:
bool:boolean 操作是否成功
该方法的其他说明: 将指定位置范围内的方块复制到目标位置的另一个区域,支持指定操作类型
具体使用案例如下:
local stPos = {x = x - 10, y = y, z = z - 10}
local ePos = {x = x + 10, y = y + 10, z = z + 10}
-- 克隆区域范围
local isSuccess = Area:CloneAreaRange(stPos, ePos, {x = x + 10, y = y, z = z - 10}, nil, WorldId)
ReplaceAreaRangeBlock
参数及类型:
posbeg:table 起始位置
posend:table 末点位置
srcblockid:number / string 方块类型
destblockid:number / string 目标方块类型
face:number 朝向
inair:boolean 是否包括空气方块
worldId:number 星球id(默认当前主机所在星球)
返回值及类型:
bool:boolean 操作是否成功
该方法的其他说明: 将指定位置范围内的源方块类型替换为目标方块类型,支持设置朝向和是否包括空气方块
具体使用案例如下:
-- 替换区域范围内的方块
local posBeg, posEnd = Area:GetAreaRectRange(areaId)
local result = Area:ReplaceAreaRangeBlock(posBeg, posEnd, 202, 205, nil, nil, WorldId)
GetRandomAirPos
参数及类型:
posbeg:table 区域起始位置
posend:table 区域结束位置
worldId:number 星球id(默认当前主机所在星球)
返回值及类型:
pos:table 随机空气位置(x,y,z)
该方法的其他说明: 在指定位置范围内随机获取一个空气方块的坐标位置
具体使用案例如下:
-- 获取区域内随机空气位置
local posBeg, posEnd = Area:GetAreaRectRange(areaId)
local pos = Area:GetRandomAirPos(posBeg, posEnd, WorldId)
GetAreaBlockTypes
参数及类型:
areaid:number 区域ID
返回值及类型:
ids:table 方块类型ID组
该方法的其他说明: 获取指定区域内所有不同的方块类型ID列表
具体使用案例如下:
-- 获取区域内所有方块类型
local blockTypes = Area:GetAreaBlockTypes(areaId)
GetBlockNum
参数及类型:
areaid:number 区域ID
blockid:string / number 方块ID
返回值及类型:
num:number 方块数量
该方法的其他说明: 统计指定区域内指定类型方块的数量
具体使用案例如下:
-- 获取区域内方块数量
local blockNum = Area:GetBlockNum(areaId, 202)
CheckRangeCanPlace
参数及类型:
posbeg:table 区域起始位置
posend:table 区域结束位置
blockid:string / number 方块ID
worldId:number 星球id(默认当前主机所在星球)
返回值及类型:
bool:boolean 是否可以放置方块
该方法的其他说明: 检查指定位置范围内是否可以放置指定类型的方块
具体使用案例如下:
local startPos = {x = x + 5, y = y, z = z}
local endPos = {x = x + 6, y = y + 2, z = z + 1}
-- 检查范围是否可以放置
local result = Area:CheckRangeCanPlace(startPos, endPos, 105, WorldId)
GetRelativeActors
参数及类型:
posbeg:table 区域起始位置
posend:table 区域结束位置
uin:number 玩家ID
relativing:number 关系类型(RelativeCampType)RelativeCampType
actortype:number 角色(ObjType)ObjType
worldId:number 星球id(默认当前主机所在星球)
返回值及类型:
num:number 数量
ids:table ID数组
该方法的其他说明: 获取指定位置范围内与指定玩家具有特定关系的角色对象,返回数量和ID列表
具体使用案例如下:
local posBeg, posEnd = Area:GetAreaRectRange(areaId)
local num, objs = Area:GetRelativeActors(posBeg, posEnd, Player:GetHostUin(), RelativeCampType.Friendly, ObjType.Mob, WorldId)
容器模块管理接口 WorldContainer
具体函数名及描述如下:
序号 函数名 函数描述
1 CheckStorage(...) 检测储物箱
2 ClearStorageBox(...) 清空储物箱
3 CheckStorageEmptyGrid(...) 检测储物箱空位
4 SetStorageItem(...) 设置储物箱格子道具
5 GetStorageItem(...) 获取储物箱格子道具
6 AddStorageItem(...) 储物箱添加道具
7 RemoveStorageItemByID(...) 储物箱按类型移除道具
8 RemoveStorageItemByIndex(...) 储物箱按格子移除道具
9 AddItemToContainer(...) 储物箱添加道具(大箱)
10 RemoveContainerItemByID(...) 移除储物箱中一定数量道具
11 ClearContainer(...) 清空容器
12 AddWorldStorageItems(...) 批量添加储物箱道具
13 GetStorageItemInstanceId(...) 获取储物箱道具实例ID
14 GetAllStorageItemInstanceIds(...) 获取储物箱全部道具实例ID
15 SwapContainerItem(...) 交换容器与背包道具
16 GetGridAttr(...) 获取格子属性
CheckStorage
参数及类型:
x:number 坐标x
y:number 坐标y
z:number 坐标z
worldId:number / nil 星球ID(默认当前主机所在星球)
返回值及类型: ret:boolean,resIdOrBlockId:number|nil:是否为储物箱及方块标识(否仅返回false)
该方法的其他说明: 检测指定坐标是否为储物箱或 MOD 容器;是则返回方块资源ID或配置ID
具体使用案例如下:
local isStorage = WorldContainer:CheckStorage(x, y, z, WorldId)
ClearStorageBox
参数及类型:
x:number 坐标x
y:number 坐标y
z:number 坐标z
worldId:number / nil 星球ID(默认当前主机所在星球)
返回值及类型:
ret:boolean 是否清空成功
该方法的其他说明: 清空指定坐标储物箱内所有物品
具体使用案例如下:
local success = WorldContainer:ClearStorageBox(x, y, z, WorldId)
CheckStorageEmptyGrid
参数及类型:
x:number 坐标x
y:number 坐标y
z:number 坐标z
itemid:number / string 道具类型ID或资源ID
worldId:number / nil 星球ID(默认当前主机所在星球)
返回值及类型:
ret:boolean 是否有可用格子
该方法的其他说明: 检测储物箱是否还有空位或可叠加存放指定道具
具体使用案例如下:
local isEmpty = WorldContainer:CheckStorageEmptyGrid(x, y, z, 100, WorldId)
SetStorageItem
参数及类型:
x:number 坐标x
y:number 坐标y
z:number 坐标z
offset:number 格子索引(从1开始)
itemid:number / string 道具类型ID或资源ID
num:number 数量
worldId:number / nil 星球ID(默认当前主机所在星球)
返回值及类型:
ret:boolean 是否设置成功
该方法的其他说明: 按格子索引直接设置储物箱内道具与数量
具体使用案例如下:
local success = WorldContainer:SetStorageItem(x, y, z, 3, 12500, 10, WorldId)
GetStorageItem
参数及类型:
x:number 坐标x
y:number 坐标y
z:number 坐标z
offset:number 格子索引(从1开始)
worldId:number / nil 星球ID(默认当前主机所在星球)
返回值及类型: ret:itemid:number|string|nil,num:number|nil:道具ID与数量(失败返回nil)
该方法的其他说明: 读取储物箱指定格子的道具ID与数量
具体使用案例如下:
local itemId, num = WorldContainer:GetStorageItem(x, y, z, 1, WorldId)
AddStorageItem
参数及类型:
x:number 坐标x
y:number 坐标y
z:number 坐标z
itemid:number / string 道具类型ID或资源ID
num:number 数量
worldId:number / nil 星球ID(默认当前主机所在星球)
返回值及类型:
ret:number / boolean / nil 实际添加数量(锁定商品返回false,失败返回nil)
该方法的其他说明: 向储物箱按堆叠规则添加道具,返回实际加入的数量
具体使用案例如下:
local addNum = WorldContainer:AddStorageItem(x, y, z, 12507, 10, WorldId)
RemoveStorageItemByID
参数及类型:
x:number 坐标x
y:number 坐标y
z:number 坐标z
itemid:number / string 道具类型ID或资源ID
num:number / nil 移除数量
worldId:number / nil 星球ID(默认当前主机所在星球)
返回值及类型:
ret:boolean 是否执行成功
该方法的其他说明: 从储物箱中按道具类型移除指定数量(num 缺省或极大时表示尽量清空该类型)
具体使用案例如下:
local isSuccess = WorldContainer:RemoveStorageItemByID(x, y, z, 12507, 3, WorldId)
RemoveStorageItemByIndex
参数及类型:
x:number 坐标x
y:number 坐标y
z:number 坐标z
offset:number 格子索引(从1开始)
num:number / nil 移除数量
worldId:number / nil 星球ID(默认当前主机所在星球)
返回值及类型:
ret:boolean 是否移除成功
该方法的其他说明: 从储物箱指定格子移除一定数量道具
具体使用案例如下:
local isSuccess = WorldContainer:RemoveStorageItemByIndex(x, y, z, 1, 5, WorldId)
AddItemToContainer
参数及类型:
x:number 坐标x
y:number 坐标y
z:number 坐标z
itemid:number / string 道具类型ID或资源ID
num:number 数量
worldId:number / nil 星球ID(默认当前主机所在星球)
返回值及类型:
ret:number / boolean 实际添加数量(失败返回false)
该方法的其他说明: 向储物箱添加道具;成功返回本次实际加入数量
具体使用案例如下:
local addNum = WorldContainer:AddItemToContainer(x, y, z, 12500, 10, WorldId)
RemoveContainerItemByID
参数及类型:
x:number 坐标x
y:number 坐标y
z:number 坐标z
itemid:number / string 道具类型ID或资源ID
num:number 数量
worldId:number / nil 星球ID(默认当前主机所在星球)
返回值及类型:
ret:boolean 是否移除成功
该方法的其他说明: 移除储物箱中一定数量道具
具体使用案例如下:
local isSuccess = WorldContainer:RemoveContainerItemByID(x, y, z, 12500, 5, WorldId)
ClearContainer
参数及类型:
x:number 坐标x
y:number 坐标y
z:number 坐标z
worldId:number / nil 星球ID(默认当前主机所在星球)
返回值及类型:
ret:boolean 是否清空成功
该方法的其他说明: 清空指定坐标上通用容器内所有物品
具体使用案例如下:
local success = WorldContainer:ClearContainer(x, y, z, WorldId)
AddWorldStorageItems
参数及类型:
x:number 坐标x
y:number 坐标y
z:number 坐标z
itemids:table 道具列表({itemId,itemNum}...)
worldId:number / nil 星球ID(默认当前主机所在星球)
返回值及类型:
ret:number 累计成功添加数量
该方法的其他说明: 批量向储物箱添加多组道具(每项含 itemId、itemNum),返回累计成功添加的总数量
具体使用案例如下:
local addNum = WorldContainer:AddWorldStorageItems(x, y, z, {{itemId = 12541, itemNum = 10}}, WorldId)
GetStorageItemInstanceId
参数及类型:
x:number 坐标x
y:number 坐标y
z:number 坐标z
offset:number 格子索引(从1开始)
worldId:number / nil 星球ID(默认当前主机所在星球)
返回值及类型:
ret:string / nil 实例ID(无则返回nil)
该方法的其他说明: 读取储物箱某格道具的实例ID字符串(仅当格子含实例数据时有效)
具体使用案例如下:
local ret = WorldContainer:GetStorageItemInstanceId(x, y, z, offset, worldId)
GetAllStorageItemInstanceIds
参数及类型:
x:number 坐标x
y:number 坐标y
z:number 坐标z
worldId:number / nil 星球ID(默认当前主机所在星球)
返回值及类型:
ret:table / nil 实例ID字符串数组(失败返回nil)
该方法的其他说明: 枚举储物箱内所有带实例ID的格子,收集实例ID列表(仅含通过接口创建的实例道具)
具体使用案例如下:
local ret = WorldContainer:GetAllStorageItemInstanceIds(x, y, z, worldId)
SwapContainerItem
参数及类型:
x:number 坐标x
y:number 坐标y
z:number 坐标z
grid:number 容器格子索引(从1开始,熔炉为约定槽位)
uin:number 玩家objid
grid2:number 背包格子索引(从1开始)
返回值及类型:
ret:boolean / nil 是否成功(坐标无方块等可能返回nil)
该方法的其他说明: 在玩家背包与指定坐标的储物箱或熔炉之间移动或交换道具
具体使用案例如下:
local ret = WorldContainer:SwapContainerItem(x, y, z, 1,uin, BackpackBeginIndex.Shortcut)
GetGridAttr
参数及类型:
x:number 坐标x
y:number 坐标y
z:number 坐标z
gridid:number:格子ID,attr:number:属性枚举(GridAttr)
worldId:number 星球id(默认当前主机所在星球)
返回值及类型:
ret:number 属性值
该方法的其他说明: 获取格子属性
具体使用案例如下:
local num = WorldContainer:GetGridAttr(x, y, z, 1, GridAttr.ItemNum)
资源模块管理接口 Mod
具体函数名及描述如下:
序号 函数名 函数描述
1 GetCfgIdByAssetId(...) 通过资源id获取defid
GetCfgIdByAssetId
参数及类型:
assetId:string 资源id
返回值及类型:
cfgId:number defid
该方法的主要作用: 通过资源id获取defid
具体使用案例如下:
local cfgId = Mod:GetCfgIdByAssetId(assetId)
计时器模块管理接口 Timer
注意:【计时器组】变量使用说明参考:
【计时器组】变量如何使用
具体函数名及描述如下:
序号 函数名 函数描述
1 IsExist(...) 计时器是否存在
2 CreateTimer(...) 创建计时器
3 DeleteTimer(...) 删除计时器
4 StartBackwardTimer(...) 开始倒计时
5 StartForwardTimer(...) 开始正向计时
6 PauseTimer(...) 暂停计时器
7 ResumeTimer(...) 恢复计时器
8 StopTimer(...) 停止计时器
9 ChangeTimerTime(...) 设置计时器时间
10 GetTimerTime(...) 获取计时器时间
11 ShowTimerWnd(...) 显示计时器窗口
12 HideTimerWnd(...) 隐藏计时器窗口
IsExist
参数及类型:
id:number 计时器ID
返回值及类型:
ret:boolean 是否存在
该方法的其他说明: 判断计时器ID是否存在
具体使用案例如下:
local isExist = Timer:IsExist(timerId)
CreateTimer
参数及类型:
name:string 计时器名称
返回值及类型:
timerid:number / nil 计时器ID
该方法的其他说明: 创建一个计时器并返回ID
具体使用案例如下:
local timerId = Timer:CreateTimer("计时器")
DeleteTimer
参数及类型:
id:number 计时器ID
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 删除一个计时器
具体使用案例如下:
local success = Timer:DeleteTimer(timerId)
StartBackwardTimer
参数及类型:
id:number 计时器ID
interval:number 起始秒数
repeated:bool / nil 是否循环
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 启动倒计时(从 interval 开始往下走)
具体使用案例如下:
local success = Timer:StartBackwardTimer(timerId, 20, false)
StartForwardTimer
参数及类型:
id:number 计时器ID
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 启动正向计时(从0往上走)
具体使用案例如下:
local success = Timer:StartForwardTimer(timerId)
PauseTimer
参数及类型:
id:number 计时器ID
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 暂停一个正在运行的计时器
具体使用案例如下:
local success = Timer:PauseTimer(timerId)
ResumeTimer
参数及类型:
id:number 计时器ID
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 恢复一个已暂停的计时器
具体使用案例如下:
local success = Timer:ResumeTimer(timerId)
StopTimer
参数及类型:
id:number 计时器ID
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 停止一个正在运行的计时器
具体使用案例如下:
local success = Timer:StopTimer(timerId)
ChangeTimerTime
参数及类型:
id:number 计时器ID
curtime:number 当前秒数
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 把计时器当前时间改成指定秒数
具体使用案例如下:
local success = Timer:ChangeTimerTime(timerId, 60)
GetTimerTime
参数及类型:
id:number 计时器ID
返回值及类型:
runtime:number / nil 当前秒数
该方法的其他说明: 获取计时器当前时间(正向/倒计时都适用)
具体使用案例如下:
local time = Timer:GetTimerTime(timerId)
ShowTimerWnd
参数及类型:
playerids:number / table 玩家Uin或Uin数组
timerid:number 计时器ID
title:string / nil 标题
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 给指定玩家显示计时器窗口(已显示则替换)
具体使用案例如下:
local success = Timer:ShowTimerWnd(Player:GetHostUin(), timerId, "计时器标题")
HideTimerWnd
参数及类型:
playerids:number / table 玩家Uin或Uin数组
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 隐藏指定玩家的计时器窗口
具体使用案例如下:
local success = Timer:HideTimerWnd(Player:GetHostUin())
状态模块管理接口 Buff
具体函数名及描述如下:
序号 函数名 函数描述
1 AddBuff(...) 附加效果
2 RemoveBuff(...) 移除效果
3 ClearAllBuff(...) 清除所有效果
4 ClearAllBadBuff(...) 清除所有负面效果
5 ClearAllGoodBuff(...) 清除所有有益效果
6 HasBuff(...) 判断是否有效果
7 GetBuffList(...) 获取效果列表
8 GetBuffNumByBuffid(...) 获取效果数量
9 GetBuffLeftTime(...) 获取效果剩余时间
10 GetBuffDefName(...) 获取效果名称
11 GetBuffDefDesc(...) 获取效果描述
12 ReplaceBuff(...) 替换效果
AddBuff
参数及类型:
objid:number 对象ID
buffid:number / string 效果ID
customticks:number 效果持续时间(-1表示默认配置,0表示无限)
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 给对象附加指定效果
具体使用案例如下:
Buff:AddBuff(playerId,4001, 20)
RemoveBuff
参数及类型:
objid:number 对象ID
buffid:number / string 效果ID
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 给对象移除指定效果
具体使用案例如下:
local isRemoveSuccess = Buff:RemoveBuff(playerId, "r5_7483041204932402166_23045")
ClearAllBuff
参数及类型:
objid:number 对象ID
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 给对象清除所有效果
具体使用案例如下:
local isSuccess = Buff:ClearAllBuff(playerId)
ClearAllBadBuff
参数及类型:
objid:number 对象ID
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 为对象清除所有负面效果
具体使用案例如下:
local isSuccess = Buff:ClearAllBadBuff(playerId)
ClearAllGoodBuff
参数及类型:
objid:number 对象ID
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 为对象清除所有有益效果
具体使用案例如下:
local isSuccess = Buff:ClearAllGoodBuff(playerId)
HasBuff
参数及类型:
objid:number 对象ID
buffid:number / string 效果ID
返回值及类型:
bool:boolean 是否有该效果
该方法的其他说明: 判断对象身上是否有指定效果
具体使用案例如下:
local isHasBuff = Buff:HasBuff(playerId, 4001)
GetBuffList
参数及类型:
objid:number 对象ID
返回值及类型:
num:number 效果数量
ids:table 效果ID数组
该方法的其他说明: 获取对象身上所有效果的列表
具体使用案例如下:
local num,arr = Buff:GetBuffList(playerId)
print("num = ",num)
print("arr = ",arr)
GetBuffNumByBuffid
参数及类型:
objid:number 对象ID
buffid:number / string 效果ID
返回值及类型:
num:number 效果数量
该方法的其他说明: 获取对象身上指定效果的数量
具体使用案例如下:
local num = Buff:GetBuffNumByBuffid(playerId,4001)
print("num = ",num)
GetBuffLeftTime
参数及类型:
objid:number 对象ID
buffid:number / string 效果ID
返回值及类型:
num:number 剩余时间(秒,0表示永久)
该方法的其他说明: 获取对象身上指定效果的剩余时间
具体使用案例如下:
local time = Buff:GetBuffLeftTime(playerId, 4001)
GetBuffDefName
参数及类型:
buffid:number / string 效果ID
返回值及类型:
name:string 效果名称
该方法的其他说明: 获取状态效果的名称
具体使用案例如下:
local name = Buff:GetBuffDefName(4001)
GetBuffDefDesc
参数及类型:
buffid:number / string 效果ID
返回值及类型:
value:string 状态效果描述
该方法的其他说明: 获取状态效果的描述
具体使用案例如下:
local desc = Buff:GetBuffDefDesc(4001)
ReplaceBuff
参数及类型:
objid:number 对象ID
buffsrc:number / string 源状态ID
buffdst:number / string 目标状态ID
customticks:number 持续时间(默认-1)
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 将对象身上的源状态替换为目标状态(保持数量一致)
具体使用案例如下:
local isSuccess = Buff:ReplaceBuff(playerId, 4001, "r5_7483041204932402166_23045", 10)
消息模块管理接口 Chat
具体函数名及描述如下:
序号 函数名 函数描述
1 SendSystemMsg(...) 发送系统消息
SendSystemMsg
参数及类型:
content:string 消息
playerID:number 玩家ID 0表示发给所有玩家
返回值及类型:
ret:boolean 成功(true)
该方法的主要作用: 发送系统消息
具体使用案例如下:
Chat:SendSystemMsg("系统消息")
普通变量数据管理接口 Data
具体函数名及描述如下:
序号 函数名 函数描述
1 SetValue(...) 设置变量值
2 GetValue(...) 获取变量值
3 IncreasesValue(...) 数值变量增加值
SetValue
参数及类型:
varId:string 变量ID
playerId:number 玩家ID(全局变量传nil)
value:any设置的值
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置指定变量的值(支持全局变量或玩家变量)
具体使用案例如下:
local result = Data:SetValue(varId, nil, 100)
if result then
print("设置数据成功")
else
print("设置数据失败")
end
GetValue
参数及类型:
varId:string 变量ID
playerId:number 玩家ID(全局变量传nil)
返回值及类型:
value:any变量值;失败或无值返回nil
该方法的其他说明: 获取指定变量的值(支持全局变量或玩家变量)
具体使用案例如下:
local value = Data:GetValue(varId)
local valuePlayer = Data:GetValue(playerVarId, Player:GetHostUin())
IncreasesValue
参数及类型:
varId:string 变量ID
playerId:number 玩家ID(全局变量传nil)
value:number 增加的量
返回值及类型:
num:number 增加后的值;参数错误返回nil
该方法的其他说明: 对数值变量增加指定增量
具体使用案例如下:
local isSuccess = Data:IncreasesValue(varId, nil, 1)
数组变量数据管理接口 Array
具体函数名及描述如下:
序号 函数名 函数描述
1 SetValue(...) 设置数组值
2 InsertValue(...) 插入数组值
3 ReplaceValue(...) 替换数组值
4 GetValue(...) 获取数组值
5 GetIndexByValue(...) 获取值对应的索引位置
6 RemoveByValue(...) 删除数组值
7 Remove(...) 删除数组值
8 Clear(...) 清空数组
9 Sort(...) 数组排序
10 GetSize(...) 获取数组长度
11 GetAllValue(...) 获取数组所有数据
12 GetMax(...) 获取数组最大值
13 GetMin(...) 获取数组最小值
14 RandomValue(...) 获取数组随机值
15 HasValue(...) 数组是否有值
16 HasValueByNo(...) 数组索引是否有值
17 InsertValues(...) 数组合并插入
18 RemoveByValues(...) 删除数组中相同值
19 GetCountByValue(...) 获取值出现次数
20 IncreasesValue(...) 增加数组值
SetValue
参数及类型:
varId:string 数组ID
playerId:number 玩家uin(全局数组传nil)
value:any具体值
index:number 索引
返回值及类型:
bool:boolean 是否设置成功
该方法的其他说明: 设置数组指定索引位置的值,索引值不允许大于数组当前大小
具体使用案例如下:
-- 将数值组的索引1位置的值设置为44
Data.Array:SetValue(arrayId, nil, 44, 1)
InsertValue
参数及类型:
varId:string 数组ID
playerId:number 玩家uin(全局数组传nil)
value:any具体值
index:number 索引(可选,为空则添加到末尾)
返回值及类型:
bool:boolean 是否插入成功
该方法的其他说明: 在数组指定索引位置插入数据,如果索引为空则添加到数组末尾
具体使用案例如下:
-- 末尾插入数字5
Data.Array:InsertValue(arrayId, nil, 5)
-- 在索引1位置插入数字4
Data.Array:InsertValue(arrayId, nil, 4, 1)
ReplaceValue
参数及类型:
varId:string 数组ID
playerId:number 玩家uin(全局数组传nil)
value:any新值
oldValue:any旧值
返回值及类型:
bool:boolean 是否替换成功
该方法的其他说明: 在数组中查找并替换指定旧值为新值
具体使用案例如下:
-- 将数值组的全部5替换为55
Data.Array:ReplaceValue(arrayId, nil, 55, 5)
GetValue
参数及类型:
varId:string 数组ID
playerId:number 玩家uin(全局数组传nil)
index:number 索引
返回值及类型:
value:any数组值(失败返回nil)
该方法的其他说明: 获取数组指定索引位置的值
具体使用案例如下:
local value = Data.Array:GetValue(arrayId, nil, 1)
GetIndexByValue
参数及类型:
varId:string 数组ID
playerId:number 玩家uin(全局数组传nil)
value:any具体值
返回值及类型:
num:number 索引位置(失败返回nil)
该方法的其他说明: 在数组中查找指定值的索引位置,如果有多个则返回第一个
具体使用案例如下:
local indexByValue = Data.Array:GetIndexByValue(arrayId, nil, 5)
RemoveByValue
参数及类型:
varId:string 数组ID
playerId:number 玩家uin(全局数组传nil)
value:any具体值
返回值及类型:
bool:boolean 是否删除成功
该方法的其他说明: 删除数组中所有匹配指定值的元素
具体使用案例如下:
Data.Array:RemoveByValue(arrayId, nil, 55)
Remove
参数及类型:
varId:string 数组ID
playerId:number 玩家uin(全局数组传nil)
index:number 索引
返回值及类型:
bool:boolean 是否删除成功
该方法的其他说明: 删除数组指定索引位置的值
具体使用案例如下:
local isSuccess = Data.Array:Remove(arrayId, nil, 1)
Clear
参数及类型:
varId:string 数组ID
playerId:number 玩家uin(全局数组传nil)
返回值及类型:
bool:boolean 是否清空成功
该方法的其他说明: 清空数组中的所有数据
具体使用案例如下:
Data.Array:Clear(arrayId)
Sort
参数及类型:
varId:string 数组ID
playerId:number 玩家uin(全局数组传nil)
isUp:number 排序方式(SortType)SortType
返回值及类型:
bool:boolean 是否排序成功
该方法的其他说明: 对数组进行排序,支持升序和降序
具体使用案例如下:
-- 将数值组arrayId按升序排序
local isSuccess = Data.Array:Sort(arrayId, nil, SortType.Up)
GetSize
参数及类型:
varId:string 数组ID
playerId:number 玩家uin(全局数组传nil)
返回值及类型:
num:number 数组元素数量(失败返回0)
该方法的其他说明: 获取数组的元素数量
具体使用案例如下:
local num = Data.Array:GetSize(varId, playerId)
GetAllValue
参数及类型:
varId:string 数组ID
playerId:number 玩家uin(全局数组传nil)
返回值及类型:
values:table 数组所有值(失败返回空表{})
该方法的其他说明: 获取数组中的所有元素,返回完整的数组数据
具体使用案例如下:
local allValues = Data.Array:GetAllValue(arrayId)
local allValues2 = Data.Array:GetAllValue(arrayPlayerId, Player:GetHostUin())
GetMax
参数及类型:
varId:string 数组ID
playerId:number 玩家uin(全局数组传nil)
返回值及类型:
num:number 最大值(失败返回nil)
该方法的其他说明: 获取数组中的最大值,仅适用于数值类型数组
具体使用案例如下:
local max = Data.Array:GetMax(arrayId)
GetMin
参数及类型:
varId:string 数组ID
playerId:number 玩家uin(全局数组传nil)
返回值及类型:
num:number 最小值(失败返回nil)
该方法的其他说明: 获取数组中的最小值,仅适用于数值类型数组,其它类型的数组返回nil
具体使用案例如下:
local min = Data.Array:GetMin(arrayId)
RandomValue
参数及类型:
varId:string 数组ID
playerId:number 玩家uin(全局数组传nil)
返回值及类型:
value:any随机元素值(失败返回nil)
该方法的其他说明: 从数组中随机获取一个数值
具体使用案例如下:
local randomValue = Data.Array:RandomValue(arrayId)
HasValue
参数及类型:
varId:string 数组ID
playerId:number 玩家uin(全局数组传nil)
value:any具体值
返回值及类型:
bool:boolean 是否包含该值
该方法的其他说明: 检测数组中是否包含指定值
具体使用案例如下:
local hasValue = Data.Array:HasValue(arrayId, nil, 5)
HasValueByNo
参数及类型:
varId:string 数组ID
playerId:number 玩家uin(全局数组传nil)
ix:number 索引
返回值及类型:
bool:boolean 该索引位置是否有值
该方法的其他说明: 检测数组指定索引位置是否有值
具体使用案例如下:
local hasValueByNo = Data.Array:HasValueByNo(arrayId, nil, 1)
InsertValues
参数及类型:
varId1:string 目标数组ID
playerId1:number 目标数组玩家uin(全局数组传nil)
index:number 插入索引(可选,为空则添加到末尾)
varId2:string 源数组ID
playerId2:number 源数组玩家uin(全局数组传nil)
返回值及类型:
bool:boolean 是否插入成功
该方法的其他说明: 将源数组的所有元素插入到目标数组的指定索引位置,如果索引为空则添加到末尾
具体使用案例如下:
local size = Data.Array:GetSize(arrayId)
RemoveByValues
参数及类型:
varId1:string 目标数组ID
playerId1:number 目标数组玩家uin(全局数组传nil)
varId2:string 源数组ID
playerId2:number 源数组玩家uin(全局数组传nil)
返回值及类型:
bool:boolean 是否删除成功
该方法的其他说明: 根据目标数组的值删除源数组中出现的相同值
具体使用案例如下:
-- 将玩家私有变量组arrayPlayerId的全部值从数值组arrayId中删除
Data.Array:RemoveByValues(arrayId, nil, arrayPlayerId, Player:GetHostUin())
GetCountByValue
参数及类型:
varId:string 数组ID
playerId:number 玩家uin(全局数组传nil)
value:any具体值
返回值及类型:
num:number 值出现的次数(失败返回0)
该方法的其他说明: 统计数组中指定值出现的次数
具体使用案例如下:
local countByValue = Data.Array:GetCountByValue(arrayId, nil, 5)
IncreasesValue
参数及类型:
varId:string 数组ID
playerId:number 玩家uin(全局数组传nil)
value:number 增加值
index:number 索引
返回值及类型:
bool:boolean 是否增加成功
该方法的其他说明: 将数组指定索引位置的数值增加指定值,仅适用于数值类型数组,其它类型的数组返回false
具体使用案例如下:
-- 将数值组的索引1位置的值增加10
local isSuccess = Data.Array:IncreasesValue(arrayId, nil, 10, 1)
二维表变量数据管理接口 Table
具体函数名及描述如下:
序号 函数名 函数描述
1 UpdateAllValue(...) 更新整张表
2 Clear(...) 清空表格
3 InsertValue(...) 在末尾插入一行数据
4 InsertValueByRow(...) 在指定行插入一行数据
5 GetValue(...) 获取表格数据
6 GetAllValue(...) 获取整张表
7 SetValue(...) 设置单元格或整行数据
8 RemoveRow(...) 删除行
9 GetValuesByCol(...) 获取指定列的所有行数据
10 GetRows(...) 获取行数
11 GetCols(...) 获取列数
12 GetColIndex(...) 获取列索引
13 GetRowIndex(...) 查找行号
14 GetRowIndexs(...) 查找全部行号
15 GetTableColKeys(...) 获取列名列表
UpdateAllValue
参数及类型:
varId:string 表ID
playerId:number / nil 玩家Uin(全局表传nil)
value:table 新表数据
返回值及类型:
ret:boolean / nil 是否成功
该方法的其他说明: 更新整张表
具体使用案例如下:
local ret = Data.Table:UpdateAllValue(varId, playerId, value)
Clear
参数及类型:
varId:string 表ID
playerId:number / nil 玩家Uin(全局表传nil)
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 清空表格
具体使用案例如下:
local isSuccess = Data.Table:Clear(varId)
if isSuccess then
print("清除表格成功")
end
local isSuccessPlayer = Data.Table:Clear(playerVarId, Player:GetHostUin())
if isSuccessPlayer then
print("清除玩家表格成功")
end
InsertValue
参数及类型:
varId:string 表ID
playerId:number / nil 玩家Uin(全局表传nil)
...:any列值依次传入(中间不可传 nil)
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 在表末尾追加一行,各列按参数从左到右依次填入不可传nil
具体使用案例如下:
-- 传参规则(变量id , 玩家uin(全局传nil), 第一列填充数据, 第二列填充数据, 第三列填充数据,...)
local isSuccess = Data.Table:InsertValue(varId, nil, 2, "aa", false)
if isSuccess then
print("插入表格值成功")
end
-- 传参规则(变量id , 玩家uin(全局传nil), 第一列填充数据, 第二列填充数据, 第三列填充数据,...)
local isSuccessPlayer = Data.Table:InsertValue(playerVarId, Player:GetHostUin(), 2, "aaa", false)
if isSuccessPlayer then
print("插入玩家表格值成功")
end
InsertValueByRow
参数及类型:
varId:string 表ID
playerId:number / nil 玩家Uin(全局表传nil)
value:table 列值
row:number / nil 插入位置(nil 表示插到末尾)
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 在指定行号插入一行;列可用数字下标或列名做 key,如{[1] = xx,...} or {[key] = xx,...}。(列值不能传空表,至少要有一列数据)
具体使用案例如下:
local data = {
[1] = 2, -- 第一列填充的数据
[2] = "sss3", -- 第二列填充的数据
[3] = false, -- 第三列填充的数据
-- [4] = {x = 1,y = 7,z = 1}, -- 第四列填充的数据
-- 。。。。。 根据实际变量的列类型填充
}
local isSuccess = Data.Table:InsertValueByRow(varId, nil, data, 1) -- 在第一行插入一行数据
if isSuccess then
print("按行插入表格值成功")
end
local data2 = {
[1] = 2, -- 第一列填充的数据
[2] = "sssa", -- 第二列填充的数据
[3] = false, -- 第三列填充的数据
-- [4] = {x = 1,y = 7,z = 1}, -- 第四列填充的数据
-- 。。。。。 根据实际变量的列类型填充
}
local isSuccessPlayer = Data.Table:InsertValueByRow(playerVarId, Player:GetHostUin(), data2) -- 在最后一行插入一行数据
if isSuccessPlayer then
print("按行插入玩家表格值成功")
end
GetValue
参数及类型:
varId:string 表ID
playerId:number / nil 玩家Uin(全局表传nil)
row:number 行号
col:number / string / nil 列号或列名(可省略)
返回值及类型:
value:any / nil 单元格值或整行表
该方法的其他说明: 获取表格数据,不写 col 时返回整行(表)。
具体使用案例如下:
local value = Data.Table:GetValue(varId, nil, 2, 2)
if value then
print("获取表格值", value)
end
local playerValue = Data.Table:GetValue(playerVarId, Player:GetHostUin(), 2, 1)
if playerValue then
print("获取玩家表格值", playerValue)
end
GetAllValue
参数及类型:
varId:string 表ID
playerId:number / nil 玩家Uin(全局表传nil)
返回值及类型:
value:table / nil 整张表数据
该方法的其他说明: 获取整张表数据
具体使用案例如下:
-- 获取后的数据格式是
-- {
-- {10, "RRR", 0},-- 第一行
-- {9, "sss", 0}, -- 第二行
-- {0, "fff", 0}, -- 第三行
-- }
local allValues = Data.Table:GetAllValue(varId)
if allValues then
print("获取表格所有值", allValues)
end
local playerAllValues = Data.Table:GetAllValue(playerVarId, Player:GetHostUin())
if playerAllValues then
print("获取玩家表格所有值", playerAllValues)
end
SetValue
参数及类型:
varId:string 表ID
playerId:number / nil 玩家Uin(全局表传nil)
row:number / table 行号或行号数组
col:number / string / nil 列号或列名(可省略)
value:any新值或整行表
返回值及类型:
ret:boolean / nil 是否成功
该方法的其他说明: 设置单元格或整行数据,不写 col 时可以把 value 当成整行一次性写入
具体使用案例如下:
local ret = Data.Table:SetValue(varId, playerId, row, col, value)
RemoveRow
参数及类型:
varId:string 表ID
playerId:number / nil 玩家Uin(全局表传nil)
row:number / table 行号或行号列表
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 按行号删除一行或多行数据
具体使用案例如下:
local isSuccess = Data.Table:RemoveRow(varId, nil, 1) -- 移除第一行
if isSuccess then
print("移除表格行成功")
end
local isSuccessPlayer = Data.Table:RemoveRow(playerVarId, Player:GetHostUin(), {2, 4}) -- 移除第二行和第四行
if isSuccessPlayer then
print("移除玩家表格行成功")
end
GetValuesByCol
参数及类型:
varId:string 表ID
playerId:number / nil 玩家Uin(全局表传nil)
col:number / string 列号或列名
返回值及类型:
ret:table / nil 该列所有行数据
该方法的其他说明: 获取指定列所有行的数据
具体使用案例如下:
local values = Data.Table:GetValuesByCol(varId, nil, 1)
if values then
print("获取表格列值", values)
end
local playerValues = Data.Table:GetValuesByCol(playerVarId, Player:GetHostUin(), 2)
if playerValues then
print("获取玩家表格列值", playerValues)
end
GetRows
参数及类型:
varId:string 表ID
playerId:number / nil 玩家Uin(全局表传nil)
返回值及类型:
ret:number / nil 行数
该方法的其他说明: 获取当前表有多少行
具体使用案例如下:
local rows = Data.Table:GetRows(varId)
if rows then
print("获取表格行数",rows)
end
local size = Data.Table:GetRows(playerVarId, Player:GetHostUin())
if size then
print("获取玩家表格行数",size)
end
GetCols
参数及类型:
varId:string 表ID
playerId:number / nil 玩家Uin(全局表传nil)
返回值及类型:
ret:number / nil 列数
该方法的其他说明: 获取当前表有多少列
具体使用案例如下:
local cols = Data.Table:GetCols(varId)
if cols then
print("获取表格列数",cols)
end
local num = Data.Table:GetCols(playerVarId, Player:GetHostUin())
if num then
print("获取玩家表格列数",num)
end
GetColIndex
参数及类型:
varId:string 表ID
playerId:number / nil 玩家Uin(全局表传nil)
key:any列名或列 key
返回值及类型:
ret:number / nil 列索引
该方法的其他说明: 根据列名或 key 查列号是第几列
具体使用案例如下:
local colIndex = Data.Table:GetColIndex(varId, nil, "名称")
if colIndex then
print("获取表格列索引", colIndex)
end
local playerColIndex = Data.Table:GetColIndex(playerVarId, Player:GetHostUin(), "分数")
if playerColIndex then
print("获取玩家表格列索引", playerColIndex)
end
GetRowIndex
参数及类型:
varId:string 表ID
playerId:number / nil 玩家Uin(全局表传nil)
col:number / string 列号或列名
value:any要匹配的值
cmp:function / nil 比较函数(可为nil,function(a,value) return a == value end),默认判断值相等ction
返回值及类型:
ret:number / nil 行号
该方法的其他说明: 在某一列里找第一个和 value 匹配的行号(默认同 ==,可自写比较函数)
具体使用案例如下:
local rowIndex = Data.Table:GetRowIndex(varId, nil, 2, "sss")
if rowIndex then
print("获取表格行索引", rowIndex)
end
local playerRowIndex = Data.Table:GetRowIndex(playerVarId, Player:GetHostUin(), 3, true)
if playerRowIndex then
print("获取玩家表格行索引", playerRowIndex)
end
GetRowIndexs
参数及类型:
varId:string 表ID
playerId:number / nil 玩家Uin(全局表传nil)
col:number / string 列号或列名
value:any要匹配的值
cmp:function / nil 比较函数(可为nil,function(a,value) return a == value end),默认判断值相等ction
返回值及类型:
ret:table / nil 行号列表
该方法的其他说明: 在某一列里找出所有和 value 匹配的行号
具体使用案例如下:
local rowIndexs = Data.Table:GetRowIndexs(varId, nil, 2, "sss")
if rowIndexs then
for key, value in pairs(rowIndexs) do
print("获取表格行索引", value )
end
end
local playerRowIndexs = Data.Table:GetRowIndexs(playerVarId, Player:GetHostUin(), 3, false)
if playerRowIndexs then
for key, value in pairs(playerRowIndexs) do
print("获取玩家表格行索引", value )
end
end
GetTableColKeys
参数及类型:
varId:string 表ID
返回值及类型:
ret:table / nil 列名列表,失败为 nil
该方法的其他说明: 获取整张表的列名列表
具体使用案例如下:
local colKeys = Data.Table:GetTableColKeys(varId)
一维表变量数据管理接口 Map
具体函数名及描述如下:
序号 函数名 函数描述
1 SetValueAndCallBack(...) 回调设置KV数据
2 SetValueAndBlock(...) 阻塞设置KV数据
3 RemoveValueAndCallBack(...) 回调删除KV数据
4 RemoveValueAndBlock(...) 阻塞删除KV数据
5 UpdateValueAndCallback(...) 回调更新KV数据
6 GetValueAndCallBack(...) 回调获取KV数据
7 GetValueAndBlock(...) 阻塞获取KV数据
8 GetIndexValueAndCallback(...) 回调获取排行榜指定名次
9 GetIndexValueAndBlock(...) 阻塞获取排行榜指定名次
10 GetNumValuesAndCallback(...) 回调获取排行榜前N条
11 GetRangeValuesAndCallback(...) 回调获取排行榜分数区间
12 SetRankValueAndBlock(...) 阻塞设置排行榜分数
13 ClearData(...) 清空表数据
14 IncreasesRankValueAndBlock(...) 阻塞增加排行榜分数
15 IncreasesRankValueAndCallback(...) 回调增加排行榜分数
16 GetRangeIndexsAndCallback(...) 回调获取排行榜名次区间
SetValueAndCallBack
参数及类型:
varId:string 变量表或排行榜ID
playerId:number 玩家Uin
key:string / number 键(数字会转字符串)
value:string / number / boolean 值
callback:function完成回调
返回值及类型:
ret:bool是否成功发起调用
该方法的其他说明: 异步设置KV并在完成后回调(键经校验;失败会走保护回调)
具体使用案例如下:
local code1 = nil
local function GlobalKVCallback(code,key,value)
Chat:SendChat(table.concat({"SetValueAndCallBack code = ",tostring(code), "key = ",tostring(key), "value = ",value or ""}, " "))
if value and type(value) == "string" then --自定义table需要自己序列化结构 反序列化需要自己处理
value = json.decode(value) or value
end
print("code", code , "key", key, "value", value)
if code == ErrorCode.OK then
print("设置成功")
end
code1 = code
end
--不支持自定义table需要自己序列化结构
local globalvalue = json.encode({score = 100, name = Actor:GetNickName(uin) or "noname" })
local result = Data.Map:SetValueAndCallBack(GlobalKV, nil, "GlobalKV_Key1", globalvalue, GlobalKVCallback)
print("result", result and "调用成功" or "调用失败")
local code2 = nil
local function GlobalRankCallback(code,key,value)
Chat:SendChat(table.concat({"SetValueAndCallBack code = ",tostring(code), "key = ",tostring(key), "value = ",tostring(value)}, " "))
print("code", code , "key", key, "value", value)
if code == ErrorCode.OK then
print("设置成功")
end
code2 = code
end
local result2 = Data.Map:SetValueAndCallBack(GlobalRank, nil, "GlobalRank_Key1", 100, GlobalRankCallback) and result
print("result", result2 and "调用成功" or "调用失败")
local code3 = nil
local function UserKVCallback(code,key,value)
Chat:SendChat(table.concat({"SetValueAndCallBack code = ",tostring(code), "key = ",tostring(key), "value = ",tostring(value)}, " "))
if value and type(value) == "string" then
value = json.decode(value) or value
end
print("code", code , "key", key, "value", value)
if code == ErrorCode.OK then
print("设置成功")
end
code3 = code
end
--不支持自定义table需要自己序列化结构 反序列化需要自己处理
local uservalue = json.encode({score = 100, name = Actor:GetNickName(uin) or "noname" })
local result3 = Data.Map:SetValueAndCallBack(UserKV, uin, "UserKV_Key1", uservalue, UserKVCallback) and result
print("result", result3 and "调用成功" or "调用失败")
self:ThreadWait(0.2)
SetValueAndBlock
参数及类型:
call_back:function内部结果回调
varId:string / userdata 变量表或临时Map
playerId:number 玩家Uin
key:string / number 键
value:string / number / boolean 值
返回值及类型:
ret:bool是否已投递处理
该方法的其他说明: 同步路径设置KV
具体使用案例如下:
--不支持自定义table需要自己序列化结构
local globalvalue = json.encode({score = 200, name = Actor:GetNickName(uin) })
local code1 , curkey1 , curvalue1 = Data.Map:SetValueAndBlock(GlobalKV, nil, "GlobalKV_Key2", globalvalue)
print("code ", code1, "key ", curkey1, "value ", curvalue1)
Chat:SendChat(table.concat({"SetValueAndBlock code = ",tostring(code1), "key = ",tostring(curkey1), "value = ",tostring(curvalue1)}, " "))
if code1 == ErrorCode.OK then
print("设置成功")
end
local code2 , curkey2 , curvalue2 = Data.Map:SetValueAndBlock(GlobalRank, nil, "GlobalRank_Key2", 200)
print("code ", code2, "key ", curkey2, "value ", curvalue2)
Chat:SendChat(table.concat({"SetValueAndBlock code = ",tostring(code2), "key = ",tostring(curkey2), "value = ", tostring(curvalue2)}, " "))
if code2 == ErrorCode.OK then
print("设置成功")
end
--不支持自定义table需要自己序列化结构
local uservalue = json.encode({score = 200, name = Actor:GetNickName(uin) })
local code3 , curkey3 , curvalue3 = Data.Map:SetValueAndBlock(UserKV, uin, "UserKV_Key2", uservalue)
print("code ", code3, "key ", curkey3, "value ", curvalue3)
Chat:SendChat(table.concat({"SetValueAndBlock code = ",tostring(code3), "key = ",tostring(curkey3), "value = ", tostring(curvalue3) }, " "))
if code3 == ErrorCode.OK then
print("设置成功")
end
RemoveValueAndCallBack
参数及类型:
varId:string / userdata 变量表或临时Map
playerId:number 玩家Uin
key:string / number 键
callback:function完成回调
返回值及类型:
ret:bool是否成功发起调用
该方法的其他说明: 异步删除指定键并在完成后回调
具体使用案例如下:
local code1 = nil
local function GlobalKVCallback(code,key)
Chat:SendChat(table.concat({"RemoveValueAndCallBack code = ",tostring(code), "key = ",tostring(key)}, " "))
print("code", code , "key", key)
if code == ErrorCode.OK then
print("设置成功")
end
code1 = code
end
local result = Data.Map:RemoveValueAndCallBack(GlobalKV, nil, "GlobalKV_Key1", GlobalKVCallback)
if result then
print("调用成功")
end
local code2 = nil
local function GlobalRankCallback(code,key)
Chat:SendChat(table.concat({"RemoveValueAndCallBack code = ",tostring(code), "key = ",tostring(key)}, " "))
print("code", code , "key", key)
if code == ErrorCode.OK then
print("设置成功")
end
code2 = code
end
local result2 = Data.Map:RemoveValueAndCallBack(GlobalRank, nil, "GlobalRank_Key1", GlobalRankCallback)
local code3 = nil
local function UserKVCallback(code,key)
Chat:SendChat(table.concat({"RemoveValueAndCallBack code = ",tostring(code), "key = ",tostring(key)}, " "))
print("code", code , "key", key)
if code == ErrorCode.OK then
print("设置成功")
end
code3 = code
end
local result3 = Data.Map:RemoveValueAndCallBack(UserKV, uin, "UserKV_Key1", UserKVCallback)
RemoveValueAndBlock
参数及类型:
call_back:function内部结果回调
varId:string / userdata 变量表或临时Map
playerId:number 玩家Uin
key:string / number 键
返回值及类型:
ret:bool是否已投递处理
该方法的其他说明: 同步路径删除指定键
具体使用案例如下:
local code1 , curkey1 = Data.Map:RemoveValueAndBlock(GlobalKV, nil, "GlobalKV_Key2")
Chat:SendChat(table.concat({"RemoveValueAndBlock code = ",tostring(code1), "key = ",tostring(curkey1)}, " "))
print("code ", code1, "key ", curkey1)
if code1 == 0 then
print("设置成功")
end
local code2 , curkey2 = Data.Map:RemoveValueAndBlock(GlobalRank, nil, "GlobalRank_Key2")
Chat:SendChat(table.concat({"RemoveValueAndBlock code = ",tostring(code2), "key = ",tostring(curkey2)}, " "))
print("code ", code2, "key ", curkey2)
if code2 == 0 then
print("设置成功")
end
local code3 , curkey3 = Data.Map:RemoveValueAndBlock(UserKV, uin, "UserKV_Key2")
Chat:SendChat(table.concat({"RemoveValueAndBlock code = ",tostring(code3), "key = ",tostring(curkey3)}, " "))
print("code ", code3, "key ", curkey3)
if code3 == 0 then
print("设置成功")
end
UpdateValueAndCallback
参数及类型:
varId:string 变量表ID
playerId:number 玩家Uin
key:string / number 键
callback:function完成回调
返回值及类型:
ret:bool是否成功发起调用
该方法的其他说明: 异步触发KV值更新逻辑(全局云KV可用;由底层在回调中带回新值)
具体使用案例如下:
local function GlobalKVCallback(code,key,value)
Chat:SendChat(table.concat({"UpdateValueAndCallback code = ",tostring(code), "key = ",tostring(key), "value = ",tostring(value)}, " "))
value = json.decode(value) or value
print("code", code , "key", key, "value", value)
if code == ErrorCode.KV_UPDATE_SET then -- 需要返回更新设置的最终值
value = value or {}
value.updatevalue = 999
return json.encode(value) -- 需要返回更新设置的最终值 并且序列化结构
elseif code == ErrorCode.KV_UPDATE_GET then
print("获取到的当前最新的值:", value)
elseif code == ErrorCode.OK then
print("更新完成")
else
print("更新失败")
end
end
local result = Data.Map:UpdateValueAndCallback(GlobalKV, nil, "GlobalKV_Key2", GlobalKVCallback)
if result then
print("调用成功")
else
print("调用失败")
end
GetValueAndCallBack
参数及类型:
varId:string / userdata 变量表或临时Map
playerId:number 玩家Uin
key:string / number 键
callback:function完成回调
返回值及类型:
ret:bool是否成功发起调用
该方法的其他说明: 异步读取某键的值并在回调中返回
具体使用案例如下:
local function GlobalKVCallback(code,key,value)
Chat:SendChat(table.concat({"GetValueAndCallBack code = ",tostring(code), "key = ",tostring(key), "value = ", tostring(value)}, " "))
value = json.decode(value) or value
print("code", code , "key", key, "value", value)
if code == ErrorCode.OK then
print("获取成功")
v1 = value
elseif code == ErrorCode.KV_OP_NO_VAL then
print("数据不存在")
else
print("获取失败")
end
end
local result = Data.Map:GetValueAndCallBack(GlobalKV, nil, "GlobalKV_Key1", GlobalKVCallback)
local function GlobalRankCallback(code,key,value,index,ascending,extendinfo)
Chat:SendChat(table.concat({"GetValueAndCallBack code = ",tostring(code), "key = ",tostring(key), "value = ",tostring(value), "index", index, "ascending", tostring(ascending), "extendinfo",tostring(extendinfo) or "" }, " "))
print("code", code , "key", key, "value", value, "index", index, "ascending", ascending, "extendinfo", extendinfo)
-- 获取排行榜数据 不一定有value之后的参数 注意判断
if code == ErrorCode.OK then
print("获取成功")
v2 = value
elseif code == ErrorCode.KV_OP_NO_VAL then
print("数据不存在")
else
print("获取失败")
end
end
local result2 = Data.Map:GetValueAndCallBack(GlobalRank, nil, "GlobalRank_Key1", GlobalRankCallback)
local function UserKVCallback(code,key,value)
Chat:SendChat(table.concat({"GetValueAndCallBack code = ",tostring(code), "key = ",tostring(key), "value = ",tostring(value)}, " "))
value = json.decode(value) or value
print("code", code , "key", key, "value", value)
if code == ErrorCode.OK then
print("获取成功")
v3 = value
elseif code == ErrorCode.KV_OP_NO_VAL then
print("数据不存在")
else
print("获取失败")
end
end
local result3 = Data.Map:GetValueAndCallBack(UserKV, uin, "UserKV_Key1", UserKVCallback)
GetValueAndBlock
参数及类型:
call_back:function内部结果回调
varId:string / userdata 变量表或临时Map
playerId:number 玩家Uin
key:string / number 键
返回值及类型:
ret:bool是否已投递处理
该方法的其他说明: 同步路径读取某键
具体使用案例如下:
local code1 , curkey1 , curvalue1 = Data.Map:GetValueAndBlock(GlobalKV, nil, "GlobalKV_Key2")
print("code", code1 , "key", curkey1, "value", curvalue1)
Chat:SendChat(table.concat({"GetValueAndBlock code = ",tostring(code1), "key = ",tostring(curkey1), "value = ",tostring(curvalue1)}, " "))
curvalue1 = json.decode(curvalue1) or curvalue1
if code1 == ErrorCode.OK then
print("获取成功")
elseif code1 == ErrorCode.KV_OP_NO_VAL then
print("数据不存在")
else
print("获取失败")
end
local code2 , curkey2 , curvalue2,index,ascending,extendinfo = Data.Map:GetValueAndBlock(GlobalRank, nil, "GlobalRank_Key2")
Chat:SendChat(table.concat({"GetValueAndBlock code = ",tostring(code2), "key = ",tostring(curkey2), "value = ",tostring(curvalue2), "index =", tostring(index), "ascending =", tostring(ascending), "extendinfo =", tostring(extendinfo) or "" }, " "))
curvalue2 = json.decode(curvalue2) or curvalue2
extendinfo = json.decode(extendinfo) or extendinfo
-- 获取排行榜数据 不一定有value之后的参数 注意判断
if code2 == ErrorCode.OK then
print("code", code2 , "key", curkey2, "value", curvalue2, "index", index, "ascending", ascending, "extendinfo", extendinfo)
elseif code2 == ErrorCode.KV_OP_NO_VAL then
print("数据不存在")
else
print("获取失败")
end
local code3 , curkey3 , curvalue3 = Data.Map:GetValueAndBlock(UserKV, uin, "UserKV_Key2")
Chat:SendChat(table.concat({"GetValueAndBlock code = ",tostring(code3), "key = ",tostring(curkey3), "value = ",tostring(curvalue3)}, " "))
curvalue3 = json.decode(curvalue3) or curvalue3
if code3 == ErrorCode.OK then
print("code", code3 , "key", curkey3, "value", curvalue3)
elseif code3 == ErrorCode.KV_OP_NO_VAL then
print("数据不存在")
else
print("获取失败")
end
GetIndexValueAndCallback
参数及类型:
varId:string / userdata 排行榜变量或临时Map
playerId:number 玩家Uin
index:number 名次索引
ascending:bool是否升序
callback:function完成回调
返回值及类型:
ret:bool是否成功发起调用
该方法的其他说明: 异步按排名索引取排行榜项(升序/降序)
具体使用案例如下:
local function GlobalRankCallback(code,key,value,index,ascending,extendinfo)
Chat:SendChat(table.concat({"GetIndexValueAndCallback code = ",tostring(code), "key = ",tostring(key), "value = ",tostring(value), "index =", tostring(index), "ascending =", tostring(ascending), "extendinfo =", json.encode(extendinfo) or tostring(extendinfo)}, " "))
print("code", code , "key", key, "value", value, "index", index, "ascending", ascending, "extendinfo", extendinfo)
if code == ErrorCode.OK then
print("获取成功")
else
--获取失败 参数向前移动
print("获取失败")
end
end
--获取降序排列的第一个数据
local result = Data.Map:GetIndexValueAndCallback(GlobalRank, nil, 1,false, GlobalRankCallback)
if result then
print("调用成功")
end
GetIndexValueAndBlock
参数及类型:
call_back:function内部结果回调
varId:string / userdata 排行榜变量或临时Map
playerId:number 玩家Uin
index:number 名次索引
ascending:bool是否升序
返回值及类型:
ret:bool是否已投递处理
该方法的其他说明: 同步路径按排名索引取排行榜项
具体使用案例如下:
--获取升序排列的第一个数据
local code1 , curkey1 , curvalue1,index,ascending,extendinfo = Data.Map:GetIndexValueAndBlock(GlobalRank, nil, 1,true)
Chat:SendChat(table.concat({"GetIndexValueAndBlock code = ",tostring(code1), "key = ",tostring(curkey1), "value = ",tostring(curvalue1), "index =", tostring(index), "ascending =", tostring(ascending), "extendinfo =", json.encode(extendinfo) or tostring(extendinfo)}, " "))
print("code", code1 , "key", curkey1, "value", curvalue1, "index", index, "ascending", ascending, "extendinfo", extendinfo)
if code1 == ErrorCode.OK then
print("获取成功")
else
--获取失败 参数向前移动
print("获取失败")
end
GetNumValuesAndCallback
参数及类型:
varId:string / userdata 排行榜变量或临时Map
playerId:number 玩家Uin
num:number 条数
ascending:bool是否升序
callback:function完成回调
返回值及类型:
ret:bool是否成功发起调用
该方法的其他说明: 异步取排行榜前N条
具体使用案例如下:
local function GlobalRankCallback(code,num,ascending,datas)
Chat:SendChat(table.concat({"GetNumValuesAndCallback code = ",tostring(code), "num =", tostring(num), "ascending =", tostring(ascending), "datas =", json.encode(datas) or tostring(datas)}, " "))
print("code", code , "num", num, "ascending", ascending, datas)
if code == ErrorCode.OK then
for i = 1, #datas do
print("key", datas[i].k, "value", datas[i].v , "extendinfo", datas[i].info and json.encode(datas[i].info) or "" )
end
print("获取成功")
else
print("获取失败")
end
end
--获取降序排列的前20个数据
local result = Data.Map:GetNumValuesAndCallback(GlobalRank, nil,20,false,GlobalRankCallback)
GetRangeValuesAndCallback
参数及类型:
varId:string / userdata 排行榜变量或临时Map
playerId:number 玩家Uin
min:number 最小分数
max:number 最大分数
ascending:bool是否升序
pagesize:number 单页条数
callback:function完成回调
返回值及类型:
ret:bool是否成功发起调用
该方法的其他说明: 异步按分数区间分页拉取排行榜数据
具体使用案例如下:
local function GlobalRankCallback(code,min,max,ascending,datas)
Chat:SendChat(table.concat({"GetRangeValuesAndCallback code = ",tostring(code), "min =", tostring(min), "max =", tostring(max), "ascending =", tostring(ascending), "datas =", json.encode(datas) or tostring(datas)}, " "))
print("code", code , "min", min, "max", max, "ascending", ascending, datas)
if code == ErrorCode.OK then
for i = 1, #datas do
print("key", datas[i].k, "value", datas[i].v , "extendinfo", datas[i].info and json.encode(datas[i].info) or "" )
end
print("获取成功")
else
print("获取失败")
end
end
--获取排行榜中降序排列值为1-1000名之间的数据,每次最大返回50条
local result = Data.Map:GetRangeValuesAndCallback(GlobalRank, nil,1,1000,true,50,GlobalRankCallback)
SetRankValueAndBlock
参数及类型:
call_back:function内部结果回调
varId:string / userdata 排行榜变量或临时Map
playerId:number 玩家Uin
key:string / number 键
value:number 分数
extendvalue:string / number / boolean / nil 扩展信息(仅更新不删,删请用Remove接口)
返回值及类型:
ret:bool是否已投递处理
该方法的其他说明: 同步路径写入排行榜分数与扩展字段
具体使用案例如下:
local uin = Player:GetHostUin()
local extendinfo = {
uin = uin,
name = Actor:GetNickName(uin),
icon = CustomUI:GetRoleIcon(uin),
}
-- extendinfo 如果不需要更新内容,可以传nil , 如果需要更新内容,则传入完整的信息
extendinfo = json.encode(extendinfo) -- 自定义table需要自己序列化结构
local code,key,curvalue = Data.Map:SetRankValueAndBlock(GlobalRank, nil, "GlobalRank_Key3", 200, extendinfo)
Chat:SendChat(table.concat({"SetRankValueAndBlock code = ",tostring(code), "key = ",tostring(key), "curvalue = ",json.encode(curvalue) or tostring(curvalue)}, " "))
print("code", code, "key", key, "curvalue", curvalue)
if code == ErrorCode.OK then
print("调用成功")
end
ClearData
参数及类型:
varId:string / userdata 变量表或临时Map
playerId:number 玩家Uin
返回值及类型:
ret:bool / nil 是否成功
该方法的其他说明: 清空整张KV表或排行榜数据
具体使用案例如下:
local result = Data.Map:ClearData(GlobalKV, nil)
Chat:SendChat(table.concat({"ClearData result = ",tostring(result)}, " "))
if result then
print("清理成功")
end
result = Data.Map:ClearData(GlobalRank, nil) and result
Chat:SendChat(table.concat({"ClearData result = ",tostring(result)}, " "))
if result then
print("清理成功")
end
result = Data.Map:ClearData(UserKV, uin) and result
Chat:SendChat(table.concat({"ClearData result = ",tostring(result)}, " "))
if result then
print("清理成功")
end
IncreasesRankValueAndBlock
参数及类型:
call_back:function内部结果回调
varId:string / userdata 排行榜变量或临时Map
playerId:number 玩家Uin
key:string / number 键
value:number 增量
extendvalue:string / number / boolean / nil 扩展信息
返回值及类型:
ret:bool是否已投递处理
该方法的其他说明: 同步路径对排行榜分数做增量累加
具体使用案例如下:
local extendinfo = {
uin = uin,
name = Actor:GetNickName(uin),
icon = CustomUI:GetRoleIcon(uin),
}
-- extendinfo 如果不需要更新内容,可以传nil , 如果需要更新内容,则传入完整的信息
extendinfo = json.encode(extendinfo) -- 自定义table需要自己序列化结构
--全局排行榜 GlobalRank_Key1 的key 增加值 ,extendinfo可不传,传入则更新extendinfo
local code,key = Data.Map:IncreasesRankValueAndBlock(GlobalRank, nil, "GlobalRank_Key2", 2, extendinfo)
print("key", key)
Chat:SendChat(table.concat({"IncreasesRankValueAndBlock code = ",tostring(code), "key = ",tostring(key)}, " "))
if code == ErrorCode.OK then
print("增加成功",key)
else
print("增加失败",key) -- 找不到对应的key也会失败
end
IncreasesRankValueAndCallback
参数及类型:
varId:string / userdata 排行榜变量或临时Map
playerId:number 玩家Uin
key:string / number 键
value:number 增量
extendvalue:string / number / boolean / nil 扩展信息
call_back:function完成回调
返回值及类型:
ret:bool是否已投递处理
该方法的其他说明: 异步对排行榜分数做增量累加
具体使用案例如下:
local result = true
local function GlobalRankCallback(code,key)
Chat:SendChat(table.concat({"IncreasesRankValueAndCallback code = ",tostring(code), "key = ",tostring(key)}, " "))
print("code", code , "key", key)
if code == ErrorCode.OK then
print("增加成功")
else
print("增加失败")
end
end
local extendinfo = {
uin = uin,
name = Actor:GetNickName(uin),
icon = CustomUI:GetRoleIcon(uin),
}
-- extendinfo 如果不需要更新内容,可以传nil , 如果需要更新内容,则传入完整的信息
extendinfo = json.encode(extendinfo) -- 自定义table需要自己序列化结构
--全局排行榜 GlobalRank_Key1 的key 增加值 ,extendinfo可不传,传入则更新extendinfo
result = Data.Map:IncreasesRankValueAndCallback(GlobalRank, nil, "GlobalRank_Key1", 2, extendinfo, GlobalRankCallback) and result
print("result", result and "调用成功" or "调用失败")
GetRangeIndexsAndCallback
参数及类型:
varId:string / userdata 排行榜变量或临时Map
playerId:number 玩家Uin
min:number 最前名次
max:number 最后名次
ascending:bool是否升序
callback:function完成回调
返回值及类型:
ret:bool是否成功发起调用
该方法的其他说明: 异步按名次区间拉取排行榜数据
具体使用案例如下:
local function GlobalRankCallback(code,min,max,ascending,datas)
Chat:SendChat(table.concat({"GetRangeIndexsAndCallback code = ",tostring(code), "min =", tostring(min), "max =", tostring(max), "ascending =", tostring(ascending), "datas =", json.encode(datas) or tostring(datas)}, " "))
print("code", code , "min", min, "max", max, "ascending", ascending, datas)
if code == ErrorCode.OK then
for i = 1, #datas do
print("key", datas[i].k, "value", datas[i].v , "extendinfo", datas[i].info and json.encode(datas[i].info) or "" )
end
print("获取成功")
else
print("获取失败")
end
end
--获取排行榜中降序排名为1-3名之间的数据,每次最大返回50条
local result = Data.Map:GetRangeIndexsAndCallback(GlobalRank, nil,1,3,true,GlobalRankCallback)
世界模块管理接口 World
具体函数名及描述如下:
序号 函数名 函数描述
1 StopParticleOnPos(...) 停止指定位置的粒子特效
2 SetParticleTransform(...) 设置粒子变换
3 PlayParticle(...) 播放粒子特效
4 GetLightByPos(...) 获取光照强度
5 SpawnCreature(...) 生成生物
6 DespawnActor(...) 移除生物
7 GetPlayerTotal(...) 获取玩家数量
8 GetAllPlayers(...) 获取全部玩家对象ID列表
9 GetSpawnPoint(...) 获取世界默认出生点
10 FindCanSpawnMobPosList(...) 查找附近可刷怪位置列表
11 FindNearestPlayerByPos(...) 获取离指定位置最近的玩家
12 PlaySoundEffectOnPos(...) 播放音效
13 StopSoundEffectOnPos(...) 停止指定位置上的音效
14 PauseSoundEffectOnPos(...) 暂停/恢复音效
15 IsDaytime(...) 是否白天
16 SetHours(...) 设置时间(小时)
17 GetHours(...) 获取时间(小时)
18 GetDay(...) 获取天数
19 SetGravity(...) 设置重力
20 AddGravity(...) 增加重力
21 GetGravity(...) 获取重力
22 IsChunkLoaded(...) 区块是否加载
23 CanMobSpawnOnPosXZ(...) 获取可刷怪的Y坐标
24 GetHostWorldId(...) 获取主机星球ID
25 SpawnProjectile(...) 生成投掷物
26 SpawnProjectileByDir(...) 按方向生成投掷物
27 GetBiomeType(...) 获取地形类型
28 GetBiomeGroup(...) 获取地形组类型
29 FindEcosystem(...) 查找地形位置
30 PixelMapAddMarker(...) 地图增加标记
31 PixelMapRefreshMarker(...) 地图刷新标记
32 PixelMapDelMarker(...) 地图删除标记
33 PixelMapAddTexture(...) 增加地图纹理标签
34 PixelMapRefreshTexture(...) 刷新地图纹理标签
35 PixelMapDelTexture(...) 地图删除纹理标签
36 SetSkyBoxColorAnim(...) 设置天空盒颜色(动效)
37 SetTimeVanishingSpeed(...) 设置时间流逝速度
38 SetSkyBoxTemplate(...) 设置天空盒模板
39 SetSkyBoxMaps(...) 设置天空盒贴图
40 SetSkyBoxColor(...) 设置天空盒颜色
41 SetSkyBoxAttr(...) 设置天空盒属性
42 SetSkyBoxAttrWithNoTime(...) 设置天空盒属性(不带时间)
43 SetSkyBoxFilter(...) 设置天空盒滤镜
44 SetSkyBoxSwitch(...) 设置天空盒开关
45 SetSkyBoxMapsAnim(...) 设置天空盒贴图(动效)
46 SetSkyBoxFilterAnim(...) 设置天空盒滤镜(动效)
47 GetLocalDate(...) 获取本地时间字段
48 GetLocalDateString(...) 获取本地时间字符串
49 GetServerDate(...) 获取服务器时间字段
50 GetDateFromTime(...) 时间戳转时间字段
51 GetDirRayDetection(...) 方向射线检测
52 GetRayLength(...) 计算射线长度
53 GetRayBlock(...) 射线命中方块
54 CalcDirectionByYawDirection(...) 局部方向转世界方向(向量)
55 CalcDirectionByYawAngle(...) 局部方向转世界方向(角度)
56 CalcDirectionByCoord(...) 坐标转表
57 CalcDirectionByAngle(...) 角度转方向向量
58 RandomParticleEffectID(...) 随机特效ID
59 RandomSoundID(...) 随机音效ID
60 CalcDistance(...) 计算两点距离
61 SetGroupWeather(...) 设置天气组天气
62 RandomWeatherID(...) 随机天气ID
63 GetGroupWeather(...) 获取天气组天气
64 SetSpawnPoint(...) 设置出生点
65 CalcDirectionByPos2Pos(...) 两点单位方向
66 SetWorldCreateMobRule(...) 设置世界生物生成规则
67 GetWorldCreateMobRule(...) 获取生物生成密度
68 SetMobSpawnDensity(...)
69 SetPlantGrowRate(...) 设置农作物生长倍率
70 SetInnerViewEnable(...) 设置内置界面启用
71 SetMidJoin(...) 设置中途加入开关
72 GetGameMode(...) 获取游戏模式
73 SetLightByPos(...) 设置方块光照
StopParticleOnPos
参数及类型:
x:number 坐标x
y:number 坐标y
z:number 坐标z
particleId:number / string 特效ID或路径
worldId:number / nil 星球ID
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 停止指定位置的粒子特效(支持传特效ID或路径)
具体使用案例如下:
local x, y, z = Actor:GetPosition(Player:GetHostUin())
local result = World:StopParticleOnPos(x, y, z, 1001, WorldId)
SetParticleTransform
参数及类型:
pos:table 位置(米)
particleIdArg:number / string / table 特效ID/路径或数组
offset:table / nil 偏移(米)
rot:table / nil 旋转
scale:table / nil 缩放
worldId:number / nil 星球ID
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 调整指定位置的粒子特效偏移/旋转/缩放(支持单个或多个特效)
具体使用案例如下:
local x, y, z = Actor:GetPosition(Player:GetHostUin())
-- 设置效果缩放2倍
local result = World:SetParticleTransform({x = x, y = y, z = z}, 1001, nil, nil, {x = 2, y = 2, z = 2}, WorldId)
PlayParticle
参数及类型:
pos:table 位置(米)
particleIdArg:number / string / table 特效ID/路径或数组
ptimeArg:number / nil 持续秒数
offset:table / nil 偏移(米)
rot:table / nil 旋转
scale:table / nil 缩放
worldId:number / nil 星球ID
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 在指定位置播放粒子特效(支持单个或多个特效)
具体使用案例如下:
local x, y, z = Actor:GetPosition(Player:GetHostUin())
local result = World:PlayParticle({x = x, y = y, z = z}, 1001, 2, WorldId)
GetLightByPos
参数及类型:
x:number 坐标x
y:number 坐标y
z:number 坐标z
worldId:number / nil 星球ID
返回值及类型:
lv:number 光照强度(0~16),失败为-1
该方法的其他说明: 获取指定位置的光照强度
具体使用案例如下:
local light = World:GetLightByPos(x, y, z, WorldId)
print("获取光照强度 ", light)
SpawnCreature
参数及类型:
x:number 坐标x
y:number 坐标y
z:number 坐标z
mobid:number / string 生物类型
num:number / nil 数量
trigger:bool / nil 是否触发事件
worldId:number / nil 星球ID
返回值及类型:
objs:table / nil 生成的生物ID数组
该方法的其他说明: 在指定位置生成生物(怪物/NPC/动物等)
具体使用案例如下:
local x1, y1, z1 = Actor:GetPosition(Player:GetHostUin())
local creatures = World:SpawnCreature(x1 + 5, y1 + 1, z1, 3400, 1, true, WorldId)
DespawnActor
参数及类型:
objid:number 对象objID
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 移除一个生物,如果是骑乘的生物则会先把骑乘关系处理掉再移除生物。(玩家不允许移除)
具体使用案例如下:
local result = World:DespawnActor(creatureId)
GetPlayerTotal
参数及类型:
alive:number / nil 玩家状态(0阵亡 1存活 -1全部)
返回值及类型:
ret:number 玩家数量,失败为-1
该方法的其他说明: 获取当前玩家数量(可按存活/死亡筛选)
具体使用案例如下:
local total = World:GetPlayerTotal()
GetAllPlayers
参数及类型:
alive:number / nil 玩家状态(0阵亡 1存活 -1全部)
返回值及类型:
list:table / nil 玩家objid数组
该方法的其他说明: 获取当前地图中全部玩家对象ID列表(可按存活/死亡筛选)
具体使用案例如下:
local players = World:GetAllPlayers()
GetSpawnPoint
参数及类型:
worldId:number / nil 星球ID(nil或-1表示当前星球)
返回值及类型:
x:number 坐标x
y:number 坐标y
z:number 坐标z
该方法的其他说明: 取当前地图/世界配置的默认出生点
具体使用案例如下:
local x, y, z = World:GetSpawnPoint()
FindCanSpawnMobPosList
参数及类型:
centerX:number 中心x
centerY:number 中心y
centerZ:number 中心z
radius:number 半径
includeCenterPos:bool / nil 是否包含中心点
worldId:number / nil 星球ID(默认当前主机所在星球)
返回值及类型:
posList:table / nil 位置列表
该方法的其他说明: 获取指定中心点周围,以设置的半径为范围的「可刷怪」位置列表,可选是否把中心点也算进结果里
具体使用案例如下:
local x, y, z = Actor:GetPosition(Player:GetHostUin())
local posList = World:FindCanSpawnMobPosList(x, y, z, 10, true, WorldId)
if posList then
for i, v in ipairs(posList) do
print("可以创建生物位置", v.x, v.y, v.z)
end
end
FindNearestPlayerByPos
参数及类型:
posX:number x
posY:number y
posZ:number z
worldId:number / nil 星球ID(默认当前主机星球)
返回值及类型:
objid:number / nil 玩家ID
该方法的其他说明: 以指定位置为中心、在半径范围内查找玩家,返回最近的玩家ID
具体使用案例如下:
local playerId = World:FindNearestPlayerByPos(x, y, z, WorldId)
PlaySoundEffectOnPos
参数及类型:
pos:table 位置
soundId:number 音效ID
volume:number 音量(0~100)
pitch:number / nil 音调
isLoop:bool是否循环
worldId:number / nil 星球ID
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 在指定位置播放音效(可设置音量/音调/是否循环)
具体使用案例如下:
local x, y, z = Actor:GetPosition(Player:GetHostUin())
local result = World:PlaySoundEffectOnPos({x = x, y = y, z = z}, 10946, 100, 1, false, WorldId)
StopSoundEffectOnPos
参数及类型:
pos:table 位置
soundId:number 音效ID(-1表示全部)
worldId:number / nil 星球ID(默认当前主机所在星球)
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 停止指定位置上的音效(传 -1 表示停止该位置所有音效)
具体使用案例如下:
local x, y, z = Actor:GetPosition(Player:GetHostUin())
local result = World:StopSoundEffectOnPos({x = x, y = y, z = z}, 10946, WorldId)
PauseSoundEffectOnPos
参数及类型:
pos:table 位置
soundId:number 音效ID(-1表示全部)
pause:boolean true暂停 false恢复
worldId:number / nil 星球ID(默认当前主机所在星球)
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 暂停或恢复指定位置的音效(传 -1 表示该位置所有音效)
具体使用案例如下:
local x, y, z = Actor:GetPosition(Player:GetHostUin())
local result = World:PauseSoundEffectOnPos({x = x, y = y, z = z}, 10946, true, WorldId)
IsDaytime
参数及类型: 无
返回值及类型:
ret:boolean 是否白天
该方法的其他说明: 当前是否为白天
具体使用案例如下:
local isDaytime = World:IsDaytime()
SetHours
参数及类型:
time:number 小时(0~24)
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 把世界时间设置到某个小时(0~24)
具体使用案例如下:
local result = World:SetHours(2)
GetHours
参数及类型: 无
返回值及类型:
curHour:number / nil 小时
该方法的其他说明: 获取当前世界时间(小时)
具体使用案例如下:
local hours = World:GetHours()
GetDay
参数及类型: 无
返回值及类型:
ret:number / nil 天数
该方法的其他说明: 获取当前世界过了多少天
具体使用案例如下:
local day = World:GetDay()
SetGravity
参数及类型:
value:number 重力值
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 设置当前星球的重力倍数(目前只支持当前星球)
具体使用案例如下:
local result = World:SetGravity(12)
AddGravity
参数及类型:
value:number 增加量
返回值及类型:
ret:boolean 是否成功
该方法的其他说明: 在当前重力基础上增加一个值
具体使用案例如下:
local ret = World:AddGravity(value, worldId)
GetGravity
参数及类型:
worldId:number / nil 星球ID(默认当前主机所在星球)
返回值及类型:
value:number / nil 重力值
该方法的其他说明: 获取当前星球重力值
具体使用案例如下:
local gravity = World:GetGravity()
IsChunkLoaded
参数及类型:
x:number x坐标
z:number z坐标
worldId:number / nil 星球ID(默认当前主机所在星球)
返回值及类型:
ret:boolean 是否已加载
该方法的其他说明: 判断某个区块是否已加载
具体使用案例如下:
local x, y, z = Actor:GetPosition(Player:GetHostUin())
local worldId = World:GetHostWorldId()
local result = World:IsChunkLoaded(x, z, worldId)
CanMobSpawnOnPosXZ
参数及类型:
x:number x
y:number y
z:number z
worldId:number / nil 星球ID(默认当前主机所在星球)
返回值及类型:
posy:number 查到的可刷怪落脚 Y(-1 表示未找到)
该方法的其他说明: 在指定的 x、z 处从高度 y 向上查找,得到第一个可落脚刷怪的高度,找不到合适位置返回 -1。
具体使用案例如下:
local canSpawnY = World:CanMobSpawnOnPosXZ(x,y, z, WorldId)
if canSpawnY and canSpawnY > 0 then
print("可以创建生物位置", x, canSpawnY, z)
end
GetHostWorldId
参数及类型: 无
返回值及类型:
worldId:number 星球ID
该方法的其他说明: 获取主机所在星球ID
具体使用案例如下:
local worldId = World:GetHostWorldId()
print("获取主机世界id ", worldId)
SpawnProjectile
参数及类型:
objid:number / nil 发射者objid
itemid:number / string 道具ID或资源ID
x:number 起点x
y:number 起点y
z:number 起点z
dstx:number 目标x
dsty:number 目标y
dstz:number 目标z
speed:number / nil 速度
worldId:number / nil 星球ID(默认当前主机所在星球)
返回值及类型:
objid:number / nil 投掷物objid
该方法的其他说明: 在起点生成一个投掷物并朝目标点飞行(可指定速度)
具体使用案例如下:
local x, y, z = Actor:GetPosition(Player:GetHostUin())
-- 生成石箭往x+20,y+5,z方向射出, 速度10
local projectile = World:SpawnProjectile(Player:GetHostUin(), 12051, x, y, z, x + 20, y + 5, z, 10, WorldId)
SpawnProjectileByDir
参数及类型:
objid:number 发射者objid
itemid:number / string 道具类型/资源ID
x|y|z:number 生成位置坐标
dirx|diry|dirz:number 飞行方向分量
speed:number 速度
worldId:number / nil 星球ID(默认当前主机所在星球)
返回值及类型:
ret:number / nil 投掷物ID(失败返回nil)
该方法的其他说明: 在指定位置生成投掷物,按指定方向飞行(可指定速度)
具体使用案例如下:
local x, y, z = Actor:GetPosition(Player:GetHostUin())
local projectile = World:SpawnProjectileByDir(Player:GetHostUin(), 12051, x, y, z, 20, 5, 20, 10, WorldId)
GetBiomeType
参数及类型:
posX|posZ:number 位置坐标
worldId:number / nil 星球ID(默认当前主机所在星球)
返回值及类型:
ret:number / nil 地形类型(BiomeType)
该方法的其他说明: 获取指定位置的地形类型;取不到返回 nil
具体使用案例如下:
local biomeType = World:GetBiomeType(x, y, WorldId)
if biomeType == BiomeType.GrassLand then
print("草原")
elseif biomeType == BiomeType.Forest then
print("森林")
end
GetBiomeGroup
参数及类型:
posX|posZ:number 位置坐标
worldId:number / nil 星球ID(默认当前主机所在星球)
返回值及类型:
ret:number / nil 地形组类型(WeatherGroup)
该方法的其他说明: 获取指定位置的地形组类型;取不到返回 nil
具体使用案例如下:
local group = World:GetBiomeGroup(x, z, WorldId)
FindEcosystem
参数及类型:
x|y|z:number 查找起点位置坐标
biomeType:number 地形类型(BiomeType)BiomeType
radius:number / nil 查找半径
worldId:number / nil 星球ID(默认当前主机所在星球)
返回值及类型:
retX|retY|retZ:number / nil 找到的地形位置坐标(失败返回nil)
该方法的其他说明: 从起点附近搜索指定地形类型,找到则返回目标坐标,找不到返回 nil,radius是 (2radius + 1) ^ 2个chunk, radius = 4就需要遍历81个chunk,8116*16个方块
具体使用案例如下:
local x,y,z = World:FindEcosystem(centerX, centerY, centerZ, BiomeType.GrassLand, 50)
if x and y and z then
print("找到草原", x, y, z)
end
PixelMapAddMarker
参数及类型:
uin:number 玩家ID
id:string 标记ID
params:table 标记参数
worldid:number / nil 星球ID
返回值及类型:
ret:boolean 是否添加成功
该方法的其他说明: 在地图上添加一个开发者标记点(查看下案例,了解params结构)
具体使用案例如下:
-- 参数说明
local x, y, z = Actor:GetPosition(Player:GetHostUin())
local params = {
posX = x,--(必填)
posZ = z,--(必填)
-- name ="测试名", --名字
iconName = "0_10074", --图片路径(必填)
-- zoomMin = 0, --最小scale倍率
-- zoomMax = 100, --最大scale倍率
-- isTrace = false, --是否追踪
-- isRadarTrace = false, --雷达上是否追踪
-- appearInBlockFog = true, --
-- isCanUI = false, --是否能点击
-- desc = "", --描述
-- level = 4, --UI层级
}
local result = World:PixelMapAddMarker(Player:GetHostUin(), "markId_123", params)
PixelMapRefreshMarker
参数及类型:
uin:number 玩家ID
id:string 标记ID
params:table 标记参数(提供改变的参数即可)
worldid:number / nil 星球ID
返回值及类型:
ret:boolean 是否刷新成功
该方法的其他说明: 刷新地图上的开发者标记点(params 只需提供要变更的字段)
具体使用案例如下:
local x, y, z = Actor:GetPosition(Player:GetHostUin())
local params = {
posX = x,
posZ = z,
-- name = defaultCustomMarkerConfig[1].name, 名字
iconName = "0_10103", --图片ID
-- zoomMin = 0, 最小scale倍率
-- zoomMax = 100, 最大scale倍率
-- isTrace = false, 是否追踪
-- isRadarTrace = false, 雷达上是否追踪
-- appearInBlockFog = true,
-- isCanUI = false, 是否能点击
-- desc = "", 描述
-- level = 4, UI层级
}
local result = World:PixelMapRefreshMarker(Player:GetHostUin(), "markId_123", params)
PixelMapDelMarker
参数及类型:
uin:number 玩家ID
id:string 标记ID
worldid:number / nil 星球ID
返回值及类型:
ret:boolean 是否删除成功
该方法的其他说明: 删除地图上的开发者标记点
具体使用案例如下:
local result = World:PixelMapDelMarker(Player:GetHostUin(), "markId_123")
PixelMapAddTexture
参数及类型:
uin:number 玩家ID
id:string 纹理ID
params:table 纹理参数
worldid:number / nil 星球ID
返回值及类型:
ret:boolean 是否添加成功
该方法的其他说明: 在地图纹理节点上叠加一张纹理(可用于背景/遮罩/自定义装饰)
具体使用案例如下:
--开发者添加纹理到地图纹理节点,可以修饰原本的地图纹理(比如加背景,遮罩,自定义地图纹理)
local x, y, z = Actor:GetPosition(Player:GetHostUin())
local params = {
filePath = "0_10103", --图片id
width = 100, --宽度
height = 100, --高度
posX = x, --在地图上的方块位置
posZ = z, --在地图上的方块位置
level = 11, --层级 官方地图纹理层级为10
pivotX = 0, --x轴锚点
pivotY = 0, --z轴锚点
alpha = 1, --透明度
scale = 1, --缩放
rotation = 0, --旋转
colorR = 255, --颜色
colorG = 255, --颜色
colorB = 255, --颜色
}
local result = World:PixelMapAddTexture(Player:GetHostUin(), "textureId_1", params)
PixelMapRefreshTexture
参数及类型:
uin:number 玩家ID
id:string 纹理ID
params:table 纹理参数(提供改变的参数即可)
worldid:number / nil 星球ID
返回值及类型:
ret:boolean 是否刷新成功
该方法的其他说明: 刷新地图上的开发者纹理标签(params 只需提供要变更的字段)
具体使用案例如下:
local x, y, z = Actor:GetPosition(Player:GetHostUin())
local params = {
filePath = "0_10104", --图片id
width = 100, --宽度
height = 100, --高度
posX = x, --在地图上的方块位置
posZ = z, --在地图上的方块位置
level = 11, --层级 官方地图纹理层级为10
pivotX = 0, --x轴锚点
pivotY = 0, --z轴锚点
alpha = 1, --透明度
scale = 1, --缩放
rotation = 0, --旋转
colorR = 255, --颜色
colorG = 255, --颜色
colorB = 255, --颜色
}
local result = World:PixelMapRefreshTexture(Player:GetHostUin(), "textureId_1", params)
PixelMapDelTexture
参数及类型:
uin:number 玩家ID
id:string 纹理ID
worldid:number / nil 星球ID
返回值及类型:
ret:boolean 是否删除成功
该方法的其他说明: 删除地图上的开发者纹理标签
具体使用案例如下:
local result = World:PixelMapDelTexture(Player:GetHostUin(), "textureId_1")
SetSkyBoxColorAnim
参数及类型:
playerid:number 玩家ID
itype:number 颜色属性枚举(SkyboxColor)SkyboxColor
color:string 16进制颜色值(如0xffffff)
animId:number 动画枚举(Easing)Easing
animTime:number 动画时间
worldId:number / nil 星球ID
返回值及类型:
ret:boolean 是否设置成功
该方法的其他说明: 给指定玩家设置天空盒颜色参数(带动画过渡)
具体使用案例如下:
local result = World:SetSkyBoxColorAnim(Player:GetHostUin(), SkyboxColor.Moon, [=[0xffe082]=], Easing.Linear, 1)
SetTimeVanishingSpeed
参数及类型:
speed:number 时间流逝速度
返回值及类型:
ret:boolean 是否设置成功
该方法的其他说明: 设置天空盒时间流逝速度
具体使用案例如下:
local result = World:SetTimeVanishingSpeed(20)
SetSkyBoxTemplate
参数及类型:
value:number / string 模板值
worldId:number / nil 星球ID(默认当前主机所在星球)
返回值及类型:
ret:boolean 是否设置成功
该方法的其他说明: 设置天空盒模板(官方模板填数值,自定义模板填ID)
具体使用案例如下:
local result = World:SetSkyBoxTemplate(7)
SetSkyBoxMaps
参数及类型:
itype:number 贴图类型(SkyboxMap)SkyboxMap
url:string 图片链接
worldId:number / nil 星球ID
返回值及类型:
ret:boolean 是否设置成功
该方法的其他说明: 设置天空盒贴图
具体使用案例如下:
local result = World:SetSkyBoxMaps(SkyboxMap.Sky, [=[0_30011]=])
SetSkyBoxColor
参数及类型:
time:number 游戏时间(小时)
itype:number 颜色属性枚举(SkyboxColor)SkyboxColor
color:string 16进制颜色值(如0xffffff)
worldId:number / nil 星球ID
返回值及类型:
ret:boolean 是否设置成功
该方法的其他说明: 设置天空盒在指定时间点的颜色参数
具体使用案例如下:
local result = World:SetSkyBoxColor(SkyboxTime.Current, SkyboxColor.Top, [=[0x1e88e5]=])
SetSkyBoxAttr
参数及类型:
time:number 游戏时间(小时)
itype:number 参数类型(SkyboxAttr)SkyboxAttr
value:number 参数值(0~100)
worldId:number / nil 星球ID
返回值及类型:
ret:boolean 是否设置成功
该方法的其他说明: 设置天空盒在指定时间点的属性参数
具体使用案例如下:
local result = World:SetSkyBoxAttr(SkyboxTime.Current, SkyboxAttr.SunScale, 20)
SetSkyBoxAttrWithNoTime
参数及类型:
itype:number 参数类型(SkyboxAttrNoTime)SkyboxAttrNoTime
value:number 参数值(0~100)
worldId:number / nil 星球ID
返回值及类型:
ret:boolean 是否设置成功
该方法的其他说明: 设置天空盒属性参数(不带时间维度,直接作用于当前配置)
具体使用案例如下:
local ret = World:SetSkyBoxAttrWithNoTime(itype, value, worldId)
SetSkyBoxFilter
参数及类型:
playerid:number 玩家ID
itype:number 参数类型(SkyboxFilter)SkyboxFilter
value:number / string 参数值(0~100)或16进制颜色值(如0xffffff)
worldId:number / nil 星球ID
返回值及类型:
ret:boolean 是否设置成功
该方法的其他说明: 给指定玩家设置天空盒滤镜参数(数值或颜色)
具体使用案例如下:
local result = World:SetSkyBoxFilter(Player:GetHostUin(), SkyboxFilter.Contrast, 50)
SetSkyBoxSwitch
参数及类型:
time:number 游戏时间(小时)
itype:number 参数类型(SkyboxSwitch)SkyboxSwitch
value:number 开关值(0/1)
worldId:number / nil 星球ID
返回值及类型:
ret:boolean 是否设置成功
该方法的其他说明: 设置天空盒属性开关
具体使用案例如下:
local result = World:SetSkyBoxSwitch(SkyboxTime.Current, SkyboxSwitch.Fogenable, true)
SetSkyBoxMapsAnim
参数及类型:
playerid:number 玩家ID
itype:number 贴图类型(SkyboxMap)SkyboxMap
url:string 图片链接
animId:number 动画枚举(Easing)Easing
animTime:number 动画时间
worldId:number / nil 星球ID
返回值及类型:
ret:boolean 是否设置成功
该方法的其他说明: 给指定玩家设置天空盒贴图(带动画过渡)
具体使用案例如下:
local result = World:SetSkyBoxMapsAnim(Player:GetHostUin(), SkyboxMap.Sky, [=[0_30005]=], Easing.BackOut, 1)
SetSkyBoxFilterAnim
参数及类型:
playerid:number 玩家ID
itype:number 参数类型(SkyboxFilter)SkyboxFilter
value:number / string 参数值(0~100)或颜色值
animId:number 动画枚举(Easing)Easing
animTime:number 动画时间
worldId:number / nil 星球ID
返回值及类型:
ret:boolean 是否设置成功
该方法的其他说明: 给指定玩家设置天空盒滤镜参数(带动画过渡)
具体使用案例如下:
local result = World:SetSkyBoxFilterAnim(Player:GetHostUin(), SkyboxFilter.Color, [=[0xffee58]=], Easing.Linear, 1)
GetLocalDate
参数及类型:
enum:number 枚举值(EventDate)
返回值及类型:
ret:number 时间值
该方法的其他说明: 获取本地设备时间的指定字段
具体使用案例如下:
local date = World:GetLocalDate(EventDate.Day)
GetLocalDateString
参数及类型: 无
返回值及类型:
ret:string 时间字符串
该方法的其他说明: 获取完整本地设备时间字符串
具体使用案例如下:
local dateString = World:GetLocalDateString()
GetServerDate
参数及类型:
enum:number 枚举值(EventDate)
返回值及类型:
ret:number 时间值(取不到返回0)
该方法的其他说明: 获取服务器时间的指定字段(云服模式下会回退到本地时间)
具体使用案例如下:
local date = World:GetServerDate()
GetDateFromTime
参数及类型:
time:number 时间戳
enum:number 枚举值(EventDate)EventDate
返回值及类型:
ret:number 时间值(入参非法返回0)
该方法的其他说明: 把时间戳拆出指定字段(年/月/日/时/分/秒等)
具体使用案例如下:
local date = World:GetDateFromTime(os.time(), EventDate.Day)
GetDirRayDetection
参数及类型:
posbegin:table 起点{x=0,y=0,z=0}
dir:table 方向向量{x=0,y=0,z=0}
maxlen:number 最大检测距离
picktype:number 检测类型(RayDetectType)RayDetectType
worldId:number / nil 星球ID
ignoreObjs:table / nil 忽略对象ID数组
ignorePrefabs:table / nil 忽略方块/生物类型数组
返回值及类型: ret:number|nil,vec:table|nil:命中ID与命中位置{x=0,y=0,z=0}(未命中返回nil)
该方法的其他说明: 从起点沿方向做射线检测,返回命中的对象/方块及命中位置
具体使用案例如下:
local ray = Player:GetAimDir(uin)
local x,y,z = Player:GetRayOriginPos(uin)
local id = World:GetDirRayDetection({x=x, y=y, z=z}, {x= ray.x, y= ray.y, z= ray.z}, 10, RayDetectType.Block, WorldId)
GetRayLength
参数及类型:
srcx|srcy|srcz:number 起点坐标
dstx|dsty|dstz:number 终点坐标
distance:number 最大检测距离
worldId:number / nil 星球ID(默认当前主机所在星球)
返回值及类型:
ret:number / nil 射线长度(失败返回nil)
该方法的其他说明: 从起点到终点方向做射线检测,计算射线在遇到方块前的长度
具体使用案例如下:
local x, y, z = Actor:GetPosition(Player:GetHostUin())
local length = World:GetRayLength(x, y, z, x, y + 20, z, 100, WorldId)
GetRayBlock
参数及类型:
srcx|srcy|srcz:number 起点坐标
face:number 方向/面
distance:number 最大检测距离
worldId:number / nil 星球ID(默认当前主机所在星球)
返回值及类型:
ret:number / string / nil 方块ID(可能返回自定义资源ID;未命中返回nil)
该方法的其他说明: 从起点沿指定面/方向做射线检测,返回命中的方块ID(未命中返回nil)
具体使用案例如下:
local x, y, z = Actor:GetPosition(Player:GetHostUin())
local block = World:GetRayBlock(x, y, z, FaceDir.NegY, 100, WorldId)
CalcDirectionByYawDirection
参数及类型:
objid:number 对象ID
vx|vy|vz:number 局部方向分量
返回值及类型: ret:table|nil:世界方向向量{x: number, y: number, z: number}(失败返回nil)
该方法的其他说明: 把局部坐标方向转换为世界方向(忽略视角仰角)
具体使用案例如下:
local direction = World:CalcDirectionByYawDirection(Player:GetHostUin(), 100, 100, 100)
CalcDirectionByYawAngle
参数及类型:
objid:number 对象ID
yaw:number 水平角(度制)
pitch:number 俯仰角(度制)
返回值及类型:
ret:table / nil 世界方向向量{x,y,z}(失败返回nil)
该方法的其他说明: 把局部球坐标方向转换为世界方向(忽略视角仰角)
具体使用案例如下:
local direction = World:CalcDirectionByYawAngle(Player:GetHostUin(), 30, 45)
CalcDirectionByCoord
参数及类型:
x:number 坐标分量x
y:number 坐标分量y
z:number 坐标分量z
返回值及类型: ret:table:方向向量{x: number, y: number, z: number}
该方法的其他说明: 不做任何数学换算,只是把三个坐标放进一张表里
具体使用案例如下:
local direction = World:CalcDirectionByCoord(10 ,20, 30)
CalcDirectionByAngle
参数及类型:
yaw:number 水平角(度制)
pitch:number 俯仰角(度制)
返回值及类型: ret:table|nil:方向向量{x: number, y: number, z: number}(入参非法返回nil)
该方法的其他说明: 把水平角和俯仰角转换为方向向量
具体使用案例如下:
local direction = World:CalcDirectionByAngle(45, 45)
RandomParticleEffectID
参数及类型: 无
返回值及类型:
ret:number / nil 特效ID(取不到返回nil)
该方法的其他说明: 从粒子特效表中随机返回一个可触发的特效ID
具体使用案例如下:
local id = World:RandomParticleEffectID()
RandomSoundID
参数及类型: 无
返回值及类型:
ret:number / nil 音效ID(取不到返回nil)
该方法的其他说明: 从音效表中随机返回一个音效ID
具体使用案例如下:
local id = World:RandomSoundID()
CalcDistance
参数及类型:
posSrc:table:源坐标{x: number, y: number, z: number}
posDst:table:目标坐标{x: number, y: number, z: number}
返回值及类型:
ret:number / nil 两点距离(入参非法返回nil)
该方法的其他说明: 计算两个三维坐标之间的直线距离
具体使用案例如下:
local distance = World:CalcDistance({x = 0, y = 0, z = 0}, {x = 10, y = 0, z = 0})
SetGroupWeather
参数及类型:
groupid:number 天气组ID(WeatherGroup)WeatherGroup
weatherid:number 天气ID(GroupWeatherType)GroupWeatherType
worldId:number / nil 星球ID(默认当前主机所在星球)
返回值及类型:
ret:boolean 是否设置成功
该方法的其他说明: 设置某个天气组的天气状态
具体使用案例如下:
local result = World:SetGroupWeather(WeatherGroup.Common, GroupWeatherType.Shine)
RandomWeatherID
参数及类型: 无
返回值及类型:
ret:number / nil 天气ID(取不到返回nil)
该方法的其他说明: 从可用天气列表中随机一个天气ID
具体使用案例如下:
local id = World:RandomWeatherID()
GetGroupWeather
参数及类型:
groupid:number 天气组ID(WeatherGroup)WeatherGroup
worldId:number / nil 星球ID(默认当前主机所在星球)
返回值及类型:
ret:number / nil 天气值(入参非法返回nil)
该方法的其他说明: 获取指定天气组当前的天气值
具体使用案例如下:
local weather = World:GetGroupWeather(WeatherGroup.Common)
SetSpawnPoint
参数及类型:
x|y|z:number 方块坐标
返回值及类型:
ret:boolean 是否设置成功
该方法的其他说明: 设置世界默认出生点坐标
具体使用案例如下:
local x, y, z = Actor:GetPosition(Player:GetHostUin())
local result = World:SetSpawnPoint(x, y, z)
CalcDirectionByPos2Pos
参数及类型:
pos1:table 位置1{x=number,y=number,z=number}
pos2:table 位置2{x=number,y=number,z=number}
返回值及类型:
ret:table / nil 单位方向{x,y,z}(入参非法返回nil)
该方法的其他说明: 计算从位置1指向位置2的单位方向向量
具体使用案例如下:
local ret = World:CalcDirectionByPos2Pos(pos1, pos2)
SetWorldCreateMobRule
参数及类型:
cfgs:table 生物规则配置
worldId:number / nil 星球ID(默认当前主机所在星球)
返回值及类型:
ret:boolean 是否设置成功
该方法的其他说明: 设置世界生物生成规则,地图没有这个地形会设置失败(不保存,退出游戏后失效)
具体使用案例如下:
local cfgs = {
-- 草原
[BiomeType.GrassLand] = {
{
id = 3400, -- 生物id,嘟嘟鸟
weight = 100 -- 权重
},
{
id = 3401, -- 生物id
weight = 100 -- 权重
},
},
[BiomeType.Forest] = {--迷拉星森林
{
id = 3400,
weight = 50
}
}
}
local result = World:SetWorldCreateMobRule(cfgs)
GetWorldCreateMobRule
参数及类型:
biometype:number 地形类型(BiomeType), biometype < 0 返回全部, biometype > 0 返回指定地形BiomeType
worldId:number / nil 星球ID(默认当前主机所在星球)
返回值及类型:
ret:table / nil biometype < 0 时返回 {[biomeId]={{id, weight}}}, biometype > 0 时返回 {{id, weight}}
该方法的其他说明: 获取生物生成密度(不保存,退出游戏后失效)
具体使用案例如下:
local ret = World:GetWorldCreateMobRule(biometype, worldId)
SetMobSpawnDensity
参数及类型:
mobType:number
density:number
worldId:number|nil
返回值及类型: ret:boolean
该方法的主要作用:
具体使用案例如下:
local result = World:SetMobSpawnDensity(MobType.Passive, 100) -- 设置动物密度
SetPlantGrowRate
参数及类型:
rate:number 时间倍率(>0)
worldId:number / nil 星球ID(默认当前主机所在星球)
返回值及类型:
ret:boolean 是否设置成功
该方法的其他说明: 设置农作物生长时间倍率(在原时间上乘以系数;不保存,退出游戏后失效)
具体使用案例如下:
local result = World:SetPlantGrowRate(0.5) -- 设置生长速度为原来的0.5倍
SetInnerViewEnable
参数及类型:
iview:number 弹窗类型枚举(InnerPopUpview)InnerPopUpview
bopen:boolean 启用(true)/禁用(false)
返回值及类型:
ret:boolean 是否设置成功
该方法的其他说明: 设置某类内置界面是否禁用
具体使用案例如下:
-- 一般和Player:OpenInnerView 接口配合使用
local ret = World:SetInnerViewEnable(InnerPopUpview.CollectMaps,false)
if ret then
print("设置成功")
end
SetMidJoin
参数及类型:
enable:boolean 是否允许中途加入
返回值及类型:
ret:boolean 是否设置成功
该方法的其他说明: 设置是否允许中途加入
具体使用案例如下:
local ret = World:SetMidJoin(true)
if ret then
print("设置成功")
end
GetGameMode
参数及类型: 无
返回值及类型:
ret:number / nil 游戏模式(WorldType)
该方法的其他说明: 获取当前游戏模式
具体使用案例如下:
local curmode = World:GetGameMode()
if curmode and curmode == WorldType.GamemakerRun then
print("当前地图是玩法模式")
elseif curmode and curmode == WorldType.Single then
print("当前地图是冒险模式")
end
SetLightByPos
参数及类型:
x:number 位置x
y:number 位置y
z:number 位置z
value:number 光照强度(0~15)
worldId:number / nil 星球ID(默认当前主机所在星球)
返回值及类型:
ret:boolean 是否设置成功
该方法的其他说明: 设置指定位置的方块光照强度<1.50+>
具体使用案例如下:
local result = World:SetLightByPos(x, y, z, 10, WorldId)
print("设置光照强度 10 ", result)
道具模块管理接口 Item
具体函数名及描述如下:
序号 函数名 函数描述
1 GetItemName(...) 获取道具名称
2 RandomItemID(...) 随机获取道具ID
3 RandomProjectileID(...) 随机获取投掷物ID
4 GetAttr(...) 获取道具属性
5 GetItemDesc(...) 获取道具描述
6 GetCustomGunAttr(...) 获取自定义枪械属性
7 GetCraftIDNum(...) 获取道具配方数量
8 GetCraftMaterialAndNum(...) 获取道具配方材料与数量
9 GetFacade(...) 获取道具类型外观
10 CreateItemInstInWorld(...) 在位置上创建道具掉落物
11 CreateGunInWorld(...) 在位置上创建枪械掉落物
12 GetEquipItemGridID(...) 获取装备道具装备栏网格id
13 ModifyGunAttribute(...) 修改枪械道具实例的属性
14 GetGunAttribute(...) 获取枪械道具实例的属性
15 GetGunPrefabAttribute(...) 获取枪预制的属性
16 GetItemIdByInstanceId(...) 根据道具实例ID获取道具ID
17 AddSubModelPart(...) 给道具实例添加一个模型子部件
18 DeleteSubModelPart(...) 删除一个道具实例的模型子部件
19 ReplaceSubModelPart(...) 修改一个道具实例的模型子部件
20 SetStringCustomData(...) 设置道具实例的自定义数据string
21 SetBoolCustomData(...) 设置道具实例的自定义数据bool
22 SetNumberCustomData(...) 设置道具实例的自定义数据number
23 SetObjCustomData(...) 设置道具实例的自定义数据Object
24 SetArrayCustomData(...) 设置道具实例的自定义数据Array
25 GetStringCustomData(...) 获取道具实例的自定义数据string
26 GetBoolCustomData(...) 获取道具实例的自定义数据bool
27 GetNumberCustomData(...) 获取道具实例的自定义数据number
28 GetObjCustomData(...) 获取道具实例的自定义数据Object
29 GetArrayCustomData(...) 获取道具实例的自定义数据Array
30 GetItemInstFacade(...) 获取具有道具实例ID的道具外观
31 GetGridAttr(...) 获取掉落物或者投掷物的格子属性
32 GetTags(...) 获取道具定义中的标签组
GetItemName
参数及类型:
itemid:number / string 道具ID
返回值及类型:
name:string 道具名称
该方法的其他说明: 获取道具名称
具体使用案例如下:
local itemName = Item:GetItemName(12005)
if itemName then
print("获取物品名称", itemName)
end
RandomItemID
参数及类型: 无
返回值及类型:
num:number 道具ID
该方法的其他说明: 在资源库里随机获取一个道具ID
具体使用案例如下:
local itemID = Item:RandomItemID()
if itemID then
print("随机生成的物品ID", itemID)
end
RandomProjectileID
参数及类型: 无
返回值及类型:
num:number 道具ID
该方法的其他说明: 在资源库里随机获取一个投掷物ID
具体使用案例如下:
local projectileID = Item:RandomProjectileID()
if projectileID then
print("随机生成的投射物ID", projectileID)
end
GetAttr
参数及类型:
itemid:number / string 道具ID
attr:number 属性类型枚举(ItemAttr)ItemAttr
返回值及类型:
num:number 属性值
该方法的其他说明: 获取道具属性
具体使用案例如下:
local itemid = 'r0_7495946400275515402_23048' --自定义道具
local stackmax = Item:GetAttr(itemid, ItemAttr.Stackmax)
if stackmax then
print("获取堆叠最大数量", stackmax)
end
GetItemDesc
参数及类型:
itemid:number / string 道具ID
返回值及类型:
name:string 道具描述
该方法的其他说明: 获取道具描述
具体使用案例如下:
local itemDesc = Item:GetItemDesc(12005)
if itemDesc then
print("获取物品描述", itemDesc)
end
GetCustomGunAttr
参数及类型:
itemid:number / string 道具ID
attrname:string 属性名(GunAttr)GunAttr
返回值及类型:
obj:any属性值
该方法的其他说明: 获取自定义枪械的属性(仅自定义枪械有效)
具体使用案例如下:
local obj = Item:GetCustomGunAttr(itemid, attrname)
GetCraftIDNum
参数及类型:
itemid:number / string 道具ID
返回值及类型:
num:number 配方数量
该方法的其他说明: 获取道具配方的数量
具体使用案例如下:
--能够合成木板的数量
local craftIDNum = Item:GetCraftIDNum(206)
if craftIDNum then
print("获取物品可合成的配方数量", craftIDNum)
end
GetCraftMaterialAndNum
参数及类型:
itemid:number / string 道具ID
返回值及类型:
obj:table 原料信息{{itemid
num}}
该方法的其他说明: 获取道具的配方材料和数量
具体使用案例如下:
local resultid = 206
--获取制作物品的材料和数量
local num = Item:GetCraftIDNum(resultid)
if num then
for i = 1, num do
local tab = Item:GetCraftMaterialAndNum(resultid,i)
if tab then
print("获取制作物品的材料和数量", tab)
for k,v in pairs(tab) do
print("材料索引", k, "材料ID", v[1], "数量", v[2])
end
end
end
end
GetFacade
参数及类型:
itemid:number / string 道具类型ID或道具预制ID
返回值及类型:
name:string 道具类型外观
该方法的其他说明: 获取道具类型外观
具体使用案例如下:
-- 官方默认道具示例
local facade1 = Item:GetFacade(12002)
if facade1 == nil then
print("facade1 is nil")
end
-- 自定义道具示例
local facade2 = Item:GetFacade('r2_7495945919239178250_23010')
if facade2 == nil then
print("facade2 is nil")
end
CreateItemInstInWorld
参数及类型:
itemid:number / string 道具ID
pos:table 掉落物位置{x,y,z}
worldId:number 星球ID(默认当前主机所在星球)
返回值及类型:
id:number / nil 对象ID
该方法的其他说明: 在位置上创建道具实例的掉落物
具体使用案例如下:
local id = Item:CreateItemInstInWorld(itemid, pos, worldId)
CreateGunInWorld
参数及类型:
itemid:number / string 道具ID
pos:table 掉落物位置{x,y,z}
worldId:number 星球ID(默认当前主机所在星球)
返回值及类型:
id:number / nil 对象ID
该方法的其他说明: 在位置上创建枪械道具实例的掉落物
具体使用案例如下:
local id = Item:CreateGunInWorld(itemid, pos, worldId)
GetEquipItemGridID
参数及类型:
itemid:number / string 装备道具ID
返回值及类型:
num:number 装备栏位置 BackpackBeginIndex.Equip + (EquipSlotType)
该方法的其他说明: 根据装备道具ID计算其对应的装备栏网格索引
具体使用案例如下:
-- 官方默认道具示例
local grid = Item:GetEquipItemGridID(12201)
if grid == (EquipSlotType.Head + BackpackBeginIndex.Equip ) then
print("皮头盔的装备栏是 8000")
end
ModifyGunAttribute
参数及类型:
instId:string 道具实例id
key:string 属性的枚举(GunAttr)GunAttr
value:number / string / bool 值
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 通过道具实例id修改枪械属性(key 指定);value 类型需与该属性枚举匹配
具体使用案例如下:
local bool = Item:ModifyGunAttribute(instId, key, value)
GetGunAttribute
参数及类型:
instId:string 道具实例id
key:string 属性的枚举(GunAttr)GunAttr
返回值及类型:
value:number / string / bool / nil 值
该方法的其他说明: 读取枪械道具实例属性(key 指定)
具体使用案例如下:
local value = Item:GetGunAttribute(instId, key)
GetGunPrefabAttribute
参数及类型:
instId:string 道具实例id
key:string 属性的枚举(GunAttr)GunAttr
返回值及类型:
value:number / string / bool / nil 值
该方法的其他说明: 读取枪预制属性(key 指定)
具体使用案例如下:
local value = Item:GetGunPrefabAttribute(instId, key)
GetItemIdByInstanceId
参数及类型:
instId:string 道具实例id
返回值及类型:
itemId:number / string / nil 道具id
该方法的其他说明: 根据道具实例id获取道具ID;若存在自定义资源则使用自定义资源ID,否则使用原道具id
具体使用案例如下:
local itemId = Item:GetItemIdByInstanceId(instId)
AddSubModelPart
参数及类型:
instId:string 道具实例id
partName:string 子部件名字
boneName:string 挂点
modelStr:string 模型
offset:table 位置偏移
rot:table 旋转
scale:table 缩放
返回值及类型:
partName:string / nil 部件名字
该方法的其他说明: 给道具实例添加模型子部件;返回最终的部件名字;若界面依赖实例模型,需约0.5秒等待同步后再刷新
具体使用案例如下:
local ret = Item:AddSubModelPart(instId, "gun1", "muzzle", "newModel_11000005", {x = 0, y = 0, z = 0}, {x = 0, y = 0, z = 0}, {x = 1, y = 1, z = 1})
if ret then
print("添加子部件成功",ret)
end
DeleteSubModelPart
参数及类型:
instId:string 道具实例id
partName:string 子部件名字
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 删除道具实例的指定模型子部件
具体使用案例如下:
local bool = Item:DeleteSubModelPart(instId, partName)
ReplaceSubModelPart
参数及类型:
instId:string 道具实例id
partName:string 子部件名字
boneName:string 挂点
modelStr:string 模型
offset:table 位置偏移
rot:table 旋转
scale:table 缩放
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 修改/替换道具实例的指定模型子部件(通过子部件名、挂点等信息)
具体使用案例如下:
local bool = Item:ReplaceSubModelPart(instId, partName, boneName, modelStr, offset, rot, scale)
SetStringCustomData
参数及类型:
instId:string 道具实例id
key:string 键
value:string 值
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 写入/覆盖道具实例自定义字符串字段
具体使用案例如下:
local bool = Item:SetStringCustomData(instId, key, value)
SetBoolCustomData
参数及类型:
instId:string 道具实例id
key:string 键
value:bool值
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 写入/覆盖道具实例自定义布尔字段
具体使用案例如下:
local bool = Item:SetBoolCustomData(instId, key, value)
SetNumberCustomData
参数及类型:
instId:string 道具实例id
key:string 键
value:number 值
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 写入/覆盖道具实例自定义数值字段
具体使用案例如下:
local bool = Item:SetNumberCustomData(instId, key, value)
SetObjCustomData
参数及类型:
instId:string 道具实例id
key:string 键
value:table 值
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 写入/覆盖道具实例自定义对象字段(会被序列化保存)
具体使用案例如下:
local bool = Item:SetObjCustomData(instId, key, value)
SetArrayCustomData
参数及类型:
instId:string 道具实例id
key:string 键
value:table 数组
返回值及类型:
bool:boolean 是否成功
该方法的其他说明: 写入/覆盖道具实例自定义数组字段(会被序列化保存)
具体使用案例如下:
local bool = Item:SetArrayCustomData(instId, key, value)
GetStringCustomData
参数及类型:
instId:string 道具实例id
key:string 键
返回值及类型:
value:string / nil 值
该方法的其他说明: 读取道具实例自定义字符串字段
具体使用案例如下:
local value = Item:GetStringCustomData(instId, key)
GetBoolCustomData
参数及类型:
instId:string 道具实例id
key:string 键
返回值及类型:
value:bool / nil 值
该方法的其他说明: 读取道具实例自定义布尔字段
具体使用案例如下:
local value = Item:GetBoolCustomData(instId, key)
GetNumberCustomData
参数及类型:
instId:string 道具实例id
key:string 键
返回值及类型:
value:number / nil 值
该方法的其他说明: 读取道具实例自定义数值字段
具体使用案例如下:
local value = Item:GetNumberCustomData(instId, key)
GetObjCustomData
参数及类型:
instId:string 道具实例id
key:string 键
返回值及类型:
value:table / nil 值
该方法的其他说明: 读取道具实例自定义对象字段
具体使用案例如下:
local value = Item:GetObjCustomData(instId, key)
GetArrayCustomData
参数及类型:
instId:string 道具实例id
key:string 键
返回值及类型:
value:table / nil 值
该方法的其他说明: 读取道具实例自定义数组字段
具体使用案例如下:
local value = Item:GetArrayCustomData(instId, key)
GetItemInstFacade
参数及类型:
instId:string 道具实例ID
返回值及类型:
name:string / nil 道具实例外观
该方法的其他说明: 根据道具实例id生成道具外观名
具体使用案例如下:
local facade = Item:GetItemInstFacade(instId)
if facade then
print("获取物品实例外观", facade)
end
GetGridAttr
参数及类型:
objid:number 对象ID
attr:number 属性枚举(GridAttr)GridAttr
返回值及类型:
num:number / nil 属性值
该方法的其他说明: 读取掉落物/投掷物的指定格子属性
具体使用案例如下:
local num = Item:GetGridAttr(objId,GridAttr.ItemNum)
print("获取格子属性", num)
GetTags
参数及类型:
itemid:number / string 道具定义ID或道具预制ID
返回值及类型:
obj:table / nil 标签组
该方法的其他说明: 根据道具定义ID或道具预制ID获取标签组
具体使用案例如下:
local itemid = "r2_7569576541013954344_36524" --自定义道具
local tags = Item:GetTags(itemid)
if tags then
print("道具定义中的标签:", tags)
end
剧情动画模块管理接口 Timeline
具体函数名及描述如下:
序号 函数名 函数描述
1 PlayForAll(...) 对所有玩家播放Timeline
2 PlayForPlayer(...) 对指定玩家播放Timeline
3 Pause(...) 暂停指定玩家的Timeline播放
4 Resume(...) 恢复指定玩家的Timeline播放
5 SkipForPlayer(...) 跳过指定玩家当前正在播放的Timeline
6 GetPlayerState(...) 获取玩家Timeline播放状态
7 IsAllFinished(...) 检查所有玩家是否都已播放完成指定Timeline
PlayForAll
参数及类型:
timelineId:string Timeline 资源id
refKind:number 播放参考 0使用默认/1指定位置与旋转/2指定玩家
anchorPos:table 锚点位置cm(kind=1/2)
anchorYaw:number 锚点朝向度(kind=1/2)
返回值及类型:
code:number 返回(参考系错位为负 TIMELINE_PLAY_REJECT_*,否则 0)
该方法的主要作用: 对所有玩家播放Timeline
具体使用案例如下:
local code = Timeline:PlayForAll(timelineId, refKind, anchorPos, anchorYaw)
PlayForPlayer
参数及类型:
uin:number 玩家UIN
timelineId:string Timeline 资源id
reverse:boolean 是否反向播放
playToEnd:boolean 是否播放到结尾
refKind:number 播放参考 0使用默认/1指定位置与旋转/2指定玩家
anchorPos:table 锚点位置cm(kind=1/2)
anchorYaw:number 锚点朝向度(kind=1/2)
返回值及类型:
code:number 返回(参考系错位为负 TIMELINE_PLAY_REJECT_*,否则 0)
该方法的主要作用: 对指定玩家播放Timeline
具体使用案例如下:
local code = Timeline:PlayForPlayer(uin, timelineId, reverse, playToEnd, refKind, anchorPos, anchorYaw)
Pause
参数及类型:
uin:number 玩家UIN
timelineId:string Timeline 资源id
返回值及类型:
code:boolean 成功(true)
该方法的主要作用: 暂停指定玩家的Timeline播放
具体使用案例如下:
local code = Timeline:Pause(uin, timelineId)
Resume
参数及类型:
uin:number 玩家UIN
timelineId:string Timeline 资源id
返回值及类型:
code:boolean 成功(true)
该方法的主要作用: 恢复指定玩家的Timeline播放
具体使用案例如下:
local code = Timeline:Resume(uin, timelineId)
SkipForPlayer
参数及类型:
uin:number 玩家UIN
返回值及类型:
code:boolean 成功(true)
该方法的主要作用: 跳过指定玩家当前正在播放的Timeline
具体使用案例如下:
local code = Timeline:SkipForPlayer(uin)
GetPlayerState
参数及类型:
uin:number 玩家UIN
timelineId:string Timeline 资源id
返回值及类型:
state:number 播放状态(0空闲 1播放中 2暂停)
该方法的主要作用: 获取玩家Timeline播放状态
具体使用案例如下:
local state = Timeline:GetPlayerState(uin, timelineId)
IsAllFinished
参数及类型:
timelineId:string Timeline 资源 id
返回值及类型:
code:boolean 全部完成(true)
该方法的主要作用: 检查所有玩家是否都已播放完成指定Timeline
具体使用案例如下:
local code = Timeline:IsAllFinished(timelineId)
全局函数
具体函数名及描述如下:
序号 函数名 函数描述
1 json.decode(...) json格式字符串转换table数据
2 json.encode(...) table数据转换json格式字符串
3 GetWorld() 获取当前世界对象
4 print(...) 打印信息
5 printError(...) 打印错误信息
6 Class(...) 定义类
7 Instance(...) 创建类实例
8 GetInst() 获取类单例
json.decode
参数及类型:
data:stringjson字符串
返回值及类型:
ret:table解码后的table
该方法的主要作用: 解码json字符串
local tab = json.decode('{"a":1,"b":2}')
json.encode
参数及类型:
data:tabletable数据
返回值及类型:
ret:stringjson格式字符串
该方法的主要作用: 编码table数据
local jsonstr = json.encode({a=1,b=2})
GetWorld
参数及类型:
无
返回值及类型:
ret:table世界对象
该方法的主要作用: 获取当前世界对象
local world = GetWorld()
print
参数及类型:
...:number 或者 string 或者 boolean: 只能传这三种类型数据的不定参数
返回值及类型:
无
该方法的主要作用: 打印信息
print("hello ",1,true)
printError
参数及类型:
...:number 或者 string 或者 boolean: 只能传这三种类型数据的不定参数
返回值及类型:
无
该方法的主要作用: 打印错误信息
printError("hello ",1,true)
Class
参数及类型:
classname:string类名
super:string table 父类名 或者 父类原表
issingle:boolean是否单例
返回值及类型:
ret:table对象定义
该方法的主要作用: 定义类对象
具体使用案例如下:
local classdef = Class("Abc", {}, true)
Instance
参数及类型:
classname:string类名
返回值及类型:
ret:table对象实例
该方法的主要作用: 创建类实例
local instance = Instance("Abc")
if not instance then
printError("创建实例失败 请检查类定义issingle 参数是否是false")
end
GetInst
参数及类型:
classname:string类名
返回值及类型:
ret:table对象实例
该方法的主要作用: 获取类单例
local instance = GetInst("Abc")
if not instance then
printError("获取单例失败 请检查类定义 issingle 参数是否是false")
end
内置枚举库
可在代码里直接调用无需新建对象,调用形式如下:
local errorCode = ErrorCode.OK
local worldType = WorldType.OWTYPE_GAMEMAKER
Lua原生数据及其他全局数据的用法描述如下
lua_type
数据名称 用法描述
nil 表示一个无效值(在条件表达式中相当于false)
boolean 布尔值,包含两个值:false和true
number 实数,表示双精度类型的实浮点数,也可以是整数
string 字符串,由一对单引号或双引号来表示
table Lua的一种数据结构,可用来创建不同的数据类型,如:数组、字典等
function 由 C 或 Lua 编写的函数
游戏模式
名称 用法描述
WorldType.Single 单人模式
WorldType.Create 多人创造模式
WorldType.Extremity 极限模式
WorldType.CreateToRungame 由创造模式转的生存
WorldType.Gamemaker 自制玩法的编辑模式
WorldType.GamemakerRun 自制玩法的运行模式
WorldType.Freemode 冒险模式之自由模式
WorldType.Record 录像模式
生物类型
名称 用法描述
MobType.Hostile 怪物
MobType.Passive 动物
MobType.Rare 稀有动物
MobType.Water 水生物
MobType.Fly 飞行生物
MobType.Trixenie 三栖生物
游戏地形
名称 用法描述
TerrainType.Flat 平坦地形
TerrainType.Normal 随机地形
自定义视角编辑状态
名称 用法描述
CameraEditState.Null 空
CameraEditState.Edit 编辑
CameraEditState.Test 测试
装备部位类型
名称 用法描述
EquipSlotType.Head 头
EquipSlotType.Breast 身体
EquipSlotType.Legging 腿
EquipSlotType.Shoe 脚
EquipSlotType.Pifeng 披风
EquipSlotType.Weapon 武器
EquipSlotType.Custom1 自定义装备位1
EquipSlotType.Custom2 自定义装备位2
EquipSlotType.Custom3 自定义装备位3
EquipSlotType.MaxSlots 最大装备栏(用于判断有效性)
游戏战斗结果
名称 用法描述
TeamResults.None 胜负未定
TeamResults.Win 胜利
TeamResults.Lose 失败
TeamResults.Dogfall 平局
玩家背包类型
名称 用法描述
BackpackType.Shortcut 快捷栏
BackpackType.Inventory 存储栏
BackpackType.Equip 装备栏
BackpackType.Extend 扩展背包
背包起始索引
名称 用法描述
BackpackBeginIndex.Shortcut 快捷栏
BackpackBeginIndex.Inventory 存储栏
BackpackBeginIndex.Equip 装备栏
BackpackBeginIndex.ExtBackpack 扩展背包
朝向
名称 用法描述
FaceDir.None 未指定
FaceDir.NegX x反方向, 西
FaceDir.PosX x正方向, 东
FaceDir.NegZ z反方向, 南
FaceDir.PosZ z正方向, 北
FaceDir.NegY y反方向, 下
FaceDir.PosY y正方向, 上
朝向类型
名称 用法描述
FaceType.Yaw 面朝方向
FaceType.Pitch 面仰角
生物属性枚举
名称 用法描述
CreatureAttr.MaxHp 最大生命值
CreatureAttr.CurHp 当前生命值
CreatureAttr.HpRecover 生命恢复
CreatureAttr.MaxHunger 最大饥饿值
CreatureAttr.CurHunger 当前饥饿值
CreatureAttr.CurOxygen 当前氧气值
CreatureAttr.WalkSpeed 移动速度
CreatureAttr.SwinSpeed 游泳速度
CreatureAttr.JumpPower 跳跃力
CreatureAttr.Dodge 闪避率
CreatureAttr.AtkMelee 近战攻击
CreatureAttr.AtkRemote 远程攻击
CreatureAttr.DefMelee 近战防御
CreatureAttr.DefRemote 远程防御
CreatureAttr.Dimension 模型大小
CreatureAttr.Level 等级
CreatureAttr.DefChaos 混乱防御
CreatureAttr.PackSize 背包空间
CreatureAttr.ViewDistance 视野距离
CreatureAttr.BodyLerpSpeed 转身速度
CreatureAttr.AtkPhysical 物理攻击
CreatureAttr.AtkMagic 元素攻击
CreatureAttr.DefPhysical 物理防御
CreatureAttr.DefMagic 元素防御
CreatureAttr.ExtraHp 临时生命值
CreatureAttr.Toughness 韧性值
CreatureAttr.FlySpeed 飞行速度
CreatureAttr.ViewDis 视野范围
CreatureAttr.AttackDis 攻击距离
CreatureAttr.Atk 攻击力
CreatureAttr.EnableMove 可移动
CreatureAttr.EnableAttack 可攻击
CreatureAttr.EnableBeattacked 可被攻击
CreatureAttr.EnableBekilled 可被杀死
CreatureAttr.EnablePickup 可拾取道具
CreatureAttr.EnableDeathdropitem 死亡掉落
生物/玩家
名称 用法描述
RoleAttr.MaxHp 最大生命值
RoleAttr.CurHp 当前生命值
RoleAttr.HpRecover 生命恢复
RoleAttr.MaxHunger 饥饿度
RoleAttr.CurHunger 饥饿度
RoleAttr.CurOxygen 当前氧气值
RoleAttr.WalkSpeed 移动速度
RoleAttr.RunSpeed 奔跑速度
RoleAttr.SwinSpeed 游泳速度
RoleAttr.JumpPower 跳跃力
RoleAttr.Gravity 重力值
RoleAttr.PunchArmor 近战防御
RoleAttr.RangeArmor 远程防御
RoleAttr.LevelExp 星星经验
RoleAttr.StarNum 星星数量
RoleAttr.CurStrength 当前体力值
RoleAttr.MaxStrength 当前最大体力值
RoleAttr.FlySpeed 飞行速度
RoleAttr.AttackDis 攻击距离
RoleAttr.ViewDis 视野距离
RoleAttr.Atk 攻击力
道具设置枚举
名称 用法描述
ItemAbility.Throw 道具不可丢弃
ItemAbility.Drop 道具不可掉落
生物行为枚举
名称 用法描述
CreatureMotion.Idle 空闲
CreatureMotion.Standby 待机
CreatureMotion.Stroll 闲逛
CreatureMotion.AtkMelee 近战攻击
CreatureMotion.AtkRemote 远程攻击
CreatureMotion.Follow 跟随
CreatureMotion.Swim 游泳
CreatureMotion.RunAway 逃跑
CreatureMotion.SelfBomb 自爆
CreatureMotion.Beattracted 被吸引
CreatureMotion.Copulation 交配
玩家行为枚举
名称 用法描述
PlayerMotion.Static 静止
PlayerMotion.Walk 行走
PlayerMotion.Run 奔跑
PlayerMotion.Jump 跳跃
PlayerMotion.JumpTwice 二段跳
PlayerMotion.Sneak 潜行
PlayerMotion.FallGround 落地
PlayerMotion.Swim 游泳
角色行为枚举
名称 用法描述
RoleMotion.Stand 站立
RoleMotion.Walk 行走
RoleMotion.Run 奔跑
RoleMotion.Jump 跳跃
RoleMotion.Sneak 潜行
RoleMotion.FallGround 落地
RoleMotion.Swim 游泳
伤害类型枚举
名称 用法描述
HurtType.All 所有伤害(只设置免疫伤害接口有效)
HurtType.Melee 近战伤害 attack_punch
HurtType.Remote 远程伤害 attack_range
HurtType.Bomb 爆炸伤害 attack_explode
HurtType.Burning 燃烧伤害 attack_fire
HurtType.Toxin 毒素伤害 attack_poison
HurtType.Wither 凋零伤害 attack_wither
HurtType.Flash 电元素伤害 attack_flash
HurtType.Sun 日晒 attack_sun
HurtType.Fall 跌落伤害 attack_falling
HurtType.Anvil 被砸中伤害 attack_anvil
HurtType.Cactus 仙人掌伤害 attack_cactus
HurtType.Asphyxia 窒息伤害 attack_wall
HurtType.Drown 溺水伤害 attack_drown
HurtType.Suffocate 水下生物在空气中窒息伤害 attack_suffocate
HurtType.Antiinjury 反伤 attack_antiinjury
HurtType.Laser 被激光伤害 attack_block_laser
HurtType.Ice 冰元素伤害 attack_flash
HurtType.Fixed 固定伤害 attack_fixed
队伍属性枚举
名称 用法描述
TeamAttr.PlayerNum 玩家数量
TeamAttr.Score 分数
方块属性枚举
名称 用法描述
BlockAttr.ExplodeResistance 爆炸抗性
BlockAttr.Hardness 硬度
BlockAttr.Glissade 滑行惯性
BlockAttr.BurningSpeed 燃烧速度
BlockAttr.BurningProbability 燃烧几率
BlockAttr.Lightness 亮度
方块权限
名称 用法描述
BlockLimits.EnableDestroyed 可破坏
BlockLimits.EnableBeoperated 可操作
BlockLimits.EnableBepushed 可被推动
BlockLimits.EnableDropItem 可掉落道具
BlockLimits.BepushedDropItem 被推动掉落
方块状态
名称 用法描述
BlockStatus.Active 活跃(被激活)
BlockStatus.Inactive 不活跃(未被激活)
天气状态枚举,局部天气
名称 用法描述
GroupWeatherType.ShineAndRain 晴雨交替
GroupWeatherType.Shine 晴天
GroupWeatherType.Rain 雨天
GroupWeatherType.Thunder 雷暴
GroupWeatherType.Bad 恶劣天气
GroupWeatherType.Snow 雪天
GroupWeatherType.Sandduststorm 沙尘暴
GroupWeatherType.Tempest 暴风雨
GroupWeatherType.Blizzard 暴风雪
GroupWeatherType.MeteorShower 流星雨
GroupWeatherType.Aurora 极光天
GroupWeatherType.VoidFog 虚空浓雾
地形组枚举值
名称 用法描述
WeatherGroup.Global 全局对象
WeatherGroup.Common 常见组
WeatherGroup.Ocean 海洋组
WeatherGroup.Desert 沙漠组
WeatherGroup.Frigidzone 普通寒带组
WeatherGroup.Coldzone 高峰寒带组
WeatherGroup.Volcano 火山组
WeatherGroup.Nunja 湿地组
WeatherGroup.Plain 平坦组
WeatherGroup.AirIsland 空岛组
视口方向
名称 用法描述
ViewPortType.Main 主视角
ViewPortType.Back 背视角
ViewPortType.Front 正视角
ViewPortType.Back2 背视角2
ViewPortType.Top 俯视角
ViewPortType.Custom 自定义视角
变量类型
名称 用法描述
VarType.Pos 位置
VarType.Areains 区域
VarType.Number 数值
VarType.String 字符串
VarType.Boolean 布尔值
VarType.Player 玩家
VarType.PlayerGroup 玩家组
VarType.BlockType 方块类型
VarType.ItemType 道具类型
VarType.Creature 生物
VarType.CreatureType 生物类型
VarType.CreatureGroup 生物组
VarType.Timer 定时器
VarType.EffectType 特效类型
VarType.PosGroup 位置组
VarType.AreaGroup 区域组
VarType.NumberGroup 数值组
VarType.StringGroup 字符串组
VarType.BooleanGroup 布尔值组
VarType.BlockTypeGroup 方块类型组
VarType.ItemTypeGroup 道具类型组
VarType.CreatureTypeGroup 生物类型组
VarType.TimerGroup 计时器组
VarType.EffectTypeGroup 特效类型组
VarType.SortedData 有序列表
VarType.ListData 无需列表
VarType.Map kv map表
VarType.Table 二维表
VarType.Blueprint 蓝图
VarType.Object 对象
VarType.ObjectGroup 对象组
VarType.Projectile 投射物
VarType.ProjectileGroup 投射物组
VarType.DropItem 掉落物
VarType.DropItemGroup 掉落物组
VarType.Element 元件
VarType.ElementGroup 元件组
VarType.Texture 纹理
VarType.TextureGroup 纹理组
VarType.Role 角色
VarType.RoleGroup 角色组
VarType.BuffType buff类型
VarType.BuffTypeGroup buff类型组
VarType.Sound 声音
VarType.SoundGroup 声音组
VarType.Model 模型
VarType.ModelGroup 模型组
VarType.Entity 实体
VarType.EntityGroup 实体组
VarType.EntityType 实体类型
VarType.EntityTypeGroup 实体类型组
强制打开工作台枚举
名称 用法描述
WorkeStage.Craft 工具箱
WorkeStage.Repair 修理台
WorkeStage.Enchant 附魔台
图文信息枚举
名称 用法描述
GraphicsType.Hornbook 文字板
GraphicsType.Suspendbook 漂浮文字
GraphicsType.Progress 进度条
GraphicsType.ArrowPos 箭头 指向位置
GraphicsType.ArrowActor 箭头 指向生物
GraphicsType.LinePos 线 指向位置
GraphicsType.LineActor 线 指向生物
GraphicsType.SurfacePos 面 指向界面
GraphicsType.SurfaceActor 面 指向生物
GraphicsType.Image 图片
GraphicsType.NavPathPos 寻路引导线 指向位置
GraphicsType.Brush 笔刷
GraphicsType.Bubble 气泡
排序方式
名称 用法描述
SortType.Up 升序,
SortType.Down 降序,
移动方式
名称 用法描述
MoveType.Walking 行走,
MoveType.Flying 飞行,
MoveType.Swimming 游泳,
MoveType.Auto 自动调整
显示板视频播放模式
名称 用法描述
ViedoPlayMode.Repeat 循环播放
ViedoPlayMode.Once 单次播放
时间值枚举
名称 用法描述
EventDate.Year 年
EventDate.Month 月
EventDate.Day 日
EventDate.Hour 时
EventDate.Minute 分
EventDate.Second 秒
EventDate.Timestamp 时间戳
EventDate.Dayofweek 星期几
道具属性
名称 用法描述
ItemAttr.Attack 攻击力
ItemAttr.Stackmax 叠加数
ItemAttr.ShortDefense 近战防御
ItemAttr.LongDefense 远程防御
ItemAttr.ExplodeDefense 爆炸防御
ItemAttr.FireDefense 燃烧防御
ItemAttr.PoisonDefense 毒素防御
ItemAttr.WitherDefense 混乱防御
ItemAttr.Duration 耐久度
ItemAttr.FireInterval 射击间隔
ItemAttr.Magazines 弹夹量
ItemAttr.Quality 品质
ItemAttr.ItemType 道具类型
掉落物掉落方式
名称 用法描述
DropMode.DiscardItem 丢弃道具
DropMode.DestroyBox 箱子被破坏掉落
DropMode.DefeatMob 生物被击败掉落
DropMode.DestroyBlock 方块被破坏掉落
DropMode.SpawnItem 触发器创建
DropMode.ChangePlayMode 掉落物对象转玩法创建
动作播放方式
名称 用法描述
AnimMode.Loop 循环播放
AnimMode.Once 播放一次
AnimMode.OnceStop 播放一次完毕,停在末尾
AnimMode.Default 表格默认值播放
线性变换
名称 用法描述
Easing.None 无动画
Easing.Linear 直线变换
Easing.QuadIn 平方曲线1渐入
Easing.QuadOut 平方曲线2渐出
Easing.QuadInOut 平方曲线3进出
Easing.ExpoIn 指数曲线1渐入
Easing.ExpoOut 指数曲线2渐出
Easing.ExpoInOut 指数曲线3进出
Easing.CircIn 圆曲线1渐入
Easing.CircOut 圆曲线2渐出
Easing.CircInOut 圆曲线3进出
Easing.ElasticIn 弹簧曲线1渐入
Easing.ElasticOut 弹簧曲线2渐出
Easing.ElasticInOut 弹簧曲线3进出
Easing.BackIn 回退曲线1渐入
Easing.BackOut 回退曲线2渐出
Easing.BackInOut 回退曲线3进出
Easing.BounceIn 弹跳曲线1渐入
Easing.BounceOut 弹跳曲线1渐出
Easing.BounceInOut 弹跳曲线1进出
天空盒贴图
名称 用法描述
SkyboxMap.Sky 天空贴图
SkyboxMap.Sun 太阳贴图
SkyboxMap.Moon 月亮贴图
天空盒颜色
名称 用法描述
SkyboxColor.Top 天空顶部颜色
SkyboxColor.Middle 天空腰部颜色
SkyboxColor.Bottom 天空底部颜色
SkyboxColor.Light 天空光照颜色
SkyboxColor.Env 环境光颜色
SkyboxColor.Sun 太阳颜色
SkyboxColor.Moon 月亮颜色
SkyboxColor.Cloud 云颜色
SkyboxColor.Fog 雾颜色
SkyboxColor.Water 水颜色
SkyboxColor.DirectionalLight 太阳光颜色
SkyboxColor.AmbientLight 环境光颜色
天空盒参数
名称 用法描述
SkyboxAttr.SunScale 太阳大小
SkyboxAttr.MoonScale 月亮大小
SkyboxAttr.StarDensity 星星密度
SkyboxAttr.CloudSpeed 云的运动速度
SkyboxAttr.CloudDensity 云的密度
SkyboxAttr.CloudHigh 云的高度
SkyboxAttr.FogreMinDis 雾的最近距离
SkyboxAttr.FogreMaxDis 雾的最远距离
SkyboxAttr.Template 模板
SkyboxAttr.WaterTransparency 水透明度
SkyboxAttr.WaterMirrorness 水镜面度
SkyboxAttr.WindStrength 风速
SkyboxAttr.DirectionalLightIntensity 太阳光强度
SkyboxAttr.AmbientLightIntensity 环境光强度
天空盒参数
名称 用法描述
SkyboxAttrNoTime.Metallic 整体金属度
SkyboxAttrNoTime.Roughness 整体粗糙度
天空盒环境粒子参数
名称 用法描述
SkyboxParticle.Strength 强度
SkyboxParticle.Range 范围
SkyboxParticle.Speed 速度
SkyboxParticle.Randomness 运动不规则度
天空盒滤镜参数
名称 用法描述
SkyboxFilter.Contrast 对比度
SkyboxFilter.Saturation 饱和度
SkyboxFilter.Flood 泛光强度(Bloom强度)
SkyboxFilter.Exposure 曝光强度
SkyboxFilter.Volumelight 体积光强度
SkyboxFilter.Gamma 伽马强度
SkyboxFilter.Dof 景深强度-暂时没用到
SkyboxFilter.Color 滤镜颜色
SkyboxFilter.Lut 色彩校正
SkyboxFilter.Template 滤镜模板
SkyboxFilter.Bloomthreshold Bloom阀值
天空盒开关
名称 用法描述
SkyboxSwitch.Fogenable 雾开关
摄像机属性
名称 用法描述
CameraModel.MoveFollow 跟随角色移动
CameraModel.RotateFollow 跟随角色旋转
CameraModel.Autoindent 阻挡后自动缩进
CameraModel.RelativeRotate 相对人物旋转
CameraModel.RoleTranslucent 角色半透
摄像机旋转模式
名称 用法描述
CameraRotate.AllDir 全方向
CameraRotate.OnlyYaw 仅左右
CameraRotate.OnlyPitch 仅上下
CameraRotate.NoTurn 无法转动
绝对阵营
名称 用法描述
AbsoluteCampType.Noteam 无队伍
AbsoluteCampType.Team1 队伍1
AbsoluteCampType.Team2 队伍2
AbsoluteCampType.Team3 队伍3
AbsoluteCampType.Team4 队伍4
AbsoluteCampType.Team5 队伍5
AbsoluteCampType.Team6 队伍6
AbsoluteCampType.TeamNpc1 绝对阵营-npc队伍1
AbsoluteCampType.TeamNpc2 绝对阵营-npc队伍2
AbsoluteCampType.TeamNpc3 绝对阵营-npc队伍3
AbsoluteCampType.Enemy 中立敌对
AbsoluteCampType.Passive 中立被动
相对阵营
名称 用法描述
RelativeCampType.Friendly 友方
RelativeCampType.Enemy 敌方
RelativeCampType.Neutral 中立
RelativeCampType.Any 任意
游戏内弹窗界面类型
名称 用法描述
InnerPopUpview.CollectMaps 收藏地图界面
InnerPopUpview.EvaluateMaps 评价地图界面
InnerPopUpview.InviteFriend 邀请好友界面
InnerPopUpview.StorageBox 储物箱界面
InnerPopUpview.ItemTips 道具提示界面
InnerPopUpview.BuffStatus 状态界面
InnerPopUpview.Specialty 特长界面
InnerPopUpview.ItemProcessing 道具加工界面
InnerPopUpview.BackPackTask 背包任务界面
InnerPopUpview.BackPackEra 背包科技界面
InnerPopUpview.BackPackRole 背包角色界面
InnerPopUpview.AnimView 动作列表界面
InnerPopUpview.MiniMap 小地图界面
InnerPopUpview.MiniShop 官方商城界面
InnerPopUpview.AdventureHandBook ,冒险手册界面
货币类型
名称 用法描述
MiniCurrency.MiniBean 迷你豆
MiniCurrency.MiniCoin 迷你币
MiniCurrency.MiniPoint 迷你点
开发者商店页面类型
名称 用法描述
MiniShopPage.Item 道具购买
MiniShopPage.Skin 皮肤
MiniShopPage.Convert 兑换
MiniShopPage.Welfare 福利
MiniShopPage.MiniVip 大会员
MiniShopPage.WareHouse 打开仓库
MiniShopPage.CustomCoin 打开自定义货币界面
像素单位
名称 用法描述
PixelUnits.Percentage 百分比
PixelUnits.Value 绝对值
水平偏移
名称 用法描述
HorizontalOffset.Left 居左
HorizontalOffset.Centered 居中
HorizontalOffset.Right 居右
垂直偏移
名称 用法描述
VerticalOffset.Top 居上
VerticalOffset.Centered 居中
VerticalOffset.Bottom 居下
元件类型
名称 用法描述
ElementType.Texture 图片
ElementType.Button 按钮
ElementType.Text 文本
ElementType.InputText 输入框
ElementType.Loader3D 3d装载器
ElementType.SlidingContainer 滑动容器
插件类型
名称 用法描述
CustomModType.Block 方块插件 预制
CustomModType.Monster 生物插件
CustomModType.Item 道具插件
CustomModType.Recipe 配方插件
CustomModType.Furnace 熔炼插件
CustomModType.Status 状态插件
CustomModType.Biome 地形插件
CustomModType.Actor 实体
CustomModType.UI UI
CustomModType.Rule 世界规则
天气类型
名称 用法描述
WeatherType.None 无天气
WeatherType.Sunshine 晴天
WeatherType.Rain 雨天
WeatherType.Sandstorm 沙尘暴
WeatherType.Snow 雪天
WeatherType.UnderWater 暴雨
WeatherType.Volcano 火山
WeatherType.Custom 自定义
按键枚举
名称 用法描述
KeyCode.A 按键A
KeyCode.D 按键D
KeyCode.W 按键W
KeyCode.K 按键K
KeyCode.I 按键I
KeyCode.J 按键J
KeyCode.L 按键L
KeyCode.N 按键N
KeyCode.Q 按键Q
KeyCode.E 按键E
KeyCode.U 按键U
KeyCode.V 按键V
KeyCode.F 按键F
KeyCode.Z 按键Z
KeyCode.Y 按键Y
KeyCode.X 按键X
KeyCode.G 按键G
KeyCode.T 按键T
KeyCode.B 按键B
KeyCode.R 按键R
KeyCode.P 按键P
KeyCode.O 按键O
KeyCode.C 按键C
KeyCode.S 按键S
KeyCode.M 按键M
KeyCode.H 按键H
KeyCode.Space 按键空格
KeyCode.Shift 按键Shift
KeyCode.Number0 按键0
KeyCode.Number1 按键1
KeyCode.Number2 按键2
KeyCode.Number3 按键3
KeyCode.Number4 按键4
KeyCode.Number5 按键5
KeyCode.Number6 按键6
KeyCode.Number7 按键7
KeyCode.Number8 按键8
KeyCode.Number9 按键9
KeyCode.LeftButton 鼠标左键
KeyCode.RightButton 鼠标右键
KeyCode.Ctrl 按键Ctrl
KeyCode.Alt 按键Alt
KeyCode.Up 按键Up
KeyCode.Down 按键Down
KeyCode.Left 按键Left
KeyCode.Right 按键Right
进度图案
名称 用法描述
ProgressImg.Background 进度背景
ProgressImg.Progress 进度值
射线检测返回类型
名称 用法描述
RayDetectType.Block 方块类型
RayDetectType.Player 玩家
RayDetectType.Actor 生物
RayDetectType.ActorType 生物类型
RayDetectType.LiquidBlock 液体方块类型
获取玩家内部控件高度
名称 用法描述
PlayerBodyUIHight.Nick 昵称
PlayerBodyUIHight.Title 称号
PlayerBodyUIHight.EffEct 头部动效
PlayerBodyUIHight.HpBar 血条
UI滑动方向
名称 用法描述
UIScollDir.Horizontal 水平滑动
UIScollDir.Vertical 垂直滑动
UIScollDir.Both 自由滑动
角度朝向
名称 用法描述
TurnFaceDir.Yaw 水平朝向
TurnFaceDir.Pitch 垂直朝向
进度值类型
名称 用法描述
ProgressVal.Min 最小值
ProgressVal.Max 最大值
ProgressVal.Current 当前值
ProgressVal.CurAndMax 当前值和最大值
天空盒时间
名称 用法描述
SkyboxTime.Current 当前时间
SkyboxTime.Time0 天空盒0点
SkyboxTime.Time4 天空盒4点
SkyboxTime.Time6 天空盒6点
SkyboxTime.Time8 天空盒8点
SkyboxTime.Time12 天空盒12点
SkyboxTime.Time16 天空盒16点
SkyboxTime.Time18 天空盒18点
SkyboxTime.Time20 天空盒20点
SkyboxTime.TimeAll 所有时间段
枪械状态
名称 用法描述
GunState.Entry 进入
GunState.Exit 离开
枪械触发事件类型
名称 用法描述
GunAction.Equip 举枪
GunAction.Idle 腰射待机
GunAction.Fire 腰射开火
GunAction.Load 腰射手动上膛
GunAction.Run 持枪冲刺
GunAction.Aim 瞄准待机
GunAction.AimFire 瞄准开火
GunAction.AimLoad 瞄准手动上膛
GunAction.Reload 腰射换弹
GunAction.ReloadEmpty 腰射空仓换弹
GunAction.Inspect 检视
枪械禁用状态类型
名称 用法描述
GunActionBan.Equip 举枪
GunActionBan.Fire 腰射开火
GunActionBan.Load 腰射手动上膛
GunActionBan.Run 持枪冲刺
GunActionBan.Aim 瞄准待机
GunActionBan.AimFire 瞄准开火
GunActionBan.AimLoad 瞄准手动上膛
GunActionBan.Reload 腰射换弹
GunActionBan.ReloadEmpty 腰射空仓换弹
GunActionBan.Inspect 检视
枪械状态
名称 用法描述
GunActionState.Fire 腰射开火
GunActionState.Aim 瞄准待机
GunActionState.Reload 腰射空仓换弹
GunActionState.Inspect 检视
动作总开关
名称 用法描述
Ability.Movement 移动能力总开关
Ability.Walking 行走
Ability.Flying 飞行
Ability.Swimming 游泳
Ability.Sneaking 潜行
Ability.Sprinting 疾跑
Ability.Jumping 跳跃
Ability.Cube 方块能力总开关
Ability.Interaction 交互方块
Ability.Place 摆放方块
Ability.Break 破坏方块
Ability.Item 道具能力总开关
Ability.Use 使用道具
Ability.Pick 拾取道具
Ability.Drop 丢弃道具
Ability.Attack 普通攻击
Ability.CanBePickup 可被举起
Ability.CanUseItemWhenBePickup 被举起时可否使用道具
Ability.EnableBeattacked 可受伤
Ability.EnableBekilled 可被杀死
Ability.EnableDeathdropitem 杀死有掉落物
Ability.EnableSwitchShortcut 可切换快捷栏
Ability.EnableRotatingCamera 可旋转摄像机
Ability.EnableInputRotate 玩家输入旋转(玩家生效)
输出日志等级
名称 用法描述
LogLevel.Print 普通输出
LogLevel.Warn 警告输出
LogLevel.Error 错误输出
错误码
名称 用法描述
ErrorCode.OK 成功
ErrorCode.FAILED 失败
ErrorCode.KV_UPDATE_GET 表安全更新拉取的返回码
ErrorCode.KV_UPDATE_SET 表安全更新设置的返回码
ErrorCode.KV_OP_CD_LMT 表设置CD超限
ErrorCode.KV_OP_QPM_LMT 表设置QPS/QPM超限
ErrorCode.KV_OP_NO_VAL 获取key不存在
ErrorCode.KV_OP_INVALID_VAL 获取key类型不匹配
举起动作类型
名称 用法描述
PickupActionType.Pickup 拾取
PickupActionType.Drop 放下
PickupActionType.Throw 投掷
PickupActionType.Unbind 解绑
区域填充类型
名称 用法描述
AreaFillType.Delete 删除
AreaFillType.Destroy 摧毁
玩家内置UI类型
名称 用法描述
PlayerNameType.Nick 昵称
PlayerNameType.Title 称号
PlayerNameType.EffEct 头部特效
开火类型
名称 用法描述
GunFireType.Auto 全自动
GunFireType.SemiAuto 半自动
GunFireType.Manual 手动
伤害类型
名称 用法描述
GunDamageType.Physics 物理伤害
GunDamageType.Fire 燃烧伤害
GunDamageType.Poison 毒素伤害
GunDamageType.Ice 冰冻伤害
散布形状
名称 用法描述
GunSpreadType.RightUp 右上
GunSpreadType.Circle 圆
GunSpreadType.NoRightDown 无右下
枪械属性
名称 用法描述
GunAttr.BaseDamage 基础伤害
GunAttr.RepelDistance 击退距离
GunAttr.BulletShrapnel 弹片数量
GunAttr.BulletConsume 消耗子弹数
GunAttr.Penetration 穿透率
GunAttr.HeadDamage 头部倍率
GunAttr.BodyDamage 躯干倍率
GunAttr.MaxAmmo 弹容量
GunAttr.Rpm 射速(每分钟子弹数)
GunAttr.ReloadPhase2Time 换弹行为时间
GunAttr.ReloadPhase2TimeEmpty 空仓换弹行为时间
GunAttr.GunLevel 枪械等级 历史遗留的字段,对于游戏本体只用于显示角标
GunAttr.AdsXFunction 瞄准镜准星功能
GunAttr.AdsXScale 瞄准镜准星底图缩放值
GunAttr.ScopeXPic 瞄准镜准星贴图
GunAttr.AdsOffsetX 瞄准偏移值
GunAttr.AdsOffsetY 瞄准偏移值
GunAttr.AdsOffsetZ 瞄准偏移值
GunAttr.FireType 开火类型
GunAttr.DamageType 伤害类型
GunAttr.TouReduce 削刃值
GunAttr.HittedCameraAngle 被击中抬头反馈
GunAttr.Range 射程
GunAttr.DecayStart 衰减起始距离
GunAttr.DecayFinish 衰减结束距离
GunAttr.DecayMin 衰减最小值
GunAttr.DecayLiquid 液体衰减系数
GunAttr.HipSpreadMin 腰射散布最小值
GunAttr.HipSpreadStep 腰射散布步长
GunAttr.HipSpreadMax 腰射散布最大值
GunAttr.HipSpreadType 腰射散布类型
GunAttr.AdsSpreadMin 瞄准散布最小值
GunAttr.AdsSpreadStep 瞄准散布步长
GunAttr.AdsSpreadMax 瞄准散布最大值
GunAttr.AdsSpreadType 瞄准散布类型
GunAttr.MoveSpreadBonus 移动散布倍率
GunAttr.RunSpreadBonus 疾跑散布倍率
GunAttr.ShiftSpreadBonus 潜行散布倍率
GunAttr.ShiftMoveSpreadBonus 潜行移动散布倍率
GunAttr.JumpSpreadBonus 跳跃散布倍率
GunAttr.SpreadStepSpeed 每发增加速度
GunAttr.SpreadResetSpeed 重置速度
GunAttr.SpreadBonusResetSpeed 重置速度
GunAttr.EquipTime 切换枪械行为时间
GunAttr.AdsSwitchTime 瞄准时间
GunAttr.ScopeMagnification 瞄准倍率
GunAttr.ControlValue 操控速度(仅取值)
GunAttr.HipAccValue 腰射射击精度(仅取值)
GunAttr.RecoilValue 后坐力控制(仅取值)
GunAttr.BaseDamageBonus 基础伤害倍率
GunAttr.ReloadTimeBonus 换弹时间倍率
GunAttr.RecoilBonus 后坐力倍率
GunAttr.RecoilPitchBonus 垂直后坐力倍率
GunAttr.RecoilYawBonus 水平后坐力倍率
GunAttr.SpreadBonus 散布倍率
GunAttr.SpreadHipBonus 腰射散布倍率
GunAttr.SpreadAdsBonus 瞄准散布倍率
GunAttr.HipMoveSpeedBonus 腰射移动速度倍率
GunAttr.AdsMoveSpeedBonus 瞄准移动速度倍率
GunAttr.AdsSwitchTimeBonus 瞄准时间倍率
GunAttr.RpmBonus 射速倍率
GunAttr.RangeBonus 射程倍率
GunAttr.BulletId 子弹ID(仅获取预制属性)
怪物刷新地形枚举
名称 用法描述
BiomeType.Sea 迷拉星浅海
BiomeType.GrassLand 迷拉星草原
BiomeType.Desert 迷拉星沙漠
BiomeType.Forest 迷拉星森林
BiomeType.Cliff 迷拉星峭壁
BiomeType.Swamp 迷拉星沼泽
BiomeType.ConiferousForest 迷拉星针叶林
BiomeType.Jungle 迷拉星丛林
BiomeType.IceSheet 迷拉星冰原
BiomeType.FrozenSea 迷拉星冻洋
BiomeType.FrozenRiver 迷拉星冻河
BiomeType.RedSoil 迷拉星红土
BiomeType.RedSoilShore 迷拉星红土海岸
BiomeType.DesertHills 迷拉星沙漠山丘
BiomeType.ForestHills 迷拉星森林山丘
BiomeType.ConiferousForestHills 迷拉星针叶林山丘
BiomeType.IceMountains 迷拉星冰山
BiomeType.JungleHills 迷拉星丛林山丘
BiomeType.River 迷拉星河流
BiomeType.Beach 迷拉星沙滩
BiomeType.CliffEdge 迷拉星峭壁边缘
BiomeType.Earthcore 烈焰星熔岩之地
BiomeType.Airland 迷拉星空岛
BiomeType.Basin 迷拉星盆地
BiomeType.BasinEdge 迷拉星盆地边缘
BiomeType.BasinBamboo 迷拉星竹林盆地
BiomeType.BasinPeach 迷拉星桃树盆地
BiomeType.EyedStarGround 萌眼星地表
BiomeType.EyedStarGroundHills 萌眼星山丘
BiomeType.EyedStarGroundPlain 萌眼星祭坛平原
BiomeType.EyedStarGroundMountain 萌眼星高山
BiomeType.EyedStarGroundHills2 萌眼星山丘2
BiomeType.EyedStarAirlands 萌眼星空岛
BiomeType.EyedStarAirlandsSub1 萌眼星子空岛1
BiomeType.EyedStarAirlandsSub2 萌眼星子空岛2
BiomeType.EyedStarAirlandsSub3 萌眼星子空岛3
BiomeType.EyedStarAirlandsSub4 萌眼星子空岛4
BiomeType.EyedStarAirlandsEdge 萌眼星空岛边缘
BiomeType.RainForest 迷拉星雨林
BiomeType.AirlandGround 迷拉星空岛地上
BiomeType.AirlandAir 迷拉星空岛空中
BiomeType.Volcano 迷拉星火山主峰
BiomeType.VolcanoPlain 迷拉星火山平原
BiomeType.VolcanoMountain 迷拉星火山山脉
BiomeType.VolcanoRiver 迷拉星火山岩浆河
BiomeType.VolcanoCore 迷拉星火山口
BiomeType.DesertOasis 迷拉星沙漠绿洲
BiomeType.DesertLake 迷拉星沙漠湖泊
BiomeType.DeepSea 迷拉星深海
BiomeType.IslandShoreDesert 迷拉星荒岛海岸
BiomeType.IslandLandDesert 迷拉星荒岛岛心
BiomeType.IslandShoreRedsoil 迷拉星红土岛海岸
BiomeType.IslandLandRedsoil 迷拉星红土岛心
BiomeType.IslandShoreReef 迷拉星珊瑚岛海岸
BiomeType.IslandLandReef 迷拉星珊瑚岛岛心
BiomeType.IceSheetConiferousForest 迷拉星覆雪针叶林
BiomeType.IceSheetHighestPeak 迷拉星雪山主峰
BiomeType.IceSheetSecondPeak 迷拉星雪山副峰
BiomeType.IceSheetMountain 迷拉星雪山山脉
BiomeType.IceSheetMountainSide 迷拉星雪山中部
BiomeType.IceSheetPeakPlain 迷拉星雪山底部
BiomeType.IceSheetSecondMountainSide 迷拉星雪山副峰中部
BiomeType.IceSheetFrizebLake 迷拉星雪山冻湖
BiomeType.Canyon 迷拉星峡谷
BiomeType.CanyonEage 迷拉星峡谷边缘
BiomeType.GrassLandArid 迷拉星干旱草原
BiomeType.GrassLandDandelion 迷拉星草原蒲公英花海
BiomeType.GrassLandRapeseed 迷拉星草原油菜花海
BiomeType.ForestLavender 迷拉星森林薰衣草花海
BiomeType.ForestFoxtail 迷拉星森林狗尾草海
BiomeType.ForestChrysanth 迷拉星森林菊花花海
BiomeType.BasinRice 迷拉星盆地稻田
BiomeType.SwampRiverSide 迷拉星沼泽河畔
BiomeType.AirlandShine 迷拉星粉蝶花空岛
BiomeType.CliffPlum 迷拉星三角梅峭壁
BiomeType.IslandLandTulip 迷拉星郁金香岛心
BiomeType.IslandShoreTulip 迷拉星郁金香海岸
BiomeType.City 迷拉星末日城镇
BiomeType.DesertPopulusEuphratica 迷拉星沙漠胡杨林
BiomeType.JungleBlueJacaranda 迷拉星丛林蓝花楹树林
BiomeType.CliffMaple 迷拉星峭壁枫叶林
BiomeType.CliffGinkgo 迷拉星峭壁银杏林
BiomeType.PlainsLake 迷拉星草原湖泊
BiomeType.BasinLake 迷拉星盆地湖泊
BiomeType.ForestLake 迷拉星森林湖泊
BiomeType.ConiferousForestLake 迷拉星针叶林湖泊
BiomeType.RainForestLake 迷拉星雨林湖泊
BiomeType.AirShipPlain 铁穹平原
BiomeType.AirShipFleet 铁穹舰队
BiomeType.MushroomPlain 荧菇平原(内层)
BiomeType.StarLakeLake 星辉湖泊(内层子biome)
BiomeType.MushroomForest 菇林(内层子biome)
BiomeType.StarForest 星之森林(中层)
BiomeType.StarForestEdge 碎岛边境(星影森林边缘子地形)
BiomeType.CrystalIsland 晶簇浮岛(外层,环形轨道分布的特色浮岛)
BiomeType.ShatteredIsles 破碎离岛(外层主地形,离散散布的小浮岛群;原 BIOME_BRIDGE 改名)
BiomeType.MushroomHills 荧菇丘陵(内层子地形)
BiomeType.MushroomPlainEdge 荧菇平原边缘(内层最外环)
BiomeType.CloverStream 四叶草溪(内层子地形)
BiomeType.RuneRelic 符光遗迹(内层 patch 子地形)
BiomeType.StarForestHills 星影森林丘陵(中层 patch)
BiomeType.DarkWoods 昏暗树林(中层 patch)
BiomeType.CatDogVillage 猫狗村(中层 patch)
BiomeType.CorruptededRuins 腐化遗岛(外层 Boss 区域,环形轨道上的特殊大浮岛)
BiomeType.MushroomVillage 蘑菇村(内层 patch)
BiomeType.Void 星尘之境虚空(纯空壳:不建块/不刷植被/动物/矿)
ItemId
名称 用法描述
GridAttr.ItemNum 道具数量
GridAttr.Durable 耐久度
GridAttr.Toughness 韧性
视野距离
名称 用法描述
VDistanceRange.Near 近
VDistanceRange.Middle 中
VDistanceRange.Far 远
VDistanceRange.Further 更远
VDistanceRange.Farthest 最远
皮肤数据类型
名称 用法描述
MiniShopData.Skin 皮肤
MiniShopData.Avt 所有AVT
MiniShopData.Mount 所有坐骑
MiniShopData.AllMountLevel 所有解锁等级的坐骑
标签匹配方式
名称 用法描述
MatchMode.All 全部匹配
MatchMode.Any 部分匹配
名称 用法描述
AvtPart.Body 身体
AvtPart.Head 头部
AvtPart.Face 脸
AvtPart.FaceOrnament 脸装饰
AvtPart.Jacket 夹克
AvtPart.HandOrnament 手装饰
AvtPart.Trousers 裤子
AvtPart.Shoe 鞋子
AvtPart.BackOrnament 背装饰
AvtPart.Footprint 脚印
AvtPart.Skin 皮肤
AvtPart.RightHand 右手特效
AvtPart.RightShoe 右脚特效
AvtPart.HeadEffect 头部特效
AvtPart.FaceEffect 脸特效
AvtPart.WholeBodyEffect 全身特效
AvtPart.HandEffect 手特效
AvtPart.TrailingEffect 拖尾特效
AvtPart.BgEffect 背景特效
AvtPart.WingEffect 翅膀特效
AvtPart.EquipHead 装备头部
AvtPart.EquipBreast 装备胸部
AvtPart.EquipLegging 装备腿部
AvtPart.EquipShoe 装备鞋子
AvtPart.EquipPifeng 装备披风
AvtPart.EquipWeapon 装备武器
AvtPart.EquipCustom1 装备扩展1
AvtPart.EquipCustom2 装备扩展2
AvtPart.EquipCustom3 装备扩展3
AvtPart.Max 最大值
元件属性
名称 用法描述
ElementAttr.Name 名称
ElementAttr.Color 颜色
ElementAttr.Text 文本
ElementAttr.Transparency 透明度
ElementAttr.Angle 角度
ElementAttr.Visibility 显示/隐藏状态
ElementAttr.Position 位置
ElementAttr.Size 尺寸
ElementAttr.ScrollPosition 滚动容器位置
ElementAttr.GlobalPos 绝对位置
界面属性
名称 用法描述
UIAttr.Name 名称
UIAttr.Visibility 显示/隐藏状态
游戏设置类型
名称 用法描述
GameSetting.ScopeMode 准星模式
GameSetting.CameraShake 镜头晃动
GameSetting.AutoJump 自动跳跃
GameSetting.FixedMap 固定小地图
小地图图标类型
名称 用法描述
MiniMapMarkType.DevMark 使用接口创建的图标
MiniMapMarkType.Player 玩家图标
自定义UI信标映射类型
名称 用法描述
BeaconMapType.Position 位置
BeaconMapType.Object 对象
自定义UI信标限制类型
名称 用法描述
BeaconClampType.None 无限制
BeaconClampType.Circle 圆形限制
BeaconClampType.Rectangle 矩形限制
区域复制类型
名称 用法描述
AreaCloneType.IncludeAir 复制(含空气)
AreaCloneType.ExcludeAir 复制(不含空气)
AreaCloneType.IncludeAirAndMove 移动(含空气)
AreaCloneType.ExcludeAirAndMove 移动(不含空气)
角色举起类型
名称 用法描述
RolePickupType.Carrying 举起者
RolePickupType.Carried 被举起者
对象类型
名称 用法描述
ObjType.Entity 实体
ObjType.Mob 生物
ObjType.Player 玩家
ObjType.World 世界
ObjType.Block 方块
ObjType.UI UI编辑界面
ObjType.Area 区域
ObjType.Projectile 投掷物对象
ObjType.Pos 位置
ObjType.DropItem 掉落物
组件属性访问权限
名称 用法描述
CmpProPermission.Public 公开
CmpProPermission.Private 私有
CmpProPermission.Read 只读
组件属性预制面板显示控制
名称 用法描述
CmpUIPermission.Hide 隐藏
CmpUIPermission.Show 显示
设备类型
名称 用法描述
DeviceType.PC PC端
DeviceType.Android 安卓
DeviceType.IOS 苹果
DeviceType.Other 其他
开发者常见问题
在查阅开发者学院中的脚本API时,若有任何问题或建议,欢迎通过问卷进行反馈!【点我填写问卷】
1. 常用快捷键:
撤销-Undo(Ctrl+Z)
剪切-Cut(Ctrl+X)
复制-Copy(Ctrl+C)
粘贴-Paste(Ctrl+V)
插入ID-Insertld(Ctrl +I)
查找-Find(Ctrl+F)
全选-SelectAll(Ctrl+A)
批量注释/取消注释-Notes (Ctrl+/)
2. 如何等待1秒后继续执行?
threadpool:wait(1)
3. 如何打印错误日志到调试面板
print
参数及类型:
...:number 、 string 、 boolean、数组、kv
返回值及类型:
无
该方法的主要作用: 打印信息
print("hello ",1,true)
printError
参数及类型:
...:number 、 string 、 boolean、数组、kv
返回值及类型:
无
该方法的主要作用: 打印错误信息
printError("hello ",1,true)
4. Block中的data在什么地方使用
data使用有具体需求,此处不建议开发者使用。开发者尽可能使用已封装过的没有data的新接口。
5.Event 需要更详细的用法及参数解释
Event即为开发者事件,是指玩家在游戏内进行了某些操作后触发的对应事件。比如玩家点击了某个方块, 这时就会触发玩家的点击方块事件,即名为"Player.ClickBlock"的事件,开发者只要注册监听该事件就能进行点击方块后的对应操作。 注册监听事件的方法如下:ScriptSupportEvent:registerEvent([=[Player.ClickBlock]=], function(event_args) ... end)。 而开发者事件在进行回调时会传回来一些对应的参数,每个开发者事件对应的参数可参考wiki中的事件系统部分。
6.appendSpeed 接口中的x,y,z参数信息
该接口的参数x,y,z表示设定一个移动距离,需要传入整数。
案例:假设把Z设定为5,当执行一次该接口后,那么objid就会向+z轴移动5格的距离
写法:appendSpeed(objid,0,0,5)
7.World 类中可否提供一个获取有所有 Actor 的方法,或者历遍其的方法 (非 World:getActorsByBox)
由于游戏机制及效率考虑的原因,此功能不给予提供。但我们会提供触发器生物库的ActorId表
8. 播放UI动效时,如何指定不同的动效 https://dev-wiki.mini1.cn/ugc-wiki/apis/customui.html#playelementanim
-- 显示动效
10001 渐显
10002 放大显示
10003 缩小显示
-- 隐藏动效
20001 渐隐
20002 放大隐藏
20003 缩小隐藏
-- 循环动效
30001 颤抖
30002 跳动
30003 心跳
30004 摇摆
30005 旋转
30006 翻转
30007 顺时针扫描
30008 逆时针扫描
30009 闪烁
-- 文字动效
40001 打字机
9.界面中的克隆元件接口如何使用
克隆体id获取方法:
1、克隆体的id为母体id#clone1、2、3。 例如“7517482985765730755-134493_3#clone2”
2、如果克隆带子元件的元件时,其子元件会被一同克隆,此时如果想要获取子元件的id,可以用以下两种方式:
? a. 直接在子元件id+#clone1、#clone2,每克隆一次+1,例如"7517482985765730755-134493_3#clone2"
? b. 用克隆体父元件id.老子元件id,例如"7517482985765730755-134493_1#clone1.7517482985765730755-134493_3"
详细示例:
首先如图我们制作一个层级关系的示例:
image-20250619143457633
界面中的id如下表格所示
元件 id
image-20250619143104727 7517482985765730755-134493_1
image-20250619143145092 7517482985765730755-134493_2
image-20250619143159727 7517482985765730755-134493_3
image-20250619143213415 7517482985765730755-134493_4
image-20250619143222280 7517482985765730755-134493_5
我们编写了一段代码,用来克隆元件,然后将克隆出来的子元件隐藏
local Script = {}
--属性定义
Script.propertys = {
}
-- 需要开放给别的组件访问的函数需要配置
Script.openFnArgs = {
}
-- 组件启动时调用
function Script:OnStart()
-- 监听UI按钮点击事件(元件id)
self:AddTriggerEvent(TriggerEvent.UIButtonTouchEnd, self.OnUIButtonTouchEnd) --输出点击按钮的id
self:AddTriggerEvent(TriggerEvent.UIButtonClick, self.OnUICloneButtonClick, "7517482985765730755-134493_4") --点击克隆按钮
self:AddTriggerEvent(TriggerEvent.UIButtonClick, self.OnUIHideButtonClick, "7517482985765730755-134493_5") --点击隐藏克隆出来的按钮
end
function Script:OnUIButtonTouchEnd(event) --点击任意按钮时,输出点击按钮的id
local id = event.uielement
print("任意按钮被点击开始")
print('点击了'..id)
print("任意按钮被点击结束")
end
function Script:OnUIHideButtonClick(event)
--第一种获取克隆体的子元件的方法,直接在原元件id+#clone1、#clone2,每克隆一次+1,例如"7517482985765730755-134493_3#clone2"
--local isSuccess = CustomUI:HideElement(Player:GetHostUin(),"7517482985765730755-134493", "7517482985765730755-134493_3#clone1")
--第二种获取克隆体的子元件的方法,用克隆体父元件id.老子元件id,例如"7517482985765730755-134493_1#clone1.7517482985765730755-134493_3"
local isSuccess = CustomUI:HideElement(Player:GetHostUin(),"7517482985765730755-134493", "7517482985765730755-134493_1#clone1.7517482985765730755-134493_3")
if isSuccess == true then
print("隐藏成功")
end
end
function Script:OnUICloneButtonClick(event) --点击克隆按钮时,克隆元件,然后移动元件的位置
local id = CustomUI:CloneElement(Player:GetHostUin(), "7517482985765730755-134493", "7517482985765730755-134493_1")
local isSuccess = CustomUI:SetPosition(Player:GetHostUin(),"7517482985765730755-134493" ,id, 600, 200)
if id ~= nil then
print("克隆元件成功")
print("克隆体的id:"..id) --克隆体的id为原元件id+#clone1,例如“7517482985765730755-134493_1#clone1”
end
end
return Script
示例视频
10.【计时器组】变量如何使用
在触发器中新建【计时器】变量
在触发器中新建【计时器组】变量
在合适的时机将【计时器】添加到【计时器组】中,然后启动。参考触发器:
image-20250903153840392
全局函数
具体函数名及描述如下:
序号 函数名 函数描述
1 json.decode(...) json格式字符串转换table数据
2 json.encode(...) table数据转换json格式字符串
3 GetWorld() 获取当前世界对象
4 print(...) 打印信息
5 printError(...) 打印错误信息
6 Class(...) 定义类
7 Instance(...) 创建类实例
8 GetInst() 获取类单例
json.decode
参数及类型:
data:stringjson字符串
返回值及类型:
ret:table解码后的table
该方法的主要作用: 解码json字符串
local tab = json.decode('{"a":1,"b":2}')
json.encode
参数及类型:
data:tabletable数据
返回值及类型:
ret:stringjson格式字符串
该方法的主要作用: 编码table数据
local jsonstr = json.encode({a=1,b=2})
GetWorld
参数及类型:
无
返回值及类型:
ret:table世界对象
该方法的主要作用: 获取当前世界对象
local world = GetWorld()
print
参数及类型:
...:number 或者 string 或者 boolean: 只能传这三种类型数据的不定参数
返回值及类型:
无
该方法的主要作用: 打印信息
print("hello ",1,true)
printError
参数及类型:
...:number 或者 string 或者 boolean: 只能传这三种类型数据的不定参数
返回值及类型:
无
该方法的主要作用: 打印错误信息
printError("hello ",1,true)
Class
参数及类型:
classname:string类名
super:string table 父类名 或者 父类原表
issingle:boolean是否单例
返回值及类型:
ret:table对象定义
该方法的主要作用: 定义类对象
具体使用案例如下:
local classdef = Class("Abc", {}, true)
Instance
参数及类型:
classname:string类名
返回值及类型:
ret:table对象实例
该方法的主要作用: 创建类实例
local instance = Instance("Abc")
if not instance then
printError("创建实例失败 请检查类定义issingle 参数是否是false")
end
GetInst
参数及类型:
classname:string类名
返回值及类型:
ret:table对象实例
该方法的主要作用: 获取类单例
local instance = GetInst("Abc")
if not instance then
printError("获取单例失败 请检查类定义 issingle 参数是否是false")
end
触发器脚本交互
脚本发送广播消息
步骤如下:
1.触发器组件中新建广播消息,并添加广播事件对应的执行逻辑。
2.脚本中发送广播消息,广播消息名选择广播ID即可。
动图演示:脚本使用步骤
脚本代码如下:
local Script = {}
function Script:OnStart()
-- 监听触发器事件 玩家点击方块事件
self:AddTriggerEvent(TriggerEvent.PlayerClickBlock, self.OnPlayerClickBlock)
end
function Script:OnPlayerClickBlock(event)
self:PushCustomEvent("具体广播ID",2,3) -- 需要选择具体广播ID替换
end
return Script
脚本监听广播消息
步骤如下:
1.触发器组件中新建广播消息,并添加发送广播消息的事件。
2.脚本OnStart中添加监听广播消息,并实现广播消息对应的处理逻辑。
动图演示:脚本使用步骤
脚本代码如下:
local Script = {}
function Script:OnStart()
self:AddCustomEvent("具体广播ID", self.OnCustomEvent) --具体广播ID需要选择替换
end
function Script:OnCustomEvent(event, arg1,arg2)
Chat:SendSystemMsg("消息名 : " .. event.eventType)
Chat:SendSystemMsg("参数1 : " .. tostring(arg1))
Chat:SendSystemMsg("参数2 : " .. tostring(arg2))
end
return Script
脚本调用触发器自定义函数
步骤如下:
1.触发器组件中新建自定义函数,并实现函数功能。
2.脚本中获取触发器组件,然后选择自定义函数,传入参数。
3.转玩法执行触发事件查看效果。
动图演示:脚本使用步骤
脚本代码如下:
local Script = {}
function Script:OnStart()
-- 监听触发器事件 玩家点击方块事件
self:AddTriggerEvent(TriggerEvent.PlayerClickBlock, self.OnPlayerClickBlock)
end
function Script:OnPlayerClickBlock(event)
-- 获取当前脚本对象 如果查找的触发器组件和当前脚本组件挂载到同一个物体上,则可以直接获取组件
local obj = self
-- 获取当前世界对象 如果查找的触发器组件挂载到世界对象上,当前脚本组件不是挂载世界对象上,则需要获取世界对象
-- obj = GetWorld()
-- 获取当前物体 如果查找的触发器组件挂载非世界对象上,则需要获取物体
-- obj = GameObject:FindObject("7482986899365911542-22886") --获取UI对象
--获取obj对象的触发器组件·
local cmp = obj:GetComponent("具体组件ID") --需要选择具体组件替换
if cmp then
-- 调用触发器组件的自定义函数 传入参数2和3
local ret = cmp:具体自定义函数名(2,3) --需要选择自定函数替换
-- 发送系统消息 将ret转换为字符串并发送
Chat:SendSystemMsg(tostring(ret))
end
end
return Script
触发器调用脚本开放函数
步骤如下:
1.脚本中新建自定义函数,并实现函数功能。
2.在脚本openFnArgs配置中声明需要开放外部调用的函数
3.触发器组件中选择脚本,然后选择自定义函数,传入参数。
动图演示:脚本使用步骤
脚本代码如下:
local Script = {}
Script.openFnArgs = {
Add = {
returnType = Mini.Number, -- 返回值(不填则为无返回值)
displayName = "脚本加法", -- 代码块上显示的别名(不填缺省则显示函数名)
params = {Mini.Number, Mini.Number},-- 参数列表类型(不填则为无参数)
},
SpawnMob = {
displayName = "生物生成", -- 代码块上显示的别名(不填缺省则显示函数名)
params = {Mini.Vec3, Mini.MobType,Mini.Number},-- 参数列表类型 参考组件属性说明
},
}
-- 返回两个数值相加
function Script:Add(a, b)
if a and b then
return a + b
end
end
-- 生成生物 传入位置 生物对象 数量
function Script:SpawnMob(pos, monstertype,num)
if pos and monstertype and num and num > 0 then
local objs = GameObject:CreatePrefab(ObjType.Mob, monstertype, pos.x, pos.y, pos.z,num)
if objs and #objs > 0 then
for i, objid in ipairs(objs) do
Chat:SendSystemMsg(string.format("序号 : %d 对象ID : %d ",i,objid) )
end
end
end
end
return Script
对象介绍
概述
对象是组件逻辑的载体, 对象上可以挂载多个组件。目前对象类型有:世界、ui、方块、玩家、生物、实体、投掷物、区域、位置、掉落物
注意:不同对象类型上的组件限制不一样
世界对象/ui对象: 可以使用触发器事件,其他对象只能使用个体对象事件
方块对象:方块上的组件只能使用位置去操作方块,方块并没有每个方块都独立实例化,一个类别只实例一个
ui对象:每个ui工程只有一个实例,每个玩家没有独立实例界面,组件上需要根据玩家去操作
道具目前不支持挂组件,只能使用各种自定义效果
对象的API函数(注意:不是所有对象类型都有全部接口)
序号 函数名 函数描述
1 GetId(...) 获取游戏对象id
2 GetObjType(...) 获取对象类型
3 IsValid(...) 判断对象是否有效
4 AddComponent(...) 在对象上添加指定组件
5 RemoveComponent(...) 删除对象上的指定组件
6 GetComponent(...) 获取对象上的指定组件
7 Destroy(...) 销毁对象
GetId
参数及类型:
无
返回值及类型:
ret:string 对象id
该方法的主要作用: 获取该对象实例id
具体使用案例如下:
local Script = {}
-- 组件启动时调用
function Script:OnStart()
-- 该组件挂载的对象实例
local object = self:GetGameObject()
if object then
local id = object:GetId()
print("id", id)
end
end
return Script
GetObjType
参数及类型:
无
返回值及类型:
ret: ObjType 对象类型枚举
该方法的主要作用:获取对象类型
具体使用案例如下:
local Script = {}
-- 组件启动时调用
function Script:OnStart()
-- 该组件挂载的对象实例
local object = self:GetGameObject()
if object then
local objType = object:GetObjType()
print("objType", objType)
end
end
return Script
IsValid
参数及类型:
无
返回值及类型:
ret:boolean 是否有效
该方法的主要作用: 获取对象是否有效
具体使用案例如下:
local Script = {}
-- 组件启动时调用
function Script:OnStart()
-- 获取对象
local object = GameObject:FindObject("对象id")
-- 判断对象是否有效
if object and object:IsValid() then
-- do something
end
end
return Script
AddComponent
参数及类型:
string 组件id
返回值及类型:
ret:component 组件对象
该方法的主要作用:对象上添加组件(对象已经存在相同id组件的则添加不上返回空)
具体使用案例如下:
local Script = {}
-- 组件启动时调用
function Script:OnStart()
-- 获取世界对象
local world = GetWorld()
if world then
-- 添加组件
local cmp = object:AddComponent("组件id")
if cmp then
print("组件添加成功")
-- do something
end
end
end
return Script
RemoveComponent
参数及类型:
string 组件id
返回值及类型:
ret: 无
该方法的主要作用:删除对象上的指定组件
具体使用案例如下:
local Script = {}
-- 组件启动时调用
function Script:OnStart()
-- 获取世界对象
local object = GameObject:GetWorld()
if object then
-- 删除组件
object:RemoveComponent("组件id")
end
end
return Script
GetComponent
参数及类型:
string 组件id
返回值及类型:
ret: component 组件对象
该方法的主要作用:获取对象上的指定组件
具体使用案例如下:
local Script = {}
function Script:OnStart()
-- 获取世界对象
local object = GameObject:GetWorld()
if object then
-- 获取组件
local cmp = object:GetComponent("组件id")
if cmp then
print("组件获取成功")
-- do something
end
end
end
return Script
Destroy (注意:世界/ui/方块这3种对象类型没有这个接口)
参数及类型:
boolean 是否杀死, 只有生物有效, 默认flase
返回值及类型:
ret: 无
该方法的主要作用:销毁对象
具体使用案例如下:
local Script = {}
function Script:OnStart()
--删除其他对象
local object = GameObject:FindObject("生物id")
if object then
object:Destroy(true)
end
-- 删除挂载的对象
local object = self:GetGameObject()
if object then
object:Destroy()
end
end
return Script
kv&排行榜介绍
注意:
!!!3.0中kv和排行榜仅支持Data.Map 接口,不再支持2.0的CloudSever接口调用,千万不要混合使用,会造成数据丢失。
!!!3.0中kv和排行榜仅支持Data.Map 接口,不再支持2.0的CloudSever接口调用,千万不要混合使用,会造成数据丢失。
!!!3.0中kv和排行榜仅支持Data.Map 接口,不再支持2.0的CloudSever接口调用,千万不要混合使用,会造成数据丢失。
排行榜、K/V数据介绍
排行榜和K/V数据存储功能将为开发者开发具有网络化、功能更加丰富的地图提供更有力的保障。开发者不仅可以对玩家个人数据,还可以对地图维度的全局数据(如战力排行榜,竞速时间排行榜等)进行管理、保存、使用。
K/V数据
为一般普通的数据存储,其如同一张表,而表里面可以存任何类型的数据,并且可以存储多个不同关键字(Key)的表。
存储中的每个值(value)都由一个独特的键(key)索引,可以往里面添加任意值。一个key只能对应一个value,value类型可以是数值,可以是字符串,也可以是json字符串等。例如玩家相关数据可如下所示存取:
键 (KEY) 值 (VALUE)
level 50
attr { "flowers": 100, "level": 6, "vip": 3,"played_count": 13, "label": "超神"}
coin 78000
通过相同的数据集名称和键(key),就可以针对数据进行存/取操作。
排行榜数据
为有序数据集合,其数据存储的类型为数值类型,系统会按照数值自动进行排序,故我们把它简称为排行榜数据,其可以存储多个维度的数据进行自动排序。
排行榜可以实现地图排名前1000位玩家的数据,实现全图排行榜功能
排行榜默认排序方式为(升序)从小到大,使用get数据时,正数代表升序,负数代表降序
排行榜只能存正整数,存入的小数会进行取整数部分
排行榜基本格式如下:
键(KEY)(玩家迷你号) 值 (VALUE)
10000 5
1000085 10
10000354 12
数据保存的有效期
地图审核通过且状态属于有效中,其所存储的数据即处于有效中。
地图取消上传,数据将会继续保留30天,如果30天内未重新上传,数据将会彻底清除,无法恢复。
地图开发者主动调取删除接口,或者地图删除,则数据将会彻底清除,无法恢复。
注意:在联机或单机情况下,该功能只能实现当前地图,当前房间数据的临时存储,房间关闭后数据就会丢失。
验证数据存储的正确性,必须在**云服环境下(确保在云服房间内)**才可正确的获取到所存储的数据,在单机或者联机下将无法获取到云服下的全部数据。
如何开启K/V存储和排行榜
开发者可以在开发者工具->触发器->变量库->全局变量中,通过选择排行榜或者表来进行存储两种类型的数据。如图所示:
针对排行榜及表进行存取操作,开发者可在Lua中选择需要执行的操作动作,具体的操作动作,如下图所示:
序号 函数名 函数描述
1 SetValueAndCallBack(...) 回调设置kv、排行榜数据
2 SetValueAndBlock(...) 阻塞设置kv、排行榜数据
3 RemoveValueAndCallBack(...) 回调删除指定key的数据
4 RemoveValueAndBlock(...) 阻塞删除指定key的数据
5 UpdateValueAndCallback(...) 更新指定key的数据
6 GetValueAndCallBack(...) 回调获取kv、排行榜数据
7 GetValueAndBlock(...) 阻塞获取kv、排行榜数据
8 GetIndexValueAndCallback(...) 获取排行榜指定排名索引的值
9 GetIndexValueAndBlock(...) 获取排行榜指定排名索引的值
10 GetNumValuesAndCallback(...) 获取排行榜指定前num个值
11 GetRangeValuesAndCallback(...) 获取排行榜值为min~max区间的所有值
12 SetRankValueAndBlock(...) 阻塞设置排行榜的值
13 ClearData(...) 清空kv表/排行榜
存储限制
系统为保障存/取数据过程顺利,会对数据存储设定一些限制,以便给与玩家最好的体验。如果超过设定的限制,玩家数据将会存在丢失的风险。
每个游戏内的请求服务器的上限,系统会根据同时在线的玩家数量来动态调配,允许一定数量的数据存/取请求(更多的玩家意味有更高的配额更多的数据),具体的如下表:
请求类型 函数 每分钟请求上限 备注
设置 SetValueAndCallBack(...)
SetValueAndBlock(...)
RemoveValueAndCallBack(...)
RemoveValueAndBlock(...)
UpdateValueAndCallback(...) 30 + numPlayers × 10 每分钟该函数允许被请求的次数,超过上限将会被限制请求
获取 GetValueAndCallBack(...)
GetValueAndBlock(...) 30 + numPlayers × 10 所有列出的函数共享此限制 每分钟这些函数被请求的次数之和不能超过上限,否则请求将会被限制
有序数据集(排行榜) GetIndexValueAndBlock(...)
GetNumValuesAndCallback(...)
GetRangeValuesAndCallback(...)
ClearData(...) 5 + numPlayers × 2 所有列出的函数共享此限制 每分钟这些函数被请求的次数之和不能超过上限,否则请求将会被限制
数据长度限制
除了请求频率,数据存储同时也会限制每个条目可使用的数据量。其中键(key)、名称和数据都需要在一定的字符长度内,存储的数据量也有限制。具体的限制,如下表:
组成 最大字符数 备注
l键(key) 50 键(key)建议控制在50字符以内
名称 50 名称建议控制在50字符以内
数据 2,000,000 数据建议控制在2,000,000字符以内
由于键、名称是字符串,因此可以使用 string.len() 检查它们的长度。数据也保存为数据存储中的字符串,不管其初始类型如何,我们都可以使用 Lua 数据转换为序列化 JSON 表的 JSONEncode() 函数检查数据的大小。
全局KV数据并发读写
**全局KV数据并发读写,主要保证了多个玩家同时对一个KEY进行读写操作时的唯一性,确保读写成功,并且获取最新值。
****应用场景 包括但不仅限于宗门系统,拍卖行系统,抢购系统等,开发者可根据自己的业务需要,选择使用。**
普通的[SetValueAndBlock] 和[SetValueAndCallBack] 接口已经满足KV数据的绝大多数存取需求,但是当需要实现全服共同宗门系统(全局属性,例如总人数和贡献值等)、全服共同拍卖行(售卖物品的剩余数量)等大型跨游戏房间功能的时候,容易出现数据的彼此覆盖,没法保证全局唯一性。
为保证全局唯一性,我们特意设计了全新的UpdateValueAndCallback(...)接口。使用该接口,开发者仅需自己处理一个回调函数,在函数中处理自己的数据的逻辑。接口底层会自动重试,直至数据修改成功。
注意:此接口只在云服有效,不要单机或联机测试这个接口!
注意:**此**接口只在云服有效,不要单机或联机测试这个接口!!
注意:**此**接口只在云服有效,不要单机或联机测试这个接口!!!
若遇到冲突、失败的情况,接口会自动回传最新的数据值,并调用开发者的回调函数,按照开发者自己设定的逻辑进行更新数据,确保了数据不出错,不会被其他玩家覆盖。
callback函数示例说明
UpdateValueAndCallback(...)
参数及类型:
varId:stringkv表变量ID
playerId:number玩家uin
key:string键值(数值会转换成字符串)
value:string,number,boolean具体值
返回值及类型:
ret:bool是否成功 (全局云KV变量可用)
该方法的主要作用: 安全更新表中某个key下的值,并发存取数据,确保Key下的值唯一性
具体使用案例如下:
-- ret只有0和2两种值
-- callback至少会调用两次,首次调用ret必然为0,用于设置数值
-- 第2次或第2次以上调用callback时,如果设置失败会再次调用callback,此时ret为0;如果设置成功则ret为ErrorCode.OK,不会再次设置
local function GlobalKVCallback(code,key,value)
Chat:SendChat(table.concat({"UpdateValueAndCallback code = ",tostring(code), "key = ",tostring(key), "value = ",tostring(value)}, " "))
value = json.decode(value) or value
print("code", code , "key", key, "value", value)
if code == ErrorCode.KV_UPDATE_SET then -- 需要返回更新设置的最终值
value = value or {}
value.updatevalue = 999
return json.encode(value) -- 需要返回更新设置的最终值 并且序列化结构
elseif code == ErrorCode.KV_UPDATE_GET then
print("获取到的当前最新的值:", value)
elseif code == ErrorCode.OK then
print("更新完成")
else
print("更新失败")
end
end
local result = Data.Map:UpdateValueAndCallback(GlobalKV, nil, "GlobalKV_Key2", GlobalKVCallback)
if result then
print("调用成功")
else
print("调用失败")
end
普通KV存储 VS 全局KV数据并发读写
普通KV存储set操作时,执行速度更快一些。直接保存key对应的数据,只会有写入时的每分钟请求次数限制。但是在多服同时对同一个KEY进行写数据的时候容易造成数据不一致。
全局KV数据并发读写(UpdateValueAndCallback(...))执行更慢,因为修改之前会读取最新的值,然后尝试写入。因此该接口同时受到读取和写入的每分钟请求次数限制。另外,它第一次操作某个key时,因为数据不存在会返回空值,此时依然是在callback里面处理,并提交首次有效数据给底层。
注意事项
1.UpdateValueAndCallback(...)接口无需事先设置key对应的数据,因为数据都在callback里面提交,从无到有的第一次数据也是这里提交。这样才能避免同时对同一个KEY的数据操作时,彼此冲突覆盖问题;
2.非必要慎用UpdateValueAndCallback(...)接口,性能降低。只有业务场景,必须要对同一个key的数据进行写操作时,保证唯一性、正确性的场景和功能时,才推荐使用该接口;
3.使用UpdateValueAndCallback(...)修改过的数据,请勿使用普通SetValueAndBlock接口去设置新值,因为会直接覆盖掉原来数据,没法保证唯一、正确性,而且有可能导致其它问题;
4.对同一个key,**禁止混用****普通SetValueAndBlock和UpdateValueAndCallback(...)去存数据**;
5.此接口只在云服有效,不要单机或联机测试这个接口;
6.每个key只能设置一个回调,设置后不能随意修改;
7.Update接口操作的数据,其set操作只能在callback里面,并采用返回最新value进行修改,千万别基于自己调用get拿到的数据进行操作,容易导致数据覆盖,出错。
最佳实践
**Q:****执行set操作,出现请求失败**
**A:**1、避免出现服务器CD限制,相同key的set操作需要间隔>=6s,避免同一秒多次set相同key的情况,导致数据没有保存成功。
2、避免无变化的数据,仍不停去执行set操作。给需要保存的数据设置needSave之类的布尔值标签,数据变化了设置为true,定时保存中根据needSave为true时候发送set请求保存,否则没必要发送到服务器。
3、避免绑定玩家行走、碰撞等高频行为而触发实时读写操作,否则一个玩家有可能一秒内触发数百个数据读写请求。
4、避免触发每分钟请求数QPM限制。
5、妥善处理set或get返回失败的情况,可以创建请求失败列,合理安排时机重试几次,一旦成功就从失败列表移除。
**Q:****一个游戏可以设置多个排行榜**
**A:**1、一个游戏可以包括多个维度的排行榜,如:得分排行榜,击杀Boss次数排行榜,速度排行榜,时长排行榜,技能点数排行榜等。
2、如果游戏里有多个排行榜,每个榜的刷新时间要错开。
**Q:****排行榜最多可以设置多少位排名?**
**A:**1、单个排行榜最多可存储1万名。
2、建议排行榜展示名次最好不要超过TOP 30,最多展示前100名。展示的名次越多,参与排行的人数越多,越影响性能,导致响应变慢;设计的时候需要做合理的取舍。
**Q:****如何合理的进行set,get操作?**
**A:**1、避免零值(或初始值)参与排行榜,会出现所有玩家都进行set操作了一次。
2、避免低于排行榜最后一名的数据也set操作。假设你的排行榜展示前50名,如果第50名已经有100分了,那么对于分数低于100分的玩家就无需添加到排行榜里面去。
3、参与排行的数值,比如经验,等级,杀怪数量等,这几个数值可以序列化成json字符串保存在一个kv中,避免多次拉取数据的情况。
4、假设某游戏有经验,等级,杀怪数3个排行榜,那么可以一个玩家一个json保存在kv表里面,key为玩家uin,value为json:
{"exp": 888999,"lvl": 7,"kmonster": 39}
5、区分游戏商店购买、任务、成就等模块的配置和需要持久化的状态数据。
**Q:****配置文件建议不设置到数据储存中**
A: 通用配置可以放脚本或另外一个全局表里,没有必要存储在kv表里。
"FindMaHongJun_5":{"questName":"FindMaHongJun_5","questProg":0,"questProgAll":1,"questSta":"no"}
这种可以简化,假设TaskID:10086表示该任务,那么
"10086":[0,1,0]
数组第1个元素表示questProg,第2个元素表示questProgAll,第三个元素表示questSta。
排行榜案例
参考2.0文档 https://dev-wiki.mini1.cn/wiki/673b36153ffc6baf0859d33a
二维表介绍
介绍
二维表变量是将数据以表格的形式存储的新变量类型,使用非常简单。大家在制作RPG、塔防等需要大量配置的游戏时,再也不用新建多个数组,直接通过二维表就能快捷的实现。 二维表支持全局变量和玩家变量,其中玩家的二维表可以在服务器上保存数据,在新建变量时选择云变量即可。
image-20250424102940313
表格编辑
在你第一次新建二维表变量时,需要先定义二维表的列字段。点击查看/编辑,进入二维表编辑页面。
image-20250424103250911
模板导出
当前版本只支持csv表格导入,通过excel可以使用公式填充更高效快捷的编辑数据,之后会开放表格编辑工具。
你可以点击导出示例,来查看官方支持的数据类型。
image-20250424103322663
表格编辑
首先使用excel或wps打开导出的文档。我们可以看到如下的模板。
image-20250424103359323
第一行为字段的备注,主要用来说明字段的用途,避免混淆字段。备注填写后在调试或查看时,可以更快速的判断字段的用途。备注非必要字段,可为空。
image-20250424103433981
第二行为列名,用于在编辑和逻辑调用时区分不同的字段。该字段为必填项且不可重复。
image-20250424103457659
第三行为列的类型,我们会根据不同的类型,将下方填写的值解析成不同的数据类型。方便在逻辑中更好的运用。以下是当前版本支持的数据类型。注意数据类型为必填项,且必须和官方的定义完全一致,否则无法识别。
参数类型 类型名 参考填写值
数值 number 1
三维坐标 position 0|7|0
字符串 string 迷你世界你好
布尔值 bool 0
方块类型 block 100
道具类型 item 101
生物类型 actorid 3400
特效类型 effectid 1000
玩家 player 1000077763
对象实例 objid 154467589
图案 image 8_400415944_1642835210
颜色 color #91b8b8
第四行之后的数据为实际数据,可以在编辑模式下设置默认值,在运行中实时增删改查。那我们如何查找游戏中的各种id呢?可以打开脚本编辑器或触发器,选中对应的参数类型,然后在选择器中找到想要的参数,接着点击ctrl+c或复制按钮,即可复制id。最后将对应id在excel中填写。
image-20250424103520105
image-20250424103541130
表格导入
当你在excel中配置好需要的数据类型后,就可以打开点击导入,选择你刚刚编辑好的表格了。
image-20250424103549201
二维表常见问题
Q:我可以在运行时动态扩充列吗
A:不可以,必须在编辑模式下定义好所有的列数据类型。
Q:导入后提示”超过2000行“
A:目前单个表格最多只支持2000行数据。
Q:导入提示”未能识别某列的列类型“
A:支持的数据类型为上方表格限定范围,请检查是否与官方给定的一致。
Q:导入提示”列名不允许重复,请重新输入“
A:列名需要保持唯一,否则在触发器中无法区分不同的字段,请修改表格后重试。
Q:导出后提示”缺少列名“
A:列名不允许为空,请修改表格后重试。
Q:导出后提示”第x列中数据与数据类型不符,已自动置空“
A:数据类型和下方的值需要对应,如果填写的值无法按数据类型解析,会将该值重置为空值。
Q:行数据可以为空吗
A:可以的,如果设置为空,在读取时也会返回空值。建议在读写时用触发器的空值判断后再进行操作。
image-20250424103601291
Q:运行过程中提示我”数据超过上限,请联系开发者“
A:单个玩家的二维表变量和其他云变量的存储总量受64K的限制
Q:为什么我的数据表都是正确的,但是提示”数据与类型不符“
A:这个是一个bug,等待下个版本修复。
逻辑操作(lua接口参考二维表变量数据管理接口 Table | 迷你世界UGC3.0脚本Wiki)
动作:在(二维表↓)添加一行数据()()()()
说明:
在表的末尾插入数据,选择要操作的二维表后,后方会自动根据表格解析出数据类型。
原始表格:
image-20250424103613195
触发器:
image-20250424104140023
运行结果:
image-20250424104149951
动作:在(二维表↓)中第()行插入数据()()()()
说明:
新增一行并插入到对应的行数中,原有行数的行往后移。
原始表格:
image-20250424103619530
触发器:
image-20250424104205024
运行结果:
image-20250424104213404
动作:替换(二维表↓)中列名为()行为()行数据为(任意值)
说明:
在二维表中修改某列数据值,可以指定修改要修改的行数,支持传入数组后修改多行的数据。
原始表格:
image-20250424103619530
触发器:
image-20250424104224342
运行结果:
image-20250424104233827
动作:更新(二维表↓)中列名为()数据(=)(任意值)的行:第()列数据为(任意值)
说明:
在表格中查找列中对应数据的行,如果查找到后可以修改其他列的数据为另一个值。例如我们想把分数是0分的人的名称修改为“零分的人”.我们要查找“分数"列等于0分的行,我们找到了第三行,这时候可以修改第三行的”名称“数据为“零分的人”。
原始表格:
image-20250424103619530
触发器:
image-20250424104243480
运行结果:
image-20250424104251460
动作:删除(二维表↓)中第()行数据
说明:
将某一行删除,下方的行往上移。
原始表格:
image-20250424103619530
触发器:
image-20250424104300725
运行结果:
image-20250424104308628
动作:清空(二维表↓)
说明:
清空二维表的所有数据,请谨慎操作。
原始表格:
image-20250424103619530
触发器:
image-20250424104317943
运行结果:
image-20250424104324775
取值,返回不同类型值:查询(二维表↓)中第()列()行数据
说明:
获取对应数据对应行数的值,切换列类型后该积木的数据类型会实时变化。
原始表格:
image-20250424103619530
触发器:
image-20250424104840238
运行结果:
image-20250424104848020
取值,返回不同类型数组:查询(二维表↓)中第()列数据
说明:
获取指定列的数据,返回的是对应数据类型的数组
原始表格:
image-20250424103619530
触发器:
image-20250424104856784
运行结果:
image-20250424104904182
取值,返回数值:查询(二维表↓)总行数
说明
获取表格的总行数。
原始表格:
image-20250424103619530
触发器:
image-20250424104914096
运行结果:
image-20250424104921209
取值,返回数值:查询(二维表↓)中第()列中 值为()的行数
说明:
查询表格中某列数据中对应值的行,如果有多行只返回第一行。
原始表格:
image-20250424103619530
触发器:
image-20250424104931554
运行结果:
image-20250424110303186
取值,返回数值组:查询(二维表↓)中第()列中 值为()的行数组
说明:
查询表格中某列数据中对应值的行的数值组。
原始表格:
image-20250424103619530
触发器:
image-20250424105117418
运行结果:
image-20250424105125613
数据调试
在运行过程中点击调试后,可以点击对应的二维表,查看当前二维表的值。
查看的同时可以将运行结果导出到电脑中,之后在编辑模式下直接导入使用。
image-20250424105139081
image-20250424105148104
image-20250424105154455
道具实例介绍
什么是道具实例
道具实例是存在于格子上的道具数据,它是从道具模板创建的。每个道具实例都有自己的属性,这些属性可以在游戏中被修改或更新。
目前暂时只有模型组件和枪械组件支持道具实例的相关功能。使用创建道具实例的接口来创建,道具实例会带有模型组件相关属性;使用创建枪械道具实例的接口来创建,道具实例会带有模型组件和枪械组件的相关属性。
使用道具实例功能,可以制作出枪械修改等玩法。
创建道具实例
序号 函数名 函数描述
1 CreateItemInstInBackpack(...) 在玩家的背包内创建一个道具实例
2 CreateGunInBackpack(...) 在玩家的背包内创建一把实例化的枪械
3 CreateItemInstInWorld(...) 在位置上创建道具实例的掉落物
4 CreateGunInWorld(...) 在位置上创建枪械道具实例的掉落物
获取道具实例或ID
序号 函数名 函数描述
1 GetDropItemInstanceId(...) 根据掉落物objid获取道具实例id
2 GetItemIdByInstanceId(...) 根据道具实例ID获取道具ID
3 GetResIdByInstanceId(...) 根据道具实例ID获取预制ID
4 GetAllBackPackInstanceIds(...) 获取指定背包中所有道具实例
5 GetInstIdByGridIndex(...) 根据背包索引获取道具实例id
6 GetGunInstIdInBackpack(...) 获取背包所有实例化的枪械
7 GetAllStorageItemInstanceIds(...) 获取储物箱里所有的道具实例(只取通过接口创建的道具实例)
8 GetStorageItemInstanceId(...) 获取储物箱内指定格子的道具实例ID
获取和修改道具实例属性
序号 函数名 函数描述
1 ModifyGunAttribute(...) 修改枪械道具实例的属性
2 GetGunAttribute(...) 获取枪械道具实例的属性
3 GetGunPrefabAttribute(...) 获取枪预制的属性
4 AddSubModelPart(...) 给道具实例添加一个模型子部件
5 DeleteSubModelPart(...) 删除一个道具实例的模型子部件
6 ReplaceSubModelPart(...) 修改一个道具实例的模型子部件
7 SetStringCustomData(...) 设置道具实例的自定义数据string
8 SetBoolCustomData(...) 设置道具实例的自定义数据bool
9 SetNumberCustomData(...) 设置道具实例的自定义数据number
10 SetObjCustomData(...) 设置道具实例的自定义数据Object
11 SetArrayCustomData(...) 设置道具实例的自定义数据Array
12 GetStringCustomData(...) 获取道具实例的自定义数据string
13 GetBoolCustomData(...) 获取道具实例的自定义数据bool
14 GetNumberCustomData(...) 获取道具实例的自定义数据number
15 GetObjCustomData(...) 获取道具实例的自定义数据Object
16 GetArrayCustomData(...) 获取道具实例的自定义数据Array
在界面模型装载器上显示道具实例的模型
SetLoaderModel
参数及类型:
playerid:number玩家ID
uiid:string界面ID
elementid:string元件ID
modleName:string模型名称
返回值及类型:
ret:bool是否成功
该方法的主要作用: 设置装载器的模型(调用道具实例的模型:模型名称填ItemInstance_道具实例id)
具体使用案例如下:
local isSuccess = CustomUI:SetLoaderModel(Player:GetHostUin(),"7482986899365911542-22886","7482986899365911542-22886_5", "ItemInstance_15864891562")
注意
格子数据同步问题:道具实例的数据是存在于背包格子上的,修改了格子数据后,会按照一定的时间间隔同步。如果修改格子数据后立刻通知客机刷新界面,则会出现客机还没收到同步数据就刷新的情况,会导致客机显示模型没变化。解决办法是修改格子数据后等待一小会,例如0.5秒,再通知客机刷新界面。
环境(天空盒)模块 Wiki —— 迷你世界
关于本文档:本 Wiki 介绍《迷你世界》中「环境」模块(即游戏里决定整个世界天空与氛围的系统,底层也叫"天空盒")。本文用"功能 + 效果描述"说明每一项,不需要懂代码即可理解使用。
一、什么是「环境」
「环境」是迷你世界里决定整个世界视觉氛围的总开关。它不只是头顶那张天空图,而是一整套配置,涵盖:
天空的颜色与渐变
太阳、月亮、星空
云、雾、风
水面的颜色与质感
整个世界的光照明暗
1.1 环境 vs 滤镜(容易混淆,重要区分)
这是两套独立、但经常一起调的系统:
系统 改的是什么 类比
环境 世界里的真实景物:天空、光、云雾水 重新布置一个真实场景
滤镜 镜头/画面的成像效果:对比、饱和、色调 给相机镜头加一层滤镜
简单判断:玩家说的是"世界里有什么"→ 改环境;说的是"画面看起来怎样"→ 改滤镜。两者可以叠加使用。
二、环境模板(一键套用的预设)
2.1 模板是什么
环境以模板为单位。每个模板都是一整套调好的预设氛围,选中即整体套用,玩家不用逐项手调。
游戏内置 27 个模板槽位(含 1 个"空模板 = 不启用环境",其余 26 个为可用预设)。
切换模板 = 把整个世界的天空、光照、云雾水一次性换成那套预设。
这是最快达到目标氛围的方式——想要某种感觉,先看有没有现成模板。
2.2 模板清单
编号 名称 风格氛围 缩略图
0 空模板 不启用环境 空模板
1 经典 通用写实白天 经典
2 卡通风格 卡通可爱明快 卡通风格
3 自然过渡 自然写实柔和 自然过渡
4 梦幻粉 梦幻粉色唯美 梦幻粉
5 冰雪蓝 冰雪寒冷冷调 冰雪蓝
6 烈焰红 炽热红色危险 烈焰红
7 废土黄 废土荒凉末世 废土黄
8 科幻灰 科幻赛博冷调 科幻灰
9 毒雾绿 毒雾诡异绿色 毒雾绿
10 水墨 水墨国风黑白 水墨
11 青山绿水 水墨国风青绿 青山绿水
12 森林 森林绿意自然 森林
13 沙漠 沙漠干旱暖黄 沙漠
14 冰原 冰原寒冷冷白 冰原
15 沼泽 沼泽阴湿暗绿 沼泽
16 火山 火山炽热红黑 火山
17 雨林 雨林湿润浓绿 雨林
18 丛林 丛林茂密绿 丛林
19 针叶林 针叶林冷绿高纬 针叶林
20 高山 高山高远冷蓝 高山
21 海洋 海洋蔚蓝开阔 海洋
22 空岛 空岛天空悬浮 空岛
23 盆地 盆地低地柔和 盆地
24 草原 草原开阔绿黄 草原
25 热带草原 热带温暖黄绿 热带草原
26 发光空岛 发光奇幻绚丽 发光空岛
三、环境的可调属性(精细调整时用)
模板是"一键套用",但每个模板内部还有很多可单独微调的属性。下面按类别说明每一项是什么、改了有什么效果。
3.1 ? 核心机制:一天有 8 个时间段
环境不是一套固定画面,而是按一天里的不同时刻分别存了多套配置,时间推进时自动平滑过渡。所以同一个模板,正午和午夜可以完全不一样。
时间段 大致时刻 感受
午夜 0 点 深夜、最暗
黎明前 4 点 将亮未亮
日出 6 点 天边泛光
清晨 8 点 明亮清新
正午 12 点 最亮
下午 16 点 偏暖
黄昏 18 点 日落、橙红
夜晚 20 点 入夜、繁星
关键:调颜色或参数时要想清楚作用于哪个时间段(或选"全天")。比如玩家说"傍晚再暖一点",就只调黄昏段;说"整体调暗",就改全部时间段。下面 3.2~3.10 的属性,每个时间段都可以独立设置。
3.2 天空颜色
天空的渐变主要由顶部、腰部、底部三段颜色决定,这是营造氛围最直接的三个颜色。
设置项 效果
天空顶部颜色 头顶正上方的天色
天空腰部颜色 天空中段的过渡色
天空底部颜色 接近地平线的天色
天空光照颜色 天空整体散发的光的颜色(偏冷/偏暖)
环境光颜色 笼罩全场景的环境光颜色
3.3 光照(明暗)
控制世界整体的亮度和光的颜色,直接决定"白天黑夜""刺眼还是柔和"。
设置项 效果
太阳光强度 主光(平行光)的强弱,决定刺眼或柔和
太阳光颜色 主光的颜色
环境光强度 阴影处、背光面的整体亮度
环境光颜色 补光的颜色
3.4 太阳与月亮
设置项 效果
太阳颜色 太阳本体的颜色
太阳大小 天上太阳的视觉大小
月亮颜色 月亮本体的颜色
月亮大小 天上月亮的视觉大小
3.5 星空
设置项 效果
星星密度 夜空中星星的多少
白天一般没有星星(密度接近 0),夜晚调高才会出现繁星。
3.6 雾
雾是营造"朦胧 / 神秘 / 压抑"氛围的关键。
设置项 效果
雾开关 是否启用雾
雾颜色 雾的颜色(如白雾、紫色毒雾)
雾起始距离 离玩家多远开始有雾
雾结束距离 多远之外完全被雾遮住
起始距离越近、结束距离越近,雾越浓。玩家说"雾浓一点"就把这两个距离都拉近。
3.7 云
设置项 效果
云移动速度 云飘动的快慢
云密度 云的多少/厚度
云高度 云层的高低
云颜色 云的颜色(如晚霞红云、乌云)
3.8 水面
设置项 效果
水面开关 水面的总开关,可整体开启或关闭水面(开/关两态)
水颜色 水的颜色与浑浊感
水透明度 能不能看清水底
水镜面度 水面反射的强弱(越高越像镜子)
说明:水面可通过开关整体开启/关闭;而「反射强度(水镜面度)」只能调节数值大小,没有独立的开关。
3.9 风
设置项 效果
风速 影响植被、粒子等的摆动幅度
3.10 整体材质(不分时间段)
这两项作用于整个世界的物体表面质感,全天统一,不随时间变化。
设置项 效果
整体金属度 物体表面的金属感强弱
整体粗糙度 物体表面的反光是否锐利(越低越亮面,越高越哑光)
四、自定义天空贴图
除了用预设模板,环境还支持替换天空贴图,做出完全自定义的天空。游戏内置了 43 张预设贴图资源供玩家直接选用,也可以上传自己的图片。
可替换的贴图分三类:
贴图层 作用 游戏内置预设数量
天空贴图 整片天空的图案 19 张
太阳贴图 太阳的样式 5 张
月亮贴图 月亮的样式 5 张
4.1 天空贴图预设(19 张)
ID 名称 描述
0_30000 默认 默认天空盒
0_30001 天空1 粉绿渐变(左上绿色到右下粉红色的四色渐变,色块感强)
0_30002 天空2 粉紫渐变(粉色到淡紫色的柔和渐变,右上角有白色光晕)
0_30003 天空3 彩虹渐变(紫粉黄蓝多色流动渐变,梦幻感强)
0_30004 天空4 粉蓝渐变(上粉下蓝的双色渐变,清新柔和)
0_30005 天空5 深空紫(深紫色背景,中央有明亮的紫色光点,神秘感)
0_30006 天空6 银河系(黑色背景,白色星系盘面,写实风格的侧视银河)
0_30007 天空7 紫色星云(紫色调的星云云团,带有星点,梦幻太空感)
0_30008 天空8 绿黄星云(绿色和黄色交织的星云,色彩浓烈,科幻感强)
0_30009 天空9 紫红云海(深紫红色云层,底部有剪影山峰,暗黑奇幻风)
0_30010 天空10 深蓝星空(深蓝黑色夜空,右侧有淡蓝色星云带,宁静深邃)
0_30011 天空11 粉紫星空(粉紫渐变背景,散布白色星点,浪漫梦幻)
0_30012 天空12 紫蓝星云(深紫到蓝色的星云渐变,中央有明亮光带,科幻感强)
0_30013 全景天空1 蓝天白云(写实风格,蓝天+层叠白云,明亮清新)
0_30014 全景天空2 绿色极光(深色天空,绿色极光带,科幻神秘感)
0_30015 全景天空3 水墨山水(黑白水墨风格,层叠山峦剪影,中国风意境)
0_30016 全景天空4 青绿山水(青绿色调的山峦,古典山水画风格)
0_30017 全景天空5 蓝天白云2(深蓝天空,底部白云层,清爽明快)
0_30018 全景天空6 云海日出(云层上方视角,阳光穿透云层,壮丽感)
4.2 太阳贴图预设(5 张)
ID 名称 描述
0_30101 太阳1 黄色太阳(金黄色球体,表面有纹理细节,明亮温暖)
0_30102 太阳2 橙红太阳(橙红色球体,表面颗粒感强,炽热感)
0_30103 太阳3 日环(黑色背景,橙色光环,中心暗黑,日食效果)
0_30104 太阳4 黑洞(黑色球体,周围白色吸积盘,科幻感强)
0_30105 太阳5 白色恒星(白色发光球体,光晕柔和,高亮度)
4.3 月亮贴图预设(5 张)
ID 名称 描述
0_30201 月亮1 写实月球(灰白色月球表面,环形山清晰可见,写实风格)
0_30202 月亮2 血月(深红色月球,神秘诡异氛围)
0_30203 月亮3 蓝色月环(深蓝色球体,外围蓝色光环,科幻感)
0_30204 月亮4 新月(黑色背景,白色弯月+蓝色光晕,宁静梦幻)
0_30205 月亮5 星芒月(白色十字星芒光效,中心明亮,魔幻感强)
4.4 LUT 色彩风格预设(14 张)
这 14 张是滤镜用的 LUT(色彩查找表),不是天空贴图,但也在同一资源表里。玩家在 §五滤镜模板或单独调 LUT 时会用到。
ID 名称 描述
0_30301 冷色调 画面偏蓝绿冷色,营造冷峻、科技或冬季氛围
0_30302 暖色调 画面偏橙黄暖色,营造温暖、怀旧或日落氛围
0_30303 卡通 色彩饱和度高,对比强烈,卡通动画风格
0_30304 夜视 绿色单色调,模拟夜视仪效果
0_30305 反转 颜色反转(负片效果),诡异超现实感
0_30306 电影感 低饱和度+高对比度,电影胶片质感
0_30307 海岛 蓝绿色调为主,清爽海洋度假氛围
0_30308 回忆 泛黄褪色效果,怀旧复古感
0_30309 明艳 高饱和度+高亮度,鲜艳明快
0_30310 青橙 青色阴影+橙色高光,电影调色常用对比色
0_30311 清新 淡雅柔和色调,小清新风格
0_30312 日系 柔和淡雅+轻微过曝,日系摄影风格
0_30313 日系过曝 日系风格+明显过曝,梦幻柔光感
0_30314 郁金香 粉紫色调为主,浪漫柔美氛围(推测以郁金香花色命名)
说明:这 14 个 LUT 对应 §5.1 滤镜模板清单里编号 10~18 那些"套用 XX LUT"的模板,以及单独调节滤镜时的"LUT 色彩风格"选项。
五、滤镜(画面效果)
滤镜作用在镜头/画面上,是和环境配合使用的"成像调色"。玩家可单独调节以下效果:
滤镜效果 作用
对比度 明暗反差(越高越通透分明)
饱和度 颜色的鲜艳程度
泛光强度 亮部的柔光扩散(越高越柔和梦幻)
曝光强度 画面整体亮暗
体积光强度 光束(丁达尔效应)的明显度
伽马强度 中间调的亮暗倾向
以上是常用的 6 项。还有若干"电影色调"高级微调项和「Bloom 阈值」属于进阶项,一般玩家不需要直接调。
此外滤镜还支持几种"一键"能力:
滤镜颜色:给整个画面统一染一层色。
LUT 色彩风格:一键切换预置的色彩调性(游戏内置 14 套)。
滤镜模板:一键套用整套画面风格(游戏内置 19 套,清单见 §5.1)。
玩家说"画面整体偏冷一点""换个电影感"这类,通常用 LUT 或滤镜模板最快达成。
5.1 滤镜模板清单
和环境模板一样,滤镜也有一键套用的预设。共 19 个槽位(编号 0~18,其中 0 为"空模板 = 不套滤镜")。下表「画面效果」一列描述套用后画面大致长什么样,依据各模板的实际调色参数(染色、对比、饱和、曝光等)整理。
编号 名称 画面效果(套用后大致长什么样) 缩略图
0 空模板 不套任何滤镜,画面保持原样 空模板
1 经典 标准默认调色,自然不偏色,作为基准 经典
2 卡通 高饱和、对比略增,颜色鲜艳明快,偏曝光较亮 卡通
3 夜视 套用专门的夜视 LUT,画面整体压暗、泛光关闭,暗环境观感 夜视
4 蓝绿 整体偏黄绿调(暖中带绿),适合山野/自然场景 蓝绿
5 雾蓝 强偏冷蓝调、对比拉高、曝光偏强,冷峻通透的雾感 雾蓝
6 浅红 整体染红、对比很高、饱和降到 0(近单色红),危险/紧张氛围 浅红
7 日出黄 暖黄偏青的晨光调,曝光偏亮,清晨柔和感 日出黄
8 回忆灰 偏灰蓝、对比很高、饱和偏低、曝光偏亮,老照片般的怀旧感 回忆灰
9 黑白 饱和度归零(纯黑白)、对比偏高、曝光很亮,强烈的黑白纪实感 黑白
10 电影感 套用电影感 LUT,对比与色调偏电影质感 电影感
11 海岛 套用海岛 LUT,明亮通透、偏清爽的海岛色调 海岛
12 回忆 套用回忆 LUT,偏柔和怀旧的色调 回忆
13 明艳 套用明艳 LUT,色彩浓郁鲜亮 明艳
14 青橙 套用青橙 LUT,暗部偏青、亮部偏橙的电影流行配色 青橙
15 清新 套用清新 LUT,淡雅明快、偏小清新 清新
16 日系 套用日系 LUT,低对比、淡雅通透的日系观感 日系
17 日系过曝 套用日系过曝 LUT,在日系基础上整体更亮、发白的过曝感 日系过曝
18 郁金香 套用郁金香 LUT,偏暖粉/紫的柔美色调 郁金香
六、脚本接口(写 Lua 时用)
如果你要在地图里用脚本动态控制环境(比如玩家进入某区域自动切换成夜晚、Boss 出现时天空变红),就需要调用下面的接口。以下接口均来自游戏可视化编程 / Lua 脚本实际暴露的能力。
说明:
time 参数填游戏时间(小时),可用时间点见 §3.1 的 8 个时间段(如 0 / 6 / 12 / 18 / 20)。
itype 参数填对应的设置项类型(如颜色项、属性项),即 §三 各表里列的那些设置项。
颜色统一用 16 进制字符串,如 0xffffff(白)、0xff0000(红)。
多数数值参数取值范围为 0~100。
带 Anim 的接口支持过渡动画,让变化平滑而非瞬变。
6.1 环境(世界场景)接口
接口 作用 主要参数
World:SetSkyBoxTemplate(value) 一键切换环境模板 value:模板编号 0~26
World:SetSkyBoxColor(time, itype, color) 设置某时间段的某项颜色 time 时间;itype 颜色项;color 如 0xffffff
World:SetSkyBoxAttr(time, itype, value) 设置某时间段的某项参数 time 时间;itype 参数项;value 0~100
World:SetSkyBoxAttrWithNoTime(itype, value) 设置不分时间的参数(如金属度/粗糙度) itype 参数项;value 0~100
World:SetSkyBoxSwitch(time, itype, value) 设置开关类(如雾的开/关) time 时间;itype 开关项;value 0/1
World:SetSkyBoxMaps(itype, url) 替换天空/太阳/月亮贴图 itype 贴图层;url 图片链接
6.2 滤镜(画面效果)接口
滤镜是针对玩家生效的,所以接口带 playerid(可传单个玩家或玩家组)。
接口 作用 主要参数
World:SetSkyBoxFilter(playerid, itype, value) 设置某项滤镜参数 playerid 玩家;itype 滤镜项;value 0~100 或颜色值
Trigger.World:SetSkyBoxFilterColor(...) 设置滤镜整体染色 玩家/玩家组;颜色值
Trigger.World:SetSkyBoxFilterLUT(...) 切换滤镜色彩风格(LUT,14 套) 玩家/玩家组;LUT 编号
Trigger.World:SetSkyBoxFilterTemplate(...) 一键套用滤镜模板(19 套) 玩家/玩家组;模板编号
6.3 带过渡动画的接口
切换时希望"渐变而非突变",用下面这些。animTime 是过渡时长(毫秒,建议 1000 左右),animId 是缓动方式。
接口 作用
World:SetSkyBoxMapsAnim(playerid, itype, url, animId, animTime) 带动画的贴图替换
World:SetSkyBoxColorAnim(playerid, itype, color, animId, animTime) 带动画的颜色变化
World:SetSkyBoxFilterAnim(playerid, itype, value, animId, animTime) 带动画的滤镜变化
七、基础环境控制
除了天空盒外观,迷你世界还提供一组操控世界底层规则的接口,包括时间、天气、重力、生长倍率等。这些与天空盒配合使用,能更完整地控制世界的感受。当然,你也可以单独使用它们——不碰天空盒,只改天气和重力。
说明:以下接口均来自 World 模块,详见 世界模块管理接口。
7.1 游戏时间
游戏内有一套独立的昼夜循环系统。时间以「小时」为单位,一天 24 小时循环。
接口 作用 说明
World:SetHours(time) 设置世界时间 time 0~24 小时
World:GetHours() 获取当前世界时间 返回当前小时数(0~24)
World:GetDay() 获取已过的天数 从世界创建到现在的总天数
World:SetTimeVanishingSpeed(speed) 设置时间流逝速度 speed 数值,越大时间过得越快
World:IsDaytime() 判断当前是否为白天 返回 true/false
-- 把世界时间设到正午12点
World:SetHours(12)
-- 把时间流逝速度调快(40 = 快速昼夜交替)
World:SetTimeVanishingSpeed(40)
-- 判断当前是白天还是黑夜
if World:IsDaytime() then
print("现在是白天")
else
print("现在是黑夜")
end
7.2 天气
迷你世界支持按地形组设置天气。不同地形组可以有不同的天气(晴天、下雨、下雪等)。
天气类型枚举(GroupWeatherType):
枚举 效果
GroupWeatherType.Shine 晴天
GroupWeatherType.Rain 雨天
GroupWeatherType.Thunder 雷暴
GroupWeatherType.Snow 雪天
GroupWeatherType.Sandduststorm 沙尘暴
GroupWeatherType.Tempest 暴风雨
GroupWeatherType.Blizzard 暴风雪
GroupWeatherType.Bad 恶劣天气
GroupWeatherType.ShineAndRain 晴雨交替
地形组枚举(WeatherGroup):
枚举 说明
WeatherGroup.Global 全局对象
WeatherGroup.Common 常见组
WeatherGroup.Ocean 海洋组
WeatherGroup.Desert 沙漠组
WeatherGroup.Frigidzone 普通寒带
WeatherGroup.Coldzone 高峰寒带
WeatherGroup.Volcano 火山组
WeatherGroup.Nunja 湿地组
WeatherGroup.Plain 平坦组
WeatherGroup.AirIsland 空岛组
接口 作用 说明
World:SetGroupWeather(groupid, weatherid) 设置某地形组的天气 groupid 地形组;weatherid 天气
World:GetGroupWeather(groupid) 获取某地形组的天气 返回天气 ID
World:RandomWeatherID() 随机一个天气 ID 从可用天气列表中随机
-- 把常见地形组的天气设为晴天
World:SetGroupWeather(WeatherGroup.Common, GroupWeatherType.Shine)
-- 把海洋组设为暴风雨
World:SetGroupWeather(WeatherGroup.Ocean, GroupWeatherType.Tempest)
-- 获取当前常见组的天气
local weather = World:GetGroupWeather(WeatherGroup.Common)
7.3 重力
重力倍数控制玩家和生物的跳跃、下落速度。默认重力为 9.8(近似地球重力)。
接口 作用 说明
World:SetGravity(value) 设置重力倍数 value 数值,基数 9.8 ≈ 正常重力
World:AddGravity(value) 增加重力 在当前重力基础上增加一个值
World:GetGravity(worldId) 获取当前重力 可选参数 worldId 指定星球
-- 设置低重力(月球漫步感)
World:SetGravity(3)
-- 在现有重力上再翻倍
World:AddGravity(10)
-- 获取当前重力
local g = World:GetGravity()
print("当前重力:" .. g)
7.4 世界规则调整
一些更细粒度的世界规则也可以通过接口控制:
接口 作用 说明
World:SetPlantGrowRate(rate) 设置农作物生长倍率 rate 时间倍率(>0),不保存,退出后失效
World:SetMobSpawnDensity(mobType, density) 设置生物生成密度 mobType 生物类型枚举;density 0~2000
World:SetMidJoin(enable) 设置是否允许中途加入 true 允许 / false 禁止
-- 设置作物快速生长(5倍速)
World:SetPlantGrowRate(5)
-- 设置动物生成密度为 500
World:SetMobSpawnDensity(MobType.Passive, 500)
-- 禁止中途加入
World:SetMidJoin(false)
本 Wiki 内容均依据《迷你世界》实际功能整理。风格描述类内容为建议值,请结合游戏内实际效果校正。最后更新时间:2026-06-10
更新日志
新增接口列表
1.59+
所属对象 函数名 函数描述
Player EnterGunState(...) 进入枪械状态 (1.59+)
Player LevelGunState(...) 离开枪械状态 (1.59+)
1.54+
所属对象 函数名 函数描述
Graphics RemoveGraphicsByGraphicsID(...) 按ID删除图文 (1.54+)
Player GetFriendList(...) 获取好友列表 (1.54+)
Player SetSettingEnable(...) 设置游戏开关 (1.54+)
Player SetSettingAbility(...) 设置游戏设置权限 (1.54+)
Player RotateMainModel(...) 旋转玩家模型 (1.54+)
World IsChunkLoaded(...) 区块是否加载 (1.54+)
World CanMobSpawnOnPosXZ(...) 获取可刷怪的Y坐标 (1.54+)
1.52+
所属对象 函数名 函数描述
Item GetTags(...) 获取道具定义中的标签组 (1.52+)
Map IncreasesRankValueAndBlock(...) 阻塞增加排行榜分数 (1.52+)
Map IncreasesRankValueAndCallback(...) 回调增加排行榜分数 (1.52+)
Map GetRangeIndexsAndCallback(...) 回调获取排行榜名次区间 (1.52+)
Monster GetTags(...) 获取生物标签组 (1.52+)
1.50+
所属对象 函数名 函数描述
Actor IncreasesAttr(...) 增加角色属性值 (1.50+)
CustomUI DeleteElement(...) 删除UI元件 (1.50+)
Data IncreasesValue(...) 数值变量增加值 (1.50+)
Graphics UpdateGraphicsTextById(...) 更新文字板内容 (1.50+)
Graphics UpdateGraphicsProgressById(...) 更新进度条进度 (1.50+)
Map SetValueAndCallBack(...) 回调设置KV数据 (1.50+)
Map SetValueAndBlock(...) 阻塞设置KV数据 (1.50+)
Map RemoveValueAndCallBack(...) 回调删除KV数据 (1.50+)
Map RemoveValueAndBlock(...) 阻塞删除KV数据 (1.50+)
Map UpdateValueAndCallback(...) 回调更新KV数据 (1.50+)
Map GetValueAndCallBack(...) 回调获取KV数据 (1.50+)
Map GetValueAndBlock(...) 阻塞获取KV数据 (1.50+)
Map GetIndexValueAndCallback(...) 回调获取排行榜指定名次 (1.50+)
Map GetIndexValueAndBlock(...) 阻塞获取排行榜指定名次 (1.50+)
Map GetNumValuesAndCallback(...) 回调获取排行榜前N条 (1.50+)
Map GetRangeValuesAndCallback(...) 回调获取排行榜分数区间 (1.50+)
Map SetRankValueAndBlock(...) 阻塞设置排行榜分数 (1.50+)
Map ClearData(...) 清空表数据 (1.50+)
Player RemovePlayer(...) 将玩家移出本局 (1.50+)
World AddGravity(...) 增加重力 (1.50+)
1.48+
所属对象 函数名 函数描述
Backpack SetGridsLock(...) 设置背包格锁定状态 (1.48+)
Backpack SetBackPackNum(...) 设置背包数量 (1.48+)
Backpack CreateItemInstInBackpack(...) 创建道具实例到背包 (1.48+)
Backpack IsLock(...) 获取背包格是否锁定 (1.48+)
Backpack GetGridAttr(...) 获取背包格属性 (1.48+)
Backpack SetGridAttr(...) 设置背包格属性 (1.48+)
Block SetBlockData(...) 设置方块数据 (1.48+)
Block SetBlockTextureColor(...) 设置方块纹理颜色 (1.48+)
Item GetItemInstFacade(...) 获取具有道具实例ID的道具外观 (1.48+)
Item GetGridAttr(...) 获取掉落物或者投掷物的格子属性 (1.48+)
WorldContainer SwapContainerItem(...) 交换容器与背包道具 (1.48+)
WorldContainer GetGridAttr(...) 获取格子属性 (1.48+)
1.47+
所属对象 函数名 函数描述
Backpack DiscardItem(...) 丢弃背包格道具 (1.47+)
Backpack GetGridInfos(...) 批量获取背包格信息 (1.47+)
Backpack LoadGridInfos(...) 加载背包和快捷栏格子信息数据 (1.47+)
Backpack DecodeGridInfo(...) 解析格子信息 (1.47+)
Backpack EncodeTableGridInfo(...) 打包格子信息 (1.47+)
Backpack ClearGrids(...) 批量清理背包格 (1.47+)
Backpack GetAllBackPackInstanceIds(...) 获取背包所有道具实例ID (1.47+)
Backpack CreateGunInBackpack(...) 创建枪械到背包 (1.47+)
Backpack GetInstIdByGridIndex(...) 根据背包索引获取道具实例ID (1.47+)
Backpack GetGunInstIdInBackpack(...) 获取背包所有枪械实例ID (1.47+)
Block IsSolidBlock(...) 判断是否为固体方块 (1.47+)
Block IsLiquidBlock(...) 判断是否为液体方块 (1.47+)
Block IsAirBlock(...) 判断是否为空气方块 (1.47+)
Block GetBlockPowerStatus(...) 获取方块通电状态 (1.47+)
Block PlayCrackEffect(...) 播放方块裂纹特效 (1.47+)
Block PlayDestroyEffect(...) 播放方块损毁特效 (1.47+)
Block GetBlockDropItemType(...) 获取方块掉落物信息 (1.47+)
Block GetBlockDropExp(...) 获取方块采集经验 (1.47+)
Buff GetBuffList(...) 获取效果列表 (1.47+)
Buff GetBuffNumByBuffid(...) 获取效果数量 (1.47+)
CloudSever GetRoomID(...) 获取当前云服房间ID (1.47+)
GameObject GetObjectPrefab(...) 获取对象预制ID (1.47+)
Graphics ReplaceAllGraphics(...) 迁移所有图文到目标对象 (1.47+)
Item GetCraftIDNum(...) 获取道具配方数量 (1.47+)
Item GetCraftMaterialAndNum(...) 获取道具配方材料与数量 (1.47+)
Item CreateItemInstInWorld(...) 在位置上创建道具掉落物 (1.47+)
Item ModifyGunAttribute(...) 修改枪械道具实例的属性 (1.47+)
Item GetGunAttribute(...) 获取枪械道具实例的属性 (1.47+)
Item GetGunPrefabAttribute(...) 获取枪预制的属性 (1.47+)
Item GetItemIdByInstanceId(...) 根据道具实例ID获取道具ID (1.47+)
Item AddSubModelPart(...) 给道具实例添加一个模型子部件 (1.47+)
Item DeleteSubModelPart(...) 删除一个道具实例的模型子部件 (1.47+)
Item ReplaceSubModelPart(...) 修改一个道具实例的模型子部件 (1.47+)
Item SetStringCustomData(...) 设置道具实例的自定义数据string (1.47+)
Item SetBoolCustomData(...) 设置道具实例的自定义数据bool (1.47+)
Item SetNumberCustomData(...) 设置道具实例的自定义数据number (1.47+)
Item SetObjCustomData(...) 设置道具实例的自定义数据Object (1.47+)
Item SetArrayCustomData(...) 设置道具实例的自定义数据Array (1.47+)
Item GetStringCustomData(...) 获取道具实例的自定义数据string (1.47+)
Item GetBoolCustomData(...) 获取道具实例的自定义数据bool (1.47+)
Item GetNumberCustomData(...) 获取道具实例的自定义数据number (1.47+)
Item GetObjCustomData(...) 获取道具实例的自定义数据Object (1.47+)
Item GetArrayCustomData(...) 获取道具实例的自定义数据Array (1.47+)
Monster GetActorName(...) 获取生物类型名称 (1.47+)
Monster GetMonsterDefLevelExp(...) 获取击杀掉落经验 (1.47+)
Monster SetMonsterDefLevelExp(...) 设置击杀掉落经验 (1.47+)
Monster CanSee(...) 怪物是否可见目标 (1.47+)
Monster GetDropItemInfo(...) 获取生物的掉落物信息 (1.47+)
Player RotateCameraToActor(...) 旋转摄像机朝向目标 (1.47+)
Player GetRayOriginPos(...) 获取射线起点位置 (1.47+)
Player OpenDevGoodsBuyDialog(...) 打开开发者商品购买弹框 (1.47+)
Player OpenDevGoodsBuyDetailedDialog(...) 打开开发者商品详情页 (1.47+)
Player OpenDevStore(...) 打开开发者商店 (1.47+)
Player OpenDevStoreTab(...) 打开开发者商店二级分类 (1.47+)
Player OpenDevGoodsPage(...) 打开开发者商店一级页面 (1.47+)
Player ClearMotion(...) 清空运动趋势 (1.47+)
Player GetScreenSpacePos(...) 获取屏幕坐标 (1.47+)
Player GetScreenSpacePosV2(...) 获取屏幕坐标V2 (1.47+)
Player ChangPlayerMoveType(...) 切换移动方式 (1.47+)
Player PlayAdvertising(...) 播放广告 (1.47+)
Player GetViewMode(...) 获取视角模式 (1.47+)
Player GetRevivePoint(...) 获取复活点 (1.47+)
World FindCanSpawnMobPosList(...) 查找附近可刷怪位置列表 (1.47+)
World FindNearestPlayerByPos(...) 获取离指定位置最近的玩家 (1.47+)
World IsDaytime(...) 是否白天 (1.47+)
World GetBiomeType(...) 获取地形类型 (1.47+)
World FindEcosystem(...) 查找地形位置 (1.47+)
World SetWorldCreateMobRule(...) 设置世界生物生成规则 (1.47+)
World SetPlantGrowRate(...) 设置农作物生长倍率 (1.47+)
World SetInnerViewEnable(...) 设置内置界面启用 (1.47+)
World SetMidJoin(...) 设置中途加入开关 (1.47+)
World GetGameMode(...) 获取游戏模式 (1.47+)
新增事件列表