public static bool ReduceItem(long userPropsId, int num) { var player = ChuMeng.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); }
public static void SendNotify(string str) { var no = GCPushNotify.CreateBuilder(); no.Notify = str; ServerBundle.SendImmediatePush(no); }
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("背包空间不足"); }
public static void AddExp(int add) { var pinfo = ServerData.Instance.playerInfo; pinfo.Exp += add; var push = GCPushExpChange.CreateBuilder(); push.Exp = pinfo.Exp; ServerBundle.SendImmediatePush(push); }
public static void AddLevel(int add) { Log.Net("AddLevel " + add); var pinfo = ServerData.Instance.playerInfo; pinfo.Roles.Level += add; AddSkillPoint(1); var push = GCPushLevel.CreateBuilder(); push.Level = pinfo.Roles.Level; ServerBundle.SendImmediatePush(push); }
/// <summary> /// First Chapter Lev /// </summary> /// <param name="openLev">Open lev.</param> public static void PassLev(int chapter, int openLev) { var pinfo = ServerData.Instance.playerInfo; if (!pinfo.HasCopyInfos) { var au = GCCopyInfo.CreateBuilder(); var cin = CopyInfo.CreateBuilder(); cin.Id = 101; cin.IsPass = false; au.AddCopyInfo(cin); var msg = au.Build(); pinfo.CopyInfos = msg; } int levId = chapter * 100 + openLev; //int levId = -1; //int count = -1; bool find = false; foreach (var c in pinfo.CopyInfos.CopyInfoList) { if (c.Id == levId) { c.IsPass = true; find = true; break; } } if (!find) { var cinfo = CopyInfo.CreateBuilder(); cinfo.Id = levId; cinfo.IsPass = true; pinfo.CopyInfos.CopyInfoList.Add(cinfo.Build()); } foreach (var c in pinfo.CopyInfos.CopyInfoList) { if (c.Id < levId) { c.IsPass = true; } } var open = GCPushLevelOpen.CreateBuilder(); open.Chapter = chapter; open.Level = openLev; ServerBundle.SendImmediatePush(open); Log.Net("PassLevelData " + pinfo.Build().ToString()); }
public static void SetJingShi(int num) { ServerData.Instance.playerInfo.JingShi = num; //Notify var gc = GoodsCountChange.CreateBuilder(); gc.Type = 0; gc.BaseId = (int)ItemData.ItemID.JING_SHI; gc.Num = Mathf.Max(0, num); var n = GCPushGoodsCountChange.CreateBuilder(); n.AddGoodsCountChange(gc); ServerBundle.SendImmediatePush(n); }
private static bool RemoveEquipFromPackage(long id) { var player = ChuMeng.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); }
/// <summary> /// 默认前4种技能占用 1 2 3 4 的槽 /// 当有技能设置了槽 则使用该技能占用 特定槽 /// </summary> static void PushSkillShortcutsInfo() { var au = GCPushShortcutsInfo.CreateBuilder(); var pinfo = ServerData.Instance.playerInfo; if (pinfo.HasSkill) { var defaultSlot = GetShortCutsInfo(); var ind = 0; foreach (var sk in defaultSlot) { if (sk != 0) { var sh = ShortCutInfo.CreateBuilder(); sh.Index = ind; sh.BaseId = sk; au.AddShortCutInfo(sh); } ind++; } } ServerBundle.SendImmediatePush(au); }
public static void AddSkillPoint(int sp) { var pinfo = ServerData.Instance.playerInfo; if (!pinfo.HasSkill) { pinfo.Skill = GCLoadSkillPanel.CreateBuilder().Build(); } pinfo.Skill.TotalPoint += sp; var psp = GCPushSkillPoint.CreateBuilder(); psp.SkillPoint = pinfo.Skill.TotalPoint; ServerBundle.SendImmediatePush(psp); if (sp > 0) { SendNotify("升级技能点+" + sp); } else { SendNotify("技能点" + sp); } }
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); } } }
public static void LevelUpSkill(int skId) { var pinfo = ServerData.Instance.playerInfo; int totalSP = 0; int skillLevel = 0; if (pinfo.HasSkill) { totalSP = pinfo.Skill.TotalPoint; foreach (var s in pinfo.Skill.SkillInfosList) { if (s.SkillInfoId == skId) { skillLevel = s.Level; break; } } } var skData = Util.GetSkillData(skId, skillLevel); var maxLev = skData.MaxLevel; var playerLev = pinfo.Roles.Level; var next = Util.GetSkillData(skId, skillLevel + 1); var needLev = next.LevelRequired; if (totalSP > 0 && skillLevel < maxLev && playerLev >= needLev) { //pinfo.Skill.TotalPoint--; AddSkillPoint(-1); bool find = false; foreach (var sk in pinfo.Skill.SkillInfosList) { if (sk.SkillInfoId == skId) { sk.Level++; find = true; break; } } if (!find) { var newinfo = SkillInfo.CreateBuilder(); newinfo.SkillInfoId = skId; newinfo.Level = 1; pinfo.Skill.SkillInfosList.Add(newinfo.Build()); } //pinfo.Skill = newSk.Build(); var activeSkill = GCPushActivateSkill.CreateBuilder(); activeSkill.SkillId = skId; activeSkill.Level = skillLevel + 1; ServerBundle.SendImmediatePush(activeSkill); } else if (totalSP <= 0) { SendNotify("剩余技能点不足"); } else if (playerLev < needLev) { SendNotify("等级不足"); } else { SendNotify("技能已经升到满级"); } PushSkillShortcutsInfo(); }
//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) { 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); }