예제 #1
0
 public static CardAwards getAward(int mission, int cartao)
 {
     for (int i = 0; i < awards.Count; i++)
     {
         CardAwards card = awards[i];
         if (card._id == mission && card._card == cartao)
         {
             return(card);
         }
     }
     return(null);
 }
예제 #2
0
 private static void GetCardMedalInfo(CardAwards card, int medalId)
 {
     if (medalId == 0)
     {
         return;
     }
     if (medalId >= 1 && medalId <= 50) //v >= 1 && v <= 50
     {
         card._brooch++;
     }
     else if (medalId >= 51 && medalId <= 100) //v >= 51 && v <= 100
     {
         card._insignia++;
     }
     else if (medalId >= 101 && medalId <= 116) //v >= 101 && v <= 116
     {
         card._medal++;
     }
     //v >= 117 && v <= 239
 }
예제 #3
0
        private static void parse(string path, string missionName, int typeLoad)
        {
            int missionId = ConvertStringToInt(missionName);

            if (missionId == 0)
            {
                SaveLog.warning("[INVALID]: " + missionName);
            }
            byte[] buffer;
            try
            {
                buffer = File.ReadAllBytes(path);
            }
            catch
            {
                buffer = new byte[0];
            }
            if (buffer.Length == 0)
            {
                return;
            }
            try
            {
                ReceiveGPacket r = new ReceiveGPacket(buffer);
                r.readS(4);
                int questType = r.readD();
                r.readB(16);
                int valor1 = 0, valor2 = 0;
                for (int i = 0; i < 40; i++)
                {
                    int missionBId = valor2++,
                        cardBId    = valor1;
                    if (valor2 == 4)
                    {
                        valor2 = 0;
                        valor1++;
                    }
                    int       reqType     = r.readUH();
                    int       type        = r.readC();
                    int       mapId       = r.readC();
                    byte      limitCount  = r.readC();
                    ClassType weaponClass = (ClassType)r.readC();
                    int       weaponId    = r.readUH();
                    Card      nc          = new Card(cardBId, missionBId)
                    {
                        _mapId        = mapId,
                        _weaponReq    = weaponClass,
                        _weaponReqId  = weaponId,
                        _missionType  = (MISSION_TYPE)type,
                        _missionLimit = limitCount,
                        _missionId    = missionId
                    };
                    list.Add(nc);
                    if (questType == 1)
                    {
                        r.readB(24);
                    }
                }
                int vai = (questType == 2 ? 5 : 1);
                for (int i = 0; i < 10; i++)
                {
                    int gp     = r.readD();
                    int xp     = r.readD();
                    int medals = r.readD();
                    for (int i2 = 0; i2 < vai; i2++)
                    {
                        int unk       = r.readD();
                        int type      = r.readD();
                        int itemId    = r.readD();
                        int itemCount = r.readD();
                    }
                    if (typeLoad == 1)
                    {
                        CardAwards card = new CardAwards {
                            _id = missionId, _card = i, _exp = (questType == 1 ? (xp * 10) : xp), _gp = gp
                        };
                        GetCardMedalInfo(card, medals);
                        if (!card.Unusable())
                        {
                            awards.Add(card);
                        }
                    }
                }
                if (questType == 2)
                {
                    int goldResult = r.readD();
                    r.readB(8);
                    for (int i = 0; i < 5; i++)
                    {
                        int unkI      = r.readD();
                        int typeI     = r.readD(); //1 - unidade | 2 - dias
                        int itemId    = r.readD();
                        int itemCount = r.readD();
                        if (unkI > 0 && typeLoad == 1)
                        {
                            _items.Add(new MissionItemAward {
                                _missionId = missionId, item = new ItemsModel(itemId)
                                {
                                    _equip = 1, _count = (uint)itemCount, _name = "Mission item"
                                }
                            });
                        }
                    }
                }
            }
            catch (XmlException ex)
            {
                SaveLog.fatal(ex.ToString());
                Printf.b_danger("[MissionCardXML.parse] Erro fatal!");
            }
        }