コード例 #1
0
 private void CmdSpawnExplosionCollider(Vector3 pos, PlayerInfoPacket playerInfoPacket)
 {
     GameObject col = Instantiate(splashCollider);
     col.transform.position = pos;
     col.GetComponent<SplashDamagerCollider>().SetOwner(playerInfoPacket);
     NetworkServer.Spawn(col); // TODO We might be able to do all collisions on the server?
 }
コード例 #2
0
    public void OnPlayerJoinGame(PlayerJoinEventArgs playerJoinEvent)
    {
        IPlayer player = playerJoinEvent.Player;

        using var packet = new PlayerInfoPacket(PlayerInfoActionType.Add, player);

        IEnumerable <IMinecraftUser> players = _server.ConnectedPlayers.Where(x => x.Player.Id != player.Id);

        _server.SendTo(players, packet);
    }
コード例 #3
0
    public void RegisterPlayer(PlayerInfoPacket playerInfo)
    {
        if(!playerDetails.ContainsKey(playerInfo.networkID)) {
            ServerOnlyPlayerDisplay.instance.Log(playerInfo.playerName + " connected");
            playerDetails.Add(playerInfo.networkID, playerInfo);

            PlayerInfoPacket[] packets = new PlayerInfoPacket[playerDetails.Count];
            playerDetails.Values.CopyTo(packets, 0);
            RpcUpdatePlayers(packets);
        }
    }
コード例 #4
0
    private void CmdTellServerPlayerInfo(string name, string team)
    {
        playerName = name;
        playerTeam = team;
        gameObject.name = playerName;
        modelChanger.SetModelColour(playerTeam);
        RpcSetClientPlayerInfo(playerName, playerTeam);

        NetworkInstanceId _netID = gameObject.GetComponent<NetworkIdentity>().netId;
        PlayerInfoPacket packet = new PlayerInfoPacket(playerName, playerTeam, _netID);
        ServerPlayerManager.instance.RegisterPlayer(packet);
    }
コード例 #5
0
    public void OnPlayerLeaveGame(PlayerLeaveEventArgs playerLeaveEvent)
    {
        IPlayer player = playerLeaveEvent.Player;

        using var packet             = new PlayerInfoPacket(PlayerInfoActionType.Remove, player);
        using var removePlayerPacket = new DestroyEntitiesPacket(player);

        IEnumerable <IMinecraftUser> players = _server.ConnectedPlayers.Where(x => x.Player.Id != player.Id);

        _server.SendTo(players, packet);
        _server.SendTo(players, removePlayerPacket);
    }
コード例 #6
0
 public void AddScore(NetworkInstanceId id, int newScore)
 {
     if(playerDetails.ContainsKey(id)) {
         playerDetails[id] = new PlayerInfoPacket( // This doesn't feel right..
             playerDetails[id].playerName,
             playerDetails[id].playerTeam,
             playerDetails[id].networkID,
             playerDetails[id].score + newScore
         );
         RpcUdateScore(playerDetails[id]);
     }
 }
コード例 #7
0
    /// <summary>
    /// Updates the player library with data from a <see cref="PlayerInfoPacket"/>
    /// </summary>
    /// <param name="packet"></param>
    public void HandlePlayerInfoPacket(PlayerInfoPacket packet)
    {
        foreach (var action in packet.Actions)
        {
            // if removing a player, there's no need to look it up or create it
            if (packet.Type == PlayerInfoPacket.ActionType.RemovePlayer)
            {
                _players.Remove(action.UUID);
                continue;
            }

            // try to lookup player, otherwise add it to the player list
            if (!_players.TryGetValue(action.UUID, out Player player))
            {
                player = new Player();
                _players.Add(action.UUID, player);
            }

            switch (packet.Type)
            {
            case PlayerInfoPacket.ActionType.AddPlayer:
                player.GameMode    = action.GameMode;
                player.Name        = action.Name;
                player.Ping        = action.Ping;
                player.DisplayName = action.DisplayName;
                player.UUID        = action.UUID;

#if UNITY_EDITOR
                Debug.Log($"{player.Name} props: {string.Join(", ", action.Properties?.Select(x => x?.ToString()))}");
#endif
                break;

            case PlayerInfoPacket.ActionType.UpdateDisplayName:
                player.DisplayName = action.DisplayName;
                break;

            case PlayerInfoPacket.ActionType.UpdateGameMode:
                player.GameMode = action.GameMode;
                break;

            case PlayerInfoPacket.ActionType.UpdateLatency:
                player.Ping = action.Ping;
                break;

            default:
                throw new Exception($"Invalid player info action type: {packet.Type}");
            }
        }

        // update player list after handling all actions
        PlayerList?.UpdatePlayerList(_players.Values.ToArray());
    }
コード例 #8
0
 public void ResetAllScores()
 {
     List<NetworkInstanceId> keyList = new List<NetworkInstanceId> (playerDetails.Keys);
     foreach (NetworkInstanceId key in keyList) {
         playerDetails[key] = new PlayerInfoPacket( // This doesn't feel right either..
             playerDetails[key].playerName,
             playerDetails[key].playerTeam,
             playerDetails[key].networkID,
             0
         );
         RpcUdateScore(playerDetails[key]);
     }
 }
コード例 #9
0
ファイル: Program.cs プロジェクト: davidonete/Boom-Box
    static byte[] GetBytesFromPacket(PlayerInfoPacket packet)
    {
        int size = System.Runtime.InteropServices.Marshal.SizeOf(packet);

        byte[] bytes = new byte[size];

        IntPtr ptr = Marshal.AllocHGlobal(size);

        Marshal.StructureToPtr(packet, ptr, true);
        Marshal.Copy(ptr, bytes, 0, size);
        Marshal.FreeHGlobal(ptr);
        return(bytes);
    }
コード例 #10
0
    /// <summary>
    /// Updates the player library with data from a <see cref="PlayerInfoPacket"/>
    /// </summary>
    /// <param name="packet"></param>
    public void HandlePlayerInfoPacket(PlayerInfoPacket packet)
    {
        foreach (var action in packet.Actions)
        {
            // if removing a player, there's no need to look it up or create it
            if (packet.Type == PlayerInfoPacket.ActionType.RemovePlayer)
            {
                Players.Remove(action.UUID);
                continue;
            }

            // try to lookup player, otherwise add it to the player list
            if (!Players.TryGetValue(action.UUID, out Player player))
            {
                player = new Player();
                Players.Add(action.UUID, player);
            }

            switch (packet.Type)
            {
            case PlayerInfoPacket.ActionType.AddPlayer:
                player.GameMode    = action.GameMode;
                player.Name        = action.Name;
                player.Ping        = action.Ping;
                player.DisplayName = action.DisplayName;
                player.UUID        = action.UUID;
                break;

            case PlayerInfoPacket.ActionType.UpdateDisplayName:
                player.DisplayName = action.DisplayName;
                break;

            case PlayerInfoPacket.ActionType.UpdateGameMode:
                player.GameMode = action.GameMode;
                break;

            case PlayerInfoPacket.ActionType.UpdateLatency:
                player.Ping = action.Ping;
                break;

            default:
                throw new Exception($"Invalid player info action type: {packet.Type}");
            }
        }

        // update player list after handling all actions
        PlayerList?.UpdatePlayerList(Players.Values.ToArray());
    }
コード例 #11
0
ファイル: Player.cs プロジェクト: Eastrall/Redstone
    public void CheckKeepAlive(long keepAliveId)
    {
        if (_keepAliveIdQueue.TryDequeue(out long nextKeepAliveId))
        {
            if (nextKeepAliveId != keepAliveId)
            {
                _user.Disconnect("Keep-alive id doesn't match.");
                return;
            }

            Ping = (int)(TimeUtilities.GetElapsedMilliseconds() - nextKeepAliveId);

            using var playerInfoLatencyPacket = new PlayerInfoPacket(PlayerInfoActionType.UpdateLatency, this);
            World.SendToAll(playerInfoLatencyPacket);
        }
    }
コード例 #12
0
    public void TakeDamageOnServer(int amount, PlayerInfoPacket fromPlayerInfo, bool forceDamage = false)
    {
        lastPlayerToDamage = fromPlayerInfo;

        if(!forceDamage && !string.IsNullOrEmpty(fromPlayerInfo.playerTeam)) { // No friendly damage
            if(fromPlayerInfo.playerTeam.Equals(thisPlayerInfo.playerTeam)) {
                return;
            }
        }

        NetworkServer.FindLocalObject(lastPlayerToDamage.networkID).GetComponent<PlayerHUD>().RpcShowHitmarker(); // only works on host

        if(currentHealth > 0) currentHealth -= amount; // So that it doesn't show negative health for players
        if(currentHealth <= 0 && !playerFaint.isFainted) {
            playerFaint.FaintOnServer();
        }
        RpcUpdatePlayerHeath(fromPlayerInfo, currentHealth);
    }
コード例 #13
0
ファイル: PlayerHUD.cs プロジェクト: gcoope/HeroesAndVillains
    // Faint handling
    public void PlayerHasFainted(PlayerInfoPacket lastPlayerTohurt)
    {
        string newRespawnText = "";

        // Set respawn text
        if(lastPlayerTohurt.playerName == playerInfo.playerName) {
            if(playerInfo.playerTeam == Settings.HeroTeam)	newRespawnText = "<color=cyan>You</color> destroyed yourself!";
            else newRespawnText = "<color=red>You</color> destroyed yourself!";
        } else { // Wasn't self-kill
            if(playerInfo.playerTeam == Settings.HeroTeam) newRespawnText = "<color=red>" + lastPlayerTohurt.playerName + "</color> destroyed <color=cyan>you!</color>";
            else newRespawnText = "<color=cyan>" + lastPlayerTohurt.playerName + "</color> destroyed <color=red>you!</color>";
        }

        newRespawnText += "\nPress R to respawn";
        respawnText.text = newRespawnText;

        FadeOutScreen(ingameScreen);
        FadeInScreen(respawnScreen);
    }
コード例 #14
0
        public void LoadProcessors()
        {
            myServer.AssignProcessor(delegate(Packet P)
            {
                LoginPacket myPacket = (LoginPacket)P;
                Console.WriteLine(myPacket.Username + " attempted to connect!");
                IConnectionWrapper myData;
                if (myLoginHandler.VerifyPlayerLogin(myPacket.Username, myPacket.Sender, myPacket.GetCreationTime(), myPacket.GetSHA(), out myData))
                {
                    var PDataInfo = (PlayerData)myData.MyExternalData;
                    if (PDataInfo != null)
                    {
                        PlayerInfoPacket myInfo = new PlayerInfoPacket();
                        myInfo.NewChar          = false;
                        myInfo.myMap            = myMapHandler.GetPlayerMap(PDataInfo);
                        myInfo.Sender           = myPacket.Sender;
                        myServer.Send(myInfo, NetDeliveryMethod.ReliableOrdered);
                        myMapHandler.Login(myData);
                    }
                    else
                    {
                        ThreadPool.QueueUserWorkItem(delegate(object State)
                        {
                            PlayerInfoPacket myInfo = new PlayerInfoPacket();
                            myInfo.Sender           = myPacket.Sender;
                            PDataInfo      = new PlayerData();
                            myInfo.NewChar = true;
                            myInfo.SetPlayerData(PDataInfo);
                            myInfo.myMap           = myMapHandler.PlaceInFirstAvailable(myInfo.Sender, PDataInfo);
                            PDataInfo.CurrentMapID = PDataInfo.CurrentMapID;
                            myLoginHandler.UpdateInfo(myPacket.GetSHA(), PDataInfo);
                            myServer.Send(myInfo, NetDeliveryMethod.ReliableOrdered);
                        });
                    }
                    Console.WriteLine("User Authenticated Successfully!\n Awaiting Character Creation!");
                }
                else
                {
                    LoginFailedPacket myAck = new LoginFailedPacket();
                    myAck.Sender            = myPacket.Sender;
                    myServer.Send(myAck, NetDeliveryMethod.ReliableOrdered);
                    Console.WriteLine("User Authentication Failed!");
                }
            }, typeof(LoginPacket));

            myServer.AssignProcessor(delegate(Packet P)
            {
                IConnectionWrapper mySender;
                if ((mySender = myLoginHandler.isLoggedIn(P.UserID)) != null)
                {
                    AnnounceToMapPacket myPacket = (AnnounceToMapPacket)P;
                }
            }, typeof(AnnounceToMapPacket));

            myServer.AssignProcessor(delegate(Packet P)
            {
                IConnectionWrapper mySender;
                if ((mySender = myLoginHandler.isLoggedIn(P.UserID)) != null)
                {
                    IConnectionWrapper Recipient;
                    WhisperMessagePlayer myPacket = (WhisperMessagePlayer)P;
                    if ((Recipient = myLoginHandler.isLoggedIn(myPacket.RecipientUserID)) != null)
                    {
                        PlayerData Recip  = (PlayerData)Recipient.MyExternalData;
                        PlayerData Sender = (PlayerData)mySender.MyExternalData;
                        if (Recip.CurrentMapID.CompareTo(Sender.CurrentMapID) == 0)
                        {
                            myPacket.Sender = Recipient.GetConnection();
                            myServer.Send(myPacket, NetDeliveryMethod.ReliableOrdered);
                        }
                    }
                    else
                    {
                        //TODO: send response packet.
                    }
                }
            }, typeof(WhisperMessagePlayer));

            myServer.AssignProcessor(delegate(Packet P)
            {
                IConnectionWrapper mySender;
                if ((mySender = myLoginHandler.isLoggedIn(P.UserID)) != null)
                {
                    SendMessageLocalAreaPacket myPacket = (SendMessageLocalAreaPacket)P;
                }
            }, typeof(SendMessageLocalAreaPacket));

            myServer.AssignProcessor(delegate(Packet P)
            {
                IConnectionWrapper mySender;
                if ((mySender = myLoginHandler.isLoggedIn(P.UserID)) != null)
                {
                    SendMessageMapAreaPacket myPacket = (SendMessageMapAreaPacket)P;
                    //List<PlayerData> myData = myMapHandler.GetPlayersOnMap();
                }
            }, typeof(SendMessageMapAreaPacket));

            myServer.AssignProcessor(delegate(Packet P)
            {
                IConnectionWrapper mySender;
                if ((mySender = myLoginHandler.isLoggedIn(P.UserID)) != null)
                {
                    AnnounceToAllMapsPacket myPacket = (AnnounceToAllMapsPacket)P;
                }
            }, typeof(AnnounceToAllMapsPacket));


            myServer.AssignProcessor(delegate(Packet P)
            {
                IConnectionWrapper Wrapper;
                if ((Wrapper = myLoginHandler.isLoggedIn(P.UserID)) != null)
                {
                    myLoginHandler.Logout(P.UserID);
                    myMapHandler.Logout(Wrapper);
                }
            }, typeof(DisconnectPacket));

            myServer.AssignProcessor(delegate(Packet P)
            {
                IConnectionWrapper myValue = myLoginHandler.isLoggedIn(P.UserID);
                if (myValue != null)
                {
                    Map myMap = myMapHandler.GetPlayerMap((PlayerData)myValue.MyExternalData);
                    foreach (NetConnection A in myMap.GetPlayerIPs())
                    {
                        PlayerMapConnectionPacket myNewPlayer = new PlayerMapConnectionPacket();
                        myNewPlayer.SetNewPlayerData((PlayerData)myValue.MyExternalData);
                        myNewPlayer.Sender = A;
                        myServer.Send(myNewPlayer, NetDeliveryMethod.ReliableOrdered);
                    }
                }
            }, typeof(MapLoadedPacket));
            myServer.AssignProcessor(delegate(Packet P)
            {
                CharacterCreationPacket Packet = ((CharacterCreationPacket)P);
                IConnectionWrapper myValue     = myLoginHandler.isLoggedIn(Packet.UserID);
                if (myValue != null)
                {
                    ((PlayerData)myValue.MyExternalData).SetAnimation(Packet.GetAnimationInfo());
                    ((PlayerData)myValue.MyExternalData).SetName(Packet.GetName());
                    Map myMap = myMapHandler.GetPlayerMap(((PlayerData)myValue.MyExternalData));
                    foreach (NetConnection A in myMap.GetPlayerIPs())
                    {
                        PlayerMapConnectionPacket myNewPlayer = new PlayerMapConnectionPacket();
                        myNewPlayer.SetNewPlayerData(((PlayerData)myValue.MyExternalData));
                        myNewPlayer.Sender = A;
                        myServer.Send(myNewPlayer, NetDeliveryMethod.ReliableOrdered);
                    }
                }
            }, typeof(CharacterCreationPacket));
        }
コード例 #15
0
        private static async Task LoginStart(Client client, byte[] data)
        {
            String username = Utils.ReadString(new MemoryStream(data), 16);

            Console.WriteLine("Client attempting to authenticate as " + username);

            Guid guid = new Guid();
            LoginSuccessPacket loginSuccessPacket = new LoginSuccessPacket(client, guid, username);
            await loginSuccessPacket.SendToClient();

            client.State  = ClientState.Play;
            client.Player = new Player(client, username, guid);

            JoinGamePacket joinGamePacket = new JoinGamePacket(client, client.Player.EntityId, (byte)client.Player.Gamemode, 0, 0x0000000000000000);
            await joinGamePacket.SendToClient();

            Console.WriteLine("Client authenticated as " + username);

            HeldItemChangePacket heldItemChangePacket = new HeldItemChangePacket(client, 0);
            await heldItemChangePacket.SendToClient();

            client.Player.Y = 68;
            PlayerPositionLookPacket playerPositionLookPacket = new PlayerPositionLookPacket(client, client.Player);
            await playerPositionLookPacket.SendToClient();

            PlayerInfoPacket playerInfoPacket = new PlayerInfoPacket(client, PlayerInfoAction.AddPlayer);

            playerInfoPacket.AddPlayer(client.Player);
            await playerInfoPacket.SendToClient();

            playerInfoPacket = new PlayerInfoPacket(client, PlayerInfoAction.UpdateLatency);
            playerInfoPacket.AddPlayer(client.Player);
            await playerInfoPacket.SendToClient();

            Region region = new Region(0, 0);

            ChunkColumn column = new ChunkColumn(0, 0);

            column.FillTest();
            ChunkDataPacket chunkDataPacket = new ChunkDataPacket(client, column);
            await chunkDataPacket.SendToClient();


            column = new ChunkColumn(1, 0);
            column.FillTest();
            chunkDataPacket = new ChunkDataPacket(client, column);
            await chunkDataPacket.SendToClient();

            column = new ChunkColumn(1, 1);
            column.FillTest();
            chunkDataPacket = new ChunkDataPacket(client, column);
            await chunkDataPacket.SendToClient();

            column = new ChunkColumn(0, 1);
            column.FillTest();
            chunkDataPacket = new ChunkDataPacket(client, column);
            await chunkDataPacket.SendToClient();

            column = new ChunkColumn(-1, 1);
            column.FillTest();
            chunkDataPacket = new ChunkDataPacket(client, column);
            await chunkDataPacket.SendToClient();

            column = new ChunkColumn(-1, -1);
            column.FillTest();
            chunkDataPacket = new ChunkDataPacket(client, column);
            await chunkDataPacket.SendToClient();

            column = new ChunkColumn(1, -1);
            column.FillTest();
            chunkDataPacket = new ChunkDataPacket(client, column);
            await chunkDataPacket.SendToClient();

            column = new ChunkColumn(0, -1);
            column.FillTest();
            chunkDataPacket = new ChunkDataPacket(client, column);
            await chunkDataPacket.SendToClient();

            column = new ChunkColumn(-1, -0);
            column.FillTest();
            chunkDataPacket = new ChunkDataPacket(client, column);
            await chunkDataPacket.SendToClient();

            Console.WriteLine("Sent");
        }
コード例 #16
0
 public void CmdTakeDamageOnServer(int amount, PlayerInfoPacket fromPlayerInfo, bool forceDmg)
 {
     TakeDamageOnServer(amount, fromPlayerInfo, forceDmg);
 }
コード例 #17
0
 public void SetOwner(PlayerInfoPacket infoPacket)
 {
     playerPacket = infoPacket;
 }
コード例 #18
0
        public void HandleLogin(Packet aPacket)
        {
            LoginPacket myPacket = (LoginPacket)aPacket;

            Console.WriteLine(myPacket.Username + " attempted to connect!");
            if (myWrapper.VerifyUser(myPacket.Username, myPacket.GetCreationTime(), myPacket.GetSHA()))
            {
                if (File.Exists("./Users/" + myPacket.Username + ".chr"))
                {
                    BinaryFormatter myConverter = new BinaryFormatter();
                    var             Stream      = File.Open("./Users/" + myPacket.Username + ".chr", FileMode.Open);//TODO: handle this for threads
                    PlayerData      myData      = (PlayerData)myConverter.Deserialize(Stream);
                    ThreadPool.QueueUserWorkItem(delegate(object State)
                    {
                        PlayerInfoPacket myNewPlayerPacket = new PlayerInfoPacket();
                        myNewPlayerPacket.SetPlayerData(myData);
                        myNewPlayerPacket.NewChar = false;
                        String myID = Guid.NewGuid().ToString();

                        while (myActiveConnectionsByPublicUserID.ContainsKey(myID))
                        {
                            myID = Guid.NewGuid().ToString();
                        }
                        myActiveConnectionsByUsername.TryAdd(myPacket.Username, myPacket.Sender);
                        myActiveConnectionsByUserID.TryAdd(myPacket.UserID, myPacket.Sender);
                        myActiveConnectionsByPublicUserID.TryAdd(myID, myPacket.Sender);
                        myData.PublicUserID = myID;
                        SendMapServer(myNewPlayerPacket, NetDeliveryMethod.ReliableOrdered);
                        Send(myNewPlayerPacket, myNewPlayerPacket.Sender, NetDeliveryMethod.ReliableOrdered);
                    });
                }
                else
                {
                    ThreadPool.QueueUserWorkItem(delegate(object State)
                    {
                        if (!myActiveConnectionsByUserID.ContainsKey(myPacket.UserID))
                        {
                            PlayerInfoPacket myNewPlayerPacket = new PlayerInfoPacket();
                            myNewPlayerPacket.Sender           = myPacket.Sender;
                            PlayerData myData         = new PlayerData();
                            myNewPlayerPacket.NewChar = true;
                            myNewPlayerPacket.SetPlayerData(myData);
                            String myID = Guid.NewGuid().ToString();
                            while (myActiveConnectionsByPublicUserID.ContainsKey(myID))
                            {
                                myID = Guid.NewGuid().ToString();
                            }
                            myActiveConnectionsByUsername.TryAdd(myPacket.Username, myPacket.Sender);
                            myActiveConnectionsByUserID.TryAdd(myPacket.UserID, myPacket.Sender);
                            myActiveConnectionsByPublicUserID.TryAdd(myID, myPacket.Sender);
                            myData.PublicUserID = myID;
                            SendMapServer(myNewPlayerPacket, NetDeliveryMethod.ReliableOrdered);
                            Send(myNewPlayerPacket, myNewPlayerPacket.Sender, NetDeliveryMethod.ReliableOrdered);
                        }
                    });
                }
                Console.WriteLine("User Authenticated Successfully!");
            }
            else
            {
                LoginFailedPacket myAck = new LoginFailedPacket();
                myAck.Sender = myPacket.Sender;
                Send(myAck, myPacket.Sender, NetDeliveryMethod.ReliableOrdered);
                Console.WriteLine("User Authentication Failed!");
            }
        }
コード例 #19
0
        void Start()
        {
            playerInfo = gameObject.GetComponent<BasePlayerInfo>();
            playerHealth = gameObject.GetComponent<PlayerHealth>();
            playerCamera = gameObject.GetComponent<PlayerCamera>();

            splashCollider = Resources.Load<GameObject>("Prefabs/Physics/SplashDamageCollider");

            rapidFireCooldown = Settings.RapidFireCooldownSpeed;

            playerCameraTransform = gameObject.GetComponentInChildren<Camera>().transform;
            if(isLocalPlayer) {
                playerGravityBody = gameObject.GetComponent<PlayerGravityBody>();
                playerHUD = gameObject.GetComponent<PlayerHUD> ();
            }

            localPlayerInfoPacket = new PlayerInfoPacket(playerInfo.playerName, playerInfo.playerTeam, netId);
        }
コード例 #20
0
 private void CmdRaycastHit(GameObject player, PlayerInfoPacket playerInfoPacket)
 {
     player.GetComponent<PlayerHealth>().TakeDamageOnServer(20, playerInfoPacket);
 }
コード例 #21
0
    private void SendPlayerInfo(IMinecraftUser user, PlayerInfoActionType actionType)
    {
        using var packet = new PlayerInfoPacket(actionType, _server.ConnectedPlayers.Select(x => x.Player));

        user.Send(packet);
    }
コード例 #22
0
 private void RpcRemovePlayer(PlayerInfoPacket playerToRemove)
 {
     gameObject.DispatchGlobalEvent(NetworkEvent.PlayerDisconnected, new object[]{playerToRemove});
 }
コード例 #23
0
 private void RpcUdateScore(PlayerInfoPacket updatedPlayerDetails)
 {
     gameObject.DispatchGlobalEvent(NetworkEvent.UpdatePlayerInfo, new object[]{updatedPlayerDetails});
 }
コード例 #24
0
 private void RpcUpdatePlayerHeath(PlayerInfoPacket fromPlayerInfo, int newHealthValue)
 {
     playerHUD.ShowDamageIndicator();
     if(isLocalPlayer) AudioKeys.TakeDamage.PlaySound();
     playerCamera.ShakeCamera();
     lastPlayerToDamage = fromPlayerInfo;
     currentHealth = newHealthValue;
     UpdateHealthText ();
 }
コード例 #25
0
 private void RpcUpdatePlayers(PlayerInfoPacket[] playerInfoArray)
 {
     gameObject.DispatchGlobalEvent(NetworkEvent.NewPlayerConnected, new object[]{playerInfoArray});
 }