---@meta

---@class lualib
---@field MaxPets integer 最大宠物数量
---@field Time integer 时间 系统经过时间
---@field RunInterval integer 角色基础跑步间隔
---@field WalkInterval integer 角色基础移动间隔
---@field AttackInterval integer 角色基础攻击间隔
---@field SpeedInterval integer 角色基础施法间隔
---@field SystemNPC MapObject 系统NPC对象
---@field ItemNPC MapObject 物品NPC对象
---@field SkillNPC MapObject 技能NPC对象
---@field QuestNPC MapObject 任务NPC对象
---@field SkillResistWeight integer 魔法闪避默认值
lualib={}

---@class Ref
Ref={}
---@class Include
Include={}

---@class Point
Point={}

---@class MapObjects
---@field Count integer 数量
MapObjects = {}
---@class EntityObjects
---@field Count integer 数量
EntityObjects = {}

--local players = MapObjects();
--    print(players.Count)
--    for i=0,players.Count-1 do
--     print(players[i].name);
---@class UserItems
UserItems = 
{

}
---@class HeroInfos
---@field list  HeroInfo[] # 名称
---@field Count  integer # 数量
HeroInfos = 
{

}

---@class HeroInfo 英雄对象信息
---@field ObjectID integer  
---@field Name string
---@field Level integer
---@field IClass integer
---@field IGender integer
---@field CurrentHero boolean
HeroInfo = 
{

}
---@class GuildObject 行会对象
---@field Name string 工会名称
---@field Gold integer 工会金币
---@field Lv integer 工会等级
---@field Exp integer 工会经验  
GuildObject = {}





---@enum TriggerType 触发器枚举
TriggerType = {
    --系统触发器  参数system
    Login       =   0; --登录触发 (player)
    LoginOut    =   1; -- 登出前触发 (player)
    Die         =   2; --死亡触发 (player,Attacker)
    MonsterDieDropItem = 3, --怪物死亡掉落物品触发(monster,userItem) 返回 boolean 确认是否掉落 

    --角色触发器 参数character
    Attack      =   10; --攻击触发 (player,target,SkillData)
    Defence = 11,      --受击触发 (player,target,SkillData)
    Damage = 12, --受伤害结算触发(player,target,SkillData)

    ChangeHP    =   15; --血量变化时触发(target)
    GetExp      =   16; --活得经验(player,num)
    LevelUp     =   17; --升级触发 (player)
    BeforeTakeOn = 18; --穿前装备触发 (player,useritem,site)   返回 boolean 用于确定是否可穿
    BeforeTakeOff = 19; --脱前装备触发 (player,useritem,site)   返回 boolean 用于确定是否可脱
    TakeOn = 20;    --穿装备后触发  (player,useritem,site)
    TakeOff = 21;   --脱装备后触发  (player,useritem,site)
    EquipChanged =22;   --身上装备改变后触发    (player)
    ----穿脱触发顺序说明
    ----例: 武器位原本无装备 现操作 穿武器
    ----BeforeTakeOn->TakeOn->EquipChanged
    ----例: 武器位原本有装备 现操作 穿武器
    ----BeforeTakeOff->TakeOff->BeforeTakeOn->TakeOn->EquipChanged
    ----例:  武器位原本有装备 现操作 脱武器
    ----BeforeTakeOff->TakeOff->EquipChanged
    BeforeEnterMap = 23;  --角色进入地图前触发
    --(player,weapon) -- return false 阻止诅咒  默认不阻止
    BeforeUnLuck = 24; 
    --(player) --挖矿时触发  位于矿区进行挖矿 判断产出前触发
    Mining = 27;
    --挖到矿触发
    --(player,item)
    DigUpMineral =28;
    --(player,item) --拾取触发
    PickUp = 29;
    -- 新套装效果触发(player,BuffID,count)
    AddItemSet = 30; 
    -- 移除套装效果触发 (player,BuffID,count)
    DelItemSet = 31, 
    -- 新角色触发 (player)
    NewCharacter = 32,
    -- 拍卖行提交商品触发|处理扣钱检查商品合格
    -- (player,npc,useritem,currencyId,price,type[0 寄售|1 拍卖])
    -- return false 不允许上架
    Consign = 50, 


    --角色 怪物触发器 参数monster或character
    DieDropItem = 100; --掉落物品(MapObject,userItem,site)   返回 boolean 确认是否掉落 site掉落部位 -1 怪物||背包  0~x 装备栏部位
    KillMon = 101; --(myself,monster) ---杀死怪物触发 怪物人物都可以用
    KillHum = 102; -- (myself,player) --杀人触发 怪物 人物都可以用
    --角色 地图触发器 参数Map或character
    EnterMap = 150; ---(MapObject,Map) 进入地图前触发 相同地图不触发
    LeaveMap = 151; ---(MapObject,Map)进入地图后触发 相同地图不触发

}
---@enum ItemWhereType 查询物品枚举
ItemWhereType = {
    Bag = 1,  --查询背包
    Equipment = 2, --查询装备
    Storage = 4,    --查询仓库
    Bag_Equipment = ItemWhereType.Bag | ItemWhereType.Equipment,  --背包和装备  3
    Bag_Storage = ItemWhereType.Bag | ItemWhereType.Storage,  --背包和仓库 5
    Equipment_Storage = ItemWhereType.Equipment | ItemWhereType.Storage, --装备和背包 6
    All = ItemWhereType.Bag | ItemWhereType.Equipment| ItemWhereType.Storage --查询所有 7
}
---@enum ChatType 消息类型枚举
ChatType = {
    Normal = 0,
    Shout = 1,
    System = 2,
    Hint = 3,
    Announcement = 4,
    Group = 5,
    WhisperIn = 6,
    WhisperOut = 7,
    Guild = 8,
    Trainer = 9,
    LevelUp = 10,
    System2 = 11,
    Relationship = 12,
    Mentor = 13,
    Shout2 = 14,
    Shout3 = 15,
    LineMessage = 16,
}
---@enum MirClass 职业分类枚举
MirClass ={
    Warrior = 0, --战士
    Wizard = 1, --法师
    Taoist = 2, --道士
    Assassin = 3, --刺客
    Archer = 4  --弓箭手
}

---@enum AttackMode 攻击模式
AttackMode=
{
    Peace = 0, --和平攻击
    Group = 1, -- 分组攻击
    Guild = 2, -- 行会模式
    EnemyGuild = 3, -- 敌对工会攻击
    RedBrown = 4, -- 红名攻击
    All = 5  -- 全体攻击
}

---@enum VarType 变量周期枚举
VarType = {
    Temp = 0; --临时 不保存
    Day = 1;    --天变量
    Week = 2;   --周变量
    Month = 3;  --月变量
}

---@enum BindMode 物品绑定枚举  DontDeathdrop|DontDrop|DieDrop
BindMode = {
    None = 0;
    DontDeathdrop = 1;
    DontDrop = 2;
    DontSell = 4;
    DontStore = 8;
    DontTrade = 16;
    DontRepair = 32;
    DontUpgrade = 64;
    DestroyOnDrop = 128;
    BreakOnDeath = 256;
    BindOnEquip = 512;
    NoSRepair = 1024;
    NoWeddingRing = 2048;
    UnableToRent = 4096;
    UnableToDisassemble = 8192;
    NoMail = 16384;
    NoHero = 32768;
    DieDrop = 65536; --新增死亡必掉
    JumpDrop = 131072; -- 新增跳转必掉 (包含 随机 跳转地图 等 突然改变坐标的情况   在随机前掉落 跳转地图前掉落 也就是掉落在跳转前的坐标)
}

---@enum ItemTypeClass 物品类型枚举
ItemTypeClass =
{
--普通 不可使用
None = 0,
--道具 可使用
UseItem = 1,
--货币 拾取消失
Currency = 2,
--装备 
Equipment = 3,
}
---@class MapObject
---@field ObjectID integer 对象ID
---@field Name  string # 名称
---@field CurrentMap Map # 当前地图
---@field RaceType integer #类型
---@field CurrentLocation Point #当前坐标类
---@field Dir integer #当前方向
---@field OperateTime integer 操作时间间隔
---@field Blocking boolean 固定?
system = {}
---@class NPCObject
---@field ObjectID integer 对象ID
---@field Name  string # 名称
---@field CurrentMap Map # 当前地图
---@field RaceType integer #类型
---@field CurrentLocation Point #当前坐标类
---@field Dir integer #当前方向
---@field OperateTime integer 操作时间间隔
---@field Blocking boolean 固定?
---@field HasQuest boolean NPC是否存在任务
---@field CanDoQuest boolean NPC是否存在任务
---@field CanFishQuest boolean NPC是否存在任务
npc = {}
---@class MapObject
Item={}

---@class EntityObject  -> MapObject  monster|player|hero
---@field ObjectID integer 对象ID
---@field Name  string # 名称
---@field CurrentMap Map # 当前地图
---@field CurrentLocation Point #当前坐标类
---@field Dir integer #当前方向
---@field OperateTime integer 操作时间间隔
---@field HP integer  # 当前血量
---@field MaxHP integer # 最大血量
---@field PercentHealth integer  # 当前血量百分比 不含%
---@field MP integer # 当前蓝量
---@field MaxMP integer # 最大蓝量
---@field Exp integer # 当前经验值
---@field MaxExp integer # 当前最大经验值
---@field Level integer # --等级
---@field Gold integer #金币数量
---@field PKPoints  integer PK点
---@field Gender  integer  性别   男性 = 0, 女性 = 1
---@field MirClass integer  职业枚举编号
---@field GetDC  integer  获取攻击随机值 包含幸运算法
---@field GetMC  integer  获取魔法随机值 包含幸运算法
---@field GetSC  integer  获取道术随机值 包含幸运算法
---@field GetMAC  integer  获取魔抗随机值 不包含幸运算法
---@field GetAC  integer  获取防御随机值 不包含幸运算法
---@field RaceType integer #类型
---@field IsPlayer boolean 是否玩家
---@field AsPlayer PlayerObject  返回玩家
---@field IsHero boolean  是否英雄
---@field AsHero HeroObject  返回玩家
---@field IsMonster boolean 是否野怪
---@field AsMonster MonsterObject  返回玩家
---@field IsHuman boolean     是否人型[玩家|英雄]
---@field AsHuman HumanObject  返回玩家
---@field Dead boolean 是否死亡
---@field CanRegen boolean 是否可恢复
---@field CanMove boolean 是否可传送
---@field CanAttack  boolean 是否可攻击
---@field CanWalk boolean 可走动
---@field CanRun boolean 可跑动
---@field InTrapRock boolean 在陷阱
---@field Blocking boolean 固定?
---@field HasMaster boolean 是否有主人
---@field MasterUid integer 主人ID
---@field CanTame boolean 怪物才有的属性 
entity = {}
---@class EntityObject
player = {}
---@class PlayerObject
---@field ObjectID integer 对象ID
---@field Name  string # 名称
---@field CurrentMap Map # 当前地图
---@field CurrentLocation Point #当前坐标类
---@field Dir integer #当前方向
player = {}
---@class EntityObject
monster = {}
---@class MonsterObject
monster = {}
---@class EntityObject
hero = {}
---@class HeroObject
hero = {}
---@class EntityObject
human = {}
---@class HumanObject
human = {}

---@class EntityCopy  -> 对象属性快照 副本
---@field GetDC  integer  获取攻击随机值 包含幸运算法
---@field GetMC  integer  获取魔法随机值 包含幸运算法
---@field GetSC  integer  获取道术随机值 包含幸运算法
---@field GetMAC  integer  获取魔抗随机值 不包含幸运算法
---@field GetAC  integer  获取防御随机值 不包含幸运算法
---@field PK  integer PK点
---@field Level integer # --等级
---@field HP integer  # 当前血量
---@field MaxHP integer # 最大血量
---@field MP integer # 当前蓝量
---@field MaxMP integer # 最大蓝量



---@class BaseData
---@field TargetID integer 锁定目标ID 可修改
---@field Value integer 伤害值|治疗值
---@field IsCritical boolean 是否暴击
---@field DamageWeapon boolean 是否损伤武器耐久判断
---@field Skewing boolean 部分判断需要 例如火球术 技能成功释放 但是无法击中目标 则视为偏移 无法击中
---@field DelayTime integer 技能延迟时间 根据DelayBase 和技能类型进行攻速|施法加速后的实际延迟 可修改
---@field DelayBase integer 技能延迟时间  默认在表格内配置 不可修改
---@field RigidityTime integer 技能后摇  根据RigidityBase 和技能类型进行攻速|施法加速后的实际延迟 可修改
---@field RigidityBase integer 技能后摇  默认在表格内配置 不可修改
---@field EntityCopy EntityCopy 施法人快照
---@field Id integer 技能ID
---@field GetMultiplier number 伤害倍率 (基础倍率 + 技能等级*成长倍率) ---技能快照属性
---@field GetPower integer 附加伤害 (MPower + Power)---技能快照属性
---@field Level integer 技能等级 ---技能快照属性
---@field Radius integer 技能作用范围 ---技能快照属性
---@field Point Point 技能起始坐标点
---@field Termination boolean 技能中断 不会继续接下来的其他操作
---@field MomentDash boolean 野蛮冲撞是否瞬移使用 
---MPower和Power算法都是 Random(Base,Bonus+Base) 随机取基本值到变动值
BaseData = {}

---@class SkillData
---@field TargetID integer 锁定目标ID 仅读
---@field BaseData BaseData 记录最初是的数据
---@field Value integer 伤害值|治疗值
---@field IsCritical boolean 是否暴击
---@field DamageWeapon boolean 是否损伤武器耐久判断
---@field EntityCopy EntityCopy 施法人快照
---@field Id integer 技能ID
---@field GetMultiplier number 伤害倍率 (基础倍率 + 技能等级*成长倍率) ---技能快照属性
---@field GetPower integer 附加伤害 (MPower + Power)---技能快照属性
---@field Level integer 技能等级 ---技能快照属性
---@field Radius integer 技能作用范围 ---技能快照属性
---@field Termination boolean 技能中断 不会继续接下来的其他操作
---@field MomentDash boolean 野蛮冲撞是否瞬移使用 
---MPower和Power算法都是 Random(Base,Bonus+Base) 随机取基本值到变动值
SkillData = {}

---@class UserItem
---@field ObjectID integer 物品ID 
---@field Name string 物品名称
---@field Count integer 物品数量
---@field MaxCount integer 物品最大数量
---@field Bind BindMode 绑定枚举
---@field IBind integer 绑定枚举转int
---@field ItemWhere ItemWhereType 物品所在位置枚举
---@field ItemWhereIndex integer 物品所在位置下标
---@field HasDura boolean 物品是否拥有耐久
---@field CurrentDura integer 当前耐久度
---@field MaxDura integer 最大耐久度
---@field Weight integer 物品总重量|堆叠物品
---@field AddedStats Stats 极品属性|可能为空
---@field ExpireStart boolean 是否已经开始物品计时 物品无超时false | 装备超时未装备 false 
---@field ExpireTime integer 物品超时剩余时间 毫秒  -1为 无超时
---@field Equip integer[] 数组 可能为空 测试下是否可以直接访问
---@field ItemInfo ItemInfo  物品表基础数据
userItem ={}

---@class  ItemInfo  --物品基本数据
---@field  ID integer 物品表ID
---@field  KeyName string 物品表索引
---@field  Name string 物品名称
---@field NameColor string 名称颜色
---@field  Type integer 类型|对应物品类型表
---@field  Class ItemTypeClass  物品分类枚举
---@field  IClass integer  物品分类枚举转int|0杂物  1道具 2货币 3装备
---@field  Shape integer 形状|部分物品用到 例如护身符|毒药
---@field  Weight integer 重量
---@field  ItemSets string[] 套装ID集合
---@field  BuffList string[] 物品自带buff集合
---@field  Tags integer[] 标签集合
---@field  Material integer 物品素材表索引
---@field  StackSize integer 最大堆叠数量
---@field  Price integer 价格|金币
---@field Bind BindMode 绑定枚举
---@field IBind integer 绑定枚举转int
---@field  Stats Stats 基本属性
---@field  ToolTip string 描述
---@field Durability integer 最大耐久度
---@field InfoType InfoType 物品类型->对应物品类型表
---@field ItemMaterial  ItemMaterial 物品素材表->对应物品素材
ItemInfo={}

---@enum RequiredType
RequiredType = 
{
        Male = 1, --为1 男性可穿  
        Female = 2, --为1 女性可穿 
        Warrior = 3, --为1 战士可穿 
        Wizard = 4, --为1 法师可穿 
        Taoist = 5, --为1 道士可穿 
        HandWeight = 8, --为1 计算负重
        Level = 20,  --0无等级限制 大于0最低等级限制
        MaxLevel = 21, --0无等级限制 大于0最大等级限制
}

---@class InfoType 物品类型
---@field ID integer 类型ID
---@field Name string 类型名称
---@field Group string 类型分类
---@field DamageDura integer 受伤耐久消耗
---@field AttackDura integer 攻击耐久消耗
---@field Equip integer[] 数组 可能为空 测试下是否可以直接访问

InfoType={}
---@class ItemMaterial 物品素材表
---@field ID integer ID
---@field Name string 名称
---@field BagLookFileName string 背包图
---@field BagLookID integer 背包图ID
---@field BagAnyEffect boolean 背包仅使用动态图
---@field BagEffectLookStartID integer 背包动态图开始ID
---@field BagEffectNumber integer 背包动态图张数  
---@field BagEffectJumpNumber integer 背包动态图跳过张数
---@field BagEffectSpeed integer 背包动态图播放速度 
---@field BagEffectBlend boolean 是否Blend
---@field BagEffectFileName string 背包动态图文件 
---@field InnerLookFileName string 内观图     
---@field InnerLookID integer 内观图ID
---@field InnerAnyEffect boolean  背包仅使用动态图
---@field InnerEffectLookStartID integer 内观动态图开始ID
---@field InnerEffectNumber integer  内观动态图张数
---@field InnerEffectSpeed integer 内观动态图播放速度
---@field InnerEffectBlend boolean -- 是否Blend
---@field InnerEffectFileName string  -- 内观动态图文件
---@field  ShowFileName string    -- 外观文件
---@field  UseSound string -- 使用音效
---@field  HitSound string -- 命中音效
---@field  AttackSound string -- 攻击音效
ItemMaterial = {}
---@class Map
---@field ID integer #地图下标 用作唯一性判断
---@field KeyName  string #UniquID
---@field Title string #名称
---@field Width   integer # 宽度
---@field Height  integer # 高度
---@field NoTeleport boolean 地图是否可以传送
---@field NoReincarnation boolean 地图是否可以复活
map = {}

--- 添加触发器
--- @param map MapObject|EntityObject # 玩家对象,NPC对象,怪物对象
--- @param lua_trigger_type number # 触发器类型(应为 TriggerType 的值)
--- @param funcName string # 函数名
function lualib.AddTrigger(map, lua_trigger_type, funcName) end

--- 发送系统消息
--- 聊天窗口 选择频道
--- @param player MapObject|EntityObject 玩家对象 system 为广播
--- @param msg string 消息内容
--- @param chatType ChatType 消息类型
function lualib.SendMsg(player,msg,chatType) end
function lualib.SendMsg(player,msg) end


--- 打开浏览器
--- @param player MapObject|EntityObject 玩家对象
--- @param url string 链接
function lualib.OpenBrowser(player,url) end

---声音?
--- @param player MapObject|EntityObject 玩家对象
--- @param id integer id
function lualib.PlaySound(player,id) end


--- 给所有角色发送消息
---@param msg string 消息内容
function lualib.GlobalMessage(msg,chatType) end
function lualib.GlobalMessage(msg) end

---给玩家发送邮寄
---@param player MapObject 玩家对象
---@param title string 邮件标题
---@param msg string 邮件内容
---@param goldstr string 金币数量  字符串 --后期可能会多种货币 
---@param log string 日志 
---@param keyNameStr string [] 选填 支持多行文本  "KeyName,count","KeyName,count"
--例 lualib.SendMail(player , "GM" , "系统" , "99" , "测试使用" , "终极开天,5" , "随机传送卷,38" , "雷霆战戒" , "修复神水")
function lualib.SendMail(player,title,msg,goldstr,log,keyNameStr) end
function lualib.SendMail(player,title,msg,goldstr,log) end
function lualib.SendMail(player,title,msg,goldstr) end
function lualib.SendMail(player,title,msg) end

---给玩家发送邮寄
---@param player MapObject 玩家对象
---@param title string 邮件标题
---@param msg string 邮件内容
---@param keyNameStr string  物品+数量 拼接字符串  "keyName,count|keyName,count|keyName"
---@param goldstr string 金币数量
---@param log string 日志
---@param Split string 切割符 --默认|
--例 lualib.SendMailSplit(player, "GM", "系统", "99" , "终极开天,5|随机传送卷,38|雷霆战戒|修复神水","|" , "测试使用")
function lualib.SendMailSplit(player,title,msg,keyNameStr,goldstr,log,Split) end
function lualib.SendMailSplit(player,title,msg,keyNameStr,goldstr,log) end
function lualib.SendMailSplit(player,title,msg,keyNameStr,goldstr) end
function lualib.SendMailSplit(player,title,msg,keyNameStr) end

---创建系统邮件 --系统邮件需要时效内玩家上线才会收到 针对所有玩家
---@param title string 邮件标题
---@param msg string 邮件内容
---@param goldstr string 金币数量 字符串 --后期可能会多种货币 
---@param outTime integer 超时时间 单位天 默认3天
---@param log string 日志 
---@param keyNameStr string [] 选填 支持多行文本  "keyName,count","keyName,count"
--例 lualib.CreateSystemMail("GM", "系统", "999", 30, "测试使用",  "终极开天,5", "随机传送卷,38", "雷霆战戒", "修复神水")
function lualib.CreateSystemMail(title, msg,goldstr,outTime,log,keyNameStr) end
function lualib.CreateSystemMail(title, msg,goldstr,outTime,log) end
function lualib.CreateSystemMail(title, msg,goldstr,outTime) end
function lualib.CreateSystemMail(title, msg,goldstr) end
function lualib.CreateSystemMail(title, msg) end

---创建系统邮件 分隔符模式 --系统邮件需要时效内玩家上线才会收到 针对所有玩家
---@param title string 邮件标题
---@param msg string 邮件内容
---@param keyNameStr string  物品+数量 拼接字符串  "keyName,count|keyName,count|keyName"
---@param goldstr string 金币数量 金币数量 字符串 --后期可能会多种货币  默认0
---@param outTime integer 超时时间 单位天 默认3天
---@param log string 日志 
---@param Split string 切割符 --默认|
    --例 lualib.CreateSystemMailSplit( "GM" , "系统" , "终极开天,5|随机传送卷,38|雷霆战戒|修复神水"  , "99"  , 30, "测试使用" , "|")
function lualib.CreateSystemMailSplit(title,msg,keyNameStr,goldstr,outTime,log,Split) end
function lualib.CreateSystemMailSplit(title,msg,keyNameStr,goldstr,outTime,log) end
function lualib.CreateSystemMailSplit(title,msg,keyNameStr,goldstr,outTime) end
function lualib.CreateSystemMailSplit(title,msg,keyNameStr) end

---comment 测试用 
---@param message string
function lualib.TestRun(message) end

--- 添加货币
--- @param player MapObject 玩家对象
--- @param id integer 货币id
--- @param count integer 数量
--- @param log string 日志
function lualib.AddCurrency(player,id,count,log) end
function lualib.AddCurrency(player,id,count) end

--- 删除货币
--- @param player MapObject 玩家对象
--- @param id integer 货币id
--- @param count integer 数量
--- @param log string 日志
function lualib.DelCurrency(player,id,count,log) end
function lualib.DelCurrency(player,id,count) end

--- 获取货币
function lualib.GetCurrency(player,id) end

---随机
---@param player MapObject
---@param page string
---@param autoRoll boolean
function lualib.RollDie(player,page,autoRoll) end

---随机
---@param player MapObject
---@param page string
---@param autoRoll boolean
function lualib.RollYut(player,page,autoRoll) end


---添加工会金币
---@param player MapObject 玩家对象
---@param gold integer 金币
---@param log string 日志
function lualib.GiveGuildGold(player, gold, log)end
function lualib.GiveGuildGold(player, gold)end
---减少工会金币
---@param player MapObject 玩家对象
---@param gold integer 金币
---@param log string 日志
function  lualib.TakeGuildGold(player, gold, log) end
function  lualib.TakeGuildGold(player, gold) end

---添加宠物
---@param player MapObject  玩家对象
---@param keyName string   怪物唯一标识
---@param level integer 等级 不填默认1
---@param count integer 数量 不填默认1
function lualib.GivePet(player,keyName,level,count)  end
function lualib.GivePet(player,keyName,level)  end
function lualib.GivePet(player,keyName) end
---清空宠物
---@param player MapObject  玩家对象
---@param keyName string   怪物唯一标识 如不填则清空所有宠物
function lualib.RemovePets(player,keyName)  end
function lualib.RemovePets(player)  end

---恢复英雄
---@param player MapObject  玩家对象
function lualib.ReviveHero(player)  end
---召回英雄-英雄蛋
---@param player MapObject  玩家对象
function lualib.SealHero(player)  end
---删除英雄
---@param player MapObject  玩家对象
function lualib.DeleteHero(player)  end
--- 传送
--- @param player EntityObject 玩家对象
--- @param mapKey string 地图索引
--- @param x integer X
--- @param y integer Y
--- @param r integer 范围
function lualib.Move(player,mapKey,x,y,r) end
function lualib.Move(player,mapKey,x,y) end
function lualib.Move(player,mapKey) end


--- 添加经验
--- @param player EntityObject 玩家对象
--- @param exp integer 数量
--- @param log string 日志
function lualib.GiveExp(player,exp,log) end
function lualib.GiveExp(player,exp) end

--- 调整角色等级
--- @param player EntityObject 玩家对象
--- @param lv integer 等级
--- @param log string 日志
function lualib.SetLevel(player, lv,log) end
function lualib.SetLevel(player, lv) end
---升级开关
---@param player EntityObject 玩家对象
---@param open boolean 开关 默认开启 开启不升级
---@param log string 日志
function lualib.DisableLevelUp(player, open,log)  end

---联系升级开关
---@param player MapObject 玩家对象
---@param open boolean 开关 默认开启 开启不能连续升级
---@param log string 日志
function lualib.DisableLoopLevelUp(player, open,log)  end

---经验开关
---@param player MapObject 玩家对象
---@param open boolean 开关 默认开启 开启不升级
---@param log string 日志
function lualib.DisableAddExp(player, open,log) end

---调整性别
---@param player MapObject 玩家对象
function lualib.ChangeGender(player) end

---调整职业
---@param  player MapObject 玩家对象
---@param class MirClass 职业枚举
---@param log string 操作日志
function lualib.ChangeClass(player,class,log) end

---调整发型
---@param player MapObject 玩家对象
---@param hair integer 0~9 发型编号 默认不填随机
function lualib.ChangeHair(player,hair) end


---增减血量
---@param mapObjcet MapObject 玩家对象 怪物对象
---@param hp integer
function lualib.GiveHP(mapObjcet,hp,log) end
function lualib.GiveHP(mapObjcet,hp) end
---增减魔力
---@param player MapObject 玩家对象
---@param mp integer
function lualib.GiveMP(player,mp) end




---移除buff
---@param mapObjcet EntityObject 玩家对象 怪物对象
---@param keyName string buff详细状态 keyName
function lualib.RemoveBuff(mapObjcet, keyName) end

---刷新角色效果
---@param player EntityObject 玩家对象|英雄对象
function lualib.RefreshStats(player) end


---婚戒
--@param player MapObject|EntityObject 玩家对象
--function lualib.MakeWeddingRing(player) end

--离婚
---@param player MapObject 玩家对象
function lualib.ForceDivorce(player) end

---将PK值修改为当前值
---@param player MapObject 玩家对象
---@param pk integer 将PK值修改为当前值
function lualib.SetPKPoints(player,pk) end

---加入公会
---@param player MapObject 玩家对象
---@param name string 公会名称
function lualib.AddToGuild(player,name) end

---退出公会
---@param player MapObject 玩家对象
function lualib.RemoveFromGuild(player) end


---征服
---@param player MapObject  玩家对象
function lualib.ConquestGuard(player,index,infoIndex) end
---征服
---@param player MapObject  玩家对象
function lualib.ConquestGate(player,index,infoIndex) end
---征服
---@param player MapObject  玩家对象
function lualib.ConquestWall(player,index,infoIndex) end
---征服
---@param player MapObject  玩家对象
function lualib.ConquestSiege(player,index,infoIndex) end
---征服
---@param player MapObject  玩家对象
function lualib.TakeConquestGold(player,index) end
---征服
---@param player MapObject  玩家对象
function lualib.SetConquestRate(player,index,range) end
---征服
---@param player MapObject  玩家对象
function lualib.StartConquest(player,index) end
---征服
---@param player MapObject  玩家对象
function lualib.ScheduleConquest(player,index) end
---征服
function lualib.OpenGate(index,infoIndex) end
---征服
function lualib.CloseGate(index,infoIndex) end
---征服
---@param player MapObject  玩家对象
function lualib.ConquestRepairAll(player,index) end

--- 物品掉落 脚本触发一次对应怪物掉落判断 物品直接掉入玩家背包
--- @param Player MapObject 玩家对象
--- @param keyName string 怪物ID
function lualib.Drop(Player,keyName) end

--- 物品掉落
--- @param object MapObject 如果为npc|Monster创建物品掉落 为player|hero 查找背包|装备掉落
--- @param itemKey string 物品唯一ID
--- @param count integer 掉落数量
--- @param mapKey string 地图唯一ID
--- @param x integer    掉落坐标
--- @param y integer    掉落坐标
--- @param r integer    掉落坐标
--- @param owner MapObject 归属对象 为空则无归属
--- @param ownerTime integer  归属等待时间 秒
--- @param log string 日志
--- @return UserItem
function lualib.DropItem(object,itemKey,count,mapKey,x,y,r,owner,ownerTime,log) end

--- 创建物品
--- 返回创建角色物品 注意:创建物品暂无ID 需要添加给角色后才会生成ID 可以将此方法创建的物品添加给多个角色
--- @param keyName string 物品索引
--- @param count integer 数量
--- @return UserItem
function lualib.CreateItem(mapUid,keyName,count) end

--- 给物品
--- 将角色背包物品添加给角色
--- @param player MapObject 玩家对象
--- @param userItem UserItem 物品对象
--- @param log string|nil 日志
--- @return boolean
function lualib.Give(player,userItem,log) end
function lualib.Give(player,userItem) end

--- 给物品
--- 创建角色物品添加给角色背包
--- @param player MapObject 玩家对象
--- @param keyName string 物品索引
--- @param count integer|number 数量
--- @param log string 日志
--- @return UserItem
function lualib.Give(player,keyName,count,log)   end
function lualib.Give(player,keyName,count)   end


---获取物品
---@param keyName string
---@return ItemInfo
function lualib.GetItemInfo(keyName) end

--- 使用物品
--- @param player MapObject 玩家对象
--- @param keyName string 物品索引
--- @return boolean
function lualib.UseItem(player, keyName) end 

---设置物品绑定装备 DontDeathdrop|DontDrop|DieDrop
---@param userItem UserItem 物品对象
---@param bindMode BindMode 绑定模式
function lualib.SetBindMode(userItem, bindMode) end;

---检测绑定模式
---@param userItem UserItem 物品对象
---@param bindMode BindMode 绑定模式
---@return boolean
function lualib.HasBindMode(userItem, bindMode) end;

---刷新物品属性
---@param player MapObject
---@param item UserItem
function lualib.RefreshItem(player, item) end








---扩充背包
---@param player MapObject
---@param site integer
---@return integer
--英雄最大 42  角色最大86
function lualib.AddBag(player, site) end



---扩充仓库
--- @param player MapObject 玩家对象
---@return integer
function lualib.AddStorage(player) end


---脱装备
---@param player MapObject 玩家对象
---@param slot string 部位名称 -1默认全脱 
---@param onTrigger boolean 是否触发触发器
function lualib.UnequipItem(player,slot,onTrigger) end
function lualib.UnequipItem(player,slot) end
function lualib.UnequipItem(player) end

--- 穿装备
--- 如部位已有装备则脱下原有装备
--- 戒指手镯位 自动优先穿到空位上 如无空位,也没指定部位 则循环穿戴左右
--- @param player MapObject 玩家对象
--- @param keyName string 物品索引
--- @param useTrigger boolean 是否触发 默认 true
--- @param site integer 指定部位 默认值0 自动判断部位 (
--- @return boolean
function lualib.TakeOn(player, keyName,useTrigger,site) end 
function lualib.TakeOn(player, keyName,site) end 
function lualib.TakeOn(player, keyName) end 

--- 穿装备
--- 如部位已有装备则脱下原有装备
--- 戒指手镯位 自动优先穿到空位上 如无空位,也没指定部位 则循环穿戴左右
--- @param player MapObject 玩家对象
--- @param UserItem UserItem 物品索引
--- @param useTrigger boolean 是否触发 默认 true
--- @param site integer 指定部位 默认值0 自动判断部位 (
--- @return boolean
function lualib.TakeOn(player, UserItem,useTrigger,site) end 
function lualib.TakeOn(player, UserItem,useTrigger) end 
function lualib.TakeOn(player, UserItem) end 

--- 脱装备
--- @param player MapObject 玩家对象
--- @param keyName string 物品索引
--- @param useTrigger boolean 是否触发 默认 true
--- @param site integer 指定部位 默认值0 自动判断部位
--- @return boolean
function lualib.TakeOff(player, keyName,useTrigger,site) end 

--- 脱装备
--- @param player MapObject 玩家对象
--- @param keyName string 物品索引
--- @return boolean
function lualib.TakeOff(player, keyName) end 

--- 脱装备
--- @param player MapObject 玩家对象
--- @param UserItem UserItem 物品索引
--- @param useTrigger boolean 是否触发 默认 true
--- @return boolean
function lualib.TakeOff(player, UserItem,useTrigger) end 

--- 脱装备
--- @param player MapObject 玩家对象
--- @param UserItem UserItem 物品索引
--- @return boolean
function lualib.TakeOff(player, UserItem) end 



--- 获取Int变量
--- Int64
--- @param player MapObject 玩家对象
--- @param varName string 变量名称
--- @return integer
function  lualib.GetInt(player,varName) end

--- 设置Int变量
--- Int64
--- @param player MapObject 玩家对象
--- @param varName string 变量名称
--- @param value integer 值
function  lualib.SetInt(player,varName,value) end

--- 获取String变量
--- @param player MapObject 玩家对象
--- @param varName string 变量名称
--- @return string
function  lualib.GetStr(player,varName) end

--- 获取String变量
--- @param player MapObject 玩家对象
--- @param varName string 变量名称
--- @param value string 值
function  lualib.SetStr(player,varName,value) end


---物品转Json
---@param item UserItem
---@return string
function lualib.Item2Json(item) end

---Json转物品
---@param json  string
---@return UserItem
function lualib.Json2Item(json) end

--- 获取Int变量
--- Int64
--- @param player MapObject 玩家对象
--- @param varName string 变量名称
--- @return integer
function  lualib.GetTempInt(player,varName) end

--- 设置Int变量
--- Int64
--- @param player MapObject 玩家对象
--- @param varName string 变量名称
--- @param value integer 值
--- @param varType VarType 变量周期 默认temp
function  lualib.SetTempInt(player,varName,value,varType) end
function  lualib.SetTempInt(player,varName,value) end
--- 获取String变量
--- @param player MapObject 玩家对象
--- @param varName string 变量名称
--- @return string
function  lualib.GetTempStr(player,varName) end

--- 获取String变量
--- @param player MapObject 玩家对象
--- @param varName string 变量名称
--- @param value string 值
--- @param varType VarType 变量周期 默认temp
function  lualib.SetTempStr(player,varName,value,varType) end
function  lualib.SetTempStr(player,varName,value) end


--- 添加定时器 
--- @param npc MapObject npc对象
--- @param player MapObject 玩家对象||系统system
--- @param timername string 定时器名称
--- @param funcName string 定时器回调函数 (npc,player,timername,curr_count)
--- @param time integer 周期/毫秒
--- @param count integer 次数 执行完成就移除
--- @param turnoff boolean 默认 true
--- @return boolean
--已添加是否覆盖  
function lualib.AddTimer(npc,player,timername,funcName,time,count,turnoff) end
function lualib.AddTimer(npc,player,timername,funcName,time,count) end

--- 删除定时器
--- @param player MapObject 玩家对象||系统system
--- @param timername string 定时器名称
function lualib.DelTimer(player,timername) end

---删除所有定时器
--- @param player MapObject 玩家对象||系统system
function lualib.DelAllTimer(player,timername) end

---开关定时器
--- @param player MapObject 玩家对象||系统system
--- @param timername string 定时器名称
--- @param turnoff boolean 开关
function lualib.SetTimer(player,timername,turnoff) end

---延迟执行
--- @param npc MapObject npc对象
--- @param player MapObject 玩家对象||系统system
--- @param time integer 延迟毫秒数 
--- @param funcName string 回调函数名 (npc,player,param)
--- @param param string 携带参数
function lualib.DelayCall(npc,player,time,funcName,param) end
function lualib.DelayCall(npc,player,time,funcName,param1,param2) end
--- 直接执行
---  @param npc MapObject npc对象
--- @param player MapObject 玩家对象||系统system
--- @param funcName string 回调函数名 (npc,player,param)
--- @param param  string|string[] 携带参数
function lualib.Call(npc,player,funcName,param) end
function lualib.Call(npc,player,funcName,param1,param2) end
--- 添加计划执行 
--- 写代码时注意运行时差问题 比如 因为某些原有系统卡了 00 没执行 那下一秒也得把他补上
--- 参数1为 '14:31:00' 参数2为'' 每日执行  
--- 参数1为 '14:31:00' 参数2为 '2025-05-01' 为指定日期执行
--- 参数1为 '14:31:00' 参数2为 '-1,-2,-3,-4,-5,-6,-7' 周1-7执行
--- 参数1为 '14:31:00' 参数2为 '1,2,3,4,5,6,7,8,9,10,,,31' 按指定天执行
--- @param npc MapObject npc对象
--- @param player MapObject 玩家对象,大多数情况是添加个system 然后 定时对全服角色进行执行
--- @param name string 计划名称
--- @param funcName string 计划回调函数 (npc,player,schedulename)
--- @param param1 string 计划参数1
--- @param param2 string 计划参数2
function lualib.AddSchedule(npc,player,name,funcName,param1,param2) end
function lualib.AddSchedule(npc,player,name,funcName,param1) end

--- 删除计划
--- @param player MapObject 玩家对象
--- @param name string 计划名称
function lualib.DelSchedule(player,name) end




---打开输入框
---@param npc MapObject 
---@param player PlayerObject
---@param funcName string 回调函数
---@param text string 输入框描述
---@param inputType integer 0 文本 1 数字  默认0
---@param btnType integer 0 确定+取消 1 确定 默认0
---@param timeout integer 过期时间/秒 默认0 不过期(但实际会因为其他npc操作而覆盖了funcName的授权)
function lualib.OpenInputBox(npc,player, funcName, text,inputType ,btnType,timeout) end;

---打开仓库对话框
---@param npc MapObject 
---@param player PlayerObject
---@param messages string 选填如果不填需要手动执行一次NPCSay
function lualib.OpenStorageWindow(npc,player,messages) end
function lualib.OpenStorageWindow(npc,player) end

---打开购买对话框 出售玩家||NPC物品
---@param npc MapObject 
---@param player PlayerObject
---@param messages string 选填如果不填需要手动执行一次NPCSay
function lualib.OpenBuyWindow(npc,player,messages) end
function lualib.OpenBuyWindow(npc,player) end

---打开购买对话框 出售NPC物品
---@param npc MapObject 
---@param player PlayerObject
---@param messages string 选填 如果不填需要手动执行一次NPCSay
function lualib.OpenBuyDefaultWindow(npc,player,messages) end
function lualib.OpenBuyDefaultWindow(npc,player) end

---打开购买对话框 出售玩家物品
---@param npc MapObject 
---@param player PlayerObject
---@param messages string 选填 如果不填需要手动执行一次NPCSay
function lualib.OpenBuyUsedWindow(npc,player,messages) end
function lualib.OpenBuyUsedWindow(npc,player) end


---打开出售对话框
---@param npc MapObject 
---@param player PlayerObject
---@param messages string 选填 如果不填需要手动执行一次NPCSay
function lualib.OpenSellWindow(npc,player,messages) end
function lualib.OpenSellWindow(npc,player) end

---打开出售+购买对话框  出售玩家||NPC物品
---@param npc MapObject 
---@param player PlayerObject
---@param messages string 选填 如果不填需要手动执行一次NPCSay
function lualib.OpenBuySellWindow(npc,player,messages) end
function lualib.OpenBuySellWindow(npc,player) end

---打开出售+购买对话框  出售NPC物品
---@param npc MapObject 
---@param player PlayerObject
---@param messages string 选填 如果不填需要手动执行一次NPCSay
function lualib.OpenBuySellDefaultWindow(npc,player,messages) end
function lualib.OpenBuySellDefaultWindow(npc,player) end

---打开回购对话框
---@param messages string 选填 如果不填需要手动执行一次NPCSay
---@@param npc MapObject 
---@param player PlayerObject
function lualib.OpenBuyBackWindow(npc,player,messages) end
function lualib.OpenBuyBackWindow(npc,player) end

---打开修理对话框
---@param npc MapObject 
---@param player PlayerObject
---@param isRepair boolean 是否特修
---@param messages string 选填 如果不填需要手动执行一次NPCSay
function lualib.OpenRepairWindow(npc,player,isRepair,messages) end
function lualib.OpenRepairWindow(npc,player,isRepair) end

---获取修理价格
---@param player MapObject 是否特修
---@param site  integer 装备下标   -1全身
---@param special boolean 是否特修 默认false
---@return integer 
function lualib.GetRepairPrice(player,site,special) end
function lualib.GetRepairPrice(player,site) end
---@param slot integer 装备下标枚举
---@return integer 
function lualib.GetRepairPrice(player,slot,special) end
function lualib.GetRepairPrice(player,slot) end

---修理装备 
---@param player MapObject 是否特修
---@param site  integer 装备下标  -1全修
---@param special boolean 是否特修 默认false
function lualib.Repair(player,site,special) end
function lualib.Repair(player,site) end
---@param slot integer 装备下标枚举
function lualib.Repair(player,slot,special) end
function lualib.Repair(player,slot) end




---打开拍卖行对话框
---@param npc MapObject 
---@param player PlayerObject
---@param messages string 选填 如果不填需要手动执行一次NPCSay
function lualib.OpenMarketWindow(npc,player,messages)  end
function lualib.OpenMarketWindow(npc,player)  end

---打开提交拍卖物品对话框
----@param npc MapObject 
-----@param player PlayerObject
-----@param messages string 选填 如果不填需要手动执行一次NPCSay
--function lualib.OpenConsignWindow(npc,player,messages)  end
--function lualib.OpenConsignWindow(npc,player)  end


---打开工会创建对话框
---@param npc MapObject 
---@param player PlayerObject
---@param messages string 选填 如果不填需要手动执行一次NPCSay
function lualib.OpenGuildCreateWindow(npc,player,messages)  end
function lualib.OpenGuildCreateWindow(npc,player)  end

---打开请求行会战争对话框
---@param npc MapObject 
---@param player PlayerObject
---@param messages string 选填 如果不填需要手动执行一次NPCSay
function lualib.OpenRequestWarWindow(npc,player,messages)  end
function lualib.OpenRequestWarWindow(npc,player)  end

---打开创建英雄对话框
---@param npc MapObject 
---@param player PlayerObject
---@param messages string 选填 如果不填需要手动执行一次NPCSay
function lualib.OpenHeroCreateWindow(npc,player,messages)  end
function lualib.OpenHeroCreateWindow(npc,player)  end

---打开英雄管理对话框
---@param npc MapObject 
---@param player PlayerObject
---@param messages string 选填 如果不填需要手动执行一次NPCSay
function lualib.OpenHeroManageWindow(npc,player,messages)  end
function lualib.OpenHeroManageWindow(npc,player)  end


---打开发送邮件窗口
---@param npc MapObject 
---@param player PlayerObject
---@param messages string 选填 如果不填需要手动执行一次NPCSay
function lualib.OpenSendParcelWindow(npc,player,messages)  end
function lualib.OpenSendParcelWindow(npc,player)  end

---打开接收邮件窗口
---@param npc MapObject 
---@param player PlayerObject
---@param messages string 选填 如果不填需要手动执行一次NPCSay
function lualib.OpenCollectParcelWindow(npc,player,messages)  end
function lualib.OpenCollectParcelWindow(npc,player)  end

---生成怪物 地图范围内随机
---@param mapKey string 地图唯一标识
---@param monsterKey string 怪物唯一标识
---@---@param count integer 怪物数量
---@param log string 操作理由
function  lualib.Mongen(mapKey,monsterKey,count,log) end

---生成怪物 指定坐标范围随机
---@param mapKey string 地图唯一标识
---@param monsterKey string 怪物唯一标识
---@---@param count integer 怪物数量 默认1
---@param x integer 坐标X
---@param y integer 坐标Y
---@param r integer 范围R
---@param log string 操作理由
function  lualib.Mongen(mapKey,monsterKey,count,x,y,r,log) end

---清理地图指定怪物
---@param mapKey string 地图唯一标识 如为nil 则清理地图所有怪物
---@param monsterKey string 怪物唯一标识
---@param log string 日志
function lualib.MonClear(mapKey,monsterKey,log) end

---获取在线玩家
---@param isAlive boolean 默认 true 只获取活人
---@return MapObjects
function lualib.GetOnlinePlayers(isAlive) end

---获取地图内玩家
---@param mapIndex string 地图索引
---@param x integer X 
---@param y integer Y
---@param r integer R
---@param isDummy integer 是否为假人 默认0 不包含假人 1包含假人 2只含假人  
---@param isAlive boolean 默认 true
---@return MapObjects
function lualib.GetMapPlayers(mapIndex, x, y, r,isDummy, isAlive) end

---获取地图内英雄
---@param mapIndex string 地图索引
---@param x integer X 
---@param y integer Y
---@param r integer R
---@return MapObjects
function lualib.GetMapHeros(mapIndex, x, y, r) end

---获取地图内怪物
---只返回活着的
---@param mapIndex string 地图索引
---@param monsterIndex string 怪物索引 如果为'' 则匹配所有怪物
---@param x integer X 
---@param y integer Y
---@param r integer R
---@param includeSlave integer 是否包含宝宝 默认0 不含宝宝 1包含宝宝 2只含宝宝  英雄不算宝宝
---@return MapObjects
function lualib.GetMapMonsters(mapIndex,monsterIndex, x, y, r,includeSlave) end

---获取英雄或宝宝的主人
---@param monster EntityObject
---@return EntityObject
function lualib.GetMaster(monster) end

--02/19新增|编辑

---判断角色名称是否重复
---@param name string  名称
---@return boolean true 重复
function  lualib.CheckNameExist(name) end

---修改角色名称
---@param player MapObject 角色|英雄对象
---@param name string  名称
---@return boolean true 成功
function  lualib.ModifyName(player,name) end

---修改英雄名称
---@param player MapObject 角色
---@param info HeroInfo 英雄数据
---@param name string  名称
---@return boolean true 成功
function  lualib.ModifyName(player,info,name) end

---踢下线
---@param player MapObject 角色
function lualib.Kick(player) end

---获取角色下英雄集合
---@param player MapObject 角色
---@return HeroInfos --英雄数据集合XHeroInfo
function lualib.GetPlayerHeros(player) end

---获取角色公会信息
---@param player MapObject 角色
---@return GuildObject 工会对象
function lualib.GetGuild(player) end

---获取公会信息
---@param name string  公会名称
---@return GuildObject 工会对象
function lualib.GetGuild(name) end

---增加行会经验
---@param guild GuildObject  公会名称
---@param exp integer|number?  公会经验
function lualib.AddGuildExp(guild,exp)  end

---设置行会等级
---@param guild GuildObject  公会名称
---@param lv integer|number?  设置等级
 function lualib.SetGuildLevel(guild,lv) end

---获取伴侣
---@param player MapObject 角色
---@return MapObject
function lualib.GetSpouse(player) end

--02/20新增|编辑
---设置攻击模式
---@param player MapObject
---@param mode AttackMode
---@param lock boolean  锁定状态 锁定后客户端无法调整攻击模式
function lualib.SetAttackMode(player,mode,lock) end
function lualib.SetAttackMode(player,mode) end

---物品呼出NPC对话框操作[已移除]
---function lualib.OpenItemNPCWindow(player,item,funcName) end

--添加buff 可添加自定义属性
---@param target EntityObject 玩家对象 怪物对象
---@param owner EntityObject 施法对象 不填默认为mapObject自己释放
---@param KeyName string buff详细状态 KeyName
---@param duration integer 持续时间 毫秒单位
---@param stackCount integer buff叠加层数 需要[Buff_状态数据]配置可叠加 默认为1   
---@param stats string|nil buff属性  注:自定义buff属性
---@param paramStr string|nil 自定义参数  注:自定义参数
---@param x integer 偏移坐标X
---@param y integer 偏移坐标Y
---@说明 lualib.GiveBuff(player,"最强王者",600,1,"1|15,2|15,14|50,15|50","1|15,2|15,14|50,15|50")
---@ --"1|15'SetpAR(1,15)"
function lualib.GiveBuff(target,owner,KeyName,duration,stackCount,stats,paramStr,x,y) end
function lualib.GiveBuff(target,owner,KeyName,duration,stackCount,stats,paramStr) end
function lualib.GiveBuff(target,owner,KeyName,duration,stackCount,stats) end
function lualib.GiveBuff(target,KeyName,duration,stackCount,stats) end
function lualib.GiveBuff(target,KeyName,duration,stackCount) end
function lualib.GiveBuff(target,KeyName,duration) end



---@class Stats 属性集合 UserItem Buff 角色下都应包含可查询集合 与设置/属性配置表.XLSX对应
---@说明 XStats[1] key访问模式 取得id为1的属性 对应数值 
---@说明 XStats:Get("最小攻击") Name访问模式 取得Name为最小攻击 对应数值 
Stats={}

---@class Buff buff信息
---@field KeyName string buff KeyName
---@field Caster EntityObject buff施加人 
---@field StackCount integer buff当前层数
---@field Infinite boolean buff是否永久
---@field ExpireTime integer buff到期时间
---@field StackMax integer buff最大层数 --不可修改
---@field Stats  Stats 属性集合
---@field this integer this属性访问器 []访问Params自定义参数
---@field Offset Point 偏移坐标
---@field Class BuffClass buff分类
Buff ={}



--编辑角色buff 持续时间和叠加层数 
---@param mapObjcet EntityObject 玩家对象 怪物对象
---@param keyName string buff详细状态 keyName
---@param duration integer 持续时间 分钟单位
---@param stackCount integer buff叠加层数 如果叠加层数为0 视为移除buff
---@param editPoint boolean 是否修改偏移坐标
---@param x integer 偏移坐标X
---@param y integer 偏移坐标Y
function lualib.EditBuff(mapObjcet,keyName,duration,stackCount,editPoint,x,y) end
function lualib.EditBuff(mapObjcet,keyName,duration,stackCount) end
function lualib.EditBuff(mapObjcet,keyName,duration) end

--2025/03/19
---弹出确认框
---@param player EntityObject 玩家对象
---@param context string 文本框显示内容
---@param btnOK string 确认按钮显示内容
---@param OKcallback string 确认按钮回调方法
---@param btnCancel string 取消按钮显示内容
---@param Cancelcalback string 取消按钮回调方法
function lualib.MessageBox(player,context,btnOK,OKcallback,btnCancel,Cancelcalback) end


---2025/03/25
---修改物品极品属性
---@param item UserItem
---@param key integer  --由枚举改为key
---@param value integer
function lualib.SetItemStat(item,key,value) end

---获取物品极品属性
---@param item UserItem
---@param key integer   --由枚举改为key
---@return  integer
function lualib.GetItemStat(item,key) end

--2025/03/28
--- 判断角色背包中是否拥有物品
--- @param player MapObject 玩家对象
--- @param keyName string 物品索引
--- @param itemWhereType ItemWhereType 物品定位枚举
--- @return boolean
function  lualib.CheckItem(player,keyName,itemWhereType) end

---添加技能   --修改keyName 为技能 ID 看是否需要根据名称获取技能? 名称可能存在重复问题
---@param player MapObject 玩家对象 
---@param id integer 技能标识
---@param level integer 技能等级 默认0
---@param log string 操作日志 默认无
---@---@return boolean 是否添加成功
function lualib.AddSkill(player,id,level,log) end
function lualib.AddSkill(player,id,level) end
function lualib.AddSkill(player,id) end

---@param player MapObject 玩家对象 
---@param name string 技能名称 可能存在重复问题
---@param level integer 技能等级 默认0
---@param log string 操作日志 默认无
---@---@return boolean 是否添加成功
function lualib.AddSkill(player,name,level,log) end
function lualib.AddSkill(player,name,level) end
function lualib.AddSkill(player,name) end

---设置技能等级 --修改keyName 为技能 ID  
---@param player MapObject 玩家对象
---@param id integer 技能标识
---@param level integer 技能等级 默认0
---@param log string 操作日志 默认无
---@---@return boolean 是否添加成功
function lualib.SetSkillLevel(player,id,level,log) end
function lualib.SetSkillLevel(player,id,level) end
function lualib.SetSkillLevel(player,id) end

---@param player MapObject 玩家对象
---@param name string 技能名称 可能存在重复问题
---@param level integer 技能等级 默认0
---@param log string 操作日志 默认无
---@---@return boolean 是否添加成功
function lualib.SetSkillLevel(player,name,level,log) end
function lualib.SetSkillLevel(player,name,level) end
function lualib.SetSkillLevel(player,name) end

---删除技能 --修改keyName 为技能 ID  
---@param player MapObject 玩家对象
---@param id integer 技能标识
---@param log string 操作日志
---@return boolean 是否删除
function lualib.DelSkill(player,id,log) end
function lualib.DelSkill(player,id) end
---@param player MapObject 玩家对象
---@param name string 技能名称 可能存在重复问题
---@param log string 操作日志
---@return boolean 是否删除
function lualib.DelSkill(player,name,log) end
function lualib.DelSkill(player,name) end

---获取对象面板参数
---@param entity MapObject|EntityObject
---@param key integer
---@return integer
function lualib.GetObjPanel(entity,key) end

---获取对象属性参数
---@param entity MapObject|EntityObject
---@param key integer
---@return integer
function lualib.GetObjStats(entity,key) end


---直接造成伤害
---@param target MapObject 对象
---@param attacker MapObject 攻击人 
---@param damage integer  伤害数字
---@param DamageType DamageType 飘字类型
function lualib.HPDamage(target,attacker,damage,DamageType) end
---@enum DamageType 
DamageType =
{
    Hit = 0,
    Miss = 1,
    Critical = 2
}




---获取表单值
---@param player MapObject 玩家对象
---@param npc MapObject NPC对象
---@param fromName string 表名
---@param controlName string  控件名
---@param value string 设置值
---@return string
function lualib.SetFormValue(player,npc,fromName,controlName,value) end

---获取物品
---@param player MapObject 玩家对象
---@param npc MapObject NPC对象
---@param fromName string 表名
---@param controlName string  控件名
---@return UserItem
function lualib.GetFormItem(player,npc,fromName,controlName) end

---获取表单值
---@param player MapObject 玩家对象
---@param npc MapObject NPC对象
---@param fromName string 表名
---@param controlName string  控件名
---@return integer
function lualib.GetFormInteger(player,npc,fromName,controlName) end

---获取表单值
---@param player MapObject 玩家对象
---@param npc MapObject NPC对象
---@param fromName string 表名
---@param controlName string  控件名
---@return number
function lualib.GetFormNum(player,npc,fromName,controlName) end

---发送消息给客户端 对表单控件赋值
---@param player MapObject 玩家对象
---@param npc MapObject NPC对象
---@param fromName string 表名
---@param controlName string  控件名
---@param value string 控件值
function lualib.SendFormValue(player,npc,fromName,controlName,value) end


---2025/03/31
---取一个随机数 包含最大值 
---@param min integer
---@param max integer
---@return integer
function lualib.Random(min,max) end

---执行公式计算暴击 
---@param attacker EntityObject|EntityCopy 攻击方
---@param defence EntityObject|EntityCopy 防御方
---@param data SkillData|BaseData 伤害数据 
---如果暴击成功 SkillData.IsCritical 变为true  SkillData.Value会变会暴击伤害值
---SkillData.IsCritical 可以手动赋值为true 结算伤害时根据IsCritical 确定是否触发暴击飘字
---@return boolean 是否暴击 
function lualib.IsCritical(attacker,defence,data) end



---用幸运算法 取属性随机值 例如最小-最大攻击|道术|魔法 
---内置的属性 攻击方都默认通过了幸运算法 
---@param object EntityObject|EntityCopy 对象
---@param min integer 面板key
---@param max integer 面板key
---@return integer 
function lualib.GetLuckPanelPower(object,min,max) end
---不用幸运算法 取属性随机值 例如最小-最大防御|魔抗
---内置的属性 防御方都没走幸运算法
---@param object EntityObject|EntityCopy 对象
---@param min integer 面板key
---@param max integer 面板key
---@return integer 
function lualib.GetPanelPower(object,min,max) end


---2025/04/01 新增加

---修改UserItem名称  --并下发物品名称修改
---@param player EntityObject
---@param UserItem UserItem 物品
---@param name string 名称
function lualib.ReNameItem(player,UserItem,name) end

---刷新角色属性
---@param object EntityObject
---@param send boolean 默认true 是否及时下发属性给客户端
function lualib.RefreshStats(object,send) end

--2025/04/02

---获取两个对象之间的距离
---@param _self EntityObject|MapObject
---@param _target EntityObject|MapObject
---@return integer
function lualib.MaxDistance(_self,_target) end
---获取两点之间的距离
---@param _self Point
---@param _target Point
---@return integer
function lualib.MaxDistance(_self,_target) end

---技能获得经验升级
---@param object EntityObject 对象
---@param id integer 技能id
function lualib.LevelSkillExp(object,id) end

--2025/04/07
---获取技能等级
--function lualib.GetSkillLevel(object,id) end
--function lualib.GetSkillLevel(object,name) end

---2025/04/08
---判断飞行道具是否可以飞向目标 类似火球术
---@param _self EntityObject 自身对象
---@param _target EntityObject 目标对象
---@return boolean 
function lualib.CanFly(_self, _target) end

---目标是否在自身距离范围内
---@param _self EntityObject 自身对象
---@param _target EntityObject 目标对象
---@param range integer 范围
---@return boolean 
function lualib.InRange(_self, _target,range) end

---将目标往对象身边拉近多少距离
---@param _self EntityObject|MapObject 对象
---@param _target EntityObject|MapObject 目标
---@param distance integer 推动距离 默认0 推动到身前
function lualib.CloseTheTarget(_self,_target,distance) end
function lualib.CloseTheTarget(_self,_target) end

---将目标往对象身边推远多少距离
---@param _self EntityObject|MapObject 对象
---@param _target EntityObject|MapObject 目标
---@param distance integer 推动距离
---@param nextBlock boolean 检查下一个是否有障碍对象 默认true
---@param speed integer 推动速度 默认0 0默认为人物跑步速度 怪物移动速度
---@param delay integer 推动延迟 前端表现
function lualib.PushTheTarget(_self,_target,distance,nextBlock,speed,delay) end
function lualib.PushTheTarget(_self,_target,distance,nextBlock,speed) end
function lualib.PushTheTarget(_self,_target,distance,nextBlock) end
function lualib.PushTheTarget(_self,_target,distance) end


---2025-04-09
---@class Point
---@field X integer 坐标X
---@field Y integer 坐标Y
class =
{}

---取目标点身后第index个坐标位置
---@param point Point 坐标对象
---@param dir integer 方向
---@param index integer 后移位标
---@return Point
function lualib.PointMove(point,dir,index) end

---取当前方向的下一个方向
---@param dir integer 方向
---@return integer
function lualib.NextDir(dir) end

---取当前方向的上一个方向
---@param dir integer 方向
---@return integer
function lualib.PreviousDir(dir) end

---取目标点身后第index个坐标位置
---@param map Map 地图对象
---@param point Point 后移位标
---@return boolean
function lualib.ValidPoint(map,point) end

---2025-04-10

---创建一个命中伤害结算延迟方法
---方法结算后 会通过SkillData.Value 对defence进行扣血 如果Value为0 会报miss
---@param defence EntityObject 受伤害方 
---@param attacker EntityObject 攻击方
---@param data BaseData 伤害数据|包含暴击|技能|倍率   ---和上面的方法不一样的 这里是BaseData
---@param index integer 技能位标
---@param x integer 坐标x
---@param y integer 坐标y
---@param delayed integer 延迟时间 默认0 0会立即执行
---@param fucName string lua函数方法名称 默认"HitDamage" delayedtime后会执行lua函数
---@param param  string|integer|number params参数集合 自定义传参
function lualib.HitDamageDelayed(defence,attacker,data,index,x,y,delayed,fucName,param) end
function lualib.HitDamageDelayed(defence,attacker,data,index,x,y,delayed,fucName) end
function lualib.HitDamageDelayed(defence,attacker,data,index,x,y,delayed) end
function lualib.HitDamageDelayed(defence,attacker,data,index,x,y) end

---创建一个命中目标延迟方法
---方法内触发技能效果等操作 注意如果需要结算伤害 需要调用HitDamageDelayed传入SkillData
---@param map Map 地图对象  --- 注意 如果参数传入地图|延迟交给地图执行 角色死亡后技能仍然生效 否者角色死亡后延迟会清空
---@param target EntityObject 施法对象
---@param owner EntityObject 施法人
---@param data BaseData 伤害数据|包含暴击|技能|倍率   ---和上面的方法不一样的 这里是BaseData
---@param index integer 技能位标
---@param x integer 坐标x
---@param y integer 坐标y
---@param delayed integer 延迟时间 默认0 0会立即执行
---@param fucName string lua函数方法名称 默认"HitTarget" delayedtime后会执行lua函数
---@param param  string|integer|number params参数集合 自定义传参
function lualib.HitTargetDelayed(map,target,owner,data,index,x,y,delayed,fucName,param) end
function lualib.HitTargetDelayed(target,owner,data,index,x,y,delayed,fucName,param) end
function lualib.HitTargetDelayed(target,owner,data,index,x,y,delayed,fucName) end
function lualib.HitTargetDelayed(target,owner,data,index,x,y,delayed) end
function lualib.HitTargetDelayed(target,owner,data,index,x,y) end


---创建一个坐标延迟委托 方法会在延迟后根据技能目标抓取坐标内可以作用的对象 触发下一步lua函数
---@param map Map 地图对象  --- 注意 如果参数传入地图|延迟交给地图执行 角色死亡后技能仍然生效 否者角色死亡后延迟会清空
---@param owner EntityObject 施法人
---@param data SkillData|BaseData 伤害数据|包含暴击|技能|倍率
---@param  x integer 坐标x
---@param  y integer 坐标y
---@param dir integer 技能方向
---@param index integer 技能下标
---@param delayed integer 延迟时间 默认0 0会立即执行
---@param pointFuncName string|nil lua函数方法名称 默认为"HitPoint"  技能检测每个坐标会调用一次函数 用于检测地面是否特殊情况
---@param delayFcName string|nil lua函数方法名称 Skill技能默认"HitTarget" Attack技能默认"HitDamage" delayedtime后会执行lua函数
---@param param  string|integer|number params参数集合 自定义传参
function lualib.HitPointDelayed(map,owner,data,x,y,dir,index,delayed,pointFuncName,delayFcName,param) end
function lualib.HitPointDelayed(owner,data,x,y,dir,index,delayed,pointFuncName,delayFcName,param) end
function lualib.HitPointDelayed(owner,data,x,y,dir,index,delayed,pointFuncName,delayFcName) end
function lualib.HitPointDelayed(owner,data,x,y,dir,index,delayed,pointFuncName) end
function lualib.HitPointDelayed(owner,data,x,y,dir,index,delayed) end
function lualib.HitPointDelayed(owner,data,x,y,dir,index) end

---技能传送
---@param target EntityObject 施法人
---@param data SkillData 伤害数据|包含暴击|技能|倍率
---@return boolean
function lualib.SkillTeleport(target,data)  end

---创建一个技能副本 SkillData 需要角色学习技能 否者返回为空
---方法可作用于执行判断时 附加额外的多段伤害或者替换其他技能伤害 
---技能名称需要角色已拥有 获取技能等级为角色技能等级
---@param object EntityObject 获取技能对象 
---@param x integer 技能坐标X
---@param y integer 技能坐标y
---@param keyName string 技能名称
---@return SkillData
function lualib.CreateSkillData(object,x,y,keyName) end
---@param id integer 技能ID
function lualib.CreateSkillData(object,x,y,id) end
---新建一个技能副本 技能与角色无关 凭空创建 只要存在技能即可
---方法可作用于执行判断时 附加额外的多段伤害或者替换其他技能伤害 并且不需要角色已经学习
---@param object EntityObject 获取技能对象 
---@param x integer 技能坐标X
---@param y integer 技能坐标y
---@param keyName string 技能名称
---@param level integer 技能等级
---@return SkillData
function lualib.NewSKillData(object,x,y,keyName,level) end
---@param id integer 技能ID
function lualib.NewSKillData(object,x,y,id,level) end

---2025/04/11
---判断地图是否存在技能物体
---@param map Map 地图
---@param x integer X坐标
---@param y integer Y坐标
---@param id integer  技能ID
function lualib.CheckSpellObject(map,x,y,id) end



---2025/04/14
---在地图上创建技能物体
---@param map Map 地图
---@param data BaseData|SkillData 技能数据包
---@param catster EntityObject 施法对象
---@param x integer X坐标
---@param y integer Y坐标
---@param id integer  技能ID
---@param effectId integer 特效ID
---@param index integer 技能位标
---@param expire integer  物体存在时间毫秒
---@param tick integer 物体检查时间毫秒
---@param startDelay integer 延迟检测时间  ||只是延迟检测 物体已经创建 expire到期后不管是否检测 物体都会移除
---@param show boolean 显示物体
---@param block boolean 技能是否为障碍物 默认否
function lualib.CreateSpellObject(map, data, catster,x, y, id,effectId,index,expire,tick,startDelay,show,block) end
function lualib.CreateSpellObject(map, data, catster,x, y, id,effectId,index,expire,tick,startDelay,show) end
function lualib.CreateSpellObject(map, data, catster,x, y, id,effectId,index,expire,tick,startDelay) end
function lualib.CreateSpellObject(map, data, catster,x, y, id,effectId,index,expire,tick) end

---2025/04/17
---清空技能
---@param object EntityObject
---@param log string
function lualib.ClearSkill(object,log) end
function lualib.ClearSkill(object) end

---清空极品属性|需要手动刷新物品
---@param item UserItem 物品 
function lualib.ClearItemAddStats(item) end

---重新随机极品属性|需要手动刷新物品
---@param item UserItem 物品
---@param map Map 地图
---@param keyName string 怪物名称
function lualib.RandomItemAddStats(item,map,keyName) end


---获取自定装备栏位的物品类型
---@param object EntityObject 角色对象
---@param slot integer 装备栏位
---@return integer -1无装备  0 符  1 绿粉 2 红粉
function lualib.GetEquipSlotShape(object,slot) end

---删除护栏位置物品数量|耐久
---@param object EntityObject 角色对象
---@param slot integer 装备栏位
---@param count integer 消费数量
---@param compulsory boolean 强制扣除 默认false --- 耐久不够扣除剩余耐久 返回成功
---@return boolean 成功  无装备|数量不够 false true消费成功
function lualib.EquipSlotConsumeDura(object,slot,count,compulsory) end
function lualib.EquipSlotConsumeDura(object,slot,count) end

--弃用
--function lualib.EditBuff(mapObjcet,xbuff) end

---2025/04/16
---获取宠物数量
---@param object EntityObject 对象
---@param uid string 怪物Uid 默认nil 为空则查询所有
function lualib.GetPetCount(object,uid) end
function lualib.GetPetCount(object) end
---杀死宠物数量
---@param object EntityObject 对象
---@param uid string 怪物Uid 默认nil 为空则查询所有
---@param count integer 数量 默认杀所有
function lualib.DiePets(object,uid,count) end
function lualib.DiePets(object,uid) end
function lualib.DiePets(object) end
---创建宠物数量
---@param map Map 地图
---@param x integer X坐标
---@param y integer Y坐标
---@param object EntityObject 对象
---@param uid string 怪物Uid
---@param count integer 数量 默认1
---@return EntityObjects
function lualib.CreatePets(map,x,y,object,uid,count) end
function lualib.CreatePets(map,x,y,object,uid) end

---召唤宠物到身边
---@param object EntityObject 对象
---@param uid string 怪物Uid 默认nil 为空则查询所有
function lualib.RecallPets(object,uid) end
function lualib.RecallPets(object) end

---2025/04/18
---显示目标血条
---@param object EntityObject 对象
---@param timer integer 显示时间 秒 
function lualib.BroadcastHealthChange(object,timer) end

---@enum BuffProperty
BuffProperty = 
{
    None = 0,
    RemoveOnDeath = 1,
    RemoveOnExit = 2,
    Debuff = 4,
    PauseInSafeZone = 8,
    AbsoluteTime = 16,
    RemoveOnMap = 32,
}
---删除自定属性枚举buff
---@param object EntityObject 对象
---@param buffProperty BuffProperty 默认删除 debuff BuffProperty.Debuff 
function lualib.RemoveBuffs(object,buffProperty) end
function lualib.RemoveBuffs(object) end

---发送NPC对话框显示消息
---@param npc MapObject
---@param player PlayerObject
---@param messages string  NPC对话消息
function lualib.NPCSay(npc,player,messages) end


---迷惑怪物
---@param object EntityObject 对象为怪物才会生效
---@param time  integer 迷惑时间 毫秒
function lualib.MonsterHallucination(object,time) end

---判断坐标是否安全区
---@param map Map 地图
---@param x integer x坐标
---@param y integer y坐标
---@return boolean 
function lualib.MapSafeZone(map,x,y) end

---移动对象
---@param object EntityObject 对象
---@param point Point 坐标
function lualib.MoveCell(object,point) end
---2025/04/22
---冲撞失败
---@param object EntityObject 对象
function  lualib.DashFail(object) end


---检查坐标内是否有不可移动物品|
---@param map Map 地图
---@param x integer X
---@param y integer Y
function  lualib.HitPointBlock(map,x,y) end

---恐惧怪物
---@param object EntityObject 对象为怪物才会生效
---@param time  integer 恐惧时间 毫秒
function lualib.MonsterShock(object,time) end

---狂暴怪物
---@param object EntityObject 对象为怪物才会生效
---@param time  integer 恐惧时间 毫秒
function lualib.MonsterRage(object,time) end

---设置怪物的主人
---@param master EntityObject 对象
---@param monster EntityObject 对象 必须为Monster
---@param MaxPetLevel integer 最大等级
---@param PetLevel integer 最小等级
function lualib.SetMonsterMaster(master,monster,MaxPetLevel,PetLevel) end

---2025/04/23
---伤害人高亮名称 
---@param object EntityObject 
---@param time  integer 恐惧时间 毫秒
function lualib.SetBrownTime(object,time) end

---狂暴怪物
---@param _self EntityObject 对象为人型Human才会生效
---@param target  EntityObject 对象为人型Human才会生效
function lualib.AtWar(_self,target) end

---设置攻击目标
---@param _self EntityObject 对象
---@param target  EntityObject 对象
function lualib.SetTarget(_self,target) end

---击杀目标
---@param target EntityObject 目标
---@param attacker EntityObject 击杀人
---@param time integer 持续时间--LastHitTime 和 ExpOwnerTime
function lualib.Die(target,attacker,time) end

---2025/04/24
---只返回活着的
---@param map Map 地图
---@param object EntityObject 对象| 用作匹配队友
---@param x integer X 
---@param y integer Y
---@param r integer R
---@param includeGroup integer 是否敌对 默认0友方 1敌方 2所有
---@return MapObjects
function lualib.GetMapMonsters(map,object, x, y, r,includeGroup) end

---2025/04/25
---修改物品
---@param object EntityObject 玩家|英雄
---@param uItem UserItem 物品对象
---@param keyName string 物品唯一ID
function lualib.SetItemInfo(object,uItem,keyName) end

---2025/04/28

---2025/04/29
---
---取攻速收益速度
---@param object EntityObject
---@param speed integer
---@return integer
function lualib.AttackSpeedTime(object,speed) end
---取施法收益速度
---@param object EntityObject
---@param speed integer
---@return integer
function lualib.SpellSpeedTime(object,speed) end
---取移动收益速度
---@param object EntityObject
---@param speed integer
---@return integer
function lualib.WalkSpeedTime(object,speed) end
---取移动收益速度
---@param object EntityObject
---@param speed integer
---@return integer
function lualib.RunSpeedTime(object,speed) end

---获取地图内物体集合
---@param map Map 地图
---@param x integer X坐标
---@param y integer Y坐标
---@param r integer 范围
---@param includeEntity boolean 是否包括entity(怪物|人形)
---@return MapObjects
function lualib.GetMapObjects(map,x,y,r,includeEntity) end

---获取地图内物体集合
---@param map Map 地图
---@param object EntityObject 目标对象 判断敌友
---@param x integer X坐标
---@param y integer Y坐标
---@param r integer 范围
---@param group integer 0-所有 1-友军 2-敌人
---@param findDie boolean 是否查找死亡对象 默认否
---@return EntityObjects
function lualib.GetEntityObjects(map,object,x,y,r,group,findDie) end
function lualib.GetEntityObjects(map,object,x,y,r,group) end


---创建容器对象
---@return EntityObjects
function lualib.CreateEntityObjects() end

---判断目标是否是自己的友军
---@return boolean 
function lualib.IsFriendlyTarget(_self,target) end

---判断目标是否是自己的敌人
---@return boolean 
function lualib.IsAttackTarget(_self,target) end




----2025-05-23  
---函数改动---所有NPC交互方法都添加了参数npc player 
---@enum QuestState 消息类型枚举
QuestState = {
    --None = 0, 不可设置
    CanDo = 1, --任务可接
    Runing = 2,  --任务进行中
    CanFinish = 3, --任务可交
    Success = 4, --任务已完成--默认会跳转到下一子任务或者全完成
    Fail = 5  --任务失败
}
---@class UserQuest 任务类
---@field ID integer 任务线ID 
---@field Success boolean 完成标记 如果完成 子ID为-1
---@field Sort integer 任务子id 当前进度
---@field IState integer 任务状态 对应QuestState枚举值
---@field Group string 任务分组
---@field Name string 任务标题
UserQuest=
{
}
---@class UserQuests 任务类词典集合
---@field Count integer
UserQuests=
{
}

---添加一个全新任务 --添加任务任务默认为可接
---@param player PlayerObject 玩家对象
---@param id integer 任务id
---@param restart boolean 强制刷新任务 默认否
---@param sort integer 子任务id 默认0
function lualib.AddQuest(player,id,restart,sort) end
function lualib.AddQuest(player,id,restart) end
function lualib.AddQuest(player,id) end

---任务执行下一步 可接->进行->可交->完成|下一子任务可接
---@param player PlayerObject 玩家对象
---@param quest UserQuest 任务
function lualib.StepQuest(player,quest) end

---改变当前任务状态
---@param player PlayerObject 玩家对象
---@param quest UserQuest 任务
---@param state QuestState 改变当前任务状态
---@param trigger boolean 是否触发任务脚本 默认是
function lualib.StateQuest(player,quest,state,trigger) end
function lualib.StateQuest(player,quest,state) end

---完成整条任务线
---@param player PlayerObject 玩家对象
---@param quest UserQuest 任务
---@param trigger boolean 是否触发任务脚本 默认是 仅会触发所有子任务的success函数 用以领取奖励
function lualib.EndQuest(player,quest,trigger) end

---删除任务线
---@param player PlayerObject 玩家对象
---@param quest UserQuest 任务
function lualib.RemoveQuest(player,quest) end

---获取角色任务
---@param player PlayerObject 玩家对象
---@param id integer 任务id
---@return UserQuest 角色任务
function lualib.GetQuest(player,id) end

---获取角色任务合集
---@param player PlayerObject 玩家对象
---@return UserQuests 角色任务合集
function lualib.GetQuests(player) end

---查询NPC下玩家可接取任务
---@param player PlayerObject 玩家对象
---@param npc MapObject|NPCObject NPC
---@return UserQuests 角色任务合集
function lualib.GetCanDo(player,npc) end

---查询NPC下玩家可交付任务
---@param player PlayerObject 玩家对象
---@param npc MapObject|NPCObject NPC
---@return UserQuests 角色任务合集
function lualib.GetCanFinish(player,npc) end


--- 2025/05/27
---@enum MirDirection 角色方向枚举
MirDirection = 
{
        --上
        Up = 0, 
        --上右
        UpRight = 1, 
        --右
        Right = 2, 
        --下右
        DownRight = 3, 
        -- 下
        Down = 4,
        --下左
        DownLeft = 5,
        --左
        Left = 6,
        --上左
        UpLeft = 7
}


---@enum LocationType 特效类型枚举
LocationType = 
{
    None = 0, --不使用
    Point = 1,--固定点
    Object = 2,--固定对象
    ObjectDetach = 3 --锁定目标固定点
}




---技能特效
---@param id integer 特效ID
---@param mirDirection integer 方向
---@param delay integer 延迟
---@param sourceType LocationType 来源特效类型
---@param source MapObject 来源对象
---@param targetType LocationType  目标特效类型
---@param target MapObject 目标对象
---@param time integer  特效时间
---@param speed integer 特效加速
function lualib.FlySkillEffect(id, mirDirection, delay,sourceType,source,targetType,target,time,speed) end
function lualib.FlySkillEffect(id, mirDirection, delay,sourceType,source,targetType,target,time) end
function lualib.FlySkillEffect(id, mirDirection, delay,sourceType,source,targetType,target) end

---技能特效
---@param id integer 特效ID
---@param mirDirection integer 方向
---@param delay integer 延迟
---@param map Map 地图对象
---@param source Point 来源坐标
---@param target Point 目标坐标
---@param time integer  特效时间
---@param speed integer 特效加速
function lualib.FlySkillEffect(id, mirDirection, delay,map,source,target,time,speed) end
function lualib.FlySkillEffect(id, mirDirection, delay,map,source,target,time) end
function lualib.FlySkillEffect(id, mirDirection, delay,map,source,target) end

---技能特效
---@param id integer 特效ID
---@param mirDirection integer 方向
---@param delay integer 延迟
---@param sourceType LocationType 来源特效类型
---@param source MapObject 来源对象
---@param target Point 目标坐标
---@param time integer  特效时间
---@param speed integer 特效加速
function lualib.FlySkillEffect(id, mirDirection, delay,sourceType,source,target,time,speed) end
function lualib.FlySkillEffect(id, mirDirection, delay,sourceType,source,target,time) end
function lualib.FlySkillEffect(id, mirDirection, delay,sourceType,source,target) end

---技能特效
---@param id integer 特效ID
---@param mirDirection integer 方向
---@param delay integer 延迟
---@param source Point 来源坐标
---@param targetType LocationType  目标特效类型
---@param target MapObject 目标对象
---@param time integer  特效时间
---@param speed integer 特效加速
function lualib.FlySkillEffect(id, mirDirection, delay,source,target,targetType,time,speed) end
function lualib.FlySkillEffect(id, mirDirection, delay,source,target,targetType,time) end
function lualib.FlySkillEffect(id, mirDirection, delay,source,target,targetType) end
function lualib.FlySkillEffect(id, mirDirection, delay,source,target) end

---技能特效
---@param id integer 特效ID
---@param mirDirection integer 方向
---@param delay integer 延迟
---@param map Map 地图对象
---@param source Point 来源坐标
---@param speed integer 特效加速
function lualib.PointSkillEffect(id, mirDirection, delay,map,source,speed) end
function lualib.PointSkillEffect(id, mirDirection, delay,map,source) end

---comment
---@param id integer 特效ID
---@param mirDirection integer 方向
---@param delay integer 延迟
---@param sourceType LocationType 来源特效类型
---@param source MapObject 来源对象
---@param speed integer 特效加速
function lualib.ObjectSkillEffect(id, mirDirection, delay, source,sourceType,speed) end
function lualib.ObjectSkillEffect(id, mirDirection, delay, source,sourceType) end

---创建坐标
---@param x integer
---@param y integer
---@return Point
function lualib.GetPoint(x,y) end

---根据名称获取特效ID
---@param name string
---@return integer
function lualib.GetEffectID(name) end

---获取特效动画播放时间
---@param id integer 特效Id
---@return integer --返回时间为 (张数-跳过张数)*speed
function lualib.EffectTime(id) end

---2025/06/03
---@enum RankType
RankType =
{
    Panel = 0, --面板属性
    Varrable = 1, --词典int值
}

---排行榜信息
---@class RankPanel
---@field Name string 排行榜名称
---@field IType integer RankType枚举值
---@field Key string 排行数据Key
---@field Limit integer 最低上榜值
---@field Count integer 最大排名数量
---@field Refresh  integer 刷新间隔 毫秒 最低5分钟
RankPanel ={}


---玩家排名信息
---@class Rank
---@field Sort integer 排名
---@field ObjectID integer 角色Uid
---@field Value integer 角色数据值
---@field Name string 角色名称
---@field Class integer 角色职业枚举值
---@field Level  integer 角色等级
Rank ={}

---排行榜玩家排名集合
---@class Ranks
---@field Count integer 集合数量
Ranks={}

---创建排行榜
---@param name string 名称 -唯一ID 如存在名称 无法创建
---@param type RankType 排行类型 
---@param key string Panel为面板Key Varrable为词典Key 为空无法创建
---@param limit integer 最低上榜值 默认0
---@param count integer 排行最大数量 <=0 无法创建
---@param refresh integer 刷新时间 毫秒
---@return boolean 是否创建成功
function lualib.CreateRankPanel(name, type, key, limit, count, refresh) end

---获取排行榜
---@param name string 名称 -唯一ID 
---@return RankPanel 排行榜
function lualib.GetRankPanel(name) end

---删除排行榜
---@param name string 名称 -唯一ID 
function lualib.DeleteRankPanel(name) end

---编辑排行榜
---@param name string 名称 -唯一ID 
---@param limit integer 最低上榜值 默认0
---@param count integer 排行最大数量 <=0 无法创建
---@param refresh integer 刷新时间 毫秒
---@return boolean
function lualib.EditRankPanel(name,limit,count,refresh) end

---立即刷新排行榜
---@param name string 名称 -唯一ID 
function lualib.RefreshRankPanel(name) end

---查询排行-玩家排名
---@param name string 名称 -唯一ID 
---@param _start integer 起始排名 1开始
---@param _end integer 结束排名 
---@return Ranks
function lualib.SelectRankPanel(name,_start,_end) end


---2025/06/06
---添加隐藏装备
---@param object EntityObject IsPlayer|IsHero|IsHuman 人物对象
---@param key integer 装备部位 --不填自动填充
---@param keyName string 物品表唯一ID
---@param active boolean 是否激活 默认激活
---@param send boolean 是否发送前端
---@param isRepeat boolean 是否检查重复装备 默认检查
---@return boolean
function lualib.AddHideEquip(object,key,keyName,active,send,isRepeat) end
function lualib.AddHideEquip(object,key,keyName,active,send) end
function lualib.AddHideEquip(object,key,keyName,active) end
function lualib.AddHideEquip(object,key,keyName) end
function lualib.AddHideEquip(object,keyName,active,send,isRepeat) end
function lualib.AddHideEquip(object,keyName,active,send) end
function lualib.AddHideEquip(object,keyName,active) end
function lualib.AddHideEquip(object,keyName) end
---删除隐藏装备
---@param object EntityObject IsPlayer|IsHero|IsHuman 人物对象
---@param key integer 装备部位
---@return boolean
function lualib.RemoveHideEquip(object,key) end
---删除隐藏装备
---@param object EntityObject IsPlayer|IsHero|IsHuman 人物对象
---@param keyName string 物品表唯一ID
---@param removeAll boolean 删除所有|删除首个 默认删除首个
---@return boolean
function lualib.RemoveHideEquip(object,keyName,removeAll) end
function lualib.RemoveHideEquip(object,keyName) end

---查询隐藏装备集合
---@param object EntityObject IsPlayer|IsHero|IsHuman 人物对象
---@param active boolean 是否查询仅激活物品
---@param keyName string 物品表唯一ID
---@return HideItems
function lualib.GetHideEquips(object,active,keyName) end
function lualib.GetHideEquips(object,active) end
function lualib.GetHideEquips(object) end

---查询隐藏装备集合
---@param object EntityObject IsPlayer|IsHero|IsHuman 人物对象
---@param key integer 装备集合key
---@return HideItem
function lualib.GetHideEquip(object,key) end

---激活隐藏装备
---@param object EntityObject IsPlayer|IsHero|IsHuman 人物对象
---@param key integer 装备集合key
---@param active boolean 激活|取消激活 默认激活
function lualib.ActiveHideEquip(object,key,active) end
function lualib.ActiveHideEquip(object,key) end

---清空隐藏装备附加属性
---@param object EntityObject IsPlayer|IsHero|IsHuman 人物对象
---@param key integer 装备集合key
function lualib.ClearStatsHideEquip(object,key) end

---设置隐藏装备附加属性
---@param object EntityObject IsPlayer|IsHero|IsHuman 人物对象
---@param key integer 装备集合key
---@param statStr string 附加属性字符串 "1|20,2|30"
function lualib.SetStatsHideEquip(object,key,statStr) end

---编辑隐藏装备
---@param object EntityObject IsPlayer|IsHero|IsHuman 人物对象
---@param key integer 装备集合key
---@param send boolean 是否发送客户端
function lualib.EidtHideEquip(object,key,send) end

---@class HideItem
---@field ID integer 物品表IO
---@field AddedStats Stats 物品附加属性
---@field Active boolean 是否激活
---@field Send boolean 是否下发
---@field Info ItemInfo 物品
HideItem ={}

---@class HideItems
---@field Count integer
HideItems ={}

---2025/06/12

---设置物品超时时间  UserItem.ExpireStart  UserItem.ExpireTime 可以获取物品超时时间 和是否开启超时计时
---@param object EntityObject player|Hero
---@param objectID integer UserItem ObjectID
---@param time integer 超时时间 分钟  -1为移除物品超时 
function lualib.SetItemExpire(object,objectID,time) end

---添加隐藏装备部位物品类型 --仅影响外观 不影响属性
---@param object EntityObject player|Hero
---@param type integer 物品类型id
---@param hide boolean 是否隐藏
function lualib.HideItemType(object,type,hide) end

---清隐藏装备部位物品类型集合 显示所有
---@param object EntityObject player|Hero
function lualib.ClearHideItemType(object) end

---获取设置的隐藏装备部位集合
---@param object EntityObject player|Hero
---@return integer[]
function lualib.GetHideItemType(object) end


---2025/06/26
---查询地图
---@param keyName string
---@return Map
function lualib.GetMap(keyName) end
---查询地图
---@param id integer
---@return Map
function lualib.GetMap(id) end

---2025/07/01
---回家命令
---@param player PlayerObject
---@param random boolean 默认false 是否随机传送
function lualib.GoHome(player,random) end
function lualib.GoHome(player) end

---2025/07/03
---查询物品限制
---@param userItem UserItem 物品
---@param type RequiredType 物品限制枚举
---@return integer  返回数据值 
function lualib.ItemRequired(userItem,type)  end
---查询物品属性限制
---@param userItem UserItem 物品
---@param key integer 面板属性ID
---@return integer  返回数据值 
function lualib.ItemRequired(userItem,key)  end

---创建物品给装备
---@param player HumanObject 玩家|英雄
---@param keyName string 物品表KeyName
---@param slot integer 装备栏下标|不支持-1自动索引
---@param verify boolean  默认false  检测是否存在装备 如果栏位存在装备 不会添加
---@return UserItem|nil 成功添加的装备对象 | null
function lualib.GiveEquipment(player,keyName,slot,verify)  end
function lualib.GiveEquipment(player,keyName,slot)  end

---开启装备栏位
---@param player HumanObject 玩家|英雄
---@param slot integer 装备栏位
function lualib.OpenEquipSlot(player,slot)  end
---关闭装备栏位
---@param player HumanObject 玩家|英雄
---@param slot integer 装备栏位
function lualib.CloseEquipSlot(player,slot)  end
---开启所有装备栏位
---@param player HumanObject 玩家|英雄
function lualib.OpenAllEquipSlot(player)  end
---查询栏位是否可穿戴
---@param player HumanObject 玩家|英雄
---@return boolean
function lualib.CanEquipSlot(player,slot)  end
---查询玩家已开启栏位
---@param player HumanObject 玩家|英雄
---@return integer[]
function lualib.GetCanEquipSlots(player)  end

---查询总装备栏位(表配置)
---@return integer[]
function lualib.GetEquipSlots()  end


---2025/07/04
---移除以下函数  通过UserItem获取
---lualib.GetItemCount ---获取物品当前数量 UserItem.Count
---lualib.GetItemMaxCount ---获取物品最大数量 UserItem.MaxCount
---lualib.GetItemDura ---获取物品当前耐久 UserItem.CurrentDura
---lualib.GetItemMaxDura ---获取物品最大耐久 UserItem.MaxDura
---lualib.RemoveEquip ---使用lualib.Take or lualib.TakeByName
---lualib.GetItemsNumber --使用lualib.GetItemsCountByTags or lualib.GetItemsCountByName
---lualib.GetBagItemsCount --使用lualib.GetItemsCountsByTags or GetItemsCountsByName
---lualib.GetBagMaxCount --使用lualib.GetBagSize(player,false,type)
---lualib.GetStorageMaxCount  使用lualib.GetBagSize(player,false,ItemWhereType.Storage)
---lualib.GetEquipmentsCount 使用lualib.GetItemsCountByName
---修改函数
---lualib.ClearBag -> lualib.ClearItemGrid
---lualib.GetBagFristNull ->lualib.GetFristNull
---
---修改物品数量
---@param player EntityObject 玩家对象
---@param item UserItem 物品对象|必须存在player下
---@param count integer 物品数量 修改数量不会大于堆叠|小于等于0删除物品
---@param log string  日志|可空 
function lualib.SetItemCount(player,item,count,log) end
function lualib.SetItemCount(player,item,count) end
---减少物品数量
---@param player EntityObject 玩家对象
---@param item UserItem 物品对象|必须存在player下
---@param count integer 物品减少数量  物品减少到0删除物品
---@param log string  日志|可空 
function lualib.DecItemCount(player,item,count,log) end
function lualib.DecItemCount(player,item,count) end
---增加物品数量
---@param player EntityObject 玩家对象
---@param item UserItem 物品对象|必须存在player下
---@param count integer 物品增加数量  最大不超过堆叠数
---@param log string  日志|可空 
function lualib.IncItemCount(player,item,count,log) end
function lualib.IncItemCount(player,item,count) end

---修改物品耐久
---@param player EntityObject 玩家对象
---@param item UserItem 物品对象
---@param dura integer 耐久
---@param log string 可空 
function lualib.SetItemDura(player,item,dura,log) end
function lualib.SetItemDura(player,item,dura) end
---降低物品耐久
---@param player EntityObject 玩家对象
---@param item UserItem 物品对象
---@param dura integer 耐久
---@param log string 可空 
function lualib.DecItemDura(player,item,dura,log) end
function lualib.DecItemDura(player,item,dura) end
---添加物品耐久
---@param player EntityObject 玩家对象
---@param item UserItem 物品对象
---@param dura integer 耐久
---@param log string 可空 
function lualib.IncItemDura(player,item,dura,log) end
function lualib.IncItemDura(player,item,dura) end

---下标|查询物品 UserItem
---@param player  EntityObject 玩家对象
---@param index integer 物品所在下标
---@param type ItemWhereType 物品所在地址| 默认背包|不可联合查询
---@return UserItem
function lualib.GetItemByIndex(player,index,type) end
function lualib.GetItemByIndex(player,index) end
---唯一ID|查询物品 UserItem
---@param player  EntityObject 玩家对象
---@param objectID integer 物品ObjectID
---@param type ItemWhereType 物品所在地址| 默认背包|可联合查询
---@return UserItem
function lualib.GetItemByObjectID(player,objectID,type) end
function lualib.GetItemByObjectID(player,objectID) end

---tag|查询物品集合 UserItems
---@param player  EntityObject 玩家对象
---@param  tags string 标签集合
---@param type ItemWhereType 物品所在地址| 默认背包|可联合查询
---@return UserItems 
function lualib.GetItemsByTags(player,tags,type) end
function lualib.GetItemsByTags(player,tags) end
---keyname|查询物品集合 UserItems
---@param player  EntityObject 玩家对象
---@param keyname string 物品表KeyName
---@param type ItemWhereType 物品所在地址| 默认背包|可联合查询
---@return UserItems
function lualib.GetItemsByName(player,keyname,type) end
function lualib.GetItemsByName(player,keyname) end

---ItemInfoType|查询物品集合 UserItems
---@param player  EntityObject 玩家对象
---@param infoType integer 物品类型
---@param type ItemWhereType 物品所在地址| 默认背包|可联合查询
---@return UserItems
function lualib.GetItemsByType(player,infoType,type) end
function lualib.GetItemsByType(player,infoType) end

---tag|查询物品总数量
---@param player  EntityObject 玩家对象
---@param  tags string 标签集合 "1,2,3&4"
---@param type ItemWhereType 物品所在地址| 默认背包|可联合查询
---@return integer 
function lualib.GetItemsCountByTags(player,tags,type) end
function lualib.GetItemsCountByTags(player,tags) end

---ItemInfoType|查询物品总数量
---@param player  EntityObject 玩家对象
---@param  infoType integer 物品类型
---@param type ItemWhereType 物品所在地址| 默认背包|可联合查询
---@return integer 
function lualib.GetItemsCountByType(player,infoType,type) end
function lualib.GetItemsCountByType(player,infoType) end

---ItemInfoType|查询物品总数量
---@param player  EntityObject 玩家对象
---@param  class ItemTypeClass 物品类型
---@param type ItemWhereType 物品所在地址| 默认背包|可联合查询
---@return integer 
function lualib.GetItemsCountByType(player,class,type) end
function lualib.GetItemsCountByType(player,class) end

---tag|批量查询物品总数量集合
---@param player  EntityObject 玩家对象
---@param  tags string 标签集合  "1,2,3&4|2,3"
---@param type ItemWhereType 物品所在地址| 默认背包|可联合查询
---@return integer[]
function lualib.GetItemsCountsByTags(player,tags,type) end
function lualib.GetItemsCountsByTags(player,tags) end

---keyname|查询物品总数量
---@param player  EntityObject 玩家对象
---@param keyname string 物品表KeyName
---@param type ItemWhereType 物品所在地址| 默认背包|可联合查询
---@return integer  
function lualib.GetItemsCountByName(player,keyname,type) end
function lualib.GetItemsCountByName(player,keyname) end

---keyname|查询物品总数量
---@param player  EntityObject 玩家对象
---@param keyname string 物品表KeyName "name1,name2,name3"
---@param type ItemWhereType 物品所在地址| 默认背包|可联合查询
---@return integer[]
function lualib.GetItemsCountsByName(player,keyname,type) end
function lualib.GetItemsCountsByName(player,keyname) end


--- 删除物品 -- 返回删除具体数量
--- 删除指定物品
--- @param player MapObject 玩家对象
--- @param userItem UserItem 物品对象
--- @param log string 日志
--- @return integer  删除数量
function  lualib.Take(player,userItem,log) end
function  lualib.Take(player,userItem) end

--- 删除物品-- 返回删除具体数量
--- 删除指定数量|keyName的物品
--- @param player MapObject 玩家对象
--- @param keyName string 物品索引
--- @param count integer 数量
--- @param type ItemWhereType 删除地址 可联合查询|默认背包
--- @param log string 日志
--- @return integer 删除数量
function  lualib.TakeByName(player,keyName,count,type,log) end
function  lualib.TakeByName(player,keyName,count,type) end
function  lualib.TakeByName(player,keyName,count) end

--- 删除物品-- 返回删除具体数量
--- 删除指定数量|物品标签的物品
--- @param player MapObject 玩家对象
--- @param tags string 物品标签
--- @param count integer 数量
--- @param type ItemWhereType 删除地址 可联合查询|默认背包
--- @param log string 日志
--- @return integer 删除数量
function  lualib.TakeByTags(player,tags,count,type,log) end
function  lualib.TakeByTags(player,tags,count,type) end
function  lualib.TakeByTags(player,tags,count) end

---清空角色对应物品包 || 注意会删除对应包的所有物品
---@param object EntityObject 获取技能对象 
---@param type ItemWhereType  清空对象|默认背包 
function  lualib.ClearItemGrid(object,type) end
function  lualib.ClearItemGrid(object) end

--- 获取指定栏位格子数量
--- @param player HumanObject 玩家对象
--- @param empty boolean 默认true 获取背包空格数 false获取最大背包格子数
--- @param type ItemWhereType 位置 默认背包 不可联合查询
--- @return integer 返回格子数量
function  lualib.GetBagSize(player,empty,type) end
function  lualib.GetBagSize(player,empty) end
function  lualib.GetBagSize(player) end
--- 获取第一个空格位置
--- @param player MapObject 玩家对象 查询背包空余
--- @param type  ItemWhereType 指定位置 不可联合查询
--- @param  asc boolean 排序 默认顺序 
--- @return integer 背包空余
function  lualib.GetFristNull(player,type,asc) end
function  lualib.GetFristNull(player,type) end
function  lualib.GetFristNull(player) end


---@enum BuffClass Buff分类枚举
BuffClass =
{
    ---普通buff
    None = 0,
    ---装备buff
    Equipment = 1,
}
--获取角色buff 查看属性 持续时间 状态等
---@param mapObjcet EntityObject 玩家对象 怪物对象
---@param keyName string buff详细状态 keyName
---@param class BuffClass buff分类 默认普通buff
---@return Buff Buff 查询不到为nil
function lualib.GetBuff(mapObjcet,keyName,class) end
function lualib.GetBuff(mapObjcet,keyName) end


---查询是否存在buff
---@param mapObjcet EntityObject 玩家对象 怪物对象
---@param keyName string buff详细状态 keyName
---@param class BuffClass buff分类 默认普通buff
---@return boolean
function lualib.HasBuff(mapObjcet,keyName,class) end
function lualib.HasBuff(mapObjcet,keyName) end

---@class UserSkill 技能类型
---@field Index  integer 技能顺序
---@field ID integer ID
---@field Name string 技能名称
---@field Level integer 技能等级
---@field AddLevel  integer 脚本附加等级
---@field Experience integer 技能当前经验
---@field ExperienceMax integer 技能最大经验
---@field CanUP boolean 是否可自动升下一级
---@field NeedNextLevel integer 升级需要角色等级
---@field MPCost integer MP消耗
---@field HPCost integer HP消耗
UserSkill =
{

}
---查询技能对象
---@param player EntityObject
---@param id integer
---@return UserSkill
function lualib.GetSkill(player,id) end
---查询技能对象
---@param player EntityObject
---@param keyName string 
---@return UserSkill
function lualib.GetSkill(player,keyName) end

---设置技能附加等级
---@param player MapObject 玩家对象
---@param id integer 技能标识
---@param level integer 技能等级 默认0
---@param log string 操作日志 默认无
---@---@return boolean 是否添加成功
function lualib.SetSkillAddLevel(player,id,level,log) end
function lualib.SetSkillAddLevel(player,id,level) end
function lualib.SetSkillAddLevel(player,id) end

---设置技能附加等级
---@param player MapObject 玩家对象
---@param keyName string 技能名称 可能存在重复问题
---@param level integer 技能等级 默认0
---@param log string 操作日志 默认无
---@---@return boolean 是否添加成功
function lualib.SetSkillAddLevel(player,keyName,level,log) end
function lualib.SetSkillAddLevel(player,keyName,level) end
function lualib.SetSkillAddLevel(player,keyName) end


---@enum MirColor 颜色枚举
MirColor=
{
        -- 默认色
        None = 0,
        -- 绿色 |工会战(同工会)|
        Green = 1,
        -- 红色
        Red = 1<<1,
        -- 深红色
        DarkRed = 1<<2,
        -- 紫色
        Purple = 1<<3,
        -- 黄色 PK>=100
        Yellow = 1<<4,
        -- 中紫色
        MediumVioletRed = 1<<5,
        -- 蓝色| 本工会
        Blue = 1<<6,
        -- 灰色
        Gray = 1<<7,
        -- 橙色|工会战(敌工会)|敌对工会
        Orange = 1 << 8,
        -- 鞍棕色 | 攻击色SlateBlue
        SaddleBrown = 1 << 9,
        -- 白色
        White = 1 << 10,
        -- 英雄默认色
        MediumOrchid = 1 << 11,
        -- 宠物等级变色
        Aqua=1<<12,
        -- 宠物等级变色
        Aquamarine = 1<<13,
        -- 宠物等级变色
        LightSeaGreen = 1<<14,
        -- 宠物等级变色
        SlateBlue = 1<<15,
        -- 宠物等级变色
        SteelBlue = 1<<16,
        -- 宠物等级变色
        Navy = 1<<17,
        -- 宠物等级变色
        Peru = 1<<18,
}

---修改临时名称颜色
---@param player EntityObject 玩家
---@param color MirColor 颜色 多颜色组合为轮播
function lualib.ChangeTempNameColor(player,color) end

---修改临时名称 
---@param player EntityObject 玩家
---@param name string 临时名称
function lualib.ChangeTempName(player,name) end

---修改临时外观
---@param player EntityObject 玩家
---@param looks string "屠龙,雷霆战甲,"
function lualib.ChangeTempLooks(player,looks) end

return lualib;    




作者:a475529060  创建时间:2024-12-25 11:32
最后编辑:yilin01  更新时间:2025-08-20 18:55