示例#1
0
 void OnJoinedRoom()
 {
     //        GameObject player =  PhotonNetwork.Instantiate(prefabName, SpawnPoints[i].position, SpawnPoints[i].rotation, group);
     player = PhotonNetwork.Instantiate(prefabName, SpawnPoint1.position, SpawnPoint1.rotation, group);
        // player.tag = Globals.Tags.Player.ToString();
     player.transform.position = SpawnPoints[player.GetPhotonView().viewID/1000%2].position;
     player.SetActive(true);
     Debug.Log("prefab Name:" + prefabName + " number: " + player.GetPhotonView().viewID +"\nIsActive: " + player.GetActive());
     //create to spawn points
 }
    private void InstanciarObjeto()
    {
        GameObject instancia = Instantiate(objetoAInstanciar, new Vector3(pv.gameObject.transform.position.x, pv.gameObject.transform.position.y + 2, pv.gameObject.transform.position.z), Quaternion.identity);

        PhotonNetwork.AllocateViewID(instancia.GetPhotonView());
        print(string.Concat("Se ha instanciado de forma automática el objeto ", instancia.name, "con ViewID", instancia.GetPhotonView().ViewID));
    }
示例#3
0
    void OnParticleCollision(GameObject other)
    {
        wizard = GetComponentInParent <Wizard>();
        PhotonView pv = other.GetPhotonView();

        pv.RPC("OnDamage", RpcTarget.MasterClient, wizard.skillDamage);
    }
示例#4
0
        private BehaviourState ShootSummonProjectile()
        {
            //turn to look at enemy
            Vector3 target = new Vector3(m_AIReference.Target.transform.position.x, m_AIReference.transform.position.y, m_AIReference.Target.transform.position.z);

            m_AIReference.transform.LookAt(target); //rotate towards the target

            SoundManager.GetInstance().photonView.RPC("PlaySFXNetworked", PhotonTargets.All, "WorshipperShoot", m_AIReference.transform.position);

            //grab projectile from pool to fire
            GameObject projectile = ObjectPoolManager.Instance.GetObjectFromNetworkPool(m_PoolName);

            if (projectile != null)
            {
                Vector3 direction = (m_AIReference.Target.transform.position - m_FireLocation.transform.position).normalized;

                //get the enemy number from its name by parsing the string
                int ownerNumber = -1;
                Int32.TryParse(m_AIReference.gameObject.name, out ownerNumber);

                //add wall/stairs/door to layer mask
                //using a bitwise operation to add these to the layer mask as the default enemy layer mask only contains Player
                int layerMask = m_AIReference.TargetLayerMask;
                layerMask |= (1 << LayerMask.NameToLayer("Default"));
                layerMask |= (1 << LayerMask.NameToLayer("Stairs"));
                layerMask |= (1 << LayerMask.NameToLayer("Door"));
                layerMask |= (1 << LayerMask.NameToLayer("MapGeometry"));

                //get any elemental status effects from the list and shoot projectile with RPC
                Status[] statuses = m_AIReference.ElementalDamage.ToArray();
                projectile.GetPhotonView().RPC("FireProjectile", PhotonTargets.All, m_FireLocation.transform.position, direction, ownerNumber, layerMask, m_Damage, m_AIReference.name, statuses);
            }

            return(BehaviourState.Succeed);
        }
示例#5
0
    public void InstantiateNarrator()
    {
        GameObject narr = (GameObject)PhotonNetwork.InstantiateSceneObject("Narrator", new Vector3(19.5f, -12.5f, 15), Quaternion.identity);
        PhotonView view = narr.GetPhotonView();

        view.RPC("SetPosOfNarrator", RpcTarget.AllBuffered, 0);
        SceneManager.MoveGameObjectToScene(narr, SceneManager.GetSceneByName("GameScene"));
        view.RPC("DontDestroy", RpcTarget.AllBuffered);

        //instantiate Narrator Stars
        GameObject c     = (GameObject)PhotonNetwork.InstantiateSceneObject("Star", new Vector3(19.5f, -8.7f, 15), Quaternion.identity);
        GameObject g     = (GameObject)PhotonNetwork.InstantiateSceneObject("Star", new Vector3(19.5f, -0.9f, 15), Quaternion.identity);
        GameObject n     = (GameObject)PhotonNetwork.InstantiateSceneObject("Star", new Vector3(19.5f, 12.6f, 15), Quaternion.identity);
        PhotonView cView = c.GetPhotonView();
        PhotonView gView = g.GetPhotonView();
        PhotonView nView = n.GetPhotonView();

        cView.RPC("SetPosOfStar", RpcTarget.AllBuffered, 2);
        SceneManager.MoveGameObjectToScene(c, SceneManager.GetSceneByName("GameScene"));
        cView.RPC("DontDestroy", RpcTarget.AllBuffered);
        gView.RPC("SetPosOfStar", RpcTarget.AllBuffered, 6);
        SceneManager.MoveGameObjectToScene(g, SceneManager.GetSceneByName("GameScene"));
        gView.RPC("DontDestroy", RpcTarget.AllBuffered);
        nView.RPC("SetPosOfStar", RpcTarget.AllBuffered, 13);
        SceneManager.MoveGameObjectToScene(n, SceneManager.GetSceneByName("GameScene"));
        nView.RPC("DontDestroy", RpcTarget.AllBuffered);
    }
示例#6
0
    public void InstantiateRpc(int viewID)
    {
        GameObject gameObject = Object.Instantiate <GameObject>(this.Prefab, InputToEvent.inputHitPos + new Vector3(0f, 5f, 0f), Quaternion.identity);

        gameObject.GetPhotonView().viewID = viewID;
        gameObject.GetComponent <OnClickDestroy>().DestroyByRpc = true;
    }
示例#7
0
        private BehaviourState ShootDrainProjectile()
        {
            //make the AI face the target
            Vector3 target = new Vector3(m_AIReference.Target.transform.position.x, m_AIReference.transform.position.y, m_AIReference.transform.position.z);

            m_AIReference.transform.LookAt(target);

            //grab the drainning shot projectile from the object pool
            GameObject drainProjectile = ObjectPoolManager.Instance.GetObjectFromNetworkPool(m_PoolName);

            if (drainProjectile != null)
            {
                ObjectProjectileDrainningShot drainningShot = drainProjectile.GetComponent <ObjectProjectileDrainningShot>();
                drainningShot.AcolyteRef = (AcolyteAI)m_AIReference;

                Vector3 direction = (m_AIReference.Target.transform.position - m_FireLocation.transform.position).normalized;

                //get the enemy number from its name by parsing the string
                int ownerNumber = -1;
                int.TryParse(m_AIReference.name, out ownerNumber);

                //add mapgeometry to the layer mask
                int layerMask = m_AIReference.TargetLayerMask;
                layerMask |= (1 << LayerMask.NameToLayer("MapGeometry"));

                //get any element status effects from the list and shoot projectile with RPC
                Status[] statuses = m_AIReference.ElementalDamage.ToArray();
                drainProjectile.GetPhotonView().RPC("FireProjectile", PhotonTargets.All, m_FireLocation.transform.position, direction, ownerNumber, layerMask, m_Damage, m_AIReference.name, statuses);
            }

            return(BehaviourState.Succeed);
        }
示例#8
0
    public GameObject SpawnMyPlayer()
    {
        Transform[] points     = GameObject.FindGameObjectWithTag("Spawn Point").GetComponent <SpawnPoints> ().spawnPoints;
        int         i          = Random.Range(0, points.Length);
        Transform   spawnPoint = points [i];

        GameObject myPlayer = (GameObject)PhotonNetwork.Instantiate("CharacterController", spawnPoint.position, Quaternion.identity, 0);

        ((MonoBehaviour)myPlayer.GetComponent("FPSInputController")).enabled = true;
        ((MonoBehaviour)myPlayer.GetComponent("MouseLook")).enabled          = true;
        ((MonoBehaviour)myPlayer.GetComponent("CharacterMotor")).enabled     = true;
        ((MonoBehaviour)myPlayer.GetComponent("Fp_Shooting")).enabled        = true;

        myPlayer.GetComponentInChildren <AudioListener> ().enabled = true;
        myPlayer.GetComponentInChildren <Camera> ().enabled        = true;
        myPlayer.GetComponentInChildren <MouseLook> ().enabled     = true;
        myPlayer.GetComponentInChildren <PlayerStats> ().enabled   = true;
        myPlayer.GetComponentInChildren <ChatManager> ().enabled   = true;
        myPlayer.AddComponent <PlayerAdder> ();

        myPlayer.GetComponentInChildren <PlayerStats> ().isPlayer = true;

        myPlayer.GetComponentInChildren <MeshRenderer> ().enabled = false;

        Globals.instance.AddPlayer(PhotonNetwork.player.ID, myPlayer.GetComponentInChildren <PlayerStats> ());
        myPlayer.GetPhotonView().RPC("OtherPlayerSpawn", PhotonTargets.Others, PhotonNetwork.player.ID);

        Globals.instance.me = myPlayer;

        return(myPlayer);
    }
 public override void OnLeftRoom()
 {
     player.GetPhotonView().RPC("RespawnUser", RpcTarget.All);
     RankingManager.Instance.gameObject.GetPhotonView().RPC("RemoveUser", RpcTarget.All, PhotonNetwork.NickName ?? "Unknown Player");
     base.OnLeftRoom();
     SceneManager.LoadScene("TitleScene");
 }
示例#10
0
    public void InstantiateCanvas()
    {
        GameObject n = (GameObject)PhotonNetwork.InstantiateSceneObject("CollectiveDecisionCanvas", new Vector3(0, 0, 15), Quaternion.identity);

        if (PhotonNetwork.LocalPlayer.IsMasterClient)
        {
            Button ok = GameObject.Find("OKGoldButton").GetComponent <Button>();
            ok.onClick.AddListener(() => CollectiveDecisionController.OKButtonClicked());
            Button dwarfYes = GameObject.Find("AddGoldDwarfButton").GetComponent <Button>();
            dwarfYes.onClick.AddListener(() => CollectiveDecisionController.UpdateDwarfCount(1));
            Button dwarfNo = GameObject.Find("SubtractGoldDwarfButton").GetComponent <Button>();
            dwarfNo.onClick.AddListener(() => CollectiveDecisionController.UpdateDwarfCount(-1));
            Button wizardYes = GameObject.Find("AddGoldWizardButton").GetComponent <Button>();
            wizardYes.onClick.AddListener(() => CollectiveDecisionController.UpdateWizardCount(1));
            Button wizardNo = GameObject.Find("SubtractGoldWizardButton").GetComponent <Button>();
            wizardNo.onClick.AddListener(() => CollectiveDecisionController.UpdateWizardCount(-1));
            Button warriorYes = GameObject.Find("AddGoldWarriorButton").GetComponent <Button>();
            warriorYes.onClick.AddListener(() => CollectiveDecisionController.UpdateWarriorCount(1));
            Button warriorNo = GameObject.Find("SubtractGoldWarriorButton").GetComponent <Button>();
            warriorNo.onClick.AddListener(() => CollectiveDecisionController.UpdateWarriorCount(-1));
            Button archerYes = GameObject.Find("AddGoldArcherButton").GetComponent <Button>();
            archerYes.onClick.AddListener(() => CollectiveDecisionController.UpdateArcherCount(1));
            Button archerNo = GameObject.Find("SubtractGoldArcherButton").GetComponent <Button>();
            archerNo.onClick.AddListener(() => CollectiveDecisionController.UpdateArcherCount(-1));
        }
        PhotonView view = n.GetPhotonView();

        SceneManager.MoveGameObjectToScene(n, SceneManager.GetSceneByName("GameScene"));
        view.RPC("DontDestroy", RpcTarget.AllBuffered);
    }
    public void InstantiateRpc(int viewID)
    {
        GameObject go = Object.Instantiate((Object)this.Prefab, Vector3.op_Addition(InputToEvent.inputHitPos, new Vector3(0.0f, 5f, 0.0f)), Quaternion.get_identity()) as GameObject;

        go.GetPhotonView().viewID = viewID;
        ((OnClickDestroy)go.GetComponent <OnClickDestroy>()).DestroyByRpc = true;
    }
示例#12
0
    private void OnTriggerEnter(Collider other)
    {
        if (isCollide)
        {
            return;
        }
        GameObject gameObject = other.transform.root.gameObject;

        if (gameObject.layer != 8)
        {
            return;
        }
        if (IN_GAME_MAIN_CAMERA.Gametype == GameType.Multiplayer)
        {
            if (gameObject.GetPhotonView().isMine)
            {
                isCollide = true;
            }
        }
        else if (IN_GAME_MAIN_CAMERA.Gametype == GameType.Singleplayer)
        {
            GameObject main_object = Camera.main.GetComponent <IN_GAME_MAIN_CAMERA>().main_object;
            if (main_object != null && main_object == gameObject)
            {
                isCollide = true;
            }
        }
    }
示例#13
0
 private void OnTriggerEnter(Collider other)
 {
     if (!this.isCollide)
     {
         GameObject gameObject = other.transform.root.gameObject;
         if (gameObject.layer == 8)
         {
             if (IN_GAME_MAIN_CAMERA.gametype == GAMETYPE.MULTIPLAYER)
             {
                 if (gameObject.GetPhotonView().isMine)
                 {
                     this.isCollide = true;
                 }
             }
             else if (IN_GAME_MAIN_CAMERA.gametype == GAMETYPE.SINGLE)
             {
                 GameObject obj3 = IN_GAME_MAIN_CAMERA.main_object;
                 if ((obj3 != null) && (obj3 == gameObject))
                 {
                     this.isCollide = true;
                 }
             }
         }
     }
 }
示例#14
0
    public GameObject CreateGameObject(string name)
    {
        GameObject go = PhotonNetwork.Instantiate("_Prefabs/EmptyObject", Vector3.zero, Quaternion.identity);

        go.GetPhotonView().RPC("SetName", RpcTarget.All, name);
        return(go);
    }
示例#15
0
文件: Bomb.cs 项目: Mi-Sad/guardian
    public void Explode(float radius)
    {
        disabled = true;
        base.rigidbody.velocity = Vector3.zero;
        Vector3 position = base.transform.position;

        myExplosion = PhotonNetwork.Instantiate("RCAsset/BombExplodeMain", position, Quaternion.Euler(0f, 0f, 0f), 0);
        foreach (HERO player in FengGameManagerMKII.Instance.heroes)
        {
            GameObject gameObject = player.gameObject;
            if (Vector3.Distance(gameObject.transform.position, position) < radius && !gameObject.GetPhotonView().isMine&& !player.bombImmune)
            {
                PhotonPlayer owner = gameObject.GetPhotonView().owner;
                if (RCSettings.TeamMode > 0 && PhotonNetwork.player.customProperties[PhotonPlayerProperty.RCTeam] != null && owner.customProperties[PhotonPlayerProperty.RCTeam] != null)
                {
                    int num  = GExtensions.AsInt(PhotonNetwork.player.customProperties[PhotonPlayerProperty.RCTeam]);
                    int num2 = GExtensions.AsInt(owner.customProperties[PhotonPlayerProperty.RCTeam]);
                    if (num == 0 || num != num2)
                    {
                        gameObject.GetComponent <HERO>().MarkDead();
                        gameObject.GetComponent <HERO>().photonView.RPC("netDie2", PhotonTargets.All, -1, GExtensions.AsString(PhotonNetwork.player.customProperties[PhotonPlayerProperty.Name]) + " ");
                        FengGameManagerMKII.Instance.UpdatePlayerKillInfo(0, PhotonNetwork.player);
                    }
                }
                else
                {
                    gameObject.GetComponent <HERO>().MarkDead();
                    gameObject.GetComponent <HERO>().photonView.RPC("netDie2", PhotonTargets.All, -1, GExtensions.AsString(PhotonNetwork.player.customProperties[PhotonPlayerProperty.Name]) + " ");
                    FengGameManagerMKII.Instance.UpdatePlayerKillInfo(0, PhotonNetwork.player);
                }
            }
        }
        StartCoroutine(WaitAndFade(1.5f));
    }
示例#16
0
        public override void OnPlayerPropertiesUpdate(Player target, Hashtable changedProps)
        {
            base.OnPlayerPropertiesUpdate(target, changedProps);

            if (!PhotonNetwork.IsMasterClient)
            {
                return;
            }

            if (!changedProps.ContainsKey("connected"))
            {
                return;
            }

            foreach (Player player in PhotonNetwork.PlayerList)
            {
                if (!player.CustomProperties.ContainsKey("connected"))
                {
                    continue;
                }

                if (!player.CustomProperties["connected"].Equals("game"))
                {
                    return;
                }
            }

            PhotonNetwork.CurrentRoom.SetCustomProperties(new Hashtable {
                { "turn_index", 0 }
            });

            GameObject go = PhotonNetwork.InstantiateSceneObject("GameController", new Vector2(), Quaternion.identity);

            go.GetPhotonView().TransferOwnership(GetActivePlayer());
        }
示例#17
0
    public void OnDestroy()
    {
        bool flag = PhotonNetwork.IsMasterClient;// && !FengGameManagerMKII.instance.isRestarting;

        if (flag)
        {
            string[] array = this.settings.Split(new char[]
            {
                ','
            });
            bool flag2 = array[0] == "photon";
            if (flag2)
            {
                bool flag3 = array.Length > 15;
                if (flag3)
                {
                    GameObject gameObject = Pool.NetworkEnable("RCAsset/" + array[1] + "Prop", new Vector3(Convert.ToSingle(array[12]), Convert.ToSingle(array[13]), Convert.ToSingle(array[14])), new Quaternion(Convert.ToSingle(array[15]), Convert.ToSingle(array[16]), Convert.ToSingle(array[17]), Convert.ToSingle(array[18])), 0);
                    gameObject.GetComponent <CannonPropRegion>().settings = this.settings;
                    gameObject.GetPhotonView().RPC("SetSize", PhotonTargets.AllBuffered, new object[]
                    {
                        this.settings
                    });
                }
                else
                {
                    Pool.NetworkEnable("RCAsset/" + array[1] + "Prop", new Vector3(Convert.ToSingle(array[2]), Convert.ToSingle(array[3]), Convert.ToSingle(array[4])), new Quaternion(Convert.ToSingle(array[5]), Convert.ToSingle(array[6]), Convert.ToSingle(array[7]), Convert.ToSingle(array[8])), 0).GetComponent <CannonPropRegion>().settings = this.settings;
                }
            }
        }
    }
示例#18
0
    void OnTriggerEnter(Collider col)
    {
        GameObject obj = col.transform.root.gameObject;

        if (obj.tag == "NetworkObject")
        {
            if (obj.GetPhotonView().isMine) // Если наш персонаж на него наехал
            {
                if (obj.GetComponent <TankControl>())
                {
                    if (obj.GetComponent <SpeedBonusEffect>())
                    {
                        // Не делаем ничего
                        return;
                    }
                    else
                    {
                        obj.AddComponent <SpeedBonusEffect>();
                        photonView.RPC("Die", PhotonNetwork.masterClient);
                        photonView.RPC("AddBonus", PhotonTargets.OthersBuffered, obj.GetComponent <PhotonView>().viewID);
                        Destroy(this.gameObject);
                    }
                }
            }
            else
            {
                return;
            }
        }
    }
示例#19
0
    /// <summary>
    /// プレイヤーのHPを徐々に回復させる「リジェネ」
    /// </summary>
    /// <param name="player"></param>
    private void Regene(GameObject player)
    {
        // リジェネのスキルを取得する
        SkillBase regeneSkill = SkillControl.GetSkill("リジェネ");

        if (player)
        {
            // プレイヤーのスクリプトを取得する
            PlayerChar playerChar = player.GetComponent <PlayerChar>();
            // playerがプレイヤーならば
            if (player)
            {
                // 回復量を計算する
                int healHP = (int)((float)playerChar.GetPlayerData().MaxHP *(regeneSkill.GetBonus() + regeneSkill.attack));
                // 効果時間を計算する
                float skillTime = 20 + regeneSkill.GetLv() * 5;
                // 回復する時間を計算する
                float healTime = 5f - regeneSkill.GetLv() * 0.2f;
                // リジェネを発動させる
                photonView.RPC("GenerationRegeneration", player.GetPhotonView().owner, healHP, skillTime, healTime);
                return;
            }
        }
        // 回復量を計算する
        int healHp = (int)((float)playerData.MaxHP * (regeneSkill.GetBonus() + regeneSkill.attack));
        // 効果時間を計算する
        float skillTimer = 20 + regeneSkill.level * 5;
        // 回復する時間を計算する
        float healTimer = 5f - regeneSkill.level * 0.5f;

        // リジェネを発動する
        GenerationRegeneration(healHp, skillTimer, healTimer);
    }
示例#20
0
    public void PickupObject(GameObject objectToPickUp)
    {
        //checker s'il y a la place pour rammasser l'objet


        //modifier le owner de l'objet
        if (photonView.IsMine)
        {
            objectToPickUp.GetComponent <PickableItem>().ChangeOwner();
        }
        //Executer la routine d'un object ramassé
        objectToPickUp.GetComponent <PickableItem>().OnPickup();
        //puis l'ajouter dans l'inventaire sur tout les clients
        photonView.RPC("StoreItemInInventory", RpcTarget.All, objectToPickUp.GetPhotonView().ViewID);

        //le déplacer dans la main gauche
        objectToPickUp.transform.position = rightHandTransform.position;
        objectToPickUp.transform.parent   = rightHandTransform;

        objectToPickUp.GetComponent <PickableItem>().OnStoredInInventory();

        //Séléctionner l'objet ramasser automatiquement
        selectedObject = inventory_remade.Count - 1;
        photonView.RPC("SelectItem", RpcTarget.All, selectedObject);
    }
示例#21
0
    public override void hearChime(int chimerPhotonID)
    {
        GameObject chimer = PhotonNetwork.GetPhotonView(chimerPhotonID).gameObject;

        if (chimer != shepherd)
        {
            int newFactionNumber = chimer.GetPhotonView().Owner.ActorNumber;
            if (shepherd == null)
            {
                photonView.RPC("changeFaction", RpcTarget.All, newFactionNumber);
            }
            else
            {
                PhotonView shepView = shepherd.GetPhotonView();
                shepView.RPC("SheepDeparts", shepView.Owner, photonView.ViewID);
                if (newFactionNumber != shepherd.GetPhotonView().Owner.ActorNumber)
                {
                    photonView.RPC("changeFaction", RpcTarget.All, newFactionNumber);
                }
            }
            shepherdMultiplier = 1;
            shepherd           = chimer;
        }
        shepherdMultiplier = Mathf.Clamp(shepherdMultiplier *= 2, 1, 256);
        updateFlockCenter();
        StopCoroutine("DecayShepherdPower");
        StartCoroutine("DecayShepherdPower");
        // Debug.Log("Chime heard. Shepherd influence is now " + shepherdMultiplier);
    }
示例#22
0
    public void Explode(float radius)
    {
        this.disabled = true;
        base.GetComponent <Rigidbody>().velocity = Vector3.zero;
        Vector3 position = base.transform.position;

        this.myExplosion = PhotonNetwork.Instantiate("RCAsset/BombExplodeMain", position, Quaternion.Euler(0f, 0f, 0f), 0);
        foreach (Hero hero in FengGameManagerMKII.instance.getPlayers())
        {
            GameObject gameObject = hero.gameObject;
            if (((Vector3.Distance(gameObject.transform.position, position) < radius) && !gameObject.GetPhotonView().isMine) && !hero.bombImmune)
            {
                PhotonPlayer owner = gameObject.GetPhotonView().owner;
                if (((FengGameManagerMKII.Gamemode.TeamMode != TeamMode.Disabled) && (PhotonNetwork.player.CustomProperties[PhotonPlayerProperty.RCteam] != null)) && (owner.CustomProperties[PhotonPlayerProperty.RCteam] != null))
                {
                    int num  = RCextensions.returnIntFromObject(PhotonNetwork.player.CustomProperties[PhotonPlayerProperty.RCteam]);
                    int num2 = RCextensions.returnIntFromObject(owner.CustomProperties[PhotonPlayerProperty.RCteam]);
                    if ((num == 0) || (num != num2))
                    {
                        gameObject.GetComponent <Hero>().markDie();
                        gameObject.GetComponent <Hero>().photonView.RPC("netDie2", PhotonTargets.All, new object[] { -1, RCextensions.returnStringFromObject(PhotonNetwork.player.CustomProperties[PhotonPlayerProperty.name]) + " " });
                        FengGameManagerMKII.instance.playerKillInfoUpdate(PhotonNetwork.player, 0);
                    }
                }
                else
                {
                    gameObject.GetComponent <Hero>().markDie();
                    gameObject.GetComponent <Hero>().photonView.RPC("netDie2", PhotonTargets.All, new object[] { -1, RCextensions.returnStringFromObject(PhotonNetwork.player.CustomProperties[PhotonPlayerProperty.name]) + " " });
                    FengGameManagerMKII.instance.playerKillInfoUpdate(PhotonNetwork.player, 0);
                }
            }
        }
        base.StartCoroutine(this.WaitAndFade(1.5f));
    }
示例#23
0
        /// <summary>
        /// Check if the gameobject has health component, if yes, deal damage, return if health component has been found
        /// </summary>
        /// <param name="other"></param>
        public bool ApplyDamage(GameObject other)
        {
            if (other == caster || !enemiesTag.Any(other.CompareTag))
            {
                return(false);                                                      // Suicide isn't allowed :/ or killing not an ennemy ?
            }
            // The hitbox is on the mesh which is sometimes on a child
            var parent = other.transform.parent; // Not all object have a parent
            var health = other.gameObject.GetComponent <Health>() ? other.gameObject.GetComponent <Health>() :
                         parent?parent.gameObject.GetComponent <Health>() : null;

            // print($"Hit {other.name} has health {health} caster {caster.name}");
            if (health && caster)
            {
                // print($"I dealt {abilityData.stat.damage} damage to {other.name}");
                var killerAgent = caster.gameObject.GetComponent <KillerAgent>();
                if (killerAgent != null)
                {
                    killerAgent.hitEnemy.Invoke(abilityData.stat.damage);
                }

                // The caster.GetPhotonView() should only occur if the caster is non networked (agent training case)
                health.TakeDamage((int)abilityData.stat.damage, caster && caster.GetPhotonView() ? caster.GetPhotonView().Owner : null);
                return(true);
            }

            return(false);
        }
示例#24
0
    private void SetupEquipment()
    {
        for (int i = 0; i < equipment.Length; i++)
        {
            var equip = equipment[i];

            if (equip != null && !(equip is Item))
            {
                Transform parent;
                if (i == 0 || i == 1)
                {
                    parent = gunParent;
                }
                else if (i == 2)
                {
                    parent = meleeParent;
                }
                else if (i == 3)
                {
                    parent = grenadeParent;
                }
                else
                {
                    parent = medShotParent;
                }

                if (equip.id == (int)WeaponType.Frag)
                {
                    if (!photonView.IsMine)
                    {
                        continue;
                    }
                    GameObject obj = PhotonNetwork.Instantiate("PhotonPrefabs/Grenade", grenadeParent.position, Quaternion.identity);
                    photonView.RPC("InstantiateGrenade", RpcTarget.All, obj.GetPhotonView().ViewID);
                }
                else if (equip.id == (int)WeaponType.Sticky)
                {
                    if (!photonView.IsMine)
                    {
                        continue;
                    }
                    GameObject obj = PhotonNetwork.Instantiate("PhotonPrefabs/Sticky", grenadeParent.position, Quaternion.identity);
                    photonView.RPC("InstantiateGrenade", RpcTarget.All, obj.GetPhotonView().ViewID);
                }
                else
                {
                    GameObject newObject = Instantiate(equip.prefab, parent.position, parent.rotation, parent);
                    newObject.transform.localPosition    = Vector3.zero;
                    newObject.transform.localEulerAngles = Vector3.zero;
                    newObject.SetActive(false);
                }
            }
        }

        if (photonView.IsMine)
        {
            photonView.RPC("EquipWeapon", RpcTarget.All, 0);
        }
    }
示例#25
0
 public void spawnPlayer(GameObject playerObject, List <Vector2> spawnPoints)
 {
     //nowMasterID = PhotonNetwork.masterClient.ID;
     Debug.Log(playerObj.name);
     Debug.Log(PhotonNetwork.inRoom);
     Debug.Log(PhotonNetwork.masterClient.ID);
     if (playerList == null)
     {
         playerList = new List <PlayerController>();
     }
     if (PhotonNetwork.isMasterClient)
     {
         int i = 0;
         for (; i < PhotonNetwork.playerList.Length; i++)
         {
             Vector3 spawnPoint = spawnPoints[i];
             if (SceneManager.GetActiveScene().name == "Tutorial")
             {
                 spawnPoint = Vector3.zero;
             }
             spawnPoint.z = -1;
             GameObject       playerObj        = PhotonNetwork.InstantiateSceneObject(playerObject.name, spawnPoint, playerObject.transform.rotation, 0, null);
             PlayerController playerController = playerObj.GetComponent <PlayerController>();
             //playerList.Add(playerController);
             int    id       = PhotonNetwork.playerList[i].ID;
             string nickName = PhotonNetwork.playerList[i].NickName;
             Debug.Log(nickName);
             playerController.canMove = false;
             playerObj.GetPhotonView().RPC("Initial", PhotonTargets.All, i, id, false, nickName);
             //playerController.Initial();
         }
         i = PhotonNetwork.playerList.Length;
         if (AIList == null)
         {
             return;
         }
         for (int a = 0; a < AIList.Length; a++)
         {
             Vector3 spawnPoint = spawnPoints[i];
             spawnPoint.z = -1;
             Character ch = AIList[a];
             if (ch.isEmpty)
             {
                 continue;
             }
             Debug.Log(ch.name);
             GameObject       playerObj        = PhotonNetwork.InstantiateSceneObject(playerObject.name, spawnPoint, playerObject.transform.rotation, 0, null);
             PlayerController playerController = playerObj.GetComponent <PlayerController>();
             //playerList.Add(playerController);
             int id = -a;
             playerController.canMove = false;
             playerObj.GetPhotonView().RPC("Initial", PhotonTargets.All, i, id, true, ch.name);
             playerObj.GetPhotonView().RPC("SetCharacterSprite", PhotonTargets.All, ch.animal, ch.cup, ch.liquid);
             playerObj.GetPhotonView().RPC("SetSkill", PhotonTargets.All, ch.animal);
             i++;
         }
         ScoreManager.getInstance().InitialCount(i);
     }
 }
示例#26
0
 public void RemoveBuff(GamePlayerController player)
 {
     player.BuffCo?.Sub(Coefficient);
     if (Owner.GetPhotonView().IsMine)
     {
         PhotonNetwork.Destroy(Effect);
     }
 }
示例#27
0
    public void KillPlayer()
    {
        string s = "GM killed you";

        playerPrefab.GetPhotonView().RPC("KillYourself", RpcTarget.All, new byte[0], s, WaysToKillAPlayer.GMChoice);
        gameObject.SetActive(false);
        Debug.Log("Pum, " + username.text + " matao!");
    }
示例#28
0
    protected override void Fire()
    {
        GameObject newProjectile = PhotonNetwork.Instantiate(_projectilePrefab.name, _weapon.muzzleTransform.position, Quaternion.identity, 0);

        newProjectile.GetPhotonView().RPC("SetVelocity", PhotonTargets.All, GetProjectileDirection() * _specificStats.projectileSpeed);

        TryInvokeOnFire();
    }
示例#29
0
    // プレイヤーをゲームの世界に出現させる
    IEnumerator SetPlayer(float time)
    {
        yield return(new WaitForSeconds(time));

        // ネットワークごしにEthanをインスタンス化する
        player = PhotonNetwork.Instantiate("unitychan", Vector3.up, Quaternion.identity, 0);
        player.GetPhotonView().RPC("SetName", PhotonTargets.AllBuffered, PhotonNetwork.player.NickName);
    }
示例#30
0
    [PunRPC] // called to MasterClient
    public void InstantiateBlockInScene(string PrefabName, Vector3 Position, Quaternion Rotation, byte Group, object[] Data)
    {
        Debug.Log("<Color=Magenta>InstantiateBlockInScene()</Color> -- Calling InstantiateBlockInScene");

        GameObject block = PhotonNetwork.InstantiateSceneObject(PrefabName, Position, Rotation, Group, Data);

        photonView.RPC("SetBlockData", PhotonTargets.All, block.GetPhotonView().viewID);
    }
示例#31
0
    public void ExecutePickupFarmer(GameObject found)
    {
        string s = (string)PhotonNetwork.LocalPlayer.CustomProperties["Type"];

        GameObject.Find(s).GetComponent <Hero>().PickupFarmer();
        found.GetPhotonView().RPC("Destroy", RpcTarget.AllBuffered);
        Debug.Log("Farmer picked up");
    }
示例#32
0
    public void OnJoinedRoom()
    {
        if (this.PrefabsToInstantiate != null)
        {
            GameObject controller = GameObject.Find("Control");

            foreach (GameObject o in this.PrefabsToInstantiate)
            {
                Debug.Log("Instantiating: " + o.name);

                Vector3 spawnPos = Vector3.up;
                if (this.SpawnPosition != null)
                {
                    spawnPos = this.SpawnPosition.position;
                }

                Vector3 random = Random.insideUnitSphere;
                random.y = 0;
                random = random.normalized;
                Vector3 itempos = spawnPos + this.PositionOffset * random;
                

                player = PhotonNetwork.Instantiate(o.name, itempos, Quaternion.identity, 0);
                PhotonView photonView = player.GetPhotonView();
                CameraController camera = PlayerCamera.GetComponent<CameraController>();
                camera.enabled = true;
                camera.player = player;
                redPlayers = PunTeams.PlayersPerTeam[PunTeams.Team.red].Count;
                bluePlayers = PunTeams.PlayersPerTeam[PunTeams.Team.blue].Count;
                ExitGames.Client.Photon.Hashtable ht = new ExitGames.Client.Photon.Hashtable();
                ht.Add("ready", false);
                ht.Add("all ready", false);
                PhotonNetwork.player.SetCustomProperties(ht);
                
                

                if (redPlayers > bluePlayers)
                {
                    PhotonNetwork.player.SetTeam(PunTeams.Team.blue);
                    photonView.RPC("ChangeColorToBlue", PhotonTargets.AllBuffered);

                }
                else {
                    PhotonNetwork.player.SetTeam(PunTeams.Team.red);
                    photonView.RPC("ChangeColorToRed", PhotonTargets.AllBuffered);

                }


            }

        }
    }
	// Update is called once per frame
	void Update () {
		//Debug.Log(completion);
		if (photonView.isMine){
			lifetimeAccum += Time.deltaTime;
			if (completion >= required){
				tempObject = PhotonNetwork.Instantiate(completedBuilding.name,transform.position,transform.rotation,0) as GameObject;
				SetTeam (tempObject.GetPhotonView().viewID,(int)currentTeam, lifetimeAccum);
				DestroyBox(GetComponent<PhotonView>().viewID);
			}
			if (lifetimeAccum >= totalLifetime){
				DestroyBox(GetComponent<PhotonView>().viewID);
			}
		}
	}
示例#34
0
    public override ActionResult Execute(AI ai)
    {
        //enemyObject = enemy.Evaluate(ai.DeltaTime, ai.WorkingMemory).GetValue<GameObject>();
        enemyObject = ai.WorkingMemory.GetItem("Wizard").GetValue<RAIN.Entities.Aspects.VisualAspect>().Entity.Form;
        if( enemyObject != null )
        {
            if( enemyObject.GetPhotonView().isMine )
                enemyObject.GetComponent<PlayerController>().TakeDamage((int)ai.WorkingMemory.GetItem("damageToApply").GetValue<int>(),ai.Body.transform);

        }
        if( enemyObject == null )
        {
            Debug.Log("no player to hit");
        }

        return ActionResult.SUCCESS;
    }
示例#35
0
    void ApplyWind()
    {
        if(isControlable){
            print ("wind sent");
            data[0] = windForce;
            data[1] = windDirection;

            Transform[] projectiles = projectileHolder.GetComponentsInChildren<Transform>();

            foreach(Transform proj in projectiles){
                if(proj.gameObject.GetPhotonView()!=null){
                    projectile=proj.gameObject;
                    projectile.GetPhotonView().RPC("WindData",PhotonTargets.All,data);
                }
            }
        }
    }
示例#36
0
	// Update is called once per frame
	void Start () {
        Vector3 random = Random.insideUnitSphere;
        random.y = 0;
        random = random.normalized;
        Vector3 itempos = new Vector3(0,11,0) + 10.0f * random;
        player = PhotonNetwork.Instantiate("PlayerSphere", itempos, Quaternion.identity, 0);
        PhotonView photonView = player.GetPhotonView();
        CameraController camera = PlayerCamera.GetComponent<CameraController>();
        camera.enabled = true;
        camera.player = player;
        if (PhotonNetwork.player.GetTeam() == PunTeams.Team.red)
        {
            photonView.RPC("ChangeColorToRed", PhotonTargets.AllBuffered);
        }
        else {
            photonView.RPC("ChangeColorToBlue", PhotonTargets.AllBuffered);
        }
    }
示例#37
0
    void Grab()
    {
        if (grabbed) {
            grabbed.GetPhotonView().RPC("released",PhotonTargets.All);
            grabbed = null;
        }
        else {
            RaycastHit hit;
            Ray ray = new Ray(transform.position, new Vector3(0,-1,0));
            //Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast(ray, out hit)) {
                grabbed = hit.collider.gameObject;

                int newID = PhotonNetwork.AllocateViewID();
                grabbed.GetPhotonView().RPC("grabbed",PhotonTargets.All,newID);
                grabbedPosition = hit.transform.position;
                //grabbedBottom = hit.collider.bounds.min.y;
            }
        }
    }
示例#38
0
文件: Sorcerer.cs 项目: GochiMMO/MMO
 /// <summary>
 /// プレイヤーを全回復させる関数
 /// </summary>
 /// <param name="player">回復させる対象</param>
 private void Venediction(GameObject player)
 {
     if (player)
     {
         // プレイヤーの情報をゲットする
         PlayerChar playerChar = player.GetComponent<PlayerChar>();
         // プレイヤーが取得できれば
         if (playerChar)
         {
             // 他の誰かのHPを回復させる
             gameObject.GetPhotonView().RPC("Recover", player.GetPhotonView().owner, playerChar.GetPlayerData().MaxHP);
             // 処理が完了したので抜ける
             return;
         }
     }
     // 自分のHPを回復させる
     Recover(playerData.MaxHP);
 }
示例#39
0
文件: Sorcerer.cs 项目: GochiMMO/MMO
 /// <summary>
 /// ヒール
 /// </summary>
 /// <param name="player">回復させるプレイヤーオブジェクト</param>
 private void Heal(GameObject player)
 {
     // ヒールのスキルを取得する
     SkillBase healSkill = SkillControl.GetSkill("ヒール");
     // プレイヤーが存在すれば
     if (player)
     {
         // プレイヤーの情報を取得する
         PlayerChar playerChar = player.GetComponent<PlayerChar>();
         // プレイヤーが取得できれば
         if (playerChar)
         {
             // そのプレイヤーの場所に回復エフェクトを表示させる
             PhotonNetwork.Instantiate("Magics/HealEffect", player.transform.position + Vector3.up * 1f, Quaternion.identity, 0);
             // 回復させるHPの量を計算する
             int recoverHP = (int)((float)playerChar.GetPlayerData().MaxHP * (healSkill.GetBonus() + healSkill.attack));
             // そのプレイヤーのHPを回復させる
             gameObject.GetPhotonView().RPC("Recover", player.GetPhotonView().owner, recoverHP);
             // 処理が完了したので抜ける
             return;
         }
     }
     // 自分の位置に回復エフェクトを表示させる
     PhotonNetwork.Instantiate("Magics/HealEffect", gameObject.transform.position + Vector3.up * 1f, Quaternion.identity, 0);
     // 自分のHPを回復する
     Recover((int)((float)playerData.MaxHP * (healSkill.GetBonus() + healSkill.attack)));
 }
示例#40
0
	private int FindView(GameObject go)
	{
		return go.GetPhotonView ().viewID;
	}
示例#41
0
	/// <summary>
	/// Despawns the object. Must be called only from master server
	/// </summary>
	/// <param name="obj">Object.</param>
	public virtual void DespawnObject(GameObject obj)
	{
		if (!isMaster)
			return;
		
		int objectID = obj.GetPhotonView ().viewID;
		photonView.RPC ("RPC_DespawnObject", PhotonTargets.AllBufferedViaServer, objectID);
		//[[Updating the list]]
		if(SpawnedObjects.Contains (objectID))
			SpawnedObjects.Remove (objectID);  
	}
示例#42
0
文件: Sorcerer.cs 项目: GochiMMO/MMO
 /// <summary>
 /// プレイヤーのHPを徐々に回復させる「リジェネ」
 /// </summary>
 /// <param name="player"></param>
 private void Regene(GameObject player)
 {
     // リジェネのスキルを取得する
     SkillBase regeneSkill = SkillControl.GetSkill("リジェネ");
     if (player)
     {
         // プレイヤーのスクリプトを取得する
         PlayerChar playerChar = player.GetComponent<PlayerChar>();
         // playerがプレイヤーならば
         if (player)
         {
             // 回復量を計算する
             int healHP = (int)((float)playerChar.GetPlayerData().MaxHP * (regeneSkill.GetBonus() + regeneSkill.attack));
             // 効果時間を計算する
             float skillTime = 20 + regeneSkill.GetLv() * 5;
             // 回復する時間を計算する
             float healTime = 5f - regeneSkill.GetLv() * 0.2f;
             // リジェネを発動させる
             photonView.RPC("GenerationRegeneration", player.GetPhotonView().owner, healHP, skillTime, healTime);
             return;
         }
     }
     // 回復量を計算する
     int healHp = (int)((float)playerData.MaxHP * (regeneSkill.GetBonus() + regeneSkill.attack));
     // 効果時間を計算する
     float skillTimer = 20 + regeneSkill.level * 5;
     // 回復する時間を計算する
     float healTimer = 5f - regeneSkill.level * 0.5f;
     // リジェネを発動する
     GenerationRegeneration(healHp, skillTimer, healTimer);
 }