private bool PlayerSpawn(ref BinaryReader reader, int playerNumber) { int id = reader.ReadByte(); if (Main.netMode == 2) { id = playerNumber; } Player player = Main.player[id]; player.SpawnX = reader.ReadInt16(); player.SpawnY = reader.ReadInt16(); player.Spawn(); if (id == Main.myPlayer && Main.netMode != 2) { Main.ActivePlayerFileData.StartPlayTimer(); Player.Hooks.EnterWorld(Main.myPlayer); } if (Main.netMode != 2 || Netplay.Clients[playerNumber].State < 3) { return(true); } //如果数据中没有玩家的信息 if (!ServerSideCharacter.XmlData.Data.ContainsKey(Main.player[playerNumber].name)) { try { //创建新的玩家数据 ServerPlayer serverPlayer = ServerPlayer.CreateNewPlayer(Main.player[playerNumber]); serverPlayer.PrototypePlayer = Main.player[playerNumber]; ServerSideCharacter.XmlData.Data.Add(Main.player[playerNumber].name, serverPlayer); } catch (Exception ex) { Console.WriteLine(ex); } } if (Netplay.Clients[playerNumber].State == 3) { Netplay.Clients[playerNumber].State = 10; NetMessage.greetPlayer(playerNumber); NetMessage.buffer[playerNumber].broadcast = true; ServerSideCharacter.SyncConnectedPlayer(playerNumber); NetMessage.SendData(MessageID.SpawnPlayer, -1, playerNumber, NetworkText.Empty, playerNumber, 0f, 0f, 0f, 0, 0, 0); NetMessage.SendData(MessageID.AnglerQuest, playerNumber, -1, NetworkText.FromLiteral(Main.player[playerNumber].name), Main.anglerQuest, 0f, 0f, 0f, 0, 0, 0); return(true); } NetMessage.SendData(MessageID.SpawnPlayer, -1, playerNumber, NetworkText.Empty, playerNumber, 0f, 0f, 0f, 0, 0, 0); return(true); }
private bool TileChange(ref BinaryReader reader, int playerNumber) { if (Main.netMode == 2) { try { Player p = Main.player[playerNumber]; ServerPlayer player = p.GetServerPlayer(); int action = reader.ReadByte(); short X = reader.ReadInt16(); short Y = reader.ReadInt16(); short type = reader.ReadInt16(); int style = reader.ReadByte(); if (ServerSideCharacter.CheckSpawn(X, Y) && player.PermissionGroup.GroupName != "spadmin") { player.SendErrorInfo("Warning: Spawn is protected from change"); NetMessage.SendTileSquare(-1, X, Y, 4); return(true); } else if (ServerSideCharacter.RegionManager.CheckRegion(X, Y, player)) { player.SendErrorInfo("Warning: You don't have permission to change this tile"); NetMessage.SendTileSquare(-1, X, Y, 4); return(true); } else if (player.PermissionGroup.GroupName == "criminal") { player.SendErrorInfo("Warning: Criminals cannot change tiles"); NetMessage.SendTileSquare(-1, X, Y, 4); return(true); } } catch (Exception ex) { CommandBoardcast.ConsoleError(ex); } } return(false); }