public void PersonalShopCheck(ChannelClient client, Packet packet) { var bagEntityId = packet.GetLong(); var licenseEntityId = packet.GetLong(); var creature = client.GetCreatureSafe(packet.Id); var bag = creature.Inventory.GetItemSafe(bagEntityId); var license = creature.Inventory.GetItemSafe(licenseEntityId); // Check feature if (!AuraData.FeaturesDb.IsEnabled("PersonalShop")) { Send.MsgBox(creature, Localization.Get("This feature has not been enabled yet.")); Send.PersonalShopCheckR(creature, false, 0, 0); return; } // Check bag if (!bag.HasTag("/personal_shop_available/")) { Log.Warning("PersonalShopCheck: User '{0}' tried to use invalid item bag.", client.Account.Id); Send.MsgBox(creature, Localization.Get("Invalid item bag.")); Send.PersonalShopCheckR(creature, false, 0, 0); return; } // Check license if (!license.HasTag("/personalshoplicense/")) { Log.Warning("PersonalShopCheck: User '{0}' tried to use invalid license.", client.Account.Id); Send.MsgBox(creature, Localization.Get("Invalid license.")); Send.PersonalShopCheckR(creature, false, 0, 0); return; } if (license.MetaData1.Has("EVALUE") && !ChannelServer.Instance.Conf.World.ReusingPersonalShopLicenses) { // Unofficial Send.MsgBox(creature, Localization.Get("You can't re-use a license that has revenue on it.")); Send.PersonalShopCheckR(creature, false, 0, 0); return; } // Check location if (!PersonalShop.CanPlace(creature, license.Data.PersonalShopLicense)) { Send.MsgBox(creature, Localization.Get("Personal Shops are allowed only in designated areas.")); Send.PersonalShopCheckR(creature, false, 0, 0); return; } // Create shop var shop = new PersonalShop(creature, bag, license); // Response Send.PersonalShopCheckR(creature, true, bagEntityId, licenseEntityId); }