public void OnResourcePackClientResponsePacket(ResourcePackClientResponsePacket packet) { if (packet.ResponseStatus == ResourcePackClientResponsePacket.STATUS_REFUSED) { Close("disconnectionScreen.resourcePack"); } else if (packet.ResponseStatus == ResourcePackClientResponsePacket.STATUS_SEND_PACKS) { //TODO: ResourcePackDataInfoPacket } else if (packet.ResponseStatus == ResourcePackClientResponsePacket.STATUS_HAVE_ALL_PACKS) { ResourcePackStackPacket resourcePackStackPacket = new ResourcePackStackPacket(); SendDataPacket(resourcePackStackPacket); } else if (packet.ResponseStatus == ResourcePackClientResponsePacket.STATUS_COMPLETED) { StartGamePacket startGamePacket = new StartGamePacket(); SendDataPacket(startGamePacket); PlayStatusPacket playStatusPacket = new PlayStatusPacket(); playStatusPacket.Status = PlayStatusPacket.PLAYER_SPAWN; SendDataPacket(playStatusPacket); } }
public void SendStart(string enemy) { StartGamePacket st = new StartGamePacket(); st.Command = PacketsToServer.StartGamePacket; st.Enemy = enemy; st.Me = name; string mes = JsonConvert.SerializeObject(st) + "$"; Send(mes); }
public void ReciveMessages(string message) { switch (JsonConvert.DeserializeObject <RegPacket>(message).Command) { case PacketsToServer.RegPacket: RegPacket reg = JsonConvert.DeserializeObject <RegPacket>(message); bool flag = ServerMain.Check(reg.Name); ResultRegPacket result = new ResultRegPacket(); if (flag) { result.Command = PacketsToServer.ResultRegPacket; result.StatusOfRegistr = Status.success; clientinf = new Player(reg.Name); ServerMain.gameclients.Add(clientinf); ServerMain.FirstList.Add(reg.Name, client); Console.WriteLine("Имя клиента " + reg.Name); ListOfAllClients list = new ListOfAllClients(); list.Command = PacketsToServer.ListOfAllClients; list.ListAllClients = makelist(); strpacket = JsonConvert.SerializeObject(list); SendToAllPlayersInTheGame(strpacket); } else { result.Command = PacketsToServer.ResultRegPacket; result.StatusOfRegistr = Status.fail; Console.WriteLine("Клиент с таким именем уже существует"); } strpacket = JsonConvert.SerializeObject(result); Send(strpacket); break; case PacketsToServer.AskGamePacket: AskGamePacket stwp = JsonConvert.DeserializeObject <AskGamePacket>(message); StartWindowPacket stgapc = new StartWindowPacket(); //отправляю список клиента при входе в игру stgapc.Command = PacketsToServer.StartWindowPacket; stgapc.ListAllClients = makelist(); strpacket = JsonConvert.SerializeObject(stgapc); Send(strpacket); break; case PacketsToServer.WaitGamePacket: WaitGamePacket waitfg = JsonConvert.DeserializeObject <WaitGamePacket>(message); this.clientinf.Status = StatusGamer.lookforgame; List <Player> listWaitingplayers = MakeReadyForGameListOfPlayers(); ListOfWaitingClients waitcl = new ListOfWaitingClients(); waitcl.Command = PacketsToServer.ListOfWaitingClients; waitcl.ListWaitingClients = makelist(); strpacket = JsonConvert.SerializeObject(waitcl); Send(strpacket); break; case PacketsToServer.ChooseEnemyPacket: ChooseEnemyPacket ch = JsonConvert.DeserializeObject <ChooseEnemyPacket>(message); this.clientinf.Status = StatusGamer.lookforgame; foreach (Player client in ServerMain.gameclients) { if (client.Name == ch.EnemyLogin && client.Status == StatusGamer.lookforgame && CheckMe(clientinf) == StatusGamer.lookforgame) { ResultChooseEnemyPacketSuccess resultchen = new ResultChooseEnemyPacketSuccess(); resultchen.Command = PacketsToServer.ResultChooseEnemyPacketSuccess; resultchen.StatusOfChoseEnemy = Status.success; resultchen.enemylogin = ch.EnemyLogin; var obj = JsonConvert.DeserializeObject <List <Card> >(File.ReadAllText("1.json")); resultchen.listAllCards = obj; strpacket = JsonConvert.SerializeObject(resultchen); Send(strpacket); return; } else { ResultChooseEnemyPacketFailed pack2 = new ResultChooseEnemyPacketFailed(); pack2.Command = PacketsToServer.ResultChooseEnemyPacketFailed; pack2.StatusOfChoseEnemy = Status.fail; strpacket = JsonConvert.SerializeObject(pack2); Send(strpacket); return; } } break; case PacketsToServer.ChoosenCardListPacket: ChoosenCardListPacket kol = JsonConvert.DeserializeObject <ChoosenCardListPacket>(message); ResultChooseCardList packetcheck = new ResultChooseCardList(); packetcheck.Command = PacketsToServer.ResultChooseCardList; if (checkkoloda(kol.Koloda)) { packetcheck.ResultOfChooseCard = Status.success; } else { packetcheck.ResultOfChooseCard = Status.fail; } strpacket = JsonConvert.SerializeObject(packetcheck); Send(strpacket); break; case PacketsToServer.StartGamePacket: StartGamePacket stgapacket = JsonConvert.DeserializeObject <StartGamePacket>(message); stgapacket.Me.Status = StatusGamer.playing; stgapacket.Enemy.Status = StatusGamer.playing; room = new Rooms(); room.Player1 = clientinf; room.Player2 = stgapacket.Enemy; StartGame(this.clientinf, stgapacket.Enemy); break; case PacketsToServer.StepPacket: StepPacket stpac = JsonConvert.DeserializeObject <StepPacket>(message); GameStep(stpac.EnemyCard, stpac.MyCard, stpac.Enemy); break; case PacketsToServer.PacketArenaCardNow: PacketArenaCardNow parcadnow = JsonConvert.DeserializeObject <PacketArenaCardNow>(message); if (parcadnow.MyCard.Price < this.clientinf.Mana) { controller.ToArena(this.clientinf, parcadnow.MyCard); SendDataToUsers send = DataToSendPrepare(room.Player2); strpacket = JsonConvert.SerializeObject(send); SendToAllPlayersInTheRoom(strpacket, room.Player2); } else { Error error = new Error(); error.Command = PacketsToServer.Error; error.ErrorToUser = "******"; } break; } }
private void ResourcePackClientResponsePacketHandle(ResourcePackClientResponsePacket pk) { if (this.PackSyncCompleted) { return; } else if (pk.ResponseStatus == ResourcePackClientResponsePacket.STATUS_REFUSED) { this.Close("disconnectionScreen.resourcePackn"); } else if (pk.ResponseStatus == ResourcePackClientResponsePacket.STATUS_SEND_PACKS) { //TODO: ResourcePackDataInfoPacket } else if (pk.ResponseStatus == ResourcePackClientResponsePacket.STATUS_HAVE_ALL_PACKS) { ResourcePackStackPacket resourcePackStackPacket = new ResourcePackStackPacket(); this.SendPacket(resourcePackStackPacket); this.HaveAllPacks = true; } else if (pk.ResponseStatus == ResourcePackClientResponsePacket.STATUS_COMPLETED && this.HaveAllPacks) { this.PackSyncCompleted = true; if (this.IsLogined) { return; } PlayerLoginEventArgs playerLoginEvent = new PlayerLoginEventArgs(this, ""); PlayerEvents.OnPlayerLogin(playerLoginEvent); if (playerLoginEvent.IsCancel) { this.Close(playerLoginEvent.KickMessage); return; } this.IsLogined = true; //if (World.Exists(worldName)) //{ // this.World = World.GetWorld(worldName); //} //else //{ this.World = World.GetMainWorld(); //} this.LoadData(); if (this.X == 0 && this.Y == 0 && this.Z == 0) { this.X = this.World.SpawnPoint.FloorX; this.Y = this.World.SpawnPoint.FloorY; this.Z = this.World.SpawnPoint.FloorZ; } StartGamePacket startGamePacket = new StartGamePacket(); startGamePacket.EntityUniqueId = this.EntityID; startGamePacket.EntityRuntimeId = this.EntityID; startGamePacket.PlayerGamemode = this.GameMode; startGamePacket.PlayerPosition = new Vector3(this.X, this.Y, this.Z); startGamePacket.Direction = new Vector2(this.Yaw, this.Pitch); startGamePacket.WorldGamemode = this.World.DefaultGameMode.GameModeToInt(); startGamePacket.Difficulty = this.World.Difficulty; startGamePacket.SpawnX = this.World.SpawnPoint.FloorX; startGamePacket.SpawnY = this.World.SpawnPoint.FloorY; startGamePacket.SpawnZ = this.World.SpawnPoint.FloorZ; startGamePacket.WorldName = this.World.Name; this.SendPacket(startGamePacket); this.SendPlayerAttribute(); AvailableCommandsPacket availableCommandsPacket = new AvailableCommandsPacket(); availableCommandsPacket.commands = Server.Instance.CommandManager.CommandList; this.SendPacket(availableCommandsPacket); this.Inventory.SendContents(); this.Inventory.ArmorInventory.SendContents(); this.Inventory.SendCreativeItems(); this.Inventory.SendMainHand(this); PlayerJoinEventArgs playerJoinEvent = new PlayerJoinEventArgs(this, $"§e{this.Name} が世界にやってきました", ""); PlayerEvents.OnPlayerJoin(playerJoinEvent); if (playerJoinEvent.IsCancel) { this.Close(playerJoinEvent.KickMessage); return; } if (!string.IsNullOrEmpty(playerJoinEvent.JoinMessage)) { Server.Instance.BroadcastMessage(playerJoinEvent.JoinMessage); } Logger.Info($"§e{this.Name} join the game"); this.SendPlayStatus(PlayStatusPacket.PLAYER_SPAWN); this.HasSpawned = true; GameRules rules = new GameRules(); rules.Add(new GameRule <bool>("ShowCoordinates", true)); GameRulesChangedPacket gameRulesChangedPacket = new GameRulesChangedPacket(); gameRulesChangedPacket.GameRules = rules; this.SendPacket(gameRulesChangedPacket); this.PlayerListEntry = new PlayerListEntry(this.LoginData.ClientUUID, this.EntityID, this.Name, this.ClientData.DeviceOS, this.ClientData.Skin, this.LoginData.XUID); AdventureSettingsEntry adventureSettingsEntry = new AdventureSettingsEntry(); adventureSettingsEntry.SetFlag(AdventureSettingsPacket.WORLD_IMMUTABLE, false); adventureSettingsEntry.SetFlag(AdventureSettingsPacket.NO_PVP, false); adventureSettingsEntry.SetFlag(AdventureSettingsPacket.AUTO_JUMP, false); adventureSettingsEntry.SetFlag(AdventureSettingsPacket.ALLOW_FLIGHT, true); adventureSettingsEntry.SetFlag(AdventureSettingsPacket.NO_CLIP, false); adventureSettingsEntry.SetFlag(AdventureSettingsPacket.FLYING, false); adventureSettingsEntry.CommandPermission = this.Op ? PlayerPermissions.OPERATOR : PlayerPermissions.MEMBER; adventureSettingsEntry.PlayerPermission = this.Op ? PlayerPermissions.OPERATOR : PlayerPermissions.MEMBER; adventureSettingsEntry.EntityUniqueId = this.EntityID; this.AdventureSettingsEntry = adventureSettingsEntry; this.SendSkin(this.Skin); Server.Instance.AddPlayer(this); this.World.AddPlayer(this); this.SendDataProperties(); Server.Instance.CraftingManager.SendPacket(this); } }
public void ReciveMessages(string message) { // try // { switch (JsonConvert.DeserializeObject <RegPacket>(message).Command) { case PacketsToServer.RegPacket: RegPacket reg = JsonConvert.DeserializeObject <RegPacket>(message); bool flag = ServerMain.Check(reg.Name); if (flag) { ResultRegPacket result = new ResultRegPacket(); result.Command = PacketsToServer.ResultRegPacket; result.StatusOfRegistr = Status.success; clientinf = new Player(reg.Name); ServerMain.gameclients.Add(clientinf); Thread.Sleep(50); lock (ServerMain.FirstList) { ServerMain.FirstList.Add(reg.Name, this.client); } result.ListAllClients = makelist(); strpacket = JsonConvert.SerializeObject(result) + "$"; Console.WriteLine("Имя клиента " + reg.Name); } else { ResultRegPacketFailed result = new ResultRegPacketFailed(); result.Command = PacketsToServer.ResultRegPacket; result.StatusOfRegistr = Status.fail; strpacket = JsonConvert.SerializeObject(result) + "$"; Console.WriteLine("Клиент с таким именем уже существует"); } Send(strpacket); ListOfAllClients list = new ListOfAllClients(); list.Command = PacketsToServer.ListOfAllClients; list.ListAllClients = makelist(); strpacket = JsonConvert.SerializeObject(list) + "$"; SendToAllPlayersInTheGameWithOutME(strpacket); break; case PacketsToServer.AskGamePacket: AskGamePacket stwp = JsonConvert.DeserializeObject <AskGamePacket>(message); StartWindowPacket stgapc = new StartWindowPacket(); //отправляю список клиента при входе в игру stgapc.Command = PacketsToServer.StartWindowPacket; stgapc.ListAllClients = makelist(); strpacket = JsonConvert.SerializeObject(stgapc) + "$"; Send(strpacket); break; case PacketsToServer.WaitGamePacket: WaitGamePacket waitfg = JsonConvert.DeserializeObject <WaitGamePacket>(message); foreach (Player b in ServerMain.gameclients) { if (b.Name == waitfg.login) { b.Status = StatusGamer.lookforgame; } } sendingList(); break; case PacketsToServer.StopLookingforGamePacket: StopLookingForGame stop = JsonConvert.DeserializeObject <StopLookingForGame>(message); foreach (Player b in ServerMain.gameclients) { if (b.Name == stop.Name) { b.Status = StatusGamer.sleeping; } } sendingList(); break; case PacketsToServer.EXIT: Exit ex = JsonConvert.DeserializeObject <Exit>(message); Console.WriteLine("Клиент покинул игру"); foreach (Player b in ServerMain.gameclients) { if (b.Name == ex.login) { ServerMain.gameclients.Remove(b); // ServerMain.FirstList.Remove(b.Name); } } ListOfAllClients list1 = new ListOfAllClients(); list1.Command = PacketsToServer.ListOfAllClients; list1.ListAllClients = makelist(); strpacket = JsonConvert.SerializeObject(list1) + "$"; SendToAllPlayersInTheGameWithOutME(strpacket); foreach (KeyValuePair <string, TcpClient> b in ServerMain.FirstList) { if (b.Key == ex.login) { b.Value.Close(); ServerMain.FirstList.Remove(b.Key); return; } } break; case PacketsToServer.ChooseEnemyPacket: ChooseEnemyPacket ch = JsonConvert.DeserializeObject <ChooseEnemyPacket>(message); this.clientinf.Status = StatusGamer.lookforgame; foreach (Player client in ServerMain.gameclients) { if (client.Name == ch.EnemyLogin && client.Status == StatusGamer.lookforgame && CheckMe(clientinf) == StatusGamer.lookforgame) { AskGamePacket packet = new AskGamePacket(); packet.Command = PacketsToServer.AskGamePacket; packet.login = ch.MyLogin; strpacket = JsonConvert.SerializeObject(packet) + "$"; SendToEnemy(strpacket, ch.EnemyLogin); return; } else if (client.Name != clientinf.Name) { ResultChooseEnemyPacketFailed pack2 = new ResultChooseEnemyPacketFailed(); pack2.Command = PacketsToServer.ResultChooseEnemyPacketFailed; pack2.StatusOfChoseEnemy = Status.fail; strpacket = JsonConvert.SerializeObject(pack2) + "$"; Send(strpacket); } } break; case PacketsToServer.AnsGamePacket: AnsGamePacket answer = JsonConvert.DeserializeObject <AnsGamePacket>(message); if (answer.state == true) { ResultChooseEnemyPacketSuccess resultchen = new ResultChooseEnemyPacketSuccess(); resultchen.Command = PacketsToServer.ResultChooseEnemyPacketSuccess; resultchen.StatusOfChoseEnemy = Status.success; resultchen.enemylogin = answer.Enemylogin; //логин врага resultchen.MyLogin = answer.Mylogin; //логин врага var obj = JsonConvert.DeserializeObject <List <CardHeroes> >(File.ReadAllText("1.json")); resultchen.listAllCards = obj; strpacket = JsonConvert.SerializeObject(resultchen) + "$"; Send(strpacket); resultchen.enemylogin = answer.Mylogin; resultchen.MyLogin = answer.Enemylogin; strpacket = JsonConvert.SerializeObject(resultchen) + "$"; SendToEnemy(strpacket, answer.Enemylogin); Rooms room = new Rooms(); room.Player1 = clientinf; room.Player2 = WhoIsHe(answer.Enemylogin); ServerMain.rooms.Add(room); } else { ResultChooseEnemyPacketFailed pack2 = new ResultChooseEnemyPacketFailed(); pack2.Command = PacketsToServer.ResultChooseEnemyPacketFailed; pack2.StatusOfChoseEnemy = Status.fail; strpacket = JsonConvert.SerializeObject(pack2) + "$"; Send(strpacket); } break; case PacketsToServer.ChoosenCardListPacket: lock (_locker) { ChoosenCardListPacket kol = JsonConvert.DeserializeObject <ChoosenCardListPacket>(message); ResultChooseCardList packetcheck = new ResultChooseCardList(); ISErrorOfEnemy err = new ISErrorOfEnemy(); err.Command = PacketsToServer.ISErrorOfEnemy; packetcheck.Command = PacketsToServer.ResultChooseCardList; if (checkkoloda(kol.Koloda)) { err.ISErr = false; packetcheck.ResultOfChooseCard = Status.success; clientinf.Deck = kol.Koloda; } else { err.ISErr = true; packetcheck.ResultOfChooseCard = Status.fail; } strpacket = JsonConvert.SerializeObject(packetcheck) + "$"; clientinf.NumRoom = InWhichRoom(clientinf); Send(strpacket); strpacket = JsonConvert.SerializeObject(err) + "$"; ////int i=InWhichRoom() ////if(ServerMain.rooms[].Player1.Name!=kol.Me) ////SendToEnemy(strpacket, rooms.Player1.Name); if (ServerMain.rooms[clientinf.NumRoom].Player2.Name != clientinf.Name) { SendToEnemy(strpacket, ServerMain.rooms[clientinf.NumRoom].Player2.Name); } else { SendToEnemy(strpacket, ServerMain.rooms[clientinf.NumRoom].Player1.Name); } } break; case PacketsToServer.StartGamePacket: lock (_locker) { StartGamePacket stgapacket = JsonConvert.DeserializeObject <StartGamePacket>(message); foreach (Player pl in ServerMain.gameclients) { if (stgapacket.Me == pl.Name || stgapacket.Enemy == pl.Name) { pl.Status = StatusGamer.playing; } } sendingList(); foreach (Player pl in ServerMain.gameclients) { if (stgapacket.Enemy == pl.Name) { StartGame(pl); } } } break; case PacketsToServer.StepPacket: StepPacket stpac = JsonConvert.DeserializeObject <StepPacket>(message); GameStep(stpac.EnemyCard, stpac.MyCard, WhoIsHe(stpac.Enemy)); break; case PacketsToServer.EndStep: EndStep step = JsonConvert.DeserializeObject <EndStep>(message); SendDataToUsers a; if (ServerMain.rooms[clientinf.NumRoom].Player1 == clientinf) { controller.IsmHoda(clientinf, ServerMain.rooms[clientinf.NumRoom].Player2); a = DataToSendPrepare(ServerMain.rooms[clientinf.NumRoom].Player2); a.AmIFirst = clientinf.IsHod; strpacket = JsonConvert.SerializeObject(a) + "$"; Send(strpacket); a = DataToSendPrepareEnemy(ServerMain.rooms[clientinf.NumRoom].Player2); strpacket = JsonConvert.SerializeObject(a) + "$"; SendToEnemy(strpacket, ServerMain.rooms[clientinf.NumRoom].Player2.Name); } else { controller.IsmHoda(clientinf, ServerMain.rooms[clientinf.NumRoom].Player1); a = DataToSendPrepare(ServerMain.rooms[clientinf.NumRoom].Player1); a.AmIFirst = clientinf.IsHod; strpacket = JsonConvert.SerializeObject(a) + "$"; Send(strpacket); a = DataToSendPrepareEnemy(ServerMain.rooms[clientinf.NumRoom].Player1); strpacket = JsonConvert.SerializeObject(a) + "$"; SendToEnemy(strpacket, ServerMain.rooms[clientinf.NumRoom].Player1.Name); } break; case PacketsToServer.PacketArenaCardNow: PacketArenaCardNow parcadnow = JsonConvert.DeserializeObject <PacketArenaCardNow>(message); if (parcadnow.MyCard.Price <= this.clientinf.Mana) { controller.ToArena(this.clientinf, parcadnow.MyCard); CardOnABoard card = new CardOnABoard(); card.Command = PacketsToServer.CardOnABoard; card.login = clientinf.Name; parcadnow.MyCard.Index = parcadnow.IndeXMyCard; card.card = parcadnow.MyCard; strpacket = JsonConvert.SerializeObject(card) + "$"; if (clientinf.Name != ServerMain.rooms[clientinf.NumRoom].Player2.Name) { SendToAllPlayersInTheRoom(strpacket, ServerMain.rooms[clientinf.NumRoom].Player2.Name); } else { SendToAllPlayersInTheRoom(strpacket, ServerMain.rooms[clientinf.NumRoom].Player1.Name); } } else { Error error = new Error(); error.Command = PacketsToServer.Error; error.ErrorToUser = MessagesToClientErrors.NotEnouthMana; } break; case PacketsToServer.EnemyLeftGamePacket: EnemyLeftGamePacket left = JsonConvert.DeserializeObject <EnemyLeftGamePacket>(message); EnemyLeftGamePacket newleft = new EnemyLeftGamePacket(); newleft.Command = PacketsToServer.EnemyLeftGamePacket; newleft.login = left.login; strpacket = JsonConvert.SerializeObject(newleft) + "$"; if (ServerMain.rooms[clientinf.NumRoom].Player1 == clientinf) { SendToEnemy(strpacket, ServerMain.rooms[clientinf.NumRoom].Player2.Name); foreach (Player player in ServerMain.gameclients) { if (player == clientinf || player == ServerMain.rooms[clientinf.NumRoom].Player2) { player.Status = StatusGamer.sleeping; sendingList(); } } } else { SendToEnemy(strpacket, ServerMain.rooms[clientinf.NumRoom].Player1.Name); foreach (Player player in ServerMain.gameclients) { if (player == clientinf || player == ServerMain.rooms[clientinf.NumRoom].Player2) { player.Status = StatusGamer.sleeping; sendingList(); } } } ServerMain.gameclients.Remove(WhoIsHe(left.login)); ServerMain.FirstList.Remove(left.login); ServerMain.rooms.Remove(ServerMain.rooms[clientinf.NumRoom]); break; } }