private void OnReq_UpgradePet(MessageRecv obj) { System.IO.MemoryStream ms = new System.IO.MemoryStream(obj.Data); ReqUpgradePet req = Serializer.Deserialize <ReqUpgradePet>(ms); AckUpgradePet ack = new AckUpgradePet(); ack.ID = req.ID; ack.UseItems.AddRange(req.UseItems); NetworkManager.Instance.Send(MessageID.MSG_ACK_UPGRADE_PET, ack, 0, 0); }
private void OnAck_UpgradePet(MessageRecv obj) { System.IO.MemoryStream ms = new System.IO.MemoryStream(obj.Data); AckUpgradePet ack = Serializer.Deserialize <AckUpgradePet>(ms); int id = ack.ID; List <XItem> items = ack.UseItems; DActor db = ReadCfgActor.GetDataById(id); XPet data = DataDBSPet.GetDataById(id); if (data == null) { data = GTDataFactory.CreatePet(id); } int exp = PetModule.Instance.GetExpByItemList(items); DPetLevel levelDB = ReadCfgPetLevel.GetDataById(db.Quality * 1000 + data.Level); int addExp = exp + data.CurExp; while (addExp > levelDB.Exp) { addExp -= levelDB.Exp; data.Level++; levelDB = ReadCfgPetLevel.GetDataById(db.Quality * 1000 + data.Level); } data.CurExp = addExp; DataDBSPet.Update(id, data); for (int i = 0; i < items.Count; i++) { GTDataManager.Instance.UseItemById(items[i].Id, 1); } CharacterManager.Instance.SyncMainPlayerData(ESyncDataType.TYPE_BASEATTR); GTEventCenter.FireEvent(GTEventID.TYPE_UPGRADE_PET); GTEventCenter.FireEvent(GTEventID.TYPE_CHANGE_FIGHTVALUE); }