当前位置: 首页>>代码示例>>C#>>正文


C# BuildingBlock.HasSlot方法代码示例

本文整理汇总了C#中BuildingBlock.HasSlot方法的典型用法代码示例。如果您正苦于以下问题:C# BuildingBlock.HasSlot方法的具体用法?C# BuildingBlock.HasSlot怎么用?C# BuildingBlock.HasSlot使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在BuildingBlock的用法示例。


在下文中一共展示了BuildingBlock.HasSlot方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: CopyBuilding

        object CopyBuilding(Vector3 playerPos, float playerRot, BuildingBlock initialBlock, out List<object> rawStructure, out List<object> rawDeployables, out List<object> rawSpawnables)
        {
            rawStructure = new List<object>();
            rawDeployables = new List<object>();
            rawSpawnables = new List<object>();
            List<object> houseList = new List<object>();
            List<Vector3> checkFrom = new List<Vector3>();
            BuildingBlock fbuildingblock;
            Deployable fdeployable;
            Spawnable fspawnable;

            houseList.Add(initialBlock);
            checkFrom.Add(initialBlock.transform.position);

            Dictionary<string, object> housedata;
            if (!GetStructureClean(initialBlock, playerRot, initialBlock, out housedata))
            {
                return "Couldn\'t get a clean initial block";
            }
            if (initialBlock.HasSlot(BaseEntity.Slot.Lock)) // initial block could be a door.
                TryCopyLock(initialBlock, housedata);
            rawStructure.Add(housedata);

            int current = 0;
            while (true)
            {
                current++;
                if (current > checkFrom.Count)
                    break;
                var hits = Physics.OverlapSphere(checkFrom[current - 1], 3f, layerMasks);
                foreach (var hit in hits)
                {
                    if (hit.isTrigger)
                        continue;
                    if (hit.GetComponentInParent<BuildingBlock>() != null)
                    {
                        fbuildingblock = hit.GetComponentInParent<BuildingBlock>();
                        if (!(houseList.Contains(fbuildingblock)))
                        {
                            houseList.Add(fbuildingblock);
                            checkFrom.Add(fbuildingblock.transform.position);
                            if (GetStructureClean(initialBlock, playerRot, fbuildingblock, out housedata))
                            {

                                if (fbuildingblock.HasSlot(BaseEntity.Slot.Lock))
                                    TryCopyLock(fbuildingblock, housedata);
                                rawStructure.Add(housedata);
                            }
                        }
                    }
                    else if (hit.GetComponentInParent<Deployable>() != null)
                    {
                        fdeployable = hit.GetComponentInParent<Deployable>();
                        if (!(houseList.Contains(fdeployable)))
                        {
                            houseList.Add(fdeployable);
                            checkFrom.Add(fdeployable.transform.position);
                            if (GetDeployableClean(initialBlock, playerRot, fdeployable, out housedata))
                            {
                                if (fdeployable.GetComponent<StorageContainer>())
                                {
                                    var box = fdeployable.GetComponent<StorageContainer>();
                                    var itemlist = new List<object>();
                                    foreach (Item item in box.inventory.itemList)
                                    {
                                        var newitem = new Dictionary<string, object>();
                                        newitem.Add("blueprint", item.isBlueprint.ToString());
                                        newitem.Add("id", item.info.itemid.ToString());
                                        newitem.Add("amount", item.amount.ToString());
                                        itemlist.Add(newitem);
                                    }
                                    housedata.Add("items", itemlist);

                                    if (box.HasSlot(BaseEntity.Slot.Lock))
                                        TryCopyLock(box, housedata);
                                }
                                else if (fdeployable.GetComponent<Signage>())
                                {
                                    var signage = fdeployable.GetComponent<Signage>();
                                    var sign = new Dictionary<string, object>();
                                    if (signage.textureID > 0 && FileStorage.server.Exists(signage.textureID, FileStorage.Type.png))
                                        sign.Add("texture", Convert.ToBase64String(FileStorage.server.Get(signage.textureID, FileStorage.Type.png)));
                                    sign.Add("locked", signage.IsLocked());
                                    housedata.Add("sign", sign);
                                }
                                rawDeployables.Add(housedata);
                            }
                        }
                    }
                    else if (hit.GetComponentInParent<Spawnable>() != null)
                    {
                        fspawnable = hit.GetComponentInParent<Spawnable>();
                        if (!(houseList.Contains(fspawnable)))
                        {
                            houseList.Add(fspawnable);
                            checkFrom.Add(fspawnable.transform.position);
                            if (GetSpawnableClean(initialBlock, playerRot, fspawnable, out housedata))
                            {
                                rawSpawnables.Add(housedata);
                            }
//.........这里部分代码省略.........
开发者ID:vividentity,项目名称:Oxide2Plugins,代码行数:101,代码来源:CopyPaste.cs

示例2: GetBuildingblockOwner

        private void GetBuildingblockOwner(BasePlayer player, BuildingBlock block)
        {
            if(block.GetComponent<Door>() != null)
            {
                if(block.HasSlot(BaseEntity.Slot.Lock))
                {
                    BaseEntity slotent = block.GetSlot(BaseEntity.Slot.Lock);
                    if(slotent != null)
                    {
                        CodeLock codelock = slotent.GetComponent<CodeLock>();
                        if(codelock != null)
                        {
                            List<ulong> whitelisted = codelockwhitelist.GetValue(codelock) as List<ulong>;
                            string codevalue = codenum.GetValue(codelock) as string;
                            SendReply(player, string.Format(boxCode, codevalue));
                            SendReply(player, codeLockList);
                            if (whitelisted.Count == 0)
                            {
                                SendReply(player, noCodeAccess);
                                return;
                            }
                            foreach (ulong userid in whitelisted)
                            {
                                SendBasePlayerFind(player, userid);
                            }
                        }
                    }
                }
            }

            object findownerblock = FindOwnerBlock(block);
            if (findownerblock is bool)
            {
                SendReply(player, noBlockOwnerfound);
                return;
            }
            ulong ownerid = (UInt64)findownerblock;
            SendBasePlayerFind(player, ownerid);
        }
开发者ID:aewing,项目名称:Oxide2Plugins,代码行数:39,代码来源:Prod.cs


注:本文中的BuildingBlock.HasSlot方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。