public int CompareBagEquip(XEquip xe1, XEquip xe2) { DEquip equipDB1 = ReadCfgEquip.GetDataById(xe1.Id); DEquip equipDB2 = ReadCfgEquip.GetDataById(xe2.Id); if (equipDB1.Pos != equipDB2.Pos) { return(equipDB2.Pos - equipDB1.Pos); } if (xe1.StrengthenLevel != xe2.StarLevel) { return(xe2.StrengthenLevel - xe1.StrengthenLevel); } if (xe1.AdvanceLevel != xe2.AdvanceLevel) { return(xe2.AdvanceLevel - xe2.AdvanceLevel); } if (xe1.StarLevel != xe2.StarLevel) { return(xe2.StarLevel - xe1.StarLevel); } if (equipDB1.Id != equipDB2.Id) { return(equipDB2.Id - equipDB1.Id); } return(xe1.Instance - xe2.Instance); }
private void Invincible(string[] args) { var player = this.CurrentSession.GetBindPlayer(); var camp = this.Server.GetController <CampController>(); foreach (var unit in player.Units) { var du = camp.DUnits[unit.Tid]; int maxLeve = camp.DUnitLevels.Count; unit.Level = maxLeve; unit.Grade = du.grade_max; //camp.OnUnitLevelUp(new UnitLevelUpEventArgs() { UnitInfo = camp.ToUnitInfo(unit), OldLevel = oldlevel }); //camp.OnUnitGradeUp(new UnitGradeUpEventArgs() { OldGrade = oldgrade, UnitInfo = camp.ToUnitInfo(unit) }); foreach (var equip in unit.Equips) { DEquip de = camp.DEquips[equip.Tid]; var equipMaxLevel = camp.DequipLevels.Count; equip.Level = equipMaxLevel; DEquipGrade deg = camp.DEquipGrades[de.gradeid]; while (true) { if (deg.next_id == 0) { equip.GradeId = deg.id; break; } } } } _db.SaveChanges(); }
public bool IsCanAsMatToAutoAdd(XItem item) { XEquip equip = DataDBSEquip.GetDataById(item.Instance); DEquip equipDB = ReadCfgEquip.GetDataById(equip.Id); return(equipDB.Quality < 3); }
public List <XItem> GetItemListToOneKeyStrengthen(XEquip equip) { List <XItem> list = new List <XItem>(); DEquip equipDB = ReadCfgEquip.GetDataById(equip.Id); DEquipStrengLevel levelDB = ReadCfgEquipStrengLevel.GetDataById(equipDB.Quality * 1000 + equip.StrengthenLevel + 1); int moneyNum = GTDataManager.Instance.GetItemCountById(DEquip.EQUIP_STRENGTHEN_MONEY_ID_2); if (moneyNum > 0) { int needNum = levelDB.RequireExp - equip.StrengthenExp; int addNum = moneyNum >= needNum ? needNum : moneyNum; XItem item = new XItem(); item.Id = DEquip.EQUIP_STRENGTHEN_MONEY_ID_2; item.PosType = (int)EPosType.RoleMoney; item.Num = addNum; list.Add(item); return(list); } List <XItem> allEquipMatList = GetAllEquipMatList(); for (int i = 0; i < list.Count; i++) { if (list.Count >= 6) { break; } if (IsCanAsMatToAutoAdd(allEquipMatList[i])) { XItem item = allEquipMatList[i]; list.Add(item); } } return(list); }
public int GetStrengthenExpByMatList(List <XItem> list) { if (list == null) { return(0); } int exp = 0; for (int i = 0; i < list.Count; i++) { if (list[i].PosType == (int)EPosType.RoleMoney) { exp += list[i].Num; } else { XItem mat = list[i]; DEquip equipDB = ReadCfgEquip.GetDataById(mat.Id); XEquip equip = DataDBSEquip.GetDataById(mat.Instance); exp += equipDB.DeComposeNum2; exp += equip.StrengthenExp; int lv = equip.StrengthenLevel; for (int j = lv; j > 0; j--) { DEquipStrengLevel db = ReadCfgEquipStrengLevel.GetDataById(equipDB.Quality * 1000 + j); exp += db.RequireExp; } } } return(exp); }
public int CompareStrengthMat(XItem x1, XItem x2) { XEquip e1 = DataDBSEquip.GetDataById(x1.Instance); XEquip e2 = DataDBSEquip.GetDataById(x2.Instance); DEquip db1 = ReadCfgEquip.GetDataById(e1.Id); DEquip db2 = ReadCfgEquip.GetDataById(e2.Id); if (db1.Quality != db2.Quality) { return(db1.Quality - db2.Quality); } if (e1.StarLevel != e2.StarLevel) { return(e1.StarLevel - e2.StarLevel); } if (e1.AdvanceLevel != e2.AdvanceLevel) { return(e1.AdvanceLevel - e2.AdvanceLevel); } if (e1.StrengthenExp != e2.StrengthenExp) { return(e1.StrengthenExp - e2.StrengthenExp); } return(x2.Pos - x1.Pos); }
public string GetEquipSuitNameByID(int equipID) { DEquip equipDB = ReadCfgEquip.GetDataById(equipID); DEquipSuit suitDB = ReadCfgEquipSuit.GetDataById(equipDB.Suit); return(suitDB != null ? suitDB.Name : string.Empty); }
private void OnAck_AdvanceEquip(MessageRecv obj) { System.IO.MemoryStream ms = new System.IO.MemoryStream(obj.Data); AckAdvanceEquip ack = Serializer.Deserialize <AckAdvanceEquip>(ms); XEquip equip = ack.TarEquip; List <XItem> list = ack.UseItems; DEquip equipDB = ReadCfgEquip.GetDataById(equip.Id); int advanceID = equipDB.Quality * 1000 + equip.AdvanceLevel + 1; DEquipAdvanceCost db = ReadCfgEquipAdvanceCost.GetDataById(advanceID); GTDataManager.Instance.UseMoney(db.CostMoneyId, db.CostMoneyNum); GTDataManager.Instance.UseItemById(db.CostItemId, db.CostItemNum); if (list != null) { for (int i = 0; i < list.Count; i++) { GTDataManager.Instance.DelBagEquip(list[i].Pos); } } equip.AdvanceLevel++; DataDBSEquip.Update(equip.Instance, equip); CharacterManager.Instance.SyncMainPlayerData(ESyncDataType.TYPE_BASEATTR); GTEventCenter.FireEvent(GTEventID.TYPE_ADVANCE_EQUIP); GTEventCenter.FireEvent(GTEventID.TYPE_CHANGE_FIGHTVALUE); }
public void TryUpStarEquip(XEquip equip) { if (EquipModule.Instance.IsFullStarLevel(equip)) { GTItemHelper.ShowTip("装备星级已满"); return; } DEquip equipDB = ReadCfgEquip.GetDataById(equip.Id); int starID = equipDB.Quality * 1000 + equip.StarLevel + 1; DEquipStar db = ReadCfgEquipStar.GetDataById(starID); if (!GTItemHelper.CheckItemEnongh(db.CostMoneyId, db.CostMoneyNum)) { return; } if (!GTItemHelper.CheckItemEnongh(db.CostItemId, db.CostItemNum)) { return; } ReqUpStarEquip req = new ReqUpStarEquip(); req.TarEquip = equip; NetworkManager.Instance.Send <ReqUpStarEquip>(MessageID.MSG_REQ_UPSTAR_EQUIP, req); }
public string GetEquipTypeNameByID(int equipID) { DEquip equipDB = ReadCfgEquip.GetDataById(equipID); switch (equipDB.Pos) { case 1: return("头部"); case 2: return("项链"); case 3: return("衣服"); case 4: return("鞋子"); case 5: return("手套"); case 6: return("戒指"); case 7: return("法宝"); case 8: return("武器"); default: return("未知"); } }
private void ShowAdvanceView() { XEquip equip = GTDataManager.Instance.GetEquipDataByPos(mPosType, mPos); if (equip == null) { return; } int itemID = equip.Id; if (EquipModule.Instance.IsFullStarLevel(equip)) { return; } GTItemHelper.ShowItemTexture(mEquipAdvance.nowEquipTexture, itemID); GTItemHelper.ShowItemQuality(mEquipAdvance.nowEquipQuality, itemID); GTItemHelper.ShowItemName(mEquipAdvance.nowEquipName, itemID); GTItemHelper.ShowItemTexture(mEquipAdvance.nexEquipTexture, itemID); GTItemHelper.ShowItemQuality(mEquipAdvance.nexEquipQuality, itemID); GTItemHelper.ShowItemName(mEquipAdvance.nexEquipName, itemID); Dictionary <EAttr, int> nowPropertys = AttrHelper.GetPropertys(equip); XEquip nexEquip = new XEquip(); GTTools.Copy(nexEquip, equip); nexEquip.AdvanceLevel++; Dictionary <EAttr, int> nexPropertys = AttrHelper.GetPropertys(nexEquip); GTItemHelper.ShowPropertyText(mEquipAdvance.nowEquipPropertys, nowPropertys, false); GTItemHelper.ShowPropertyText(mEquipAdvance.nexEquipPropertys, nexPropertys, false); mEquipAdvance.nowEquipFightValue.text = AttrHelper.GetFightValue(nowPropertys).ToString(); mEquipAdvance.nexEquipFightValue.text = AttrHelper.GetFightValue(nexPropertys).ToString(); DEquip equipDB = ReadCfgEquip.GetDataById(itemID); DEquipAdvanceCost db = ReadCfgEquipAdvanceCost.GetDataById(equipDB.Quality * 1000 + equip.AdvanceLevel + 1); int hasItemNum = GTDataManager.Instance.GetItemCountById(db.CostItemId); GTItemHelper.ShowItemTexture(mEquipAdvance.costItemTexture, db.CostItemId); GTItemHelper.ShowPriceText(mEquipAdvance.costItemNum, hasItemNum, db.CostItemNum); GTItemHelper.ShowItemQuality(mEquipAdvance.costItemQuality, itemID); if (db.CostEquipNum > 0) { mEquipAdvance.costEquipBtn.SetActive(true); GTItemHelper.ShowItemTexture(mEquipAdvance.costEquipTexture, itemID); GTItemHelper.ShowItemQuality(mEquipAdvance.costEquipQuality, itemID); int hasSameEquipNum = EquipModule.Instance.GetBagSameEquipList(equip).Count; GTItemHelper.ShowPriceText(mEquipAdvance.costEquipNum, hasSameEquipNum, db.CostEquipNum); } else { mEquipAdvance.costEquipBtn.SetActive(false); } GTItemHelper.ShowItemTexture(mEquipAdvance.costMoneyTexture, db.CostMoneyId); GTItemHelper.ShowItemNum(mEquipAdvance.costMoneyNum, db.CostMoneyNum); GTItemHelper.ShowEquipAdvanceText(mEquipAdvance.advanceText, itemID, equip.AdvanceLevel); }
public UnitInfo UnlockUnit(Player player, int uid) { var unit = player.Units.FirstOrDefault(u => u.Tid == uid); if (unit != null) { return(null); } DUnit du = DUnits[uid]; //if (true) //{ unit = new Unit() { Id = Guid.NewGuid().ToString("D"), Level = 1, Number = du.max_energy, Tid = uid, Equips = new List <Equip>() }; foreach (int deid in du.equip.Object) { DEquip de = DEquips[deid]; Equip eq = new Equip() { Id = Guid.NewGuid().ToString("D"), Level = 1, GradeId = de.gradeid, PlayerId = player.Id, Pos = de.pos, Tid = deid, UnitId = unit.Id }; unit.Equips.Add(eq); } player.Units.Add(unit); var unitInfo = this.ToUnitInfo(unit); OnUnitUnlock(unitInfo); UnlockUnitResponse response = new UnlockUnitResponse { success = true, unitId = uid, unitInfo = unitInfo }; Server.SendByUserNameAsync(player.Id, response); return(unitInfo); //} //return null; }
private void OnReq_DressEquip(MessageRecv obj) { System.IO.MemoryStream ms = new System.IO.MemoryStream(obj.Data); ReqDressEquip req = Serializer.Deserialize <ReqDressEquip>(ms); AckDressEquip ack = new AckDressEquip(); XItem bagEquip = DataDBSBagItem.GetDataById(req.SrcPos); DEquip equipDB = ReadCfgEquip.GetDataById(bagEquip.Id); ack.SrcPos = req.SrcPos; ack.TarPos = equipDB.Pos; NetworkManager.Instance.Send(MessageID.MSG_ACK_DRESS_EQUIP, ack, 0, 0); }
private void ShowStrengthenView() { XEquip equip = GTDataManager.Instance.GetEquipDataByPos(mPosType, mPos); if (equip == null) { return; } if (EquipModule.Instance.IsFullStrengthenLevel(equip) == true) { return; } int itemID = equip.Id; GTItemHelper.ShowItemTexture(mEquipStrengthen.equipTexture, itemID); GTItemHelper.ShowItemQuality(mEquipStrengthen.equipQuality, itemID); GTItemHelper.ShowItemName(mEquipStrengthen.equipName, itemID); int costEquipNum = mStrengthenCostItems.Count; for (int i = 0; i < mEquipStrengthen.mStrengthenItems.Count; i++) { ItemStrengthen cell = mEquipStrengthen.mStrengthenItems[i]; if (i < costEquipNum) { XItem mat = mStrengthenCostItems[i]; cell.Show(true); int id = mStrengthenCostItems[i].Id; GTItemHelper.ShowItemTexture(cell.itemTexture, id); GTItemHelper.ShowItemQuality(cell.itemQuality, id); GTItemHelper.ShowItemNum(cell.itemNum, mat.Num); } else { cell.Show(false); } } DEquip equipDB = ReadCfgEquip.GetDataById(itemID); DEquipStrengLevel levelDB = ReadCfgEquipStrengLevel.GetDataById(equipDB.Quality * 1000 + equip.StrengthenLevel + 1); int addExpNum = EquipModule.Instance.GetStrengthenExpByMatList(mStrengthenCostItems); GTItemHelper.ShowItemTexture(mEquipStrengthen.costMoneyTexture, DEquip.EQUIP_STRENGTHEN_MONEY_ID_1); mEquipStrengthen.costMoneyNum.text = addExpNum.ToString(); mEquipStrengthen.equipStrengthLevel.text = GTTools.Format("强化等级 {0}", equip.StrengthenLevel); GTItemHelper.ShowProgressText(mEquipStrengthen.equipStrengthExp, equip.StrengthenExp, levelDB.RequireExp); GTItemHelper.ShowProgressSlider(mEquipStrengthen.equipStrengthExpBar, equip.StrengthenExp, levelDB.RequireExp); Dictionary <EAttr, int> propertys = AttrHelper.GetPropertys(equip); GTItemHelper.ShowEquipStrengthText(mEquipStrengthen.strengthText, itemID, equip.StrengthenLevel); GTItemHelper.ShowPropertyText(mEquipStrengthen.propertyText, propertys, true); }
public int Call_EquipGradeUp(UpGradeEquipRequest request) { var player = this.CurrentSession.GetBindPlayer(); var unit = player.Units.First(u => u.Tid == request.unitId); DUnit du = DUnits[unit.Tid]; var equip = unit.Equips.First(e => e.Pos == request.position); DEquip de = DEquips[equip.Tid]; DEquipGrade deg = DEquipGrades[equip.GradeId]; if (deg.next_id == 0) { return((int)GameErrorCode.装备已经最高阶); } var pkgController = this.Server.GetController <PkgController>(); bool itemenough = pkgController.IsItemEnough(player, deg.grade_item_id.Object, deg.grade_item_cnt.Object); if (!itemenough) { return((int)GameErrorCode.道具不足); } string reason = $"兵种装备进阶{unit.Tid}:{equip.Tid}"; pkgController.SubItems(player, deg.grade_item_id.Object, deg.grade_item_cnt.Object, reason); DEquipGrade degNext = DEquipGrades[deg.next_id]; equip.GradeId = degNext.id; var unitInfo = this.ToUnitInfo(unit, du, true); _db.SaveChanges(); UpGradeEquipResponse response = new UpGradeEquipResponse(); response.success = true; response.position = equip.Pos; response.unitId = unit.Tid; response.unitInfo = unitInfo; response.equipInfo = new EquipInfo() { grade = equip.GradeId, equipId = equip.Tid, level = equip.Level }; OnEquipGradeUp(new EquipGradeUpEventArgs() { EquipInfo = response.equipInfo, OldGrade = deg.grade, UnitInfo = unitInfo }); CurrentSession.SendAsync(response); return(0); }
public static Dictionary <EAttr, int> GetEquipBasePropertys(int equipID) { DEquip equipDB = ReadCfgEquip.GetDataById(equipID); Dictionary <EAttr, int> attrValues = New(); Dictionary <EAttr, int> .Enumerator em = equipDB.Propertys.GetEnumerator(); while (em.MoveNext()) { attrValues[em.Current.Key] = em.Current.Value; } em.Dispose(); CalcMaxAttrValue(ref attrValues); return(attrValues); }
static void CalcEquipStarLevel(Dictionary <EAttr, int> dict, XEquip equip) { int lv = equip.StarLevel; DEquip equipDB = ReadCfgEquip.GetDataById(equip.Id); DEquipStar starDB = ReadCfgEquipStar.GetDataById(equipDB.Quality * 1000 + lv); float percent = 1; if (starDB != null) { percent = starDB.Percent / 100f + 1; } dict[EAttr.HP] = (int)(dict[EAttr.HP] * percent); dict[EAttr.AP] = (int)(dict[EAttr.AP] * percent); dict[EAttr.DF] = (int)(dict[EAttr.DF] * percent); }
private void OnReq_AdvanceEquip(MessageRecv obj) { System.IO.MemoryStream ms = new System.IO.MemoryStream(obj.Data); ReqAdvanceEquip req = Serializer.Deserialize <ReqAdvanceEquip>(ms); DEquip cfg = ReadCfgEquip.GetDataById(req.TarEquip.Id); int advanceID = cfg.Quality * 1000 + req.TarEquip.AdvanceLevel + 1; DEquipAdvanceCost db = ReadCfgEquipAdvanceCost.GetDataById(advanceID); AckAdvanceEquip ack = new AckAdvanceEquip(); ack.UseItems.AddRange(req.UseItems); ack.TarEquip = req.TarEquip; NetworkManager.Instance.Send(MessageID.MSG_ACK_ADVANCE_EQUIP, ack, 0, 0); }
private void OnAck_StrengthEquip(MessageRecv obj) { System.IO.MemoryStream ms = new System.IO.MemoryStream(obj.Data); AckStrengthEquip ack = Serializer.Deserialize <AckStrengthEquip>(ms); XEquip equip = ack.TarEquip; List <XItem> list = ack.UseItems; DEquip cfg = ReadCfgEquip.GetDataById(equip.Id); int strengthenLevel = equip.StrengthenLevel; int strID = cfg.Quality * 1000 + strengthenLevel + 1; int addExpNum = EquipModule.Instance.GetStrengthenExpByMatList(list); DEquipStrengLevel db = ReadCfgEquipStrengLevel.GetDataById(strID); int expNum = db.RequireExp - equip.StrengthenExp; while (addExpNum >= expNum) { strengthenLevel++; db = ReadCfgEquipStrengLevel.GetDataById(cfg.Quality * 1000 + strengthenLevel + 1); expNum += db.RequireExp; } equip.StrengthenLevel = strengthenLevel; equip.StrengthenExp = addExpNum + db.RequireExp - expNum; DataDBSEquip.Update(equip.Instance, equip); GTDataManager.Instance.UseMoney(DEquip.EQUIP_STRENGTHEN_MONEY_ID_1, expNum); for (int i = 0; i < list.Count; i++) { XItem item = list[i]; if ((EPosType)item.PosType == EPosType.RoleMoney) { GTDataManager.Instance.UseMoney(item.Id, item.Num); } else { GTDataManager.Instance.DelBagEquip(item.Pos); } } CharacterManager.Instance.SyncMainPlayerData(ESyncDataType.TYPE_BASEATTR); GTEventCenter.FireEvent(GTEventID.TYPE_STRENGTHEN_EQUIP); GTEventCenter.FireEvent(GTEventID.TYPE_CHANGE_FIGHTVALUE); }
public void TryAdvanceEquip(XEquip equip) { if (EquipModule.Instance.IsFullAdvanceLevel(equip)) { GTItemHelper.ShowTip("进阶等级已满"); return; } DEquip cfg = ReadCfgEquip.GetDataById(equip.Id); int advanceID = cfg.Quality * 1000 + equip.AdvanceLevel + 1; DEquipAdvanceCost db = ReadCfgEquipAdvanceCost.GetDataById(advanceID); if (!GTItemHelper.CheckItemEnongh(db.CostMoneyId, db.CostMoneyNum)) { return; } if (!GTItemHelper.CheckItemEnongh(db.CostItemId, db.CostItemNum)) { return; } List <XItem> list; if (db.CostEquipNum > 0) { list = EquipModule.Instance.GetBagSameEquipList(equip); if (list.Count < db.CostEquipNum) { GTItemHelper.ShowTip("缺少同样的装备"); return; } list.RemoveRange(db.CostEquipNum, list.Count - db.CostEquipNum); } else { list = new List <XItem>(); } ReqAdvanceEquip req = new ReqAdvanceEquip(); req.TarEquip = equip; req.UseItems.AddRange(list); NetworkManager.Instance.Send <ReqAdvanceEquip>(MessageID.MSG_REQ_ADVANCE_EQUIP, req); }
private void OnAck_DressEquip(MessageRecv obj) { System.IO.MemoryStream ms = new System.IO.MemoryStream(obj.Data); AckDressEquip ack = Serializer.Deserialize <AckDressEquip>(ms); int srcPos = ack.SrcPos; int tarPos = ack.TarPos; XItem bagEquip = DataDBSBagItem.GetDataById(srcPos); DEquip equipDB = ReadCfgEquip.GetDataById(bagEquip.Id); XItem dressEquip = DataDBSDressEquip.GetDataById(equipDB.Pos); if (dressEquip != null) { int bagInstance = bagEquip.Instance; int bagId = bagEquip.Id; bagEquip.Id = dressEquip.Id; bagEquip.Instance = dressEquip.Instance; bagEquip.PosType = (int)EPosType.BagItem; dressEquip.Instance = bagInstance; dressEquip.PosType = (int)EPosType.RoleEquip; dressEquip.Id = bagId; DataDBSDressEquip.Update(equipDB.Pos, dressEquip); DataDBSBagItem.Update(srcPos, bagEquip); } else { dressEquip = new XItem(); dressEquip.Instance = bagEquip.Instance; dressEquip.Pos = equipDB.Pos; dressEquip.PosType = (int)EPosType.RoleEquip; dressEquip.Id = bagEquip.Id; dressEquip.Num = 1; DataDBSDressEquip.Insert(equipDB.Pos, dressEquip); DataDBSBagItem.Delete(srcPos); } GTWorld.Instance.SyncMainPlayerData(ESyncDataType.TYPE_EQUIP); GTEventCenter.FireEvent(GTEventID.TYPE_BAG_DRESS_EQUIP, srcPos, tarPos); GTEventCenter.FireEvent(GTEventID.TYPE_CHANGE_FIGHTVALUE); }
public List <int> GetSameSuitEquipIDArrayByID(int equipID) { DEquip equipDB = ReadCfgEquip.GetDataById(equipID); if (equipDB.Suit == 0) { return(new List <int>()); } if (mEquipSuits.ContainsKey(equipDB.Suit)) { return(mEquipSuits[equipDB.Suit]); } Dictionary <int, DEquip> .Enumerator em = ReadCfgEquip.Dict.GetEnumerator(); while (em.MoveNext()) { List <int> list; int suit = em.Current.Value.Suit; if (mEquipSuits.ContainsKey(suit)) { list = mEquipSuits[suit]; } else { list = new List <int>(); mEquipSuits.Add(suit, list); } if (!list.Contains(em.Current.Key)) { list.Add(em.Current.Key); } } if (mEquipSuits.ContainsKey(equipDB.Suit)) { return(mEquipSuits[equipDB.Suit]); } else { return(new List <int>()); } }
public string GetEquipStepByID(int equipID) { DEquip equipDB = ReadCfgEquip.GetDataById(equipID); switch (equipDB.Quality) { case 1: return("普通"); case 2: return("优良"); case 3: return("精良"); case 4: return("史诗"); default: return("传说"); } }
private void OnAck_UpStarEquip(MessageRecv obj) { System.IO.MemoryStream ms = new System.IO.MemoryStream(obj.Data); AckUpStarEquip ack = Serializer.Deserialize <AckUpStarEquip>(ms); XEquip equip = ack.TarEquip; DEquip cfg = ReadCfgEquip.GetDataById(equip.Id); int starID = cfg.Quality * 1000 + equip.StarLevel + 1; DEquipStar db = ReadCfgEquipStar.GetDataById(starID); GTDataManager.Instance.UseMoney(db.CostMoneyId, db.CostMoneyNum); GTDataManager.Instance.UseItemById(db.CostItemId, db.CostItemNum); equip.StarLevel++; DataDBSEquip.Update(equip.Instance, equip); CharacterManager.Instance.SyncMainPlayerData(ESyncDataType.TYPE_BASEATTR); GTEventCenter.FireEvent(GTEventID.TYPE_UPSTAR_EQUIP); GTEventCenter.FireEvent(GTEventID.TYPE_CHANGE_FIGHTVALUE); }
public static void ShowEquipStarText(UILabel label, int equipID, int starLevel, bool showAll = true) { if (label == null) { return; } label.text = string.Empty; DEquip equipDB = ReadCfgEquip.GetDataById(equipID); if (showAll) { for (int i = 0; i < 5; i++) { int lv = i + 1; DEquipStar starDB = ReadCfgEquipStar.GetDataById(equipDB.Quality * 1000 + lv); float percent = starDB == null ? 0 : starDB.Percent; string desc = GTTools.Format("生命、攻击和防御+{0}%", percent); string v = string.Empty; if (starLevel >= lv) { v = GTTools.Format("[00ff00]{0}[-]", desc); } else { v = GTTools.Format("[777777]{0} (升星至{1}级生效)[-]", desc, lv); } label.Append(v); } } else { DEquipStar starDB = ReadCfgEquipStar.GetDataById(equipDB.Quality * 1000 + starLevel); string format = "{0}提高 [00ff00]{1}[-] %"; float percent = starDB == null ? 0 : starDB.Percent; label.Append(GTTools.Format(format, "生命", percent)); label.Append(GTTools.Format(format, "攻击", percent)); label.Append(GTTools.Format(format, "防御", percent)); } }
private void ShowEquipStarView() { XEquip equip = GTDataManager.Instance.GetEquipDataByPos(mPosType, mPos); if (equip == null) { return; } int itemID = equip.Id; if (EquipModule.Instance.IsFullAdvanceLevel(equip) == true) { return; } GTItemHelper.ShowItemTexture(mEquipStar.nowEquipTexture, itemID); GTItemHelper.ShowItemQuality(mEquipStar.nowEquipQuality, itemID); GTItemHelper.ShowItemName(mEquipStar.nowEquipName, itemID); GTItemHelper.ShowItemTexture(mEquipStar.nexEquipTexture, itemID); GTItemHelper.ShowItemQuality(mEquipStar.nexEquipQuality, itemID); GTItemHelper.ShowItemName(mEquipStar.nexEquipName, itemID); GTItemHelper.ShowStarNum(mEquipStar.nowEquipStars, equip.StarLevel); GTItemHelper.ShowStarNum(mEquipStar.nexEquipStars, equip.StarLevel + 1); DEquip equipDB = ReadCfgEquip.GetDataById(equip.Id); DEquipStar nexStarDB = ReadCfgEquipStar.GetDataById(equipDB.Quality * 1000 + equip.StarLevel + 1); int hasItemNum = GTDataManager.Instance.GetItemCountById(nexStarDB.CostItemId); GTItemHelper.ShowItemTexture(mEquipStar.costItemTexture, nexStarDB.CostItemId); GTItemHelper.ShowItemQuality(mEquipStar.costItemQuality, nexStarDB.CostItemId); GTItemHelper.ShowPriceText(mEquipStar.costItemNum, hasItemNum, nexStarDB.CostItemNum); GTItemHelper.ShowItemTexture(mEquipStar.costMoneyTexture, nexStarDB.CostMoneyId); mEquipStar.costMoneyNum.text = nexStarDB.CostMoneyNum.ToString(); GTItemHelper.ShowEquipStarText(mEquipStar.starText, itemID, equip.StarLevel); GTItemHelper.ShowEquipStarText(mEquipStar.nowEquipPropertys, itemID, equip.StarLevel, false); GTItemHelper.ShowEquipStarText(mEquipStar.nexEquipPropertys, itemID, equip.StarLevel + 1, false); }
static void CalCfgStrengthValuethLevel(Dictionary <EAttr, int> dict, XEquip equip) { int lv = equip.StrengthenLevel; DEquip equipDB = ReadCfgEquip.GetDataById(equip.Id); dict[EAttr.HP] += lv * equipDB.StrengthGrow1; dict[EAttr.AP] += lv * equipDB.StrengthGrow2; dict[EAttr.DF] += lv * equipDB.StrengthGrow3; DEquipStreng strengthDB = ReadCfgEquipStreng.GetDataById(equip.Id); for (int i = 0; i < strengthDB.Propertys.Count; i++) { DStrengthValue es = strengthDB.Propertys[i]; if (lv >= es.UnlockLevel) { dict[es.Property] += es.Value; } else { break; } } }
public UnitInfo ToUnitInfo(Unit u, DUnit du = null, bool calcPower = false) { UnitInfo info = new UnitInfo(); if (du == null) { du = DUnits[u.Tid]; } info.id = u.Id; info.number = u.Number; info.tid = u.Tid; info.exp = u.Exp; info.level = u.Level; info.claz = u.Grade; info.pid = u.PlayerId; if (u.IsResting && u.RestEndTime <= DateTime.Now) { u.IsResting = false; u.Number = du.max_energy; //推送 TimesUpNotify notify = new TimesUpNotify(); notify.id = u.Tid; notify.lv = u.Number; notify.unitid = u.Id; notify.success = true; notify.type = GameConfig.TYPE_UNITREST; this.Server.SendByUserNameAsync(u.PlayerId, notify); } info.prepareEndTime = u.RestEndTime.ToUnixTime(); info.preparing = u.IsResting; info.equips = new List <EquipInfo>(); info.prepareEndTime = u.RestEndTime.ToUnixTime(); if (du != null) { info.name = du.name; info.type = du.type; info.nation = du.nation; info.desc = du.desc; info.star = du.star; info.crit = du.crit; info.crit_hurt = du.crit_hurt; info.hurt_add = du.hurt_add; info.hurt_sub = du.hurt_sub; info.crit_v = du.crit_v; info.hurt_add_v = du.hurt_add_v; info.hurt_sub_v = du.hurt_sub_v; info.armor = du.armor; info.hurt_multiple = du.hurt_multiple; info.cd = du.cd; info.distance = du.distance; info.r = du.r; info.off = du.off; info.rev = du.rev; info.rev_body = du.rev_body; info.speed = du.speed; info.mob = du.mob; info.hp_add = du.hp_add; info.att_add = du.att_add; info.def_add = du.def_add; info.type_detail = du.type_detail; info.levelLimit = 0; info.gain = null; info.count = du.count; info.last_time = du.last_time; info.bullet_count = du.bullet_count; info.rank = 0; info.exist = du.exist; info.energy = du.energy; for (int i = 0; i < du.res_type.Object.Length; i++) { switch (du.res_type.Object[i]) { case CurrencyType.GOLD: info.gold = du.res_cnt.Object[i]; break; case CurrencyType.SUPPLY: info.supply = du.res_cnt.Object[i]; break; case CurrencyType.IRON: info.iron = du.res_cnt.Object[i]; break; } } info.pvp_point = du.pvp_point; info.pvp_dec_score = du.pvp_dec_score; info.max_energy = du.max_energy; info.unitSkills = du.skills.Object; //info.hp_ex = du.hp_add; //info.att_ex = ; //info.def_ex = ; //todo: 计算兵种属性和战力 info.hp = du.prop_val.Object[2]; info.att = du.prop_val.Object[0]; info.defence = du.prop_val.Object[1]; info.hp_growth = du.prop_grow_val.Object[2]; info.att_growth = du.prop_grow_val.Object[0]; info.defence_growth = du.prop_grow_val.Object[1]; //等级加成 info.hp = (int)(info.hp + info.hp_growth * u.Level); info.defence = (int)(info.defence + info.defence_growth * u.Level); info.att = (int)(info.att + info.att_growth * u.Level); //进阶加成 if (u.Grade > 0) { DUnitGradeUp dug = DUnitGrades[du.star][u.Grade]; info.att += (int)((du.prop_val.Object[0] + (100 - 1) * du.prop_grow_val.Object[0]) * dug.atk / 10000d); info.defence += (int)((du.prop_val.Object[1] + (100 - 1) * du.prop_grow_val.Object[1]) * dug.defence / 10000d); info.hp += (int)((du.prop_val.Object[2] + (100 - 1) * du.prop_grow_val.Object[2]) * dug.hp / 10000d); } //装备加成 foreach (var eq in u.Equips) { DEquip de = DEquips[eq.Tid]; DEquipGrade deg = DEquipGrades[eq.GradeId]; var ei = new EquipInfo(); ei.grade = eq.GradeId; ei.equipId = eq.Tid; ei.level = eq.Level; info.equips.Add(ei); int v = de.base_attr_value + de.level_grow * (eq.Level - 1); //升阶增加的属性 =(基础属性 +(100 - 1)*成长属性)*(升阶增加属性万分比) v += (int)((de.base_attr_value + (100 - 1) * de.level_grow) * deg.grade_grow / 10000d); switch (de.base_attr_type) { case 1: { info.att += v; } break; case 2: { info.defence += v; } break; case 3: { info.hp += v; } break; } } //战力计算 if (calcPower) { info.power = CalcPower(info); u.Power = info.power; } else { info.power = u.Power; } } return(info); }
public int Call_EquipLevelUp(LevelupEquipRequest request) { var player = this.CurrentSession.GetBindPlayer(); var unit = player.Units.First(u => u.Tid == request.unitId); DUnit du = DUnits[unit.Tid]; var equip = unit.Equips.First(e => e.Pos == request.position); var playerController = this.Server.GetController <PlayerController>(); string reason = $"兵种装备升级{unit.Tid}:{equip.Tid}"; int oldlevel = equip.Level; DEquip de = DEquips[equip.Tid]; DEquipGrade deg = DEquipGrades[equip.GradeId]; while (true) { if (equip.Level >= player.Level) { break; } if (equip.Level >= deg.max_level) { break; } //扣资源升级 DEquipLevelCost dl; if (!DequipLevels.TryGetValue(equip.Level, out dl)) { break; } int rescont = (int)((du.type == 1 ? dl.soldier_gold : dl.tank_gold) * de.level_k / 10000d); if (!playerController.IsCurrencyEnough(player, CurrencyType.GOLD, rescont)) { break; } playerController.AddCurrency(player, CurrencyType.GOLD, rescont, reason); equip.Level += 1; if (!request.multy) { break; } } var equipInfo = new EquipInfo() { grade = equip.GradeId, equipId = equip.Tid, level = equip.Level }; UnitInfo unitInfo; if (oldlevel != equip.Level) { unitInfo = this.ToUnitInfo(unit, du, true); OnEquipLevelUp(new EquipLevelUpEventArgs() { EquipInfo = equipInfo, UnitInfo = unitInfo, OldLevel = oldlevel }); _db.SaveChanges(); } else { unitInfo = this.ToUnitInfo(unit, du); } LevelupEquipResponse response = new LevelupEquipResponse(); response.success = true; response.equipInfo = equipInfo; response.unitInfo = unitInfo; response.position = equip.Pos; response.unitId = unit.Tid; CurrentSession.SendAsync(response); return(0); }
private void PlayerController_PlayerCreating(object sender, Player e) { int[] uus = new int[] { 21140101 }; for (int i = 0; i < uus.Length; i++) { int uid = uus[i]; Unit unit = new Unit() { Id = Guid.NewGuid().ToString("D"), PlayerId = e.Id, Tid = uid, Number = 81, Level = 1, Equips = new List <Equip>() }; DUnit du = DUnits[uid]; foreach (int deid in du.equip.Object) { DEquip de = DEquips[deid]; Equip eq = new Equip() { Id = Guid.NewGuid().ToString("D"), Level = 1, GradeId = de.gradeid, PlayerId = e.Id, Pos = de.pos, Tid = deid, UnitId = unit.Id }; unit.Equips.Add(eq); } var unitInfo = this.ToUnitInfo(unit, du, true); e.Units.Add(unit); } for (int i = 0; i < 2; i++) { List <string> us = new List <string>(); if (i == 0) { int j = 0; foreach (var unit in e.Units) { us.Add(unit.Id); j++; } for (; j < 5; j++) { us.Add(string.Empty); } } else { for (int j = 0; j < 5; j++) { us.Add(string.Empty); } } Team t = new Team() { Index = i, IsSelected = i == 0, PlayerId = e.Id, Units = us }; e.Teams.Add(t); } for (int i = 0; i < 3; i++) { List <string> us = new List <string>(); for (int j = 0; j < 10; j++) { us.Add(string.Empty); } PVPFormation t = new PVPFormation() { Index = i, IsSelected = i == 0, PlayerId = e.Id, Units = us }; e.Formations.Add(t); } }