Beispiel #1
0
    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);
    }
Beispiel #2
0
        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();
        }
Beispiel #3
0
    public bool IsCanAsMatToAutoAdd(XItem item)
    {
        XEquip equip   = DataDBSEquip.GetDataById(item.Instance);
        DEquip equipDB = ReadCfgEquip.GetDataById(equip.Id);

        return(equipDB.Quality < 3);
    }
Beispiel #4
0
    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);
    }
Beispiel #5
0
    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);
    }
Beispiel #6
0
    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);
    }
Beispiel #7
0
    public string GetEquipSuitNameByID(int equipID)
    {
        DEquip     equipDB = ReadCfgEquip.GetDataById(equipID);
        DEquipSuit suitDB  = ReadCfgEquipSuit.GetDataById(equipDB.Suit);

        return(suitDB != null ? suitDB.Name : string.Empty);
    }
Beispiel #8
0
    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);
    }
Beispiel #9
0
    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);
    }
Beispiel #10
0
    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("未知");
        }
    }
Beispiel #11
0
    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);
    }
Beispiel #12
0
        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;
        }
Beispiel #13
0
    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);
    }
Beispiel #14
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);
    }
Beispiel #15
0
        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);
        }
Beispiel #16
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);
    }
Beispiel #17
0
    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);
    }
Beispiel #18
0
    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);
    }
Beispiel #19
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);
    }
Beispiel #20
0
    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);
    }
Beispiel #21
0
    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);
    }
Beispiel #22
0
    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>());
        }
    }
Beispiel #23
0
    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("传说");
        }
    }
Beispiel #24
0
    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);
    }
Beispiel #25
0
    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));
        }
    }
Beispiel #26
0
    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);
    }
Beispiel #27
0
    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;
            }
        }
    }
Beispiel #28
0
        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);
        }
Beispiel #29
0
        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);
        }
Beispiel #30
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);
            }
        }