// 양 클라이언트에서 동일한 타이밍으로 게임 시작을 위한, 게임시작 패킷 수신 함수 public void OnReceiveGameStartPacket(PacketId id, byte[] data) { GameStartPacket packet = new GameStartPacket(data); GameStartData startData = packet.GetPacket(); enterGameScene[startData.campNumber - 1] = true; bool check = false; for (int i = 0; i < 2; i++) { if (enterGameScene[i] == false) { Debug.Log((i + 1).ToString() + " 진영에서 아직 데이터 안보냄."); check = true; } } if (check == false) { // 양 단말 모두 준비가 되었으므로 게임 시작 Debug.Log("양 단말의 게임 시작 패킷 수신을 완료했으므로, 일시중지 해제하고 게임 시작"); readyToStart = true; } }
// Tries to notify the players of a GameStart // retryTimeout is how long to wait until to resending the packet private void _notifyGameStart(PlayerInfo player, TimeSpan retryTimeout) { // check if they are ready already if (player.Ready) { return; } // Make sure not to spam them if (DateTime.Now >= (player.LastPacketSentTime.Add(retryTimeout))) { GameStartPacket gsp = new GameStartPacket(); _sendTo(player, gsp); } }
public void GameStart(GameStartPacket packet) { if (Session.IsOnMap || !Session.HasSelectedCharacter) { // character should have been selected in SelectCharacter return; } Session.CurrentMapInstance = Session.Character.MapInstance; if (_worldConfiguration.SceneOnCreate) // TODO add only first connection check { Session.SendPacket(new ScenePacket() { SceneId = 40 }); } if (_worldConfiguration.WorldInformation) { Session.SendPacket(Session.Character.GenerateSay("-------------------[NosCore]---------------", SayColorType.Yellow)); Session.SendPacket(Session.Character.GenerateSay($"Github : https://github.com/NosCoreIO/NosCore/", SayColorType.Purple)); Session.SendPacket(Session.Character.GenerateSay("-----------------------------------------------", SayColorType.Yellow)); } Session.Character.LoadSpeed(); // Session.Character.LoadSkills(); Session.SendPacket(Session.Character.GenerateTit()); // Session.SendPacket(Session.Character.GenerateSpPoint()); // Session.SendPacket("rsfi 1 1 0 9 0 9"); if (Session.Character.Hp <= 0) { // ServerManager.Instance.ReviveFirstPosition(Session.Character.CharacterId); } else { Session.ChangeMap(); } // Session.SendPacket(Session.Character.GenerateSki()); // Session.SendPacket($"fd {Session.Character.Reput} 0 {(int)Session.Character.Dignity} {Math.Abs(Session.Character.GetDignityIco())}"); Session.SendPacket(Session.Character.GenerateFd()); // Session.SendPacket("rage 0 250000"); // Session.SendPacket("rank_cool 0 0 18000"); // SpecialistInstance specialistInstance = Session.Character.Inventory.LoadBySlotAndType<SpecialistInstance>(8, InventoryType.Wear); // StaticBonusDTO medal = Session.Character.StaticBonusList.FirstOrDefault(s => s.StaticBonusType == StaticBonusType.BazaarMedalGold || s.StaticBonusType == StaticBonusType.BazaarMedalSilver); // if (medal != null) // { // Session.SendPacket(Session.Character.GenerateSay(Language.Instance.GetMessageFromKey("LOGIN_MEDAL"), SayColorType.Green)); // } // if (Session.Character.StaticBonusList.Any(s => s.StaticBonusType == StaticBonusType.PetBasket)) // { // Session.SendPacket("ib 1278 1"); // } // if (Session.Character.MapInstance.Map.MapTypes.Any(m => m.MapTypeId == (short)MapTypeEnum.CleftOfDarkness)) // { // Session.SendPacket("bc 0 0 0"); // } // if (specialistInstance != null) // { // Session.SendPacket(Session.Character.GenerateSpPoint()); // } // Session.SendPacket("scr 0 0 0 0 0 0"); // for (int i = 0; i < 10; i++) // { // Session.SendPacket($"bn {i} {Language.Instance.GetMessageFromKey($"BN{i}")}"); // } // Session.SendPacket(Session.Character.GenerateExts()); // Session.SendPacket(Session.Character.GenerateMlinfo()); // Session.SendPacket(UserInterfaceHelper.Instance.GeneratePClear()); // Session.SendPacket(Session.Character.GeneratePinit()); // Session.SendPackets(Session.Character.GeneratePst()); // Session.SendPacket("zzim"); // Session.SendPacket($"twk 2 {Session.Character.CharacterId} {Session.Account.Name} {Session.Character.Name} shtmxpdlfeoqkr"); // // qstlist target sqst bf // Session.SendPacket("act6"); // Session.SendPacket(Session.Character.GenerateFaction()); // // MATES // Session.SendPackets(Session.Character.GenerateScP()); // Session.SendPackets(Session.Character.GenerateScN()); // Session.Character.GenerateStartupInventory(); // Session.SendPacket(Session.Character.GenerateGold()); // Session.SendPackets(Session.Character.GenerateQuicklist()); // string clinit = ServerManager.Instance.TopComplimented.Aggregate("clinit", // (current, character) => current + $" {character.CharacterId}|{character.Level}|{character.HeroLevel}|{character.Compliment}|{character.Name}"); // string flinit = ServerManager.Instance.TopReputation.Aggregate("flinit", // (current, character) => current + $" {character.CharacterId}|{character.Level}|{character.HeroLevel}|{character.Reput}|{character.Name}"); // string kdlinit = ServerManager.Instance.TopPoints.Aggregate("kdlinit", // (current, character) => current + $" {character.CharacterId}|{character.Level}|{character.HeroLevel}|{character.Act4Points}|{character.Name}"); // Session.CurrentMapInstance?.Broadcast(Session.Character.GenerateGidx()); // Session.SendPacket(Session.Character.GenerateFinit()); // Session.SendPacket(Session.Character.GenerateBlinit()); // Session.SendPacket(clinit); // Session.SendPacket(flinit); // Session.SendPacket(kdlinit); // Session.Character.LastPVPRevive = DateTime.Now; // long? familyId = DAOFactory.FamilyCharacterDAO.FirstOrDefault(s => s.CharacterId == Session.Character.CharacterId)?.FamilyId; // if (familyId != null) // { // Session.Character.Family = ServerManager.Instance.FamilyList.FirstOrDefault(s => s.FamilyId == familyId.Value); // } // if (Session.Character.Family != null && Session.Character.FamilyCharacter != null) // { // Session.SendPacket(Session.Character.GenerateGInfo()); // Session.SendPackets(Session.Character.GetFamilyHistory()); // Session.SendPacket(Session.Character.GenerateFamilyMember()); // Session.SendPacket(Session.Character.GenerateFamilyMemberMessage()); // Session.SendPacket(Session.Character.GenerateFamilyMemberExp()); // if (!string.IsNullOrWhiteSpace(Session.Character.Family.FamilyMessage)) // { // Session.SendPacket(UserInterfaceHelper.Instance.GenerateInfo("--- Family Message ---\n" + Session.Character.Family.FamilyMessage)); // } // } // IEnumerable<PenaltyLogDTO> warning = DAOFactory.PenaltyLogDAO.Where(s => s.AccountId == Session.Character.AccountId).Where(p => p.Penalty == PenaltyType.Warning); // IEnumerable<PenaltyLogDTO> penaltyLogDtos = warning as IList<PenaltyLogDTO> ?? warning.ToList(); // if (penaltyLogDtos.Any()) // { // Session.SendPacket(UserInterfaceHelper.Instance.GenerateInfo(string.Format(Language.Instance.GetMessageFromKey("WARNING_INFO"), penaltyLogDtos.Count()))); // } // // finfo - friends info // IEnumerable<MailDTO> mails = DAOFactory.MailDAO.Where(s => s.ReceiverId.Equals(Session.Character.CharacterId)).ToList(); // foreach (MailDTO mail in mails) // { // Session.Character.GenerateMail(mail); // } // int giftcount = mails.Count(mail => !mail.IsSenderCopy && mail.ReceiverId == Session.Character.CharacterId && mail.AttachmentVNum != null && !mail.IsOpened); // int mailcount = mails.Count(mail => !mail.IsSenderCopy && mail.ReceiverId == Session.Character.CharacterId && mail.AttachmentVNum == null && !mail.IsOpened); // if (giftcount > 0) // { // Session.SendPacket(Session.Character.GenerateSay(string.Format(Language.Instance.GetMessageFromKey("GIFTED"), giftcount), SayColorType.Purple)); // } // if (mailcount > 0) // { // Session.SendPacket(Session.Character.GenerateSay(string.Format(Language.Instance.GetMessageFromKey("NEW_MAIL"), mailcount), SayColorType.Yellow)); // } // Session.Character.DeleteTimeout(); // foreach (StaticBuffDTO sb in DAOFactory.StaticBuffDAO.Where(s => s.CharacterId == Session.Character.CharacterId)) // { // Session.Character.AddStaticBuff(sb); // } // if (Session.Character.MapInstance.Map.MapTypes.Any(m => m.MapTypeId == (short)MapTypeEnum.Act4 || m.MapTypeId == (short)MapTypeEnum.Act42)) // { // Session.Character.ConnectAct4(); // } }
private void HandleGameStartPacket(GameStartPacket p) { SwitchScene <MultiplayerGameScene>(); }