Example #1
0
        public static ResOpcode ProcessRebornYinJiLevelUp(GameClient client, int RoldID, int StampID, int StampType, int UpNum, out int IDZhu, out int OutMainYinJiID1, out int OutUsePoint)
        {
            IDZhu           = -1;
            OutMainYinJiID1 = 0;
            OutUsePoint     = 0;
            RebornStampData dbInfo;
            ResOpcode       result;

            if (!RebornStamp.GetRebornYinJiInfo(client, out dbInfo))
            {
                result = ResOpcode.ChooseGetInfoYinJiNotActive;
            }
            else
            {
                lock (dbInfo)
                {
                    int Index    = 0;
                    int MainAttr = 0;
                    if (!RebornStamp.CheckTypeMatch(dbInfo, StampID, StampType, out Index, out MainAttr))
                    {
                        return(ResOpcode.LevelUpYinJiCheckErr);
                    }
                    if (UpNum <= 0)
                    {
                        return(ResOpcode.LevelUpYinJiUpNumErr);
                    }
                    lock (client.ClientData.PropPointMutex)
                    {
                        long AllPoint   = (long)Global.GetRoleParamsInt32FromDB(client, "10246");
                        long IsUsePoint = AllPoint - (long)dbInfo.UsePoint;
                        if (IsUsePoint < (long)UpNum)
                        {
                            return(ResOpcode.LevelUpYinJiPointErr);
                        }
                    }
                    int IsLevelUpNum = RebornStamp.MinorLevelLimit[StampType] - dbInfo.StampInfo[Index + 1];
                    if (0 >= IsLevelUpNum)
                    {
                        return(ResOpcode.LevelUpYinJiMaxLv);
                    }
                    if (IsLevelUpNum < UpNum)
                    {
                        return(ResOpcode.LevelUpYinJiOverUpLvErr);
                    }
                    int CurrID = RebornStamp.GetCurrMinorLevelItemID(dbInfo, Index);
                    OutMainYinJiID1 = CurrID + UpNum;
                    ChongShengYinJiZi data;
                    if (!RebornStamp.MinorYinJi.TryGetValue(OutMainYinJiID1, out data))
                    {
                        return(ResOpcode.LevelUpYinJiMaxLv);
                    }
                    dbInfo.StampInfo[Index + 1] = data.Level;
                    if (RebornStamp.IsMainLevelUp(dbInfo, MainAttr, out IDZhu))
                    {
                        if (MainAttr == 1)
                        {
                            int MID     = RebornStamp.GetCurrMainLevelItemID(dbInfo, 0);
                            int LevelUp = MID + RebornStamp.GetMainYinJiLevelUpNum(dbInfo, 0);
                            dbInfo.StampInfo[1] = RebornStamp.MainYinJi[LevelUp].Level;
                            IDZhu = LevelUp;
                        }
                        if (MainAttr == 2)
                        {
                            int MID     = RebornStamp.GetCurrMainLevelItemID(dbInfo, 8);
                            int LevelUp = MID + RebornStamp.GetMainYinJiLevelUpNum(dbInfo, 8);
                            dbInfo.StampInfo[9] = RebornStamp.MainYinJi[LevelUp].Level;
                            IDZhu = LevelUp;
                        }
                    }
                    string UpdateInfo = RebornStamp.MakeYinJiUpdateInfo(dbInfo.StampInfo);
                    OutUsePoint = dbInfo.UsePoint + UpNum;
                    if (!RebornStamp.UpdateRebornYinJiInfo(client, UpdateInfo, OutUsePoint, dbInfo.ResetNum))
                    {
                        return(ResOpcode.LevelUpYinJiSaveErr);
                    }
                }
                client.ClientData.RebornYinJi = dbInfo;
                Global.RefreshEquipProp(client);
                GameManager.ClientMgr.NotifyUpdateEquipProps(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client);
                result = ResOpcode.Succ;
            }
            return(result);
        }
Example #2
0
 private static string MakeYinJiUpdateInfoByType(int StampType1, int StampType2)
 {
     return(RebornStamp.MakeYinJiUpdateInfo(RebornStamp.YinJiUpdateInfo(StampType1, StampType2)));
 }