private void OnReq_StrengthGem(MessageRecv obj) { System.IO.MemoryStream ms = new System.IO.MemoryStream(obj.Data); ReqStrengthGem req = Serializer.Deserialize <ReqStrengthGem>(ms); AckStrengthGem ack = new AckStrengthGem(); ack.TarGem = req.TarGem; ack.UseItems.AddRange(req.UseItems); NetworkManager.Instance.Send(MessageID.MSG_ACK_STRENGTHEN_GEM, ack, 0, 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); }