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); }
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);*/ } }