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; } } }
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); } }
/// <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); } }
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); } }
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); }
/// <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); }
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); } }
/// <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); } }
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); } }