Example #1
0
        // Use this for initialization
        void Start()
        {
            var item    = Util.GetItemData((int)GoodsTypeEnum.Equip, forgeData.output);
            var needMat = JSON.Parse(forgeData.materials).AsObject;
            var matStr  = "";

            foreach (KeyValuePair <string, JSONNode> m in needMat)
            {
                var hasCount  = BackPack.backpack.GetItemCount((int)GoodsTypeEnum.Props, System.Convert.ToInt32(m.Key));
                var needCount = m.Value.AsInt;
                var matData   = Util.GetItemData((int)GoodsTypeEnum.Props, System.Convert.ToInt32(m.Key));
                Log.GUI("NeedMaterial " + matData.ItemName + " num " + needCount);
                if (hasCount < needCount)
                {
                    matStr += string.Format("[0aa0ff]{0} {1}/[f00a0a]{2}[-]\n", matData.ItemName, needCount, hasCount);
                }
                else
                {
                    matStr += string.Format("[0aa0ff]{0} {1}/{2}\n", matData.ItemName, needCount, hasCount);
                }
            }

            var s = string.Format("[ff9500]{0}[-]\n{1}", item.ItemName, matStr);

            GetLabel("Name").text = s;
        }
Example #2
0
        void OnLevel(int levId)
        {
            Log.GUI("OnLevelId " + levId);
            var levData = allLevels[levId];

            if (levData.levelLocal.condition != 0 && allLevels.Count > (levId + 1))
            {
                var num  = BackPack.backpack.GetItemCount(0, levData.levelLocal.condition);
                var item = Util.GetItemData(0, levData.levelLocal.condition);
                if (num <= 0)
                {
                    WindowMng.windowMng.ShowNotifyLog(string.Format("[ff1010]{0}[-]被魔神强大结界所笼罩,需要[ff1010]{1}[-]打破结界, 似乎[ff1010]商店[-]有此物可以获得。",
                                                                    levData.levelLocal.name, item.ItemName));
                    return;
                }
                else
                {
                    GameInterface_Backpack.UseItem(levData.levelLocal.condition);
                }
            }

            CopyController.copyController.SelectLevel(curChapter, allLevels[levId]);
            WorldManager.worldManager.WorldChangeScene(CopyController.copyController.SelectLevelInfo.levelLocal.id, false);
            Log.GUI("OnCopyLevel " + levId);
        }
Example #3
0
        public BackpackData(PackEntry e)
        {
            var pinfo = PackInfo.CreateBuilder();

            pinfo.PackEntry = e;
            packInfo        = pinfo.Build();
            entry           = e;
            //num = entry.Count;
            itemData = Util.GetItemData(e.GoodsType, baseId);
        }
Example #4
0
 /*
  * 从服务器初始化背包数据
  */
 public BackpackData(PackInfo pinfo)
 {
     if (pinfo != null)
     {
         packInfo = pinfo;
         entry    = packInfo.PackEntry;
         Log.Important("Init ItemData is " + pinfo.PackEntry.GoodsType + " num " + entry.Count);
         itemData = Util.GetItemData(pinfo.PackEntry.GoodsType, baseId);
         if (itemData == null)
         {
             Debug.LogError("BackpackData:: Init Error " + baseId);
         }
     }
 }
Example #5
0
        public static void AddGold(int num)
        {
            var itemData = Util.GetItemData(0, (int)ItemData.ItemID.GOLD);
            var has      = ServerData.Instance.playerInfo.Gold;

            SetGold(has + num);
            if (num > 0)
            {
                SendNotify(string.Format("[ff9500]{0}+{1}[-]", itemData.ItemName, num));
            }
            else if (num < 0)
            {
                SendNotify(string.Format("[ff1010]{0}{1}[-]", itemData.ItemName, num));
            }
        }
Example #6
0
        /// <summary>
        /// 根据当前打造等级获取相关配置表
        /// </summary>
        /// <returns>The forge list.</returns>
        public static List <ForgeConfigData> GetForgeList()
        {
            List <ForgeConfigData> ret = new List <ForgeConfigData>();

            foreach (var d in GameData.ForgeConfig)
            {
                var item   = Util.GetItemData((int)GoodsTypeEnum.Equip, d.output);
                var curLev = GetForgeLevel((int)item.equipPosition);
                if (d.level <= curLev)
                {
                    ret.Add(d);
                }
            }
            return(ret);
        }
Example #7
0
        public void SetId(StoreUI s, int id)
        {
            storeUI = s;
            itemId  = id;
            var item  = Util.GetItemData(0, id);
            var count = BackPack.backpack.GetItemCount(0, id);

            if (item.GoldCost > 0)
            {
                Name.text = string.Format("{0} [ffaa0a]{1}金币[-] 拥有:{2}", item.ItemName, item.GoldCost, count);
            }
            else
            {
                Name.text = string.Format("{0} [f0f00a]{1}晶石[-] 拥有:{2}", item.ItemName, item.propsConfig.JingShi, count);
            }
        }
Example #8
0
        public static void AddJingShi(int num)
        {
            var itemData = Util.GetItemData(0, (int)ItemData.ItemID.JING_SHI);
            var has      = ServerData.Instance.playerInfo.JingShi;

            SetJingShi(has + num);
            if (num > 0)
            {
                SendNotify(string.Format("[ff9500]{0}+{1}[-]", itemData.ItemName, num));
            }
            else if (num < 0)
            {
                SendNotify(string.Format("[ff1010]{0}{1}[-]", itemData.ItemName, num));
            }
            ServerData.Instance.SaveUserData();
        }
Example #9
0
        public void SetForgeItem(ForgeConfigData data)
        {
            fd = data;
            var canForge = GameInterface_Forge.CanForge(data.id);
            var s        = "";

            if (canForge)
            {
                s = string.Format("[ff9500]{0}.{1}[-]\n[0affa0]可以打造[-]", data.id, Util.GetItemData((int)GoodsTypeEnum.Equip, data.output).ItemName);
            }
            else
            {
                s = string.Format("[ff9500]{0}.{1}[-]\n[ff0a0a]材料不足[-]", data.id, Util.GetItemData((int)GoodsTypeEnum.Equip, data.output).ItemName);
            }
            GetLabel("Name").text = s;
        }
Example #10
0
        /// <summary>
        /// 掉落网络物品
        /// </summary>
        /// <param name="mon">Mon.</param>
        public static void DropStaticGoods(NpcAttribute mon)
        {
            var treasure = mon.GetDropTreasure();

            foreach (var d in treasure)
            {
                Log.Sys("DropTreasure " + d.Count);
                var itemData = Util.GetItemData((int)ItemData.GoodsType.Props, (int)d[0]);
                int num      = 1;
                if (d.Count >= 3)
                {
                    num = (int)d[2];
                }

                DropItemStatic.MakeDropItem(itemData, mon.transform.position + new Vector3(0, 0.4f, 0), num, mon.GetNetView().GetServerID());
            }
        }
Example #11
0
        public static void SellUserProps(KBEngine.Packet packet)
        {
            var inpb     = packet.protoBody as CGSellUserProps;
            var item     = GetItemInPack(inpb.UserPropsId);
            var num      = item.PackEntry.Count;
            var itemData = Util.GetItemData(inpb.GoodsType, item.PackEntry.BaseId);

            ReduceItem(inpb.UserPropsId, num);
            if (itemData.GoldCost > 0)
            {
                AddGold(itemData.GoldCost * num);
            }
            else
            {
                AddGold(itemData.propsConfig.JingShi * 100 * num);
            }
        }
Example #12
0
        public static void Drop(NpcAttribute mon)
        {
            var treasure = mon.GetDropTreasure();

            foreach (var d in treasure)
            {
                Log.Sys("DropTreasure " + d.Count);
                var itemData = Util.GetItemData(0, (int)d[0]);
                int num      = 1;
                if (d.Count >= 3)
                {
                    num = (int)d[2];
                }

                ItemDataRef.MakeDropItem(itemData, mon.transform.position + new Vector3(0, 0.4f, 0), num);
            }
        }
Example #13
0
        static System.Collections.IEnumerator UseItemCor(int itemId)
        {
            yield return(new WaitForSeconds(0.1f));

            var id       = BackPack.backpack.GetItemId(itemId);
            var itemData = Util.GetItemData(0, itemId);

            var use = CGUseUserProps.CreateBuilder();

            use.UserPropsId = id;
            use.Count       = 1;
            var packet = new KBEngine.PacketHolder();

            Log.Net("Send Use Item");
            yield return(ClientApp.Instance.StartCoroutine(KBEngine.Bundle.sendSimple(ClientApp.Instance, use, packet)));

            Log.Sys("UseResult " + packet.packet.flag);
            if (packet.packet.responseFlag == 0)
            {
                //GameInterface_Skill.MeUseSkill(itemData.triggerBuffId);
                GameInterface_Skill.AddSkillBuff(ObjectManager.objectManager.GetMyPlayer(), itemData.triggerBuffId, Vector3.zero);
            }
        }
Example #14
0
        public static bool IsPackageFull(int itemId, int num)
        {
            var pinfo    = ServerData.Instance.playerInfo;
            var itemData = Util.GetItemData(0, itemId);

            if (itemData.UnitType == ItemData.UnitTypeEnum.GOLD)
            {
                return(false);
            }

            if (itemData.MaxStackSize > 1)
            {
                Log.Sys("AddItemInStack");
                foreach (var p in pinfo.PackInfoList)
                {
                    if (p.PackEntry.BaseId == itemId)
                    {
                        return(false);
                    }
                }
            }

            PackInfo[] packList = new PackInfo[BackPack.MaxBackPackNumber];
            foreach (var p in pinfo.PackInfoList)
            {
                packList [p.PackEntry.Index] = p;
            }

            for (int i = 0; i < BackPack.MaxBackPackNumber; i++)
            {
                if (packList [i] == null)
                {
                    return(false);
                }
            }
            return(true);
        }
Example #15
0
        static int GetRandomDefense(int equipId)
        {
            var itemData = Util.GetItemData((int)GoodsTypeEnum.Equip, equipId);

            return(itemData.RandomInitDefense());
        }
Example #16
0
        public static void LevelUpGem(KBEngine.Packet packet)
        {
            var inpb = packet.protoBody as CGLevelUpGem;

            if (inpb.GemIdCount == 2)
            {
                var gemId    = inpb.GemIdList [0];
                var gem      = GetItemInPack(gemId);
                var itemData = Util.GetItemData(0, gem.PackEntry.BaseId);

                var targetGem = GameInterface_Package.GetRndGem(itemData.Level + 1);
                if (targetGem != null)
                {
                    AddItemInPackage(targetGem.id, 1);
                    SendNotify("合成成功,本次概率" + GameInterface_Package.lastPossibility);
                }
                else
                {
                    SendNotify("合成失败, 本次概率" + GameInterface_Package.lastPossibility);
                }
                foreach (var g in inpb.GemIdList)
                {
                    ReduceItem(g, 1);
                }
            }
            else if (inpb.GemIdCount == 1)
            {//一键快速合成
                var             gemId     = inpb.GemIdList [0];
                var             gem       = GetItemInPack(gemId);
                var             itemData  = Util.GetItemData(0, gem.PackEntry.BaseId);
                int             count     = gem.PackEntry.Count / 2;
                int             useNum    = count;
                int             allRate   = GameInterface_Package.GetAllGemRate(itemData.Level + 1);
                PropsConfigData targetGem = null;
                int             getNum    = 0;
                while (count > 0)
                {
                    if (targetGem == null)
                    {
                        targetGem = GameInterface_Package.GetRndGem(itemData.Level + 1);
                        if (targetGem != null)
                        {
                            getNum++;
                        }
                    }
                    else
                    {
                        var ret = GameInterface_Package.GetRndGemForId(itemData.Level + 1, targetGem.id, allRate);
                        if (ret > 0)
                        {
                            getNum++;
                        }
                    }
                    count--;
                }
                if (getNum > 0)
                {
                    AddItemInPackage(targetGem.id, getNum);
                }

                ReduceItem(gemId, useNum * 2);
            }
        }
Example #17
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());
                }
            }
        }
Example #18
0
        public static void LevelUpEquip(KBEngine.Packet packet)
        {
            var      playerInfo = ServerData.Instance.playerInfo;
            var      inpb       = packet.protoBody as CGLevelUpEquip;
            var      eid        = inpb.EquipId;
            var      curLev     = 0;
            PackInfo packInfo   = null;

            foreach (var e in playerInfo.DressInfoList)
            {
                if (e.PackEntry.Id == eid)
                {
                    packInfo = e;
                    break;
                }
            }
            if (packInfo != null)
            {
                curLev = packInfo.PackEntry.Level + 1;
                var levCost = GMDataBaseSystem.SearchIdStatic <EquipLevelData>(GameData.EquipLevel, curLev);
                if (levCost == null)
                {
                    SendNotify("装备已经升到顶级了");
                    return;
                }

                var myGold = playerInfo.Gold;
                if (levCost.gold > myGold)
                {
                    SendNotify("金币不足");
                    return;
                }
                AddGold(-levCost.gold);

                var extraAtt = 0;
                var extraDef = 0;
                foreach (var g in inpb.GemIdList)
                {
                    var pinfo    = GetItemInPack(g);
                    var itemData = Util.GetItemData(0, pinfo.PackEntry.BaseId);
                    extraAtt += itemData.GetRndAtk();
                    extraDef += itemData.GetRndDef();
                    ReduceItem(g, 1);
                }
                var rate = Random.Range(0, 100);
                if (rate < levCost.rate)
                {
                    packInfo.PackEntry.Level++;
                    packInfo.PackEntry.ExtraAttack  += extraAtt;
                    packInfo.PackEntry.ExtraDefense += extraDef;
                    SendNotify("装备升级成功, 本次概率" + rate);

                    var update = GCPushEquipDataUpdate.CreateBuilder();
                    update.PackInfo = packInfo;
                    ServerBundle.SendImmediatePush(update);
                }
                else
                {
                    SendNotify("装备升级失败, 本次概率" + rate + " 需要概率 " + levCost.rate);
                }
            }
        }
Example #19
0
        public void MsgHandler(KBEngine.Packet packet)
        {
            var proto = packet.protoBody as GCPlayerCmd;

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

            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 <ISyncInterface>();

                    if (!proto.AvatarInfo.HasScore)
                    {
                        proto.AvatarInfo.Score = 0;
                    }
                    if (sync != null)
                    {
                        var ainfo = NetMatchScene.Instance.matchRoom.GetPlayerInfo(proto.AvatarInfo.Id);
                        sync.InitSync(ainfo);
                        sync.NetworkAttribute(proto);
                    }
                }
            }
            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 <ISyncInterface>();
                    if (sync != null)
                    {
                        sync.NetworkAttribute(proto);
                    }
                }
            }
            else if (cmds [0] == "Damage")
            {
                var dinfo = proto.DamageInfo;
                var enemy = ObjectManager.objectManager.GetPlayer(dinfo.Enemy);
                if (enemy != null)
                {
                    var sync = enemy.GetComponent <ISyncInterface>();
                    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 <ISyncInterface>();
                    if (sync != null)
                    {
                        sync.NetworkAttack(proto);
                    }
                }
            }
            else if (cmds [0] == "Buff")
            {
                var target = proto.BuffInfo.Target;
                var player = ObjectManager.objectManager.GetPlayer(target);
                if (player != null)
                {
                    var sync = player.GetComponent <ISyncInterface>();
                    if (sync != null)
                    {
                        sync.NetworkBuff(proto);
                    }
                }

                /*
                 * var target = proto.BuffInfo.Target;
                 * var sync = NetDateInterface.GetPlayer(target);
                 * var player = ObjectManager.objectManager.GetPlayer(target);
                 * if (sync != null)
                 * {
                 *  sync.NetworkBuff(proto);
                 * }
                 * else if(player != null)
                 * {
                 *  var sync2 = player.GetComponent<MySelfAttributeSync>();
                 *  if (sync2 != null)
                 *  {
                 *      sync2.NetworkBuff(proto);
                 *  }
                 * }
                 * if (player != null && !NetworkUtil.IsNetMaster())
                 * {
                 *  var monSync = player.GetComponent<MonsterSync>();
                 *  if (monSync != null)
                 *  {
                 *      monSync.NetworkBuff(proto);
                 *  }
                 * }
                 */
            }
            else if (cmds[0] == "RemoveBuff")
            {
                var target = proto.BuffInfo.Target;
                var player = ObjectManager.objectManager.GetPlayer(target);
                if (player != null)
                {
                    var sync = player.GetComponent <ISyncInterface>();
                    if (sync != null)
                    {
                        sync.NetworkRemoveBuff(proto);
                    }
                }
            }
            else if (cmds [0] == "AddEntity")
            {
                var ety = proto.EntityInfo;
                if (ety.EType == EntityType.CHEST)
                {
                    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 + ":" + ety + ":" + mon);
                //if (!NetworkUtil.IsMaster() && mon != null)
                if (mon != null)
                {
                    var sync = mon.GetComponent <MonsterSync>();
                    if (sync != null)
                    {
                        sync.NetworkAttribute(proto);
                    }
                }
            }
            else if (cmds [0] == "RemoveEntity")
            {
                var ety = proto.EntityInfo;
                var mon = ObjectManager.objectManager.GetPlayer(ety.Id);
                //if (!NetworkUtil.IsMaster() && mon != null)
                if (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 <ISyncInterface>();
                    if (sync != null)
                    {
                        sync.Revive(proto);
                    }
                }
            }
            else if (cmd0 == "DeadActor")
            {
                var player = ObjectManager.objectManager.GetPlayer(proto.ActorId);
                if (player != null)
                {
                    var sync = player.GetComponent <ISyncInterface>();
                    if (sync != null)
                    {
                        sync.Dead(proto);
                    }
                }
            }
            else if (cmds [0] == "Dead")
            {
                //ScoreManager.Instance.NetAddScore(dinfo.Attacker, dinfo.Enemy);
                ScoreManager.Instance.Dead(proto);
            }
            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();
            }
            else if (cmds[0] == "News")
            {
                var con = proto.News;
                Util.ShowMsg(con);
            }
            else if (cmds[0] == "UDPLost")
            {
                Util.ShowMsg("Server Side UDPLost!");
                UDPLost();
            }
            else if (cmd0 == "SyncFrame")
            {
                SyncFrame(proto);
            }
        }
Example #20
0
        /// <summary>
        /// 背包中增加新获得的武器
        /// 背包改造为无限长度 并且没有限制
        /// </summary>
        public static void AddEquipInPackage(int equipId, int initAttack, int initDefense)
        {
            Log.Sys("AddEquipInpackage " + equipId + " initAttack " + initAttack + " initDef " + initDefense);
            var pinfo    = ServerData.Instance.playerInfo;
            var itemData = Util.GetItemData((int)GoodsTypeEnum.Equip, equipId);

            PackInfo[] packList = new PackInfo[BackPack.MaxBackPackNumber];
            long       maxId    = 0;

            foreach (var p in pinfo.PackInfoList)
            {
                packList [p.PackEntry.Index] = p;
                maxId = (long)Mathf.Max(p.PackEntry.Id + 1, maxId);
            }

            foreach (var p in pinfo.DressInfoList)
            {
                maxId = (long)Mathf.Max(p.PackEntry.Id + 1, maxId);
            }

            if (maxId < 0)
            {
                maxId++;
            }
            for (int i = 0; i < BackPack.MaxBackPackNumber; i++)
            {
                if (packList [i] == null)
                {
                    var pkInfo  = PackInfo.CreateBuilder();
                    var pkentry = PackEntry.CreateBuilder();
                    pkInfo.CdTime = 0;

                    pkentry.Id         = maxId;
                    pkentry.BaseId     = equipId;
                    pkentry.GoodsType  = 1;
                    pkentry.Count      = 1;
                    pkentry.Index      = i;
                    pkentry.Level      = 1;
                    pkentry.RndAttack  = initAttack;
                    pkentry.RndDefense = initDefense;

                    pkInfo.PackEntry = pkentry.Build();
                    var msg = pkInfo.Build();
                    pinfo.PackInfoList.Add(msg);

                    var push = GCPushPackInfo.CreateBuilder();
                    push.BackpackAdjust = false;
                    push.PackType       = PackType.DEFAULT_PACK;
                    push.PackInfoList.Add(msg);
                    ServerBundle.SendImmediatePush(push);

                    SendNotify(string.Format("[ff0a0a]{0}+{1}[-]", itemData.ItemName, 1));
                    return;
                }
            }

            //PackFull
            var notify = GCPushNotify.CreateBuilder();

            notify.Notify = "[f00b00]背包已满[-]";
            ServerBundle.SendImmediatePush(notify);
        }
Example #21
0
        //Notify
        //Props Stack
        /// <summary>
        /// 得到的道具装备都是白装,自己不断升级,类似怪物猎人
        /// </summary>
        /// <param name="itemId">Item identifier.</param>
        /// <param name="num">Number.</param>
        public static void AddItemInPackage(int itemId, int num)
        {
            var pinfo    = ServerData.Instance.playerInfo;
            var itemData = Util.GetItemData(0, itemId);

            if (itemData.UnitType == ItemData.UnitTypeEnum.GOLD)
            {
                PlayerData.AddGold(num);
                return;
            }

            //Has Such Objects
            if (itemData.MaxStackSize > 1)
            {
                Log.Sys("AddItemInStack");
                foreach (var p in pinfo.PackInfoList)
                {
                    if (p.PackEntry.BaseId == itemId && p.PackEntry.GoodsType == (int)ItemData.GoodsType.Props)
                    {
                        pinfo.PackInfoList.Remove(p);
                        var newPkinfo  = PackInfo.CreateBuilder(p);
                        var newPkEntry = PackEntry.CreateBuilder(p.PackEntry);
                        newPkEntry.Count   += num;
                        newPkinfo.PackEntry = newPkEntry.Build();
                        var msg = newPkinfo.Build();
                        pinfo.PackInfoList.Add(msg);


                        var push = GCPushPackInfo.CreateBuilder();
                        push.BackpackAdjust = false;
                        push.PackType       = PackType.DEFAULT_PACK;
                        push.PackInfoList.Add(msg);

                        ServerBundle.SendImmediatePush(push);

                        SendNotify(string.Format("[ff0a0a]{0}+{1}[-]", itemData.ItemName, num));
                        return;
                    }
                }
            }
            //new Item
            //all Slot
            PackInfo[] packList = new PackInfo[BackPack.MaxBackPackNumber];
            long       maxId    = 0;

            foreach (var p in pinfo.PackInfoList)
            {
                packList [p.PackEntry.Index] = p;
                maxId = (long)Mathf.Max(p.PackEntry.Id + 1, maxId);
            }

            foreach (var p in pinfo.DressInfoList)
            {
                maxId = (long)Mathf.Max(p.PackEntry.Id + 1, maxId);
            }

            if (maxId < 0)
            {
                maxId++;
            }

            for (int i = 0; i < BackPack.MaxBackPackNumber; i++)
            {
                if (packList [i] == null)
                {
                    var pkInfo  = PackInfo.CreateBuilder();
                    var pkentry = PackEntry.CreateBuilder();
                    pkInfo.CdTime = 0;

                    pkentry.Id        = maxId;
                    pkentry.BaseId    = itemId;
                    pkentry.GoodsType = 0;
                    pkentry.Count     = num;
                    pkentry.Index     = i;

                    pkInfo.PackEntry = pkentry.Build();
                    var msg = pkInfo.Build();
                    pinfo.PackInfoList.Add(msg);

                    var push = GCPushPackInfo.CreateBuilder();
                    push.BackpackAdjust = false;
                    push.PackType       = PackType.DEFAULT_PACK;
                    push.PackInfoList.Add(msg);
                    ServerBundle.SendImmediatePush(push);

                    SendNotify(string.Format("[ff0a0a]{0}+{1}[-]", itemData.ItemName, num));
                    return;
                }
            }

            //PackFull
            var notify = GCPushNotify.CreateBuilder();

            notify.Notify = "背包已满";
            ServerBundle.SendImmediatePush(notify);
        }