private void OnTryCommandReply(byte[] bytes) { TryCommandReply input = TryCommandReply.Parser.ParseFrom(bytes); if (input.ActorId != ActorId) { return; // 不是自己,略过 } if (!input.Ret) { GameRoomManager.Instance.Log($"RoomLogic OnTryCommandReply Error - " + input.ErrMsg); StateMachine.TriggerTransition(StateEnum.IDLE); } // 该指令可以执行,虽然是马后炮 }
private void OnTryCommandReply(byte[] bytes) { TryCommandReply input = TryCommandReply.Parser.ParseFrom(bytes); if (input.ActorId != ActorId) { return; // 不是自己,略过 } if (!input.Ret) { // 每次都创建新的 PanelSprayMessage spray = GameRoomManager.Instance.FightManager.SprayMessage.Spawn(_inner, Vector3.zero); if (spray == null) { return; } spray.Play(this, input.ErrMsg, PanelSystemTips.MessageType.Error); } // 该指令可以执行,虽然是马后炮 }
private void OnTryCommand(SocketAsyncEventArgs args, byte[] bytes) { TryCommand input = TryCommand.Parser.ParseFrom(bytes); if (input.RoomId != RoomId) { return; // 不是自己房间的消息,略过 } PlayerInfoInRoom piir = GetPlayerInRoom(input.OwnerId); if (piir == null) { string msg = "在服务器没有找到该玩家!"; TryCommandReply output = new TryCommandReply() { RoomId = input.RoomId, OwnerId = input.OwnerId, Ret = false, ErrMsg = msg, }; ServerRoomManager.Instance.SendMsg(args, ROOM_REPLY.TryCommandReply, output.ToByteArray()); ServerRoomManager.Instance.Log("RoomLogic OnTryCommand Error - " + msg + $" - Id:{input.OwnerId}"); return; } var csv = CsvDataManager.Instance.GetTable("command_id"); int actionPointCost = csv.GetValueInt(input.CommandId, "ActionPointCost"); if (actionPointCost > 0) { bool ret = true; string msg = ""; if (actionPointCost != input.ActionPointCost) { // 服务器校验一下 msg = $"行动点数服务器与客户端不一致! {input.ActionPointCost} : {actionPointCost}"; ret = false; } if (piir.ActionPoint < input.ActionPointCost) { msg = "行动点不足, 请稍后再试!"; ret = false; } if (!ret) { TryCommandReply output = new TryCommandReply() { RoomId = input.RoomId, OwnerId = input.OwnerId, Ret = false, ErrMsg = msg, }; ServerRoomManager.Instance.SendMsg(args, ROOM_REPLY.TryCommandReply, output.ToByteArray()); ServerRoomManager.Instance.Log("RoomLogic OnTryCommand Error - " + msg); return; } // 扣除行动点数 piir.AddActionPoint(-input.ActionPointCost); } { // 行动点发生变化,要通知客户端 UpdateActionPointReply output = new UpdateActionPointReply() { RoomId = input.RoomId, OwnerId = input.OwnerId, ActionPoint = piir.ActionPoint, ActionPointMax = piir.ActionPointMax, Ret = true, }; ServerRoomManager.Instance.SendMsg(args, ROOM_REPLY.UpdateActionPointReply, output.ToByteArray()); TryCommandReply output2 = new TryCommandReply() { RoomId = input.RoomId, OwnerId = input.OwnerId, Ret = true, }; ServerRoomManager.Instance.SendMsg(args, ROOM_REPLY.TryCommandReply, output2.ToByteArray()); ServerRoomManager.Instance.Log($"RoomLogic OnTryCommand OK - Permission granted! - CommandId:{input.CommandId} - ActionPointCost:{input.ActionPointCost}"); } }