Esempio n. 1
0
        void SendMoveCmd()
        {
            var curPos = NetworkUtil.ConvertPos(transform.position);
            var dir    = (int)transform.localRotation.eulerAngles.y;
            var meAttr = gameObject.GetComponent <NpcAttribute>();

            if (curInfo.X != curPos [0] || curInfo.Y != curPos [1] || curInfo.Z != curPos [2] || curInfo.Dir != dir)
            {
                var mvTarget = new Vector3(curInfo.X / 100.0f, curInfo.Y / 100.0f + 0.2f, curInfo.Z / 100.0f);
                var cmd      = new ObjectCommand();
                cmd.targetPos = mvTarget;
                cmd.dir       = curInfo.Dir;
                cmd.commandID = ObjectCommand.ENUM_OBJECT_COMMAND.OC_MOVE;
                GetComponent <LogicCommand>().PushCommand(cmd);
            }

            if (curInfo.HasJumpForwardSpeed)
            {
                var intJumpSpeed = (int)(meAttr.JumpForwardSpeed * 100);
                if (intJumpSpeed != curInfo.JumpForwardSpeed)
                {
                    meAttr.JumpForwardSpeed = curInfo.JumpForwardSpeed / 100.0f;
                }
            }
        }
Esempio n. 2
0
        private void Start()
        {
            var runner = transform.parent.GetComponent <SkillLayoutRunner>();
            var isMe   = runner.stateMachine.attacker.GetComponent <NpcAttribute>().GetNetView().IsMe;

            if (isMe)
            {
                var unitData = Util.GetUnitData(false, MonsterID, 0);
                var cg       = CGPlayerCmd.CreateBuilder();
                cg.Cmd = "AddEntity";

                var entityInfo = EntityInfo.CreateBuilder();
                entityInfo.UnitId = MonsterID;
                var ip = NetworkUtil.ConvertPos(this.transform.position);
                entityInfo.X        = ip[0];
                entityInfo.Y        = ip[1] + 50;
                entityInfo.Z        = ip[2];
                entityInfo.SpawnId  = 0;
                entityInfo.EType    = EntityType.CHEST;
                entityInfo.HP       = unitData.HP;
                entityInfo.LifeLeft = GameConst.Instance.NuclearWaitTime + GameConst.Instance.NuclearWorkTime;
                entityInfo.PlayerID =
                    runner.stateMachine.attacker.GetComponent <NpcAttribute>().GetNetView().GetServerID();
                cg.EntityInfo = entityInfo.Build();
                var scene = WorldManager.worldManager.GetActive();
                scene.BroadcastMsg(cg);
            }
        }
Esempio n. 3
0
        /// <summary>
        /// 技能的朝向
        /// 攻击目标由服务器决定
        /// </summary>
        /// <param name="skillId"></param>
        /// <param name="skillLevel"></param>
        public static void FastUseSkill(int skillId, int skillLevel)
        {
            Log.Sys("FastUseSkill: " + skillId + " lev " + skillLevel);
            var sc = WorldManager.worldManager.GetActive();

            if (sc.IsNet && sc.CanFight)
            {
                var me  = ObjectManager.objectManager.GetMyPlayer();
                var pos = me.transform.position;
                var dir = (int)me.transform.localRotation.eulerAngles.y;

                /*
                 * var tower = me.GetComponent<TankPhysicComponent>().tower;
                 * if (tower == null)
                 * {
                 *  return;
                 * }
                 * var dir = (int)tower.transform.eulerAngles.y;
                 */


                var cg     = CGPlayerCmd.CreateBuilder();
                var skInfo = SkillAction.CreateBuilder();
                skInfo.Who        = ObjectManager.objectManager.GetMyServerID();
                skInfo.SkillId    = skillId;
                skInfo.SkillLevel = skillLevel;

                var ip = NetworkUtil.ConvertPos(pos);
                skInfo.X   = ip[0];
                skInfo.Y   = ip[1];
                skInfo.Z   = ip[2];
                skInfo.Dir = dir;

                /*
                 * if (skillId == 1)
                 * {
                 *  var attribute = me.GetComponent<NpcAttribute>();
                 *  skInfo.IsStaticShoot = attribute.GetStaticShootBuff();
                 * }
                 */

                var target   = SkillLogic.FindNearestEnemy(me);
                var targetId = 0;
                if (target != null)
                {
                    targetId = target.GetComponent <NpcAttribute>().GetNetView().GetServerID();
                }
                skInfo.Target = targetId;

                cg.SkillAction = skInfo.Build();
                cg.Cmd         = "Skill";
                //sc.BroadcastMsg(cg);
                sc.BroadcastKCP(cg);
            }
        }
Esempio n. 4
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);
     }
 }
Esempio n. 5
0
        public static void Revive()
        {
            var me  = ObjectManager.objectManager.GetMyPlayer();
            var sid = me.GetComponent <NpcAttribute>().GetNetView().GetServerID();

            var pos = NetworkUtil.ConvertPos(me.transform.position);
            var dir = (int)me.transform.localRotation.eulerAngles.y;

            var cg = CGPlayerCmd.CreateBuilder();

            cg.Cmd = "Revive";
            var ainfo = AvatarInfo.CreateBuilder();

            ainfo.Id      = sid;
            ainfo.X       = pos[0];
            ainfo.Y       = pos[1];
            ainfo.Z       = pos[2];
            ainfo.Dir     = dir;
            cg.AvatarInfo = ainfo.Build();
            WorldManager.worldManager.GetActive().BroadcastMsg(cg);
        }
Esempio n. 6
0
        /// <summary>
        ///相同的技能 Skill Configure来触发Buff 但是不要触发 Buff修改非表现属性
        /// </summary>
        /// <param name="affix">Affix.</param>
        /// <param name="attacker">Attacker.</param>
        /// <param name="target">Target.</param>
        public static void FastAddBuff(Affix affix, GameObject attacker, GameObject target, int skillId, int evtId)
        {
            var cg    = CGPlayerCmd.CreateBuilder();
            var binfo = BuffInfo.CreateBuilder();

            binfo.BuffType = (int)affix.effectType;
            binfo.Attacker = attacker.GetComponent <KBEngine.KBNetworkView>().GetServerID();
            binfo.Target   = target.GetComponent <KBEngine.KBNetworkView>().GetServerID();
            binfo.SkillId  = skillId;
            binfo.EventId  = evtId;
            var pos = attacker.transform.position;

            binfo.AddAttackerPos((int)(pos.x * 100));
            binfo.AddAttackerPos((int)(pos.y * 100));
            binfo.AddAttackerPos((int)(pos.z * 100));

            var pos1 = NetworkUtil.ConvertPos(target.transform.position);

            binfo.X   = pos1[0];
            binfo.Y   = pos1[1];
            binfo.Z   = pos1[2];
            binfo.Dir = (int)target.transform.eulerAngles.y;

            var eft  = BuffManager.buffManager.GetBuffInstance(affix.effectType);
            var buff = (IEffect)Activator.CreateInstance(eft);

            buff.attacker = attacker;
            buff.target   = target;
            var param = buff.GetExtraParams();

            binfo.Params = param;

            cg.BuffInfo = binfo.Build();
            cg.Cmd      = "Buff";
            var sc = WorldManager.worldManager.GetActive();

            sc.BroadcastMsg(cg);
        }
Esempio n. 7
0
        public void SyncToServer()
        {
            var me     = gameObject;
            var pos    = me.transform.position;
            var dir    = (int)me.transform.localRotation.eulerAngles.y;
            var meAttr = me.GetComponent <NpcAttribute>();
            var intPos = NetworkUtil.ConvertPos(pos);
            var ainfo  = EntityInfo.CreateBuilder();

            ainfo.Id = meAttr.GetNetView().GetServerID();
            var change = false;

            if (intPos [0] != lastInfo.X || intPos [1] != lastInfo.Y || intPos [2] != lastInfo.Z)
            {
                change  = true;
                ainfo.X = intPos [0];
                ainfo.Y = intPos [1];
                ainfo.Z = intPos [2];

                lastInfo.X = intPos [0];
                lastInfo.Y = intPos [1];
                lastInfo.Z = intPos [2];
            }
            if (meAttr.HP != lastInfo.HP)
            {
                change      = true;
                ainfo.HP    = meAttr.HP;
                lastInfo.HP = meAttr.HP;
            }
            if (change)
            {
                var etyInfo = ainfo.Build();
                var cg      = CGPlayerCmd.CreateBuilder();
                cg.Cmd        = "UpdateEntityData";
                cg.EntityInfo = etyInfo;
                NetworkUtil.Broadcast(cg);
            }
        }
Esempio n. 8
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);
     }
 }
Esempio n. 9
0
        public void SyncAttribute()
        {
            var me     = gameObject;
            var pos    = me.transform.position;
            var dir    = (int)me.transform.localRotation.eulerAngles.y;
            var meAttr = me.GetComponent <NpcAttribute>();
            var intPos = NetworkUtil.ConvertPos(pos);

            var ainfo  = AvatarInfo.CreateBuilder();
            var change = false;

            //Pos 和 Dir 同时同步
            if (intPos [0] != lastInfo.X || intPos [1] != lastInfo.Y || intPos [2] != lastInfo.Z || dir != lastInfo.Dir)
            {
                ainfo.X = intPos [0];
                ainfo.Y = intPos [1];
                ainfo.Z = intPos [2];

                curInfo.X = ainfo.X;
                curInfo.Y = ainfo.Y;
                curInfo.Z = ainfo.Z;

                ainfo.Dir   = dir;
                curInfo.Dir = dir;
                change      = true;
            }

            if (meAttr.HP != lastInfo.HP)
            {
                ainfo.HP   = meAttr.HP;
                curInfo.HP = meAttr.HP;
                change     = true;
            }
            var intNetSpeed = (int)(meAttr.NetSpeed * 100);

            if (intNetSpeed != lastInfo.NetSpeed)
            {
                ainfo.NetSpeed   = intNetSpeed;
                curInfo.NetSpeed = intNetSpeed;
                change           = true;
            }
            var intThrowSpeed = (int)(meAttr.ThrowSpeed * 100);

            if (intThrowSpeed != lastInfo.ThrowSpeed)
            {
                ainfo.ThrowSpeed   = intThrowSpeed;
                curInfo.ThrowSpeed = intThrowSpeed;
                change             = true;
            }
            var intJumpSpeed = (int)(meAttr.JumpForwardSpeed * 100);

            if (intJumpSpeed != lastInfo.JumpForwardSpeed)
            {
                ainfo.JumpForwardSpeed   = intJumpSpeed;
                curInfo.JumpForwardSpeed = intJumpSpeed;
                change = true;
            }

            if (meAttr.userName != lastInfo.Name)
            {
                ainfo.Name   = meAttr.userName;
                curInfo.Name = meAttr.userName;
                change       = true;
            }

            if (lastInfo.Job != ServerData.Instance.playerInfo.Roles.Job)
            {
                ainfo.Job   = ServerData.Instance.playerInfo.Roles.Job;
                curInfo.Job = ainfo.Job;
                change      = true;
            }

            if (change)
            {
                lastInfo = AvatarInfo.CreateBuilder(curInfo).Build();

                var cg = CGPlayerCmd.CreateBuilder();
                cg.Cmd        = "UpdateData";
                cg.AvatarInfo = ainfo.Build();
                NetworkUtil.Broadcast(cg);
            }
        }