コード例 #1
0
        public override IEnumerator RunLogic()
        {
            yield return(new WaitForSeconds(2));

            yield return(GetAttr().StartCoroutine(Util.SetBurn(GetAttr().gameObject)));

            yield return(null);

            //等网络属性同步上去了再删除对象 Hp = 0 接着等一会删除对象
            if (NetworkUtil.IsNetMaster())
            {
                yield return(new WaitForSeconds(5));

                var cg = CGPlayerCmd.CreateBuilder();
                cg.Cmd = "RemoveEntity";
                var ety = EntityInfo.CreateBuilder();
                ety.Id        = GetAttr().GetNetView().GetServerID();
                cg.EntityInfo = ety.Build();
                var world = WorldManager.worldManager.GetActive();
                world.BroadcastMsg(cg);
                ObjectManager.objectManager.DestroyByLocalId(GetAttr().GetComponent <KBEngine.KBNetworkView>().GetLocalId());
            }
            else
            {
                ObjectManager.objectManager.DestroyByLocalId(GetAttr().GetComponent <KBEngine.KBNetworkView>().GetLocalId());
            }
        }
コード例 #2
0
        IEnumerator CountDown()
        {
            while (WorldManager.worldManager.station != WorldManager.WorldStation.Enter)
            {
                yield return(null);
            }

            var uiRoot = WindowMng.windowMng.GetMainUI();
            var lt     = NGUITools.AddChild(uiRoot, Resources.Load <GameObject>("UI/LeftTimeUI"));

            ltui = lt.GetComponent <LeftTimeUI>();
            var sui = NGUITools.AddChild(uiRoot, Resources.Load <GameObject>("UI/ScoreUI"));

            scoreUI = sui.GetComponent <ScoreUI>();

            var rtp = Util.FindChildRecursive(uiRoot.transform, "RightTop");

            rtp.gameObject.SetActive(false);

            while (leftTime > 0)
            {
                ltui.SetLabel("" + leftTime);
                if (NetworkUtil.IsNetMaster())
                {
                    NetDateInterface.SyncTime(leftTime);
                }
                leftTime--;
                yield return(new WaitForSeconds(1));
            }
            if (NetworkUtil.IsNetMaster())
            {
                NetDateInterface.GameOver();
                NetworkGameOver();
            }
        }
コード例 #3
0
 void OnTriggerEnter(Collider other)
 {
     //只有Master才可以控制谁拾取到了物品
     if (NetworkUtil.IsNetMaster())
     {
         if (!pickYet && other.tag == GameTag.Player)
         {
             StartCoroutine(PickItem(other.gameObject));
         }
     }
 }
コード例 #4
0
        public override void EnterState()
        {
            base.EnterState();
            if (deadCallback != null)
            {
                deadCallback();
            }
            Util.SetLayer(GetAttr().gameObject, GameLayer.IgnoreCollision);
            GetAttr().IsDead = true;

            if (NetworkUtil.IsNetMaster())
            {
                DropGoods.DropStaticGoods(GetAttr());
            }
        }
コード例 #5
0
ファイル: ChestAI2.cs プロジェクト: Xnovae/MobaClient
        public override void EnterState()
        {
            base.EnterState();
            Util.SetLayer(GetAttr().gameObject, GameLayer.IgnoreCollision);

            GetAttr().GetComponent <Animation>().CrossFade("opening");
            GetAttr().IsDead = true;
            GetAttr().OnlyShowDeadEffect();

            if (NetworkUtil.IsNetMaster())
            {
                DropGoods.DropStaticGoods(GetAttr());
            }
            CreateParticle();
        }
コード例 #6
0
 public static void  MakeDropItem(ItemData itemData, Vector3 pos, int num)
 {
     if (NetworkUtil.IsNetMaster())
     {
         var cg = CGPlayerCmd.CreateBuilder();
         cg.Cmd = "AddEntity";
         var etyInfo = EntityInfo.CreateBuilder();
         etyInfo.ItemId  = itemData.ObjectId;
         etyInfo.ItemNum = num;
         var po = NetworkUtil.ConvertPos(pos);
         etyInfo.X     = po [0];
         etyInfo.Y     = po [1];
         etyInfo.Z     = po [2];
         etyInfo.EType = EntityType.DROP;
         cg.EntityInfo = etyInfo.Build();
         NetworkUtil.Broadcast(cg);
     }
 }
コード例 #7
0
 public static void SyncMonster()
 {
     if (NetworkUtil.IsNetMaster())
     {
         var allNetView = ObjectManager.objectManager.GetNetView();
         foreach (var v in allNetView)
         {
             if (v != null)
             {
                 var ms = v.GetComponent <MonsterSyncToServer>();
                 if (ms != null)
                 {
                     ms.SyncToServer();
                 }
             }
         }
     }
 }
コード例 #8
0
        public override void EnterState()
        {
            base.EnterState();
            if (deadCallback != null)
            {
                deadCallback();
            }
            Util.SetLayer(GetAttr().gameObject, GameLayer.IgnoreCollision);

            //GetAttr().animation.CrossFade("opening");
            GetAttr().IsDead = true;
            //GetAttr().OnlyShowDeadEffect();

            if (NetworkUtil.IsNetMaster())
            {
                DropGoods.DropStaticGoods(GetAttr());
            }
            //CreateParticle();
        }
コード例 #9
0
ファイル: PushableObject.cs プロジェクト: Xnovae/MobaClient
        //为玩家增加Buff
        void OnTriggerEnter(Collider other)
        {
            if (NetworkUtil.IsNetMaster())
            {
                if (other.tag == GameTag.Player)
                {
                    //击退技能
                    var pos     = other.transform.position;
                    var otherGo = other.gameObject;

                    var skill     = Util.GetSkillData(140, 1);
                    var skillInfo = SkillLogic.GetSkillInfo(skill);
                    var evt       = skillInfo.eventList[0];
                    var ret       = gameObject.GetComponent <BuffComponent>().AddBuff(evt.affix, pos);
                    if (ret)
                    {
                        NetDateInterface.FastAddBuff(evt.affix, otherGo, gameObject, skill.Id, evt.EvtId);
                    }
                }
            }
        }
コード例 #10
0
 /// <summary>
 /// Master 退出场景所有的Entities都销毁掉简单处理
 /// </summary>
 /// <param name="unitData">Unit data.</param>
 /// <param name="spawn">Spawn.</param>
 public void CreateChest(UnitData unitData, SpawnChest spawn)
 {
     if (NetworkUtil.IsNetMaster())
     {
         var cg = CGPlayerCmd.CreateBuilder();
         cg.Cmd = "AddEntity";
         var entityInfo = EntityInfo.CreateBuilder();
         entityInfo.UnitId = unitData.ID;
         var ip = NetworkUtil.ConvertPos(spawn.transform.position);
         entityInfo.X       = ip [0];
         entityInfo.Y       = ip [1];
         entityInfo.Z       = ip [2];
         entityInfo.SpawnId = spawn.SpawnId;
         entityInfo.HP      = unitData.HP;
         cg.EntityInfo      = entityInfo.Build();
         var scene = WorldManager.worldManager.GetActive();
         scene.BroadcastMsg(cg);
     }
     else
     {
         CreateChestFromNetwork(unitData, spawn);
     }
 }
コード例 #11
0
        void OnTriggerEnter(Collider other)
        {
            Log.Sys("MoveBlock Enter : " + other.gameObject);
            if (NetworkUtil.IsNetMaster())
            {
                if (other.tag == GameTag.Player)
                {
                    //击退技能
                    var pos     = other.transform.position;
                    var otherGo = other.gameObject;
                    //dy dx 比较 那个大 保留那个 同时另外一个修正为 自己的pos
                    var par   = transform.parent.gameObject;
                    var myPos = par.transform.position;

                    //假设箱子都是 正方体
                    var dx = myPos.x - pos.x;
                    var dz = myPos.z - pos.z;
                    if (Mathf.Abs(dx) < Mathf.Abs(dz))
                    {
                        pos.x = myPos.x;
                    }
                    else
                    {
                        pos.z = myPos.z;
                    }

                    var skill     = Util.GetSkillData((int)SkillData.SkillConstId.KnockBack, 1);
                    var skillInfo = SkillLogic.GetSkillInfo(skill);
                    var evt       = skillInfo.eventList [0];
                    var ret       = par.GetComponent <BuffComponent>().AddBuff(evt.affix, pos);
                    if (ret)
                    {
                        NetDateInterface.FastAddBuff(evt.affix, otherGo, par, skill.Id, evt.EvtId, pos);
                    }
                }
            }
        }
コード例 #12
0
        void MsgHandler(KBEngine.Packet packet)
        {
            var proto = packet.protoBody as GCPlayerCmd;

            Log.Net("Map4Receive: " + proto);
            var cmds = proto.Result.Split(' ');

            if (cmds [0] == "Login")
            {
                myId = Convert.ToInt32(cmds [1]);
                ObjectManager.objectManager.RefreshMyServerId(myId);
            }
            else if (cmds [0] == "Add")
            {
                ObjectManager.objectManager.CreateOtherPlayer(proto.AvatarInfo);
                PlayerDataInterface.DressEquip(proto.AvatarInfo);
                var player = ObjectManager.objectManager.GetPlayer(proto.AvatarInfo.Id);
                if (player != null)
                {
                    var sync = player.GetComponent <PlayerSync>();
                    if (sync != null)
                    {
                        sync.NetworkMove(proto.AvatarInfo);
                    }
                    else
                    {
                        var sync2 = player.GetComponent <MySelfAttributeSync>();
                        sync2.NetworkAttribute(proto.AvatarInfo);
                    }
                }
            }
            else if (cmds [0] == "Remove")
            {
                ObjectManager.objectManager.DestroyPlayer(proto.AvatarInfo.Id);
            }
            else if (cmds [0] == "Update")
            {
                var player = ObjectManager.objectManager.GetPlayer(proto.AvatarInfo.Id);
                if (player != null)
                {
                    var sync = player.GetComponent <PlayerSync>();
                    if (sync != null)
                    {
                        sync.NetworkMove(proto.AvatarInfo);
                    }
                    else
                    {
                        var myselfAttr = player.GetComponent <MySelfAttributeSync>();
                        if (myselfAttr != null)
                        {
                            myselfAttr.NetworkAttribute(proto.AvatarInfo);
                        }
                    }
                }
            }
            else if (cmds [0] == "Damage")
            {
                var dinfo = proto.DamageInfo;
                var enemy = ObjectManager.objectManager.GetPlayer(dinfo.Enemy);
                if (enemy != null)
                {
                    var sync = enemy.GetComponent <PlayerSync>();
                    if (sync != null)
                    {
                        sync.DoNetworkDamage(proto);
                    }
                }
                if (!NetworkUtil.IsMaster() && enemy != null)
                {
                    var sync = enemy.GetComponent <MonsterSync>();
                    if (sync != null)
                    {
                        sync.DoNetworkDamage(proto);
                    }
                }
            }
            else if (cmds [0] == "Skill")
            {
                var sk     = proto.SkillAction;
                var player = ObjectManager.objectManager.GetPlayer(sk.Who);
                if (player != null)
                {
                    var sync = player.GetComponent <PlayerSync>();
                    if (sync != null)
                    {
                        sync.NetworkAttack(sk);
                    }
                }
            }
            else if (cmds [0] == "Buff")
            {
                var target = proto.BuffInfo.Target;
                var sync   = NetDateInterface.GetPlayer(target);
                var player = ObjectManager.objectManager.GetPlayer(target);
                if (sync != null)
                {
                    sync.NetworkBuff(proto);
                }
                if (player != null && !NetworkUtil.IsNetMaster())
                {
                    var monSync = player.GetComponent <MonsterSync>();
                    if (monSync != null)
                    {
                        monSync.NetworkBuff(proto);
                    }
                }
            }
            else if (cmds [0] == "AddEntity")
            {
                var ety = proto.EntityInfo;
                if (ety.EType == EntityType.CHEST)
                {
                    StartCoroutine(WaitZoneInit(ety));
                }
                else if (ety.EType == EntityType.DROP)
                {
                    var itemData = Util.GetItemData((int)ItemData.GoodsType.Props, (int)ety.ItemId);
                    var itemNum  = ety.ItemNum;
                    var pos      = NetworkUtil.FloatPos(ety.X, ety.Y, ety.Z);
                    DropItemStatic.MakeDropItemFromNet(itemData, pos, itemNum, ety);
                }
            }
            else if (cmds [0] == "UpdateEntity")
            {
                var ety = proto.EntityInfo;
                var mon = ObjectManager.objectManager.GetPlayer(ety.Id);
                Log.Net("UpdateEntityHP: " + ety.Id + " hp " + ety.HasHP + " h " + ety.HP);
                if (!NetworkUtil.IsMaster() && mon != null)
                {
                    var sync = mon.GetComponent <MonsterSync>();
                    if (sync != null)
                    {
                        sync.SyncAttribute(proto);
                    }
                }
            }
            else if (cmds [0] == "RemoveEntity")
            {
                var ety = proto.EntityInfo;
                var mon = ObjectManager.objectManager.GetPlayer(ety.Id);
                if (!NetworkUtil.IsMaster() && mon != null)
                {
                    var netView = mon.GetComponent <KBEngine.KBNetworkView>();
                    if (netView != null)
                    {
                        ObjectManager.objectManager.DestroyByLocalId(netView.GetLocalId());
                    }
                }
            }
            else if (cmds [0] == "Pick")
            {
                if (!NetworkUtil.IsMaster())
                {
                    var action = proto.PickAction;
                    var ety    = ObjectManager.objectManager.GetPlayer(action.Id);
                    var who    = ObjectManager.objectManager.GetPlayer(action.Who);
                    if (ety != null)
                    {
                        var item = ety.GetComponent <DropItemStatic>();
                        if (item != null)
                        {
                            item.PickItemFromNetwork(who);
                        }
                    }
                }
            }
            else if (cmds [0] == "Revive")
            {
                var player = ObjectManager.objectManager.GetPlayer(proto.AvatarInfo.Id);
                if (player != null)
                {
                    var sync = player.GetComponent <PlayerSync>();
                    if (sync != null)
                    {
                        sync.Revive();
                    }
                }
            }
            else if (cmds [0] == "Dead")
            {
                var dinfo = proto.DamageInfo;
                ScoreManager.Instance.NetAddScore(dinfo.Attacker, dinfo.Enemy);
            }
            else if (cmds [0] == "SyncTime")
            {
                if (!NetworkUtil.IsNetMaster())
                {
                    ScoreManager.Instance.NetSyncTime(proto.LeftTime);
                }
            }
            else if (cmds [0] == "GameOver")
            {
                if (!NetworkUtil.IsNetMaster())
                {
                    ScoreManager.Instance.NetworkGameOver();
                }
            }
            else if (cmds [0] == "AllReady")
            {
                Util.ShowMsg("所有客户端准备完成");
                //当所有客户端准备好之后 服务器推送Entity给所有客户端
                NetMatchScene.Instance.SetAllReady();

                //更新IsMaster 这样才能生成Entity
                var player     = ObjectManager.objectManager.GetMyPlayer();
                var myselfAttr = player.GetComponent <MySelfAttributeSync>();
                var matchRoom  = NetMatchScene.Instance.GetComponent <MatchRoom>();
                if (myselfAttr != null)
                {
                    myselfAttr.NetworkAttribute(matchRoom.GetMyInfo());
                }
            }
        }