public void CEventMessageReq(GameSession session, CEventMessageReqMessage message) { var plr = session.Player; if (plr.Room != null) { plr.Room.Broadcast(new SEventMessageAckMessage(message.Event, session.Player.Account.Id, message.Unk1, message.Value, "")); } else { Logger.ForAccount(session) .Debug("Player don't have room"); return; } //if (message.Event == GameEventMessage.BallReset && plr == plr.Room.Host) //{ // plr.Room.Broadcast(new SEventMessageAckMessage(GameEventMessage.BallReset, 0, 0, 0, "")); // return; //} //if (message.Event != GameEventMessage.StartGame) // return; if (plr.Room.GameRuleManager.GameRule.StateMachine.IsInState(GameRuleState.Playing) && plr.RoomInfo.State == PlayerState.Lobby) { plr.RoomInfo.State = plr.RoomInfo.Mode == PlayerGameMode.Normal ? PlayerState.Alive : PlayerState.Spectating; plr.Room.BroadcastBriefing(); } }
public void CEventMessageReq(GameSession session, CEventMessageReqMessage message) { var plr = session.Player; plr.Room.Broadcast(new SEventMessageAckMessage(message.Event, session.Player.Account.Id, message.Unk1, message.Value, "")); if (plr.Room.GameRuleManager.GameRule.StateMachine.IsInState(GameRuleState.Playing) && plr.RoomInfo.State == PlayerState.Lobby) { plr.RoomInfo.State = plr.RoomInfo.Mode == PlayerGameMode.Normal ? PlayerState.Alive : PlayerState.Spectating; plr.Room.BroadcastBriefing(); } }
public Task <bool> OnHandle(MessageContext context, CEventMessageReqMessage message) { var session = context.GetSession <Session>(); var plr = session.Player; var room = plr.Room; // Client is trying to enter the game while its running if (room.GameRule.StateMachine.GameState == GameState.Playing && plr.State == PlayerState.Lobby) { if (!_equipValidator.IsValid(plr.CharacterManager.CurrentCharacter)) { session.Send(new SServerResultInfoAckMessage(ServerResult.WearingUnusableItem)); return(Task.FromResult(true)); } for (var i = 0; i < plr.CharacterStartPlayTime.Length; ++i) { plr.CharacterStartPlayTime[i] = default; } plr.CharacterStartPlayTime[plr.CharacterManager.CurrentSlot] = DateTimeOffset.Now; plr.StartPlayTime = DateTimeOffset.Now; plr.IsReady = false; plr.Score.Reset(); plr.State = plr.Mode == PlayerGameMode.Normal ? PlayerState.Alive : PlayerState.Spectating; room.BroadcastBriefing(); } room.Broadcast(new SEventMessageAckMessage(message.Event, session.Player.Account.Id, message.Unk1, message.Value, "")); return(Task.FromResult(true)); }