예제 #1
0
 void   ReadRoleData()
 {
     DataDBSBagItem.Read(GetDataPath(GTDataKey.Data_BagItems), EDataKeyType.Pos);
     DataDBSEquip.Read(GetDataPath(GTDataKey.Data_Equips), EDataKeyType.Instance);
     DataDBSDressEquip.Read(GetDataPath(GTDataKey.Data_DressEquips), EDataKeyType.Pos);
     DataDBSMoney.Read(GetDataPath(GTDataKey.Data_Moneys), EDataKeyType.Id);
     DataDBSAction.Read(GetDataPath(GTDataKey.Data_Actions), EDataKeyType.Id);
     DataDBSSoul.Read(GetDataPath(GTDataKey.Data_Souls), EDataKeyType.Id);
     DataDBSBagGem.Read(GetDataPath(GTDataKey.Data_BagGems), EDataKeyType.Pos);
     DataDBSGem.Read(GetDataPath(GTDataKey.Data_Gems), EDataKeyType.Instance);
     DataDBSDressGem.Read(GetDataPath(GTDataKey.Data_DressGems), EDataKeyType.Pos);
     DataDBSBagChip.Read(GetDataPath(GTDataKey.Data_BagChips), EDataKeyType.Pos);
     DataDBSBagFashion.Read(GetDataPath(GTDataKey.Data_BagFashions), EDataKeyType.Pos);
     DataDBSBagRune.Read(GetDataPath(GTDataKey.Data_BagRunes), EDataKeyType.Pos);
     DataDBSDressRune.Read(GetDataPath(GTDataKey.Data_DressRunes), EDataKeyType.Pos);
     DataDBSDressFashion.Read(GetDataPath(GTDataKey.Data_DressFashions), EDataKeyType.Pos);
     DataDBSRune.Read(GetDataPath(GTDataKey.Data_Runes), EDataKeyType.Instance);
     DataDBSCopy.Read(GetDataPath(GTDataKey.Data_Copys), EDataKeyType.Id);
     DataDBSMainChapter.Read(GetDataPath(GTDataKey.Data_MainChapters), EDataKeyType.Id);
     DataDBSRaid.Read(GetDataPath(GTDataKey.Data_Raid), EDataKeyType.Id);
     DataDBSPartner.Read(GetDataPath(GTDataKey.Data_Partners), EDataKeyType.Id);
     DataDBSMount.Read(GetDataPath(GTDataKey.Data_Mounts), EDataKeyType.Id);
     DataDBSRelics.Read(GetDataPath(GTDataKey.Data_Relics), EDataKeyType.Id);
     DataDBSPet.Read(GetDataPath(GTDataKey.Data_Pets), EDataKeyType.Id);
     DataDBSGuide.Read(GetDataPath(GTDataKey.Data_Guides), EDataKeyType.Id);
     DataDBSThreadTask.Read(GetDataPath(GTDataKey.Data_MainTasks), EDataKeyType.Id);
     DataDBSBranchTask.Read(GetDataPath(GTDataKey.Data_BranchTasks), EDataKeyType.Id);
     DataDBSDailyTask.Read(GetDataPath(GTDataKey.Data_DailyTasks), EDataKeyType.Id);
 }
예제 #2
0
    void   DumpRoleData()
    {
        DataDBSMoney.Clear();
        DataDBSAction.Clear();
        DataDBSSoul.Clear();

        DataDBSBagItem.Clear();
        DataDBSBagGem.Clear();
        DataDBSBagChip.Clear();
        DataDBSBagRune.Clear();
        DataDBSBagFashion.Clear();

        DataDBSDressEquip.Clear();
        DataDBSDressFashion.Clear();
        DataDBSDressGem.Clear();
        DataDBSDressRune.Clear();

        DataDBSEquip.Clear();
        DataDBSGem.Clear();
        DataDBSRune.Clear();
        DataDBSMainChapter.Clear();
        DataDBSCopy.Clear();
        DataDBSRaid.Clear();

        DataDBSRelics.Clear();
        DataDBSMount.Clear();
        DataDBSPartner.Clear();
        DataDBSPet.Clear();
        DataDBSGuide.Clear();

        DataDBSThreadTask.Clear();
        DataDBSBranchTask.Clear();
        DataDBSDailyTask.Clear();
    }
예제 #3
0
 static void CalcAllGemPropertys(Dictionary <EAttr, int> dict)
 {
     Dictionary <int, XItem> .Enumerator em = DataDBSDressGem.Dict.GetEnumerator();
     while (em.MoveNext())
     {
         int dressPos = em.Current.Key;
         int index    = MLGem.Instance.GetIndexByDressGemPos(dressPos);
         if (!DataDBSDressEquip.ContainsKey(index))
         {
             continue;
         }
         int instanceID = em.Current.Value.Instance;
         if (!DataDBSGem.ContainsKey(instanceID))
         {
             continue;
         }
         XGem gem = DataDBSGem.GetDataById(instanceID);
         Dictionary <EAttr, int> .Enumerator em2 = GetPropertys(gem).GetEnumerator();
         while (em2.MoveNext())
         {
             dict[em2.Current.Key] += em2.Current.Value;
         }
         em2.Dispose();
     }
     em.Dispose();
 }
예제 #4
0
    public bool IsCanBeUseAsStrengthenMatToAutoAdd(XItem item)
    {
        XGem gem   = DataDBSGem.GetDataById(item.Instance);
        DGem gemDB = ReadCfgGem.GetDataById(gem.Id);

        return(gemDB.Quality < 3);
    }
예제 #5
0
    public static Dictionary <EAttr, int> GetAllGemPropertysByIndex(int index)
    {
        if (!DataDBSDressEquip.ContainsKey(index))
        {
            return(New());
        }
        Dictionary <EAttr, int> attrValues = New();

        for (int i = 1; i <= 5; i++)
        {
            int   gemPos = MLGem.Instance.GetDressGemPosByIndexAndTargetPos(index, i);
            XItem item   = DataDBSDressGem.GetDataById(gemPos);
            if (item == null)
            {
                continue;
            }
            XGem gem = DataDBSGem.GetDataById(item.Instance);
            if (gem != null)
            {
                continue;
            }
            CalcGemStrenthLevel(attrValues, gem);
        }
        CalcMaxAttrValue(ref attrValues);
        return(attrValues);
    }
예제 #6
0
    public bool DelBagGem(int pos)
    {
        XItem item = DataDBSBagGem.GetDataById(pos);

        if (item == null)
        {
            return(false);
        }
        DataDBSBagGem.Delete(pos);
        DataDBSGem.Delete(item.Instance);
        return(true);
    }
예제 #7
0
    private void OnAck_StrengthGem(MessageRecv obj)
    {
        System.IO.MemoryStream ms  = new System.IO.MemoryStream(obj.Data);
        AckStrengthGem         ack = Serializer.Deserialize <AckStrengthGem>(ms);
        XGem         gem           = ack.TarGem;
        List <XItem> list          = ack.UseItems;

        DGem gemDB           = ReadCfgGem.GetDataById(gem.Id);
        int  addExpNum       = MLGem.Instance.GetExpByStrengthMatList(list);
        int  strengthenLevel = gem.StrengthenLevel;

        int       levelID = gemDB.Quality * 1000 + strengthenLevel + 1;
        DGemLevel db      = ReadCfgGemLevel.GetDataById(levelID);
        int       expNum  = db.RequireExp - gem.StrengthenExp;

        while (addExpNum >= expNum)
        {
            strengthenLevel++;
            levelID = gemDB.Quality * 1000 + strengthenLevel + 1;
            db      = ReadCfgGemLevel.GetDataById(levelID);
            expNum += db.RequireExp;
        }
        gem.StrengthenLevel = strengthenLevel;
        gem.StrengthenExp   = addExpNum + db.RequireExp - expNum;

        DataDBSGem.Update(gem.Instance, gem);
        GTDataManager.Instance.UseMoney(db.CostMoneyId, expNum);
        for (int i = 0; i < list.Count; i++)
        {
            XItem    item    = list[i];
            EPosType posType = (EPosType)item.PosType;
            switch (posType)
            {
            case EPosType.BagItem:
                GTDataManager.Instance.UseItemById(item.Id, item.Num);
                break;

            case EPosType.BagGem:
                GTDataManager.Instance.DelBagGem(item.Pos);
                break;
            }
        }

        GTWorld.Instance.SyncMainPlayerData(ESyncDataType.TYPE_BASEATTR);
        GTEventCenter.FireEvent(GTEventID.TYPE_BAG_STRENGTHEN_GEM);
        GTEventCenter.FireEvent(GTEventID.TYPE_CHANGE_FIGHTVALUE);
    }
예제 #8
0
    public void AddNewGem(int instance, int id)
    {
        int newPos = GetNewPos(EBagType.GEM);

        if (newPos == 0)
        {
            return;
        }
        XItem item = new XItem();

        item.Instance = instance;
        item.Pos      = newPos;
        item.Id       = id;
        item.Num      = 1;
        item.PosType  = (int)EPosType.BagGem;

        DataDBSBagGem.Insert(newPos, item);
        DataDBSGem.Insert(instance, GTDataFactory.CreateGem(id, instance));
    }
예제 #9
0
    public int CompareXGem(XItem x1, XItem x2)
    {
        XGem e1  = DataDBSGem.GetDataById(x1.Instance);
        XGem e2  = DataDBSGem.GetDataById(x2.Instance);
        DGem db1 = ReadCfgGem.GetDataById(e1.Id);
        DGem db2 = ReadCfgGem.GetDataById(e2.Id);

        if (db1.Quality != db2.Quality)
        {
            return(db1.Quality - db2.Quality);
        }
        if (e1.StrengthenLevel != e2.StrengthenLevel)
        {
            return(e1.StrengthenLevel - e2.StrengthenLevel);
        }
        if (e1.StrengthenExp != e2.StrengthenExp)
        {
            return(e1.StrengthenExp - e2.StrengthenExp);
        }
        return(x2.Pos - x1.Pos);
    }
예제 #10
0
    public int CompareBagGem(XItem x1, XItem x2)
    {
        DItem itemDB1 = ReadCfgItem.GetDataById(x1.Id);
        DItem itemDB2 = ReadCfgItem.GetDataById(x2.Id);

        if (itemDB1.Quality != itemDB2.Quality)
        {
            return(itemDB2.Quality - itemDB1.Quality);
        }
        if (itemDB1.Id != itemDB2.Id)
        {
            return(itemDB1.Id - itemDB2.Id);
        }
        XGem gem1 = DataDBSGem.GetDataById(x1.Instance);
        XGem gem2 = DataDBSGem.GetDataById(x2.Instance);

        if (gem1.StrengthenLevel != gem2.StrengthenLevel)
        {
            return(gem1.StrengthenLevel - gem2.StrengthenLevel);
        }
        return(x1.Instance - x2.Instance);
    }
예제 #11
0
    public int GetExpByStrengthMatList(List <XItem> list)
    {
        int value = 0;

        for (int i = 0; i < list.Count; i++)
        {
            XItem item = list[i];
            switch ((EPosType)item.PosType)
            {
            case EPosType.BagItem:
                DItem itemDB = ReadCfgItem.GetDataById(item.Id);
                value += itemDB.Data1 * item.Num;
                break;

            case EPosType.BagGem:
                XGem gem = DataDBSGem.GetDataById(item.Instance);
                value += GetExpByXGem(gem);
                break;
            }
        }
        return(value);
    }
예제 #12
0
    public int GetActiveSameSuitsCountByPos(int pos)
    {
        if (!DataDBSDressGem.ContainsKey(pos))
        {
            return(0);
        }
        XItem dressGem = DataDBSDressGem.GetDataById(pos);

        if (!DataDBSGem.ContainsKey(dressGem.Instance))
        {
            return(0);
        }
        XGem       gem       = DataDBSGem.GetDataById(dressGem.Instance);
        int        p         = (int)(pos / 5.1f);
        List <int> sameSuits = GetSameSuitIDListByID(gem.Id);
        int        count     = 0;

        for (int i = 0; i < sameSuits.Count; i++)
        {
            int suitPos = p * 5 + i + 1;
            if (!DataDBSDressGem.ContainsKey(suitPos))
            {
                continue;
            }
            XItem item = DataDBSDressGem.GetDataById(suitPos);
            if (!DataDBSGem.ContainsKey(item.Instance))
            {
                continue;
            }
            XGem g = DataDBSGem.GetDataById(item.Instance);
            if (sameSuits.Contains(g.Id))
            {
                count++;
            }
        }
        return(count);
    }