BUG_LOG = false function buglog(tag, advstr, ...) if BUG_LOG then print(string.format("[%s] %s", tag, string.format(advstr, ...))) end end XXTEA_KEY = "699D448D6D24f7F941E9F6E99F823E18" RESET_TIME = 4 START_RESET_TIME_BASE = 1584316800 + RESET_TIME * 3600 -- 0时区 DAY_SEC = 86400 TIME_ZONE = math.floor(os.difftime(START_RESET_TIME_BASE, os.time(os.date("!*t", START_RESET_TIME_BASE))) / 3600) -- 本地时区 START_RESET_TIME = START_RESET_TIME_BASE - TIME_ZONE * 3600 function weekday(now) local day = math.ceil((now - START_RESET_TIME) % 604800 / 86400) if day == 0 then day = 1 end return day end STRUCT_VERSION = 3 -- 数据结构版本 MAX_ROLE_NUM = 1000000 -- 属性枚举 AttsEnum = { hp = 1, -- 血量 atk = 2, -- 攻击 def = 3, -- 物理防御 hit = 4, -- 命中 miss = 5, -- 闪避 crit = 6, -- 暴击 atkSpeed = 7, -- 攻击速度 critHurt = 8, -- 暴伤 vampire = 9, -- 吸血 pierce = 10, -- 穿透 } --冒险属性 AdvAttsEnum = { hp = 1, -- 血量 atk = 2, -- 攻击 def = 3, -- 物理防御 hit = 4, -- 命中 miss = 5, -- 闪避 } AttsEnumEx = { [1] = "hp", -- 血量 [2] = "atk", -- 攻击 [3] = "def", -- 物理防御 [4] = "hit", -- 命中 [5] = "miss", -- 闪避 [6] = "crit", -- 暴击 [7] = "atkSpeed", -- 攻击速度 [8] = "critHurt", -- 暴伤 [9] = "vampire", -- 吸血 [10] = "pierce", -- 穿透 } TalentAttsEnumEx = { [1] = "atk", [2] = "def", [3] = "hit", [4] = "miss", } ItemType = { Coin = 1, -- 货币&材料(金币、钻石、经验、突破材料等) HeroFragment = 2, -- 角色碎片 HeroFCommon = 3, -- 万能角色碎片(集齐N个,合成同稀有度随机角色) Hero = 4, -- 角色 Head = 5, -- 头像 Material = 6, -- 材料 Box = 7, -- 宝箱(立刻打开) Skin = 8, -- 皮肤 EquipBase = 9, -- 基础装备 Rune = 10, -- 符文 Cuisine = 11, -- 料理(用于增加好感度、贩卖获得金币) Potion = 12, -- 拾荒药剂 TimeBox = 13, -- 时间箱(开启需要时间,随机产出道具) AdvItem = 14, -- 冒险道具 FuncOpen = 15, -- 管理功能开放 SpeedBox = 16, -- 加速箱子 SelectItemBox = 17, -- 自选箱子 CommonPaster = 18, -- 万能贴纸 BossTicket = 20, -- boss挑战门票 Spark = 21, -- 火花 } --在这个里面的会记录的是功能开放 对应类型open 而不是 ID FuncOpenType = { AdvEndless = 2, -- 无尽模式 AdvRelay = 3, -- 中继开放 -- 删掉了 AdvWS = 6, -- 工坊解锁 AdvWheelSurf = 7, -- 抽奖解锁 TimeBoxSlot = 8, -- 时钟箱槽 AdvCount = 9, -- 冒险 次数上限 AdvCountEL = 10, -- 无尽冒险 次数上限 } TypeIsFunc = {} for _, v in pairs(FuncOpenType) do TypeIsFunc[v] = true end -- 关卡通关相关的 功能开放 对应 guide_unlock FuncUnlock = { GetHero = 1, -- 招募 TaskAchiv = 2, -- 任务成就 BonusBattle = 3, -- 奖励关卡 DifficultHang = 4, --困难难度 Tower = 5, -- 电波塔 Diner = 6, -- 餐厅 Pvp = 7, --竞技场 Adv = 8, -- 冒险 } -- 物品起始id ItemStartId = { Hero = 300, -- 英雄 } --常用的物品id的枚举 ItemId = { Gold = 1, -- 金币 Exp = 2, -- 经验 Diamond = 3, -- 钻石 PlayerExp = 4, -- 突破材料 FriendPoint = 5, -- 友情点 BreakCost = 10, -- 突破材料 EquipUp = 11, -- 装备升级材料 DinerCoin = 12, --后勤物资 PvpCoin = 14, --挑战货币 OldCoin = 15, --古代金币 AdvPoint = 16, -- 探险点 DinerSpTask = 20, -- 餐厅任务采购券 LoveBreak = 21, --好感度突破道具 PvpKey = 22, -- pvp钥匙 LunchFragment = 23, RuneFragment = 24, HeroFC = {700, 701, 702, 703}, --通用角色碎片 AdvKey = 80, -- 冒险钥匙 AdvPower = 4701, -- 拾荒体力 CrisisScore = 8010, -- 积分 } TimeReset = { CrossDay = 1, --通用跨天 CrossWeek = 2, --通用跨周 DinerRank = 1, -- 餐厅排行榜 PvpRank = 2, -- pvp排行榜 PvpHight = 11, --高级竞技场 PvpCross = 12, -- 跨服竞技场 PvpShop = 13, -- 竞技场商城 DailyBattle2 = 14, -- 特殊-每日副本(贴纸) DailyBattle1 = 15, -- 特殊-每日副本(装备) DailyBattle3 = 16, -- 特殊-每日副本(时钟箱) DrawType1 = 17, -- 变异 抽卡加成 DrawType2 = 18, -- 通常 抽卡加成 DrawType3 = 19, -- 魔法 抽卡加成 WorkBattle1 = 22, -- 夜间玩法 1 WorkBattle2 = 23, -- 夜间玩法 2 WorkBattle3 = 24, -- 夜间玩法 3 WorkBattle4 = 25, -- 夜间玩法 4 WorkBattle5 = 26, -- 夜间玩法 5 } -- TimeReset 索引数组 TimeResetArray = { "CrossDay", --通用跨天 "CrossWeek", --通用跨周 "DinerRank", -- 餐厅排行榜 "PvpRank", -- pvp排行榜 "PvpHight", --高级竞技场 "PvpCross", -- 跨服竞技场 "PvpShop", -- 竞技场商城 "DailyBattle2", -- 特殊-每日副本(贴纸) "DailyBattle1", -- 特殊-每日副本(装备) "DailyBattle3", -- 特殊-每日副本(时钟箱) "DrawType1", -- 变异 抽卡加成 "DrawType2", -- 通常 抽卡加成 "DrawType3", -- 魔法 抽卡加成 } GuideStep = { AdvGuide = 41, AdvRelay = 42, } --客户端不需要知道这个 AdvSpecialStage = { [1]= "In", [2] = "Out", [3] = "BOSS", [4] = "LinkChoose", [5] = "Exit", [6] = "InOut", [7] = "Diner" } AdvCodeRandomStage = 10 -- 一些功能需要代码强行随机事件 随机到这个地块类型上面 --客户端需要知道这个 AdvEventType = { -- 特殊事件(地块决定) In = -1, --入口 Out = -2, --出口 BOSS = -3, -- boss LinkChoose = -4, -- 连续选择 Exit = -5, -- 中继点专属退出出口 InOut = -6, -- 出入口集合体 Diner = -7, -- 料理台 -- 普通事件(随机) Choose = 1, --选择点 Drop = 2, --物品掉落点 Monster = 3, -- 普通怪 Trader = 4, --商人 Build = 5, --建筑物 Trap = 6, --陷阱 Click = 7, --点击生效 Layer = 8, --切换层的点 } AdvBackEventType = { Reward = 1, --奖励 HpChange = 2, --血量改变 AtkChange = 3, --攻击改变 Buff = 4, --buff 改变 Skill = 5, --释放技能 BaseAttrChange = 6, -- 基础属性变化 Next = 7, --进入下一层 End = 8, -- 结束 BlockChange = 9, -- 块改变 SpChange = 10, --体力改变 Dead = 11, --怪死亡 Trader = 12, -- 召唤商人 Monster = 13, -- 召唤怪物 RelayReward = 14, -- 中级层奖励 Exp = 15, -- 经验飘字 Cost = 16, -- 消耗道具 Trap = 17, --陷阱 Layer = 18, --切换层 MapShow = 19, -- 展示地图 ChooseArtifact = 20, -- 等待选择神器 Use = 21, -- 使用道具 Potion = 22, -- 使用营养剂 Task = 23, --接收任务 Artifact = 24, --获得神器 Level = 25, -- 升级 LinkChooseOver = 26, -- 连锁事件结束 BuffEffect = 27, -- buff 效果 PassiveEffect = 28, -- 被动 效果 ChooseDice = 29, -- 选择点随机效果 NoEffect = 30, -- 没有效果 } AdvScoreType = { Level = 1, Kill = 2, KillBoss = 3, ItemBack = 4, Event = 5, Story = 6, Task = 7, } DinerTask = { SellDish = 1, DishWithGold = 2, SellDishType = 3, DishWithGoldType = 4, SellDishRare = 5, DishWithGoldRare = 6, } SettingEnum = { BgMusic = 1, -- 背景音乐 EffectMusic = 2, -- 音效 CV = 3, -- cv } SettingStatus = { [1] = { [1] = 1, -- 开启 [0] = 1, -- 关闭 ["default"] = 1, -- 默认设置 }, [2] = { [1] = 1, -- 开启 [0] = 1, -- 关闭 ["default"] = 1, -- 默认设置 }, [3] = { [1] = 1, -- 开启 [0] = 1, -- 关闭 ["default"] = 1, -- 默认设置 }, } EMAIL_LIMIT = 50 --邮件最大数量 RedPointTags = { PvpCR = 1, PvpHR = 2, } RefreshType = { RefreshType_Daily = 1, -- 日刷新 RefreshType_Weekly = 2, -- 周刷新 RefreshType_Monthly = 3, -- 月刷新 } CardType = { NormalMonthCard = 1, --普通月卡 SuperMonthCard = 2, --超级月卡 PrivilegeCard = 3, --特权卡 GrowFund = 4, --成长助力 BattleCard = 5, --赛季卡 PaySignCard = 6, -- 付费签到卡 BattlePassCard = 7, -- 探索指令 ActBattleCommandCard = 8, -- 战令活动卡 NormalMonthCardLevelUp = 9, -- 月卡升级 SuperMonthCardLevelUp = 10, -- 超级月卡升级 } ShopPackType = { ActShopPack = 5, -- 活动礼包 } HeroQuality = { N = 1, R = 2, SR = 3, SSR = 4, } MailId = { MonthCard = 201, SuperMonthCard = 202, MonthCardEx = 203, SuperMonthCardEx = 204, BattleCardAward = 210, ActSellFood = 231, ActDrawCard = 232, ActAdvDraw = 233, ActOpenBox = 234, ActSellFoodReward = 221, ActDrawCardReward = 222, ActAdvDrawReward = 223, ActOpenBoxReward = 224, ActItemRecycle = 225, PaySignAward = 241, PayBackAward = 242, CBBackAward = 243, CBBackAward2 = 244, ActivityPoolRet = 280, MyCardBuy = 300, } TriggerEventType = { HangPass = 1, AdvPass = 2, TowerPass = 3, LevelUp = 4, AddNewHero = 5, SSRCount = 6, AfterTs = 7, -- 某时间以后 DrawHeroCnt = 8, -- 每日抽卡次数 Appoint = 0, -- 触发指定id礼包 } DrawCardType = { SpecifyDraw = 1, NormalDraw = 2, FriendDraw = 3 } -- 阵容系统类型 TeamSystemType = { Hang = 1, BonusBattle = 2, Dinner = 4, FriendBattle = 5, } -- 某个功能对其他系统功能的加成类型 SystemBnousType = { TowerBuff = 1, -- 电波塔内战斗开始时获得buff CrusadeTask = 2, -- 讨伐电台任务加速 DinerGet = 3, -- 食材供应商获取速度 DinerLimit = 4, -- 食材供应商上限 DinerSell = 5, -- 料理贩卖速度 DinerPrice = 6, -- 齿轮价格 Adv = 7, -- 代理拾荒获得额外道具 HangTime = 8, -- 挂机时间上限 PvpTicket = 9, -- 每周额外获得竞技场门票数量 SweepReward = 10, -- 奖励关卡每次扫荡额外获得道具 }