---@meta

---@class lualib
lualib={}

---@clss Ref
Ref={}

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

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

}
---@class XHeroInfo 英雄对象信息
---@field Index integer  
---@field Name string
---@field Level integer
---@field Class integer
---@field Gender integer
---@field CurrentHero boolean
XHeroInfo = 
{

}
---@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,site) 返回 boolean 确认是否掉落 site掉落部位 -1 怪物||背包  0~x 装备栏部位

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

    ChangeHP    =   15; --血量变化时触发(target)
    GetExp      =   16; --活得经验(player,num)
    LevelUp     =   17; --升级触发 (player)
    --BuffTime    = 19; -- (player,buff) 
    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;  --角色进入地图前触发
        --诅咒前触发
    BeforeUnLuck = 24; --(player,weapon) -- return false 阻止诅咒  默认不阻止
    --挖矿触发
    Mining = 27;--(player) --挖矿时触发  位于矿区进行挖矿 判断产出前触发
    --挖到矿触发
    DigUpMineral =28;--(player,item) --挖到矿时触发
    PickUp = 29; --(player,item) --拾取触发

    AddItemSet = 30; -- 新套装效果触发(player,BuffID,count)
    DelItemSet = 31, -- 移除套装效果触发 (player,BuffID,count)

    --角色 怪物触发器 参数monster或character
    DieDropItem = 100; --掉落物品(MapObject,userItem)   返回 boolean 确认是否掉落
    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,    --查询仓库
    QuestInventory = 8, --查询任务背包 
    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| ItemWhereType.QuestInventory  --查询所有 15
    -- 如果需要查询其他组合 可以传递参数 例如  ItemWhereType.Bag | ItemWhereType.QuestInventory  或者直接传 9
}
---@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 BuffType buff
BuffType =
{
    None = 0,
    --Magics
    TemporalFlux = 1,
    Hiding = 2,
    Haste = 3,
    SwiftFeet = 4,
    Fury = 5,
    SoulShield = 6,
    BlessedArmour = 7,
    LightBody = 8,
    UltimateEnhancer = 9,
    ProtectionField = 10,
    Rage = 11,
    Curse = 12,
    MoonLight = 13,
    DarkBody = 14,
    Concentration = 15,
    VampireShot = 16,
    PoisonShot = 17,
    CounterAttack = 18,
    MentalState = 19,
    EnergyShield = 20,
    MagicBooster = 21,
    PetEnhancer = 22,
    ImmortalSkin = 23,
    MagicShield = 24,
    ElementalBarrier = 25,

    --Monster
    HornedArcherBuff = 50,
    ColdArcherBuff = 51,
    GeneralMeowMeowShield = 52,
    RhinoPriestDebuff = 53,
    PowerBeadBuff = 54,
    HornedWarriorShield = 55,
    HornedCommanderShield = 56,
    Blindness = 57,

    --Special
    GameMaster = 100,
    General = 101,
    Exp = 102,
    Drop = 103,
    Gold = 104,
    BagWeight = 105,
    Transform = 106,
    Lover = 107,
    Mentee = 108,
    Mentor = 109,
    Guild = 110,
    Prison = 111,
    Rested = 112,
    Skill = 113,
    ClearRing = 114,
    Newbie = 115,

    --Stats
    Impact = 200,
    Magic = 201,
    Taoist = 202,
    Storm = 203,
    HealthAid = 204,
    ManaAid = 205,
    Defence = 206,
    MagicDefence = 207,
    WonderDrug = 208,
    Knapsack = 209,
}

---@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 EquipmentSlot 装备位置枚举
EquipmentSlot = 
{
    Weapon = 0, 
    Armour = 1,
    Helmet = 2,
    Torch = 3,
    Necklace = 4,
    BraceletL = 5,
    BraceletR = 6,
    RingL = 7,
    RingR = 8,
    Amulet = 9,
    Belt = 10,
    Boots = 11,
    Stone = 12,
    Mount = 13
}

---@enum Stat 附加属性枚举 物品
Stat = 
{
    MinAC = 0,
    MaxAC = 1,
    MinMAC = 2,
    MaxMAC = 3,
    MinDC = 4,
    MaxDC = 5,
    MinMC = 6,
    MaxMC = 7,
    MinSC = 8,
    MaxSC = 9,
    Accuracy = 10,
    Agility = 11,
    HP = 12,
    MP = 13,
    AttackSpeed = 14,
    Luck = 15,
    BagWeight = 16,
    HandWeight = 17,
    WearWeight = 18,
    Reflect = 19,
    Strong = 20,
    Holy = 21,
    Freezing = 22,
    PoisonAttack = 23,
    MagicResist = 30,
    PoisonResist = 31,
    HealthRecovery = 32,
    SpellRecovery = 33,
    PoisonRecovery = 34, 
    CriticalRate = 35,
    CriticalDamage = 36,
    MaxACRatePercent = 40,
    MaxMACRatePercent = 41,
    MaxDCRatePercent = 42,
    MaxMCRatePercent = 43,
    MaxSCRatePercent = 44,
    AttackSpeedRatePercent = 45,
    HPRatePercent = 46,
    MPRatePercent = 47,
    HPDrainRatePercent = 48,
    ExpRatePercent = 100,
    ItemDropRatePercent = 101,
    GoldDropRatePercent = 102,
    MineRatePercent = 103,
    GemRatePercent = 104,
    FishRatePercent = 105,
    CraftRatePercent = 106,
    SkillGainMultiplier = 107,
    AttackBonus = 108,
    LoverExpRatePercent = 120,
    MentorDamageRatePercent = 121,
    MentorExpRatePercent = 123,
    DamageReductionPercent = 124,
    EnergyShieldPercent = 125,
    EnergyShieldHPGain = 126,
    ManaPenaltyPercent = 127,
    TeleportManaPenaltyPercent = 128,
    Hero = 129,
    Unknown = 255
}

---@class MapObject
---@field Name  string # 名称
---@field MapName string # 当前地图名称
---@field X integer #当前地图X坐标
---@field Y integer #当前地图Y坐标
system = {}
---@class MapObject
npc = {}
---@class MapObject
Item={}

---@class EntityObject  -> MapObject  monster|player|hero
---@field Name  string # 名称
---@field MapName string # 当前地图名称
---@field X integer #当前地图X坐标
---@field Y integer #当前地图Y坐标
---@field HP integer  # 当前血量
---@field MaxHP integer # 最大血量
---@field PercentHealth integer  # 当前血量百分比 不含%
---@field MP integer # 当前蓝量
---@field MaxMP integer # 最大蓝量
---@field Exp integer # 当前经验值
---@field MaxExp integer # 当前最大经验值
---@field Lv integer # --等级
---@field Gold integer #金币数量
---@field  PK  integer PK点
---@field  Gender  integer  性别   男性 = 0, 女性 = 1
---@field  int MirClass 职业枚举编号
entity = {}
---@class EntityObject 
player = {}
---@class EntityObject
monster = {}
---@class EntityObject
hero = {}

---@class AttackData
---@field Damage integer 伤害
AttackData = {}

---@class UserItem
---@field UniqueID integer 物品ID 
---@field Name string 物品唯一标识
---@field Count integer 物品数量
---@field Id integer  物品ID
---@field Grade integer 稀有度
---@field Type integer  类型
---@field ItemInfo XItemInfo  类型
userItem ={}



---@class XItemInfo  --物品基本数据
---@field  Index integer
---@field  UniqueID string
---@field  Name string
---@field  ToolTip string
---@field  Type integer
---@field  Grade integer
---@field  RequiredType integer
---@field  RequiredClass integer
---@field  RequiredGender integer
---@field  Set integer
---@field  Bind integer
---@field  Unique integer
---@field  Price integer
---@field  Shape integer
---@field  Image integer 
---@field  Durability integer
---@field  StackSize integer
---@field  Weight integer
---@field  Light integer
---@field  RequiredAmount integer
---@field  Effect integer
---@field  Slots integer
---@field  RandomStatsId integer
---@field  StartItem boolean
---@field  NeedIdentify boolean
---@field  ShowGroupPickup boolean
---@field  GlobalDropNotify boolean
---@field  ClassBased boolean
---@field  LevelBased boolean
---@field  CanMine boolean
---@field  CanFastRun boolean
---@field  CanAwakening boolean
---@field  ScriptCD integer
---@field  ScriptFile string
---@field  IsConsumable boolean
---@field  IsFishingRod boolean
---@field  FriendlyName string
XItemInfo={}


---@class Map
---@field Name  string # 名称
---@field W   integer # 宽度
---@field H  integer # 高度
map = {}

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

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

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

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

---声音?
--- @param player MapObject 玩家对象
--- @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 uniqueStr string [] 选填 支持多行文本  "uniqueID1,count","uniqueID2,count"
--例 lualib.SendMail(player , "GM" , "系统" , "99" , "测试使用" , "终极开天,5" , "随机传送卷,38" , "雷霆战戒" , "修复神水")
function lualib.SendMail(player,title,msg,goldstr,log,uniqueStr) 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 itemstr string  物品+数量 拼接字符串  "uniqueID1,count|uniqueID2,count|uniqueID3"
---@param goldstr string 金币数量
---@param log string 日志
---@param Split string 切割符 --默认|
--例 lualib.SendMailSplit(player, "GM", "系统", "99" , "终极开天,5|随机传送卷,38|雷霆战戒|修复神水","|" , "测试使用")
function lualib.SendMailSplit(player,title,msg,itemstr,goldstr,log,Split) end
function lualib.SendMailSplit(player,title,msg,itemstr,goldstr,log) end
function lualib.SendMailSplit(player,title,msg,itemstr,goldstr) end
function lualib.SendMailSplit(player,title,msg,itemstr) end

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

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

--- 添加金币
--- @param player MapObject 玩家对象
--- @param gold integer 数量
--- @param log string 日志
function lualib.AddGold(player,gold,log) end
function lualib.AddGold(player,gold) end

--- 删除金币
--- @param player MapObject 玩家对象
--- @param gold integer 数量
--- @param log string 日志
function lualib.DelGold(player,gold,log) end
function lualib.DelGold(player,gold) end


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

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

--- 查询货币
--- @param player MapObject 玩家对象
--- @return integer 数量
function lualib.GetCredit(player) 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 value integer 数量
--- @param log string 日志
function lualib.GivePearls(player,value,log) end
function lualib.GivePearls(player,value) end

--- 删除货币
--- @param player MapObject 玩家对象
--- @param value integer 数量
--- @param log string 日志
function lualib.TakePearls(player,value,log) end
function lualib.TakePearls(player,value) 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 uniqueID string   怪物唯一标识
---@param level integer 等级 不填默认1
---@param count integer 数量 不填默认1
function lualib.GivePet(player,uniqueID,level,count)  end
function lualib.GivePet(player,uniqueID,level)  end
function lualib.GivePet(player,uniqueID) end
---清空宠物
---@param player MapObject  玩家对象
---@param uniqueID string   怪物唯一标识 如不填则清空所有宠物
function lualib.RemovePets(player,uniqueID)  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 MapObject 玩家对象
--- @param mapUniqueID string 地图索引
--- @param x integer X
--- @param y integer Y
--- @param r integer 范围
function lualib.Move(player,mapUniqueID,x,y,r) end

--- 随机传送
--- @param player MapObject 玩家对象
--- @param mapUniqueID string 地图索引
function lualib.Move(player,mapUniqueID) end

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

--- 调整角色等级
--- @param player MapObject 玩家对象
--- @param lv integer 等级
--- @param log string 日志
function lualib.SetLevel(player, lv,log) end
function lualib.SetLevel(player, lv) end
---升级开关
---@param player MapObject 玩家对象
---@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 player MapObject 玩家对象
---@param uniqueID string 技能标识
---@param level integer 技能等级 默认0
---@param log string 操作日志 默认无
---@---@return boolean 是否添加成功
function lualib.AddSkill(player,uniqueID,level,log) end
function lualib.AddSkill(player,uniqueID,level) end
function lualib.AddSkill(player,uniqueID) end

---设置技能等级
---@param player MapObject 玩家对象
---@param uniqueID string 技能标识
---@param level integer 技能等级 默认0
---@param log string 操作日志 默认无
---@---@return boolean 是否添加成功
function lualib.SetSkillLevel(player,uniqueID,level,log) end
function lualib.SetSkillLevel(player,uniqueID,level) end
function lualib.SetSkillLevel(player,uniqueID) end
---删除技能
---@param player MapObject 玩家对象
---@param uniqueID string 技能标识
---@param log string 操作日志
---@return boolean 是否删除
function lualib.DelSkill(player,uniqueID,log) end
function lualib.DelSkill(player,uniqueID) 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 MapObject 玩家对象 怪物对象
---@param uniqueID string buff详细状态 uniqueID
---@param duration integer 持续时间 分钟单位
function lualib.GiveBuff(mapObjcet,uniqueID,duration) end

---查询是否存在buff
---@param mapObjcet MapObject 玩家对象 怪物对象
---@param uniqueID string buff详细状态 uniqueID
---@return boolean
function lualib.HasBuff(mapObjcet,uniqueID) end

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

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

---刷新水平等级效果?LevelEffects
---@param player MapObject 玩家对象
function lualib.RefreshEffects(player) end

---婚戒
---@param player MapObject 玩家对象
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 UniqueID string 怪物ID
function lualib.Drop(Player,UniqueID) end

--- 创建物品掉落
--- @param mapobject MapObject 如果为System则系统掉落 如果为Player或者Monster则为物品掉落
--- @param itemUniqueID string 物品唯一ID
--- @param mapUniqueID 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(mapobject,itemUniqueID,mapUniqueID,x,y,r,owner,ownerTime,log) end

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

--- 给物品
--- 将角色背包物品添加给角色
--- @param player MapObject 玩家对象
--- @param userItem UserItem 物品对象
--- @param log string 日志
--- @return boolean
function lualib.Give(player,userItem,log) end
function lualib.Give(player,userItem) end
--- 给物品
--- 创建角色物品添加给角色背包
--- @param player MapObject 玩家对象
--- @param itemUniqueID string 物品索引
--- @param count integer 数量
--- @param log string 日志
--- @return UserItem
function lualib.Give(player,itemUniqueID,count,log)   end
function lualib.Give(player,itemUniqueID,count)   end
--- 删除物品
--- 删除指定UniqueID的角色背包物品
--- @param player MapObject 玩家对象
--- @param itemUniqueID string 物品索引
--- @param count integer 数量
--- @param log string 日志
--- @return boolean
function  lualib.Take(player,itemUniqueID,count,log) end
function  lualib.Take(player,itemUniqueID,count) end
--- 删除物品
--- 删除指定物品 --
--- @param player MapObject 玩家对象
--- @param userItem UserItem 物品对象
--- @param log string 日志
--- @return boolean
function  lualib.Take(player,userItem,log) end
function  lualib.Take(player,userItem) end
--- 判断角色背包中是否拥有物品
--- @param player MapObject 玩家对象
--- @param itemUniqueID string 物品索引
--- @param itemWhereType ItemWhereType 物品定位枚举
--- @return boolean
function  lualib.HasItem(player,itemUniqueID,itemWhereType) end

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


---获取物品
---@param userItem UserItem
---@return XItemInfo
function lualib.GetItemInfo(userItem) end

---获取物品
---@param player MapObject
---@param itemIndex string 如为'' 则不判断itemIndex
---@param itemWhereType ItemWhereType 遍历位置
---@return UserItems
function lualib.GetItems(player,itemIndex,itemWhereType) end

--- 判断角色背包中是否拥有物品
--- @param player MapObject 玩家对象
--- @param site integer 物品下标  0~x 装备栏物品下标  -1~-x 背包栏下标
--- @return UserItem
function  lualib.GetBoxItem(player,site) end

--- 使用物品
--- @param player MapObject 玩家对象
--- @param itemUniqueID string 物品索引
--- @return boolean
function lualib.UseItem(player, itemUniqueID) 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 item UserItem
---@param stat Stat
---@param value integer
function lualib.SetItemStat(item, stat , value) end

---获取物品极品属性
---@param item UserItem
---@param stat Stat
---@return  integer
function lualib.GetItemStat(item,stat) end

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

--- 获取背包空格
--- @param player MapObject 玩家对象 查询背包空余
--- @param empty boolean 默认true 获取背包空格数 false获取最大背包格子数
--- @return integer 背包空余
function  lualib.GetBagSize(player,empty) end

--- 获取背包第一个空格位置
--- @param player MapObject 玩家对象 查询背包空余
--- @param empty boolean 默认true 背包第一个空格下标  false 获取最后一个空格下标
--- @return integer 背包空余
function  lualib.GetBagFristNull(player,empty) end


--- 获取角色背包中物品数量
--- @param player MapObject 玩家对象
--- @param itemUniqueID string 物品索引
--- @return integer
function  lualib.GetItemsNumber(player,itemUniqueID) end

--- 获取角色背包中物品数量
--- @param player MapObject 玩家对象
--- @param itemUniqueID string 物品索引
--- @return integer[]
function  lualib.GetBagItemsCount(player,itemUniqueID) end

--- 模糊匹配装备数量
--- @param player MapObject 玩家对象
--- @param name string 物品索引  判断包含名称
--- @return integer
function  lualib.GetEquipmentsCount(player,name) end 
---扩充背包
---@param player MapObject
---@param site integer
---@return integer
--英雄最大 42  角色最大86
function lualib.AddBag(player, site) end


---获取背包格子数
---@param player MapObject
---@return integer
function lualib.GetBagMaxCount(player) end


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

---获取仓库格子数
---@param player MapObject 玩家对象
---@return integer
function lualib.GetStorageMaxCount(player) end

---脱装备
---@param player MapObject 玩家对象
---@param slot string 部位名称
--- Weapon,Armour,Helmet,Torch,Necklace,BraceletL,BraceletR,RingL,RingR,Amulet,Belt,Boots,Stone,Mount
function lualib.UnequipItem(player,slot) end
function lualib.UnequipItem(player) end  --全脱

---删除装备
---@param player MapObject 玩家对象
---@param ItemName string 装备名称
---@param isTrigger boolean 是否触发触发器 默认true
---@param site integer 装备位置 不填默认根据名称查询第一个装备
function lualib.RemoveEquip(player,ItemName,isTrigger,site) end
function lualib.RemoveEquip(player,ItemName,isTrigger) end
function lualib.RemoveEquip(player,ItemName) end
--- 穿装备
--- 如部位已有装备则脱下原有装备
--- 戒指手镯位 自动优先穿到空位上 如无空位,也没指定部位 则循环穿戴左右
--- @param player MapObject 玩家对象
--- @param itemUniqueID string 物品索引
--- @param useTrigger boolean 是否触发 默认 true
--- @param site integer 指定部位 默认值0 自动判断部位 (
--- @return boolean
function lualib.TakeOn(player, itemUniqueID,useTrigger,site) end 
function lualib.TakeOn(player, itemUniqueID,site) end 
function lualib.TakeOn(player, itemUniqueID) 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 itemUniqueID string 物品索引
--- @param useTrigger boolean 是否触发 默认 true
--- @param site integer 指定部位 默认值0 自动判断部位
--- @return boolean
function lualib.TakeOff(player, itemUniqueID,useTrigger,site) end 

--- 脱装备
--- @param player MapObject 玩家对象
--- @param itemUniqueID string 物品索引
--- @return boolean
function lualib.TakeOff(player, itemUniqueID) 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 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(player,timername,funcName,time,count,turnoff) end
function lualib.AddTimer(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 player MapObject 玩家对象||系统system
--- @param time integer 延迟毫秒数 
--- @param funcName string 回调函数名 (npc,player,param)
--- @param param string 携带参数
function lualib.DelayCall(player,time,funcName,param) end

--- 直接执行
--- @param player MapObject 玩家对象||系统system
--- @param funcName string 回调函数名 (npc,player,param)
--- @param param string 携带参数
function lualib.Call(player,funcName,param) 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 player MapObject 玩家对象,大多数情况是添加个system 然后 定时对全服角色进行执行
--- @param name string 计划名称
--- @param funcName string 计划回调函数 (npc,player,schedulename)
--- @param param1 string 计划参数1
--- @param param2 string 计划参数2
function lualib.AddSchedule(player,name,funcName,param1,param2) end
function lualib.AddSchedule(player,name,funcName,param1) end

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

---发送NPC对话框显示消息 \n分行符
---@param messages string 
function lualib.NPCSay(messages) end


---打开输入框
---@param player MapObject
---@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(player, funcName, text,inputType ,btnType,timeout) end;

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

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

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

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

---打开购买对话框 出售NPC物品 使用特殊货币购买
---@param messages string [选填] 如果不填需要手动执行一次NPCSay
function lualib.OpenPearlBuyWindow(messages) end
function lualib.OpenPearlBuyWindow() end

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

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

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

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

---打开修理对话框
---@param isRepair boolean 是否特修
---@param messages string [选填] 如果不填需要手动执行一次NPCSay
function lualib.OpenRepairWindow(isRepair,messages) end
function lualib.OpenRepairWindow(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 equipmentSlot EquipmentSlot 装备下标枚举
---@return integer 
function lualib.GetRepairPrice(player,equipmentSlot,special) end
function lualib.GetRepairPrice(player,equipmentSlot) 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 equipmentSlot EquipmentSlot 装备下标枚举
function lualib.Repair(player,equipmentSlot,special) end
function lualib.Repair(player,equipmentSlot) end

---打开合成对话框
---@param messages string [选填] 如果不填需要手动执行一次NPCSay
function lualib.OpenCraftWindow(messages)  end
function lualib.OpenCraftWindow()  end


---打开觉醒升级对话框
---@param messages string [选填] 如果不填需要手动执行一次NPCSay
function lualib.OpenAwakeningWindow(messages)  end
function lualib.OpenAwakeningWindow()  end

--打开拆卸对话框
function lualib.OpenDisassembleWindow(messages)   end
function lualib.OpenDisassembleWindow()   end

--打开降级对话框
function lualib.OpenDowngradeWindow(messages)   end
function lualib.OpenDowngradeWindow()   end

--打开重置对话框
function lualib.OpenResetWindow(messages)   end
function lualib.OpenResetWindow()   end



---打开精炼对话框
---@param messages string [选填] 如果不填需要手动执行一次NPCSay
function lualib.OpenRefineWindow(messages)  end
function lualib.OpenRefineWindow()  end

--检查精炼命令 
---@param messages string [选填] 如果不填需要手动执行一次NPCSay
function lualib.OpenRefineCheckWindow(messages) end
function lualib.OpenRefineCheckWindow() end


--取回精炼物品
---@param messages string [选填] 如果不填需要手动执行一次NPCSay
---@return UserItem  取回的物品
function lualib.RefineCollect(messages) end
function lualib.RefineCollect() end

---打开交易行对话框
---@param messages string [选填] 如果不填需要手动执行一次NPCSay
function lualib.OpenMarketWindow(messages)  end
function lualib.OpenMarketWindow()  end

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


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

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

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

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

---更换婚戒
---@param messages string [选填] 如果不填需要手动执行一次NPCSay
function lualib.ReplaceWedRing(messages)  end
function lualib.ReplaceWedRing()  end

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

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

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

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

---清理地图指定怪物
---@param monsterUniqueID string 怪物唯一标识
---@param mapUniqueID string 地图唯一标识 如为nil 则清理地图所有怪物
---@param log string 日志
function lualib.MonClear(mapUniqueID,monsterUniqueID,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 XHeroInfo 英雄数据
---@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  公会经验
function lualib.AddGuildExp(guild,exp)  end

---设置行会等级
---@param guild GuildObject  公会名称
---@param lv integer  设置等级
 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对话框操作
---@param player MapObject 角色对象
---@param item UserItem UserItem对象
---@param funcName string 调用Lua名称的方法
---@说明 lualib.OpenItemNPCWindow(player,userItem,"systemmain")  需要创建一个systemmian方法 里面有相应的NPC对话
function lualib.OpenItemNPCWindow(player,item,funcName) end

--添加buff 可添加自定义属性
---@param mapObject MapObject 玩家对象 怪物对象
---@param caster MapObject 施法对象 不填默认为mapObject自己释放
---@param uniqueID string buff详细状态 uniqueID
---@param duration integer 持续时间 分钟单位
---@param stackCount integer buff叠加层数 需要[Buff_状态数据]配置可叠加 默认为1   
---@param stats string buff属性  注:自定义buff属性 需要[Buff_状态数据]里面不填Stats栏
---@param panels string buff属性  注:自定义panel属性 需要[Buff_状态数据]里面不填panels栏
---@说明 lualib.GiveBuff(player,"最强王者",600,1,"1|15,2|15,14|50,15|50","1|15,2|15,14|50,15|50")
function lualib.GiveBuff(mapObject,caster,uniqueID,duration,stackCount,stats,panels) end
function lualib.GiveBuff(mapObject,caster,uniqueID,duration,stackCount,stats) end
function lualib.GiveBuff(mapObject,uniqueID,duration,stackCount,stats) end
function lualib.GiveBuff(mapObject,uniqueID,duration,stackCount) end

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

---@class XBuff buff信息
---@field Name string buff名称
---@field ExpireTime integer buff持续时间 
---@field StackCount integer buff当前层数
---@field StackMax integer buff最大层数
---@field XStats  XStats 属性集合
XBuff ={}

--获取角色buff 查看属性 持续时间 状态等
---@param mapObjcet MapObject 玩家对象 怪物对象
---@param uniqueID string buff详细状态 uniqueID
---@return XBuff XBuff 查询不到为nil
function lualib.GetBuff(mapObjcet,uniqueID) end

--编辑角色buff 持续时间和叠加层数 
---@param mapObjcet MapObject 玩家对象 怪物对象
---@param uniqueID string buff详细状态 uniqueID
---@param duration integer 持续时间 分钟单位
---@param stackCount integer buff叠加层数 如果叠加层数为0 视为移除buff
function lualib.EditBuff(mapObjcet,uniqueID,duration,stackCount) end
function lualib.EditBuff(mapObjcet,uniqueID,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

return lualib;




作者:admin  创建时间:2024-12-30 15:06
最后编辑:yilin01  更新时间:2025-08-20 18:55