コード例 #1
0
    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);
    }
コード例 #2
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);
    }