示例#1
0
        public override void OnPlayerLeftRoom(Photon.Realtime.Player otherPlayer)
        {
            base.OnPlayerLeftRoom(otherPlayer);
            CharacterScript otherScript = (otherPlayer.TagObject as GameObject).GetComponent <CharacterScript>();

            PhotonNetwork.DestroyPlayerObjects(otherPlayer);
        }
示例#2
0
 public override void OnPlayerEnteredRoom(Photon.Realtime.Player player)
 {
     base.OnPlayerEnteredRoom(player);
     Debug.Log("player has tag object " + player.TagObject);
     // ChatManager manager = ChatManager.GetComponent<ChatManager>();
     // maybe don't need to refresh instance?
 }
示例#3
0
        internal static void Postfix(VRRig __instance)
        {
            Photon.Realtime.Player player = __instance.photonView?.Owner;

            Plugin.Log($"GorillaCosmetics: Creating CustomCosmeticsController for {player?.NickName ?? "SELF"}");
            __instance.gameObject.AddComponent <CustomCosmeticsController>();
        }
        private void ReceiveDamage(float value, PhotonMessageInfo info)
        {
            //bound to min - max
            m_currentHealth = Mathf.Clamp(m_currentHealth -= value, 0, MaxHealth);

            //Time till regeneration starts
            m_regStartTime = Time.time + TimeTillRegenerate;


            if (value > 0)
            {
                OnReceivedDamage?.Invoke(value);
            }

            if (m_photonView.IsMine)
            {
                if (m_currentHealth <= 0)
                {
                    m_lastHit = info.Sender;
                    m_photonView.Owner.SetAlive(false);
                    OnDeath();
                }
            }

            AddHits(value, info.Sender);

            OnChangeHealthEvent?.Invoke(m_currentHealth, MaxHealth);
        }
示例#5
0
 /// <summary>
 /// Online: Synchronizes the currently selected bullet of the player for all players via properties.
 /// </summary>
 public static void SetBullet(this Photon.Realtime.Player player, int value)
 {
     player.SetCustomProperties(new Hashtable()
     {
         { bullet, (byte)value }
     });
 }
示例#6
0
        /// <summary>
        /// Called after switching to a new MasterClient when the current one leaves.
        /// Here the new master has to decide whether to enable the object in the scene.
        /// </summary>
        public override void OnMasterClientSwitched(Photon.Realtime.Player newMaster)
        {
            //only execute on the new master client
            if (PhotonNetwork.LocalPlayer != newMaster)
            {
                return;
            }

            //defining cases in which the SpawnRoutine should be skipped
            switch (colType)
            {
            case CollectionType.Use:
                //the object is already active thus do not trigger a respawn coroutine
                if (obj != null && obj.activeInHierarchy)
                {
                    return;
                }
                break;

            case CollectionType.Pickup:
                //in addition to the check above, here we check for the current state too
                //if the item is not being carried around and at the home base we can skip the respawn
                if (obj != null && obj.activeInHierarchy &&
                    obj.transform.parent == PoolManager.GetPool(obj).transform&&
                    obj.transform.position == transform.position)
                {
                    return;
                }
                break;
            }

            StartCoroutine(SpawnRoutine());
        }
示例#7
0
 /// <summary>
 /// Online: synchronizes the team number of the player for all players via properties.
 /// </summary>
 public static void SetTeam(this Photon.Realtime.Player player, int teamIndex)
 {
     player.SetCustomProperties(new Hashtable()
     {
         { team, (byte)teamIndex }
     });
 }
示例#8
0
        public void AddPlayerToList(Player player)
        {
            string playerNickname = player.NickName;

            GameObject      go   = Instantiate(playerNameElement, playerList.transform, false);
            TextMeshProUGUI text = go.GetComponent <TextMeshProUGUI>();

            if (playerNickname.Equals("Host"))
            {
                text.text  = playerNickname;
                text.color = new Color32(255, 177, 66, 255);
            }
            else if (GlobalMethods.IsObserver(playerNickname))
            {
                text.text  = GlobalMethods.CleanNickname(playerNickname);
                text.color = new Color32(255, 121, 63, 255);
            }
            else
            {
                text.text  = player.NickName;
                text.color = new Color32(255, 255, 255, 255);
            }

            _activePlayers.Add(player.NickName, go);
        }
示例#9
0
 public override void OnPlayerPropertiesUpdate(Photon.Realtime.Player target, Hashtable changedProps)
 {
     base.OnPlayerPropertiesUpdate(target, changedProps);
     foreach (var prop in changedProps)
     {
         Debug.Log($"Property {prop.Key} was changed by player {target.NickName}/{target.UserId} to value {prop.Value}");
     }
 }
示例#10
0
        public void RemovePlayerFromList(Player player)
        {
            GameObject go = _activePlayers[player.NickName];

            _activePlayers.Remove(player.NickName);
            DestroyImmediate(go, true);
            Destroy(go);
        }
示例#11
0
        void IPunOwnershipCallbacks.OnOwnershipTransfered(PhotonView targetView, Photon.Realtime.Player previousOwner)
        {
            string id = targetView.ViewID.ToString();
            string p1 = previousOwner.NickName;
            string p2 = targetView.Owner.NickName;

            Debug.Log($"ViewID {id} の所有権が {p1} から {p2} に移譲されました");
        }
示例#12
0
        void CreateOtherPlayers(byte[] bytes, int width, int height, int Mode)
        {
            Photon.Realtime.Player localplayer = PhotonNetwork.LocalPlayer;
            if (PlayerPrefs.GetInt("language") == 1)
            {
                AffichagePowerUp.Nature = "Chargement de la partie en cours...";
            }
            else
            {
                AffichagePowerUp.Nature = "Loading...";
            }
            AffichagePowerUp.affich = true;
            CreateRoomMenu.Mode     = Mode;
            Texture2D map = new Texture2D(width, height);

            map.LoadRawTextureData(bytes);
            Map.instance.Chargement(map);
            bool not_found = true;
            int  i         = 1;

            while (not_found && i < PhotonNetwork.PlayerList.Length)
            {
                if (PhotonNetwork.PlayerList[i] == localplayer)
                {
                    not_found = false;
                }
                else
                {
                    i++;
                }
            }
            Map.instance.Change(false);
            CasqueCRS.instance.Change(true);
            int coorp = CreateRoomMenu.where[i];

            PhotonNetwork.Instantiate(Path.Combine("Prefabs", "Attente"),
                                      new Vector3((float)(4 * (coorp % CreateRoomMenu.Xm) + 2.5),
                                                  (float)3.75, (float)(4 * (coorp / CreateRoomMenu.Xm) + 2.5)), Quaternion.identity);
            GameObject player = PhotonNetwork.Instantiate(Path.Combine("Prefabs", "Player"),
                                                          new Vector3((float)(4 * (coorp % CreateRoomMenu.Xm) + 2.5), 3,
                                                                      (float)(4 * (coorp / CreateRoomMenu.Xm) + 2.5)), Quaternion.identity);

            if (Mode == 0)
            {
                PhotonNetwork.Instantiate(Path.Combine("Prefabs", "Plafond"),
                                          new Vector3((float)(4 * (coorp % CreateRoomMenu.Xm) + 2.5),
                                                      (float)3.75, (float)(4 * (coorp / CreateRoomMenu.Xm) + 2.5)), Quaternion.identity);
            }
            else
            {
                PhotonNetwork.Instantiate(Path.Combine("Prefabs", "PlafondSombre"),
                                          new Vector3((float)(4 * (coorp % CreateRoomMenu.Xm) + 2.5),
                                                      (float)3.75, (float)(4 * (coorp / CreateRoomMenu.Xm) + 2.5)), Quaternion.identity);
            }
            CasqueCRS.instance.Change(false);
            player.GetComponent <PlayerNetwork>().isLocal = true;
            print("Le joueur a été instancié");
        }
示例#13
0
 public override void OnPlayerEnteredRoom(Photon.Realtime.Player other)
 {
     Debug.LogFormat("OnPlayerEnteredRoom() {0}", other.NickName);
     if (PhotonNetwork.IsMasterClient && ClientBattleManager.LocalPlayerInstance == null)
     {
         Debug.LogFormat("OnPlayerEnteredRoom IsMasterClient {0}", PhotonNetwork.IsMasterClient);
         LoadArena();
     }
 }
示例#14
0
 /// <summary>
 /// Online: Clears all networked variables of the player via properties in one instruction.
 /// </summary>
 public static void Clear(this Photon.Realtime.Player player)
 {
     player.SetCustomProperties(new Hashtable()
     {
         { PlayerExtensions.bullet, (byte)0 },
         { PlayerExtensions.health, (byte)0 },
         { PlayerExtensions.shield, (byte)0 }
     });
 }
示例#15
0
 public override void OnPlayerLeftRoom(Photon.Realtime.Player other)
 {
     Debug.LogFormat("OnPlayerLeftRoom() {0}", other.NickName);
     if (PhotonNetwork.IsMasterClient)
     {
         Debug.LogFormat("OnPlayerLeftRoom IsMasterClient {0}", PhotonNetwork.IsMasterClient);
         LoadArena();
     }
 }
示例#16
0
        public override void OnPlayerLeftRoom(Photon.Realtime.Player otherPlayer)
        {
            Debug.LogFormat("OnPlayerLeftRoom() {0}", otherPlayer.NickName);     // seen when other disconnects

            if (PhotonNetwork.IsMasterClient)
            {
                Debug.LogFormat("OnPlayerLeftRoom IsMasterClient {0}", PhotonNetwork.IsMasterClient);     // called before OnPlayerLeftRoom
            }
        }
示例#17
0
        private static void OnMasterChange(Photon.Realtime.Player __0)
        {
            if (__0 == null)
            {
                return;
            }

            OnMasterChanged?.DelegateSafeInvoke(__0);
        }
示例#18
0
        public override void OnPlayerEnteredRoom(Photon.Realtime.Player newPlayer)
        {
            Debug.LogFormat("OnPlayerEnteredRoom() {0}", newPlayer.NickName);     // not seen if you're the player connecting

            if (PhotonNetwork.IsMasterClient)
            {
                Debug.LogFormat("OnPlayerEnteredRoom IsMasterClient {0}", PhotonNetwork.IsMasterClient);     // called before OnPlayerLeftRoom
            }
        }
示例#19
0
 protected override void RPCActivateItem(Photon.Realtime.Player photonPlayer)
 {
     if (IsMine)
     {
         Player player = Player.GetFromPhotonPlayer(photonPlayer);
         player.GivePatch();
     }
     Despawn();
 }
        NetworkPlayersListElement Create(PunPlayer player)
        {
            var instance = Instantiate(prefab, transform);

            var element = instance.GetComponent <NetworkPlayersListElement>();

            element.Init(player);

            return(element);
        }
示例#21
0
        public override void OnPlayerEnteredRoom(Photon.Realtime.Player newPlayer)
        {
            Debug.Log($"Player {newPlayer.NickName} entered");

            if (PhotonNetwork.IsMasterClient)
            {
                Debug.Log($"Player is Master : {PhotonNetwork.IsMasterClient}");
                LoadLevel();
            }
        }
示例#22
0
        public override void OnPlayerLeftRoom(Photon.Realtime.Player otherPlayer)
        {
            Debug.Log($"Player {otherPlayer.NickName} has left");

            if (PhotonNetwork.IsMasterClient)
            {
                Debug.Log($"Player is Master : {PhotonNetwork.IsMasterClient}");
                LoadLevel();
            }
        }
示例#23
0
 public void Init(Vector3 direction, Photon.Realtime.Player player, GameObject owner, float damage)
 {
     m_ownerObject = owner;
     m_ownerPlayer = player;
     m_damage      = damage;
     m_direction   = direction;
     m_ownerView   = owner.GetComponent <PhotonView>();
     transform.LookAt(transform.position + direction * 100);
     m_isMoving = true;
 }
        void OnPlayerEntered(PunPlayer player)
        {
            List.Add(player);

            if (OnJoined != null)
            {
                OnJoined(player);
            }

            InvokeChange();
        }
        void OnPlayerLeft(PunPlayer player)
        {
            List.Remove(player);

            if (OnLeft != null)
            {
                OnLeft(player);
            }

            InvokeChange();
        }
 /// <summary>History of received Damage.</summary>
 /// <param name="value">dealed damage</param>
 /// <param name="from">player who hitted</param>
 private void AddHits(float value, Photon.Realtime.Player from)
 {
     if (!m_receivedHits.ContainsKey(from))
     {
         m_receivedHits.Add(from, value);
     }
     else
     {
         m_receivedHits[from] += value;
     }
 }
示例#27
0
        public void Setup(int senderId, int playerViewId)
        {
            Debug.LogError(senderId + " " + playerViewId);
            name = "RemotePlayer: " + senderId;
            m_playerSync.IsRemotePlayer = true;
            m_playerSync.playerId       = senderId;
            m_playerPhotonView.ViewID   = playerViewId;

            m_photonPlayer    = Array.Find(PhotonNetwork.PlayerListOthers, item => item.ActorNumber == senderId);
            m_playerName.text = m_photonPlayer.NickName;
        }
示例#28
0
        private void Death(Photon.Realtime.Player lastHit)
        {
            ScriptableTextDisplay.Instance.InitializeScriptableText(3, PlayerHealthModel.transform.position,
                                                                    "Killed by " + lastHit.NickName + "!");
            if (m_killFeed != null)
            {
                m_killFeed.AddFeed(lastHit);
            }

            Destroy(gameObject);
        }
示例#29
0
        /// <summary>
        ///     玩家数值更新
        /// </summary>
        /// <param name="targetPlayer">玩家</param>
        /// <param name="changedProps">改变数值组</param>
        public override void OnPlayerPropertiesUpdate(Photon.Realtime.Player targetPlayer, Hashtable changedProps)
        {
            base.OnPlayerPropertiesUpdate(targetPlayer, changedProps);
            Debug.Log("Properties Changed!");

            if (targetPlayer != null && Equals(targetPlayer, playerBSideOnline.PlayerPhoton))
            {
                // 需要优化
                playerBSideOnline.UpdateRemotePlayerProperties();
            }
        }
示例#30
0
        public static Treveris GetTreverisByPlayer(Player player)
        {
            if (_currentTreveris != null)
            {
                _currentTreveris.gameObject.SetActive(false);
            }

            _currentTreveris = _treveri[player.ActorNumber];
            _currentTreveris.gameObject.SetActive(true);
            return(_currentTreveris);
        }