123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345 |
- // Package msg
- // 一个错误编号表示唯一一个错误发生地点
- // 错误编号格式:顺序号*1000000 + 程序编号*1000 + 模块编号
- // 模块内函数发生错误,编号:1-100
- // 特定错误,编号:101-200
- // 其他地方发生错误,占用地址列表
- // 1、
- package msg
- import "fmt"
- // ErrorCode 结构体表示错误编码
- type ErrorCoder struct {
- ProgramID int
- ModuleID int
- }
- // 程序
- const (
- ServerTypeLogin = 1
- ServerTypeGate = 2
- ServerTypeWorld = 3
- ServerTypeGameFrameSync = 4
- ServerTypeAll = 999 // 所有服务器通用
- )
- // gate模块
- const (
- GateModleGame = 1
- GateModleGate = 2
- GateModlePush = 3
- )
- // world模块
- const (
- WorldModleDb = 1
- WorldModleGame = 2
- WorldModleGate = 3
- WorldModleSystemData = 4
- WorldModleChat = 5
- AllModelAll = 999 // 所有模块通用
- )
- // 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 (
- Multiple100 = 100
- // 全局参数 一般不要用,防止出现问题定位不到在所在程序及位置
- // 999 999 001 0000 - 999 999 999 9999
- ErrUniquePlayerNoToken = 999_999_000_0000 + errPlayerNoToken*100
- ErrUniquePlayerBanLogin = 999_999_000_0000 + errPlayerBanLogin*100
- ErrUniquePlayerOtherLogin = 999_999_000_0000 + errPlayerOtherLogin*100
- ErrUniqueSystemUpgrade = 999_999_000_0000 + ErrObjectSystem*10000 + 1*100
- ErrUniqueSystemFull = 999_999_000_0000 + ErrObjectSystem*10000 + 2*100
- ErrUniqueSystemFoundCheat = 999_999_000_0000 + ErrObjectSystem*10000 + 3*100
- // 请求参数 100
- ErrParamInvalid = ErrObjectParam*Multiple100 + ErrStatusInvalid
- // 玩家 200
- errPlayerBanLogin = ErrObjectPlayer*Multiple100 + 1
- errPlayerOtherLogin = ErrObjectPlayer*Multiple100 + 2
- ErrPlayerNotFound = ErrObjectPlayer*Multiple100 + ErrStatusNotFound
- errPlayerNoToken = ErrObjectPlayer*Multiple100 + 3
- // 道具 300
- ErrItemNotFound = ErrObjectItem*Multiple100 + ErrStatusNotFound
- ErrItemNotEnough = ErrObjectItem*Multiple100 + ErrStatusNotEnough
- // 目标
- ErrTargetNotFound = ErrObjectTarget*Multiple100 + ErrStatusNotFound
- // 配置
- ErrConfigNotFound = ErrObjectConfig*Multiple100 + ErrStatusNotFound
- ErrConfigError = ErrObjectConfig*Multiple100 + ErrStatusError
- // 条件
- ErrConditionNotEnough = ErrObjectCondition*Multiple100 + ErrStatusNotEnough
- // 结果
- ErrResultError = ErrObjectResult*Multiple100 + ErrStatusError
- // 英雄 400
- ErrHeroNotFound = ErrObjectHero*Multiple100 + ErrStatusNotFound
- // 宝物 500
- ErrTreasuresNotFound = ErrObjectTreasures*Multiple100 + ErrStatusNotFound
- // 数据库 600
- ErrDBExec = ErrObjectDb*Multiple100 + 1
- ErrDBLoadNil = ErrObjectDb*Multiple100 + 2
- // redis 700
- ErrRedisExec = ErrObjectRedis*Multiple100 + 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
- ErrPrivatePlayerNotFriend = ErrObjectChat*Multiple100 + 9
- // 铭文
- 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 InitErrorCodes(programID, moduleID int) *ErrorCoder {
- errorCodes := new(ErrorCoder)
- errorCodes.ProgramID = programID
- errorCodes.ModuleID = moduleID
- return errorCodes
- }
- // CalcErrorCode3 生成错误编号,只需要提供顺序号
- func (ec *ErrorCoder) CalcErrorCode4(moduleId int, errObj int, errStatus int, seq int) int {
- return ec.ProgramID*1000_000_0000 + moduleId*1000_0000 + errObj*10000 + errStatus*100 + seq
- }
- func (ec *ErrorCoder) CalcErrorCode3(errObj int, errStatus int, seq int) int {
- return ec.CalcErrorCode4(ec.ModuleID, errObj, errStatus, seq)
- }
- func (ec *ErrorCoder) CalcErrorCode2(errObj int, errStatus int) int {
- return ec.CalcErrorCode4(ec.ModuleID, errObj, errStatus, 0)
- }
- func (ec *ErrorCoder) CalcErrorCode(errObjStatus int) int {
- return ec.CalcErrorCode4(ec.ModuleID, 0, errObjStatus, 0)
- }
- // func (ec *ErrorCoder) CalcUniqueErrorCode(errObjStatusSeq int) int {
- // return errObjStatusSeq
- // }
- func (ec *ErrorCoder) PrintError(errCode int, errMsg string) {
- errCode2 := ec.CalcErrorCode(errCode)
- // code := (errCode2 % 1000_0000) / 100
- // fmt.Printf("%v-%v: %v %s\n", errCode2, errCode2+99, code, errMsg)
- fmt.Printf("%v: %s\n", errCode2, errMsg)
- }
- // func InitAppErrorCoder(programID int) *ErrorCoder {
- // errorCoder := new(ErrorCoder)
- // errorCoder.ProgramID = programID
- // appErrorCoder = errorCoder
- // return errorCoder
- // }
- // return appErrorCoder.ProgramID*1000_000_00_00 + appErrorCoder.ModuleID*1000_0000 + errObj*10000 + errStatus*100 + seq
- // func CalcErrorCode(seq int) int {
- // return appErrorCoder.ProgramID*1000_000_00_00 + seq
- // }
- // func GetErrCoderMethodWithFunc(funcFlag ...int) func(int) int {
- // funcFlag1 := 0
- // if len(funcFlag) > 0 {
- // funcFlag1 = funcFlag[0]
- // }
- // return func(seq int) int {
- // return appErrorCoder.CalcErrorCode4(appErrorCoder.ModuleID, ErrObjectFunc, funcFlag1, seq)
- // }
- // }
- func PrintErrorCode() {
- // errorEncoder1 := InitErrorCodes(ServerTypeGate, GateModleGame)
- // errorEncoder1.PrintError(ErrParamInvalid, "参数错误")
- // errorEncoder1.PrintError(ErrPlayerBanLogin, "禁止登录")
- // errorEncoder1.PrintError(ErrPlayerOtherLogin, "异地登录")
- // errorEncoder1.PrintError(ErrPlayerNotFound, "玩家未登录")
- // errorEncoder1.PrintError(ErrPlayerNoToken, "玩家凭证不存在")
- // errorEncoder2 := InitErrorCodes(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:缓存错误
- }
|