syntax = "proto3"; package fishing; option go_package = "mongo.games.com/game/protocol/fishing"; //操作结果 enum OpResultCode { OPRC_Sucess = 0; //成功 OPRC_Error = 1; //失败 OPRC_CoinNotEnough = 1056; //钱不够 } //捕鱼 enum FIPacketID { FISHING_ZERO = 0; // 弃用消息号 FISHING_SC_ROOMINFO = 5000; // 房间信息 FISHING_CS_OP = 5001; // 玩家操作(客户-》服务) FISHING_SC_OP = 5002; // 玩家操作(服务-》客户) FISHING_SC_ROOMSTATE = 5003; // 房间状态 FISHING_SC_SEATS = 5004; // 座位信息 FISHING_SC_SYNCFISH = 5006; // 同步鱼,帧同步,每100毫秒一帧 FISHING_SC_FISHERENTER = 5007; // 同步存活的鱼 FISHING_CS_LOADCOMPLETE = 5008; // 获取存活的鱼 FISHING_SC_FIRE = 5009; // 通知开枪 FISHING_SC_FIREHIT = 5010; // 通知命中 FISHING_SC_FIREPOWER = 5011; // 设置炮台倍率 FISHING_CS_FREEZE = 5012; FISHING_SC_FREEZE = 5013; // 通知冰冻事件 FISHING_CS_FISHVIEW = 5014; // 触发鱼事件 FISHING_SC_FISHVIEW = 5015; FISHING_CS_FISHTARGET = 5016; // 瞄准 FISHING_SC_FISHTARGET = 5017; // 通知瞄准 FISHING_SC_SELVIP = 5018; FISHING_SC_ENTER = 5019; FISHING_SC_LEAVE = 5020; FISHING_SC_FISHDEL = 5022; FISHING_SC_JACKPOTFISHDEL = 5023; FISHING_CS_LOOKLOCKFISH = 5024; FISHING_SC_LOOKLOCKFISH = 5025; FISHING_SC_PRANACHANGE = 5026; // 能量炮变化 FISHING_CS_REALYPRANA = 5027; // 放置能量炮炮台 FISHING_SC_REALYPRANA = 5028; // 放置能量炮炮台 FISHING_CS_FIREPRANA = 5029; // 发射能量炮 FISHING_SC_FIREPRANA = 5030; // 发射能量炮 FISHING_SC_JACKPOTPOOLCHANGE = 5031; // jackpot变化 FISHING_SC_JACKPOTCOIN = 5032; // 爆奖 FISHING_SC_RETPRANACOIN = 5033; // 客户端显示使用 FISHING_SC_REBINDAGENT = 5034; //重新绑定机器人 FISHING_SC_FIREMISS = 5035; //攻击未命中(可能鱼不存在) FISHING_SC_SCROBOTBEHAVIOR = 5036; // 通知前端变更机器人行为 FISHING_SC_SCSYNCFISHCOIN = 5037; // 同步财神鱼金额 FISHING_SC_NEWSYNCFISH = 5038 ; FISHING_SC_TREASURECHESTEVENT = 5039; // 龙王夺宝相关事件处理机 FISHING_SC_SYNCFISHHP = 5040; // 天天捕鱼同步鱼血条 FISHING_SC_POWERSTATE = 5041 ; // 同步玩家得炮台状态 FISHING_SC_NOTIFYAPPEARFISH = 5042;//通知客户端出鱼 FISHING_SC_NOTIFYCHANGESCENE = 5043;//通知客户端切换场景 FISHING_CS_SKILLLISTREQ = 5044;//请求房间技能列表 FISHING_SC_SKILLLISTRESP = 5045;//通知客户端房间技能列表 FISHING_CS_SKILLUSEREQ = 5046;//客户端通知使用技能 FISHING_SC_SKILLUSERESP = 5047;//使用技能返回消息 FISHING_SC_SKILLUSEBEGIN = 5048;//通知其他玩家使用技能开始 FISHING_CS_SYNCTIMEPOINT = 5049;//客户端请求帧同步 FISHING_SC_SYNCTIMEPOINT = 5050;//服务器返回帧同步 } message FishingPlayerData { string Name = 1; //名字 int32 SnId = 2; //账号 int32 Head = 3; //头像 int32 Sex = 4; //性别 int64 Coin = 5; //金币 int32 Pos = 6; //座位位置 int32 Flag = 7; //二进制标记 string Params = 8; //其他数据 如:ip 等 string City = 9; //城市 int32 HeadOutLine = 10; //头像框 int32 VIP = 11; int32 SelVip = 12; //选择的VIP鱼炮 int32 Power = 13; bool IsRobot = 14; //0 正常玩家 1 机器人 int32 AgentParam = 15; //IsRobot=0 代理的机器人ID; IsRobot=1 代理发炮的真人ID; int32 TargetSel = 16; //瞄准 int32 AutoFishing = 17;//自动 int32 FireRate = 18; //发炮倍速 int32 PranaPercent = 19; //能量炮蓄池 int32 NiceId = 20; repeated int32 RobotSnIds = 21; //代理的机器人们 int64 UnMaxPower = 22;//解锁的最大炮倍 repeated int32 UnPowerList= 23;//解锁的炮台 int64 FishLevel = 24;//捕鱼等级 int64 FishExp = 25;//捕鱼经验 } //房间信息 message SCFishingRoomInfo { int32 RoomId = 1; //房间id int32 Creator = 2; //创建者SnId int32 GameId = 3; //游戏id int32 RoomMode = 4; //游戏模式 repeated int32 Params = 5; //规则参数 int32 NumOfGames = 6; //当前第几局 repeated int32 Cards = 7; //转盘数据 int32 State = 8; //房间当前状态 int32 TimeOut = 9; //等待剩余时间 单位:毫秒 int32 DisbandGen = 10; //解散申请 int32 AgentId = 11; //代开房者 repeated int32 MatchParams = 12; //比赛参数 int32 SceneType = 13; //房间模式 1:初级模式 3:高级模式 repeated FishingPlayerData Players = 14; //房间内的玩家信息 int32 GameFreeId = 15; int32 FrozenTick = 16; //冰冻时间 int64 JackpotPool = 17; //奖金池 int32 MinPower = 18; //房间的最小炮倍 int32 MaxPower = 19; //房间的最大炮倍 repeated int64 PowerList = 20;//炮倍列表 int32 ChangeSceneId = 21;//当前使用的场景 } //玩家操作 message CSFishingOp { //开炮 OpCode:0 Params:{炮火的X方向,炮火的Y方向,子弹编号,子弹倍率,fishId如果锁定鱼了,代表表示鱼的ID(默认发-1),multiple 子弹倍数 默认1倍} //命中 OpCode:1 params:{子弹编号,鱼ID,鱼ID,鱼ID,鱼ID,鱼ID,鱼ID,鱼ID} //切换倍率 OpCode:2 Params:{每一击金币数量} //切换VIP鱼炮 OpCode:3 Params:{VIP} //机器人开炮 OpCode:4 Params:{机器人ID,炮火的X方向,炮火的Y方向,子弹编号,子弹倍率,fishId如果锁定鱼了代表 表示鱼的ID(默认发-1),} //机器人命中 OpCode:5 params:{机器人ID,子弹编号,鱼ID,鱼ID,鱼ID,鱼ID,鱼ID,鱼ID,鱼ID} //切后台 OpCode:6 //切前台 OpCode:7 int32 OpCode = 1; //操作码 repeated int64 Params = 2; //操作参数 } message SCFishingOp { int32 OpCode = 1; //操作码 repeated int64 Params = 2; //操作参数 OpResultCode OpRetCode = 3; //返回错误码 int32 SnId = 4; } //FISHING_SC_FIRE message SCFire { int32 Snid = 1; int32 X = 2;//炮火的方向 int32 Y = 3;//炮火的方向 int32 Bulletid = 4; //子弹ID int32 Power = 5; //子弹倍率- int64 CurrentPlayerCoin = 6; //当前玩家的金币 int32 FishId = 7;//如果锁定鱼了,代表表示鱼的ID(默认发-1) int32 Multiple = 8;//狂暴倍数 } //FISHING_SC_FIREHIT message SCFireHit{ int32 Snid = 1; repeated int32 FishId = 2; // 鱼ID repeated int32 Coin = 3; // 获得金币,和FishId一一对应 repeated int32 Item = 4; //获得的道具 int32 Money = 5; //获得的钻石 int64 Ts = 6; // 时间戳 int32 Event = 7; // 事件ID int32 EventFish = 8; // 事件鱼id int64 CurrentPlayerCoin = 9;// 当前玩家的金币 int32 EventCoin = 10; // 事件鱼自身的金币(用户弹暴富累加用) int32 Power = 11; // 炮倍 int32 AddExp = 12; //经验值 } //FISHING_SC_TREASURECHESTEVENT message SCTreasureChestEvent { int32 Snid = 1; // 玩家ID repeated int32 Reward = 2; // 对应奖励倍数集合 int64 CurrentPlayerCoin = 3; //当前玩家的金币 } //FISHING_SC_FIREMISS message SCFireMiss{ int32 FishId = 1; //鱼标识 int32 Rate = 2; //击杀概率,-1表示鱼不存在 } //FISHING_SC_FIREPOWER message SCFirePower{ int32 Snid = 1; int32 Power = 2;//每一击金币数量 bool RobitFire = 3;//机器人能否开火 int32 TargetPower = 4;//机器人目标倍率 } //FISHING_SC_SELVIP message SCSelVip{ int32 Snid = 1; int32 Vip = 2;//选择的VIP鱼炮 } //房间状态 message SCFishingRoomState { int32 State = 1; //房间当前状态 int32 SubState = 2; //房间当前子状态 repeated int32 Params = 3; //状态参数 } //座位数据 message SCFishingSeats { repeated FishingPlayerData Data = 1; //房间当前状态 } //进入房间 message SCfishingEnter{ FishingPlayerData Data = 1; //新用户 } //退出房间 message SCfishingLeave{ int32 SnId = 1; //用户 } //fishid定义:policyid*1000000 + DB_Policyx.Id*100 + 单行的自增长id message SCSyncRefreshFish { int32 PolicyId = 1; // int32 TimePoint = 2; int32 RandomSeed = 3; //当前随机种子 } message SyncRefreshFishInfo { int32 TemplateId = 1; // 需要更新鱼的ID 用于在配置表中 查询具体数据 例如 : 7004,7005,7006 int32 Num = 2; // 当前这类鱼需要更新的数量 } message SCNewSyncRefreshFish { int32 PolicyId = 1; // 当前对用的场景策略ID repeated SyncRefreshFishInfo info = 2 ; // 需要更新的鱼的信息 int32 LatestID = 3; int32 RandomSeed = 4; //当前随机种子 } //FISHING_SC_FISHERENTER message FishInfo { int32 FishID = 1; //鱼的Id唯一表示 int32 FishType = 2; //鱼的类型 对应Fish表 int32 FishPath = 3; //出鱼路径 int32 FishSpeed = 4; //鱼的速度 repeated int32 FishChild = 5; //孩子 后续用 int32 BirthTick = 6; //出生帧 int32 LiveTick = 7; //结束帧 } //FISHING_CS_LOADCOMPLETE message CSLoadComplete { } message SCFishesEnter { //int32 PolicyId = 1; repeated FishInfo Fishes = 2; int32 IceSec = 3; //冰冻时间(秒) int32 TimeTick = 4; } //屏幕中的鱼 FISHING_CS_FISHVIEW message CSFishView { repeated int32 Fishs = 1; // 收集的鱼 string Sign = 2; // 事件唯一标记 int32 EventFish = 3; // 事件鱼标识 int32 SnId = 4; // 玩家SnId } //message SCFishView { // int32 FishID = 1;//鱼类型 0:所有的鱼 非0:固定ID类型的鱼 // int32 Sign = 2;//回传标记 //} message PlayerPowerState { int32 Snid = 1; // 玩家ID int32 State = 2; // 炮台状态 int32 Num = 3; // 炮台剩余数量 } // 更新当前玩家炮台状态 message SCPowerState { repeated PlayerPowerState PowerState = 1; } // 鱼已经死亡返回鱼分 FISHING_SC_FishDel message SCFishDel{ int32 FishId = 1; int32 Coin = 2; // 返回发炮金币 int64 CurrentPlayerCoin = 3; //当前玩家的金币v int32 Snid = 4; } // 通知客户端该条鱼是奖金鱼 FISHING_SC_JACKPOTFishDel message SCJackpotFish{ repeated int32 FishIds = 1; } // FISHING_CS_LOOKLOCKFISH message CSLookLockFish{ } // FISHING_SC_LOOKLOCKFISH message SCLookLockFish{ repeated int32 FishId = 1; repeated int32 FishIdNum = 2; } // FISHING_SC_PRANACHANGE 通知客户端能量炮蓄池变化 message SCSendReadyPrana{ int32 SnId = 1; int32 Percent = 2; } // FISHING_CS_REALYPRANA = 5027; // 放置能量炮炮台 message CSReadyPrana{ int32 SnId = 1; int32 X = 2; int32 Y = 3; } // FISHING_SC_REALYPRANA = 5028; // 放置能量炮炮台 message SCReadyPrana{ int32 SnId = 1; OpResultCode OpRetCode = 2; //返回错误码 int32 X = 3; int32 Y = 4; } // FISHING_CS_FIREPRANA = 5029; // 发射能量炮 message CSFirePrana{ int32 SnId = 1; repeated int32 FishIds = 2; // 碰撞的鱼 int32 X = 3; int32 Y = 4; } // FISHING_SC_FIREPRANA = 5030; // 发射能量炮 message SCFirePrana{ int32 SnId = 1; OpResultCode OpRetCode = 2; int32 X = 3; int32 Y = 4; } // FISHING_SC_JACKPOTCOIN = 5032 message SCJackpotCoin{ int32 SnId = 1; int32 Coin = 2; int32 JackpotLevel = 3; string Name = 4; } // FISHING_SC_JACKPOTPOOLCHANGE = 5031; // 奖池变化 message SCJackpotPool{ int64 Coin = 1; } // FISHING_SC_RETPRANACOIN message SCRetPranaCoin{ int32 SnId = 1; int64 Coin = 2; } //FISHING_SC_REBINDAGENT message SCReBindAgent{ int32 PlayerSnid = 1; //真实玩家snid int32 RobSnid = 2; //对应机器人snid } message SCRobotBehavior{ int32 Code = 1 ; // 机器人行为ID 0:停止开炮 int32 RobotId = 2; //机器人ID } //FISHING_SC_SCSYNCFISHCOIN message SCSyncFishCoin{ int32 FishId = 1; //鱼id int64 Coin = 2; //鱼奖金 } //FISHING_SC_SYNCFISHHP message FishHpInfo { int32 FishID = 1; int32 HpRatio = 2; //当前血条比例 需要除以100显示 } message SCSyncFishHp{ repeated FishHpInfo HpInfo = 1; //鱼的血量 } //通知客户端出鱼 //FISHING_SC_NOTIFYAPPEARFISH message SCNotifyAppearFish{ int32 OutFishType = 1;//出鱼类型 1-普通出鱼 2-鱼潮(暂时没用 保留) repeated FishInfo Fishs = 2; } //通知切换场景 //FISHING_SC_NOTIFYCHANGESCENE message SCNotifyChangeScene{ int32 sceneId = 1; } //技能相关消息 //房间技能list //FISHING_CS_SKILLLISTREQ message CSSkillListReq{ } //FISHING_SC_SKILLLISTRESP message SCSkillListResp { repeated SkillInfo items = 1; } message SkillInfo { int32 Id = 1; string Name = 2; int32 Vip = 3; int32 Consume = 4; string Item = 5; string OtherConsumer = 6; int32 Duration = 7; int32 SkillGroup = 8; int32 Gcd = 9; int32 Cd = 10; string HiddenPoses = 11; string Describe = 12; int32 OpenCanon=13; int32 SkillType = 14; int32 Fury = 15; int32 Limit = 16; } //使用技能 //FISHING_CS_SKILLUSEREQ message CSFishSkillUseReq { int32 SkillId = 1; //技能id } //使用技能返回消息 //FISHING_SC_SKILLUSERESP message SCFishSkillUseResp { int32 Result = 1; //0表示使用技能成功 SkillStatusEnum Status = 2; //此技能当前状态 int32 SkillId = 4; //技能id enum SkillStatusEnum { FUTILITY = 0; //无用 ROOM_DISALLOW = 1; //此技能无法在此类房间内使用 VIP_LIMIT = 2; //VIP等级不足 TOOL_LIMIT = 3; //物品不足无法使用 UN_POWER = 4; //炮倍解锁不足 CD = 5; //自身技能CD USABLE = 6; //可用 NOT_EXISTS = 7;//技能ID不存在 NO_FISH_CONFIG = 8;//此房间未配置BOSS鱼信息 WORLD_BOSS = 9;//存在世界BOSS } } message SCFishSkillUseEnd { int32 SkillId = 1; //技能id int32 SnId = 2; //用户uid } //广播消息 //FISHING_SC_SKILLUSEBEGIN message SCFishSkillUseBegin { int32 SkillId = 1; //技能id int32 SnId = 2; //用户uid int32 FishID =3;//鱼编号 int32 FishType = 4; //如果这次是使用了召唤令,则推出的鱼的id int32 pos = 5; //使用技能的这个人的椅子ID } //帧同步 //FISHING_CS_SYNCTIMEPOINT message CSSyncTimePoint{ } //FISHING_SC_SYNCTIMEPOINT message SCSyncTimePoint{ int32 TimePoint = 1; }