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); }
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("背包空间不足"); }
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); }
//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); }
/// <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); }