--- 成就系统
-- 玩家成就相关的处理
-- 针对成就使用如有疑问，请参考 [如何使用成就功能](https://creator.ymzx.qq.com/dream_helper/dist/onboarding/achievement/index.html)
                
--- @module "Achievement"

                
---@class Achievement
local Achievement = {}
                --- 设置玩家成就进度。
---@param PlayerID number -- 玩家ID
---@param AchievementID number -- 成就id按顺序依次为：1、2、3
---@param Progress number -- 成就进度
function Achievement:SetPlayerAchievementProgress(PlayerID, AchievementID, Progress) end

--- 增加玩家成就进度。
---@param PlayerID number -- 玩家ID
---@param AchievementID number -- 成就id按顺序依次为：1、2、3
---@param IncrementProgress number -- 增加成就进度
function Achievement:IncrementPlayerAchievementProgress(PlayerID, AchievementID, IncrementProgress) end

--- 判断玩家成就是否完成，是返回true，否返回false。
---@param PlayerID number -- 玩家ID
---@param AchievementID number -- 成就id按顺序依次为：1、2、3
---@return boolean isCompleted -- 成就是否完成
function Achievement:IsPlayerAchievementCompleted(PlayerID, AchievementID) end

--- 获取玩家成就进度。
---@param PlayerID number -- 玩家ID
---@param AchievementID number -- 成就id按顺序依次为：1、2、3
---@return number progress -- 成就进度
function Achievement:GetPlayerAchievementProgress(PlayerID, AchievementID) end

--- 获取成就目标进度。
---@param AchievementID number -- 成就id按顺序依次为：1、2、3
---@return number progress -- 成就目标进度
function Achievement:GetAchievementTargetProgress(AchievementID) end


_G.Achievement = Achievement
--- Ai角色
-- 对场景中AI机器人进行控制
                
--- @module "AICharacter"

                
---@class AICharacter
local AICharacter = {}
                --- 判断角色是否ai
---@param PlayerId number -- 角色id
---@return boolean isCharacterAI -- 是否AI角色
function AICharacter:IsCharacterAI(PlayerId) end

--- 获取所有AI角色的id
---@return number[] ids -- 所有AI角色id组成的数组
function AICharacter:GetAIIds() end

--- 控制AI角色朝某一方向移动<br/>x=AI角色左右方向 y=AI角色前后方向。
---@param PlayerId number -- 角色id
---@param Dir Engine.Vector -- 方向
function AICharacter:CharacterMoveDir(PlayerId, Dir) end

--- 停止AI角色移动
---@param PlayerId number -- 角色id
function AICharacter:CharacterMoveStop(PlayerId) end

--- 控制AI角色朝向
---@param PlayerId number -- 角色id
---@param Dir Engine.Vector -- 方向
function AICharacter:SetCharacterDir(PlayerId, Dir) end

--- 传送AI角色到新的位置
---@param PlayerId number -- 角色id
---@param Pos Engine.Vector -- 位置
function AICharacter:CharacterTeleport(PlayerId, Pos) end

--- 控制AI角色朝某一方向开火<br/>需要先给ai角色提供枪械。
---@param PlayerId number -- 角色id
---@param Dir Engine.Vector -- 方向
function AICharacter:CharacterBeginFire(PlayerId, Dir) end

--- 控制AI角色停止开火
---@param PlayerId number -- 角色id
function AICharacter:CharacterStopFire(PlayerId) end

--- 给AI角色发武器
---@param PlayerId number -- 角色id
---@param WeaponId number -- 武器id,枪械和近战武器是武器，其他的道具不是武器
function AICharacter:CharacterGetGun(PlayerId, WeaponId) end

--- 给AI角色发自定义武器
---@param PlayerId number -- 角色id
---@param WeaponId number -- 自定义武器场景中的实例id
function AICharacter:CharacterGetCustomGun(PlayerId, WeaponId) end

--- 获取ai角色位置
---@param PlayerId number -- 角色id
---@return Engine.Vector pos -- 位置坐标
function AICharacter:GetCharacterLocation(PlayerId) end

--- 使用道具
---@param PlayerId number -- 角色id
---@param PropDir Engine.Vector -- 道具使用方向
function AICharacter:UseProp(PlayerId, PropDir) end

--- 让角色跳跃
---@param PlayerId number -- 角色id
function AICharacter:Jump(PlayerId) end

--- 让角色飞扑
---@param PlayerId number -- 角色id
function AICharacter:Dive(PlayerId) end

--- 让角色冲刺
---@param PlayerId number -- 角色id
function AICharacter:SprintedMove(PlayerId) end


_G.AICharacter = AICharacter
--- 动画系统
-- 可以对角色|生物进行动画控制
-- 针对拼接动作功能使用如有疑问，请参考 [如何使用拼接动作功能](https://creator.ymzx.qq.com/dream_helper/dist/onboarding/animsplice/index.html)
                
--- @module "Animation"

                
---@class Animation
local Animation = {}
                
--- 动画播放对象类型
---@enum Animation.PLAYER_TYPE
local PLAYER_TYPE = {
  Character = "Character",
  Creature = "Creature",
}
Animation.PLAYER_TYPE = PLAYER_TYPE


--- 动画播放类型<br/>半身播放会混合动画，全身播放不混合。
---@enum Animation.PART_NAME
local PART_NAME = {
  FullBody = "FullBody",
  UpperBody = "UpperBody",
}
Animation.PART_NAME = PART_NAME

--- 让角色播放动作
---@param PlayerType Animation.PLAYER_TYPE -- 播放对象类型
---@param PlayerID number -- 角色|生物ID
---@param AnimName string -- [播放动画名称](tables/AnimId.md)
---@param PartName Animation.PART_NAME -- 动画播放类型，默认为全身动画
function Animation:PlayAnim(PlayerType, PlayerID, AnimName, PartName) end

--- 让角色停止播放动作。
---@param PlayerType Animation.PLAYER_TYPE -- 播放对象类型：角色|生物
---@param PlayerID number -- 角色|生物ID
---@param AnimName string -- [播放动画名称](tables/AnimId.md)
---@param PartName Animation.PART_NAME -- 动画播放类型
---@param BlendOutTime number -- 动画混合时间，默认值：0.2
function Animation:StopAnim(PlayerType, PlayerID, AnimName, PartName, BlendOutTime) end

--- 让角色播放视频动作。
---@param PlayerType Animation.PLAYER_TYPE -- 播放对象类型：角色|生物
---@param PlayerID number -- 角色|生物ID
---@param AnimIndex number -- 生成的视频动作id按顺序依次为：1、2、3
---@param IsLoop boolean -- 是否循环播放
function Animation:PlayAnimAIGC(PlayerType, PlayerID, AnimIndex, IsLoop) end

--- 让角色停止播放视频动作。
---@param PlayerType Animation.PLAYER_TYPE -- 播放对象类型：角色|生物
---@param PlayerID number -- 角色|生物ID
function Animation:StopAnimAIGC(PlayerType, PlayerID) end

--- 让角色播放拼接动作。
---@param PlayerType Animation.PLAYER_TYPE -- 播放对象类型：角色|生物
---@param PlayerID number -- 角色|生物ID
---@param AnimIndex number -- 拼接动作id按顺序依次为：1、2、3
---@param IsLoop boolean -- 是否循环播放
function Animation:PlayAnimSplice(PlayerType, PlayerID, AnimIndex, IsLoop) end

--- 让角色停止播放拼接动作动作。
---@param PlayerType Animation.PLAYER_TYPE -- 播放对象类型：角色|生物
---@param PlayerID number -- 角色|生物ID
function Animation:StopAnimSplice(PlayerType, PlayerID) end


_G.Animation = Animation
--- 存档系统
-- 对玩家存档进行处理
-- 针对存档系统使用如有疑问，请参考 [如何使用云存档功能](https://creator.ymzx.qq.com/dream_helper/dist/onboarding/cloudsaveusage/index.html)
                
--- @module "Archive"

                
---@class Archive
local Archive = {}
                
--- 存档类型
---@enum Archive.TYPE
local TYPE = {
  Bool = "Boolean",
  Number = "Number",
  String = "String",
}
Archive.TYPE = TYPE

--- 存储玩家的存档支持布尔值存档，数值存档，字符串存档。值的类型与存档类型相对应。注意:数据永久存在，可在下一局重复游玩的游戏中读取。
---@param PlayerID number -- 玩家ID
---@param Type Archive.TYPE -- 存档类型
---@param Key string -- 存档Key
---@param Data any -- 存档数据
function Archive:SetPlayerData(PlayerID, Type, Key, Data) end

--- 判断是否存在玩家的存档数据，是返回true，否返回false。（仅在地图发布后生效）
---@param PlayerID number -- 玩家ID
---@param Type Archive.TYPE -- 存档类型
---@param Key string -- 存档Key
---@return boolean bHave -- 是否存在玩家的存档数据
function Archive:HasPlayerData(PlayerID, Type, Key) end

--- 获取玩家数据并返回。
---@param PlayerID number -- 玩家ID
---@param Type Archive.TYPE -- 存档类型
---@param Key string -- 存档Key
---@return any data -- 存档数据
function Archive:GetPlayerData(PlayerID, Type, Key) end


_G.Archive = Archive
--- 数组
-- 用于操作table的增删
                
--- @module "Array"

                
---@class Array
local Array = {}
                
--- 排序方式
---@enum Array.SortType
local SortType = {
  Ascend = "ascend",
  Descend = "descend",
  Disorder = "disorder",
}
Array.SortType = SortType

--- 将数据组中指定值设为空，不影响其他数据下标。<br/>value和返回值类型取决于数组类型
---@param Array table -- 指定数据组
---@param Value any -- 指定值
function Array:ClearAllTheValue(Array, Value) end

--- 删除数据组中指定值，若该下标后仍有数据，后续数据下标前移。<br/>value和返回值类型取决于数组类型
---@param Array table -- 指定数据组
---@param Value any -- 指定值
function Array:DeleteAllTheValue(Array, Value) end

--- 对数值组进行 升序（"ascend"）、降序:（"descend"）、乱序（"disorder"）排序。
---@param Array table -- 指定数值组
---@param Type Array.SortType -- 排序方式 升序（"ascend"）、降序:（"descend"）、乱序（"disorder"） 默认降序
function Array:Sort(Array, Type) end

--- 判断该数据组中是否存在指定的值，是返回true，否返回false。
---@param Array table -- 指定数值组
---@param Value any -- 指定值
---@return boolean result -- 是否存在
function Array:IsContainValue(Array, Value) end

--- 判断该数据组中是否存在指定的编号，是返回true，否返回false。
---@param Array table -- 指定数值组
---@param Index number -- 指定编号
---@return boolean result -- 是否存在
function Array:IsContainIndex(Array, Index) end

--- 获取数据组中指定值编号，返回值类型取决于数组类型
---@param Array table -- 指定数值组
---@param Value any -- 指定编号
---@return number result -- 指定值的编号
function Array:GetIndexByValue(Array, Value) end

--- 获取数据组中随机值
---@param Array table -- 指定数值组
---@return any value -- 数据组中随机值
function Array:GetValueByRandomIndex(Array) end

--- 获取数据组长度
---@param Array table -- 指定数值组
---@return number length -- 数据组长度
function Array:GetArrayLength(Array) end

--- 获取数据组中指定值数量
---@param Array table -- 指定数值组
---@param Value any -- 指定值
---@return number count -- 指定值数量
function Array:GetTheValueCount(Array, Value) end


_G.Array = Array
--- 音频
-- 控制本地音频音效播放
                
--- @module "Audio"

                
---@class Audio
local Audio = {}
                
--- 目标类型
---@enum Audio.TARGET_TYPE
local TARGET_TYPE = {
  Character = "Character",
  Creature = "Creature",
  Element = "Element",
}
Audio.TARGET_TYPE = TARGET_TYPE


--- 衰减模式
---@enum Audio.ATT_MODE
local ATT_MODE = {
  None = "None",
  Linear = "Linear",
  BrickWall = "BrickWall",
  CloseDrop = "CloseDrop",
  FarDrop = "FarDrop",
}
Audio.ATT_MODE = ATT_MODE

--- 播放一个指定音效，音效需挂载在角色，生物，元件对象上。
---@param AudioId number -- [音效Id](tables/AudioId.md)
---@param TargetType Audio.TARGET_TYPE -- 目标类型
---@param TargetId number -- 目标id
---@param Distance number -- 传播距离
---@param AttenuationMode Audio.ATT_MODE -- 衰减模式
---@param Duration number -- 播放持续时间，单位s，默认为0。
---@param Volume number -- 音量大小，最小值为0，最大值为100，默认为0。
---@param Tune number -- 音效变调，最小值为-48，最大值为48，默认为0。
---@return number playId -- 播放音效id，-1表示播放失败
function Audio:PlaySFXAudio3DInTarget(AudioId, TargetType, TargetId, Distance, AttenuationMode, Duration, Volume, Tune) end

--- 播放一个指定2D音效。
---@param AudioId number -- [音效Id](tables/AudioId.md)
---@param Duration number -- 播放持续时间，单位s，默认为0。
---@param Volume number -- 音量大小，最小值为0，最大值为100，默认为0。
---@param Tune number -- 音效变调，最小值为-48，最大值为48，默认为0。
---@return number playId -- 播放音效id，-1表示播放失败
function Audio:PlaySFXAudio2D(AudioId, Duration, Volume, Tune) end

--- 停止播放音效。
---@param PlayId number -- 调用播放接口时返回的Id
function Audio:StopSFXAudio(PlayId) end


_G.Audio = Audio
--- 摄像机
-- 可对场景中相机进行控制
-- 针对电影相机功能使用如有疑问，请参考 [如何使用电影相机功能](https://creator.ymzx.qq.com/dream_helper/dist/onboarding/moviecamera/index.html)
                
--- @module "Camera"

                
---@class Camera
local Camera = {}
                
--- 相机属性
---@enum Camera.PROPERTY
local PROPERTY = {
  MaxPitch = "MaxPitch",
  MinPitch = "MinPitch",
  ArmLength = "ArmLength",
  FOV = "FOV",
  SocketOffsetX = "SocketOffsetX",
  SocketOffsetY = "SocketOffsetY",
  SocketOffsetZ = "SocketOffsetZ",
}
Camera.PROPERTY = PROPERTY


--- 目标类型
---@enum Camera.TARGET_TYPE
local TARGET_TYPE = {
  Element = "Element",
  Character = "Character",
  FakeCharacter = "FakeCharacter",
  Creature = "Creature",
}
Camera.TARGET_TYPE = TARGET_TYPE


--- 晃动波形
---@enum Camera.SHAKE_TYPE
local SHAKE_TYPE = {
  perlin = "perlin",
  sinWave = "sinWave",
}
Camera.SHAKE_TYPE = SHAKE_TYPE


--- 相机控制模式
---@enum Camera.CONTROL_MODE
local CONTROL_MODE = {
  All = "All",
  UpDown = "UpDown",
  LeftRight = "LeftRight",
  None = "None",
}
Camera.CONTROL_MODE = CONTROL_MODE


--- 相机预设视角类型
---@enum Camera.PRESET_TYPE
local PRESET_TYPE = {
  DefaultFree = 30001,
  TransverseView = 30002,
  TopView = 30003,
  CloseUpView = 30004,
  ShootView = 30005,
}
Camera.PRESET_TYPE = PRESET_TYPE

--- 设置相机位置
---@param Pos Engine.Vector -- 位置坐标，该坐标为挂载点的坐标
function Camera:SetPosition(Pos) end

--- 获取相机位置
---@return Engine.Vector pos -- 位置坐标，该坐标为挂载点的坐标
function Camera:GetPosition() end

--- 获取相机真实位置
---@return Engine.Vector pos -- 位置坐标，该坐标为相机本身的坐标
function Camera:GetRealPosition() end

--- 设置相机旋转
---@param Rot Engine.Rotator -- 旋转
function Camera:SetRotation(Rot) end

--- 获取相机旋转
---@return Engine.Rotator rotation -- 旋转
function Camera:GetRotation() end

--- 设置相机FOV
---@param Fov number -- 相机FOV
function Camera:SetCameraFOV(Fov) end

--- 获取相机FOV
---@return number fov -- 相机FOV
function Camera:GetCameraFOV() end

--- 将相机挂载到指定位置
---@param Pos Engine.Vector -- 挂载位置坐标
---@param Rot Engine.Rotator -- 挂载旋转
---@param LerpTime number -- 过渡时间
function Camera:BindOnWorldPosition(Pos, Rot, LerpTime) end

--- 设置相机绑定至指定目标
---@param TargetType Camera.TARGET_TYPE -- 绑定目标类型
---@param TargetId number -- 目标Id
---@param LerpTime number -- 过渡时间，单位s
function Camera:BindOnTarget(TargetType, TargetId, LerpTime) end

--- 让相机固定看向指定目标，相机会固定看向目标。
---@param TargetType Camera.TARGET_TYPE -- 固定看向目标类型
---@param TargetId number -- 目标Id
---@param LerpTime number -- 过渡时间
function Camera:LookAtTarget(TargetType, TargetId, LerpTime) end

--- 设置当前玩家的相机属性。支持：最大俯仰角，最小俯仰角，相机距离，视场角，XYZ轴偏移。
---@param PropertyName Camera.PROPERTY -- 相机属性
---@param Value number -- 相机属性值
function Camera:SetProperty(PropertyName, Value) end

--- 将当前玩家的相机还原为初始设置。
function Camera:Reset() end

--- 晃动相机，可以制作屏幕震动效果。
---@param Waveform Camera.SHAKE_TYPE -- 晃动波形
---@param Amplitude number -- 振幅
---@param Frequency number -- 频率
---@param Time number -- 时长(秒)
function Camera:StartShake(Waveform, Amplitude, Frequency, Time) end

--- 停止相机晃动。
function Camera:StopShake() end

--- 设置玩家相机可在哪些方向上拖动，设置支持全方向，仅上下拖动，仅左右拖动，无法拖动。
---@param Mode Camera.CONTROL_MODE -- 相机控制模式
function Camera:SetControlMode(Mode) end

--- 将玩家相机的俯仰角锁定在某个数值，此时不可上下拖动相机。
---@param Value number -- 相机的俯仰角值
function Camera:LockPitch(Value) end

--- 解锁相机俯仰角限制。
function Camera:UnLockPitch() end

--- 将指定玩家相机的偏航角锁定在某个数值，此时不可左右拖动相机。
---@param Value number -- 相机的俯仰角值
function Camera:LockYaw(Value) end

--- 解锁相机偏航角限制。
function Camera:UnLockYaw() end

--- 将相机设置为正交相机。
---@param IsOrthographic boolean -- 是否将主相机设置为正交相机；如果不设置,游戏相机默认是透视相机；正交相机目前不支持渲染阴影。
function Camera:SetOrthographic(IsOrthographic) end

--- 设置正交相机在水平方向上的可视范围的全长。
---@param OrthographicWidth number -- 需要相机设置为正交相机，设置正交尺寸才有效，否则忽略。正交相机宽度建议不超过3000。
function Camera:SetOrthographicWidth(OrthographicWidth) end

--- 获取正交相机在水平方向上的可视范围的全长。
---@return number OrthographicWidth -- 获取正交相机在水平方向上的可视范围的全长；默认值512。
function Camera:GetOrthographicWidth() end

--- 根据变化视角信息索引开始变化对应视角
---@param ChangeInfoIndex number -- 地图相机设置中预设好的变换视角信息索引
function Camera:StartChangePerspectiveByIndex(ChangeInfoIndex) end

--- 根据变化视角信息索引停止变化对应视角
---@param ChangeInfoIndex number -- 地图相机设置中预设好的变换视角信息索引
function Camera:EndChangePerspective(ChangeInfoIndex) end

--- 根据相机晃动信息索引开始执行相机晃动
---@param ShakeInfoIndex number -- 地图相机设置中预设好的相机晃动信息索引
function Camera:StartShakeByIndex(ShakeInfoIndex) end

--- 根据相机晃动信息索引停止执行相机晃动
---@param ShakeInfoIndex number -- 地图相机设置中预设好的相机晃动信息索引
function Camera:StopShakeByIndex(ShakeInfoIndex) end

--- 修改相机晃动信息索引对应的晃动混入混出时间
---@param ShakeInfoIndex number -- 地图相机设置中预设好的相机晃动信息索引
---@param BlendInTime number -- 晃动混入时间，传nil则表示不进行修改
---@param BlendOutTime number -- 晃动混出时间，传nil则表示不进行修改
function Camera:ChangeShakeBlendTimeByIndex(ShakeInfoIndex, BlendInTime, BlendOutTime) end

--- 根据预设视角类型设置相机视角
---@param PresetViewType Camera.PRESET_TYPE -- 视角类型
function Camera:SetCameraView(PresetViewType) end

--- 让指定的电影相机开始拍摄
---@param ItemUID number -- 相机ItemUID
function Camera:MovieCameraStart(ItemUID) end

--- 让指定的电影相机停止拍摄
---@param ItemUID number -- 相机ItemUID
function Camera:MovieCameraStop(ItemUID) end

--- 根据索引修改电影相机的锁定追踪范围
---@param ItemUID number -- 相机ItemUID
---@param LockInfoIndex number -- 相机锁定信息的索引
---@param LockRange number -- 追踪范围(处于范围内才会执行锁定追踪，超出范围立即停止)
function Camera:MovieCameraSetLockRange(ItemUID, LockInfoIndex, LockRange) end

--- 根据索引修改电影相机的锁定追踪插值速度
---@param ItemUID number -- 相机ItemUID
---@param LockInfoIndex number -- 相机锁定信息的索引
---@param LerpSpeed number -- 锁定追踪插值速度(相机锁定目标的速度，速度越小相机跟随越慢，0是最大值锁定最快)
function Camera:MovieCameraSetLerpSpeed(ItemUID, LockInfoIndex, LerpSpeed) end

--- 根据索引开始锁定(需要先开始拍摄才可以锁定)
---@param ItemUID number -- 相机ItemUID
---@param LockInfoIndex number -- 相机锁定信息的索引
function Camera:MovieCameraStartLock(ItemUID, LockInfoIndex) end

--- 根据索引结束锁定
---@param ItemUID number -- 相机ItemUID
---@param LockInfoIndex number -- 相机锁定信息的索引
function Camera:MovieCameraStopLock(ItemUID, LockInfoIndex) end

--- 获取相机朝向
---@return Engine.Vector forward -- 朝向
function Camera:GetForward() end


_G.Camera = Camera
--- 玩家角色
-- 可以对玩家的角色进行操作
                
--- @module "Character"

                
---@class Character
local Character = {}
                
--- 角色属性值类型（数值类型）
---@enum Character.ATTR
local ATTR = {
  MaxWalkSpeed = "MaxWalkSpeed",
  JumpZVelocity = "JumpZVelocity",
  GravityScale = "GravityScale",
  MaxHealth = "MaxHealth",
}
Character.ATTR = ATTR


--- 角色属性值类型（开关类型）
---@enum Character.ATTR_ENABLE
local ATTR_ENABLE = {
  bEnableInput = "bEnableInput",
  CanMove = "CanMove",
  CanJump = "CanJump",
  CanGrab = "CanGrab",
  CanBeGrab = "CanBeGrab",
  CanPickProp = "CanPickProp",
  CanUseProp = "CanUseProp",
  OpenPhysics = "OpenPhysics",
  MeshVisibility = "MeshVisibility",
}
Character.ATTR_ENABLE = ATTR_ENABLE


--- 角色方向
---@enum Character.MOVE_DIR
local MOVE_DIR = {
  Forward = "Forward",
  Back = "Back",
  Left = "Left",
  Right = "Right",
}
Character.MOVE_DIR = MOVE_DIR


--- 角色状态
---@enum Character.STATE
local STATE = {
  IsAir = "IsAir",
  Grab = "Grab",
  BeGrabbed = "BeGrabbed",
  Rush = "Rush",
  Idle = "Idle",
  Move = "Move",
  Dive = "Dive",
}
Character.STATE = STATE


--- 骨骼节点
---@enum Character.SOCKET_NAME
local SOCKET_NAME = {
  Root = "Root",
  Head = "Head",
  Hand_L = "Hand_L",
  Hand_R = "Hand_R",
  Pelvis = "Pelvis",
  Spine = "Spine",
  Spine1 = "Spine1",
  Neck = "Neck",
  ThighL = "ThighL",
  ThighR = "ThighR",
  Calf_L = "Calf_L",
  Calf_R = "Calf_R",
  Foot_L = "Foot_L",
  Foot_R = "Foot_R",
  Clavicle_L = "Clavicle_L",
  Clavicle_R = "Clavicle_R",
  UpperArm_L = "UpperArm_L",
  UpperArm_R = "UpperArm_R",
  Forearm_L = "Forearm_L",
  Forearm_R = "Forearm_R",
  Prop_L = "Prop_L",
  Prop_R = "Prop_R",
}
Character.SOCKET_NAME = SOCKET_NAME


--- 骨骼吸附模式
---@enum Character.SOCKET_MODE
local SOCKET_MODE = {
  KeepRelative = "KeepRelative",
  KeepWorld = "KeepWorld",
  SnapToTarget = "SnapToTarget",
}
Character.SOCKET_MODE = SOCKET_MODE


--- 装备武器类型<br/>武器指枪械、近战武器，投掷物包含烟雾弹、手榴弹
---@enum Character.EQUIP_TYPE
local EQUIP_TYPE = {
  Weapon = "0",
  Projectile = "1",
}
Character.EQUIP_TYPE = EQUIP_TYPE

--- 获取本地自身角色ID
---@return number playerID -- 当前自身玩家ID
function Character:GetLocalPlayerId() end

--- 获取所有服务端上的真实玩家和机器人玩家ID
---@return number[] playerIDs -- 服务端上的真实玩家和机器人玩家ID数组
function Character:GetAllPlayerIds() end

--- 判断角色是否ai
---@param PlayerId number -- 角色id
---@return boolean isAI -- 是否AI角色
function Character:IsAICharacter(PlayerId) end

--- 获取所有AI角色的id
---@return number[] ids -- 所有AI角色id组成的数组
function Character:GetAIPlayerIds() end

--- 让指定部分玩家游戏胜利
---@param PlayerList number[] -- 玩家ID数组
function Character:SetPlayersVictory(PlayerList) end

--- 让指定部分玩家游戏失败
---@param PlayerList number[] -- 玩家ID数组
function Character:SetPlayersDefeat(PlayerList) end

--- 设置角色移动同步
---@param PlayerID number -- 角色ID
---@param Replicated boolean -- true-开启移动同步，false-关闭移动同步
function Character:SetMoveReplicated(PlayerID, Replicated) end

--- 设置角色的位置
---@param PlayerID number -- 角色ID
---@param Pos Engine.Vector -- 位置坐标
function Character:SetPosition(PlayerID, Pos) end

--- 设置角色的朝向，相当于指定方向向量
---@param PlayerID number -- 角色ID
---@param Forward Engine.Vector -- 朝向方向向量
function Character:SetForward(PlayerID, Forward) end

--- 设置角色的旋转角度
---@param PlayerID number -- 角色ID
---@param Rot Engine.Rotator -- 旋转
---@param AutoConvert boolean -- 角色的旋转与角色mesh旋转有90度的偏移，是否自动转换,默认为false
function Character:SetRotation(PlayerID, Rot, AutoConvert) end

--- 设置角色的模型大小
---@param PlayerID number -- 角色ID
---@param Scale number -- 缩放倍率
function Character:SetScale(PlayerID, Scale) end

--- 设置角色的角色属性值。支持设置：移动速度，跳跃速度或重力系数属性
---@param PlayerID number -- 角色ID
---@param Attribute Character.ATTR -- 角色属性值类型
---@param Value number -- 角色属性值大小
function Character:ChangeAttribute(PlayerID, Attribute, Value) end

--- 设置角色属性是否启用，支持设置：输入，移动，跳跃，抓取，被抓取，拾取道具，使用道具，物理模拟，可见性
---@param PlayerID number -- 角色ID
---@param Attribute Character.ATTR_ENABLE -- 角色属性值类型
---@param IsEnable boolean -- 是否开启
function Character:SetAttributeEnabled(PlayerID, Attribute, IsEnable) end

--- 判断角色指定属性是否为启用
---@param PlayerID number -- 角色ID
---@param Attribute Character.ATTR_ENABLE -- 角色属性值类型
---@return boolean isEnabled -- 是否为启用
function Character:IsAttributeEnabled(PlayerID, Attribute) end

--- 将角色模型替换为其他游戏元素。可用于改变角色外观。
---@param PlayerID number -- 角色ID
---@param ModelId number -- 元件类型ID
function Character:SetModel(PlayerID, ModelId) end

--- 还原角色本身的模型外观。
---@param PlayerID number -- 角色ID
function Character:RestoreModel(PlayerID) end

--- 返回角色模型id
---@param PlayerID number -- 角色ID
---@return number modelId -- 角色模型id
function Character:GetModel(PlayerID) end

--- 判断角色是否为指定模型
---@param PlayerID number -- 角色ID
---@param ModelId number -- 指定模型ID
---@return boolean bWith -- 角色是否为指定模型
function Character:IsCharacterWithModel(PlayerID, ModelId) end

--- 将角色形象替换为指定生物形象
---@param PlayerId number -- 角色ID
---@param CreatureId number -- 生物ID
function Character:SetCharacterWithCreature(PlayerId, CreatureId) end

--- 设置角色的描边颜色，可选择设置描边强度以及是否无视遮挡
---@param PlayerID number -- 角色ID
---@param Color string -- 描边颜色，十六进制代码：#FFFFFFFF
---@param Strength number -- 描边强度，取值范围：0~5
---@param IsIngoreShield boolean -- 是否无视遮挡(开启后角色被遮挡也可看到描边)
function Character:SetOutLineColor(PlayerID, Color, Strength, IsIngoreShield) end

--- 还原角色本身的描边颜色
---@param PlayerID number -- 角色ID
function Character:CloseOutLine(PlayerID) end

--- 返回角色描边颜色
---@param PlayerID number -- 角色ID
---@return string outLineColor -- 角色描边颜色，十六进制代码：#FFFFFFFF
function Character:GetOutLineColor(PlayerID) end

--- 判断角色描边颜色
---@param PlayerID number -- 角色ID
---@param Color string -- 描边颜色，十六进制代码：#FFFFFFFF
---@return boolean isEqual -- 颜色是否相等
function Character:IsEqualOutLineColor(PlayerID, Color) end

--- 设置是否开启角色的待机动画，关闭状态下角色将不会自动播放时装自带的待机动画效果
---@param PlayerID number -- 角色ID
---@param Show boolean -- 是否开启角色的待机动画
function Character:SetIdleShowEnabled(PlayerID, Show) end

--- 开启或禁用主角是否可以使用互动动作
---@param Open boolean -- 主角是否可以使用互动动作
function Character:SetAnimationOpen(Open) end

--- 让角色获得指定道具物品
---@param PlayerID number -- 角色ID
---@param PropId number -- [道具Id](tables/PropId.md)
function Character:AddProp(PlayerID, PropId) end

--- 删除角色道具物品
---@param PlayerID number -- 角色ID
function Character:RemoveProp(PlayerID) end

--- 角色使用道具
---@param PlayerId number -- 角色id
---@param PropDir Engine.Vector -- 道具使用方向
function Character:UseProp(PlayerId, PropDir) end

--- 返回角色持有道具
---@param PlayerID number -- 角色ID
---@return number propId -- 角色持有道具id，在"开发者文档->元梦之星定义->PropId"中查看
function Character:GetCharacterCurrentProp(PlayerID) end

--- 返回角色当前持有的武器/投掷物物品<br/>投掷物只有添加到道具键才是手持状态
---@param PlayerID number -- 角色ID
---@param EquipType Character.EQUIP_TYPE -- 装备武器物品类型
---@return string weaponPropId -- 角色持有武器道具
function Character:GetCurrentWeaponProp(PlayerID, EquipType) end

--- 判断角色是否持有道具
---@param PlayerID number -- 角色ID
---@return boolean hasOnHand -- 是否持有道具
function Character:IsCharacterHasPropOnHand(PlayerID) end

--- 判断角色是否持有指定道具
---@param PlayerID number -- 角色ID
---@param PropId number -- [道具Id](tables/PropId.md)
---@return boolean hasOnHand -- 是否持有道具
function Character:IsHoldingProp(PlayerID, PropId) end

--- 给角色添加向某个方向的力
---@param PlayerID number -- 角色ID
---@param ImpulseVector Engine.Vector -- 方向力
function Character:AddImpulse(PlayerID, ImpulseVector) end

--- 让角色进行弹射
---@param PlayerID number -- 角色ID
---@param Time number -- 弹射时间
---@param ImpulseVector Engine.Vector -- 方向力
function Character:Eject(PlayerID, Time, ImpulseVector) end

--- 让角色追踪某个元件|角色|生物，并设置其速度等。可用于制作角色追击指定玩家
---@param PlayerID number -- 角色ID
---@param TargetId number -- 目标ID（元件|角色|生物）
---@param InitSpeed number -- 初始速度
---@param Acceleration number -- 加速度
---@param MaxVelocity number -- 最大速度
---@param DistanceKeep number -- 保持间距
function Character:SetTrackTargetMove(PlayerID, TargetId, InitSpeed, Acceleration, MaxVelocity, DistanceKeep) end

--- 让角色停止追踪运动
---@param PlayerID number -- 角色ID
function Character:StopTracking(PlayerID) end

--- 让角色朝指定方向移动，并设置其速度与时间
---@param PlayerID number -- 角色ID
---@param Direction Character.MOVE_DIR -- 角色移动方向
---@param Speed number -- 角色移动速度
---@param Seconds number -- 角色移动时间
function Character:Move(PlayerID, Direction, Speed, Seconds) end

--- 让角色朝目标点位置移动
---@param PlayerID number -- 角色ID
---@param Pos Engine.Vector -- 角色移动目标点位置
---@param Seconds number -- 角色移动时间
function Character:MoveToPosition(PlayerID, Pos, Seconds) end

--- 让角色停止移动
---@param PlayerID number -- 角色ID
function Character:StopMove(PlayerID) end

--- 让角色跳跃
function Character:Jump() end

--- 让角色飞扑
function Character:Dive() end

--- 让角色冲刺
function Character:SprintedMove() end

--- 让角色抓举
---@param PlayerID number -- 角色ID
function Character:Grab(PlayerID) end

--- 让角色举起其他单位。注意：该举起是无视距离的
---@param PlayerID number -- 角色ID
---@param TargetId number -- 目标Id
function Character:GrabTarget(PlayerID, TargetId) end

--- 让角色结束抓取，进行投掷
---@param PlayerID number -- 角色ID
function Character:EndGrab(PlayerID) end

--- 设置角色投掷参数
---@param PlayerID number -- 角色ID
---@param Angle number -- 放下时的投掷角度
---@param InitialVelocity number -- 放下时的投掷初速度
---@param IsAffectedByChar boolean -- 放下过程是否受角色移动状态影响
function Character:SetGrabAbility(PlayerID, Angle, InitialVelocity, IsAffectedByChar) end

--- 还原角色投掷参数
---@param PlayerID number -- 角色ID
function Character:ResetGrabAbility(PlayerID) end

--- 设置角色是否能进入观战列表
---@param PlayerID number -- 角色ID
---@param CanBeSpectator boolean -- 是否能进入观战
function Character:SetCharacterCanBeSpectator(PlayerID, CanBeSpectator) end

--- 让指定的阵营内玩家游戏胜利，开启阵营后生效
---@param TeamID number -- 阵营ID，按顺序排列：1、2、3、4...
function Character:SetCampVictory(TeamID) end

--- 判断该玩家是否处于观战模式
---@param PlayerID number -- 角色ID
---@return boolean isObserve -- 是否处于观战模式
function Character:IsPlayerObserve(PlayerID) end

--- 判断该玩家是否为断线重连
---@param PlayerID number -- 角色ID
---@return boolean isReconnect -- 是否断线重连
function Character:IsReconnect(PlayerID) end

--- 判断对象是否为角色
---@param ObjectId number -- 对象ID, playerID
---@return boolean isObjectPlayer -- 对象是否为角色
function Character:IsObjectPlayer(ObjectId) end

--- 判断角色是否可见
---@param PlayerID number -- 角色ID
---@return boolean isVisible -- 是否可见
function Character:IsVisible(PlayerID) end

--- 判断角色是否处于选定的状态
---@param PlayerID number -- 角色ID
---@param State Character.STATE -- 角色状态
---@return boolean inState -- 是否处于选定的状态
function Character:IsCharacterInState(PlayerID, State) end

--- 按局内编号获取本地玩家
---@param TeamID number -- 阵营ID，按顺序排列：1、2、3、4...
---@param Index number -- 玩家编号：1、2、3...
---@return number playerId -- 玩家Id
function Character:GetPlayerBySideAndIndex(TeamID, Index) end

--- 返回当前游戏中的玩家人数
---@return number count -- 玩家人数
function Character:GetTotalPlayerCount() end

--- 返回角色位置
---@param PlayerID number -- 角色ID
---@return Engine.Vector pos -- 角色位置
function Character:GetPosition(PlayerID) end

--- 返回角色缩放
---@param PlayerID number -- 角色ID
---@return Engine.Vector scale -- 角色缩放
function Character:GetScale(PlayerID) end

--- 返回角色旋转
---@param PlayerID number -- 角色ID
---@param AutoConvert boolean -- 角色的旋转与角色mesh旋转有90度的偏移，是否自动转换,默认为false
---@return Engine.Rotator rot -- 角色旋转
function Character:GetRotation(PlayerID, AutoConvert) end

--- 返回角色朝向
---@param PlayerID number -- 角色ID
---@return Engine.Vector forward -- 角色朝向
function Character:GetForward(PlayerID) end

--- 返回角色属性值
---@param PlayerID number -- 角色ID
---@param Attribute Character.ATTR -- 角色属性值类型
---@return number value -- 角色属性值大小
function Character:GetAttribute(PlayerID, Attribute) end

--- 返回触发盒中所有角色的数组
---@param ElementID number -- 触发盒元件实例Id
---@return number[] idList -- 角色id数组
function Character:GetCharactersInBoxTrigger(ElementID) end

--- 返回球形区域内所有角色的数组
---@param Center Engine.Vector -- 球形区域中心点
---@param Radius number -- 球形半径，单位为cm
---@return number[] idList -- 角色id数组
function Character:GetCharactersInSphere(Center, Radius) end

--- 返回矩形区域内所有角色的数组
---@param Center Engine.Vector -- 矩形区域中心点
---@param Length number -- 矩形长，单位为cm
---@param Width number -- 矩形宽，单位为cm
---@param Height number -- 矩形高，单位为cm
---@return number[] idList -- 角色id数组
function Character:GetCharactersInRegion(Center, Length, Width, Height) end

--- 让角色使用指定技能
---@param playerId number -- 角色id
---@param skillId number -- 技能id
function Character:UseSkill(playerId, skillId) end

--- 控制自身角色开火
function Character:BeginFire() end

--- 控制自身角色停止开火
function Character:StopFire() end

--- 自身角色更换弹药
function Character:ReplaceCartridge() end

--- 设置角色视野光
---@param color string -- 角色视野光颜色，十六进制代码：#FFFFFFFF
---@param intensity number -- 角色视野光强度， 可调节范围：0至10
---@param falloffExponent number -- 角色视野光衰减指数，可调节范围：0至3
---@param attenuationRadius number -- 角色视野光衰减半径，可调节范围：0至1000
function Character:SetCharacterGlowLight(color, intensity, falloffExponent, attenuationRadius) end

--- 关闭角色视野光
function Character:CloseCharacterGlowLight() end

--- 控制AI角色开火
---@param PlayerId number -- 角色id
function Character:AICharacterBeginFire(PlayerId) end

--- 控制AI角色停止开火
---@param PlayerId number -- 角色id
function Character:AICharacterStopFire(PlayerId) end

--- 传送角色到新的位置
---@param PlayerId number -- 角色id
---@param Pos Engine.Vector -- 位置
function Character:CharacterTeleport(PlayerId, Pos) end


_G.Character = Character
--- 聊天系统
-- 可以对玩家的语音和文本聊天进行控制
-- 针对聊天系统使用如有疑问，请参考 [如何使用聊天功能](https://creator.ymzx.qq.com/dream_helper/dist/onboarding/chat/index.html)
-- 针对头像昵称功能使用如有疑问，请参考 [如何使用头像昵称功能](https://creator.ymzx.qq.com/dream_helper/dist/onboarding/avatarnamewidget/index.html)
                
--- @module "Chat"

                
---@class Chat
local Chat = {}
                --- 设置语音接收范围
---@param PlayerIds number[] -- 玩家ID数组
---@param Range number -- 接收范围,单位是米
function Chat:SetVoiceChatRange(PlayerIds, Range) end

--- 设置角色可接收的语音来源
---@param ReceivePlayers number[] -- 接收语音来源玩家ID数组
---@param SendPlayers number[] -- 发送语音的目标玩家ID数组
function Chat:SetCanReceivePlayersVoiceChat(ReceivePlayers, SendPlayers) end

--- 设置角色可接收的文本聊天来源
---@param ReceivePlayers number[] -- 接收文本信息来源玩家ID数组
---@param SendPlayers number[] -- 发送文本信息的目标玩家ID数组
function Chat:SetCanReceivePlayersTextChat(ReceivePlayers, SendPlayers) end

--- 设置玩家昵称
---@param PlayerId number -- 玩家ID
---@param Name string -- 昵称
function Chat:SetCustomChatName(PlayerId, Name) end

--- 设置昵称可见性
---@param Visible boolean -- 是否可见
function Chat:SetNameVisible(Visible) end

--- 设置玩家头像<br/>可配合[头像昵称控件]使用
---@param PlayerId number -- 玩家ID
---@param HeadIcon string -- 头像ID
function Chat:SetCustomHeadIcon(PlayerId, HeadIcon) end

--- 获取角色昵称
---@param PlayerId number -- 玩家ID
---@return string Name -- 玩家昵称
function Chat:GetCustomName(PlayerId) end

--- 设置玩家头像，支持使用自定义图片id或界面系统图片id，以及GetCustomHeadIcon函数获得的字符串<br/>可配合[头像昵称控件]使用
---@param PlayerId number -- 玩家ID
---@param ImageId number|string -- [图片ID](tables/ImageId.md)
---@param IsCustomImage boolean -- 是否使用自定义图片,默认为false，可不填
function Chat:SetCustomHeadIconImage(PlayerId, ImageId, IsCustomImage) end

--- 获取角色语音接收范围
---@param PlayerId number -- 玩家ID
---@return number Range -- 语音接收范围,单位米
function Chat:GetPlayerVoiceChatRange(PlayerId) end

--- 获取玩家头像，返回值为string，需要配合设置玩家头像函数使用
---@param PlayerId number -- 玩家ID
---@return string HeadIcon -- 角色头像ID
function Chat:GetCustomHeadIcon(PlayerId) end

--- 获取玩家头像，支持界面系统图片id或自定义图片id
---@param PlayerId number -- 玩家ID
---@return number ImageId -- 头像图片ID
---@return boolean IsCustom -- 是否为自定义图片
function Chat:GetCustomHeadIconImage(PlayerId) end

--- 设置原生控件是否可见<br/>原生控件为原生语音控件
---@param Visible boolean -- 是否可见
function Chat:SetNativeUIVisible(Visible) end


_G.Chat = Chat
--- 生物
-- 对生物进行控制操作
                
--- @module "Creature"

                
---@class Creature
local Creature = {}
                
--- 生物属性值类型（数值类型）
---@enum Creature.ATTR
local ATTR = {
  JumpZVelocity = "JumpZVelocity",
  GravityScale = "GravityScale",
}
Creature.ATTR = ATTR


--- 状态种类
---@enum Creature.STATE
local STATE = {
  IsAir = "IsAir",
  Grab = "Grab",
  Rush = "Rush",
  AiStart = "AiStart",
  BeGrabbed = "BeGrabbed",
}
Creature.STATE = STATE


--- 巡逻类型
---@enum Creature.PATROL_TYPE
local PATROL_TYPE = {
  Single = 0,
  Continuous = 1,
  RoundTrip = 2,
}
Creature.PATROL_TYPE = PATROL_TYPE

--- 创建生物
---@param CreatureType number -- 获取生物类型：请将目标生物放入场景中，然后点击生物-编辑-实例信息，获取类型ID
---@param Pos Engine.Vector -- 位置
---@param Forward Engine.Vector -- 朝向方向向量
---@param Scale number -- 缩放
---@return number creatureId -- 生物实例ID
function Creature:SpawnCreature(CreatureType, Pos, Forward, Scale) end

--- 定时销毁生物
---@param CreatureId number -- 生物ID
---@param Seconds number -- 定时的秒数
function Creature:DestroyByTime(CreatureId, Seconds) end

--- 销毁生物
---@param CreatureId number -- 生物ID
function Creature:Destroy(CreatureId) end

--- 通过已有的生物模板创建生物
---@param TemplateID number -- 生物实例ID
---@param Pos Engine.Vector -- 位置
---@param Forward Engine.Vector -- 朝向方向向量
function Creature:SpawnCreatureBySceneID(TemplateID, Pos, Forward) end

--- 设置生物的位置
---@param CreatureId number -- 生物ID
---@param Pos Engine.Vector -- 位置
function Creature:SetPosition(CreatureId, Pos) end

--- 设置生物的朝向方向
---@param CreatureId number -- 生物ID
---@param Forward Engine.Vector -- 朝向方向向量
function Creature:SetForward(CreatureId, Forward) end

--- 设置生物的大小<br/>游戏开始后立即使用无效，需要的话可延后一帧执行才能生效
---@param CreatureId number -- 生物ID
---@param Scale number -- 放大缩小的倍数
function Creature:SetScale(CreatureId, Scale) end

--- 设置生物可见性
---@param CreatureId number -- 生物ID
---@param Visible boolean -- 是否可见
function Creature:SetCreatureVisible(CreatureId, Visible) end

--- 设置生物是否可以抓举
---@param CreatureId number -- 生物ID
---@param Enable boolean -- 能否抓举
function Creature:SetCreatureCanGrab(CreatureId, Enable) end

--- 设置生物重力属性
---@param CreatureId number -- 生物ID
---@param Enable boolean -- 是否启用重力
function Creature:SetCreatureGravityInfluence(CreatureId, Enable) end

--- 给生物添加力
---@param CreatureId number -- 生物ID
---@param Impulse Engine.Vector -- 力的大小和方向
function Creature:AddImpulse(CreatureId, Impulse) end

--- 给生物添加追踪运动
---@param CreatureId number -- 生物ID
---@param TargetId number -- 目标ID
---@param InitSpeed number -- 初始速度
---@param Acceleration number -- 加速度
---@param MaxVelocity number -- 最大速度
---@param DistanceKeep number -- 保持的距离
function Creature:SetCreatureTrackTargetMove(CreatureId, TargetId, InitSpeed, Acceleration, MaxVelocity, DistanceKeep) end

--- 停止追踪
---@param CreatureId number -- 生物ID
function Creature:StopTracking(CreatureId) end

--- 给生物添加道具
---@param CreatureId number -- 生物ID
---@param PropId number -- [道具Id](tables/PropId.md)
function Creature:AddProp(CreatureId, PropId) end

--- 删除生物持有的道具
---@param CreatureId number -- 生物ID
function Creature:RemoveProp(CreatureId) end

--- 设置生物是否显示名称,如果是新创建的生物，需要延迟使用才能生效
---@param CreatureId number -- 生物ID
---@param Show boolean -- 是否显示名称
function Creature:SetCreatureShouldShowName(CreatureId, Show) end

--- 修改生物名称,如果是新创建的生物，需要延迟使用才能生效
---@param CreatureId number -- 生物ID
---@param Name string -- 新的名字
function Creature:SetCreatureName(CreatureId, Name) end

--- 将生物模型替换为其他游戏元素
---@param CreatureId number -- 生物ID
---@param ModelId number -- 元件类型ID
function Creature:SetCreatureModel(CreatureId, ModelId) end

--- 将生物模型替换为角色模型
---@param CreatureId number -- 生物ID
---@param PlayerId number -- 角色ID
function Creature:SetCreatureWithCharacter(CreatureId, PlayerId) end

--- 还原生物模型
---@param CreatureId number -- 生物ID
function Creature:RestoreCreatureModel(CreatureId) end

--- 激活生物的AI模式
---@param CreatureId number -- 生物ID
function Creature:StartBehaviorTree(CreatureId) end

--- 禁用生物的AI模式
---@param CreatureId number -- 生物ID
function Creature:StopBehaviorTree(CreatureId) end

--- 让生物跳跃
---@param CreatureId number -- 生物ID
function Creature:Jump(CreatureId) end

--- 让生物飞扑
---@param CreatureId number -- 生物ID
function Creature:Dive(CreatureId) end

--- 让生物冲刺
---@param CreatureId number -- 生物ID
function Creature:SprintedMove(CreatureId) end

--- 让生物抓举
---@param CreatureId number -- 生物ID
function Creature:Grab(CreatureId) end

--- 让生物放下
---@param CreatureId number -- 生物ID
function Creature:EndGrab(CreatureId) end

--- 让生物对角色使用道具
---@param CreatureId number -- 生物ID
---@param TargetId number -- 目标角色的ID
function Creature:CreatureUseItemToPlayer(CreatureId, TargetId) end

--- 让生物对生物使用道具
---@param CreatureId number -- 生物ID
---@param TargetId number -- 目标生物ID
function Creature:CreatureUseItemToCreature(CreatureId, TargetId) end

--- 让生物对元件使用道具
---@param CreatureId number -- 生物ID
---@param TargetId number -- 目标元件ID
function Creature:CreatureUseItemToElement(CreatureId, TargetId) end

--- 让生物朝指定位置移动
---@param CreatureId number -- 生物ID
---@param Pos Engine.Vector -- 位置坐标
---@param Time number -- 时间,单位秒
function Creature:SetTargetPointMove(CreatureId, Pos, Time) end

--- 让生物停止移动,持续X秒
---@param CreatureId number -- 生物ID
---@param Time number -- 持续时间,单位秒
function Creature:StopMove(CreatureId, Time) end

--- 让目标生物按照预设的路径巡逻<br/>可在【生物】-【行为】-【行为逻辑配置】选【巡逻】，然后在【巡逻路径】点编辑【巡逻轨迹库】
---@param CreatureId number -- 生物ID
---@param PathName string -- 路径名称
---@param Patroltype Creature.PATROL_TYPE -- 巡逻类型
---@param Time number -- 巡逻的时间，单位秒，默认999
---@param ReturnBornPos boolean -- 巡逻结束后是否返回出生点，默认为false
function Creature:SwitchBehaviorToPatrolPath(CreatureId, PathName, Patroltype, Time, ReturnBornPos) end

--- 让目标生物按照自定义的路径巡逻
---@param CreatureId number -- 生物ID
---@param PathPoints Engine.Vector[] -- 路径点数组
---@param Patroltype Creature.PATROL_TYPE -- 巡逻类型
---@param Time number -- 巡逻的时间，单位秒，默认999
---@param ReturnBornPos boolean -- 巡逻结束后是否返回出生点，默认为false
function Creature:SwitchCustomBehaviorToPatrolPath(CreatureId, PathPoints, Patroltype, Time, ReturnBornPos) end

--- 让生物模仿指定生物的动作
---@param CreatureId number -- 生物ID
---@param TargetID number -- 目标生物ID
---@param Time number -- 延迟时间,单位秒
function Creature:CreatureSwitchBehaviorToImitationCreature(CreatureId, TargetID, Time) end

--- 让生物模仿角色的动作
---@param CreatureId number -- 生物ID
---@param TargetID number -- 目标角色ID
---@param Time number -- 延迟时间,单位秒
function Creature:CreatureSwitchBehaviorToImitationPlayer(CreatureId, TargetID, Time) end

--- 让生物跟随指定生物
---@param CreatureId number -- 生物ID
---@param TargetID number -- 目标生物ID
---@param Maxdistance number -- 最远距离
---@param Distance number -- 跟随距离
---@param Time number -- 跟随时间,单位秒
function Creature:CreatureSwitchBehaviorToFollowCreature(CreatureId, TargetID, Maxdistance, Distance, Time) end

--- 让生物跟随角色
---@param CreatureId number -- 生物ID
---@param TargetID number -- 目标角色ID
---@param Maxdistance number -- 最远距离
---@param Distance number -- 跟随距离
---@param Time number -- 跟随时间,单位秒
function Creature:CreatureSwitchBehaviorToFollowPlayer(CreatureId, TargetID, Maxdistance, Distance, Time) end

--- 判断生物是否处于某个状态
---@param CreatureId number -- 生物ID
---@param State Creature.STATE -- 状态名称
---@return boolean inProperty -- 是否处于某个状态
function Creature:CheckCreatureProperty(CreatureId, State) end

--- 判断对象是否为生物
---@param ObjectId number -- 对象ID, SceneID
---@return boolean isObjectCreature -- 对象是否为生物
function Creature:IsObjectCreature(ObjectId) end

--- 判断生物是否持有指定道具
---@param CreatureId number -- 生物ID
---@param PropId number -- [道具Id](tables/PropId.md)
---@return boolean isHolding -- 是否持有指定道具
function Creature:IsHoldingProp(CreatureId, PropId) end

--- 判断生物是否可抓举
---@param CreatureId number -- 生物ID
---@return boolean canGrab -- 是否可抓举
function Creature:IsCreatureCanGrab(CreatureId) end

--- 判断生物是否受重力影响
---@param CreatureId number -- 生物ID
---@return boolean isInfluential -- 是否受重力影响
function Creature:IsCreatureGravityInfluence(CreatureId) end

--- 判断生物是否显示名称
---@param CreatureId number -- 生物ID
---@return boolean isShow -- 是否显示名称
function Creature:IsCreatureShouldShowName(CreatureId) end

--- 判断生物是否可见
---@param CreatureId number -- 生物ID
---@return boolean isVisible -- 是否可见
function Creature:IsCreatureVisible(CreatureId) end

--- 返回生物类型
---@param CreatureId number -- 生物ID
---@return number typeID -- 生物类型,-1表示失败
function Creature:GetCreatureTypeID(CreatureId) end

--- 返回生物位置
---@param CreatureId number -- 生物ID
---@return Engine.Vector pos -- 生物所在的位置
function Creature:GetPosition(CreatureId) end

--- 返回生物的缩放倍数
---@param CreatureId number -- 生物ID
---@return number scale -- 缩放倍数
function Creature:GetScale(CreatureId) end

--- 返回生物的朝向方向向量
---@param CreatureId number -- 生物ID
---@return Engine.Vector forward -- 朝向方向向量
function Creature:GetForward(CreatureId) end

--- 获取生物名称
---@param CreatureId number -- 生物ID
---@return string name -- 生物的名称,""表示失败
function Creature:GetName(CreatureId) end

--- 获取生物持有的道具ID
---@param CreatureId number -- 生物ID
---@return number propId -- 生物持有的道具ID，0表示失败
function Creature:GetCurrentProp(CreatureId) end

--- 获取触发盒中所有生物
---@param TriggerID number -- 触发盒ID
---@return number[] idList -- 触发盒中所有生物的ID数组
function Creature:GetCreatureInTrigger(TriggerID) end

--- 获取球形区域内所有生物
---@param Center Engine.Vector -- 球形区域的球心
---@param Radius number -- 球形区域的半径
---@return number[] idList -- 球形区域内所有生物的ID列表
function Creature:GetCreatureInSphere(Center, Radius) end

--- 获取长方体区域内所有生物
---@param Center Engine.Vector -- 长方体区域的中心
---@param Length number -- 长方体区域的长度
---@param Width number -- 长方体区域的宽度
---@param Height number -- 长方体区域的高度
---@return number[] idList -- 长方体区域内所有生物ID列表
function Creature:GetCreatureInCuboid(Center, Length, Width, Height) end

--- 设置生物最大血量
---@param CreatureId number -- 生物ID
---@param Value number -- 修正后的最大血量
function Creature:SetMaxHealth(CreatureId, Value) end

--- 设置生物当前血量
---@param CreatureId number -- 生物ID
---@param Value number -- 修正后的当前血量
function Creature:SetCurHealth(CreatureId, Value) end

--- 设置生物无敌状态
---@param CreatureId number -- 生物ID
---@param IsInvincible boolean -- 是否无敌
function Creature:SetInvincible(CreatureId, IsInvincible) end

--- 设置生物无限重生
---@param CreatureId number -- 生物ID
---@param AlwaysCanRebirth boolean -- 是否无限重生
function Creature:SetAlwaysCanRebirth(CreatureId, AlwaysCanRebirth) end

--- 设置生物重生是否重置行为
---@param CreatureId number -- 生物ID
---@param IsResetBehaviorAfterRebirth boolean -- 是否重置行为
function Creature:SetResetBehaviorAfterRebirth(CreatureId, IsResetBehaviorAfterRebirth) end

--- 设置生物互动开关<br/>要先开启生物的【行为】-【互动选项】-【互动开关】。
---@param CreatureId number -- 生物ID
---@param IsInteractionable boolean -- 是否开启互动开关
function Creature:SetInteractionable(CreatureId, IsInteractionable) end

--- 设置生物的属性值。支持设置：跳跃速度或重力系数属性
---@param CreatureId number -- 生物ID
---@param Attribute Creature.ATTR -- 生物属性值类型
---@param Value number -- 生物属性值大小
function Creature:ChangeAttribute(CreatureId, Attribute, Value) end

--- 修改生物的移动速度
---@param CreatureId number -- 生物ID
---@param SpeedValue number -- 移动速度m/s，取值范围[2.3~24]
function Creature:ChangeMoveSpeed(CreatureId, SpeedValue) end


_G.Creature = Creature
--- 玩家货币
-- 对玩家货币进行处理
                
--- @module "Currency"

                
---@class Currency
local Currency = {}
                --- 增加指定玩家金币的数量。
---@param playerUID number -- 玩家ID
---@param count number -- 增加金币数量
function Currency:AddCurrencyCount(playerUID, count) end

--- 减少指定玩家金币的数量。
---@param playerUID number -- 玩家ID
---@param count number -- 减少金币数量
function Currency:ReduceCurrencyCount(playerUID, count) end

--- 返回玩家金币数量。
---@param playerUID number -- 玩家ID
---@return number count -- 玩家金币数量
function Currency:GetCurrencyCount(playerUID) end


_G.Currency = Currency
--- 自定义物品
-- 自定义武器、装备等相关操作
-- 针对自定义物品功能使用如有疑问，请参考 [自定义物品相关问题](https://creator.ymzx.qq.com/dream_helper/dist/onboarding/customitemissues/index.html)
                
--- @module "CustomItem"

                
---@class CustomItem
local CustomItem = {}
                --- 设置自定义武器伤害
---@param ItemId string -- 自定义武器的"物品ID"，在自定义武器的编辑面板-实例信息中查看
---@param DamageValue number -- 武器伤害，取值范围[1~9999]
function CustomItem:SetWeaponDamage(ItemId, DamageValue) end

--- 设置自定义武器攻击速度
---@param ItemId string -- 自定义武器的"物品ID"，在自定义武器的编辑面板-实例信息中查看
---@param AttackSpeed number -- 武器攻击速度，枪械取值范围[0.1~15]，近战武器取值范围[0.5~2]
function CustomItem:SetWeaponAttackSpeed(ItemId, AttackSpeed) end

--- 控制自定义武器的辅助瞄准开关
---@param ItemId string -- 自定义武器的"物品ID"，在自定义武器的编辑面板-实例信息中查看
---@param IsOpen boolean -- true-打开辅助瞄准（需要在场景编辑中配置好辅助瞄准），false-关闭辅助瞄准
function CustomItem:OpenAuxiliaryAiming(ItemId, IsOpen) end


_G.CustomItem = CustomItem
--- 自定义属性
-- 获取元件身上的自定义属性
                
--- @module "CustomProperty"

                
---@class CustomProperty
local CustomProperty = {}
                
--- 自定义属性类型
---@enum CustomProperty.PROPERTY_TYPE
local PROPERTY_TYPE = {
  Bool = "Unknown",
  Number = "Unknown",
  String = "Unknown",
  Color = "Unknown",
  Vector = "Unknown",
  Element = "Unknown",
  Particle = "Unknown",
  ChainParticle = "Unknown",
  Audio = "Unknown",
  Image = "Unknown",
  CharacterPart = "Unknown",
  Animation = "Unknown",
  RechargeAbility = "Unknown",
  Prop = "Unknown",
  CustomUI = "Unknown",
  ResourceGroup = "Unknown",
}
CustomProperty.PROPERTY_TYPE = PROPERTY_TYPE

--- 获取场景实例身上的自定义属性
---@param ElementId number -- 场景实例ID
---@param PropertyName string -- 自定义属性名称
---@param PropertyType CustomProperty.PROPERTY_TYPE -- 自定义属性类型
---@return any value -- 自定义属性值
function CustomProperty:GetCustomProperty(ElementId, PropertyName, PropertyType) end

--- 获取自定义数组参数
---@param ElementId number -- 场景实例ID
---@param PropertyName string -- 自定义属性名称
---@param PropertyType CustomProperty.PROPERTY_TYPE -- 自定义属性类型
---@return any[] valueArray -- 自定义属性值数组
function CustomProperty:GetCustomPropertyArray(ElementId, PropertyName, PropertyType) end

--- 设置自定义参数<br/>参数需要符合自定义属性类型，否则会设置失败。参数范围：<br/>数值：小数点后最多两位，小数点前最多8位。<br/>字符串：最多100个字符，每个英文单词占1个字符，每个中文字占2个。<br/>向量：每个成员的规则与数值相同。
---@param ElementId number -- 场景实例ID
---@param PropertyName string -- 自定义属性名称
---@param PropertyType CustomProperty.PROPERTY_TYPE -- 自定义属性类型
---@param Value any -- 自定义属性值
function CustomProperty:SetCustomProperty(ElementId, PropertyName, PropertyType, Value) end

--- 设置自定义数组参数<br/>数组中每个参数需要符合自定义属性类型，否则会设置失败
---@param ElementId number -- 场景实例ID
---@param PropertyName string -- 自定义属性名称
---@param PropertyType CustomProperty.PROPERTY_TYPE -- 自定义属性类型
---@param ValueArray any[] -- 自定义属性值数组
function CustomProperty:SetCustomPropertyArray(ElementId, PropertyName, PropertyType, ValueArray) end


_G.CustomProperty = CustomProperty
--- 伤害系统
-- 控制对玩家的伤害
-- 针对伤害系统功能使用如有疑问，请参考 [伤害系统相关问题](https://creator.ymzx.qq.com/dream_helper/dist/onboarding/damagesystem/index.html)
                
--- @module "Damage"

                
---@class Damage
local Damage = {}
                --- 对玩家角色造成伤害
---@param PlayerID number -- 玩家ID
---@param DamageNum number -- 伤害数值
---@param DamagerID number -- 输出伤害的玩家|生物|元件的ID
function Damage:ApplyDamageToCharacter(PlayerID, DamageNum, DamagerID) end

--- 设置玩家角色受到的最终伤害
---@param PlayerID number -- 玩家ID
---@param DamageNum number -- 伤害数值
function Damage:SetCharacterFinalDamage(PlayerID, DamageNum) end

--- 设置玩家角色受到的最终治疗
---@param PlayerID number -- 玩家ID
---@param HealNum number -- 治疗数值
function Damage:SetCharacterFinalHeal(PlayerID, HealNum) end

--- 击败角色
---@param KillerID number -- 输出伤害的玩家|生物|元件的ID
---@param PlayerID number -- 被击败的角色的ID
function Damage:KillCharacter(KillerID, PlayerID) end

--- 增加玩家角色当前生命值
---@param PlayerID number -- 玩家角色ID
---@param HealthNum number -- 增加的生命值
function Damage:ModifyCharacterHealth(PlayerID, HealthNum) end

--- 增加角色的最大生命值
---@param PlayerID number -- 玩家ID
---@param AddHealthNum number -- 增加的数值
function Damage:ModifyCharacterMaxHealth(PlayerID, AddHealthNum) end

--- 增加角色当前生命数
---@param PlayerID number -- 角色ID
---@param LifeCount number -- 增加的生命数
function Damage:ModifyCharacterLifeCount(PlayerID, LifeCount) end

--- 增加角色最大生命数
---@param PlayerID number -- 角色ID
---@param LifeCount number -- 增加的生命数
function Damage:ModifyCharacterMaxLifeCount(PlayerID, LifeCount) end

--- 设置角色复活时间<br/>当角色被击败时不开始算复活时间，而是角色死亡模型消失后才开始记复活时间
---@param PlayerID number -- 角色ID
---@param RespawnTime number -- 复活时间
function Damage:SetCharacterRespawnTime(PlayerID, RespawnTime) end

--- 让角色复活
---@param PlayerID number -- 角色ID
---@param Now boolean -- 是否马上复活
function Damage:RespawnCharacter(PlayerID, Now) end

--- 设置角色自动复活
---@param Enabled boolean -- 是否自动复活
---@param PlayerID number -- 角色ID
function Damage:SetCharacterAutoRespawnEnabled(Enabled, PlayerID) end

--- 设置角色是否能无限复活
---@param Enabled boolean -- 是否能无限复活
---@param PlayerID number -- 角色ID
function Damage:SetCharacterInfiniteRespawnEnabled(Enabled, PlayerID) end

--- 对生物造成伤害
---@param CreatureID number -- 生物id
---@param Damage number -- 伤害的数值
---@param KillerID number -- 输出伤害的玩家|生物|元件的ID
function Damage:ApplyDamageToCreature(CreatureID, Damage, KillerID) end

--- 设置生物受到的最终伤害
---@param CreatureID number -- 生物id
---@param DamageNum number -- 最终伤害数值
function Damage:SetCreatureFinalDamage(CreatureID, DamageNum) end

--- 设置生物受到的最终治疗
---@param CreatureID number -- 生物id
---@param HealNum number -- 最终治疗数值
function Damage:SetCreatureFinalHeal(CreatureID, HealNum) end

--- 击败生物
---@param KillerID number -- 输出伤害的玩家|生物|元件的ID
---@param CreatureID number -- 生物ID
function Damage:KillCreature(KillerID, CreatureID) end

--- 让生物复活
---@param CreatureID number -- 生物ID
---@param Now boolean -- 是否立即复活
function Damage:RespawnCreature(CreatureID, Now) end

--- 增加生物当前生命值
---@param CreatureID number -- 生物ID
---@param HealthNum number -- 增加的生命数值
function Damage:ModifyCreatureHealth(CreatureID, HealthNum) end

--- 设置生物复活时间
---@param CreatureID number -- 生物ID
---@param Time number -- 复活需要等待的时间
function Damage:SetCreatureRespawnTime(CreatureID, Time) end

--- 设置生物是否自动复活
---@param Enabled boolean -- 是否自动复活
---@param CreatureID number -- 生物ID
function Damage:SetCreatureAutoRespawnEnabled(Enabled, CreatureID) end

--- 设置生物是否能无限复活
---@param Enabled boolean -- 是否能无限复活
---@param CreatureID number -- 生物ID
function Damage:SetCreatureInfiniteRespawnEnabled(Enabled, CreatureID) end

--- 获取角色最大生命数
---@param PlayerID number -- 角色ID
---@return number count -- 角色最大生命数
function Damage:GetCharacterMaxLifeCount(PlayerID) end

--- 获取角色当前生命数
---@param PlayerID number -- 角色ID
---@return number count -- 角色当前生命数
function Damage:GetCharacterLifeCount(PlayerID) end

--- 获取角色最大生命值
---@param PlayerID number -- 角色ID
---@return number MaxHP -- 角色最大生命值
function Damage:GetCharacterMaxHealth(PlayerID) end

--- 获取角色当前生命值
---@param PlayerID number -- 角色ID
---@return number HP -- 角色当前生命值
function Damage:GetCharacterHealth(PlayerID) end

--- 获取生物当前生命值
---@param CreatureID number -- 生物ID
---@return number HP -- 生物当前生命值
function Damage:GetCreatureHealth(CreatureID) end


_G.Damage = Damage
--- 元件基础
-- 元件相关的基础操作
                
--- @module "Element"

                
---@class Element
local Element = {}
                
--- 元件生成来源
---@enum Element.SPAWN_SOURCE
local SPAWN_SOURCE = {
  Config = 1,
  Scene = 2,
  Prefab = 3,
  Resource = 4,
}
Element.SPAWN_SOURCE = SPAWN_SOURCE


--- 坐标系
---@enum Element.COORDINATE
local COORDINATE = {
  World = "WorldCoordinate",
  Part = "PartCoordinate",
}
Element.COORDINATE = COORDINATE


--- 运动曲线
---@enum Element.CURVE
local CURVE = {
  linear = "linear",
  quadIn = "quadIn",
  cubicIn = "cubicIn",
  quartIn = "quartIn",
  quintIn = "quintIn",
  sineIn = "sineIn",
  expoIn = "expoIn",
  circIn = "circIn",
  elasticIn = "elasticIn",
  backIn = "backIn",
  bounceIn = "bounceIn",
  smooth = "smooth",
  quadOut = "quadOut",
  cubicOut = "cubicOut",
  quartOut = "quartOut",
  quintOut = "quintOut",
  sineOut = "sineOut",
  expoOut = "expoOut",
  circOut = "circOut",
  elasticOut = "elasticOut",
  backOut = "backOut",
}
Element.CURVE = CURVE


--- 物理材质
---@enum Element.PresetPhyMaterial
local PresetPhyMaterial = {
  None = 0,
  Ice = 1,
  Metal = 2,
  Stone = 3,
  Elastic = 4,
}
Element.PresetPhyMaterial = PresetPhyMaterial

--- 清除场景中所有道具
function Element:ClearAllProps() end

--- 判断对象是否为元件
---@param ObjectId number -- 对象ID, SceneID
---@return boolean isObjectElement -- 对象是否为元件
function Element:IsObjectElement(ObjectId) end

--- 在场景中创建指定类型的元件实例设置其坐标位置，缩放与旋转<br/>在调用 SpawnElement 时可能会出现“[WARNING]:动态生成元件，Object Count”，该日志用于统计当前对象数量，便于排查频繁生成元件导致的内存或性能问题，并不影响接口正常使用。
---@param SpawnSource Element.SPAWN_SOURCE -- 生成元件来源，官方配置元件，场景中已经摆放好的元件，或者自定义预设
---@param SpawnId number|string -- 生成元件ID - 官方配置元件：实例信息中获取类型ID(number)。<br/>场景摆放实例：实例信息中获取实例ID(number)。<br/>自定义预设体：在预设界面中获取预设ID(string)。<br/>我的模组元件：获取【自定义属性】中【我的模组】类型属性。
---@param CallBack fun(elementId: number) -- 生成元件完成之后的回调；elementId-生成的元件ID
---@param Pos Engine.Vector -- 元件位置坐标，默认Engine.Vector(0,0,0)
---@param Rot Engine.Rotator -- 元件旋转，默认Engine.Rotator(0,0,0)
---@param Scale number|Engine.Vector -- 元件缩放，默认1，如果传入number，则会在原本的缩放比例基础上等比进行缩放，如果传入Engine.Vector，则会直接设置缩放
---@param Replicate boolean -- 在服务端上生成时是否在所有客户端上生成，默认false,设为true时会在所有客户端上生成同样的元件,并需要等待所有客户端的元件全部生成完成之后才会返回,耗时较长谨慎使用
function Element:SpawnElement(SpawnSource, SpawnId, CallBack, Pos, Rot, Scale, Replicate) end

--- 将指定类型的道具创建到指定坐标
---@param PropId number -- [道具ID](tables/PropId.md)
---@param Pos Engine.Vector -- 生成位置坐标
---@param Seconds number -- 多少秒之后消失
---@param CallBack fun(elementId: number) -- 生成道具完成之后的回调；elementId-生成的元件ID
function Element:CreateProp(PropId, Pos, Seconds, CallBack) end

--- 销毁元件，异步操作，在当前帧结束之前销毁
---@param ElementId number -- 场景元件实例ID
function Element:Destroy(ElementId) end

--- 在指定时间后，销毁指定元件实例
---@param ElementId number -- 场景元件实例ID
---@param Seconds number -- 等待多少秒之后销毁元件实例
function Element:DestroyByTime(ElementId, Seconds) end

--- 设置并改变元件位置
---@param ElementId number -- 场景元件实例ID
---@param Pos Engine.Vector -- 位置坐标
---@param Coordinate Element.COORDINATE -- 参照坐标
function Element:SetPosition(ElementId, Pos, Coordinate) end

--- 设置并改变元件朝向
---@param ElementId number -- 场景元件实例ID
---@param Forward Engine.Vector -- 元件朝向方向向量
function Element:SetForward(ElementId, Forward) end

--- 设置并改变元件的缩放
---@param ElementId number -- 场景元件实例ID
---@param Scale Engine.Vector|number -- 元件缩放
function Element:SetScale(ElementId, Scale) end

--- 设置并改变元件的旋转方向
---@param ElementId number -- 场景元件实例ID
---@param Rot Engine.Rotator -- 元件旋转
---@param Coordinate Element.COORDINATE -- 参照坐标
function Element:SetRotation(ElementId, Rot, Coordinate) end

--- 使用四元数设置元件的旋转
---@param ElementId number -- 场景元件实例ID
---@param Quat Engine.Quat -- 四元数
---@param Coordinate Element.COORDINATE -- 参照坐标
function Element:SetRotationQuaternion(ElementId, Quat, Coordinate) end

--- 设置并改变元件的是否可碰撞属性
---@param ElementId number -- 场景元件实例ID
---@param EnableCollision boolean -- 是否开启可碰撞属性
function Element:SetEnableCollision(ElementId, EnableCollision) end

--- 设置是否开启受外力作用。若需要开启抓举，需要先开启受外力作用。若需要关闭抓举，需要先将受外力作用关闭
---@param ElementId number -- 场景元件实例ID
---@param AffectAbleByForce boolean -- 是否开启受外力作用
---@param CarriAble boolean -- 是否可被抓举
---@param CollisionCharMesh boolean -- 在开启受外力作用后，是否保留与角色mesh的碰撞，默认为false
function Element:SetPhysics(ElementId, AffectAbleByForce, CarriAble, CollisionCharMesh) end

--- 设置并改变元件的是否可见属性
---@param ElementId number -- 场景元件实例ID
---@param Visible boolean -- 是否可见
function Element:SetVisibility(ElementId, Visible) end

--- 设置元件的颜色
---@param ElementId number -- 场景元件实例ID
---@param Area number -- 变色区域：1,2,3,4
---@param Color string -- 颜色，十六进制代码：#FFFFFFFF，Alpha固定为255
function Element:SetColor(ElementId, Area, Color) end

--- 启用|禁用目标元件的所有运动单元，无视启动条件
---@param ElementId number -- 场景元件实例ID
---@param Enable boolean -- 是否启用所有运动单元
function Element:EnableAllMotionUnit(ElementId, Enable) end

--- 启用|禁用目标元件的指定编号运动单元，无视启动条件
---@param ElementId number -- 场景元件实例ID
---@param Index number -- 运动单元指定编号：1、2、3...
---@param Enable boolean -- 是否启用所有运动单元
function Element:EnableMotionUnitByIndex(ElementId, Index, Enable) end

--- 对具备物理特性的指定元件添加对应向量的力
---@param ElementId number -- 场景元件实例ID
---@param ForceVector Engine.Vector -- 作用力向量
function Element:AddForce(ElementId, ForceVector) end

--- 将目标元件附加到指定父元件上
---@param ChildId number -- 子元件场景实例ID
---@param ParentId number -- 父元件场景实例ID，父元件为模组时不能被附加
function Element:BindingToElement(ChildId, ParentId) end

--- 将目标元件附加到指定父角色上
---@param ChildId number -- 子元件场景实例ID
---@param ParentId number -- 父元件场景实例ID
---@param SocketName Character.SOCKET_NAME -- 骨骼附着点
---@param SocketMode Character.SOCKET_MODE -- 骨骼吸附模式
function Element:BindingToCharacterOrCreature(ChildId, ParentId, SocketName, SocketMode) end

--- 解除元件的附加逻辑
---@param ChildId number -- 子元件场景实例ID
function Element:UnBinding(ChildId) end

--- 让指定元件实例追踪目标实例，元件可以做加速运动且保持一个指定的相对距离
---@param SourceId number -- 追踪元件场景实例ID
---@param TargetId number -- 目标实例的实例ID
---@param InitSpeed number -- 初始速度
---@param Acceleration number -- 加速度
---@param MaxVelocity number -- 最大速度
---@param DistanceKeep number -- 保持距离
function Element:TrackTarget(SourceId, TargetId, InitSpeed, Acceleration, MaxVelocity, DistanceKeep) end

--- 让指定元件实例停止追踪运动
---@param ElementId number -- 追踪元件场景实例ID
function Element:StopTracking(ElementId) end

--- 让元件直线移动。
---@param ElementId number -- 元件场景实例ID
---@param Direction Engine.Vector -- 运动方向
---@param InitSpeed number -- 初始速度
---@param Acceleration number -- 加速度
---@param MaxSpeed number -- 最大速度
---@param Duration number -- 运动时间
function Element:LinearMotion(ElementId, Direction, InitSpeed, Acceleration, MaxSpeed, Duration) end

--- 让元件圆周运动，以当前坐标点与中心点之间的距离为半径。
---@param ElementId number -- 元件场景实例ID
---@param Center Engine.Vector -- 圆周运动中心点位置
---@param Angle number -- 角速度
---@param Duration number -- 运动时间
---@param Axis Engine.Vector -- 圆周运动旋转轴方向向量，默认为(0, 0, 1)
function Element:CircularMotion(ElementId, Center, Angle, Duration, Axis) end

--- 让元件抛物线运动。
---@param ElementId number -- 元件场景实例ID
---@param Endpos Engine.Vector -- 抛物线落点位置
---@param MaxHeight number -- 抛物线最大高度
---@param Duration number -- 运动时间
function Element:ParabolicMotion(ElementId, Endpos, MaxHeight, Duration) end

--- 停止元件运动表演，包括LinearMotion、CircularMotion、ParabolicMotion
---@param ElementId number -- 元件场景实例ID
function Element:StopElementMotion(ElementId) end

--- 设置元件是否进行客户端和服务端同步，开启后在服务端进行元件位移等操作时，会自动同步给客户端<br/>元件默认为开启状态
---@param ElementId number -- 元件场景实例ID
---@param Replicates boolean -- 是否开启同步
function Element:SetReplicates(ElementId, Replicates) end

--- 设置元件位置，使元件按指定方式移动到该位置
---@param ElementId number -- 元件场景实例ID
---@param Pos Engine.Vector -- 目标位置
---@param Duration number -- 运动时间
---@param Curve Element.CURVE -- 运动曲线类型
---@param BeginPos Engine.Vector -- 开始位置，不传则使用当前位置
function Element:MoveTo(ElementId, Pos, Duration, Curve, BeginPos) end

--- 停止元件移动运动
---@param ElementId number -- 元件场景实例ID
function Element:StopMoveTo(ElementId) end

--- 设置元件旋转，使元件按指定方式旋转到该角度
---@param ElementId number -- 元件场景实例ID
---@param Rot Engine.Rotator -- 目标角度向量
---@param Duration number -- 运动时间
---@param Curve Element.CURVE -- 运动曲线类型
---@param BeginRot Engine.Rotator -- 开始角度向量，不传则使用当前角度向量
---@param Coordinate Element.COORDINATE -- 参照坐标,不传则使用世界坐标
function Element:RotateTo(ElementId, Rot, Duration, Curve, BeginRot, Coordinate) end

--- 停止元件旋转
---@param ElementId number -- 元件场景实例ID
function Element:StopRotateTo(ElementId) end

--- 设置元件缩放，使元件按指定方式缩放到该大小
---@param ElementId number -- 元件场景实例ID
---@param Scale Engine.Vector -- 目标缩放大小
---@param Duration number -- 运动时间
---@param Curve Element.CURVE -- 运动曲线类型
---@param BeginScale Engine.Vector -- 开始缩放大小，不传则使用当前缩放大小
function Element:ScaleTo(ElementId, Scale, Duration, Curve, BeginScale) end

--- 停止元件缩放
---@param ElementId number -- 元件场景实例ID
function Element:StopScaleTo(ElementId) end

--- 设置元件的遮罩属性。支持：无，半透，剪影，缩进
---@param ElementId number -- 元件场景实例ID
---@param MaskType number -- 遮罩规则：1-无、2-半透、3-剪影、4-缩进
function Element:SetMask(ElementId, MaskType) end

--- 设置元件投掷修正
---@param ElementId number -- 元件场景实例ID
---@param Val boolean -- 是否进行修正
function Element:DisablePhysicsActorMultiSyncOptimizeSwitch(ElementId, Val) end

--- 判断元件是否为指定类型，是返回true，否返回false
---@param ElementId number -- 元件场景实例ID
---@param TypeId number -- 元件类型ID，请选择场景中元件，点击编辑，在实例信息中获取类型ID
---@return boolean isType -- 元件是否为指定类型
function Element:IsType(ElementId, TypeId) end

--- 判断元件是否被举起，是返回true，否返回false
---@param ElementId number -- 元件场景实例ID
---@return boolean isBeGrabbed -- 是否被举起
function Element:IsBeGrabbed(ElementId) end

--- 判断元件是否可举起，是返回true，否返回false
---@param ElementId number -- 元件场景实例ID
---@return boolean isCanBeGrabbed -- 是否可举起
function Element:IsCanBeGrabbed(ElementId) end

--- 判断元件是否可见，是返回true，否返回false
---@param ElementId number -- 元件场景实例ID
---@return boolean isVisible -- 是否可见
function Element:IsVisible(ElementId) end

--- 判断元件是否开启物理，是返回true，否返回false
---@param ElementId number -- 元件场景实例ID
---@return boolean isOpenPysical -- 是否开启物理
function Element:IsOpenPysical(ElementId) end

--- 判断元件是否开启碰撞，是返回true，否返回false
---@param ElementId number -- 元件场景实例ID
---@return boolean isOpenCollision -- 是否开启碰撞
function Element:IsOpenCollision(ElementId) end

--- 返回指定元件实例的元件类型id
---@param ElementId number -- 元件场景实例ID
---@return number typeId -- 元件类型Id
function Element:GetType(ElementId) end

--- 获取挂载在角色身上的所有元件
---@param PlayerId number -- 角色ID
---@return number[] idList -- 是挂载在角色身上的所有元件id数组
function Element:GetChildElementsFromCharacter(PlayerId) end

--- 以Engine.Vector形式返回指定元件实例的世界坐标
---@param ElementId number -- 元件场景实例ID
---@return Engine.Vector pos -- 元件世界坐标
function Element:GetPosition(ElementId) end

--- 将元件自身编辑中心坐标系中的相对坐标转化为世界坐标中的位置
---@param ElementId number -- 元件场景实例ID
---@param PartPos Engine.Vector -- 相对于元件自身朝向偏移某个位置的坐标
---@return Engine.Vector worldPos -- 一个元件自身朝向偏移某个位置的坐标在世界坐标下的位置
function Element:PartToWordPosition(ElementId, PartPos) end

--- 以Engine.Vector形式返回指定元件实例的缩放数据
---@param ElementId number -- 元件场景实例ID
---@return Engine.Vector scale -- 元件实例的缩放数据
function Element:GetScale(ElementId) end

--- 以Engine.Rotator形式返回指定元件实例的旋转数据
---@param ElementId number -- 元件场景实例ID
---@return Engine.Rotator rot -- 元件实例的旋转数据
function Element:GetRotation(ElementId) end

--- 以四元数形式返回指定元件实例的旋转数据
---@param ElementId number -- 元件场景实例ID
---@return Engine.Quat quat -- 元件实例的四元数旋转数据
function Element:GetRotationQuaternion(ElementId) end

--- 以Engine.Vector形式返回指定元件实例的正面朝向方向向量数据<br/>forward是元件局部坐标系正X轴的单位向量，代表元件朝向
---@param ElementId number -- 元件场景实例ID
---@return Engine.Vector forward -- 元件实例的正面朝向方向向量数据
function Element:GetForward(ElementId) end

--- 返回元件附加的父角色id
---@param ElementId number -- 元件场景实例ID
---@return number playerId -- 父角色id
function Element:GetAttachParentCharacter(ElementId) end

--- 返回元件附加的父元件id
---@param ElementId number -- 元件场景实例ID
---@return number elementId -- 父元件id
function Element:GetAttachParentElement(ElementId) end

--- 返回附加在元件上的子元件数组
---@param ElementId number -- 元件场景实例ID
---@return number[] idList -- 子元件id数组
function Element:GetChildElementsFromElement(ElementId) end

--- 返回某个触发盒内的元件数组
---@param ElementId number -- 元件场景实例ID
---@return number[] idList -- 触发盒内的元件id数组
function Element:GetElementsInTriggerBox(ElementId) end

--- 返回某个球形区域内的元件数组。注意：填写的半径单位为厘米
---@param Center Engine.Vector -- 球形区域中心坐标
---@param Radius number -- 球半径
---@return number[] idList -- 球形区域内的元件id数组
function Element:GetElementsInSphere(Center, Radius) end

--- 返回某个矩形区域内的元件数组。注意：填写的长宽高单位为厘米
---@param Center Engine.Vector -- 矩形区域中心坐标
---@param Length number -- 矩形长
---@param Width number -- 矩形宽
---@param Height number -- 矩形高
---@return number[] idList -- 矩形区域内的元件id数组
function Element:GetElementsInRegio(Center, Length, Width, Height) end

--- 重置元件
---@param ElementId number -- 元件ID
function Element:ResetElement(ElementId) end

--- 设置滑动摩擦系数
---@param ElementId number -- 元件ID
---@param Value number -- 修改值
function Element:SetFriction(ElementId, Value) end

--- 设置表面属性<br/>普通积木元件没有表面属性，设置表面属性后摩擦力会失效
---@param ElementId number -- 元件ID
---@param Material Element.PresetPhyMaterial -- 修改值
function Element:SetPresetPhyMaterial(ElementId, Material) end

--- 获取元件运动中心位置
---@param ElementId number -- 元件ID
---@return Engine.Vector center -- 元件运动中心位置
function Element:GetMotionCenter(ElementId) end

--- 设置质量
---@param ElementId number -- 元件ID
---@param Value number -- 修改值
function Element:SetMass(ElementId, Value) end

--- 获取元件的颜色
---@param ElementId number -- 元件ID
---@return string[] colors -- 返回颜色字符串（颜色，十六进制代码：#FFFFFFFF）
function Element:GetColor(ElementId) end

--- 设置元件皮肤
---@param ElementId number -- 元件ID
---@param SkinId number -- [皮肤](tables/SkinMaterialId.md)
function Element:SetSkin(ElementId, SkinId) end

--- 设置元件皮肤参数<br/>不同皮肤有效参数不同
---@param ElementId number -- 元件ID
---@param Params table -- [皮肤参数](tables/SkinATTRName.md)
function Element:SetSkinParams(ElementId, Params) end

--- 设置扑克牌参数<br/>不同扑克牌支持的类型可能不同<br/>花色 1:红心 2:方块 3:黑桃 4:梅花 5:王 6:特殊<br/>花色为王时 牌面值 1:大王 2:小王<br/>花色为特殊时 牌面值 1:盲牌
---@param ElementId number -- 元件ID
---@param Type number -- 花色
---@param Index number -- 牌面值 1-13
function Element:SetPoker(ElementId, Type, Index) end

--- 添加一条轨迹线
---@param Pos Engine.Vector -- 轨迹线起始位置坐标，默认Engine.Vector(0,0,0)
---@param Rot Engine.Rotator -- 轨迹线起始位置旋转，默认Engine.Rotator(0,0,0)
---@param Scale Engine.Vector -- 轨迹线大小缩放，默认Engine.Vector(1,1,1)
---@param BindElementId number -- 附加的元件id，如果不传，则放置在世界中
---@return number splineId -- 轨迹线ID
function Element:AddSpline(Pos, Rot, Scale, BindElementId) end

--- 移除轨迹线
---@param SplineId number -- 轨迹线ID
function Element:RemoveSpline(SplineId) end

--- 刷新轨迹线节点
---@param SplineId number -- 轨迹线ID
---@param SplinePoints Engine.Vector[] -- 轨迹线节点数组
function Element:UpdateSplinePoints(SplineId, SplinePoints) end

--- 更新轨迹线颜色
---@param SplineId number -- 轨迹线ID
---@param Color string -- 颜色，十六进制代码：#FFFFFFFF
---@param Index number -- 第几段轨迹线，不传默认应用到所有段
---@param StartAlpha number -- 起始透明度，0-1，不传默认为1
---@param EndAlpha number -- 终止透明度，0-1，不传默认为1
function Element:UpdateSplineColor(SplineId, Color, Index, StartAlpha, EndAlpha) end

--- 设置轨迹线流动速度
---@param SplineId number -- 轨迹线ID
---@param Speed number -- 轨迹线流动速度[0,1]
function Element:SetSplineSpeed(SplineId, Speed) end

--- 设置元件的描边状态
---@param ElementId number -- 元件ID
---@param Open boolean -- 是否开启描边
---@param Color string -- 颜色，十六进制代码，不传默认为"#FFFFFFFF"
function Element:SetOutLine(ElementId, Open, Color) end

--- 设置元件的高亮状态
---@param ElementId number -- 元件ID
---@param Open boolean -- 是否开启高亮
---@param Color string -- 颜色，十六进制代码，不传默认为"#FFFFFFFF"
function Element:SetHighLight(ElementId, Open, Color) end

--- 以Engine.Vector形式返回指定元件的SizeBox
---@param ElementId number -- 元件场景实例ID
---@return Engine.Vector size -- box 元件的SizeBox 不包含缩放
function Element:GetSizeBox(ElementId) end

--- 以Engine.Vector形式返回元件局部坐标Mesh中心偏移
---@param ElementId number -- 元件场景实例ID
---@return Engine.Vector center -- 元件局部坐标Mesh中心偏移
function Element:GetMeshCenter(ElementId) end


_G.Element = Element
--- 引擎类
-- 提供各类引擎相关的结构体和处理接口
                
--- @module "Engine"

                
---@class Engine
local Engine = {}
                
--- 向量
---@class Engine.Vector
---@field X number -- X轴坐标 @default 0
---@field Y number -- Y轴坐标 @default 0
---@field Z number -- Z轴坐标 @default 0
local Vector = {}
Engine.Vector = Vector


--- 旋转
---@class Engine.Rotator
---@field X number -- 表示绕X轴旋转的角度 @default 0
---@field Y number -- 表示绕Y轴旋转的角度 @default 0
---@field Z number -- 表示绕Z轴旋转的角度 @default 0
local Rotator = {}
Engine.Rotator = Rotator


--- 四元数
---@class Engine.Quat
---@field X number -- 取值范围[-1,1] @default 0
---@field Y number -- 取值范围[-1,1] @default 0
---@field Z number -- 取值范围[-1,1] @default 0
---@field W number -- 取值范围[-1,1] @default 0
local Quat = {}
Engine.Quat = Quat


_G.Engine = Engine
--- 事件系统
-- 监听各类系统事件，注册玩家自定义事件
                
--- @module "Events"

                
---@class Events
local Events = {}
                
---@const Events.ON_SHOP_BUY_SUCCESS
Events.ON_SHOP_BUY_SUCCESS = "ON_SHOP_BUY_SUCCESS"


---@const Events.ON_SHARING_SUCCESS
Events.ON_SHARING_SUCCESS = "ON_SHARING_SUCCESS"


---@const Events.ON_SKYBOX_CHANGE
Events.ON_SKYBOX_CHANGE = "ON_SKYBOX_CHANGE"


---@const Events.ON_PRE_GAME_END
Events.ON_PRE_GAME_END = "ON_PRE_GAME_END"


---@const Events.ON_PLAYER_ENTER
Events.ON_PLAYER_ENTER = "ON_PLAYER_ENTER"


---@const Events.ON_PLAYER_LEAVE
Events.ON_PLAYER_LEAVE = "ON_PLAYER_LEAVE"


---@const Events.ON_PLAYER_TAKE_PHOTO
Events.ON_PLAYER_TAKE_PHOTO = "ON_PLAYER_TAKE_PHOTO"


---@const Events.ON_PLAYER_HOLD_ITEM
Events.ON_PLAYER_HOLD_ITEM = "ON_PLAYER_HOLD_ITEM"


---@const Events.ON_CHARACTER_VICTORY
Events.ON_CHARACTER_VICTORY = "ON_CHARACTER_VICTORY"


---@const Events.ON_START_TEXT_CHAT
Events.ON_START_TEXT_CHAT = "ON_START_TEXT_CHAT"


---@const Events.ON_START_VOICE_CHAT
Events.ON_START_VOICE_CHAT = "ON_START_VOICE_CHAT"


---@const Events.ON_STOP_TEXT_CHAT
Events.ON_STOP_TEXT_CHAT = "ON_STOP_TEXT_CHAT"


---@const Events.ON_STOP_VOICE_CHAT
Events.ON_STOP_VOICE_CHAT = "ON_STOP_VOICE_CHAT"


---@const Events.ON_TOUCH_SCREEN_PRESSED
Events.ON_TOUCH_SCREEN_PRESSED = "ON_TOUCH_SCREEN_PRESSED"


---@const Events.ON_TOUCH_SCREEN_MOVED
Events.ON_TOUCH_SCREEN_MOVED = "ON_TOUCH_SCREEN_MOVED"


---@const Events.ON_TOUCH_SCREEN_RELEASED
Events.ON_TOUCH_SCREEN_RELEASED = "ON_TOUCH_SCREEN_RELEASED"


---@const Events.ON_ACHIEVEMENT_COMPLETED
Events.ON_ACHIEVEMENT_COMPLETED = "ON_ACHIEVEMENT_COMPLETED"


---@const Events.ON_PLAYER_PRELEAVE
Events.ON_PLAYER_PRELEAVE = "ON_PLAYER_PRELEAVE"


---@const Events.ON_MOTION_STATE_CHANGED
Events.ON_MOTION_STATE_CHANGED = "ON_MOTION_STATE_CHANGED"


---@const Events.ON_PLAYER_EQUIP_ITEM
Events.ON_PLAYER_EQUIP_ITEM = "ON_PLAYER_EQUIP_ITEM"


---@const Events.ON_PLAYER_USE_ITEM
Events.ON_PLAYER_USE_ITEM = "ON_PLAYER_USE_ITEM"


---@const Events.ON_PLAYER_RESUME
Events.ON_PLAYER_RESUME = "ON_PLAYER_RESUME"


---@const Events.ON_PLAYER_RECONNECTED
Events.ON_PLAYER_RECONNECTED = "ON_PLAYER_RECONNECTED"


---@const Events.ON_PLAYER_WATCH_IAA_AD_FINISH
Events.ON_PLAYER_WATCH_IAA_AD_FINISH = "ON_PLAYER_WATCH_IAA_AD_FINISH"


---@const Events.ON_PLAYER_IAA_AD_OPEN
Events.ON_PLAYER_IAA_AD_OPEN = "ON_PLAYER_IAA_AD_OPEN"


---@const Events.ON_PLAYER_IAA_AD_CLOSE
Events.ON_PLAYER_IAA_AD_CLOSE = "ON_PLAYER_IAA_AD_CLOSE"


---@const Events.ON_PLAYER_JOIN_MIDWAY
Events.ON_PLAYER_JOIN_MIDWAY = "ON_PLAYER_JOIN_MIDWAY"


---@const Events.ON_CHARACTER_CREATED
Events.ON_CHARACTER_CREATED = "ON_CHARACTER_CREATED"


---@const Events.ON_CHARACTER_DESTROYED
Events.ON_CHARACTER_DESTROYED = "ON_CHARACTER_DESTROYED"


---@const Events.ON_CHARACTER_REVIVED
Events.ON_CHARACTER_REVIVED = "ON_CHARACTER_REVIVED"


---@const Events.ON_PLAYER_GET_PROP
Events.ON_PLAYER_GET_PROP = "ON_PLAYER_GET_PROP"


---@const Events.ON_PLAYER_USE_PROP
Events.ON_PLAYER_USE_PROP = "ON_PLAYER_USE_PROP"


---@const Events.ON_CHARACTER_RUSH
Events.ON_CHARACTER_RUSH = "ON_CHARACTER_RUSH"


---@const Events.ON_CHARACTER_DIVE
Events.ON_CHARACTER_DIVE = "ON_CHARACTER_DIVE"


---@const Events.ON_CHARACTER_INTERACT_ELEMENT
Events.ON_CHARACTER_INTERACT_ELEMENT = "ON_CHARACTER_INTERACT_ELEMENT"


---@const Events.ON_PLAYER_TOUCH_PLAYER
Events.ON_PLAYER_TOUCH_PLAYER = "ON_PLAYER_TOUCH_PLAYER"


---@const Events.ON_PLAYER_TOUCH_CREATURE
Events.ON_PLAYER_TOUCH_CREATURE = "ON_PLAYER_TOUCH_CREATURE"


---@const Events.ON_PLAYER_TOUCH_ELEMENT
Events.ON_PLAYER_TOUCH_ELEMENT = "ON_PLAYER_TOUCH_ELEMENT"


---@const Events.ON_CHARACTER_RESPAWN
Events.ON_CHARACTER_RESPAWN = "ON_CHARACTER_RESPAWN"


---@const Events.ON_CHARACTER_KILLED
Events.ON_CHARACTER_KILLED = "ON_CHARACTER_KILLED"


---@const Events.ON_CHARACTER_TAKE_DAMAGE
Events.ON_CHARACTER_TAKE_DAMAGE = "ON_CHARACTER_TAKE_DAMAGE"


---@const Events.ON_CHARACTER_TAKE_FATAL_DAMAGE
Events.ON_CHARACTER_TAKE_FATAL_DAMAGE = "ON_CHARACTER_TAKE_FATAL_DAMAGE"


---@const Events.ON_CHARACTER_ENTER_SIGNAL_BOX
Events.ON_CHARACTER_ENTER_SIGNAL_BOX = "ON_CHARACTER_ENTER_SIGNAL_BOX"


---@const Events.ON_CHARACTER_LEAVE_SIGNAL_BOX
Events.ON_CHARACTER_LEAVE_SIGNAL_BOX = "ON_CHARACTER_LEAVE_SIGNAL_BOX"


---@const Events.ON_CHARACTER_START_JUMPING
Events.ON_CHARACTER_START_JUMPING = "ON_CHARACTER_START_JUMPING"


---@const Events.ON_DRIVER_GET_ON_VEHICLE
Events.ON_DRIVER_GET_ON_VEHICLE = "ON_DRIVER_GET_ON_VEHICLE"


---@const Events.ON_DRIVER_GET_OFF_VEHICLE
Events.ON_DRIVER_GET_OFF_VEHICLE = "ON_DRIVER_GET_OFF_VEHICLE"


---@const Events.ON_PASSENGER_GET_ON_VEHICLE
Events.ON_PASSENGER_GET_ON_VEHICLE = "ON_PASSENGER_GET_ON_VEHICLE"


---@const Events.ON_PASSENGER_GET_OFF_VEHICLE
Events.ON_PASSENGER_GET_OFF_VEHICLE = "ON_PASSENGER_GET_OFF_VEHICLE"


---@const Events.ON_CHARACTER_LIFT
Events.ON_CHARACTER_LIFT = "ON_CHARACTER_LIFT"


---@const Events.ON_CHARACTER_PUTDOWN
Events.ON_CHARACTER_PUTDOWN = "ON_CHARACTER_PUTDOWN"


---@const Events.ON_CREATURE_DESTROYED
Events.ON_CREATURE_DESTROYED = "ON_CREATURE_DESTROYED"


---@const Events.ON_CREATURE_ENTER_TRIGGER
Events.ON_CREATURE_ENTER_TRIGGER = "ON_CREATURE_ENTER_TRIGGER"


---@const Events.ON_CREATURE_LEAVE_TRIGGER
Events.ON_CREATURE_LEAVE_TRIGGER = "ON_CREATURE_LEAVE_TRIGGER"


---@const Events.ON_CREATURE_JUMP
Events.ON_CREATURE_JUMP = "ON_CREATURE_JUMP"


---@const Events.ON_CREATURE_KILLED
Events.ON_CREATURE_KILLED = "ON_CREATURE_KILLED"


---@const Events.ON_CREATURE_SPRINT
Events.ON_CREATURE_SPRINT = "ON_CREATURE_SPRINT"


---@const Events.ON_CREATURE_LIFT
Events.ON_CREATURE_LIFT = "ON_CREATURE_LIFT"


---@const Events.ON_CREATURE_PUTDOWN
Events.ON_CREATURE_PUTDOWN = "ON_CREATURE_PUTDOWN"


---@const Events.ON_CREATURE_DIVE
Events.ON_CREATURE_DIVE = "ON_CREATURE_DIVE"


---@const Events.ON_CREATURE_TOUCH_PLAYER
Events.ON_CREATURE_TOUCH_PLAYER = "ON_CREATURE_TOUCH_PLAYER"


---@const Events.ON_CREATURE_TOUCH_CREATURE
Events.ON_CREATURE_TOUCH_CREATURE = "ON_CREATURE_TOUCH_CREATURE"


---@const Events.ON_CREATURE_TOUCH_ELEMENT
Events.ON_CREATURE_TOUCH_ELEMENT = "ON_CREATURE_TOUCH_ELEMENT"


---@const Events.ON_CHARACTER_HIT_TARGET_WITH_FIREARM
Events.ON_CHARACTER_HIT_TARGET_WITH_FIREARM = "ON_CHARACTER_HIT_TARGET_WITH_FIREARM"


---@const Events.ON_CREATURE_PLAYING_CLICKED
Events.ON_CREATURE_PLAYING_CLICKED = "ON_CREATURE_PLAYING_CLICKED"


---@const Events.ON_CREATURE_PLAYING_RELEASED
Events.ON_CREATURE_PLAYING_RELEASED = "ON_CREATURE_PLAYING_RELEASED"


---@const Events.ON_CREATURE_PLAYING_DRAGGED
Events.ON_CREATURE_PLAYING_DRAGGED = "ON_CREATURE_PLAYING_DRAGGED"


---@const Events.ON_CREATURE_RESPAWN
Events.ON_CREATURE_RESPAWN = "ON_CREATURE_RESPAWN"


---@const Events.ON_BEFORE_CREATURE_TAKING_DAMAGE
Events.ON_BEFORE_CREATURE_TAKING_DAMAGE = "ON_BEFORE_CREATURE_TAKING_DAMAGE"


---@const Events.ON_BEFORE_CREATURE_GETTING_HEALING
Events.ON_BEFORE_CREATURE_GETTING_HEALING = "ON_BEFORE_CREATURE_GETTING_HEALING"


---@const Events.ON_CREATURE_TAKE_DAMAGE
Events.ON_CREATURE_TAKE_DAMAGE = "ON_CREATURE_TAKE_DAMAGE"


---@const Events.ON_CREATURE_TAKE_FATAL_DAMAGE
Events.ON_CREATURE_TAKE_FATAL_DAMAGE = "ON_CREATURE_TAKE_FATAL_DAMAGE"


---@const Events.ON_CREATURE_CREATED
Events.ON_CREATURE_CREATED = "ON_CREATURE_CREATED"


---@const Events.ON_AI_TAKEOVER
Events.ON_AI_TAKEOVER = "ON_AI_TAKEOVER"


---@const Events.ON_ELEMENT_DESTROYED
Events.ON_ELEMENT_DESTROYED = "ON_ELEMENT_DESTROYED"


---@const Events.ON_ELEMENT_START_MOVING
Events.ON_ELEMENT_START_MOVING = "ON_ELEMENT_START_MOVING"


---@const Events.ON_ELEMENT_END_MOVING
Events.ON_ELEMENT_END_MOVING = "ON_ELEMENT_END_MOVING"


---@const Events.ON_ELEMENT_TOUCH_PLAYER
Events.ON_ELEMENT_TOUCH_PLAYER = "ON_ELEMENT_TOUCH_PLAYER"


---@const Events.ON_ELEMENT_CREATED
Events.ON_ELEMENT_CREATED = "ON_ELEMENT_CREATED"


---@const Events.ON_ELEMENT_ENTER_TRIGGER
Events.ON_ELEMENT_ENTER_TRIGGER = "ON_ELEMENT_ENTER_TRIGGER"


---@const Events.ON_ELEMENT_LEAVE_TRIGGER
Events.ON_ELEMENT_LEAVE_TRIGGER = "ON_ELEMENT_LEAVE_TRIGGER"


---@const Events.ON_ELEMENT_PLAYING_DRAGGED
Events.ON_ELEMENT_PLAYING_DRAGGED = "ON_ELEMENT_PLAYING_DRAGGED"


---@const Events.ON_ELEMENT_PLAYING_CLICKED
Events.ON_ELEMENT_PLAYING_CLICKED = "ON_ELEMENT_PLAYING_CLICKED"


---@const Events.ON_ELEMENT_PLAYING_RELEASED
Events.ON_ELEMENT_PLAYING_RELEASED = "ON_ELEMENT_PLAYING_RELEASED"


---@const Events.ON_ELEMENT_TOUCH_CREATURE
Events.ON_ELEMENT_TOUCH_CREATURE = "ON_ELEMENT_TOUCH_CREATURE"


---@const Events.ON_ELEMENT_HIT_ELEMENT
Events.ON_ELEMENT_HIT_ELEMENT = "ON_ELEMENT_HIT_ELEMENT"


---@const Events.ON_LOGIC_ACTOR_ENTER_TRIGGER
Events.ON_LOGIC_ACTOR_ENTER_TRIGGER = "ON_LOGIC_ACTOR_ENTER_TRIGGER"


---@const Events.ON_LOGIC_ACTOR_LEAVE_TRIGGER
Events.ON_LOGIC_ACTOR_LEAVE_TRIGGER = "ON_LOGIC_ACTOR_LEAVE_TRIGGER"


---@const Events.ON_LOGIC_ACTOR_CREATED
Events.ON_LOGIC_ACTOR_CREATED = "ON_LOGIC_ACTOR_CREATED"


---@const Events.ON_LOGIC_ACTOR_DESTROYED
Events.ON_LOGIC_ACTOR_DESTROYED = "ON_LOGIC_ACTOR_DESTROYED"


---@const Events.ON_LOGIC_ACTOR_START_MOVING
Events.ON_LOGIC_ACTOR_START_MOVING = "ON_LOGIC_ACTOR_START_MOVING"


---@const Events.ON_LOGIC_ACTOR_END_MOVING
Events.ON_LOGIC_ACTOR_END_MOVING = "ON_LOGIC_ACTOR_END_MOVING"


---@const Events.ON_GROUP_ACTOR_CREATED
Events.ON_GROUP_ACTOR_CREATED = "ON_GROUP_ACTOR_CREATED"


---@const Events.ON_GROUP_ACTOR_DESTROYED
Events.ON_GROUP_ACTOR_DESTROYED = "ON_GROUP_ACTOR_DESTROYED"


---@const Events.ON_EFFECT_CREATED_IN_WORLD
Events.ON_EFFECT_CREATED_IN_WORLD = "ON_EFFECT_CREATED_IN_WORLD"


---@const Events.ON_EFFECT_CREATED_ON_CHARACTER
Events.ON_EFFECT_CREATED_ON_CHARACTER = "ON_EFFECT_CREATED_ON_CHARACTER"


---@const Events.ON_EFFECT_CREATED_ON_ELEMENT
Events.ON_EFFECT_CREATED_ON_ELEMENT = "ON_EFFECT_CREATED_ON_ELEMENT"


---@const Events.ON_EFFECT_CREATED_ON_CREATURE
Events.ON_EFFECT_CREATED_ON_CREATURE = "ON_EFFECT_CREATED_ON_CREATURE"


---@const Events.ON_PLAYER_THROWN_ITEM
Events.ON_PLAYER_THROWN_ITEM = "ON_PLAYER_THROWN_ITEM"


---@const Events.ON_PLAYER_ITEM_DROPPED
Events.ON_PLAYER_ITEM_DROPPED = "ON_PLAYER_ITEM_DROPPED"


---@const Events.ON_PERSONAL_SCORE_CHANGED
Events.ON_PERSONAL_SCORE_CHANGED = "ON_PERSONAL_SCORE_CHANGED"


---@const Events.ON_PLAYER_GET_ITEM
Events.ON_PLAYER_GET_ITEM = "ON_PLAYER_GET_ITEM"


---@const Events.ON_CREATURE_GET_PROP
Events.ON_CREATURE_GET_PROP = "ON_CREATURE_GET_PROP"


---@const Events.ON_DIALOGUE_FINISH
Events.ON_DIALOGUE_FINISH = "ON_DIALOGUE_FINISH"


---@const Events.ON_TASK_ACCEPT
Events.ON_TASK_ACCEPT = "ON_TASK_ACCEPT"


---@const Events.ON_TASK_FINISH
Events.ON_TASK_FINISH = "ON_TASK_FINISH"


---@const Events.ON_BUTTON_PRESSED
Events.ON_BUTTON_PRESSED = "ON_BUTTON_PRESSED"


---@const Events.ON_BUTTON_RELEASED
Events.ON_BUTTON_RELEASED = "ON_BUTTON_RELEASED"


---@const Events.ON_BUTTON_MOVED
Events.ON_BUTTON_MOVED = "ON_BUTTON_MOVED"


---@const Events.ON_BUTTON_CLICKED
Events.ON_BUTTON_CLICKED = "ON_BUTTON_CLICKED"


---@const Events.ON_SEND_MSG
Events.ON_SEND_MSG = "ON_SEND_MSG"


---@const Events.ON_BEFORE_CHARACTER_TAKE_HURT
Events.ON_BEFORE_CHARACTER_TAKE_HURT = "ON_BEFORE_CHARACTER_TAKE_HURT"


---@const Events.ON_BEFORE_CHARACTER_GET_HEAL
Events.ON_BEFORE_CHARACTER_GET_HEAL = "ON_BEFORE_CHARACTER_GET_HEAL"


---@const Events.ON_HITRESPONSEBOX_RECEIVE_DAMAGE
Events.ON_HITRESPONSEBOX_RECEIVE_DAMAGE = "ON_HITRESPONSEBOX_RECEIVE_DAMAGE"


---@const Events.ON_PLAYER_CLICK_ITEM
Events.ON_PLAYER_CLICK_ITEM = "ON_PLAYER_CLICK_ITEM"


---@const Events.ON_SIGNAL_SWITCHER_STATE_CHANGE
Events.ON_SIGNAL_SWITCHER_STATE_CHANGE = "ON_SIGNAL_SWITCHER_STATE_CHANGE"


---@const Events.ON_BEGIN_PLAY
Events.ON_BEGIN_PLAY = "ON_BEGIN_PLAY"


---@const Events.ON_END_PLAY
Events.ON_END_PLAY = "ON_END_PLAY"


_G.Events = Events
--- 客户端假人
-- 可在客户端创建新的角色，并进行控制
                
--- @module "FakeCharacter"

                
---@class FakeCharacter
local FakeCharacter = {}
                --- 在客户端上创建一个假人
---@param Pos Engine.Vector -- 角色位置坐标
---@param Rot Engine.Rotator -- 角色旋转
---@param Scale Engine.Vector -- 角色缩放
---@param RandomBody boolean -- 是否随机假人形象，默认为false
---@param AutoConvert boolean -- 角色的旋转与角色mesh旋转有90度的偏移，是否自动转换,默认为false
---@return number characterId -- 假人实例Id
function FakeCharacter:CreateCharacter(Pos, Rot, Scale, RandomBody, AutoConvert) end

--- 在客户端上销毁一个假人
---@param CharacterId number -- 假人实例Id
function FakeCharacter:DestroyCharacter(CharacterId) end

--- 给假人替换上指定外观
---@param CharacterId number -- 假人实例Id
---@param BodyIds number[] -- [部位Id数组](tables/NPCAppearanceId.md)
function FakeCharacter:ChangeCharacterBody(CharacterId, BodyIds) end

--- 替换为指定玩家的形象
---@param CharacterId number -- 假人实例id
---@param PlayerId number -- 玩家uid
function FakeCharacter:ChangeBodyFromPlayer(CharacterId, PlayerId) end

--- 替换为指定生物的形象
---@param CharacterId number -- 假人实例id
---@param ElementId number -- 地图场景中的生物元件实例id
function FakeCharacter:ChangeBodyFromCreature(CharacterId, ElementId) end

--- 设置客户端假人角色位置坐标
---@param CharacterId number -- 假人实例id
---@param Pos Engine.Vector -- 位置坐标
function FakeCharacter:SetPosition(CharacterId, Pos) end

--- 返回假人实例位置
---@param CharacterId number -- 假人实例id
---@return Engine.Vector pos -- 角色位置
function FakeCharacter:GetPosition(CharacterId) end

--- 设置客户端假人角色旋转
---@param CharacterId number -- 假人实例id
---@param Rot Engine.Rotator -- 角色旋转
---@param AutoConvert boolean -- 角色的旋转与角色mesh旋转有90度的偏移，是否自动转换,默认为false
function FakeCharacter:SetRotation(CharacterId, Rot, AutoConvert) end

--- 客户端假人播放动画
---@param CharacterId number -- 假人实例id
---@param AnimName string -- [动画名称](tables/AnimId.md)
function FakeCharacter:PlayAnim(CharacterId, AnimName) end

--- 客户端假人停止播放动画
---@param CharacterId number -- 假人实例id
---@param AnimName string -- [动画名称](tables/AnimId.md)
function FakeCharacter:StopAnim(CharacterId, AnimName) end

--- 射线检测客户端假人精准部位
---@param CharacterId number -- 假人实例id
---@param StartWorldPos Engine.Vector -- 射线起始的世界坐标
---@param EndWorldPos Engine.Vector -- 射线终止的世界坐标
---@param EnableDebugLine boolean -- 是否绘制Debug射线（仅试玩），默认为false
---@param DebugLineDuration number -- Debug射线的持续时间，单位秒，默认为1
---@return Character.SOCKET_NAME socketName -- 命中的部位，nil表示未命中
function FakeCharacter:CheckPartWithRaycast(CharacterId, StartWorldPos, EndWorldPos, EnableDebugLine, DebugLineDuration) end

--- 给角色添加向某个方向的力
---@param CharacterId number -- 假人实例id
---@param ImpulseVector Engine.Vector -- 方向力, 最终表现效果会受到角色不同的体型影响
---@param SocketName FakeCharacter.ImpulseSocketName -- 可施加冲量的骨骼节点，传入时将会对指定骨骼部位施加冲量(需开启全身物理模拟)。
function FakeCharacter:AddImpulse(CharacterId, ImpulseVector, SocketName) end

--- 是否开启角色全身物理模拟
---@param CharacterId number -- 假人实例id
---@param Enable boolean -- true-开启，false-关闭
function FakeCharacter:EnableSimulatePhysics(CharacterId, Enable) end

--- 获取角色骨骼的世界坐标位置
---@param CharacterId number -- 假人实例id
---@param SocketName Character.SOCKET_NAME -- 骨骼名字
---@return Engine.Vector worldPos -- 骨骼所在世界坐标位置
function FakeCharacter:GetSocketPosition(CharacterId, SocketName) end

--- 获取角色骨骼的旋转
---@param CharacterId number -- 假人实例id
---@param SocketName Character.SOCKET_NAME -- 骨骼名字
---@return Engine.Rotator rot -- 骨骼旋转
function FakeCharacter:GetSocketRotation(CharacterId, SocketName) end

--- 控制角色腰部骨骼角度
---@param CharacterId number -- 假人实例id
---@param Rot Engine.Rotator -- 骨骼旋转角度，不传默认为(0,0,0)，恢复为原样
function FakeCharacter:SetCharacterBoneRotator(CharacterId, Rot) end

--- 是否开启角色布娃娃效果，假人形象替换后，需重新开启布娃娃状态
---@param CharacterId number -- 假人实例id
---@param Enable boolean -- true-开启，false-关闭
function FakeCharacter:EnableRagdoll(CharacterId, Enable) end

--- 设置角色指定骨骼物理动画混合权重
---@param CharacterId number -- 假人实例id
---@param BoneName Character.SOCKET_NAME -- 骨骼名字
---@param BlendWeight number -- 混合权重，0-1之间，0表示完全由动画驱动，1表示完全由物理驱动
---@param BIncludeSelf boolean -- 是否包含自身
function FakeCharacter:SetAllBodiesBelowPhysicsBlendWeight(CharacterId, BoneName, BlendWeight, BIncludeSelf) end

--- 设置角色全身物理动画混合权重
---@param CharacterId number -- 假人实例id
---@param BlendWeight number -- 混合权重，0-1之间，0表示完全由动画驱动，1表示完全由物理驱动
function FakeCharacter:SetAllBodiesPhysicsBlendWeight(CharacterId, BlendWeight) end


_G.FakeCharacter = FakeCharacter
--- 功能元件
-- 对功能元件进行相关操作处理
                
--- @module "FuncElement"

                
---@class FuncElement
local FuncElement = {}
                
--- 烟雾效果
---@enum FuncElement.SMOKE_EFFECT
local SMOKE_EFFECT = {
  BigWhite = "BigWhite",
  SmallGrey = "SmallGrey",
}
FuncElement.SMOKE_EFFECT = SMOKE_EFFECT

--- 设置指定进度条显示器的最大值。
---@param ElementId number -- 场景元件实例ID
---@param MaxValue number -- 进度条显示器的最大值
function FuncElement:SetProgressBoardMaxValue(ElementId, MaxValue) end

--- 设置指定进度条显示器当前的填充值。
---@param ElementId number -- 场景元件实例ID
---@param CurValue number -- 进度条显示器当前的填充值
function FuncElement:SetProgressBoardValue(ElementId, CurValue) end

--- 设置并改变写字板、文本显示器、备注板等文本内容。
---@param ElementId number -- 场景元件实例ID
---@param Text string -- 文本内容
function FuncElement:SetTextBoardText(ElementId, Text) end

--- 设置并改变写字板字体大小。
---@param ElementId number -- 场景元件实例ID
---@param FontSize number -- 字体大小，范围：20~100
function FuncElement:SetTextBoardFontSize(ElementId, FontSize) end

--- 修改图标显示器图片，并设置大小。
---@param ElementId number -- 场景元件实例ID
---@param ImageId number -- [图片ID](tables/ImageId.md)
---@param Size number -- 图片大小[0,5]
---@param IsCustomImage boolean -- 是否使用自定义图片,默认为false，可不填
function FuncElement:SetPictureBoardImage(ElementId, ImageId, Size, IsCustomImage) end

--- 以string形式返回写字板文本内容。
---@param ElementId number -- 场景元件实例ID
---@return string text -- 写字板文本内容
function FuncElement:GetTextBoardText(ElementId) end

--- 以number形式返回写字板字体大小。
---@param ElementId number -- 场景元件实例ID
---@return number size -- 写字板字体大小
function FuncElement:GetTextBoardFontSize(ElementId) end

--- 设置烟雾弹的烟雾效果为大型白雾|小型灰雾。
---@param EffectType FuncElement.SMOKE_EFFECT -- 烟雾效果
function FuncElement:SetBombSmokeEffectType(EffectType) end

--- 设置备注板仅显示文字
---@param ElementId number -- 场景元件实例ID
---@param IsOnlyShow boolean -- 是否仅显示文字(true为仅显示,false反之)
function FuncElement:SetTextBoardIsOnlyShowText(ElementId, IsOnlyShow) end

--- 设置写字板是否开启富文本
---@param ElementId number -- 场景元件实例ID
---@param IsShowRich boolean -- 是否开启富文本
function FuncElement:SetTextBoardIsShowRichText(ElementId, IsShowRich) end

--- 设置文字显示器是否朝向相机
---@param ElementId number -- 场景元件实例ID
---@param IsFaceToCamera boolean -- 是否是否朝向相机
function FuncElement:SetTextDisplayIsFaceToCamera(ElementId, IsFaceToCamera) end

--- 设置图标显示器是否显示在半透元件之前
---@param ElementId number -- 场景元件实例ID
---@param IsBeforeTranslucentItem boolean -- 是否显示在半透元件之前
function FuncElement:SetIconDisplayIsBeforeTranslucentItem(ElementId, IsBeforeTranslucentItem) end

--- 设置空气墙游玩中是否可见
---@param ElementId number -- 场景元件实例ID
---@param Visible boolean -- 是否可见
function FuncElement:SetAirWallVisibleInPlay(ElementId, Visible) end

--- 设置氛围点光 光源强度大小
---@param ElementId number -- 场景元件实例ID
---@param LightIntensityNumber number -- 光源强度值 范围(0~50)
function FuncElement:SetAmbienceLightIntensity(ElementId, LightIntensityNumber) end

--- 设置氛围锥形光 射灯内角大小
---@param ElementId number -- 场景元件实例ID
---@param SpotlightInnerNumber number -- 射灯内值 范围(1~80)
function FuncElement:SetAmbienceConeSpotlightInner(ElementId, SpotlightInnerNumber) end

--- 设置氛围锥形光 射灯外角大小
---@param ElementId number -- 场景元件实例ID
---@param SpotlightOuterNumber number -- 射灯外角值 范围(1~80)
function FuncElement:SetAmbienceConeSpotlightOuter(ElementId, SpotlightOuterNumber) end

--- 设置氛围线性光 中心偏移
---@param ElementId number -- 场景元件实例ID
---@param CenterOffset number -- 偏移值 范围[-1,1]
function FuncElement:SetAmbienceLinearLightCenterOffset(ElementId, CenterOffset) end

--- 设置星宝衣架无限使用
---@param ElementId number -- 场景元件实例ID
---@param UnLimited boolean -- 是否无限制使用
function FuncElement:SetHangerUnLimited(ElementId, UnLimited) end


_G.FuncElement = FuncElement
--- 引导系统
-- 控制目标指引器的表现
                
--- @module "Guide"

                
---@class Guide
local Guide = {}
                --- 设置目标指引图案
-- 对玩家设置指定目标指引器的图案样式，颜色以及透明度。
---@param GuideId number -- 目标指示器元件ID
---@param PictureID number -- [图片ID](tables/ImageId.md)
---@param Color string -- 十六进制颜色码，#FFFFFFFF
---@param Transparency number -- 透明度 0-1
---@param IsCustomImage boolean -- 是否使用自定义图片,默认为false，可不填
function Guide:SetGuidePicture(GuideId, PictureID, Color, Transparency, IsCustomImage) end

--- 设置指定目标指引器是否可见。
-- 对玩家设置指定目标指引器是否可见。
---@param GuideId number -- 目标指示器元件ID
---@param Visible boolean -- 是否可见
function Guide:SetGuideVisible(GuideId, Visible) end

--- 设置目标指引图案显示上限
-- 设置游戏中目标指引最多同时显示的图案数量。
-- 可调节范围：[0,5]
---@param MaxLimit number -- 显示上限
function Guide:SetGuideShowLimit(MaxLimit) end

--- 设置目标指引图案大小
---@param GuideId number -- 目标指示器元件ID
---@param Size number -- 显示的图案大小 最大为1
function Guide:SetGuideImageSize(GuideId, Size) end

--- 设置目标指引图案提示文字。
-- 最多支持输入7个字。
---@param GuideId number -- 目标指示器元件ID
---@param Text string -- 文字提示
function Guide:SetGuideLabelText(GuideId, Text) end

--- 设置目标指引是否只显示文字提示
---@param GuideId number -- 目标指示器元件ID
---@param TextOnly boolean -- 是否只显示文字提示
function Guide:SetGuideShowTextOnly(GuideId, TextOnly) end


_G.Guide = Guide
--- 广告系统
-- 广告相关操作
-- 针对广告功能使用如有疑问，请参考 [如何使用广告功能](https://creator.ymzx.qq.com/dream_helper/dist/onboarding/ads/index.html)
                
--- @module "IAA"

                
---@class IAA
local IAA = {}
                --- 对玩家播放广告
-- 仅小游戏平台可观看广告
---@param Tag string -- 广告标识
function IAA:LetPlayerWatchAds(Tag) end

--- 玩家是否是微信小游戏玩家
---@return boolean isPlayer -- true-是微信小游戏玩家，false-不是微信小游戏玩家
function IAA:IsWeChatMiniGamePlayer() end


_G.IAA = IAA
--- 背包系统
-- 玩家背包以及背包物品相关操作
-- 针对背包系统功能使用如有疑问，请参考 [背包系统相关问题](https://creator.ymzx.qq.com/dream_helper/dist/onboarding/playerbackpack/index.html)
-- 针对星钻内购功能使用如有疑问，请参考 [如何使用星钻内购功能](https://creator.ymzx.qq.com/dream_helper/dist/onboarding/starpurchase/index.html)
                
--- @module "Inventory"

                
---@class Inventory
local Inventory = {}
                
--- 装备栏下标
---@enum Inventory.EQUIP_INDEX
local EQUIP_INDEX = {
  Main = 1,
  Sub = 2,
}
Inventory.EQUIP_INDEX = EQUIP_INDEX

--- 在指定位置创建多个可拾取进背包的掉落物
---@param ItemId number -- [物品Id](tables/ItemId.md)
---@param Count number -- 生成掉落物数量
---@param Pos Engine.Vector -- 生成掉落物位置坐标
---@return boolean success -- 掉落物是否生成成功
function Inventory:GenerateDropItem(ItemId, Count, Pos) end

--- 在指定位置创建多个可拾取进背包的自定义物品掉落物
---@param ItemId string -- 自定义物品的"物品ID"，在自定义物品的编辑面板-实例信息中查看
---@param Count number -- 生成掉落物数量
---@param Pos Engine.Vector -- 生成掉落物位置坐标
---@return boolean success -- 掉落物是否生成成功
function Inventory:GenerateDropCustomItem(ItemId, Count, Pos) end

--- 清除所有掉落物
function Inventory:ClearAllDropItems() end

--- 给玩家背包添加指定数量的某物品。
---@param PlayerId number -- 玩家ID
---@param ItemId number -- [物品Id](tables/ItemId.md)
---@param Count number -- 背包物品数量
---@return number addCount -- 添加进背包的物品数量，0表示添加失败
function Inventory:AddItem(PlayerId, ItemId, Count) end

--- 给玩家扣除指定数量的某物品。
---@param PlayerId number -- 玩家ID
---@param ItemId number -- [物品Id](tables/ItemId.md)
---@param Count number -- 背包物品数量
---@return number count -- 背包扣除的物品数量，0表示扣除失败
function Inventory:RemoveItem(PlayerId, ItemId, Count) end

--- 给玩家背包添加指定数量的某自定义物品。
---@param PlayerId number -- 玩家ID
---@param ItemId string -- 自定义物品的"物品ID"，在自定义物品的编辑面板-实例信息中查看
---@param Count number -- 背包物品数量
---@return number addCount -- 添加进背包的物品数量，0表示添加失败
function Inventory:AddCustomItem(PlayerId, ItemId, Count) end

--- 给玩家扣除指定数量的某自定义物品。
---@param PlayerId number -- 玩家ID
---@param ItemId string -- 自定义物品的"物品ID"，在自定义物品的编辑面板-实例信息中查看
---@param Count number -- 背包物品数量
---@return number count -- 背包扣除的物品数量，0表示扣除失败
function Inventory:RemoveCustomItem(PlayerId, ItemId, Count) end

--- 清空玩家组的背包。
---@param PlayerId number -- 玩家ID
function Inventory:ClearBag(PlayerId) end

--- 获取物品基础信息，仅支持官方物品。
---@param ItemId number -- [物品Id](tables/ItemId.md)
---@return {name:string,desc:string,icon:number} itemInfo -- 物品信息，{name - 物品名称, desc - 物品描述, icon - 物品图标}
function Inventory:GetItemInfo(ItemId) end

--- 获取背包物品数量
---@param PlayerId number -- 玩家ID
---@param ItemId number -- [物品Id](tables/ItemId.md)
---@return number count -- 背包物品数量
function Inventory:GetItemCount(PlayerId, ItemId) end

--- 获取背包所有物品
---@param PlayerId number -- 玩家ID
---@return {slot:number,itemId:number|string,count:number,isCustom:boolean}[] items -- 背包物品数组，数组值-{slot-背包格子位置, itemId-物品类型ID, count-物品数量, isCustom-是否为自定义物品}
function Inventory:GetAllItem(PlayerId) end

--- 切换装备栏
---@param Index Inventory.EQUIP_INDEX -- 装备栏下标
function Inventory:SwitchEquipByIndex(Index) end

--- 设置物品是否可出售
---@param itemId number|string -- [物品Id](tables/ItemId.md) 自定义物品的"物品ID"，在自定义物品的编辑面板-实例信息中查看
---@param isSellable boolean -- 是否可出售
function Inventory:SetSellable(itemId, isSellable) end

--- 获取物品是否可出售
---@param itemId number|string -- [物品Id](tables/ItemId.md) 自定义物品的"物品ID"，在自定义物品的编辑面板-实例信息中查看
---@return boolean isSellable -- 是否可出售
function Inventory:GetSellable(itemId) end

--- 设置物品是否可丢弃
---@param itemId number|string -- [物品Id](tables/ItemId.md) 自定义物品的"物品ID"，在自定义物品的编辑面板-实例信息中查看
---@param isDroppable boolean -- 是否可丢弃
function Inventory:SetDroppable(itemId, isDroppable) end

--- 获取物品是否可丢弃
---@param itemId number|string -- [物品Id](tables/ItemId.md) 自定义物品的"物品ID"，在自定义物品的编辑面板-实例信息中查看
---@return boolean isDroppable -- 是否可丢弃
function Inventory:GetDroppable(itemId) end

--- 设置物品是否可使用
---@param itemId number|string -- [物品Id](tables/ItemId.md) 自定义物品的"物品ID"，在自定义物品的编辑面板-实例信息中查看
---@param isUsable boolean -- 是否可使用
function Inventory:SetUsable(itemId, isUsable) end

--- 获取物品是否可使用
---@param itemId number|string -- [物品Id](tables/ItemId.md) 自定义物品的"物品ID"，在自定义物品的编辑面板-实例信息中查看
---@return boolean isUsable -- 是否可使用
function Inventory:GetUsable(itemId) end

--- 设置物品价格
---@param itemId number|string -- [物品Id](tables/ItemId.md) 自定义物品的"物品ID"，在自定义物品的编辑面板-实例信息中查看
---@param value number -- 价格
function Inventory:SetValue(itemId, value) end

--- 获取物品价格
---@param itemId number|string -- [物品Id](tables/ItemId.md) 自定义物品的"物品ID"，在自定义物品的编辑面板-实例信息中查看
---@return number value -- 价格
function Inventory:GetValue(itemId) end

--- 设置物品价值对应货币
---@param itemId number|string -- [物品Id](tables/ItemId.md) 自定义物品的"物品ID"，在自定义物品的编辑面板-实例信息中查看
---@param coinId number -- 货币Id
function Inventory:SetSellCoin(itemId, coinId) end

--- 获取物品价值对应货币
---@param itemId number|string -- [物品Id](tables/ItemId.md) 自定义物品的"物品ID"，在自定义物品的编辑面板-实例信息中查看
---@return number coinId -- 货币Id
function Inventory:GetSellCoin(itemId) end

--- 使用物品，可以使用药品以及玩法物品，药品使用需要读条一次只能使用一个
---@param playerId number -- 玩家Id
---@param itemId number|string -- [物品Id](tables/ItemId.md) 自定义物品的"物品ID"，在自定义物品的编辑面板-实例信息中查看
---@param count number -- 使用数量
---@return boolean isSuccess -- 是否成功使用
function Inventory:UseItem(playerId, itemId, count) end

--- 出售物品
---@param playerId number -- 玩家Id
---@param itemId number|string -- [物品Id](tables/ItemId.md) 自定义物品的"物品ID"，在自定义物品的编辑面板-实例信息中查看
---@param count number -- 出售数量
---@return boolean isSuccess -- 是否成功出售
function Inventory:SellItem(playerId, itemId, count) end

--- 丢弃物品
---@param playerId number -- 玩家Id
---@param itemId number|string -- [物品Id](tables/ItemId.md) 自定义物品的"物品ID"，在自定义物品的编辑面板-实例信息中查看
---@param count number -- 丢弃数量
---@return boolean isSuccess -- 是否成功丢弃
function Inventory:DropItem(playerId, itemId, count) end

--- 设置点击物品是否打开物品详情弹窗，默认打开<br/>如果希望让物品详情在储物格、装备格不被打开，那么请使用UI:SetBagCanOpenDetailPanel接口
---@param itemId number|string -- [物品Id](tables/ItemId.md) 自定义物品的"物品ID"，在自定义物品的编辑面板-实例信息中查看
---@param isOpen boolean -- 是否打开
function Inventory:SetCanOpenDetailPanel(itemId, isOpen) end


_G.Inventory = Inventory
--- 打印信息
-- 连上VSCode后,可以看到打印的信息
                
--- @module "Log"

                
---@class Log
local Log = {}
                --- 打印调试信息<br/>以Debug等级打印调试信息。
---@param ... any -- 可变参数，需要进行打印的信息
function Log:PrintDebug(...) end

--- 打印信息<br/>以Info等级打印日志信息。
---@param ... any -- 可变参数，需要进行打印的信息
function Log:PrintLog(...) end

--- 打印警告信息<br/>以Warning等级打印警告信息。
---@param ... any -- 可变参数，需要进行打印的信息
function Log:PrintWarning(...) end

--- 打印错误信息<br/>以Error等级打印警告信息。
---@param ... any -- 可变参数，需要进行打印的信息
function Log:PrintError(...) end

--- 以Log级别打印Table信息
---@param _T {} -- 需要进行打印的table表
function Log:PrintTable(_T) end

--- 以Debug级别打印服务端日志，会自动同步发送至客户端，仅在试玩时生效
---@param ... any -- 可变参数，需要进行打印的信息
function Log:PrintServerLog(...) end


_G.Log = Log
--- 逻辑元件
-- 对逻辑元件进行相关操作处理
                
--- @module "LogicElement"

                
---@class LogicElement
local LogicElement = {}
                
--- 可触发的武器类型
---@enum LogicElement.WEAPON_TYPE
local WEAPON_TYPE = {
  Gun = 1,
  Melee = 2,
  Explore = 3,
  Skill = 4,
}
LogicElement.WEAPON_TYPE = WEAPON_TYPE


--- 可触发效果的元件类型
---@enum LogicElement.TRIGGER_TYPE
local TRIGGER_TYPE = {
  Character = 1,
  PhysicElement = 2,
  MoveActor = 3,
  SpecifyActor = 4,
  NPC = 6,
  Vehicle = 7,
}
LogicElement.TRIGGER_TYPE = TRIGGER_TYPE

--- 返回某个球形区域内的逻辑元件数组。注意：填写的半径单位为厘米
---@param Center Engine.Vector -- 球形区域中心坐标
---@param Radius number -- 球半径
---@return number[] idList -- 球形区域内的逻辑元件id数组
function LogicElement:GetLogicElementsInSphere(Center, Radius) end

--- 返回某个矩形区域内的逻辑元件数组。注意：填写的长宽高单位为厘米
---@param Center Engine.Vector -- 矩形区域中心坐标
---@param Length number -- 矩形长
---@param Width number -- 矩形宽
---@param Height number -- 矩形高
---@return number[] idList -- 矩形区域内的逻辑元件id数组
function LogicElement:GetLogicElementsInRegion(Center, Length, Width, Height) end

--- 设置爆破炸弹阵营
---@param BombId number -- 爆破炸弹场景实例ID
---@param TeamId number -- 阵营ID，按顺序排列：1、2、3、4...
function LogicElement:SetC4BombSide(BombId, TeamId) end

--- 返回某个triggerbox内的逻辑元件数组
---@param ElementId number -- 元件场景实例ID
---@return number[] idList -- triggerbox内的元件id数组
function LogicElement:GetLogicElementsInTriggerBox(ElementId) end

--- 游玩时显示触发盒
---@param ElementId number -- 元件场景实例ID
---@param Visible boolean -- 是否显示
function LogicElement:SetTriggerBoxShow(ElementId, Visible) end

--- 设置伤害触发盒显示血量
---@param ElementId number -- 元件场景实例ID
---@param Visible boolean -- 是否显示
function LogicElement:SetHitResponseBoxShowBlood(ElementId, Visible) end

--- 设置伤害触发盒累伤总值
---@param ElementId number -- 元件场景实例ID
---@param DamageValue number -- 最大累伤值
function LogicElement:SetHitResponseBoxMaxCumulativeDamageValue(ElementId, DamageValue) end

--- 设置伤害触发盒可触发武器类型
---@param ElementId number -- 元件场景实例ID
---@param WeaponType LogicElement.WEAPON_TYPE -- 武器类型
---@param CanTrigger boolean -- 是否可以触发
function LogicElement:SetHitResponseBoxCanTriggerWeaponType(ElementId, WeaponType, CanTrigger) end

--- 获取伤害触发盒的当前伤害值
---@param ElementId number -- 元件场景实例ID
---@return number CurrentCumulativeDamage -- 伤害触发盒的当前伤害值
function LogicElement:GetHitResponseBoxCurrentCumulativeDamage(ElementId) end

--- 设置信号触发开关的触发元件类型
---@param ElementId number -- 元件场景实例ID
---@param TriggerType LogicElement.TRIGGER_TYPE -- 触发元件类型
---@param CanTrigger boolean -- 是否可以触发
function LogicElement:SetSignalSwitcherTriggerType(ElementId, TriggerType, CanTrigger) end

--- 设置信号触发开关是否可以重复触发
---@param ElementId number -- 元件场景实例ID
---@param IsCanRepeat boolean -- 是否可以重复触发
function LogicElement:SetSignalSwitcherIsCanRepeatTrigger(ElementId, IsCanRepeat) end

--- 根据ElementId监听信号开关状态改变事件
---@param ElementId number -- 元件场景实例ID
---@param SwitcherState boolean -- 开关状态
---@param CallBack fun(elementId: number, bOpen: boolean) -- 开关转化为目标状态的回调
function LogicElement:AddListenerSwitchStateChange(ElementId, SwitcherState, CallBack) end

--- 根据ElementId移除信号开关状态改变事件
---@param ElementId number -- 元件场景实例ID
---@param SwitcherState boolean -- 开关状态
function LogicElement:RemoveListenerSwitchStateChange(ElementId, SwitcherState) end


_G.LogicElement = LogicElement
--- 其他服务
                
--- @module "MiscService"

                
---@class MiscService
local MiscService = {}
                
--- 可查询对象类型
---@enum MiscService.EQueryableObjectType
local EQueryableObjectType = {
  Character = "Character",
  Creature = "Creature",
  Element = "Element",
  LogicElement = "LogicElement",
  Player = "Player",
  TriggerBox = "TriggerBox",
}
MiscService.EQueryableObjectType = EQueryableObjectType


--- 可转义对象类型
---@enum MiscService.EStringConvertibleType
local EStringConvertibleType = {
  Boolean = 1,
  Number = 2,
  String = 3,
  Vector = 4,
  Player = 5,
  Character = 6,
  Creature = 7,
  Element = 8,
  LogicElement = 9,
  SignalBox = 10,
  Item = 11,
  MotionUnit = 12,
  Effect = 13,
  Audio = 14,
}
MiscService.EStringConvertibleType = EStringConvertibleType


--- 时间对象类型
---@enum MiscService.ETimeUnit
local ETimeUnit = {
  Year = "year",
  Month = "month",
  Day = "day",
  Hour = "hour",
  Min = "min",
  Sec = "sec",
}
MiscService.ETimeUnit = ETimeUnit


--- 中途退出弹窗提示文本类型
---@enum MiscService.EQuitGameTextType
local EQuitGameTextType = {
  Content = "Content",
  Confirm = "Confirm",
  Cancel = "Cancel",
}
MiscService.EQuitGameTextType = EQuitGameTextType


--- 游戏画质
---@enum MiscService.GRAPHICS_QUALITY
local GRAPHICS_QUALITY = {
  Low = 1,
  Standard = 2,
  High = 3,
  Best = 4,
}
MiscService.GRAPHICS_QUALITY = GRAPHICS_QUALITY


--- 设备等级
---@enum MiscService.DEVICE_LEVEL
local DEVICE_LEVEL = {
  High = 0,
  High_Mid = 1,
  Middle = 2,
  Middle_Low = 3,
  Low = 4,
}
MiscService.DEVICE_LEVEL = DEVICE_LEVEL


--- 日志参数
---@enum MiscService.ELogParamKey
local ELogParamKey = {
  Param1 = "Param1",
  Param2 = "Param2",
  Param3 = "Param3",
  Param4 = "Param4",
  Param5 = "Param5",
  Param6 = "Param6",
  Param7 = "Param7",
  Param8 = "Param8",
  Param9 = "Param9",
  Param10 = "Param10 ",
}
MiscService.ELogParamKey = ELogParamKey

--- 是否允许玩家中途加入地图
---@param IsOpen boolean -- 是否允许中途加入
function MiscService:SetMidJoinOpen(IsOpen) end

--- 让玩家进入观战模式<br/>仅多人模式生效，游戏人数需大于一人
function MiscService:SetPlayerEnterOB() end

--- 让玩家退出观战模式
function MiscService:SetPlayerLeaveOB() end

--- 让玩家组在新的对局中载入场景，该API仅在大厅模式地图有效，不能传入大厅场景
---@param SceneId number -- 场景ID
---@param PlayerList number[] -- 玩家ID数组
function MiscService:ReqStartNewGame(SceneId, PlayerList) end

--- 让玩家组快速进入新对局，该API仅在大厅模式地图有效，可以传入大厅场景
---@param SceneId number -- 场景ID
---@param PlayerList number[] -- 玩家ID数组
function MiscService:ReqEnterNewScene(SceneId, PlayerList) end

--- 让玩家拍照
function MiscService:TakePhoto() end

--- 判断对象是否存在于游戏内。
---@param ObjType MiscService.EQueryableObjectType -- 对象类型
---@param ObjID number -- 对象ID
---@return boolean isExist -- 是否存在
function MiscService:IsObjectExist(ObjType, ObjID) end

--- 对象转字符串
---@param ObjType MiscService.EStringConvertibleType -- 对象类型
---@param Obj any -- 即将转换的对象
---@return string str -- 对象的可读信息
function MiscService:ObjectToString(ObjType, Obj) end

--- 获取随机颜色
---@return string color -- 颜色，十六进制代码：#FFFFFFFF
function MiscService:RandomColor() end

--- 获取当前游戏时间
---@return number time -- 游戏启动时间,单位秒
function MiscService:GetPassedRuntime() end

--- 时间单位(年-月-日 时:分:秒)转换为时间戳
---@param Completetime string -- 包含年月日的完整字符串
---@param Option MiscService.ETimeUnit -- 时间对象类型（可不填）
---@return number time -- 时间戳
function MiscService:DateYMDHMSToTime(Completetime, Option) end

--- 获取服务器时间，以格式YYYY-MM-DD HH:MM:SS返回
---@param Option MiscService.ETimeUnit -- 时间对象类型（可不填）
---@return string time -- 服务器时间
function MiscService:GetServerTimeToTime(Option) end

--- 将时间戳转为时间单位(年-月-日 时:分:秒)
---@param Timestamp number -- 时间戳
---@param Option MiscService.ETimeUnit -- 时间对象类型（可不填）
---@return string time -- 返回年月日格式字符串
function MiscService:TimeStampToTime(Timestamp, Option) end

--- 将时间戳转为完整时间单位(年-月-日 时:分:秒)
---@param Timestamp number -- 时间戳
---@return string time -- 返回完整的年月日格式字符串
function MiscService:TimeStampToDateYMDHMS(Timestamp) end

--- 获取当前游戏时间戳
---@return number time -- 游戏时间,单位毫秒
function MiscService:GetServerTimestamp() end

--- 获取屏幕分辨率
---@return {X:number,Y:number} size -- 包含宽度(X),高度(Y)的表
function MiscService:GetLocalScreenSize() end

--- 屏幕坐标归一化
---@param ScreenX number -- 屏幕上X坐标
---@param ScreenY number -- 屏幕上Y坐标
---@return {X:number,Y:number} pos -- 归一化的屏幕坐标
function MiscService:NormalizeLocalScreenPos(ScreenX, ScreenY) end

--- 屏幕坐标转世界坐标
---@param ScreenX number -- 屏幕上X坐标
---@param ScreenY number -- 屏幕上Y坐标
---@param PlaneZ number -- 在摄像机空间的深度
---@return {X:number,Y:number,Z:number} worldPos -- 世界坐标
---@return {X:number,Y:number,Z:number} worldDir -- 摄像机方向向量
function MiscService:ScreenToWorld(ScreenX, ScreenY, PlaneZ) end

--- 世界坐标转屏幕坐标
---@param Position Engine.Vector -- 世界坐标
---@return {X:number,Y:number} screenPos -- 屏幕坐标
function MiscService:WorldToScreenPoint(Position) end

--- 获取房主玩家的ID
---@return number ownerID -- 房主ID
function MiscService:GetHomeOwner() end

--- 设置玩家中途退出结算结果
---@param Players number[] -- 玩家id数组
---@param IsVictory boolean -- 胜利：true 失败：false
function MiscService:SetQuitGameResult(Players, IsVictory) end

--- 设置玩家中途退出弹窗提示<br/>初始化时立即使用无效
---@param Players number[] -- 玩家id数组
---@param TextType MiscService.EQuitGameTextType -- 文本类型
---@param Text string -- 文本
function MiscService:SetQuitGameText(Players, TextType, Text) end

--- 设置游戏画质
---@param GraphicsQuality MiscService.GRAPHICS_QUALITY -- 画质等级
function MiscService:SetGraphicsQuality(GraphicsQuality) end

--- 获取当前游戏画质
---@return MiscService.GRAPHICS_QUALITY graphicsQuality -- 当前游戏画质
function MiscService:GetGraphicsQuality() end

--- 获取当前设备等级
---@return MiscService.DEVICE_LEVEL DeviceLevel -- 当前设备等级
function MiscService:GetDeviceLevel() end

--- 设置日志
---@param key MiscService.ELogParamKey -- 日志参数
---@param value number -- 参数值
function MiscService:Log(key, value) end

--- 推送日志
---@return boolean res -- 是否推送成功
function MiscService:PushLog() end

--- 将table解析成json格式的字符串
---@param Table table -- 需要解析成json格式字符串的表，table的key是string时，转成：{"key":value,...}，table的key是整型1..n连续的数字，且没有非数字键视为数组：[v1,v2,...]，table的key不能是其他类型以及非整型连续的数字
---@return string jsonStr -- 解析成json格式的字符串
function MiscService:Table2JsonStr(Table) end

--- 将json格式的字符串还原成table
---@param JsonStr string -- json格式的字符串
---@return table jsonTable -- json格式的字符串还原出来的表
function MiscService:JsonStr2Table(JsonStr) end

--- 获取胶囊体内随机点
---@param CenterPos {X:number,Y:number,Z:number} -- 胶囊体中心坐标
---@param CapsuleRadius number -- 胶囊体的半径
---@param CapsuleHalfHeight number -- 胶囊体的半高
---@return {X:number,Y:number,Z:number} randomPosition -- 随机点坐标
function MiscService:RandomPositionWithCapsule(CenterPos, CapsuleRadius, CapsuleHalfHeight) end

--- 获取球体内随机点
---@param CenterPos {X:number,Y:number,Z:number} -- 球体中心坐标
---@param SphereRadius number -- 球体的半径
---@return {X:number,Y:number,Z:number} randomPosition -- 随机点坐标
function MiscService:RandomPositionWithSphere(CenterPos, SphereRadius) end

--- 获取立方体内随机点
---@param CenterPos {X:number,Y:number,Z:number} -- 立方体中心坐标
---@param Length number -- 立方体的长
---@param Width number -- 立方体的宽
---@param Height number -- 立方体的高
---@return {X:number,Y:number,Z:number} randomPosition -- 随机点坐标
function MiscService:RandomPositionWithCube(CenterPos, Length, Width, Height) end


_G.MiscService = MiscService
--- 音乐
-- 对游戏内音乐播放进行控制操作
-- 针对音乐系统使用如有疑问，请参考 [音乐音效相关问题](https://creator.ymzx.qq.com/dream_helper/dist/onboarding/musicaudioissues/index.html)
                
--- @module "Music"

                
---@class Music
local Music = {}
                --- 播放指定音乐(支持淡入效果)
---@param MusicIndex number -- 推荐音乐列表中的歌曲序号(从1开始)
function Music:PlayMusic(MusicIndex) end

--- 暂停播放音乐
function Music:PauseMusic() end

--- 恢复播放音乐
function Music:ResumeMusic() end

--- 从指定时间点开始播放音乐
---@param MusicIndex number -- 推荐音乐列表中的歌曲序号(从1开始)
---@param StartTime number -- 音乐从哪个时间开始播放，此时间最好小于音乐时长
function Music:PlayMusicByStartTime(MusicIndex, StartTime) end

--- 停止当前音乐(支持淡出效果)
function Music:StopMusic() end

--- 设置指定音乐的淡入时间
---@param MusicIndex number -- 推荐音乐列表中的歌曲序号(从1开始)
---@param FadeInTime number -- 淡入时间(秒，1~5)
function Music:SetMusicFadeInTime(MusicIndex, FadeInTime) end

--- 设置指定音乐的淡出时间
---@param MusicIndex number -- 推荐音乐列表中的歌曲序号(从1开始)
---@param FadeOutTime number -- 淡出时间(秒，1~5)
function Music:SetMusicFadeOutTime(MusicIndex, FadeOutTime) end

--- 获取音乐总时长
---@param MusicIndex number -- 推荐音乐列表中的歌曲序号(从1开始)
---@return number musicDuration -- 音乐总时长(秒)
function Music:GetMusicDurationTime(MusicIndex) end

--- 跳转到当前音乐的指定时间点（跳转的前提是当前有一首音乐已经在播放、暂停或停止状态）
---@param WantJumpTime number -- 目标时间(秒)
function Music:JumpMusicToSpecifyTime(WantJumpTime) end

--- 获取音乐名字
---@param MusicIndex number -- 推荐音乐列表中的歌曲序号(从1开始)
---@return string musicName -- 音乐名字
function Music:GetMusicName(MusicIndex) end


_G.Music = Music
--- 粒子特效
-- 对粒子特效进行控制处理
                
--- @module "Particle"

                
---@class Particle
local Particle = {}
                --- 在角色上创建特效
---@param EffectType number -- [特效类型](tables/EffectId.md)
---@param PlayerID number -- 玩家id
---@param SocketName Character.SOCKET_NAME -- 骨骼节点
---@param IsAutoDestroy boolean -- 是否过一段时间自动销毁，默认为false，设置为true之后，StopTime不填或填0时，如果是单次播放的特效，特效会在播放完成之后自动销毁，而循环特效则不会自动销毁
---@param StopTime number -- 自动销毁需要等待的时间，默认为0
---@return number effectId -- 当前创建的特效ID,小于0表示创建失败
function Particle:PlayOnCharacter(EffectType, PlayerID, SocketName, IsAutoDestroy, StopTime) end

--- 在元件上创建特效
---@param EffectType number -- [特效类型](tables/EffectId.md)
---@param ElementId number -- 元件id
---@param IsAutoDestroy boolean -- 是否过一段时间自动销毁，默认为false，设置为true之后，StopTime不填或填0时，如果是单次播放的特效，特效会在播放完成之后自动销毁，而循环特效则不会自动销毁
---@param StopTime number -- 自动销毁需要等待的时间，默认为0
---@return number effectId -- 当前创建的特效ID,小于0表示创建失败
function Particle:PlayOnActor(EffectType, ElementId, IsAutoDestroy, StopTime) end

--- 在场景中创建特效
---@param EffectType number -- [特效类型](tables/EffectId.md)
---@param Pos Engine.Vector -- 创建特效在场景中的位置坐标
---@param Scale number -- 创建特效的缩放
---@param IsAutoDestroy boolean -- 是否过一段时间自动销毁，默认为false，设置为true之后，StopTime不填或填0时，如果是单次播放的特效，特效会在播放完成之后自动销毁，而循环特效则不会自动销毁
---@param StopTime number -- 自动销毁需要等待的时间，默认为0
---@return number effectId -- 当前创建的特效ID,小于0表示创建失败
function Particle:PlayAtPosition(EffectType, Pos, Scale, IsAutoDestroy, StopTime) end

--- 在生物上创建特效
---@param EffectType number -- [特效类型](tables/EffectId.md)
---@param CreatureId number -- 生物id
---@param SocketName Character.SOCKET_NAME -- 骨骼节点
---@param IsAutoDestroy boolean -- 是否过一段时间自动销毁，默认为false，设置为true之后，StopTime不填或填0时，如果是单次播放的特效，特效会在播放完成之后自动销毁，而循环特效则不会自动销毁
---@param StopTime number -- 自动销毁需要等待的时间，默认为0
---@return number effectId -- 当前创建的特效ID,小于0表示创建失败
function Particle:PlayOnCreature(EffectType, CreatureId, SocketName, IsAutoDestroy, StopTime) end

--- 在相机上创建特效
---@param EffectType number -- [特效类型](tables/EffectId.md)
---@param IsAutoDestroy boolean -- 是否过一段时间自动销毁，默认为false，设置为true之后，StopTime不填或填0时，如果是单次播放的特效，特效会在播放完成之后自动销毁，而循环特效则不会自动销毁
---@param StopTime number -- 自动销毁需要等待的时间，默认为0
---@return number effectId -- 当前创建的特效ID,小于0表示创建失败
function Particle:PlayOnCamera(EffectType, IsAutoDestroy, StopTime) end

--- 销毁特效
---@param EffectId number -- 创建特效时返回的ID
function Particle:StopParticle(EffectId) end

--- 设置特效位置<br/>若在场景中时，设置坐标为世界坐标。若特效挂载在角色、元件等对象上，设置的坐标为局部坐标。
---@param EffectId number -- 创建特效时返回的ID
---@param Pos Engine.Vector -- 位置坐标
function Particle:SetParticlePosition(EffectId, Pos) end

--- 设置特效旋转方向<br/>若在场景中时，设置坐标为世界旋转。若特效挂载在角色、元件等对象上，设置的坐标为局部旋转。
---@param EffectId number -- 创建特效时返回的ID
---@param Rot Engine.Rotator -- 旋转方向
function Particle:SetParticleRotation(EffectId, Rot) end

--- 设置特效缩放倍数<br/>若特效挂载在角色、元件等对象上，设置的坐标为局部缩放。
---@param EffectId number -- 创建特效时返回的ID
---@param Scale Engine.Vector -- 缩放倍数
function Particle:SetParticleScale(EffectId, Scale) end

--- 设置特效颜色
---@param EffectId number -- 创建特效时返回的ID
---@param Area number -- 区域id
---@param Color string -- 颜色，十六进制代码：#FFFFFFFF
function Particle:SetParticleColor(EffectId, Area, Color) end

--- 设置特效可见性
---@param EffectId number -- 创建特效时返回的ID
---@param Visible boolean -- 是否可见
function Particle:SetParticleVisible(EffectId, Visible) end

--- 创建两点之间的链式特效
---@param EffectType number -- [链式特效类型](tables/LineEffectId.md)
---@param StartPos Engine.Vector -- 链式特效起始位置坐标
---@param EndPos Engine.Vector -- 链式特效结束位置坐标
---@param IsAutoDestroy boolean -- 是否过一段时间自动销毁，默认为false，设置为true之后，StopTime不填或填0时，如果是单次播放的特效，特效会在播放完成之后自动销毁，而循环特效则不会自动销毁
---@param StopTime number -- 自动销毁需要等待的时间，默认为0
---@return number effectId -- 返回特效id
function Particle:CreateChainParticle(EffectType, StartPos, EndPos, IsAutoDestroy, StopTime) end

--- 刷新链式特效的起始和结束坐标点
---@param EffectId number -- 创建链式特效时返回的id
---@param StartPos Engine.Vector -- 链式特效起始位置坐标
---@param EndPos Engine.Vector -- 链式特效结束位置坐标
function Particle:UpdateChainParticle(EffectId, StartPos, EndPos) end

--- 判断特效是否存在
---@param EffectId number -- 创建特效时返回的id
---@return boolean bExist -- true-存在，false-不存在
function Particle:IsParticleEffectExist(EffectId) end

--- 重新播放特效（特效需要存在才能重新播放）
---@param EffectId number -- 创建特效时返回的id
function Particle:RePlayParticle(EffectId) end


_G.Particle = Particle
--- 物理元件
-- 对物理元件进行相关操作处理
                
--- @module "PhysicsElement"

                
---@class PhysicsElement
local PhysicsElement = {}
                
--- 麻将花色类型
---@enum PhysicsElement.MAHJONG_SUITS
local MAHJONG_SUITS = {
  One = 1,
  Two = 2,
  Three = 3,
  Four = 4,
  Five = 5,
  Six = 6,
  Seven = 7,
  Rich = 8,
}
PhysicsElement.MAHJONG_SUITS = MAHJONG_SUITS


--- 球号(1-8显示位单色球，9-15显示位双色球)
---@enum PhysicsElement.BALL_NUMBER
local BALL_NUMBER = {
  One = 1,
  Two = 2,
  Three = 3,
  Four = 4,
  Five = 5,
  Six = 6,
  Seven = 7,
  Eight = 8,
  Nine = 9,
  Ten = 10,
  Eleven = 11,
  Twelve = 12,
  Thirteen = 13,
  Fourteen = 14,
  Fifteen = 15,
}
PhysicsElement.BALL_NUMBER = BALL_NUMBER

--- 设置物理麻将元件的花色
---@param ElementId number -- 物理麻将的实例ID
---@param SuitType PhysicsElement.MAHJONG_SUITS -- 花色类型
function PhysicsElement:SetMahjongSuits(ElementId, SuitType) end

--- 设置单色球|双色球元件球号
---@param ElementId number -- 单色球|双色球的实例ID
---@param BallNumber PhysicsElement.BALL_NUMBER -- 球号(1-8显示位单色球，9-15显示位双色球)
function PhysicsElement:SetBallNumber(ElementId, BallNumber) end


_G.PhysicsElement = PhysicsElement
--- 游玩交互
-- 用于游玩时对场景物体进行点击拖拽等交互行为的控制
                
--- @module "PlayInteractive"

                
---@class PlayInteractive
local PlayInteractive = {}
                
--- 碰撞物体类型
---@enum PlayInteractive.HIT_TYPE
local HIT_TYPE = {
  Element = 1,
  Creature = 2,
  Character = 3,
  TriggerBox = 4,
  LighterCreature = 5,
}
PlayInteractive.HIT_TYPE = HIT_TYPE


--- 平面方向类型
---@enum PlayInteractive.DIR_TYPE
local DIR_TYPE = {
  XY = 1,
  XZ = 2,
  YZ = 3,
}
PlayInteractive.DIR_TYPE = DIR_TYPE

--- 设置玩家是否启用陀螺仪。
---@param IsEnable boolean -- 是否启用陀螺仪
function PlayInteractive:SetEnableMotionState(IsEnable) end

--- 获取玩家是否启用陀螺仪。
---@return boolean isEnable -- 是否启用陀螺仪
function PlayInteractive:GetIsMotionStateEnable() end

--- 返回陀螺仪倾斜度。
---@return Engine.Vector tile -- 陀螺仪倾斜度
function PlayInteractive:GetTile() end

--- 返回陀螺仪角速度。
---@return Engine.Vector rotationRate -- 陀螺仪角速度
function PlayInteractive:GetRotationRate() end

--- 返回陀螺仪重力。
---@return Engine.Vector gravity -- 陀螺仪重力
function PlayInteractive:GetGravity() end

--- 返回陀螺仪加速度。
---@return Engine.Vector acceleration -- 陀螺仪加速度
function PlayInteractive:GetAcceleration() end

--- 设置生物是否可以被点击
---@param CreatureId number -- 生物元件ID
---@param ClickAble boolean -- 是否可以被点击
function PlayInteractive:SetCreatureClick(CreatureId, ClickAble) end

--- 设置生物是否可以被拖动
---@param CreatureId number -- 生物元件ID
---@param DraggAble boolean -- 是否可以被拖动
function PlayInteractive:SetCreatureDrag(CreatureId, DraggAble) end

--- 设置拖拽平面,拖拽时沿着此平面运动
---@param CreatureId number -- 生物元件ID
---@param DirectionType PlayInteractive.DIR_TYPE -- 指定平面方向
function PlayInteractive:SetCreatureDragDirectionType(CreatureId, DirectionType) end

--- 设置生物所属玩家
---@param CreatureId number -- 生物元件ID
---@param PlayerIds number[] -- 玩家ID数组
function PlayInteractive:SetCreatureOwner(CreatureId, PlayerIds) end

--- 设置元件是否可以被点击
---@param ElementId number -- 元件ID
---@param ClickAble boolean -- 是否可以被点击
function PlayInteractive:SetElementClick(ElementId, ClickAble) end

--- 设置元件是否可以被拖动
---@param ElementId number -- 元件ID
---@param DraggAble boolean -- 是否可以被拖动
function PlayInteractive:SetElementDrag(ElementId, DraggAble) end

--- 设置拖拽平面,拖拽时沿着此平面运动
---@param ElementId number -- 元件ID
---@param DirectionType PlayInteractive.DIR_TYPE -- 指定平面方向
function PlayInteractive:SetElementDragDirectionType(ElementId, DirectionType) end

--- 设置元件所属玩家
---@param ElementId number -- 元件ID
---@param PlayerIds number[] -- 玩家ID数组
function PlayInteractive:SetElementOwner(ElementId, PlayerIds) end

--- 获取射线碰撞检测的首个物体（角色、生物、元件、触发盒、轻量化生物）
---@param HitType PlayInteractive.HIT_TYPE -- 碰撞检测物体类型
---@param StartWorldPos Engine.Vector -- 起始坐标
---@param EndWorldPos Engine.Vector -- 终止坐标
---@param EnableDebugLine boolean -- 是否绘制Debug射线（仅试玩），默认为false
---@param DebugLineDuration number -- Debug射线的持续时间，单位秒，默认为1
---@return number id -- 碰撞到的物体ID，没有碰撞到时返回nil
---@return {hitPos:Engine.Vector,hitNormal:Engine.Vector} hitInfo -- 碰撞信息，{hitPos-射线碰撞到的位置坐标点, hitNormal-射线碰撞到的表面法线方向}
function PlayInteractive:GetHitResultWithRaycast(HitType, StartWorldPos, EndWorldPos, EnableDebugLine, DebugLineDuration) end

--- 获取射线碰撞检测的物体id数组（角色、生物、元件、触发盒、轻量化生物）
---@param HitType PlayInteractive.HIT_TYPE -- 碰撞检测物体类型
---@param StartWorldPos Engine.Vector -- 起始坐标
---@param EndWorldPos Engine.Vector -- 终止坐标
---@param EnableDebugLine boolean -- 是否绘制Debug射线（仅试玩），默认为false
---@param DebugLineDuration number -- Debug射线的持续时间，单位秒，默认为1
---@return number[] ids -- 碰撞到的物体ID数组
function PlayInteractive:GetHitResultsWithRaycast(HitType, StartWorldPos, EndWorldPos, EnableDebugLine, DebugLineDuration) end

--- 获取一个竖立摆放的胶囊体在两点之间移动进行扫掠过程中碰撞检测的首个物体（角色、生物、元件、触发盒、轻量化生物）
---@param HitType PlayInteractive.HIT_TYPE -- 碰撞检测物体类型
---@param StartWorldPos Engine.Vector -- 胶囊体进行扫掠检测碰撞时的起始坐标
---@param EndWorldPos Engine.Vector -- 胶囊体进行扫掠检测碰撞时的终止坐标
---@param CapsuleRadius number -- 胶囊体的半径，胶囊体两端半球的半径大小
---@param CapsuleHalfHeight number -- 胶囊体的半高，胶囊体中心点到两端的距离大小，当半高<=半径时，表现为一个半径为CapsuleRadius球体扫掠
---@param EnableDebugLine boolean -- 是否绘制胶囊体扫射轨迹Debug线（仅试玩），默认为false
---@param DebugLineDuration number -- Debug线的持续时间，单位秒，默认为1
---@return number id -- 碰撞到的物体ID，没有碰撞到时返回nil
---@return {hitPos:Engine.Vector,hitNormal:Engine.Vector} hitInfo -- 碰撞信息，{hitPos-胶囊体扫掠碰撞到的位置坐标点, hitNormal-胶囊体扫掠碰撞到的表面法线方向}
function PlayInteractive:GetHitResultWithCapsule(HitType, StartWorldPos, EndWorldPos, CapsuleRadius, CapsuleHalfHeight, EnableDebugLine, DebugLineDuration) end

--- 获取一个竖立摆放的胶囊体在两点之间移动进行扫掠过程中碰撞检测的物体id数组（角色、生物、元件、触发盒、轻量化生物）
---@param HitType PlayInteractive.HIT_TYPE -- 碰撞检测物体类型
---@param StartWorldPos Engine.Vector -- 胶囊体进行扫掠检测碰撞时的起始坐标
---@param EndWorldPos Engine.Vector -- 胶囊体进行扫掠检测碰撞时的终止坐标
---@param CapsuleRadius number -- 胶囊体的半径，胶囊体两端半球的半径大小
---@param CapsuleHalfHeight number -- 胶囊体的半高，胶囊体中心点到两端的距离大小，当半高<=半径时，表现为一个半径为CapsuleRadius球体扫掠
---@param EnableDebugLine boolean -- 是否绘制胶囊体扫射轨迹Debug线（仅试玩），默认为false
---@param DebugLineDuration number -- Debug线的持续时间，单位秒，默认为1
---@return number[] ids -- 碰撞到的物体ID数组
function PlayInteractive:GetHitResultsWithCapsule(HitType, StartWorldPos, EndWorldPos, CapsuleRadius, CapsuleHalfHeight, EnableDebugLine, DebugLineDuration) end

--- 获取一个立方体在两点之间移动进行扫掠过程中碰撞检测的首个物体（角色、生物、元件、触发盒、轻量化生物）
---@param HitType PlayInteractive.HIT_TYPE -- 碰撞检测物体类型
---@param StartWorldPos Engine.Vector -- 立方体进行扫掠检测碰撞时的起始坐标
---@param EndWorldPos Engine.Vector -- 立方体进行扫掠检测碰撞时的终止坐标
---@param HalfSize Engine.Vector -- 立方体中心点沿世界坐标XYZ轴到表面的距离
---@param Orientation Engine.Rotator -- 立方体的旋转方向
---@param EnableDebugLine boolean -- 是否绘制立方体扫射轨迹Debug线（仅试玩），默认为false
---@param DebugLineDuration number -- Debug线的持续时间，单位秒，默认为1
---@return number id -- 碰撞到的物体ID，没有碰撞到时返回nil
---@return {hitPos:Engine.Vector,hitNormal:Engine.Vector} hitInfo -- 碰撞信息，{hitPos-立方体扫掠碰撞到的位置坐标点, hitNormal-立方体扫掠碰撞到的表面法线方向}
function PlayInteractive:GetHitResultWithBox(HitType, StartWorldPos, EndWorldPos, HalfSize, Orientation, EnableDebugLine, DebugLineDuration) end

--- 获取一个立方体在两点之间移动进行扫掠过程中碰撞检测的物体id数组（角色、生物、元件、触发盒、轻量化生物）
---@param HitType PlayInteractive.HIT_TYPE -- 碰撞检测物体类型
---@param StartWorldPos Engine.Vector -- 立方体进行扫掠检测碰撞时的起始坐标
---@param EndWorldPos Engine.Vector -- 立方体进行扫掠检测碰撞时的终止坐标
---@param HalfSize Engine.Vector -- 立方体中心点沿世界坐标XYZ轴到表面的距离
---@param Orientation Engine.Rotator -- 立方体的旋转方向
---@param EnableDebugLine boolean -- 是否绘制立方体扫射轨迹Debug线（仅试玩），默认为false
---@param DebugLineDuration number -- Debug线的持续时间，单位秒，默认为1
---@return number[] ids -- 碰撞到的物体ID数组
function PlayInteractive:GetHitResultsWithBox(HitType, StartWorldPos, EndWorldPos, HalfSize, Orientation, EnableDebugLine, DebugLineDuration) end

--- 两个角色之间做射线检测
---@param PlayerId1 number -- 玩家1 uid
---@param PlayerId2 number -- 玩家2 uid
---@param EnableDebugLine boolean -- 是否绘制Debug射线，仅试玩生效
---@param DebugLineDuration number -- Debug射线的持续时间，单位：s
---@return boolean bHit -- 是否有遇到障碍物
function PlayInteractive:CheckCharacterHit(PlayerId1, PlayerId2, EnableDebugLine, DebugLineDuration) end


_G.PlayInteractive = PlayInteractive
--- 排行榜
-- 排行榜相关操作
-- 针对排行榜系统使用如有疑问，请参考 [如何使用排行榜功能](https://creator.ymzx.qq.com/dream_helper/dist/onboarding/rank/index.html)
                
--- @module "Rank"

                
---@class Rank
local Rank = {}
                --- 记录玩家排行榜数据。
---@param Index number -- 排行榜id按顺序依次为1、2、3
---@param PlayerId number -- 玩家角色ID
---@param Score number -- 得分
---@param ExtraScores number -- 额外分数可不填。
function Rank:SetRankById(Index, PlayerId, Score, ExtraScores) end

--- 删除玩家排行榜数据。
---@param Index number -- 排行榜id按顺序依次为1、2、3
---@param PlayerId number -- 玩家ID
function Rank:DelRankById(Index, PlayerId) end

--- 显示排行榜。
function Rank:DspRankWind() end

--- 获取玩家排行榜数据并返回。
---@param Index number -- 排行榜id按顺序依次为1、2、3
---@param PlayerId number -- 玩家ID
---@return number score -- 玩家排行榜得分
function Rank:GetPlayerRankingData(Index, PlayerId) end

--- 获取排行指定排名数据并返回。
---@param Index number -- 排行榜id按顺序依次为1、2、3
---@param RankNo number -- 排行榜第几位
---@return number score -- 排行榜得分
function Rank:GetTheRankingData(Index, RankNo) end

--- 获取好友排行榜指定排名数据并返回。
---@param PlayerId number -- 玩家角色ID
---@param Index number -- 排行榜id按顺序依次为1、2、3
---@param RankNo number -- 排行榜第几位
---@return number score -- 排行榜得分
function Rank:GetTheFriendsRankingData(PlayerId, Index, RankNo) end

--- 获取排行指定排名玩家id并返回。
---@param Index number -- 排行榜id按顺序依次为1、2、3
---@param RankNo number -- 排行榜第几位
---@return number playerId -- 排行榜玩家ID
function Rank:GetTheRankingPlayer(Index, RankNo) end

--- 获取好友排行指定排名玩家id并返回。
---@param PlayerId number -- 玩家ID
---@param Index number -- 排行榜id按顺序依次为1、2、3
---@param RankNo number -- 排行榜第几位
---@return number playerId -- 排行榜玩家ID
function Rank:GetTheFrinedsRankingPlayer(PlayerId, Index, RankNo) end

--- 获取排行榜中指定玩家排名。
---@param Index number -- 排行榜id按顺序依次为1、2、3
---@param PlayerId number -- 玩家角色ID
---@return number rankNo -- 排行榜第几位
function Rank:GetPlayerRankNum(Index, PlayerId) end

--- 获取好友排行榜中指定玩家排名。
---@param PlayerId number -- 玩家角色ID
---@param Index number -- 排行榜id按顺序依次为1、2、3
---@param FPlayerId number -- 好友ID
---@return number rankNo -- 排行榜第几位
function Rank:GetPlayerFrinedsRankNum(PlayerId, Index, FPlayerId) end


_G.Rank = Rank
--- 地图设置
-- 地图设置相关操作
                
--- @module "Setting"

                
---@class Setting
local Setting = {}
                --- 是否显示开局倒计时
---@param Show boolean -- true-显示，false-关闭
function Setting:ShowPrepareCountdown(Show) end

--- 血条是否常驻显示
---@param Show boolean -- true-显示，false-关闭
function Setting:ShowHealthBarPermanemtDisplay(Show) end

--- 是否开启死亡时物品掉落
---@param Open boolean -- true-死亡时物品掉落，false-死亡时物品不会掉落
function Setting:OpenShouldDropItemWhenDead(Open) end

--- 是否切换至竖屏，在即将切场景时调用无效
---@param Vertical boolean -- true-切换至竖屏，false-恢复至横屏
function Setting:SwitchToVerticalScreen(Vertical) end


_G.Setting = Setting
--- 分享
-- 分享相关内容操作
-- 针对分享功能使用如有疑问，请参考 [如何使用分享功能](https://creator.ymzx.qq.com/dream_helper/dist/onboarding/share/index.html)
                
--- @module "Share"

                
---@class Share
local Share = {}
                --- 打开分享（仅在地图发布后生效）
-- 自定义的分享标记可用于区分同一张地图中多个分享组件共存时的情况
---@param ShareMark string -- 分享标记
function Share:OpenShareForPlayer(ShareMark) end


_G.Share = Share
--- 商店
-- 对局内商店进行相关操作
                
--- @module "Shop"

                
---@class Shop
local Shop = {}
                --- 显示指定商品购买窗口
---@param GoodsId number -- 商品ID, 上架商品的顺序, 从1开始
function Shop:ShowGoodsForPlayer(GoodsId) end

--- 打开指定商店页面
---@param ShopIndex number -- 商店ID，局内商店的创建顺序，从1开始
function Shop:OpenBuyShopByIndex(ShopIndex) end

--- 获取商店中所有的商品ID
---@param ShopIndex number -- 商店ID，局内商店的创建顺序，从1开始
---@param ShelfIndex number -- 货架ID，货架的排列顺序，从1开始；如果传nil，则会返回这个商店内的所有商品，如果传入了货架ID，则只会返回这个货架内的商品
---@return number[] goodsIds -- 商品ID数组
function Shop:GetAllGoodsInShop(ShopIndex, ShelfIndex) end

--- 获取商品信息
---@param goodsId number -- 商品ID
---@return {itemId:number|string,name:string,description:string,moneyId:number,price:number,isCustom:boolean} Info -- 商品信息，{itemId-物品类型ID, name-商品名称, description-商品描述, moneyId-销售代币ID, price-销售价格, isCustom-是否为自定义物品}
function Shop:GetGoodsInfo(goodsId) end


_G.Shop = Shop
--- 技能系统
-- 角色技能相关操作
-- 针对技能系统使用如有疑问，请参考 [技能编辑器相关问题](https://creator.ymzx.qq.com/dream_helper/dist/onboarding/skilleditor/index.html)
                
--- @module "Skill"

                
---@class Skill
local Skill = {}
                --- 重置技能冷却CD为0
---@param PlayerId number -- 玩家角色id
---@param SkillId number -- 要重置冷却CD的技能id，技能id-新增技能时的技能序号：1,2,3...
function Skill:ClearSkillCD(PlayerId, SkillId) end

--- 切换技能
---@param SkillIdList number[] -- 要切换的技能id数组，技能id-新增技能时的技能序号：1,2,3...
---@param CanReplaceOldSkill boolean -- 是否替换旧技能
function Skill:SwitchSkill(SkillIdList, CanReplaceOldSkill) end

--- 通知玩家打开充能大招选中界面
---@param PlayerId number -- 玩家角色id
---@param Time number -- 充能大招选中界面倒计时长，单位秒
function Skill:OpenRechargedAbilityUI(PlayerId, Time) end

--- 设置玩家当前充能大招
---@param PlayerId number -- 玩家角色id
---@param AbilityId number -- [充能大招](tables/AbilityId.md)
function Skill:SetRechargedAbility(PlayerId, AbilityId) end

--- 获取玩家当前充能大招
---@param PlayerId number -- 玩家角色id
---@return number abilityId -- 充能大招id
function Skill:GetRechargedAbility(PlayerId) end

--- 设置玩家当前充能大招充能点数
---@param PlayerId number -- 玩家角色id
---@param Energy number -- 充能点数
function Skill:SetRechargedAbilityEnergy(PlayerId, Energy) end

--- 获取玩家当前充能大招充能点数
---@param PlayerId number -- 玩家角色id
---@return number energy -- 充能点数
function Skill:GetRechargedAbilityEnergy(PlayerId) end

--- 设置玩家当前充能大招所需充能点数
---@param PlayerId number -- 玩家角色id
---@param CostEnergy number -- 所需充能点数
function Skill:SetRechargedAbilityCostEnergy(PlayerId, CostEnergy) end

--- 获取玩家当前充能大招所需充能点数
---@param PlayerId number -- 玩家角色id
---@return number costEnergy -- 所需充能点数
function Skill:GetRechargedAbilityCostEnergy(PlayerId) end

--- 设置玩家当前充能大招每秒增加多少充能点数
---@param PlayerId number -- 玩家角色id
---@param PreEnergy number -- 每秒增加的充能点数
function Skill:SetRechargedAbilityAddPreEnergy(PlayerId, PreEnergy) end

--- 获取玩家当前充能大招每秒增加多少充能点数
---@param PlayerId number -- 玩家角色id
---@return number preEnergy -- 每秒增加的充能点数
function Skill:GetRechargedAbilityAddPreEnergy(PlayerId) end

--- 设置玩家充能大招能否使用
---@param PlayerId number -- 玩家角色id
---@param Enable boolean -- 能否使用充能大招
function Skill:SetRechargedAbilityEnabled(PlayerId, Enable) end

--- 玩家朝某方向释放充能大招
---@param PlayerId number -- 玩家角色id
---@param Dir Engine.Vector -- 释放朝向，默认为角色前方
---@return boolean bUsed -- 是否成功释放充能大招
---@return string failedReason -- 释放充能大招失败说明，可用于给玩家提示
function Skill:UseRechargedAbility(PlayerId, Dir) end

--- 清除玩家充能大招
---@param PlayerId number -- 玩家角色id
function Skill:ClearRechargedAbility(PlayerId) end

--- 获取技能名称
---@param skillId number -- 技能id
---@return string name -- 技能名称
function Skill:GetName(skillId) end

--- 获取技能图标
---@param skillId number -- 技能id
---@return number icon -- 技能图标
---@return boolean isCustom -- 是否是自定义图片
function Skill:GetIcon(skillId) end

--- 获取技能冷却
---@param skillId number -- 技能id
---@return number cd -- 技能冷却
function Skill:GetCD(skillId) end

--- 获取技能当前冷却
---@param playerId number -- 角色id
---@param skillId number -- 技能id
---@return number currentCD -- 技能当前冷却
function Skill:GetCurrentCD(playerId, skillId) end


_G.Skill = Skill
--- 天空盒
-- 用于改变天空盒表现
                
--- @module "SkyBox"

                
---@class SkyBox
local SkyBox = {}
                --- 设置天空环境<br/>用于动态改变游戏中的天空环境。
---@param SkyboxId number -- [天空盒ID](tables/SkyboxId.md)
---@param Time number -- 过渡时长
function SkyBox:SetSkyboxDisplayID(SkyboxId, Time) end

--- 设置天空环境旋转<br/>用于动态改变游戏中的天空环境旋转。
---@param SkyboxRotation number -- 旋转角度（可调节范围：-180至180）
function SkyBox:SetSkyBoxRotation(SkyboxRotation) end

--- 设置光源强度<br/>用于动态改变游戏中的光源强度。
---@param LightIntensity number -- 光源强度（可调节范围：0至10）
function SkyBox:SetDirectionalLightIntensity(LightIntensity) end

--- 设置天光强度<br/>用于动态改变游戏中的天光强度。
---@param LightIntensityScale number -- 天光强度（可调节范围：0至2）
function SkyBox:SetSkylightIntensityScale(LightIntensityScale) end

--- 设置光源颜色<br/>用于动态改变游戏中的光源颜色。
---@param LightColor string -- 光源颜色，十六进制颜色码：#FFFFFFFF
function SkyBox:SetDirectionalLightColor(LightColor) end

--- 设置光源高度角<br/>用于动态改变游戏中的光源高度角。
---@param LightPitch number -- 光源高度角（可调节范围：-90至90）
function SkyBox:SetDirectionalLightPitch(LightPitch) end

--- 设置光源方位角<br/>用于动态改变游戏中的光源方位角。
---@param LightYaw number -- 光源方位角（可调节范围：-180至180）
function SkyBox:SetDirectionalLightYaw(LightYaw) end

--- 设置天空环境滤镜效果
---@param FilterId number -- [天空滤镜Id](tables/FilterId.md)
function SkyBox:SetSkyBoxFilterByFilterId(FilterId) end

--- 设置天空环境滤镜强度
---@param IntensityNumber number -- 滤镜强度(可调节范围：0~100)
function SkyBox:SetSkyBoxFilterIntensity(IntensityNumber) end

--- 设置天空环境滤镜色温
---@param ColorTemperatureNumber number -- 色温值(可调节范围：0~3)
function SkyBox:SetSkyBoxFilterColorTemperature(ColorTemperatureNumber) end

--- 设置天空环境滤镜色调
---@param HueNumber number -- 色调值(可调节范围：-2~2)
function SkyBox:SetSkyBoxFilterHue(HueNumber) end

--- 设置天空环境滤镜曝光
---@param ExposureNumber number -- 曝光值(可调节范围：-10~10)
function SkyBox:SetSkyBoxFilterExposure(ExposureNumber) end

--- 设置天空环境滤镜亮度
---@param BrightnessNumber number -- 亮度值(可调节范围：0~3)
function SkyBox:SetSkyBoxFilterBrightness(BrightnessNumber) end

--- 设置天空环境滤镜对比度
---@param ContrastNumber number -- 对比度值(可调节范围：0~3)
function SkyBox:SetSkyBoxFilterContrast(ContrastNumber) end

--- 设置天空环境滤镜饱和度
---@param SaturationNumber number -- 对比度值(可调节范围：0~3)
function SkyBox:SetSkyBoxFilterSaturation(SaturationNumber) end

--- 设置天空环境泛光强度(需启动泛光否则设置不生效)
---@param Intensity number -- 泛光强度(可调节范围：0~100)
function SkyBox:SetSkyBoxBloomIntensity(Intensity) end

--- 设置天空环境泛光阈值(需启动泛光否则设置不生效)
---@param Threshold number -- 泛光阈值(可调节范围：-1~8)
function SkyBox:SetSkyBoxBloomThreshold(Threshold) end

--- 设置天空环境暗角强度(需启动暗角否则设置不生效)
---@param Intensity number -- 暗角强度(可调节范围：0~1)
function SkyBox:SetSkyBoxVignetteIntensity(Intensity) end

--- 根据变换索引执行天空环境变换
---@param TranIndex number -- 变换索引
function SkyBox:ExecuteSkyBoxTranByTranIndex(TranIndex) end

--- 设置雾效<br/>fogScatteringColor string 雾内散射颜色 十六进制颜色码：#FFFFFFFF<br/>fogMaxOpacity float （重要参数）最大透明度 0-1<br/>fogStartDistance float 雾起始距离 0-15000<br/>fogDensity float （重要参数）雾浓度 0-2<br/>fogHeight float 雾起始高度 -50000-50000<br/>fogHeightFalloff float 雾高度衰减指数 0-1<br/>directionalScatteringColor string 平行光散射颜色 十六进制颜色码：#FFFFFFFF<br/>directionalScatteringExponent float 散射指数 2-64<br/>directionalScatteringStartDistance float 散射起始距离 0-1000000<br/>fogAffectSkybox boolean 影响天空背景
---@param Enable boolean -- 是否启用
---@param Info table -- 雾效参数,按照需要将需要设置的参数填入
function SkyBox:SetSkyFog(Enable, Info) end


_G.SkyBox = SkyBox
--- 剧情系统
-- 剧情相关操作
-- 针对剧情系统使用如有疑问，请参考 [如何使用剧情功能](https://creator.ymzx.qq.com/dream_helper/dist/onboarding/story/index.html)
                
--- @module "Story"

                
---@class Story
local Story = {}
                --- 开始播放剧本<br/>剧本id可以在[剧情管理]中通过查看实例id获取
---@param StoryID number -- 剧本ID
function Story:PlayDialogue(StoryID) end

--- 对玩家弹出对话框<br/>SpeakerID:说话者ID 不填为旁白，0为玩家，其他值则查找对应npc<br/>AnimRecycle:动作是否循环 默认不循环<br/>CameraDistance:相机距离 0-300<br/>Content:对话内容<br/>VoiceGroupID|VoiceStepID:显示对话时播放的语音，对应剧情编辑中的具体的对话
---@param DialogueData table -- 对话信息
---@param SpeakerEmo number -- [说话者面部表情](tables/FaceEmoteId.md)
---@param SpeakerAnim number -- [说话者动作](tables/SpeakerAnimId.md)
---@param BoxType number -- [对话框皮肤](tables/DialogBoxStyleId.md)
---@param Emotion number -- [气泡表情](tables/BubbleEmojiId.md)
function Story:ShowDialogue(DialogueData, SpeakerEmo, SpeakerAnim, BoxType, Emotion) end


_G.Story = Story
--- 系统
-- 提供各类系统事件和相关信息
                
--- @module "System"

                
---@class System
local System = {}
                --- 是不是专用服务器模式<br/>专用服务器只执行服务器相关代码
---@return boolean isDS -- 是不是专用服务器模式
function System:IsDedicatedServer() end

--- 是不是单机模式<br/>单机模式时, 服务器和客户端代码都在本地执行
---@return boolean isStandalone -- 是不是单机模式
function System:IsStandalone() end

--- 是不是服务器端<br/>专用服务器或单机模式时返回true
---@return boolean isServer -- 是不是服务器端
function System:IsServer() end

--- 是不是客户端<br/>非专用服务器模式或单机模式时返回true
---@return boolean isClient -- 是不是客户端
function System:IsClient() end

--- 注册消息通知
---@param MsgId number -- 消息id，消息id必须大于0
---@param Callback fun() -- 回调函数，当收到消息时此回调函数会被调用
---@param Ref any -- 一个可选参数
function System:BindNotify(MsgId, Callback, Ref) end

--- 注销消息通知<br/>只提供msgId时，会注销此msgId的所有通知
---@param MsgId number -- 消息id，要注销的消息的消息id
---@param Callback fun() -- 回调函数，之前注册消息通知时的回调函数，如果为nil则注销所有这个msgId的消息通知
function System:UnbindNotify(MsgId, Callback) end

--- 注销所有消息通知
function System:UnbindAllNotify() end

--- 发送消息到客户端
---@param PlayerId number -- 接收消息客户端的玩家id
---@param MsgId number -- 消息id
---@param Msg table -- 消息的内容，消息可以是number，string，bool或者table
function System:SendToClient(PlayerId, MsgId, Msg) end

--- 发送消息到所有的客户端
---@param MsgId number -- 消息id
---@param Msg table -- 消息的内容，消息可以是number，string，bool或者table
function System:SendToAllClients(MsgId, Msg) end

--- 发送消息到服务器端
---@param MsgId number -- 消息id
---@param Msg table -- 消息内容，消息可以是number，string，bool或者table
function System:SendToServer(MsgId, Msg) end

--- 注册系统事件处理函数.系统事件由外部发送到此游戏
---@param EventName string -- 事件名称
---@param Callback function() -- 当事件发生时会调用此回调函数
---@param ... any -- 可变参数,事件发生时这些参数会一起传递到回调函数,可变参数在前,事件参数在后
---@return number eventId -- 事件处理函数id
function System:RegisterEvent(EventName, Callback, ...) end

--- 注销系统事件
---@param EventName string -- 事件名称
---@param Callback function() -- 可选参数,注册系统事件处理时提供的回调函数
function System:UnregisterEvent(EventName, Callback) end

--- 注销系统事件
---@param EventName string -- 事件名称
---@param EventId number -- 注册事件处理函数时返回的id
function System:UnregisterEventById(EventName, EventId) end

--- 注册游戏内事件处理函数.游戏内事件由编程元件作者定义,并在需要时在元件脚本调用System.FireGameEvent来发送
---@param EventName string -- 事件名称
---@param Callback function() -- 事件发生时会调用此回调函数
---@param ... any -- 可变参数,事件发生时会一起传递给回调函数,可变参数在前,事件参数在后
---@return number eventId -- 事件处理函数id
function System:RegisterGameEvent(EventName, Callback, ...) end

--- 注销游戏内事件处理函数
---@param EventName string -- 事件名称
---@param Callback function() -- 可选参数,注册游戏内事件处理函数时提供的回调函数
function System:UnregisterGameEvent(EventName, Callback) end

--- 注销游戏内事件处理函数
---@param EventName string -- 事件名称
---@param EventId number -- 注册游戏内事件处理函数时返回的id
function System:UnregisterGameEventById(EventName, EventId) end

--- 触发游戏内事件
---@param EventName string -- 事件名称
---@param ... any -- 事件附带的可变参数
function System:FireGameEvent(EventName, ...) end

--- 触发信号
---@param EventName string -- 信号事件名称
---@param PlayerIDs number[] -- 在哪些玩家端触发信号; 不传时只会在当前端触发; 如果需要通知多个玩家触发，则需要在服务端进行调用，并传入需要触发信号的玩家id数组
function System:FireSignEvent(EventName, PlayerIDs) end

--- 注册信号处理函数
---@param EventName string -- 信号事件名称
---@param Func function() -- 信号发生时的回调函数
---@return number signEventId -- 注册信号事件ID
function System:RegisterSignEvent(EventName, Func) end

--- 注销信号处理函数
---@param SignEventId number -- 注册信号事件时返回的ID
function System:UnregisterSignEvent(SignEventId) end

--- 注销所有信号处理事件
function System:UnregisterAllSignEvent() end

--- 获取当前脚本挂载的元件ID
---@return number elmentId -- 元件ID
function System:GetScriptParentID() end


_G.System = System
--- 任务系统
-- 任务相关操作
-- 针对任务系统使用如有疑问，请参考 [如何使用任务系统](https://creator.ymzx.qq.com/dream_helper/dist/onboarding/task/index.html)
                
--- @module "Task"

                
---@class Task
local Task = {}
                --- 任务进度更新（每次加一，与编辑器内一致）
---@param TaskID number -- 任务ID
---@param PlayerID number -- 玩家ID
function Task:UpdateTaskProgress(TaskID, PlayerID) end


_G.Task = Task
--- 阵营
-- 处理阵营相关的内容
-- 针对阵营功能使用如有疑问，请参考 [如何使用阵营功能](https://creator.ymzx.qq.com/dream_helper/dist/onboarding/team/index.html)
                
--- @module "Team"

                
---@class Team
local Team = {}
                --- 设置阵营积分
---@param TeamID number -- 阵营ID，按顺序排列：0、1、2、3...
---@param TeamScore number -- 阵营积分
function Team:SetScore(TeamID, TeamScore) end

--- 增加阵营积分
---@param TeamID number -- 阵营ID，按顺序排列：0、1、2、3...
---@param AddedTeamScore number -- 阵营积分
function Team:ModifyScore(TeamID, AddedTeamScore) end

--- 设置个人积分
---@param PlayerId number -- 玩家角色ID
---@param PersonalScore number -- 个人积分
function Team:SetPlayerScore(PlayerId, PersonalScore) end

--- 增加个人积分
---@param PlayerId number -- 玩家角色ID
---@param AddedPersonalScore number -- 个人积分
function Team:ModifyPlayerScore(PlayerId, AddedPersonalScore) end

--- 获取阵营积分
---@param TeamID number -- 阵营ID，按顺序排列：0、1、2、3...
---@return number score -- 当前阵营积分
function Team:GetCurrentScore(TeamID) end

--- 获取个人积分
---@param PlayerId number -- 玩家角色ID
---@return number Score -- 玩家积分
function Team:GetPlayerCurrentScore(PlayerId) end

--- 获取阵营中所有玩家
---@param TeamID number -- 阵营ID，按顺序排列：0、1、2、3...
---@return number[] idList -- 返回阵营的所有玩家id数组
function Team:GetTeamPlayerArray(TeamID) end

--- 通过角色id获取阵营id
---@param PlayerId number -- 角色id
---@return number teamId -- 阵营id
function Team:GetTeamById(PlayerId) end


_G.Team = Team
--- 定时器
-- 提供各类定时器和延迟调用方法
                
--- @module "TimerManager"

                
---@class TimerManager
local TimerManager = {}
                --- 添加定时器
---@param Delay number -- 延时秒数
---@param Callback function() -- 延时到达后会调用此回调函数
---@param ... any -- 可变参数,这些参数会一起传递到回调函数
---@return number timerId -- 定时器id
function TimerManager:AddTimer(Delay, Callback, ...) end

--- 添加循环定时器
---@param Delay number -- 间隔秒数，最小有效间隔时间为一帧耗时，若60帧则为0.0167。
---@param Callback function() -- 间隔时间到达后会调用此回调函数
---@param ... any -- 可变参数,这些参数会一起传递到回调函数
---@return number timerId -- 定时器id
function TimerManager:AddLoopTimer(Delay, Callback, ...) end

--- 添加帧定时器
---@param Delay number -- 延时的帧数
---@param Callback function() -- 延时帧数到达后会调用此回调函数
---@param ... any -- 可变参数,这些参数会一起传递到回调函数
---@return number timerId -- 定时器id
function TimerManager:AddFrame(Delay, Callback, ...) end

--- 添加循环帧定时器
---@param Delay number -- 间隔帧数
---@param Callback function() -- 间隔帧数到达后会调用此回调函数
---@param ... any -- 可变参数,这些参数会一起传递到回调函数
---@return number timerId -- 定时器id
function TimerManager:AddLoopFrame(Delay, Callback, ...) end

--- 删除定时器
---@param TimerId number -- 添加定时器时返回的定时器id
function TimerManager:RemoveTimer(TimerId) end

--- 暂停定时器
---@param TimerId number -- 添加定时器时返回的定时器id
function TimerManager:PauseTimer(TimerId) end

--- 恢复定时器
---@param TimerId number -- 添加定时器时返回的定时器id
function TimerManager:ResumeTimer(TimerId) end

--- 获取当前的时间
---@return number time -- 游戏启动至当前的时间
function TimerManager:GetTimeSeconds() end

--- 获取当前CPU时间
---@return number clock -- CPU 时间
function TimerManager:GetClock() end

--- 获取定时器剩下的时间|帧数
---@param TimerId number -- 添加定时器时返回的定时器id
---@return number left -- 定时器剩下的时间|帧数
function TimerManager:GetTimerLeft(TimerId) end

--- 重启定时器，Remove或已经执行完成之后的定时器无法重新启动
---@param TimerId number -- 要重启的定时器Id
---@param Delay number -- 可选，新的延时|帧数，不填则使用原有延时|帧数
---@return number timerId -- 新的定时器Id
function TimerManager:RestartTimer(TimerId, Delay) end


_G.TimerManager = TimerManager
--- 触发盒
-- 元件触发盒相关操作
                
--- @module "TriggerBox"

                
---@class TriggerBox
local TriggerBox = {}
                --- 判断角色是否处于触发盒内，是返回true，否返回false。
---@param playerUID number -- 玩家ID
---@param signalBox number -- 触发盒场景ID
---@return boolean isInRegion -- 是否在触发盒内
function TriggerBox:IsCharacterInTriggerBox(playerUID, signalBox) end

--- 判断元件是否处于触发盒内，是返回true，否返回false。
---@param element number -- 元件场景ID
---@param signalBox number -- 触发盒场景ID
---@return boolean isInRegion -- 是否在触发盒内
function TriggerBox:IsElementInTriggerBox(element, signalBox) end

--- 判断坐标是否处于触发盒内，是返回true，否返回false。
---@param Pos Engine.Vector -- 场景坐标
---@param signalBox number -- 触发盒场景ID
---@return boolean isInRegion -- 是否在触发盒内
function TriggerBox:IsPositionInTriggerBox(Pos, signalBox) end

--- 返回触发盒中随机坐标。
---@param signalBox number -- 触发盒场景ID
---@return Engine.Vector pos -- 触发盒中随机坐标
function TriggerBox:GetRandomPosition(signalBox) end


_G.TriggerBox = TriggerBox
--- 自定义界面
-- 提供自定义界面的操作接口
-- 如对界面功能使用有疑问，请参考 [界面相关问题](https://creator.ymzx.qq.com/dream_helper/dist/onboarding/uiissues/index.html)
-- 针对滚动列表功能使用如有疑问，请参考 [如何使用滚动列表](https://creator.ymzx.qq.com/dream_helper/dist/onboarding/scrollview/index.html)
-- 针对瓦片视图功能使用如有疑问，请参考 [如何使用瓦片视图](https://creator.ymzx.qq.com/dream_helper/dist/onboarding/tileview/index.html)
-- 如对UI坐标、屏幕坐标与世界坐标有疑问，请参考 [UI坐标、屏幕坐标与世界坐标](https://creator.ymzx.qq.com/dream_helper/dist/onboarding/uiscreenworldcoord/index.html)
                
--- @module "UI"

                
---@class UI
local UI = {}
                
--- 头像昵称框设置类型
---@enum UI.AvatarType
local AvatarType = {
  Icon = "Icon",
  NickName = "NickName",
  Both = "Both",
}
UI.AvatarType = AvatarType


--- 聊天页签
---@enum UI.ChatPage
local ChatPage = {
  QuickChat = "0",
  Chat = "1",
  Reserve = "2",
}
UI.ChatPage = ChatPage


--- 界面类型
---@enum UI.UIType
local UIType = {
  Promotion = 0,
  Countdown = 1,
  TargetPoints = 2,
  CampPoints = 3,
  PersonalPoints = 4,
  Leaderboard = 5,
  HealthBar = 6,
  Settings = 7,
  RemainingPlayers = 8,
  MapHint = 9,
  EmotesAndActions = 10,
  QuickChat = 11,
  MapCover = 12,
  MoreSetting = 13,
  Photo = 14,
  GameSetting = 15,
  GameQuit = 16,
}
UI.UIType = UIType


--- 控件类型
---@enum UI.WidgetType
local WidgetType = {
  Countdown = "1-Countdown",
  HP = "6-HP",
  LifeCount = "6-LifeCount",
  YuanTeam = "3-YuanTeam",
  MengTeam = "3-MengTeam",
  Goal = "3-Goal",
  CurPoint = "4-CurPoint",
  GoalPoint = "4-GoalPoint",
  Defeat = "8-Defeat",
  RemainPlayer = "8-RamainCnt",
  Title = "0-Title",
  VictoryPlayer = "0-VictoryCnt",
  MaxVictoryPlayers = "0-AllCnt",
  QuickChat_1 = "11-1",
  QuickChat_2 = "11-2",
  QuickChat_3 = "11-3",
  QuickChat_4 = "11-4",
  QuickChat_5 = "11-5",
  QuickChat_6 = "11-6",
  QuickChat_7 = "11-7",
  QuickChat_8 = "11-8",
  QuickChat_9 = "11-9",
}
UI.WidgetType = WidgetType


--- 文本垂直对齐方式
---@enum UI.TextAlignV
local TextAlignV = {
  Top = 1,
  Center = 2,
  Bottom = 3,
}
UI.TextAlignV = TextAlignV


--- 文本水平对齐方式
---@enum UI.TextAlignH
local TextAlignH = {
  Left = 1,
  Center = 2,
  Right = 3,
}
UI.TextAlignH = TextAlignH


--- 字体样式
---@enum UI.Font
local Font = {
  Font1 = 1,
  Font2 = 2,
}
UI.Font = Font


--- 锚点类型
---@enum UI.AnchorType
local AnchorType = {
  LeftTop = 1,
  TopMiddle = 2,
  RightTop = 3,
  LeftMiddle = 4,
  RightMiddle = 5,
  LeftBottom = 6,
  BottomMiddle = 7,
  RightBottom = 8,
  Center = 9,
  XTopStretch = 10,
  XMiddleStretch = 11,
  XBottomStretch = 12,
  YLeftStretch = 13,
  YMiddleStretch = 14,
  YRightStretch = 15,
  XYStretch = 16,
}
UI.AnchorType = AnchorType

--- 设置控件的显隐（对控件进行创建和销毁）
---@param ListItemUID number[] -- UI控件的UID数组
---@param Show boolean -- true显示控件，false隐藏控件
function UI:OnShow(ListItemUID, Show) end

--- 设置控件的可见性（控制控件是否在界面上可见）
---@param ListItemUID number[] -- UI控件的UID数组
---@param Visibility boolean -- 控件是否可见
function UI:SetVisibility(ListItemUID, Visibility) end

--- 改变控件的文本内容
---@param ListItemUID number[]|string[] -- UI控件的UID数组
---@param NewText string -- 变更的文本内容
function UI:SetText(ListItemUID, NewText) end

--- 改变控件的尺寸
---@param ListItemUID number[] -- UI控件的UID数组
---@param NewWidth number -- 变更的控件宽度
---@param NewHeight number -- 变更的控件高度
function UI:SetSize(ListItemUID, NewWidth, NewHeight) end

--- 获取控件的尺寸
---@param ItemUID number -- 控件ID
---@return {X:number,Y:number} Size -- 返回大小{X,Y}
function UI:GetSize(ItemUID) end

--- 获取控件的位置<br/>以控件左上角为准<br/>UI坐标系以屏幕中心为原点（0,0）,x的正方向是向右，y的正方向是向下<br/>如果获取的控件是编组的子控件，那么返回值是子控件相对编组的相对偏移。
---@param ItemUID number -- 控件ID
---@return {X:number,Y:number} Size -- 返回位置{X,Y}
function UI:GetPosition(ItemUID) end

--- 改变控件的位置<br/>设置的是控件左上角的位置<br/>UI坐标系以屏幕中心为原点（0,0）,x的正方向是向右，y的正方向是向下<br/>如果设置的控件是编组的子控件，那么实际设置的是子控件相对编组的偏移。
---@param ListItemUID number[] -- UI控件的UID数组
---@param NewX number -- 变更的X坐标
---@param NewY number -- 变更的Y坐标
function UI:SetPosition(ListItemUID, NewX, NewY) end

--- 改变控件的不透明度
---@param ListItemUID number[] -- UI控件的UID数组
---@param NewOpacity number -- 变更的不透明度[0,1]，0为透明，1为不透明
function UI:SetTransparency(ListItemUID, NewOpacity) end

--- 改变控件的文本颜色
---@param ListItemUID number[] -- UI控件的UID数组
---@param Color string -- 十六进制颜色码
function UI:SetTextColor(ListItemUID, Color) end

--- 改变控件的文本字体大小
---@param ListItemUID number[] -- UI控件的UID数组
---@param NewFontSize number -- 变更的字体大小[15,100]
function UI:SetTextSize(ListItemUID, NewFontSize) end

--- 改变控件的底图<br/>如果使用自定义图片，请使用元件的自定义属性获取自定义图片id
---@param ListItemUID number[] -- UI控件的UID数组
---@param ImageId number|string -- [图片ID](tables/ImageId.md)
---@param IsCustomImage boolean -- 是否使用自定义图片,默认为false，可不填
function UI:SetImage(ListItemUID, ImageId, IsCustomImage) end

--- 改变进度条最大值
---@param ListItemUID number[] -- UI控件的UID数组
---@param MaxValue number -- [0,100]（实际可以超出100上限）
function UI:SetProgressMaxValue(ListItemUID, MaxValue) end

--- 改变进度条当前值
---@param ListItemUID number[] -- UI控件的UID数组
---@param CurretValue number -- 进度条当前值
function UI:SetProgressCurrentValue(ListItemUID, CurretValue) end

--- 根据玩家id设置头像昵称框<br/>需配合[头像昵称控件]使用
---@param ListItemUID number[] -- UI控件的UID数组
---@param PlayerId number -- 玩家的UID
---@param AvatarType UI.AvatarType -- 设置类型：Icon|NickName|Both
function UI:SetPlayerIconAndName(ListItemUID, PlayerId, AvatarType) end

--- 改变进度条的底图
---@param ListItemUID number[] -- UI控件的UID数组
---@param ImageId number -- [图片ID](tables/ImageId.md)
---@param IsCustomImage boolean -- 是否使用自定义图片,默认为false，可不填
function UI:SetProgressBackgroundImage(ListItemUID, ImageId, IsCustomImage) end

--- 通过锚点参数改变控件的位置
---@param ListItemUID number[] -- UI控件的UID数组
---@param Data {X:number,Y:number,Left:number,Right:number,Bottom:number,Top:number} -- 需要变更的数据；X=X轴，Y=Y轴，Left=左侧差值，Right=右侧差值
function UI:SetPositionByAnchor(ListItemUID, Data) end

--- 获取控件以锚点为参考的位置,不同锚点使用的值不同，不使用的属性默认为0
---@param ItemUID number -- UI控件的UID数组
---@return {X:number,Y:number,Left:number,Right:number,Bottom:number,Top:number} Data -- 以锚点为参考的位置数据；X=X轴，Y=Y轴，Left=左侧差值，Right=右侧差值
function UI:GetAnchoredPosition(ItemUID) end

--- 改变控件的底图颜色
---@param ListItemUID number[] -- UI控件的UID数组
---@param Color string -- 十六进制颜色码
function UI:SetImageColor(ListItemUID, Color) end

--- 注册控件按下时回调
---@param ItemUID number -- UI控件的UID
---@param Callback fun(ItemUID: number, PosX: number, PosY: number) -- 回调函数
function UI:RegisterPressed(ItemUID, Callback) end

--- 取消控件按下时的回调
---@param ItemUID number -- UI控件的UID
function UI:UnRegisterPressed(ItemUID) end

--- 注册控件弹起时回调
---@param ItemUID number -- UI控件的UID
---@param Callback fun(ItemUID: number, PosX: number, PosY: number) -- 回调函数
function UI:RegisterReleased(ItemUID, Callback) end

--- 取消控件弹起时的回调
---@param ItemUID number -- UI控件的UID
function UI:UnRegisterReleased(ItemUID) end

--- 注册控件移动时回调,要在按钮UI打开“允许拖动”
---@param ItemUID number -- UI控件的UID
---@param Callback fun(ItemUID: number, PosX: number, PosY: number) -- 回调函数
function UI:RegisterMoved(ItemUID, Callback) end

--- 取消控件移动时的回调
---@param ItemUID number -- UI控件的UID
function UI:UnRegisterMoved(ItemUID) end

--- 注册控件点击时回调
---@param ItemUID number -- UI控件的UID
---@param Callback fun(ItemUID: number) -- 回调函数
function UI:RegisterClicked(ItemUID, Callback) end

--- 取消控件点击时的回调
---@param ItemUID number -- UI控件的UID
function UI:UnRegisterClicked(ItemUID) end

--- 打开聊天界面并设置打开时显示的默认页签。
---@param ChatPage UI.ChatPage -- 默认页签
function UI:OpenQuickChat(ChatPage) end

--- 获取控件的文本内容
---@param ItemUID number -- UI控件的UID
---@return string textString -- 返回控件的文本 默认为""
function UI:GetText(ItemUID) end

--- 对玩家屏幕展示信息<br/>可用于制作提示弹窗，制作时测试API所在事件是否触发等。
---@param Msg string -- 消息
function UI:ShowMessageTip(Msg) end

--- 设置原生界面的可见性
---@param UIType UI.UIType -- 界面类型
---@param bVisible boolean -- 可见性
function UI:SetNativeInterfaceVisible(UIType, bVisible) end

--- 设置原生控件的颜色
---@param WidgetType UI.WidgetType -- 控件类型
---@param Color string -- 十六进制颜色码
function UI:SetNativeWidgetColor(WidgetType, Color) end

--- 设置原生控件的文本内容<br/>ui初始化较晚，在游戏开始时中使用可能会被覆盖
---@param WidgetType UI.WidgetType -- 控件类型
---@param txtStr string -- 文本内容
function UI:SetNativeWidgetText(WidgetType, txtStr) end

--- 设置控件旋转角度<br/>以控件的中心位置为旋转中心。
---@param ListItemUID number[] -- UI控件的UID数组
---@param Angle number -- 角度
function UI:SetAngle(ListItemUID, Angle) end

--- 获取控件旋转角度
---@param ItemUID number -- 控件ID
---@return number Angle -- 角度
function UI:GetAngle(ItemUID) end

--- 设置控件中心点,中心点偏移影响通过锚点参数改变控件坐标（SetPositionByAnchor）的计算<br/>对组无效
---@param ListItemUID number[] -- UI控件的UID数组
---@param AlignmentX number -- 中心的X（0-1）
---@param AlignmentY number -- 中心的Y（0-1）
function UI:SetWidgetCenter(ListItemUID, AlignmentX, AlignmentY) end

--- 获取控件中心点
---@param ItemUID number -- 控件ID
---@return {AlignmentX:number,AlignmentY:number} Center -- 中心点数据
function UI:GetWidgetCenter(ItemUID) end

--- 播放UI动画
---@param ItemUID number -- 控件ID
---@param AnimationIndex number -- 动画序号
---@param startFrameIndex number -- 起始帧（起始帧为0帧）
function UI:PlayUIAnimation(ItemUID, AnimationIndex, startFrameIndex) end

--- 停止UI动画
---@param ItemUID number -- 控件ID
function UI:StopUIAnimation(ItemUID) end

--- 暂停UI动画
---@param ItemUID number -- 控件ID
---@param AnimationIndex number -- 动画序号
function UI:PauseUIAnimation(ItemUID, AnimationIndex) end

--- 恢复UI动画
---@param ItemUID number -- 控件ID
---@param AnimationIndex number -- 动画序号
function UI:ResumeUIAnimation(ItemUID, AnimationIndex) end

--- 设置字距大小
---@param ItemUID number -- 控件ID
---@param Space number -- 字距
function UI:SetTextSpace(ItemUID, Space) end

--- 获取字距大小
---@param ItemUID number -- 控件ID
---@return number Space -- 字距
function UI:GetTextSpace(ItemUID) end

--- 设置文本水平对齐方式
---@param ItemUID number -- 控件ID
---@param Alignment UI.TextAlignH -- 水平对齐方式
function UI:SetTextAlignH(ItemUID, Alignment) end

--- 设置文本垂直对齐方式
---@param ItemUID number -- 控件ID
---@param Alignment UI.TextAlignV -- 垂直对齐方式
function UI:SetTextAlignV(ItemUID, Alignment) end

--- 设置文字加粗
---@param ItemUID number -- 控件ID
---@param IsBold boolean -- 是否加粗
function UI:SetTextBold(ItemUID, IsBold) end

--- 设置文字描边
---@param ItemUID number -- 控件ID
---@param IsEdge boolean -- 是否描边
---@param Color string -- 描边颜色，十六进制颜色码：#FFFFFFFF
---@param Size number -- 描边尺寸
---@param Alpha number -- 描边透明度
function UI:SetTextEdge(ItemUID, IsEdge, Color, Size, Alpha) end

--- 设置字体
---@param ItemUID number -- 控件ID
---@param Font UI.Font -- 字体样式
function UI:SetTextFont(ItemUID, Font) end

--- 设置玩家昵称可见性<br/>需配合[头像昵称控件]使用
---@param ItemUID number -- 控件ID
---@param IsVisible boolean -- 是否显示
function UI:SetPlayerNameVisible(ItemUID, IsVisible) end

--- 设置玩家头像可见性<br/>需配合[头像昵称控件]使用
---@param ItemUID number -- 控件ID
---@param IsVisible boolean -- 是否显示
function UI:SetPlayerIconVisible(ItemUID, IsVisible) end

--- 复制UI控件<br/>坐标基于屏幕中心，屏幕中心为（0,0）x的正方向是向右偏移，y的正方向是向下偏移<br/>需要控件未被销毁且可见性为true时才生效，如需控件在不显示的情况下又能进行其他操作，可以使用SetTransparency将不透明度设为0
---@param ItemUID number -- 控件ID
---@param NewX number -- X坐标
---@param NewY number -- Y坐标
---@return number UID -- 新控件的UID
function UI:DuplicateWidget(ItemUID, NewX, NewY) end

--- 设置控件的父节点<br/>父节点需传入组id，创建组可在界面编辑中的管理界面进行编组<br/>复制出的控件设置父节点SetParent后位置会改变，需重新设置位置
---@param ItemUID number -- 控件ID
---@param NewParentUID number -- 父节点ID
function UI:SetParent(ItemUID, NewParentUID) end

--- 获取控件的父节点(组)<br/>创建组可在界面编辑中的管理界面进行编组<br/>如果是获取根节点控件的父节点，返回值为-1
---@param ItemUID number -- 控件ID
---@return number ParentUID -- 父节点ID
function UI:GetParent(ItemUID) end

--- 获取父节点(组)的所有子控件<br/>创建组可在界面编辑中的管理界面进行编组<br/>仅返回第一层的所有子控件
---@param ItemUID number -- 控件ID
---@return number[] Children -- 子控件ID
function UI:GetAllChildren(ItemUID) end

--- 获取父节点(组)的子控件数量<br/>创建组可在界面编辑中的管理界面进行编组
---@param ItemUID number -- 控件ID
---@return number Count -- 子控件数量
function UI:GetWidgetChildCount(ItemUID) end

--- 屏幕坐标转为UI坐标,需要指定控件，不同控件可能最后转换的结果不同<br/>坐标转换后直接参考示例对控件SetPosition即可。
---@param ScreenPos {X:number,Y:number} -- 屏幕坐标
---@param ItemUID number -- 控件ID
---@return {X:number,Y:number} UIPos -- 控件坐标系下的坐标
function UI:ScreenPositionToUIPosition(ScreenPos, ItemUID) end

--- 设置聊天内容框是否显示
---@param ItemUID number -- 控件ID
---@param IsVisible boolean -- 是否显示
function UI:SetChatContentVisible(ItemUID, IsVisible) end

--- 设置聊天输入框是否显示
---@param ItemUID number -- 控件ID
---@param IsVisible boolean -- 是否显示
function UI:SetChatInputVisible(ItemUID, IsVisible) end

--- 根据名字获取子控件ID
---@param ItemUID number -- 父控件ID
---@param Name string -- 子控件名字
---@return number ChildID -- 子控件ID
function UI:FindChildWithName(ItemUID, Name) end

--- 根据索引获取子控件ID
---@param ItemUID number -- 父控件ID
---@param Index number -- 子控件索引
---@return number ChildID -- 子控件ID
function UI:FindChildWithIndex(ItemUID, Index) end

--- 根据路径获取控件ID
---@param Path string -- 路径（xx.yy...）
---@return number ItemID -- 控件ID
function UI:FindWidgetWithPath(Path) end

--- 设置进度条背景叠加色
---@param ItemUID number -- 控件ID
---@param Color string -- 十六进制颜色码 Alpha固定FF
function UI:SetProgressBackgroundOverlayColor(ItemUID, Color) end

--- 设置进度条叠加色
---@param ItemUID number -- 控件ID
---@param Color string -- 十六进制颜色码 Alpha固定FF
function UI:SetProgressOverlayColor(ItemUID, Color) end

--- 设置控件允许拖动
---@param ItemUID number -- 控件ID
---@param Draggable boolean -- 是否允许拖动
function UI:SetDraggable(ItemUID, Draggable) end

--- 动效控件进行播放
---@param ItemUID number -- 动效控件ID
function UI:EffectStartPlay(ItemUID) end

--- 动效控件暂停播放
---@param ItemUID number -- 动效控件ID
function UI:EffectPausePlay(ItemUID) end

--- 动效控件恢复播放
---@param ItemUID number -- 动效控件ID
function UI:EffectResumePlay(ItemUID) end

--- 设置按钮是否接收点击
---@param ItemUID number -- 控件ID
---@param Hittable boolean -- 是否接收点击
function UI:SetHittable(ItemUID, Hittable) end

--- 设置所有按钮是否接收点击
---@param Hittable boolean -- 是否接收点击
function UI:SetAllHittable(Hittable) end

--- 获取指定层级UI<br/>数字越小越靠上，取最上层为1。
---@param Level number -- 层级
---@param GroupID number -- 指定组控件ID，填0或不填则默认查找根节点
---@return number ItemID -- 控件ID
function UI:GetWidgetByLevel(Level, GroupID) end

--- 设置控件叠放顺序<br/>数字越大越靠上，可以先获取需要覆盖上去的控件的ZOrder再设置
---@param ItemID number -- 控件ID
---@param ZOrder number -- 叠放顺序
function UI:SetWidgetZOrder(ItemID, ZOrder) end

--- 获取控件叠放顺序<br/>数字越大越靠上
---@param ItemID number -- 控件ID
---@return number ZOrder -- 叠放顺序
function UI:GetWidgetZOrder(ItemID) end

--- 设置锚点类型
---@param ItemID number -- 控件ID
---@param AnchorType UI.AnchorType -- 锚点类型
function UI:SetAnchorType(ItemID, AnchorType) end

--- 从屏幕坐标检测首个控件
---@param ScreenPos {X:number,Y:number} -- 屏幕坐标
---@param IncludeGroup boolean -- 是否包含组，如果不包含组，则检测组内部的控件，包含组时则返回组而不是内部的控件
---@param GroupID number -- 指定组控件ID，填0或不填则默认检测根节点
---@return number ItemID -- 控件ID
function UI:CheckWidgetByScreenPosition(ScreenPos, IncludeGroup, GroupID) end

--- 让控件移动到指定位置
---@param ItemUID number -- 控件ID
---@param Postion {X:number,Y:number} -- 目标位置<X,Y>
---@param Duration number -- 运动时间
function UI:MoveTo(ItemUID, Postion, Duration) end

--- 打开邀请好友界面<br/>不可以在游戏开始时立即使用,仅多人模式下可用，并且地图需要开启中途加入
function UI:OpenMidJoinInvitePanel() end

--- 初始化瓦片视图的列表元素
---@param ListViewId number -- 瓦片视图控件ID
---@param ItemDataList any[] -- 列表数据数组，数组值为列表元素自定义数据
---@return number[] itemIdList -- 列表元素Id数组
function UI:InitListView(ListViewId, ItemDataList) end

--- 清除瓦片视图列表元素
---@param ListViewId number -- 瓦片视图控件ID
function UI:ClearListView(ListViewId) end

--- 根据列表元素Id更新瓦片视图指定的列表元素<br/>更新列表元素会触发列表元素创建回调（SetListViewItemSetCall）
---@param ListViewId number -- 瓦片视图控件ID
---@param ItemId number -- 列表元素Id
---@param ItemData table -- 要更新的列表元素数据
function UI:UpdateListViewItem(ListViewId, ItemId, ItemData) end

--- 给瓦片视图添加列表元素<br/>添加列表元素会触发列表元素创建回调（SetListViewItemSetCall）
---@param ListViewId number -- 瓦片视图控件ID
---@param ItemData table -- 新的列表元素数据
---@return number itemId -- 列表元素Id
function UI:AddListViewItem(ListViewId, ItemData) end

--- 根据列表元素Id移除瓦片视图列表元素
---@param ListViewId number -- 瓦片视图控件ID
---@param ItemId number -- 列表元素Id
function UI:RemoveListViewItem(ListViewId, ItemId) end

--- 获取瓦片视图列表元素中指定控件的实例Id
---@param ListViewId number -- 瓦片视图控件ID
---@param itemId number -- 列表元素Id
---@param UID number -- 与列表元素中指定控件对应的列表项UI的实例ID
---@return string UseUId -- 列表元素中指定控件的实例ID
function UI:GetListViewItemUID(ListViewId, itemId, UID) end

--- 设置瓦片视图列表元素创建回调
---@param ListViewId number -- 瓦片视图控件ID
---@param SetCall fun(listViewId: number, itemId: number, itemData: any) -- Item创建回调，itemData为ItemDataList[index]
function UI:SetListViewItemSetCall(ListViewId, SetCall) end

--- 设置瓦片视图列表元素选中状态变化回调
---@param ListViewId number -- 瓦片视图控件ID
---@param SelectionChangeCall fun(listViewId: number, itemId: number, itemData: any, select: boolean) -- Item选中回调，itemData为ItemDataList[index], select为选中状态
function UI:SetListViewItemSelectionChangeCall(ListViewId, SelectionChangeCall) end

--- 取消瓦片视图中所有列表元素的选中状态
---@param ListViewId number -- 瓦片视图控件ID
function UI:ClearListViewSelection(ListViewId) end

--- 向滚动列表中添加控件
---@param ScrollViewId number -- 滚动列表控件ID
---@param UIDs number[] -- 要添加进滚动列表的控件ID数组
function UI:AddToScrollView(ScrollViewId, UIDs) end

--- 从滚动列表中移除控件
---@param ScrollViewId number -- 滚动列表控件ID
---@param UIDs number[] -- 要从滚动列表中移除的控件ID数组
function UI:RemoveFromScrollView(ScrollViewId, UIDs) end

--- UI坐标转为屏幕坐标,需要指定控件，不同控件可能最后转换的结果不同
---@param UIPos {X:number,Y:number} -- 控件坐标系下的坐标
---@param ItemUID number -- 控件ID
---@return {X:number,Y:number} ScreenPos -- 屏幕坐标
function UI:UIPositionToScreenPosition(UIPos, ItemUID) end

--- 获取图片原生尺寸，自定义图片以设置的压缩尺寸为准
---@param ImageId number -- 图片ID
---@param IsCustomImage boolean -- 是否为自定义图片
---@param Callback fun(Width: number, Height: number) -- 获取图片原生尺寸回调,Width为图像宽，Height为图像高
function UI:GetImageNativeSize(ImageId, IsCustomImage, Callback) end

--- 设置动效是否循环播放
---@param ItemUID number -- 动效控件ID
---@param IsLoop boolean -- 是否循环播放
---@param LoopTime number -- 循环播放时间，单位秒
function UI:SetEffectLoop(ItemUID, IsLoop, LoopTime) end

--- 获取UI控件的名称
---@param ItemUID number -- 控件ID
---@return string UIName -- UI控件名称
function UI:GetUIName(ItemUID) end

--- 获取UI系统分辨率
---@return {X:number,Y:number} UISize -- UI系统分辨率
function UI:GetUISize() end

--- 设置UI控件渲染时的整体缩放，Scale不会影响Size属性,只影响最终显示的大小
---@param ItemUID number -- 控件ID
---@param ScaleX number -- X轴缩放
---@param ScaleY number -- Y轴缩放
function UI:SetRenderScale(ItemUID, ScaleX, ScaleY) end

--- 设置背包格是否可以打开指定物品的详情面板<br/>如果希望让物品详情在背包页面不被打开，那么请使用Inventory:SetCanOpenDetailPanel接口
---@param ItemUID number -- 控件ID
---@param PropId string|number -- 物品ID
---@param IsOpen boolean -- 是否可以打开物品详情面板
function UI:SetBagCanOpenDetailPanel(ItemUID, PropId, IsOpen) end


_G.UI = UI
--- 数学
-- 用于数学计算
                
--- @module "UMath"

                
---@class UMath
local UMath = {}
                
--- 坐标轴
---@enum UMath.Axis
local Axis = {
  X_Axis = "X_Axis",
  Y_Axis = "Y_Axis",
  Z_Axis = "Z_Axis",
}
UMath.Axis = Axis

--- 获取向量长度<br/>获取向量的长度，返回的结果是一个数值。
---@param vec Engine.Vector -- 向量
---@return number lenth -- 向量长度
function UMath:GetVectorLength(vec) end

--- 获取向量归一化结果<br/>将一个向量归一化为一个标准向量。<br/>向量归一化是将一个非零向量调整为单位向量（长度为1）的过程，同时保持其方向不变。
---@param vec Engine.Vector -- 向量
---@return Engine.Vector result -- 返回的标准向量
function UMath:GetNormalize(vec) end

--- 获取两点间的距离<br/>以两点间的距离值进行返回。
---@param v1 Engine.Vector -- 向量1
---@param v2 Engine.Vector -- 向量2
---@return number result -- 距离
function UMath:GetDistance(v1, v2) end

--- 获取两点间的方向<br/>以两点间的方向进行返回。
---@param point1 Engine.Vector -- 点1
---@param point2 Engine.Vector -- 点2
---@return Engine.Vector result -- 方向
function UMath:GetPointToPoint(point1, point2) end

--- 获取方向旋转指定角度后的方向<br/>计算出按指定坐标轴旋方向转指定角度后的向量并返回。
---@param vec Engine.Vector -- 向量
---@param axis UMath.Axis -- 坐标轴
---@param angle number -- 角度
---@return Engine.Vector result -- 旋转后的向量
function UMath:GetVectorRotate(vec, axis, angle) end

--- 获取方向之间的夹角<br/>以两点间夹角的值进行返回。<br/>返回夹角为0-180度
---@param vec1 Engine.Vector -- 向量1
---@param vec2 Engine.Vector -- 向量2
---@return number result -- 夹角
function UMath:GetVectorAngle(vec1, vec2) end

--- 计算向量的叉乘<br/>计算两个向量的叉乘并返回。
---@param vec1 Engine.Vector -- 向量1
---@param vec2 Engine.Vector -- 向量2
---@return Engine.Vector result -- 计算结果
function UMath:GetVectorCross(vec1, vec2) end

--- 计算向量的点乘<br/>计算两个向量的点乘并返回。
---@param vec1 Engine.Vector -- 向量1
---@param vec2 Engine.Vector -- 向量2
---@return number result -- 计算结果
function UMath:GetVectorDot(vec1, vec2) end

--- 获取位置偏移后的位置<br/>以位置偏移后的位置进行返回。
---@param pos0 Engine.Vector -- 位置
---@param offsetx number -- 偏移x
---@param offsety number -- 偏移y
---@param offsetz number -- 偏移z
---@return Engine.Vector result -- 偏移后的位置
function UMath:GetPosOffset(pos0, offsetx, offsety, offsetz) end

--- 获取随机整数<br/>以随机整数进行返回。
---@param num0 number -- 最小值
---@param num1 number -- 最大值
---@return number result -- 随机整数
function UMath:GetRandomInt(num0, num1) end

--- 获取随机小数<br/>以随机小数进行返回。
---@param minValue number -- 最小值
---@param maxValue number -- 最大值
---@return number result -- 随机小数
function UMath:GetRandomFloat(minValue, maxValue) end

--- 数值转换为字符串<br/>将数值转换为字符串返回。
---@param num number -- 数值
---@return string result -- 转换后的字符串
function UMath:NumberToString(num) end

--- 字符串转换为数值<br/>将字符串转换为数值进行返回。
---@param str string -- 字符串
---@return number result -- 转换后的字符串
function UMath:StringToNumber(str) end

--- 获取两点间的水平夹角<br/>以两点间的水平夹角进行返回。
---@param point1 Engine.Vector -- 坐标点1
---@param point2 Engine.Vector -- 坐标点2
---@return number result -- 水平夹角
function UMath:GetHorizonAngle(point1, point2) end

--- 获取两点间的垂直夹角<br/>将获取两点间的垂直夹角以数值形式返回。
---@param point1 Engine.Vector -- 坐标点1
---@param point2 Engine.Vector -- 坐标点2
---@return number result -- 垂直夹角
function UMath:GetVerticleAngle(point1, point2) end

--- 计算向量的投影<br/>计算一个向量在另一个向量上方向上的投影并返回。
---@param vec1 Engine.Vector -- 向量1
---@param vec2 Engine.Vector -- 向量2
---@return Engine.Vector result -- 投影
function UMath:GetVectorProjection(vec1, vec2) end

--- 获取数值序列<br/>以一定步长生成数值序列并返回。
---@param left number -- 起始值
---@param right number -- 结束值
---@param step number -- 步长
---@return number[] seq -- 数值序列
function UMath:GetSequence(left, right, step) end

--- 获取对象插值<br/>获取两个对象以某权重做线性插值的结果。<br/>对象和返回值类型可以为boolean，number，vector3，color。Color是十六进制颜色码。
---@param object1 boolean|number|vector3|color -- 对象1
---@param object2 boolean|number|vector3|color -- 对象2
---@param weight number -- 权重
---@return boolean|number|vector3|color result -- 插值结果
function UMath:GetLerp(object1, object2, weight) end

--- 将欧拉角转为四元数<br/>以四元数形式返回一个欧拉角向量。<br/>四元数参数为XYZW
---@param eulerAngles Engine.Vector -- 欧拉角
---@return Engine.Quat Quaternion -- 返回四元数
function UMath:EulerToQuaternion(eulerAngles) end

--- 将四元数转为欧拉角<br/>以欧拉角形式返回一个四元数。
---@param quaternion Engine.Quat -- 四元数
---@return Engine.Vector eulerAngles -- 返回四元数
function UMath:QuaternionToEuler(quaternion) end

--- 将旋转转换为对应朝向的方向向量
---@param Rot Engine.Rotator -- 旋转
---@return Engine.Vector forward -- 朝向方向向量
function UMath:RotatorToForward(Rot) end

--- 将朝向的方向向量转换为对应的旋转
---@param Forward Engine.Vector -- 朝向方向向量
---@return Engine.Rotator rot -- 旋转
function UMath:ForwardToRotator(Forward) end

--- 四元数的球面线性插值，会自动处理对齐保证插值走最短路径
---@param Quat1 Engine.Quat -- 当前四元数
---@param Quat2 Engine.Quat -- 目标四元数
---@param Slerp number -- 插值参数，控制插值进度，范围[0,1]
---@return Engine.Quat result -- 插值结果，归一化的四元数
function UMath:QuatSlerp(Quat1, Quat2, Slerp) end

--- 平滑地将一个向量从当前值过渡到目标值
---@param Vector1 Engine.Vector -- 当前Vector
---@param Vector2 Engine.Vector -- 目标Vector
---@param SmoothFactor number -- 插值参数，控制插值进度，范围[0,1]
---@return Engine.Vector result -- 插值结果
function UMath:SmoothLerp_Vector(Vector1, Vector2, SmoothFactor) end

--- 平滑地将一个向量从当前值过渡到目标值，带有阻尼效果
---@param Vector1 Engine.Vector -- 当前Vector
---@param Vector2 Engine.Vector -- 目标Vector
---@param CurVelocity Engine.Vector -- 当前速度,（引用传递，函数内部会修改）
---@param SmoothTime number -- 平滑时间（阻尼时间，越小越快）
---@param DeltaTime number -- 时间步长
---@param MaxSpeed number -- 最大速度（可选，传nil则不限制）
---@return Engine.Vector result -- 插值结果，步进后的Vector
function UMath:SmoothDamp_Vector(Vector1, Vector2, CurVelocity, SmoothTime, DeltaTime, MaxSpeed) end

--- 角度转弧度
---@param Deg number -- 角度值
---@return number rad -- 弧度值
function UMath:DegToRad(Deg) end

--- 弧度转角度
---@param Rad number -- 弧度值
---@return number deg -- 角度值
function UMath:RadToDeg(Rad) end


_G.UMath = UMath
--- 录音
-- 提供玩家录音相关的操作
                
--- @module "Voice"

                
---@class Voice
local Voice = {}
                --- 开始录音
---@param Call fun(text: string) -- 录音转文字时的回调；(text-语音转为成的文字)
function Voice:StartRecord(Call) end

--- 停止录音
function Voice:EndRecord() end


_G.Voice = Voice