public static GW_ItemSlotBase CreateItem(int nItemID, bool bRandStats = true) { if (nItemID <= 0) { return(null); } // TODO test the below if (ItemConstants.GetInventoryType(nItemID) != InventoryType.Equip) { GW_ItemSlotBase item; if (ItemConstants.IsPet(nItemID)) { item = new GW_ItemSlotPet(nItemID); ((GW_ItemSlotPet)item).nRemainLife = 7776000; } else { item = new GW_ItemSlotBundle(nItemID); } if (item.Template is null) { throw new ArgumentOutOfRangeException(nameof(nItemID), "Doesn't exist in data files."); } if (ItemConstants.IsRechargeableItem(item.nItemID)) { item.nNumber = (short)item.Template.SlotMax; } else { item.nNumber = 1; } item.tDateExpire = DateTime.MaxValue; return(item); } if (bRandStats) { return(CreateVariableStatEquip(nItemID)); } return(CreateNormalStatEquip(nItemID)); }
public void LoadFromDB() { using (var conn = new NpgsqlConnection(Constants.DB_World0_ConString)) { conn.Open(); using (var cmd = new NpgsqlCommand($"SELECT item_id, item_quantity, item_date_expire, item_serial_number, item_cash_serial_number FROM {Constants.DB_All_World_Schema_Name}.char_inventory_items " + $"WHERE character_id = {dwOwnerID} " + $"AND inventory_slot < {Constants.DB_ITEMSTORAGE_SLOTMAX} " + $"AND inventory_slot >= {Constants.DB_ITEMSTORAGE_SLOTMIN}", conn)) { using (var r = cmd.ExecuteReader()) { while (r.Read()) { var i = new GW_ItemSlotBundle(Convert.ToInt16(r["item_id"])) { nNumber = Convert.ToInt16(r["item_quantity"]), tDateExpire = (DateTime)r["item_date_expire"], liSN = Convert.ToInt16(r["item_serial_number"]), liCashItemSN = Convert.ToInt16(r["item_cash_serial_number"]), }; var tItem = new TempItem(i, 0, 0, 0); Add(tItem); } } } using (var cmd = new NpgsqlCommand($"SELECT * FROM {Constants.DB_All_World_Schema_Name}.char_inventory_equips " + $"WHERE character_id = {dwOwnerID} " + $"AND inventory_slot < {Constants.DB_ITEMSTORAGE_SLOTMAX} " + $"AND inventory_slot >= {Constants.DB_ITEMSTORAGE_SLOTMIN}", conn)) using (var r = cmd.ExecuteReader()) { while (r.Read()) { //Log.Info("Before adding item..."); var e = new GW_ItemSlotEquip(r.GetInt32(2)) { dwInvItemId = (int)r.GetInt64(0), // character_id = (1), //nItemID = r.GetInt32(2), CurrentUpgradeCount = (byte)r.GetInt16(3), RemainingUpgradeCount = (byte)r.GetInt16(4), niSTR = r.GetInt16(5), niDEX = r.GetInt16(6), niINT = r.GetInt16(7), niLUK = r.GetInt16(8), niMaxHP = r.GetInt16(9), niMaxMP = r.GetInt16(10), niPAD = r.GetInt16(11), niMAD = r.GetInt16(12), niPDD = r.GetInt16(13), niMDD = r.GetInt16(14), niACC = r.GetInt16(15), niEVA = r.GetInt16(16), niCraft = r.GetInt16(17), niSpeed = r.GetInt16(18), niJump = r.GetInt16(19), nAttribute = (ItemAttributeFlags)r.GetInt16(20), liSN = r.GetInt64(21), sTitle = r["item_title"] as string, nLevelUpType = (byte)r.GetInt16(23), nLevel = (byte)r.GetInt16(24), nEXP = r.GetInt32(25), nDurability = r.GetInt32(26), HammerUpgradeCount = (byte)r.GetInt32(27), nGrade = (PotentialGradeCode)r.GetInt16(28), StarUpgradeCount = (byte)r.GetInt16(29), nOption1 = r.GetInt16(30), nOption2 = r.GetInt16(31), nOption3 = r.GetInt16(32), nSocket1 = r.GetInt16(33), nSocket2 = r.GetInt16(34), liCashItemSN = r.GetInt64(38), tSealingLock = (DateTime)r["sealinglock_datetime"], tDateExpire = (DateTime)r["date_expire"], }; //Log.Info($"Adding item ID {r.GetInt32(2)} to slot {r.GetInt16(36)} to char ID {r.GetInt32(1)}/{charId}"); var tItem = new TempItem(e, 0, 0, 0); // 0's cuz we dont care Add(tItem); } } using (var cmd = new NpgsqlCommand($"SELECT merchant_mesos " + $"FROM {Constants.DB_All_World_Schema_Name}.characters " + $"WHERE id = {dwOwnerID}", conn)) { using (var r = cmd.ExecuteReader()) { while (r.Read()) { Meso = r.GetInt64(0); break; } } } } }