123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357 |
- // Package msg
- // 一个错误编号表示唯一一个错误发生地点
- // 错误编号格式:顺序号*1000000 + 程序编号*1000 + 模块编号
- // 模块内函数发生错误,编号:1-100
- // 特定错误,编号:101-200
- // 其他地方发生错误,占用地址列表
- // 1、
- package errorcoder
- // ErrorCode 结构体表示错误编码
- type ErrorCoder struct {
- ProgramID int64
- ModuleID int64
- }
- // 程序
- const (
- ServerTypeLogin = 1
- ServerTypeGate = 2
- ServerTypeWorld = 3
- ServerTypeGameFrameSync = 4
- ServerTypeMax = 999
- ServerTypeAll = 0 // 所有服务器通用
- )
- // gate模块
- const (
- GateModleGame = 1
- GateModleGate = 2
- GateModlePush = 3
- )
- // world模块
- const (
- WorldModleDb = 1
- WorldModleGame = 2
- WorldModleGate = 3
- WorldModleSystemData = 4
- WorldModleChat = 5
- AllModleMax = 999
- AllModleAll = 0 // 所有模块通用
- )
- // GameFrameSync模块
- const (
- GameFrameSyncModleDb = 1
- GameFrameSyncModleGame = 2
- GameFrameSyncModleGate = 3
- GameFrameSyncModleSystemData = 4
- GameFrameSyncSync = 5
- )
- // 对象类型 1000种
- const (
- ErrObjectParam = 1
- ErrObjectPlayer = 2
- ErrObjectConfig = 3
- ErrObjectCondition = 4
- ErrObjectTarget = 5
- ErrObjectItem = 6
- ErrObjectResult = 7
- // ErrObjectHero = 9
- // ErrObjectTreasures = 10
- // ErrObjectChapter = 11
- // ErrObjectReward = 12
- // ErrObjectStam = 13
- // ErrObjectChat = 14
- // ErrObjectLegend = 15
- // ErrObjectFriend = 16
- // ErrObjectPatrol = 17
- // ErrObjectTask = 18
- // ErrObjectShop = 19
- // ErrObjectAc = 20
- // ErrObjectGameSync = 50 // 游戏同步
- ErrObjectSystem = 90
- ErrObjectDb = 91
- ErrObjectRedis = 92
- ErrObjectFunc = 93 // 函数
- ErrObjectMax = 999
- )
- // 每个对象100种状态
- // 定义10个常用状态
- const (
- ErrStatusInvalid = 91 // 无效
- ErrStatusNotFound = 92 // 未发现
- ErrStatusNotEnough = 93 // 不够
- ErrStatusError = 94 // 错误
- ErrStatusOverstep = 95 // 超出
- )
- const (
- ErrStatusLoadProcess = 91 // LoadProcess出错
- )
- const (
- MultipleObject = 100
- // 全局参数 一般不要用,防止出现问题定位不到在所在程序及位置
- // 999 999 001 0000 - 999 999 999 9999
- ErrPlayerNoToken = 999_999_000_0000 + errPlayerNoToken*100
- ErrPlayerBanLogin = 999_999_000_0000 + errPlayerBanLogin*100
- ErrPlayerOtherLogin = 999_999_000_0000 + errPlayerOtherLogin*100
- // ErrPlayerNoToken = 999_999_000_0000 + errPlayerNoToken*100
- ErrSystemUpgrade = 999_999_000_0000 + ErrObjectSystem*10000 + 1*100
- ErrSystemFull = 999_999_000_0000 + ErrObjectSystem*10000 + 2*100
- ErrSystemFoundCheat = 999_999_000_0000 + ErrObjectSystem*10000 + 3*100
- // 请求参数 100
- ErrParamInvalid = ErrObjectParam*MultipleObject + ErrStatusInvalid
- // 玩家 200
- errPlayerBanLogin = ErrObjectPlayer*MultipleObject + 1
- errPlayerOtherLogin = ErrObjectPlayer*MultipleObject + 2
- ErrPlayerNotFound = ErrObjectPlayer*MultipleObject + ErrStatusNotFound
- errPlayerNoToken = ErrObjectPlayer*MultipleObject + 3
- // 道具 300
- ErrItemNotFound = ErrObjectItem*MultipleObject + ErrStatusNotFound
- ErrItemNotEnough = ErrObjectItem*MultipleObject + ErrStatusNotEnough
- // 目标
- ErrTargetNotFound = ErrObjectTarget*MultipleObject + ErrStatusNotFound
- // 配置
- ErrConfigNotFound = ErrObjectConfig*MultipleObject + ErrStatusNotFound
- ErrConfigError = ErrObjectConfig*MultipleObject + ErrStatusError
- // 条件
- ErrConditionNotEnough = ErrObjectCondition*MultipleObject + ErrStatusNotEnough
- // 结果
- ErrResultError = ErrObjectResult*MultipleObject + ErrStatusError
- // 英雄 400
- // ErrHeroNotFound = ErrObjectHero*MultipleObject + ErrStatusNotFound
- // // 宝物 500
- // ErrTreasuresNotFound = ErrObjectTreasures*MultipleObject + ErrStatusNotFound
- // 数据库 600
- ErrDBExec = ErrObjectDb*MultipleObject + 1
- ErrDBLoadNil = ErrObjectDb*MultipleObject + 2
- // redis 700
- ErrRedisExec = ErrObjectRedis*MultipleObject + 1
- // 章节
- // ErrChapterNotFound = ErrObjectChapter*Multiple100 + ErrStatusNotFound
- // ErrChapterLimit = ErrObjectChapter*Multiple100 + ErrStatusError
- // //奖励
- // ErrRewardNotFound = ErrObjectReward*Multiple100 + ErrStatusNotFound
- // ErrRewardIsReceived = ErrObjectReward*Multiple100 + 1 // 已领取
- // //体力
- // ErrStamOverstep = ErrObjectStam*Multiple100 + ErrStatusOverstep
- //聊天
- // ErrEmojiError = ErrObjectChat*Multiple100 + 1
- // ErrEmojiUnlock = ErrObjectChat*Multiple100 + 2
- // ErrChatError = ErrObjectChat*Multiple100 + 3
- // ErrChatBlockedChannel = ErrObjectChat*Multiple100 + 4
- // ErrChatBlockedUser = ErrObjectChat*Multiple100 + 5
- // ErrChatContent = ErrObjectChat*Multiple100 + 6
- // ErrChatSendCDTs = ErrObjectChat*Multiple100 + 7
- // ErrPrivatePlayerNotExist = ErrObjectChat*Multiple100 + 8
- // // 铭文
- // ErrLegendUnique = ErrObjectLegend*Multiple100 + 1
- // ErrLegendSlotUnlock = ErrObjectLegend*Multiple100 + 2
- // ErrLegendSlotNoMatch = ErrObjectLegend*Multiple100 + 3
- // ErrLevelNotEnough = ErrObjectLegend*Multiple100 + 4
- // // 好友
- // ErrFriendGiveError = ErrObjectFriend*Multiple100 + 1
- // ErrFriendGiveHad = ErrObjectFriend*Multiple100 + 2
- // ErrFriendRecCountFull = ErrObjectFriend*Multiple100 + 3
- // ErrFriendNotRecCount = ErrObjectFriend*Multiple100 + 4
- // // 巡逻
- // ErrPatrolLock = ErrObjectPatrol*Multiple100 + 1
- // ErrPatrolReceiveReward = ErrObjectPatrol*Multiple100 + 2
- // ErrPatrolNoAdNum = ErrObjectPatrol*Multiple100 + 3
- // ErrPatrolNoFastNum = ErrObjectPatrol*Multiple100 + 4
- // ErrPatrolGtDanNum = ErrObjectPatrol*Multiple100 + 5
- // ErrPatrolGtUserPoint = ErrObjectPatrol*Multiple100 + 6
- // // 任务
- // ErrTaskUnfinished = ErrObjectTask*Multiple100 + 1
- // ErrTaskUnClaimable = ErrObjectTask*Multiple100 + 2
- // ErrTaskIsClaimed = ErrObjectTask*Multiple100 + 3
- // ErrTaskClaimErr = ErrObjectTask*Multiple100 + 4
- // // 商店
- // ErrShopFreeRefreshNotEnough = ErrObjectShop*Multiple100 + 1
- // ErrShopGoldRefreshNotEnough = ErrObjectShop*Multiple100 + 2
- // ErrShopAdRefreshNotEnough = ErrObjectShop*Multiple100 + 3
- // ErrShopGoodsNotUnlock = ErrObjectShop*Multiple100 + 4
- // ErrShopGoodsBuyNotEnough = ErrObjectShop*Multiple100 + 5
- // ErrShopGoodsOwned = ErrObjectShop*Multiple100 + 6
- // // 精彩活动
- // ErrAcAlreadyBuy = ErrObjectAc*Multiple100 + 1
- // ErrAcCardNotBuy = ErrObjectAc*Multiple100 + 2
- // ErrAcCardNotActive = ErrObjectAc*Multiple100 + 3
- // ErrAcAlreadyGet = ErrObjectAc*Multiple100 + 4
- // ErrAcCardAlreadyBuy = ErrObjectAc*Multiple100 + 5
- // ErrAcActiveAdMaxCount = ErrObjectAc*Multiple100 + 6
- // ErrAcOverLimit = ErrObjectAc*Multiple100 + 7
- // ErrAcLocked = ErrObjectAc*Multiple100 + 8
- // ErrFirstChargeNotBuy = ErrObjectAc*Multiple100 + 9
- // ErrAcNoReward = ErrObjectAc*Multiple100 + 10
- // ErrAcNotOpen = ErrObjectAc*Multiple100 + 11
- // ErrAcNotComplete = ErrObjectAc*Multiple100 + 12
- // ErrGameSyncLoginOther = ErrObjectGameSync*Multiple100 + 1
- // ErrGameSyncParam = ErrObjectGameSync*Multiple100 + 2
- // ErrRoomDisband = ErrObjectGameSync*Multiple100 + 3
- // ErrRoomFrameErr = ErrObjectGameSync*Multiple100 + 4
- // ErrPlayerSettleErr = ErrObjectGameSync*Multiple100 + 5
- // ErrRoomCacheFrameErr = ErrObjectGameSync*Multiple100 + 6
- // ErrRoomNotFoundPlayerErr = ErrObjectGameSync*Multiple100 + 6
- // 配置
- // ErrConfigMaxOnline = ErrObjectConfig*Multiple100 + 1
- ErrMaxTypeMaxStatus = ErrObjectMax*100 + 99 // 99900+99 = 999_99
- ErrMaxVal = 999*1000_000_0000 + 999*1000_0000 + 999*10000 + 99*100 + 99
- )
- // 每种状态在同一个函数种可以使用100次,需要序号递增
- // initErrorCodes 是一个包级初始化函数,用于设置程序编号和模块编号
- // login 1:
- // world 2: db:1; game:2; gate:3; systemdata:4
- // gate 3:
- var (
- appErrorCoder *ErrorCoder
- )
- func InitModuleErrorCoder(programID, moduleID int64) *ErrorCoder {
- errorCodes := new(ErrorCoder)
- errorCodes.ProgramID = programID
- errorCodes.ModuleID = moduleID
- return errorCodes
- }
- func (ec *ErrorCoder) CalcErrorCode1(seq int64) int64 {
- return ec.ProgramID*1000_000_0000 + ec.ModuleID*1000_0000 + seq
- }
- // CalcErrorCode3 生成错误编号,只需要提供顺序号
- func (ec *ErrorCoder) CalcErrorCode3(errObj int64, errStatus int64, seq int64) int64 {
- return ec.ProgramID*1000_000_0000 + ec.ModuleID*1000_0000 + errObj*10000 + errStatus*100 + seq
- }
- func (ec *ErrorCoder) CalcErrorCode4(moduleId int64, errObj int64, errStatus int64, seq int64) int64 {
- return ec.ProgramID*1000_000_0000 + moduleId*1000_0000 + errObj*10000 + errStatus*100 + seq
- }
- func InitAppErrorCoder(programID int64) *ErrorCoder {
- errorCoder := new(ErrorCoder)
- errorCoder.ProgramID = programID
- errorCoder.ModuleID = AllModleAll
- appErrorCoder = errorCoder
- return errorCoder
- }
- // return appErrorCoder.ProgramID*1000_000_00_00 + appErrorCoder.ModuleID*1000_0000 + errObj*10000 + errStatus*100 + seq
- func CalcErrorCode(seq int64) int64 {
- return appErrorCoder.CalcErrorCode1(seq)
- }
- func GetErrCoderMethodWithFunc(funcAsState ...int64) func(int64) int {
- funcFlag1 := int64(0)
- if len(funcAsState) > 0 {
- funcFlag1 = funcAsState[0]
- }
- return func(seq int64) int {
- errCode := appErrorCoder.CalcErrorCode4(appErrorCoder.ModuleID, ErrObjectFunc, funcFlag1, seq)
- return int(errCode)
- }
- }
- func CalcInterfaceErrorCode(funcFlag int64, seq int64) int64 {
- return appErrorCoder.CalcErrorCode4(AllModleAll, ErrObjectFunc, funcFlag, seq)
- }
- func GetCalcInterfaceErrMethod(funcFlag ...int64) func(int64) int64 {
- funcFlag1 := int64(0)
- if len(funcFlag) > 0 {
- funcFlag1 = funcFlag[0]
- }
- return func(seq int64) int64 {
- return appErrorCoder.CalcErrorCode4(AllModleAll, ErrObjectFunc, funcFlag1, seq)
- }
- }
- func CalcUniqueErrorCode2(obj int64, state int64) int64 {
- return ServerTypeAll*1000_000_0000 + AllModleAll*1000_0000 + obj*10000 + state*100 //
- }
- func CalcUniqueErrorCode3(obj int64, state int64, seq int64) int64 {
- return ServerTypeAll*1000_000_0000 + AllModleAll*1000_0000 + obj*10000 + state*100 + seq //
- }
- func PrintErrorCode() {
- // errorEncoder1 := InitModuleErrorCoder(ServerTypeGate, GateModleGame)
- // errorEncoder1.PrintError(ErrParamInvalid, "参数错误")
- // errorEncoder1.PrintError(ErrPlayerBanLogin, "禁止登录")
- // errorEncoder1.PrintError(ErrPlayerOtherLogin, "异地登录")
- // errorEncoder1.PrintError(ErrPlayerNotFound, "玩家未登录")
- // errorEncoder1.PrintError(ErrPlayerNoToken, "玩家凭证不存在")
- // errorEncoder2 := InitModuleErrorCoder(ServerTypeWorld, WorldModleGame)
- // errorEncoder2.PrintError(ErrItemNotEnough, "道具不足")
- // errorEncoder2.PrintError(ErrItemNotFound, "道具不存在")
- // errorEncoder2.PrintError(ErrHeroNotFound, "英雄不存在")
- // errorEncoder2.PrintError(ErrTreasuresNotFound, "宝物不存在")
- // errorEncoder2.PrintError(ErrDBExec, "数据库错误")
- // errorEncoder2.PrintError(ErrDBLoadNil, "数据库加载错误")
- // errorEncoder2.PrintError(ErrRedisExec, "缓存错误")
- // errorEncoder2.PrintError(ErrTargetNotFound, "目标未发现")
- // errorEncoder2.PrintError(ErrConfigNotFound, "配置未发现")
- // errorEncoder2.PrintError(ErrConditionNotEnough, "条件不满足")
- // errorEncoder1.PrintError(ErrPlayerNoToken, "玩家凭证不存在")
- // errorEncoder1.PrintError(ErrPlayerBanLogin, "禁止登录")
- // errorEncoder1.PrintError(ErrPlayerOtherLogin, "异地登录")
- // errorEncoder1.PrintError(ErrSystemUpgrade, "系统维护")
- // errorEncoder1.PrintError(ErrSystemFull, "服务器满")
- // errorEncoder1.PrintError(ErrSystemFoundCheat, "数据异常")
- // 20010019100:参数错误
- // 20010020100:禁止登录
- // 20010020200:异地登录
- // 20010029200:玩家未登录
- // 20010020300:玩家凭证不存在
- // 20010020400:达到最大在线数
- // 30020030100:道具不足
- // 30020039200:道具不存在
- // 30020049200:英雄不存在
- // 30020059200:宝物不存在
- // 30020060100:数据库错误
- // 30020060200:数据库加载错误
- // 30020070100:缓存错误
- }
|