# 区域管理接口 Area
在使用区域接口前需先创建区域管理对象,方法如下:(此处已废弃)
local Area = class.Area.new()
具体函数名及描述如下:
# createAreaRect
- 参数及类型:
- 返回值及类型:
- 该方法的主要作用: 创建矩形区域
- 具体使用案例如下:
--通过中心点和扩展长度创建一个区域
--第一个参数{x=0,y=10,z=0}为区域中心坐标组成的表
--第二个参数{x=1,y=2,z=3}为区域各方向扩展的距离组成的表
local result,areaid=Area:createAreaRect({x=0,y=10,z=0},{x=1,y=2,z=3})
--在聊天框显示
Chat:sendSystemMsg("以(0,0)高度10为中心,左右各扩展1格,上下各扩展2格,前后各扩展3格,创建了一个区域,id为"..areaid)
# createAreaRectByRange
- 参数及类型:
- 返回值及类型:
- 该方法的主要作用: 创建矩形区域(通过范围)
- 具体使用案例如下:
--通过起点终点坐标创建区域
--第一个参数为区域起点坐标组成的表,即面朝北时,区域的左、下、后方的顶点坐标
--第二个参数为区域终点坐标组成的表,即面朝北时,区域的右、上、前方的顶点坐标
local result,areaid=Area:createAreaRectByRange({x=0,y=7,z=0},{x=5,y=10,z=5})
--在聊天框显示
Chat:sendSystemMsg("以(0,0)高度7为起点,(5,5)高度10为终点创建一个区域,id为"..areaid)
# destroyArea
--销毁指定区域,参数为区域id
Area:destroyArea(1)
--在聊天框显示
Chat:sendSystemMsg("销毁了id为1的区域")
# getAreaByPos
- 参数及类型:
- pos:
table
区域中心位置
- pos:
- 返回值及类型:
- 该方法的主要作用: 通过位置查找区域
- 具体使用案例如下:
--判断某坐标所属的区域,参数为坐标组成的表
local result,areaid=Area:getAreaByPos({x=0,y=7,z=0})
if result==0 then--如果获取成功
--在聊天框显示
Chat:sendSystemMsg("(0,0)高度7所在的区域id为"..areaid)
else--如果获取失败
--在聊天框显示
Chat:sendSystemMsg("获取失败,或(0,0)高度7不属于任何区域")
end
# offsetArea
- 参数及类型:
- 返回值及类型:
- 该方法的主要作用: 区域偏移
- 具体使用案例如下:
--创建一个区域
local result,areaid = Area:createAreaRect({x=0,y=10,z=0},{x=30,y=30,z=30})
--在聊天框显示
Chat:sendSystemMsg("创建了以(0,0)高度10为中心,向左右上下前后各扩展30格的区域,区域id为"..areaid)
--平移区域范围
--第一个参数为要平移的区域id
--后三个参数分别为向右、上、前的平移距离,可为负
Area:offsetArea(areaid,5,5,5)
--在聊天框显示
Chat:sendSystemMsg("id为"..areaid.."的区域被向右、上、前各移动了5格")
# expandArea
- 参数及类型:
- 返回值及类型:
- 该方法的主要作用: 扩大区域
- 具体使用案例如下:
--创建一个区域
local result,areaid=Area:createAreaRect({x=0,y=10,z=0},{x=30,y=30,z=30})
--在聊天框显示
Chat:sendSystemMsg("创建了以(0,0)高度10为中心,向左右上下前后各扩展30格的区域,区域id为"..areaid)
--扩充区域范围
--第一个参数为区域id
--后三个参数分别为区域向左右、上下、前后扩充的距离
Area:expandArea(areaid,2,2,2)
--在聊天框显示
Chat:sendSystemMsg("id为"..areaid.."的区域向左右、上下、前后各扩充了2格范围")
# getAreaCenter
- 参数及类型:
- areaid:
number
区域ID
- areaid:
- 返回值及类型:
- 该方法的主要作用: 获取区域中间点
- 具体使用案例如下:
--创建一个区域
local result,areaid=Area:createAreaRect({x=0,y=10,z=0},{x=30,y=30,z=30})
--在聊天框显示
Chat:sendSystemMsg("创建了以(0,0)高度10为中心,向左右上下前后各扩展30格的区域,区域id为"..areaid)
--获取指定区域的中心坐标,参数为要获取中心的区域id
local result,pos=Area:getAreaCenter(areaid)
--在聊天框显示
Chat:sendSystemMsg("id为"..areaid.."的区域的中心点坐标为:("..pos.x..","..pos.y..","..pos.z..")")
# getAreaRectLength
- 参数及类型:
- areaid:
number
区域ID
- areaid:
- 返回值及类型:
- 该方法的主要作用: 获取区域各边长
- 具体使用案例如下:
--创建一个区域
local result,areaid=Area:createAreaRect({x=0,y=10,z=0},{x=30,y=30,z=30})
--在聊天框显示
Chat:sendSystemMsg("创建了以(0,0)高度10为中心,向左右上下前后各扩展30格的区域,区域id为"..areaid)
--获取指定区域各方向的边长,参数为区域id
local result,x,y,z=Area:getAreaRectLength(areaid)
--在聊天框显示
Chat:sendSystemMsg("id为"..areaid.."的区域各方向的边长为:左右"..x..",上下"..y..",前后"..z)
# getAreaRectRange
- 参数及类型:
- areaid:
number
区域ID
- areaid:
- 返回值及类型:
- 该方法的主要作用: 获取区域范围
- 具体使用案例如下:
--创建一个区域
local result,areaid=Area:createAreaRect({x=0,y=10,z=0},{x=30,y=30,z=30})
--在聊天框显示
Chat:sendSystemMsg("创建了以(0,0)高度10为中心,向左右上下前后各扩展30格的区域,区域id为"..areaid)
--获取指定区域的起点和终点坐标,参数为区域id
local result,posBeg,posEnd=Area:getAreaRectRange(areaid)
--在聊天框显示
Chat:sendSystemMsg("id为"..areaid.."的区域的起点坐标为("..posBeg.x..","..posBeg.y..","..posBeg.z.."),终点坐标为("..posEnd.x..","..posEnd.y..","..posEnd.z..")")
# getRandomPos
- 参数及类型:
- areaid:
number
区域ID
- areaid:
- 返回值及类型:
- 该方法的主要作用: 随机区域内位置
- 具体使用案例如下:
--创建一个区域
local result,areaid=Area:createAreaRect({x=0,y=10,z=0},{x=30,y=30,z=30})
--在聊天框显示
Chat:sendSystemMsg("创建了以(0,0)高度10为中心,向左右上下前后各扩展30格的区域,区域id为"..areaid)
--从指定区域中随机获取一个坐标,参数为区域id
local result,pos=Area:getRandomPos(areaid)
--在聊天框显示
Chat:sendSystemMsg("从id为"..areaid.."的区域中随机获取了一个坐标("..pos.x..","..pos.y..","..pos.z..")")
# objInArea
- 参数及类型:
- 返回值及类型:
- 该方法的主要作用: 检测obj是否在区域内
- 具体使用案例如下:
--创建一个区域
local result,areaid=Area:createAreaRect({x=0,y=10,z=0},{x=30,y=30,z=30})
--在聊天框显示
Chat:sendSystemMsg("创建了以(0,0)高度10为中心,向左右上下前后各扩展30格的区域,区域id为"..areaid)
--判断某对象是否在指定区域中
--第一个参数为区域id
--第二个参数为对象id,可以是玩家迷你号、生物id或掉落物id等等
local result=Area:objInArea(areaid,1000)
if result==0 then--如果在区域内
--在聊天框显示
Chat:sendSystemMsg("玩家1000在区域"..areaid.."内部")
else--如果不在内部或获取失败
--在聊天框显示
Chat:sendSystemMsg("玩家1000不在区域"..areaid.."内部,或玩家1000不在当前存档")
end
# blockInArea
- 参数及类型:
- 返回值及类型:
- 该方法的主要作用: 检测区域内是否有某个方块
- 具体使用案例如下:
--创建一个区域
local result,areaid=Area:createAreaRect({x=0,y=10,z=0},{x=30,y=30,z=30})
--在聊天框显示
Chat:sendSystemMsg("创建了以(0,0)高度10为中心,向左右上下前后各扩展30格的区域,区域id为"..areaid)
--判断指定区域是否包含某种方块
--第一个参数为区域id
--第二个参数为方块id
local result=Area:blockInArea(areaid,101)
if result==0 then--如果包含
--在聊天框显示
Chat:sendSystemMsg("id为"..areaid.."的区域内有土块")
else--如果不包含
--在聊天框显示
Chat:sendSystemMsg("id为"..areaid.."的区域内没有土块")
end
# posInArea
- 参数及类型:
- 返回值及类型:
- 该方法的主要作用: 位置是否再区域内
- 具体使用案例如下:
--创建一个区域
local result,areaid=Area:createAreaRect({x=0,y=10,z=0},{x=30,y=30,z=30})
--在聊天框显示
Chat:sendSystemMsg("创建了以(0,0)高度10为中心,向左右上下前后各扩展30格的区域,区域id为"..areaid)
--判断某坐标是否在指定区域内
--第一个参数为要判断的坐标组成的表
--第二个参数为区域id
local result=Area:posInArea({x=0,y=7,z=0},areaid)
if result==0 then--如果在内部
--在聊天框显示
Chat:sendSystemMsg("(0,0)高度7的位置在id为"..areaid.."的区域内")
else--如果不在内部
--在聊天框显示
Chat:sendSystemMsg("(0,0)高度7的位置不在id为"..areaid.."的区域内")
end
# getAreaPlayers
- 参数及类型:
- areaid:
number
区域唯一ID
- areaid:
- 返回值及类型:
- 该方法的主要作用: 获取区域中的所有玩家
- 具体使用案例如下:
--创建一个区域
local result,areaid=Area:createAreaRect({x=0,y=10,z=0},{x=30,y=30,z=30})
--在聊天框显示
Chat:sendSystemMsg("创建了以(0,0)高度10为中心,向左右上下前后各扩展30格的区域,区域id为"..areaid)
--获取区域内的玩家列表,参数为区域id
local result,playerlist=Area:getAreaPlayers(areaid)
if #playerlist>0 then--如果区域内存在玩家
for i,a in ipairs(playerlist) do
--在聊天框显示列表
Chat:sendSystemMsg("区域"..areaid.."内第"..i.."个玩家:"..a)
end
else--如果区域内不存在玩家
--在聊天框显示
Chat:sendSystemMsg("区域"..areaid.."内没有玩家")
end
# getAreaCreatures
- 参数及类型:
- areaid:
number
区域唯一ID
- areaid:
- 返回值及类型:
- 该方法的主要作用: 获取区域中的所有生物
- 具体使用案例如下:
--创建一个区域
local result,areaid=Area:createAreaRect({x=0,y=10,z=0},{x=30,y=30,z=30})
--在聊天框显示
Chat:sendSystemMsg("创建了以(0,0)高度10为中心,向左右上下前后各扩展30格的区域,区域id为"..areaid)
--获取区域内的生物列表,参数为区域id
local result,creaturelist=Area:getAreaCreatures(areaid)
if #creaturelist>0 then--如果区域内存在生物
for i,a in ipairs(creaturelist) do
--在聊天框显示列表
Chat:sendSystemMsg("区域"..areaid.."内第"..i.."个生物:"..a)
end
else--如果区域内不存在生物
--在聊天框显示
Chat:sendSystemMsg("区域"..areaid.."内没有生物")
end
# fillBlock
- 参数及类型:
- 返回值及类型:
- 该方法的主要作用: 用方块填充区域
- 具体使用案例如下:
--创建一个区域
local result,areaid=Area:createAreaRect({x=0,y=10,z=0},{x=3,y=3,z=3})
--在聊天框显示
Chat:sendSystemMsg("创建了以(0,0)高度10为中心,向左右上下前后各扩展3格的区域,区域id为"..areaid)
--用方块填充指定区域
--第一个参数为区域id
--第二个参数为要填充的方块id,1为基岩
--第三个参数为方块朝向:0西 1东 2南 3北 4下 5上
Area:fillBlock(areaid,1,0)
--在聊天框显示
Chat:sendSystemMsg("区域"..areaid.."被填充了基岩")
# clearAllBlock
- 参数及类型:
- 返回值及类型:
- 该方法的主要作用: 清空区域内全部方块
- 具体使用案例如下:
--创建一个区域
local result,areaid=Area:createAreaRect({x=0,y=10,z=0},{x=30,y=30,z=30})
--在聊天框显示
Chat:sendSystemMsg("创建了以(0,0)高度10为中心,向左右上下前后各扩展30格的区域,区域id为"..areaid)
--清空指定区域内的指定方块
--第一个参数为区域id
--第二个参数为要清除的方块id
Area:clearAllBlock(areaid,101)
--在聊天框显示
Chat:sendSystemMsg("清空了区域"..areaid.."内的所有土块")
# cloneArea
- 参数及类型:
- 返回值及类型:
- 该方法的主要作用: 复制区域内方块到另一个区域
- 具体使用案例如下:
--创建一个区域
local result,areaid=Area:createAreaRect({x=0,y=10,z=0},{x=30,y=30,z=30})
--在聊天框显示
Chat:sendSystemMsg("创建了以(0,0)高度10为中心,向左右上下前后各扩展30格的区域,区域id为"..areaid)
--复制区域内的方块到另一位置
--第一个参数为要复制的区域id
--第二个参数为要复制到的起点坐标组成的表
Area:cloneArea(areaid,{x=0,y=10,z=0})
--在聊天框显示
Chat:sendSystemMsg("把区域"..areaid.."内的所有方块复制到了(0,0)高度10的位置,此坐标与区域起点对应")
# getPosOffset
- 参数及类型:
- 返回值及类型:
- 该方法的主要作用: 获取位置的偏移距离
- 具体使用案例如下:
local code, pos = Area:getPosOffset(srcpos, dim)
if code == ErrorCode.OK then
print('执行成功', code, pos )
else
print('执行失败')
end
# replaceAreaBlock
- 参数及类型:
- 返回值及类型:
- 该方法的主要作用: 替换方块类型为新的方块类型
- 具体使用案例如下:
--创建一个区域
local result,areaid=Area:createAreaRect({x=0,y=10,z=0},{x=30,y=30,z=30})
--在聊天框显示
Chat:sendSystemMsg("创建了以(0,0)高度10为中心,向左右上下前后各扩展30格的区域,区域id为"..areaid)
--把指定区域内的一种方块替换成新的方块
--第一个参数为区域id
--第二个参数为要替换掉的方块id,101是土块
--第三个参数为要替换为的方块id,1是地心基石
--最后一个参数为方块朝向:0西 1东 2南 3北 4下 5上
Area:replaceAreaBlock(areaid,101,1,0)
--在聊天框显示
Chat:sendSystemMsg("区域"..areaid.."内所有土块被替换为了基岩")
# blockInAreaRange
- 参数及类型:
- 返回值及类型:
- 该方法的主要作用: 检测两个位置范围内有方块
- 具体使用案例如下:
--判断两点之前的范围内有没有某种方块
--第一个参数为方块id,101是土块
--后两个参数分别是范围起点和终点坐标组成的表
local result=Area:blockInAreaRange(101,{x=0,y=5,z=0},{x=1,y=8,z=1})
if result==0 then--如果包含
--在聊天框显示
Chat:sendSystemMsg("在(0,0)高度5到(1,1)高度8的范围内有土块")
else--如果不包含
--在聊天框显示
Chat:sendSystemMsg("在(0,0)高度5到(1,1)高度8的范围内没有土块")
end
# getAllObjsInAreaRange
- 参数及类型:
- 返回值及类型:
- 该方法的主要作用: 获取区域范围内全部对象
- 具体使用案例如下:
local code, objs = Area:getAllObjsInAreaRange(posbeg, posend, objtype)
if code == ErrorCode.OK then
print('执行成功', code, objs )
else
print('执行失败')
end
# getAllObjsInAreaRangeByObjTypes
- 参数及类型:
- 返回值及类型:
- 该方法的主要作用: 获取区域范围内全部对象
- 具体使用案例如下:
local code, objs = Area:getAllObjsInAreaRangeByObjTypes(posbeg, posend, objtypes)
if code == ErrorCode.OK then
print('执行成功', code, objs )
else
print('执行失败')
end
# getAllPlayersInAreaRange
- 参数及类型:
- 返回值及类型:
- 该方法的主要作用: 获取区域范围内全部玩家
- 具体使用案例如下:
local code, objs = Area:getAllPlayersInAreaRange(posbeg, posend)
if code == ErrorCode.OK then
print('执行成功', code, objs )
else
print('执行失败')
end
# getAllCreaturesInAreaRange
- 参数及类型:
- 返回值及类型:
- 该方法的主要作用: 获取区域范围内全部生物
- 具体使用案例如下:
local code, objs = Area:getAllCreaturesInAreaRange(posbeg, posend)
if code == ErrorCode.OK then
print('执行成功', code, objs )
else
print('执行失败')
end
# fillBlockAreaRange
- 参数及类型:
- 返回值及类型:
- 该方法的主要作用: 用方块填充区域范围
- 具体使用案例如下:
--在两点之间的范围内填充某方块
--前两个参数为填充范围的起点和终点坐标组成的表
--第三个参数1为要填充的方块id,1是地心基石
--第四个参数0为方块朝向:0西 1东 2南 3北 4下 5上
Area:fillBlockAreaRange({x=0,y=7,z=0},{x=5,y=9,z=5},1,0)
--在聊天框显示
Chat:sendSystemMsg("从(0,0)高度7到(5,5)高度9的范围被填充了基岩")
# clearAllBlockAreaRange
- 参数及类型:
- 返回值及类型:
- 该方法的主要作用: 清空区域范围内方块
- 具体使用案例如下:
--清空两点之间范围内的某方块
--前两个参数为范围的起点和终点坐标组成的表
--第三个参数为要清除的方块id,101是土块
Area:clearAllBlockAreaRange({x=0,y=7,z=0},{x=5,y=9,z=5},101)
--在聊天框显示
Chat:sendSystemMsg("清空了(0,0)高度7到(5,5)高度9范围内的土块")
# DestroyBlockAreaRange
- 参数及类型:
- 返回值及类型:
- 该方法的主要作用: 删除区域范围内方块
- 具体使用案例如下:
local code = Area:DestroyBlockAreaRange(posbeg, posend, blockid)
if code == ErrorCode.OK then
print('执行成功', code )
else
print('执行失败')
end
# cloneAreaRange
- 参数及类型:
- 返回值及类型:
- 该方法的主要作用: 复制区域范围内方块到另一个区域
- 具体使用案例如下:
--复制两点之间范围内的方块到另一位置
--前两个参数为范围的起点和终点坐标组成的表
--后一个参数为要复制到的范围起点坐标
Area:cloneAreaRange({x=0,y=3,z=0},{x=5,y=7,z=5},{x=0,y=10,z=0})
--在聊天框显示
Chat:sendSystemMsg("把(0,0)高度3到(5,5)高度7范围内的方块复制到了(0,0)高度10(以此为起点)")
# replaceAreaRangeBlock
- 参数及类型:
- 返回值及类型:
- 该方法的主要作用: 替换区域范围方块
- 具体使用案例如下:
--替换两点之间范围内的某种方块为另一种方块
--前两个参数为范围的起点和终点坐标组成的表
--第三个参数101为要替换掉的方块id,101是土块
--第四个参数为要替换为的方块id,1是地心基石
--最后一个参数为方块朝向:0西 1东 2南 3北 4下 5上
Area:replaceAreaRangeBlock({x=0,y=3,z=0},{x=5,y=7,z=5},101,1,0)
--在聊天框显示
Chat:sendSystemMsg("从(0,0)高度3到(5,5)高度7的范围内,所有的土块被替换为了基岩")
← UI管理接口 UI 聊天管理接口 Chat →