Exemple #1
0
        public override void Handle(virtualUser User)
        {
            int num1 = int.Parse(this.getBlock(0));

            HANDLE_GUN_SMITH.Type type = (HANDLE_GUN_SMITH.Type) int.Parse(this.getBlock(1));
            if (type == HANDLE_GUN_SMITH.Type.Ticket && !User.hasItem("CZ75"))
            {
                return;
            }
            string[] GunSmithArray = DB.runReadRow("SELECT gameid, item, rare, required_items, lose_items, required_materials, cost FROM gunsmith WHERE gameid='" + num1 + "'");
            if (GunSmithArray.Length <= 0)
            {
                return;
            }
            string ItemCode = GunSmithArray[1];
            int    num2     = int.Parse(GunSmithArray[6]);
            string str      = GunSmithArray[2];
            int    eaItems1 = User.getEAItems("CZ83");
            int    eaItems2 = User.getEAItems("CZ84");
            int    eaItems3 = User.getEAItems("CZ85");

            string[] strArray2 = (GunSmithArray[5]).ToString().Split(',');
            if (type == HANDLE_GUN_SMITH.Type.Ticket)
            {
                num2 = 0;
            }
            if (num2 == -1)
            {
                return;
            }
            int[] numArray = new int[strArray2.Length];
            for (int index = 0; index < numArray.Length; ++index)
            {
                int.TryParse(strArray2[index], out numArray[index]);
            }
            if (numArray[0] > eaItems3 || numArray[1] > eaItems2 || numArray[2] > eaItems1)
            {
                return;
            }
            string[] strArray3 = (GunSmithArray[3]).ToString().Split(',');
            if (!User.hasItem(strArray3[0]) || !User.hasItem(strArray3[1]) || !User.hasItem(strArray3[2]))
            {
                return;
            }
            User.DeleteItem(strArray3[0], 0);
            User.DeleteItem(strArray3[1], 0);
            User.DeleteItem(strArray3[2], 0);
            string[] strArray4 = (GunSmithArray[4]).ToString().Split(',');
            int      num3      = new Random().Next(0, 50);

            if (type == HANDLE_GUN_SMITH.Type.Ticket)
            {
                num3 += 10;
            }
            int index1 = new Random().Next(0, strArray4.Length);
            int Days   = 30;

            if (type == HANDLE_GUN_SMITH.Type.Dinar)
            {
                User.Dinar -= num2;
            }
            else
            {
                User.DeleteItem("CZ75", 1);
            }
            User.DeleteItem("CZ83", numArray[0]);
            User.DeleteItem("CZ84", numArray[1]);
            User.DeleteItem("CZ85", numArray[2]);
            int calcPerc = (type == Type.Dinar ? 10 : 25);

            if (num3 == 17)
            {
                ItemCode = str;
                User.send((Packet) new PACKET_GUN_SMITH(User, ItemCode, PACKET_GUN_SMITH.WonType.Rare));
            }
            else if (num3 > calcPerc)
            {
                User.send((Packet) new PACKET_GUN_SMITH(User, ItemCode, PACKET_GUN_SMITH.WonType.Normal));
            }
            else
            {
                ItemCode = strArray4[index1];
                Days     = new Random().Next(1, 15);
                User.send((Packet) new PACKET_GUN_SMITH(User, ItemCode, PACKET_GUN_SMITH.WonType.Lose));
            }
            User.AddOutBoxItem(ItemCode, Days, 1);
        }
Exemple #2
0
        public override void Handle(virtualUser User)
        {
            try
            {
                bool   Equip      = (getNextBlock() == "0" ? true : false);
                bool   is6thSlot  = (getBlock(0) == "3" ? true : false);
                int    Class      = Convert.ToInt32(getNextBlock());
                string ItemID     = getBlock(4);
                int    TargetSlot = Convert.ToInt32(getBlock(5));
                int    Equip6th   = Convert.ToInt32(getBlock(0));

                bool DefaultWeapon = isDefaultWeapon(ItemID, Class, TargetSlot);

                string InventoryCode = User.getInventoryID(ItemID);

                if (is6thSlot)
                {
                    if (TargetSlot == 5 && ItemID.Contains("-"))
                    {
                        string[] CodeInfo = ItemID.Split(Convert.ToChar("-"));

                        if (User.hasItem(CodeInfo[0]) == false || User.hasItem(CodeInfo[1]) == false)
                        {
                            return;
                        }

                        string[] CodeInfoIDs = new string[2];
                        CodeInfoIDs[0] = User.getInventoryID(CodeInfo[0]);
                        CodeInfoIDs[1] = User.getInventoryID(CodeInfo[1]);

                        InventoryCode = string.Join("-", CodeInfoIDs);
                    }
                    else
                    {
                        if (ItemID.Contains("-"))
                        {
                            string[] CodeInfo = User.Equipment[Class, 5].Split(Convert.ToChar("-"));

                            if (CodeInfo[0] == InventoryCode)
                            {
                                InventoryCode = CodeInfo[1];
                            }
                            else if (CodeInfo[1] == InventoryCode)
                            {
                                InventoryCode = CodeInfo[0];
                            }
                        }
                    }

                    User.Equipment[Class, 5] = InventoryCode;

                    User.LoadRetails();

                    StringBuilder Items = new StringBuilder();
                    for (int I = 0; I < 8; I++)
                    {
                        Items.Append(User.Equipment[Class, I] + ",");
                    }
                    string EquipStr = Items.ToString().Remove(Items.ToString().Length - 1);

                    User.send(new PACKET_EQUIPMENT(Class, EquipStr));
                    DB.runQuery("UPDATE equipment SET class" + Class + "='" + EquipStr + "' WHERE ownerID=" + User.UserID.ToString());
                }
                else if (Equip)
                {
                    if (User.hasItem(ItemID) == false && DefaultWeapon == false)
                    {
                        return;
                    }

                    if (DefaultWeapon)
                    {
                        InventoryCode = ItemID;
                    }

                    bool hasItemEquipped = false;

                    for (int J = 0; J < 8; J++)
                    {
                        if (User.Equipment[Class, J] == InventoryCode)
                        {
                            hasItemEquipped = true;
                        }
                    }

                    //Check for the 5th slot

                    if (TargetSlot == 4)
                    {
                        string[] SplitSlots = User.getSlots().Split(Convert.ToChar(","));
                        if (SplitSlots[0] != "T")
                        {
                            User.disconnect();
                        }
                    }

                    if (hasItemEquipped == false)
                    {
                        User.Equipment[Class, TargetSlot] = InventoryCode;

                        User.LoadRetails();

                        StringBuilder Items = new StringBuilder();
                        for (int I = 0; I < 8; I++)
                        {
                            Items.Append(User.Equipment[Class, I] + ",");
                        }
                        string EquipStr = Items.ToString().Remove(Items.ToString().Length - 1);

                        User.send(new PACKET_EQUIPMENT(Class, EquipStr));
                        DB.runQuery("UPDATE equipment SET class" + Class + "='" + EquipStr + "' WHERE ownerID=" + User.UserID.ToString());
                    }
                    else
                    {
                        User.send(new PACKET_EQUIPMENT(PACKET_EQUIPMENT.ErrorCode.AlreadyEquipped));
                    }
                }
                else
                {
                    int _TargetSlot = Convert.ToInt32(getBlock(3));
                    if (User.Equipment[Class, _TargetSlot] == InventoryCode || _TargetSlot == 5)
                    {
                        if (User.Equipment[Class, _TargetSlot] != "^")
                        {
                            User.Equipment[Class, _TargetSlot] = "^";

                            User.LoadRetails();

                            StringBuilder Items = new StringBuilder();
                            for (int I = 0; I < 8; I++)
                            {
                                Items.Append(User.Equipment[Class, I] + ",");
                            }
                            string EquipStr = Items.ToString().Remove(Items.ToString().Length - 1);

                            User.send(new PACKET_EQUIPMENT(Class, EquipStr));
                            DB.runQuery("UPDATE equipment SET class" + Class + "='" + EquipStr + "' WHERE ownerID=" + User.UserID.ToString());
                        }
                    }
                    else
                    {
                        //User.disconnect();
                    }
                }
            }
            catch (Exception ex) { /*Log.AppendError(ex.Message);*/ }
        }