Пример #1
0
        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);
                }
            }
        }
Пример #2
0
        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; });
                            });
                        }
                    });
                }
            }
        }