// 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; }
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); }
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); }
/* * 从服务器初始化背包数据 */ 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); } } }
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)); } }
/// <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); }
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); } }
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(); }
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; }
/// <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()); } }
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); } }
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); } }
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); } }
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); }
static int GetRandomDefense(int equipId) { var itemData = Util.GetItemData((int)GoodsTypeEnum.Equip, equipId); return(itemData.RandomInitDefense()); }
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); } }
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()); } } }
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 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); } }
/// <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); }
//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); }