//////////////////////////////////////////////////////////////////////////////////////////////////////////// // Create Item From Gm console //////////////////////////////////////////////////////////////////////////////////////////////////////////// public static byte[] GM_MAKEITEM(byte type, byte Slot, int id, short plus, int durability, int itemid, int bluecount) { int msid = Systems.MsSQL.GetDataInt("SELECT id FROM char_items WHERE owner='" + id + "' AND slot = '" + Slot + "'", "id"); Systems.LoadBluesid(msid); PacketWriter Writer = new PacketWriter(); Writer.Create(Systems.SERVER_ITEM_MOVE); Writer.Bool(true); Writer.Byte(6); Item.AddItemPacket(Writer, Slot, id, (byte)plus, plus, durability, itemid, msid, 0); return(Writer.GetBytes()); }
public static byte[] Exchange_ItemPacket(int id, List <Global.slotItem> Exhange, bool mine) { PacketWriter Writer = new PacketWriter(); Writer.Create(Systems.SERVER_EXCHANGE_ITEM); Writer.DWord(id); Writer.Byte(Exhange.Count); for (byte i = 0; i < Exhange.Count; i++) { Systems.LoadBluesid(Exhange[i].dbID); if (mine) { Writer.Byte(Exhange[i].Slot); } Writer.Byte(i); Writer.DWord(0); Writer.DWord(Exhange[i].ID); if (Data.ItemBase[Exhange[i].ID].Type == Global.item_database.ArmorType.ARMOR || Data.ItemBase[Exhange[i].ID].Type == Global.item_database.ArmorType.GARMENT || Data.ItemBase[Exhange[i].ID].Type == Global.item_database.ArmorType.GM || Data.ItemBase[Exhange[i].ID].Type == Global.item_database.ArmorType.HEAVY || Data.ItemBase[Exhange[i].ID].Type == Global.item_database.ArmorType.LIGHT || Data.ItemBase[Exhange[i].ID].Type == Global.item_database.ArmorType.PROTECTOR || Data.ItemBase[Exhange[i].ID].Type == Global.item_database.ArmorType.ROBE || Data.ItemBase[Exhange[i].ID].Itemtype == Global.item_database.ItemType.EARRING || Data.ItemBase[Exhange[i].ID].Itemtype == Global.item_database.ItemType.RING || Data.ItemBase[Exhange[i].ID].Itemtype == Global.item_database.ItemType.NECKLACE || Data.ItemBase[Exhange[i].ID].Itemtype == Global.item_database.ItemType.BLADE || Data.ItemBase[Exhange[i].ID].Itemtype == Global.item_database.ItemType.BOW || Data.ItemBase[Exhange[i].ID].Itemtype == Global.item_database.ItemType.EU_AXE || Data.ItemBase[Exhange[i].ID].Itemtype == Global.item_database.ItemType.EU_CROSSBOW || Data.ItemBase[Exhange[i].ID].Itemtype == Global.item_database.ItemType.EU_DAGGER || Data.ItemBase[Exhange[i].ID].Itemtype == Global.item_database.ItemType.EU_DARKSTAFF || Data.ItemBase[Exhange[i].ID].Itemtype == Global.item_database.ItemType.EU_HARP || Data.ItemBase[Exhange[i].ID].Itemtype == Global.item_database.ItemType.EU_STAFF || Data.ItemBase[Exhange[i].ID].Itemtype == Global.item_database.ItemType.EU_SWORD || Data.ItemBase[Exhange[i].ID].Itemtype == Global.item_database.ItemType.EU_TSTAFF || Data.ItemBase[Exhange[i].ID].Itemtype == Global.item_database.ItemType.EU_TSWORD || Data.ItemBase[Exhange[i].ID].Itemtype == Global.item_database.ItemType.GLAVIE || Data.ItemBase[Exhange[i].ID].Itemtype == Global.item_database.ItemType.SPEAR || Data.ItemBase[Exhange[i].ID].Itemtype == Global.item_database.ItemType.SWORD || Data.ItemBase[Exhange[i].ID].Itemtype == Global.item_database.ItemType.CH_SHIELD || Data.ItemBase[Exhange[i].ID].Itemtype == Global.item_database.ItemType.EU_SHIELD) { Writer.Byte(Exhange[i].PlusValue); Writer.LWord(0); Writer.DWord(Data.ItemBase[Exhange[i].ID].Defans.Durability); if (Data.ItemBlue[Exhange[i].dbID].totalblue != 0) { Writer.Byte(Convert.ToByte(Data.ItemBlue[Exhange[i].dbID].totalblue)); for (int a = 1; a <= Data.ItemBlue[Exhange[i].dbID].totalblue; a++) { Writer.DWord(Data.MagicOptions.Find(mg => (mg.Name == Convert.ToString(Data.ItemBlue[Exhange[i].dbID].blue[i]))).ID); Writer.DWord(Data.ItemBlue[Exhange[i].dbID].blueamount[i]); } } else { Writer.Byte(0); } Writer.Word(1); Writer.Word(2); Writer.Word(3); } else if (Data.ItemBase[Exhange[i].ID].Etctype == Global.item_database.EtcType.STONES) { Writer.Word(Exhange[i].Amount); Writer.Byte(0); } else if (Data.ItemBase[Exhange[i].ID].Etctype == Global.item_database.EtcType.MONSTERMASK) { Writer.DWord(0); } else if (Data.ItemBase[Exhange[i].ID].Etctype == Global.item_database.EtcType.ELIXIR) { Writer.Word(1); } else if (Data.ItemBase[Exhange[i].ID].Itemtype == Global.item_database.ItemType.ARROW || Data.ItemBase[Exhange[i].ID].Itemtype == Global.item_database.ItemType.BOLT || Data.ItemBase[Exhange[i].ID].Etctype == Global.item_database.EtcType.HP_POTION || Data.ItemBase[Exhange[i].ID].Etctype == Global.item_database.EtcType.MP_POTION || Data.ItemBase[Exhange[i].ID].Etctype == Global.item_database.EtcType.VIGOR_POTION || Data.ItemBase[Exhange[i].ID].Etctype == Global.item_database.EtcType.SPEED_POTION || Data.ItemBase[Exhange[i].ID].Ticket == Global.item_database.Tickets.BEGINNER_HELPERS || Data.ItemBase[Exhange[i].ID].Etctype == Global.item_database.EtcType.ELIXIR || Data.ItemBase[Exhange[i].ID].Etctype == Global.item_database.EtcType.ALCHEMY_MATERIAL || Data.ItemBase[Exhange[i].ID].Etctype == Global.item_database.EtcType.EVENT || Data.ItemBase[Exhange[i].ID].Class_D == 3) { Writer.Word(Exhange[i].Amount); } } return(Writer.GetBytes()); }
public static void StallItemPacket(List <stall.stallItem> ItemList, PacketWriter Writer) { for (byte i = 0; i < ItemList.Count; i++) { //Define item id int itemid = ItemList[i].Item.ID; //Temp disable mall type, todo : Enable PRE-Mall to sell in stalls. if (Data.ItemBase[itemid].Name.Contains("MALL")) { return; } Systems.LoadBluesid(ItemList[i].Item.dbID); Writer.Byte(ItemList[i].stallSlot); Writer.DWord(0); Writer.DWord(itemid); //Define what types of item we are adding to the stall if (Data.ItemBase[itemid].Type == Global.item_database.ArmorType.ARMOR || Data.ItemBase[itemid].Type == Global.item_database.ArmorType.GARMENT || Data.ItemBase[itemid].Type == Global.item_database.ArmorType.GM || Data.ItemBase[itemid].Type == Global.item_database.ArmorType.HEAVY || Data.ItemBase[itemid].Type == Global.item_database.ArmorType.LIGHT || Data.ItemBase[itemid].Type == Global.item_database.ArmorType.PROTECTOR || Data.ItemBase[itemid].Type == Global.item_database.ArmorType.ROBE || Data.ItemBase[itemid].Itemtype == Global.item_database.ItemType.EARRING || Data.ItemBase[itemid].Itemtype == Global.item_database.ItemType.RING || Data.ItemBase[itemid].Itemtype == Global.item_database.ItemType.NECKLACE || Data.ItemBase[itemid].Itemtype == Global.item_database.ItemType.BLADE || Data.ItemBase[itemid].Itemtype == Global.item_database.ItemType.BOW || Data.ItemBase[itemid].Itemtype == Global.item_database.ItemType.EU_AXE || Data.ItemBase[itemid].Itemtype == Global.item_database.ItemType.EU_CROSSBOW || Data.ItemBase[itemid].Itemtype == Global.item_database.ItemType.EU_DAGGER || Data.ItemBase[itemid].Itemtype == Global.item_database.ItemType.EU_DARKSTAFF || Data.ItemBase[itemid].Itemtype == Global.item_database.ItemType.EU_HARP || Data.ItemBase[itemid].Itemtype == Global.item_database.ItemType.EU_STAFF || Data.ItemBase[itemid].Itemtype == Global.item_database.ItemType.EU_SWORD || Data.ItemBase[itemid].Itemtype == Global.item_database.ItemType.EU_TSTAFF || Data.ItemBase[itemid].Itemtype == Global.item_database.ItemType.EU_TSWORD || Data.ItemBase[itemid].Itemtype == Global.item_database.ItemType.GLAVIE || Data.ItemBase[itemid].Itemtype == Global.item_database.ItemType.SPEAR || Data.ItemBase[itemid].Itemtype == Global.item_database.ItemType.SWORD || Data.ItemBase[itemid].Itemtype == Global.item_database.ItemType.CH_SHIELD || Data.ItemBase[itemid].Itemtype == Global.item_database.ItemType.EU_SHIELD) { Writer.Byte(ItemList[i].Item.PlusValue); Writer.LWord(0); Writer.DWord(Data.ItemBase[ItemList[i].Item.ID].Defans.Durability); if (Data.ItemBlue[ItemList[i].Item.dbID].totalblue != 0) { Writer.Byte(Convert.ToByte(Data.ItemBlue[ItemList[i].Item.dbID].totalblue)); for (int a = 1; a <= Data.ItemBlue[ItemList[i].Item.dbID].totalblue; a++) { Writer.DWord(Data.MagicOptions.Find(mg => (mg.Name == Convert.ToString(Data.ItemBlue[ItemList[i].Item.dbID].blue[i]))).ID); Writer.DWord(Data.ItemBlue[ItemList[i].Item.dbID].blueamount[i]); } } else { Writer.Byte(0); } Writer.Word(1); Writer.Word(2); Writer.Word(3); } else if (Data.ItemBase[itemid].Etctype == Global.item_database.EtcType.STONES) { Writer.Word(ItemList[i].Item.Amount); Writer.Byte(0); } else if (Data.ItemBase[itemid].Etctype == Global.item_database.EtcType.MONSTERMASK) { Writer.DWord(0);//Todo : Load monster mask monster model id here return; } else if (Data.ItemBase[itemid].Etctype == Global.item_database.EtcType.ELIXIR) { Writer.Word(1); } else if (Data.ItemBase[itemid].Itemtype == Global.item_database.ItemType.ARROW || Data.ItemBase[itemid].Itemtype == Global.item_database.ItemType.BOLT || Data.ItemBase[itemid].Etctype == Global.item_database.EtcType.HP_POTION || Data.ItemBase[itemid].Etctype == Global.item_database.EtcType.MP_POTION || Data.ItemBase[itemid].Etctype == Global.item_database.EtcType.VIGOR_POTION || Data.ItemBase[itemid].Etctype == Global.item_database.EtcType.SPEED_POTION || Data.ItemBase[itemid].Ticket == Global.item_database.Tickets.BEGINNER_HELPERS || Data.ItemBase[itemid].Etctype == Global.item_database.EtcType.ELIXIR || Data.ItemBase[itemid].Etctype == Global.item_database.EtcType.ALCHEMY_MATERIAL || Data.ItemBase[itemid].Etctype == Global.item_database.EtcType.EVENT || Data.ItemBase[itemid].Class_D == 3) { Writer.Word(ItemList[i].Item.Amount); } Writer.Byte(ItemList[i].Item.Slot); Writer.Word(ItemList[i].Item.Amount); Writer.LWord(ItemList[i].price); } Writer.Byte(0xFF); }
public static void AddItemPacket(PacketWriter Writer, byte slot, int id, byte plus, short amount, int durability, int itemid, int bluecount, int modelid) { try { //Blues pre loading #region Load blues for items Systems.LoadBluesid(itemid); #endregion //Static information for packet #region Static packet info if (slot != 255) { Writer.Byte(slot); // slot } Writer.DWord(0); // sttaic 0 Writer.DWord(id); // Item ID #endregion //Armor types and jewerly #region Armor related if (Data.ItemBase[id].Type == Global.item_database.ArmorType.ARMOR || Data.ItemBase[id].Type == Global.item_database.ArmorType.GARMENT || Data.ItemBase[id].Type == Global.item_database.ArmorType.GM || Data.ItemBase[id].Type == Global.item_database.ArmorType.HEAVY || Data.ItemBase[id].Type == Global.item_database.ArmorType.LIGHT || Data.ItemBase[id].Type == Global.item_database.ArmorType.PROTECTOR || Data.ItemBase[id].Type == Global.item_database.ArmorType.ROBE || Data.ItemBase[id].Itemtype == Global.item_database.ItemType.EARRING || Data.ItemBase[id].Itemtype == Global.item_database.ItemType.RING || Data.ItemBase[id].Itemtype == Global.item_database.ItemType.NECKLACE) { Writer.Byte(plus); Writer.Byte(0); //Durability + % Writer.Byte(0); //Item Phy/Mag reinforce value % Writer.Byte(0); //Physical defense power % Writer.Byte(0); //Magical defense power % Writer.Byte(0); //Static byte ? Writer.Byte(0); //Static byte ? Writer.Byte(0); //Static byte ? Writer.Byte(0); //Static byte ? Writer.DWord(durability); //Durability if (bluecount != 0) { Writer.Byte(Convert.ToByte(Data.ItemBlue[itemid].totalblue)); for (int i = 0; i <= Data.ItemBlue[itemid].totalblue - 1; i++) { Writer.DWord(Data.MagicOptions.Find(mg => (mg.Name == Convert.ToString(Data.ItemBlue[itemid].blue[i]))).ID); Writer.DWord(Data.ItemBlue[itemid].blueamount[i]); } } else { Writer.Byte(0); } Writer.Byte(1); Writer.Byte(0); Writer.Byte(2); Writer.Byte(0); Writer.Byte(3); Writer.Byte(0); return; } #endregion //Weaponry (Weapons). #region Weapons else if (Data.ItemBase[id].Itemtype == Global.item_database.ItemType.BLADE || Data.ItemBase[id].Itemtype == Global.item_database.ItemType.BOW || Data.ItemBase[id].Itemtype == Global.item_database.ItemType.EU_AXE || Data.ItemBase[id].Itemtype == Global.item_database.ItemType.EU_CROSSBOW || Data.ItemBase[id].Itemtype == Global.item_database.ItemType.EU_DAGGER || Data.ItemBase[id].Itemtype == Global.item_database.ItemType.EU_DARKSTAFF || Data.ItemBase[id].Itemtype == Global.item_database.ItemType.EU_HARP || Data.ItemBase[id].Itemtype == Global.item_database.ItemType.EU_STAFF || Data.ItemBase[id].Itemtype == Global.item_database.ItemType.EU_SWORD || Data.ItemBase[id].Itemtype == Global.item_database.ItemType.EU_TSTAFF || Data.ItemBase[id].Itemtype == Global.item_database.ItemType.EU_TSWORD || Data.ItemBase[id].Itemtype == Global.item_database.ItemType.GLAVIE || Data.ItemBase[id].Itemtype == Global.item_database.ItemType.SPEAR || Data.ItemBase[id].Itemtype == Global.item_database.ItemType.SWORD) { Writer.Byte(plus); //Item Plus Value Writer.Byte(0x64); //Durability + % Writer.Byte(0); //Item Phy/Mag reinforce value % Writer.Byte(0); //Attack rating / blocking ratio Writer.Byte(0); //Magical defense power % Writer.Byte(0); Writer.Byte(0); Writer.Byte(0); Writer.Byte(0); Writer.DWord(durability); if (bluecount != 0) { Writer.Byte(Convert.ToByte(Data.ItemBlue[itemid].totalblue)); for (int i = 0; i <= Data.ItemBlue[itemid].totalblue - 1; i++) { Writer.DWord(Data.MagicOptions.Find(mg => (mg.Name == Convert.ToString(Data.ItemBlue[itemid].blue[i]))).ID); Writer.DWord(Data.ItemBlue[itemid].blueamount[i]); } } else { Writer.Byte(0); } Writer.Byte(1); Writer.Byte(0); Writer.Byte(2); Writer.Byte(0); Writer.Byte(3); Writer.Byte(0); return; } #endregion //Shields #region Shields else if (Data.ItemBase[id].Itemtype == Global.item_database.ItemType.CH_SHIELD || Data.ItemBase[id].Itemtype == Global.item_database.ItemType.EU_SHIELD) { Writer.Byte(plus); //Item Plus Value Writer.Byte(0); //Durability + % Writer.Byte(0); //Item Phy/Mag reinforce value % Writer.Byte(9); //blocking ratio Writer.Byte(0); //Magical defense power % Writer.Byte(0); Writer.Byte(0); Writer.Byte(0); Writer.Byte(0); Writer.DWord(durability); //Durability if (bluecount != 0) { Writer.Byte(Convert.ToByte(Data.ItemBlue[itemid].totalblue)); for (int i = 0; i <= Data.ItemBlue[itemid].totalblue - 1; i++) { Writer.DWord(Data.MagicOptions.Find(mg => (mg.Name == Convert.ToString(Data.ItemBlue[itemid].blue[i]))).ID); Writer.DWord(Data.ItemBlue[itemid].blueamount[i]); } } else { Writer.Byte(0); } Writer.Byte(1); Writer.Byte(0); Writer.Byte(2); Writer.Byte(0); Writer.Byte(3); Writer.Byte(0); return; } #endregion //Avatars #region Avatars else if (Data.ItemBase[id].Type == Global.item_database.ArmorType.AVATAR || Data.ItemBase[id].Type == Global.item_database.ArmorType.AVATARATTACH || Data.ItemBase[id].Type == Global.item_database.ArmorType.AVATARHAT) { Writer.Byte(plus); //Item Plus Value Writer.Byte(0); //Item Magical Reinforce value Writer.Byte(0); //Item Phy reinforce value Writer.Byte(0); Writer.Byte(0); Writer.Word(0); Writer.Word(0); Writer.DWord(durability); //Item Durability Writer.Byte(0); Writer.Word(1); Writer.Word(2); Writer.Word(3); return; } #endregion //Grabpets #region Grabpets else if (Data.ItemBase[id].Pettype == Global.item_database.PetType.GRABPET) { Writer.Byte(0); // State :0 = Not opened yet, 1 = , 3 = Expired Writer.DWord(0x00002432); //Time date probably Writer.Word(0); Writer.DWord(1); Writer.Byte(0); return; } #endregion //Attack pets #region Attackpets else if (Data.ItemBase[id].Pettype == Global.item_database.PetType.ATTACKPET) { Writer.Byte(0); // Writer.Byte(2); // Writer.Byte(24); // Level Writer.Word(0); // Writer.Word(0); //Petname Writer.Byte(0); return; } #endregion //Normal stones #region Stones else if (Data.ItemBase[id].Etctype == Global.item_database.EtcType.STONES) { Writer.Word(amount); Writer.Byte(0);//Assumability % return; } #endregion //Monster masks #region Monster masks else if (Data.ItemBase[id].Etctype == Global.item_database.EtcType.MONSTERMASK) { Writer.DWord(modelid); return; } #endregion //Stall decoration #region Stall decoration else if (Data.ItemBase[id].Etctype == Global.item_database.EtcType.STALLDECORATION) { Writer.Byte(0); Writer.Word(1); return; } #endregion //Elixirs #region Elixirs else if (Data.ItemBase[id].Etctype == Global.item_database.EtcType.ELIXIR) { Writer.Word(1); return; } #endregion //Other items (To filter later). #region Other items //Need to add more and add more on fileload else if (Data.ItemBase[id].Itemtype == Global.item_database.ItemType.ARROW || Data.ItemBase[id].Itemtype == Global.item_database.ItemType.BOLT || Data.ItemBase[id].Etctype == Global.item_database.EtcType.HP_POTION || Data.ItemBase[id].Etctype == Global.item_database.EtcType.MP_POTION || Data.ItemBase[id].Etctype == Global.item_database.EtcType.VIGOR_POTION || Data.ItemBase[id].Etctype == Global.item_database.EtcType.SPEED_POTION || Data.ItemBase[id].Ticket == Global.item_database.Tickets.BEGINNER_HELPERS || Data.ItemBase[id].Etctype == Global.item_database.EtcType.ELIXIR || Data.ItemBase[id].Etctype == Global.item_database.EtcType.ALCHEMY_MATERIAL || Data.ItemBase[id].Etctype == Global.item_database.EtcType.EVENT || Data.ItemBase[id].Class_D == 3) { Writer.Word(amount); return; } else { Writer.Byte(0); Writer.Word(1); return; } #endregion } catch (Exception ex) { Console.WriteLine("Load item error: {0}", ex); } }