Example #1
0
        public static bool ReduceItem(long userPropsId, int num)
        {
            var player = MyLib.ServerData.Instance.playerInfo;

            foreach (var pinfo in player.PackInfoList)
            {
                if (pinfo.PackEntry.Id == userPropsId)
                {
                    if (pinfo.PackEntry.Count < num)
                    {
                        SendNotify("道具数量不足");
                        return(false);
                    }
                    pinfo.PackEntry.Count -= num;
                    if (pinfo.PackEntry.Count <= 0)
                    {
                        player.PackInfoList.Remove(pinfo);
                    }


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

                    return(true);
                }
            }
            SendNotify("未找到该道具");
            return(false);
        }
Example #2
0
        private static void PutEquipInPackage(PackInfo pi)
        {
            var pinfo = ServerData.Instance.playerInfo;

            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)
                {
                    pi.PackEntry.Index = i;
                    pi.PackEntry.Count = 1;
                    pinfo.PackInfoList.Add(pi);

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


            SendNotify("背包空间不足");
        }
Example #3
0
        /// <summary>
        ///服务器更新背包数据  Don't ClearBag
        /// </summary>
        /// <param name="info">Info.</param>
        public void SetItemInfo(GCPushPackInfo info)
        {
            //整理背包首先清空
            if (info.BackpackAdjust)
            {
                UserBagClear();
            }

            Log.Net("SetItemInfo " + info);
            foreach (PackInfo pkinfo in info.PackInfoList)
            {
                PutItemInBackpackIndex(pkinfo.PackEntry.Index, new BackpackData(pkinfo));
            }
            MyEventSystem.myEventSystem.PushEvent(MyEvent.EventType.UpdateItemCoffer);
        }
Example #4
0
        private static bool RemoveEquipFromPackage(long id)
        {
            var player = MyLib.ServerData.Instance.playerInfo;

            foreach (var pinfo in player.PackInfoList)
            {
                if (pinfo.PackEntry.Id == id)
                {
                    pinfo.PackEntry.Count = 0;
                    player.PackInfoList.Remove(pinfo);

                    var push = GCPushPackInfo.CreateBuilder();
                    push.BackpackAdjust = false;
                    push.PackType       = PackType.DEFAULT_PACK;
                    push.PackInfoList.Add(pinfo);
                    ServerBundle.SendImmediatePush(push);
                    return(true);
                }
            }
            SendNotify("未找到该道具");
            return(false);
        }
Example #5
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);
        }
Example #6
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);
        }