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()); } }
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(); } }
void OnTriggerEnter(Collider other) { //只有Master才可以控制谁拾取到了物品 if (NetworkUtil.IsNetMaster()) { if (!pickYet && other.tag == GameTag.Player) { StartCoroutine(PickItem(other.gameObject)); } } }
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()); } }
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(); }
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 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(); } } } } }
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(); }
//为玩家增加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); } } } }
/// <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); } }
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); } } } }
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()); } } }