예제 #1
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            if (client.Player.PlayerCharacter.Grade < 30)
            {
                client.Out.SendMessage(eMessageType.Normal, "Hack level sao bạn!");
                return(0);
            }
            packet.ReadByte();
            int num = packet.ReadInt();

            packet.ReadInt();
            packet.ReadInt();
            int templateId  = packet.ReadInt();
            int figSpiritId = packet.ReadInt();
            int place       = packet.ReadInt();

            packet.ReadInt();
            packet.ReadInt();
            ItemInfo     itemByTemplateID = client.Player.PropBag.GetItemByTemplateID(0, templateId);
            int          itemCount        = client.Player.PropBag.GetItemCount(templateId);
            UserGemStone gemStone         = client.Player.GetGemStone(place);

            string[] array = gemStone.FigSpiritIdValue.Split(new char[]
            {
                '|'
            });
            int  iD     = client.Player.PlayerCharacter.ID;
            bool flag   = false;
            bool max    = this.getMax(array);
            bool isFall = true;
            int  num2   = 1;
            int  dir    = 0;

            int[] oldExp = this.getOldExp(array);
            int[] oldLv  = this.getOldLv(array);
            if (itemCount <= 0)
            {
                client.Player.Out.SendPlayerFigSpiritUp(iD, gemStone, flag, max, isFall, 0, dir);
                client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Chiến hồn không đủ!", new object[0]));
                return(0);
            }
            if (DateTime.Compare(client.Player.LastFigUpTime.AddSeconds(2.0), DateTime.Now) > 0)
            {
                client.Player.Out.SendPlayerFigSpiritUp(iD, gemStone, flag, max, isFall, 0, dir);
                client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Quá nhiều thao tác!", new object[0]));
                return(1);
            }
            if (!max && itemByTemplateID != null)
            {
                if (num == 0)
                {
                    int property = itemByTemplateID.Template.Property2;
                    for (int i = 0; i < FigSpiritUpGradeHandler.places.Length; i++)
                    {
                        if (oldLv[i] < 5)
                        {
                            oldExp[i] += property;
                            flag       = this.canUpLv(oldExp[i], oldLv[i]);
                            if (flag)
                            {
                                oldLv[i]++;
                                oldExp[i] = 0;
                            }
                        }
                    }
                    client.Player.PropBag.RemoveCountFromStack(itemByTemplateID, 1);
                }
                if (num == 1)
                {
                    int num3 = 1;
                    for (int j = 0; j < FigSpiritUpGradeHandler.places.Length; j++)
                    {
                        num3 = this.getNeedExp(oldExp[j], oldLv[j]) / itemByTemplateID.Template.Property2;
                        if (itemCount < num3)
                        {
                            num3 = itemCount;
                        }
                        int num4 = itemByTemplateID.Template.Property2 * num3;
                        if (oldLv[j] < 5)
                        {
                            oldExp[j] += num4;
                            flag       = this.canUpLv(oldExp[j], oldLv[j]);
                            if (flag)
                            {
                                oldLv[j]++;
                                oldExp[j] = 0;
                            }
                        }
                    }
                    client.Player.PropBag.RemoveTemplate(templateId, num3);
                }
            }
            if (flag)
            {
                isFall = false;
                dir    = 1;
                client.Player.MainBag.UpdatePlayerProperties();
            }
            string text = string.Concat(new object[]
            {
                oldLv[0],
                ",",
                oldExp[0],
                ",",
                FigSpiritUpGradeHandler.places[0]
            });

            for (int k = 1; k < FigSpiritUpGradeHandler.places.Length; k++)
            {
                object obj = text;
                text = string.Concat(new object[]
                {
                    obj,
                    "|",
                    oldLv[k],
                    ",",
                    oldExp[k],
                    ",",
                    FigSpiritUpGradeHandler.places[k]
                });
            }
            gemStone.FigSpiritId      = figSpiritId;
            gemStone.FigSpiritIdValue = text;
            using (PlayerBussiness playerBussiness = new PlayerBussiness())
            {
                playerBussiness.UpdateGemStoneInfo(gemStone);
            }
            client.Player.OnUserToemGemstoneEvent();
            client.Player.Out.SendPlayerFigSpiritUp(iD, gemStone, flag, max, isFall, num2, dir);
            client.Player.LastFigUpTime = DateTime.Now;
            return(0);
        }
예제 #2
0
 public bool UpdateGemStoneInfo(UserGemStone g)
 {
     bool flag = false;
     try
     {
         SqlParameter[] SqlParameters = new SqlParameter[6]
     {
       new SqlParameter("@ID", (object) g.ID),
       new SqlParameter("@UserID", (object) g.UserID),
       new SqlParameter("@FigSpiritId", (object) g.FigSpiritId),
       new SqlParameter("@FigSpiritIdValue", (object) g.FigSpiritIdValue),
       new SqlParameter("@EquipPlace", (object) g.EquipPlace),
       new SqlParameter("@Result", SqlDbType.Int)
     };
         SqlParameters[5].Direction = ParameterDirection.ReturnValue;
         this.db.RunProcedure("SP_UpdateGemStoneInfo", SqlParameters);
         flag = true;
     }
     catch (Exception ex)
     {
         if (BaseBussiness.log.IsErrorEnabled)
             BaseBussiness.log.Error((object)"SP_UpdateGemStoneInfo", ex);
     }
     return flag;
 }
예제 #3
0
 public bool AddUserGemStone(UserGemStone item)
 {
     bool flag = false;
     try
     {
         SqlParameter[] SqlParameters = new SqlParameter[6];
         SqlParameters[0] = new SqlParameter("@ID", (object)item.ID);
         SqlParameters[0].Direction = ParameterDirection.Output;
         SqlParameters[1] = new SqlParameter("@UserID", (object)item.UserID);
         SqlParameters[2] = new SqlParameter("@FigSpiritId", (object)item.FigSpiritId);
         SqlParameters[3] = new SqlParameter("@FigSpiritIdValue", (object)item.FigSpiritIdValue);
         SqlParameters[4] = new SqlParameter("@EquipPlace", (object)item.EquipPlace);
         SqlParameters[5] = new SqlParameter("@Result", SqlDbType.Int);
         SqlParameters[5].Direction = ParameterDirection.ReturnValue;
         this.db.RunProcedure("SP_Users_GemStones_Add", SqlParameters);
         flag = (int)SqlParameters[5].Value == 0;
         item.ID = (int)SqlParameters[0].Value;
         item.IsDirty = false;
     }
     catch (Exception ex)
     {
         if (BaseBussiness.log.IsErrorEnabled)
             BaseBussiness.log.Error((object)"Init", ex);
     }
     return flag;
 }
예제 #4
0
 public GSPacketIn SendPlayerFigSpiritUp(int ID, UserGemStone gem, bool isUp, bool isMaxLevel, bool isFall, int num, int dir)
 {
     throw new NotImplementedException();
 }