void OnWeaponFired(BaseProjectile projectile, BasePlayer player, ItemModProjectile mod, ProtoBuf.ProjectileShoot projectiles) { var ammo = projectile.primaryMagazine.ammoType; #if DEBUG PrintToChat(player, "{0} was fired", ammo.shortname); #endif if (forbidden(player, ammo.shortname)) { PrintToChat(player, "you are not allowed to fire {0}!", ammo.shortname); projectile.UnloadAmmo(player.GetActiveItem(), player); ItemDefinition def = ItemManager.FindItemDefinition(ammo.shortname); Item refund = null; if (def != null) { refund = ItemManager.Create(def); } if (refund != null) { player.GiveItem(refund); } } }
void OnItemAddedToContainer(ItemContainer container, Item item) { if (Containers.Exists(c => c.inventory == container)) { SkinContainer _skinContainer = Containers.Find(c => c.inventory == container); if (_skinContainer.status == ContainerStatus.Ready) { BasePlayer owner = _skinContainer.storage.inventory.playerOwner; if (!SkinsList.ContainsKey(item.info.shortname)) { LoadSkinsList(item.info); } if (!SkinsList.ContainsKey(item.info.shortname) || SkinsList[item.info.shortname].Count <= 1) { item.MoveToContainer(owner.inventory.containerMain); return; } _skinContainer.status = ContainerStatus.FilledIn; BaseProjectile ammo = item.GetHeldEntity() as BaseProjectile; if (ammo != null) { ammo.UnloadAmmo(item, owner); ammo.primaryMagazine.contents = 0; } if (item.contents != null) { List <Item> mods = new List <global::Item>(); foreach (Item mod in item.contents.itemList) { if (mod != null) { mods.Add(mod); } } foreach (Item mod in mods) { MoveItemBack(mod, owner); } } item.RemoveFromContainer(); NextTick(() => { _skinContainer.storage.inventory.capacity = SkinsList[item.info.shortname].Count; foreach (int skinId in SkinsList[item.info.shortname]) { Item i = ItemManager.CreateByItemID(item.info.itemid, item.amount, (ulong)skinId); i.condition = item.condition; NextTick(() => { BaseProjectile a = i.GetHeldEntity() as BaseProjectile; if (a != null) { a.primaryMagazine.contents = 0; } _skinContainer.ItemsList.Add(i); i.MoveToContainer(_skinContainer.storage.inventory, -1, false); NextTick(() => { _skinContainer.status = ContainerStatus.Filled; }); }); } }); } } }