/// <summary>
        /// Constructor. 
        /// </summary>
        /// <param name="groupId">ID of OPC DA group.</param>
        /// <param name="transactionId">ID of completed transaction.</param>
        /// <param name="quality">Master quality.</param>
        /// <param name="error">Master error code.</param>
        /// <param name="values">OPC DA item values.</param>
		public DataChangeEventArgs(int groupId, int transactionId, int quality, int error, ItemValue[] values) : 
			base(groupId, transactionId)
		{
			Quality = quality;
			Error = error;
			Values = values;
		}
Exemplo n.º 2
0
        public BinderItem(ItemValue itemValue)
        {
            bindItemData(DataItem.getItemDataByItemValue(itemValue));

            itemStack = createItemStack(DataItem.getItemDataByItemValue(itemValue), itemValue);
            bindItemValue(itemValue);
        }
Exemplo n.º 3
0
        public BinderItem(DataItem itemData)
        {
            bindItemData(itemData);

            itemValue = new ItemValue();
            populateItemValue(itemValue, itemData);
            itemStack = createItemStack(itemData, itemValue);
        }
Exemplo n.º 4
0
 public void Write(WriteParameter[] writeParameters)
 {
     var itemValues = new ItemValue[writeParameters.Length];
     for (var i = 0; i < writeParameters.Length; i++)
     {
         var writeParameter = writeParameters[i];
         var item = new Item {ItemName = writeParameter.Address};
         itemValues[i] = new ItemValue(item) {Value = writeParameter.Value};
     }
     _server.Write(itemValues);
 }
Exemplo n.º 5
0
 private void ProcessParts(ItemValue[] _parts, InvItem _item, int _playerId)
 {
     InvItem[] itemParts = new InvItem[_parts.Length];
     for (int i = 0; i < _parts.Length; i++) {
         InvItem partItem = CreateInvItem (_parts [i], 1, _playerId);
         if (partItem != null && _parts [i].Parts != null) {
             ProcessParts (_parts [i].Parts, partItem, _playerId);
         }
         itemParts [i] = partItem;
     }
     _item.parts = itemParts;
 }
Exemplo n.º 6
0
        public ProcessesWindow()
        {
            InitializeComponent();

            lbProcesses.DisplayMember = "Text";
            lbProcesses.ValueMember = "Value";

            foreach (Process process in Process.GetProcesses())
            {
                if (!String.IsNullOrEmpty(process.MainWindowTitle))
                {
                    ItemValue value = new ItemValue();

                    value.Text = process.MainWindowTitle;
                    value.Value = process;

                    lbProcesses.Items.Add(value);
                }
            }
        }
Exemplo n.º 7
0
 public static void Send(ClientInfo _cInfo)
 {
     if (StartingItems.ItemList.Count > 0)
     {
         World         world     = GameManager.Instance.World;
         List <string> _itemList = StartingItems.ItemList.Keys.ToList();
         for (int i = 0; i < _itemList.Count; i++)
         {
             string _item = _itemList[i];
             int[]  _itemData;
             StartingItems.ItemList.TryGetValue(_item, out _itemData);
             ItemValue _itemValue = new ItemValue(ItemClass.GetItem(_item, false).type, false);
             if (_itemValue.HasQuality && _itemData[1] > 0)
             {
                 _itemValue.Quality = _itemData[1];
             }
             EntityItem entityItem = new EntityItem();
             entityItem = (EntityItem)EntityFactory.CreateEntity(new EntityCreationData
             {
                 entityClass     = EntityClass.FromString("item"),
                 id              = EntityFactory.nextEntityID++,
                 itemStack       = new ItemStack(_itemValue, _itemData[0]),
                 pos             = world.Players.dict[_cInfo.entityId].position,
                 rot             = new Vector3(20f, 0f, 20f),
                 lifetime        = 60f,
                 belongsPlayerId = _cInfo.entityId
             });
             world.SpawnEntityInWorld(entityItem);
             _cInfo.SendPackage(NetPackageManager.GetPackage <NetPackageEntityCollect>().Setup(entityItem.entityId, _cInfo.entityId));
             world.RemoveEntity(entityItem.entityId, EnumRemoveEntityReason.Killed);
             SdtdConsole.Instance.Output(string.Format("Spawned starting item {0} for {1}.", _itemValue.ItemClass.GetLocalizedItemName() ?? _itemValue.ItemClass.Name, _cInfo.playerName));
             Log.Out(string.Format("[SERVERTOOLS] Spawned starting item {0} for {1}", _itemValue.ItemClass.GetLocalizedItemName() ?? _itemValue.ItemClass.Name, _cInfo.playerName));
         }
         string _phrase806;
         if (!Phrases.Dict.TryGetValue(806, out _phrase806))
         {
             _phrase806 = " you have received the starting items. Check your inventory. If full, check the ground.";
         }
         ChatHook.ChatMessage(_cInfo, ChatHook.Player_Name_Color + _cInfo.playerName + LoadConfig.Chat_Response_Color + _phrase806 + "[-]", _cInfo.entityId, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
     }
 }
        public static void firstClaim(ClientInfo _cInfo)
        {
            string    _sql    = string.Format("SELECT firstClaim FROM Players WHERE steamid = '{0}'", _cInfo.playerId);
            DataTable _result = SQL.TQuery(_sql);
            bool      _firstClaim;

            bool.TryParse(_result.Rows[0].ItemArray.GetValue(0).ToString(), out _firstClaim);
            _result.Dispose();
            if (!_firstClaim)
            {
                World     world      = GameManager.Instance.World;
                string    claimBlock = "keystoneBlock";
                ItemValue itemValue;
                itemValue = new ItemValue(ItemClass.GetItem(claimBlock).type, 1, 1, true);

                if (Equals(itemValue, ItemValue.None))
                {
                    SdtdConsole.Instance.Output(string.Format("Unable to find block {0} for /claim command", claimBlock));
                }
                var entityItem = (EntityItem)EntityFactory.CreateEntity(new EntityCreationData
                {
                    entityClass     = EntityClass.FromString("item"),
                    id              = EntityFactory.nextEntityID++,
                    itemStack       = new ItemStack(itemValue, 1),
                    pos             = world.Players.dict[_cInfo.entityId].position,
                    rot             = new Vector3(20f, 0f, 20f),
                    lifetime        = 60f,
                    belongsPlayerId = _cInfo.entityId
                });
                world.SpawnEntityInWorld(entityItem);
                _cInfo.SendPackage(new NetPackageEntityCollect(entityItem.entityId, _cInfo.entityId));
                world.RemoveEntity(entityItem.entityId, EnumRemoveEntityReason.Killed);
                ChatHook.ChatMessage(_cInfo, ChatHook.Player_Name_Color + _cInfo.playerName + ", claim block has been added to your inventory or if inventory is full, it dropped at your feet.[-]", _cInfo.entityId, LoadConfig.Server_Response_Name, EChatType.Global, null);
                _sql = string.Format("UPDATE Players SET firstClaim = 'true' WHERE steamid = '{0}'", _cInfo.playerId);
                SQL.FastQuery(_sql);
            }
            else
            {
                ChatHook.ChatMessage(_cInfo, ChatHook.Player_Name_Color + _cInfo.playerName + ", you have already received your first claim block. Contact an administrator if you require help.[-]", _cInfo.entityId, LoadConfig.Server_Response_Name, EChatType.Global, null);
            }
        }
    // Loops around an item to reach in the triggered effects, to see if it can satisfy food and water requirements.
    public ItemValue IsConsumable(ItemValue item, String strSearchType)
    {
        DisplayLog(" IsConsumable() " + item.ItemClass.Name);
        DisplayLog(" Checking for : " + strSearchType);
        foreach (var Action in item.ItemClass.Actions)
        {
            if (Action is ItemActionEat)
            {
                DisplayLog(" Action Is Eat");
                foreach (var EffectGroup in item.ItemClass.Effects.EffectGroups)
                {
                    foreach (var TriggeredEffects in EffectGroup.TriggeredEffects)
                    {
                        MinEventActionModifyCVar effect = TriggeredEffects as MinEventActionModifyCVar;
                        if (effect == null)
                        {
                            continue;
                        }

                        DisplayLog(" Checking Effects");
                        if (strSearchType == "Food")
                        {
                            if ((effect.cvarName == "$foodAmountAdd") || (effect.cvarName == "foodHealthAmount"))
                            {
                                return(item);
                            }
                        }
                        else if (strSearchType == "Water")
                        {
                            if ((effect.cvarName == "$waterAmountAdd") || (effect.cvarName == "waterHealthAmount"))
                            {
                                return(item);
                            }
                        }
                    }
                }
            }
        }

        return(null);
    }
Exemplo n.º 10
0
        public virtual List <IBinderValue> GetNewListWithAvatar(int count)
        {
            if (count <= 0)
            {
                count = 10;
            }
            List <User> list = getNewListWithAvatar(count);

            List <IBinderValue> results = new List <IBinderValue>();

            foreach (User user in list)
            {
                IBinderValue vo = new ItemValue();
                vo.Title  = user.Name;
                vo.PicUrl = user.PicSmall;
                vo.Link   = Link.ToUser(user.Url);
                results.Add(vo);
            }

            return(results);
        }
Exemplo n.º 11
0
        private static List <IBinderValue> populatePosts(IList list)
        {
            List <IBinderValue> results = new List <IBinderValue>();

            foreach (ContentPost post in list)
            {
                IBinderValue vo = new ItemValue();

                vo.Title       = post.Title;
                vo.Created     = post.Created;
                vo.CreatorName = post.Creator.Name;
                vo.Link        = alink.ToAppData(post);
                vo.Content     = post.Content;
                vo.Replies     = post.Replies;
                vo.Category    = post.PageSection.Title;

                results.Add(vo);
            }

            return(results);
        }
Exemplo n.º 12
0
        /// <summary>
        /// Writes a value to the device.
        /// </summary>
        IdentifiedResult ICacheServer.Write(string itemID, string locale, ItemValue value)
        {
            if (m_disposed)
            {
                throw new ObjectDisposedException("Opc.Da.Cache");
            }

            if (itemID == null || itemID.Length == 0)
            {
                return(new IdentifiedResult(itemID, ResultID.Da.E_INVALID_ITEM_NAME));
            }

            CacheItem item = LockAndLookupItem(itemID);

            if (item == null)
            {
                return(new IdentifiedResult(itemID, ResultID.Da.E_UNKNOWN_ITEM_NAME));
            }

            return(item.Write(locale, value, m_supportsCOM));
        }
Exemplo n.º 13
0
        private InvItem CreateInvItem(ItemValue _itemValue, int _count, int _playerId)
        {
            if (_count > 0 && _itemValue != null && !_itemValue.Equals (ItemValue.None)) {
                int maxAllowed = ItemClass.list [_itemValue.type].Stacknumber.Value;
                string name = ItemClass.list [_itemValue.type].GetItemName ();

                if (_count > maxAllowed) {
                    Log.Out ("Player with ID " + _playerId + " has stack for \"" + name + "\" greater than allowed (" + _count + " > " + maxAllowed + ")");
                }

                InvItem item = null;
                if (_itemValue.HasQuality) {
                    item = new InvItem (name, _count, _itemValue.Quality);
                } else {
                    item = new InvItem (name, _count);
                }
                return item;
            } else {
                return null;
            }
        }
Exemplo n.º 14
0
 public void WriteString(string name, string setValue, out bool err)
 {
     try
     {
         Item        item  = this._opcItemsWriteResult[this._itemAddrWrite[name]];
         ItemValue[] array = new ItemValue[]
         {
             new ItemValue(item)
         };
         array[0].Value = setValue;
         this._groupWrite.Write(array);
     }
     catch (System.Collections.Generic.KeyNotFoundException var_2_44)
     {
         err = true;
         this._errNameItem = name;
         this.ErrCodeParse(ErrCode.nameNotFound, "WriteString");
         return;
     }
     err = false;
 }
Exemplo n.º 15
0
    /**
     *  Returns the item stack for upgrading a block, as well as the target block it should upgrade to.
     */

    public static ItemStack GetBlockUpgradeItems(Block block, out Block upgradeResult)
    {
        upgradeResult = null;
        // Check block has an upgrade path.
        if (block.UpgradeBlock.Equals(BlockValue.Air))
        {
            return(null);
        }
        if (!block.Properties.Classes.ContainsKey("UpgradeBlock"))
        {
            return(null);
        }
        DynamicProperties upgradeBlockClass = block.Properties.Classes["UpgradeBlock"];

        // Check that all necessary properties are defined.
        if (!upgradeBlockClass.Values.ContainsKey("ToBlock"))
        {
            return(null);
        }
        if (!upgradeBlockClass.Values.ContainsKey("Item"))
        {
            return(null);
        }
        if (!upgradeBlockClass.Values.ContainsKey("ItemCount"))
        {
            return(null);
        }

        // Build block upgrade data
        ItemValue upgradeItem = ItemClass.GetItem(upgradeBlockClass.Values["Item"]);
        int       upgradeItemCount;

        if (!int.TryParse(upgradeBlockClass.Values["ItemCount"], out upgradeItemCount))
        {
            return(null);
        }

        upgradeResult = Block.GetBlockByName(upgradeBlockClass.Values["ToBlock"]);
        return(new ItemStack(upgradeItem, upgradeItemCount));
    }
Exemplo n.º 16
0
        public static bool Prefix(ItemActionAttack __instance, ItemActionAttack.AttackHitInfo _attackDetails, ref float _weaponCondition, int _attackerEntityId)
        {
            // Check if this feature is enabled.
            if (!Configuration.CheckFeatureStatus(AdvFeatureClass, Feature))
            {
                return(true);
            }

            EntityAlive entityAlive = GameManager.Instance.World.GetEntity(_attackerEntityId) as EntityAlive;

            if (entityAlive)
            {
                ItemValue itemValue = entityAlive.inventory.holdingItemItemValue;
                if (itemValue.HasQuality && entityAlive is EntityPlayerLocal)  // this checks if it has any passive effects, like degradation
                {
                    String strDisplay = "";
                    if (_attackDetails.WeaponTypeTag.Equals(ItemActionAttack.MeleeTag))
                    {
                        strDisplay += " Melee ";
                        float percent = itemValue.PercentUsesLeft;
                        if (percent > 0.8f)
                        {
                            _weaponCondition = 1f;
                        }
                        else if (percent > 0) // Perfecent left will be 0 on non-degradation things
                        {
                            _weaponCondition = percent;
                        }
                    }
                    else if (_attackDetails.WeaponTypeTag.Equals(ItemActionAttack.RangedTag))
                    {
                        strDisplay += " Ranged ";
                    }

                    strDisplay += itemValue.ItemClass.GetItemName() + " Percent Left: " + itemValue.PercentUsesLeft + " Weapon Condition: " + _weaponCondition;
                    AdvLogging.DisplayLog(AdvFeatureClass, strDisplay);
                }
            }
            return(true);
        }
Exemplo n.º 17
0
 public static void SpawnItems(ClientInfo _cInfo)
 {
     try
     {
         World         world     = GameManager.Instance.World;
         List <string> _itemList = StartingItems.ItemList.Keys.ToList();
         for (int i = 0; i < _itemList.Count; i++)
         {
             string _item = _itemList[i];
             int[]  _itemData;
             StartingItems.ItemList.TryGetValue(_item, out _itemData);
             ItemValue _itemValue = new ItemValue(ItemClass.GetItem(_item, false).type, false);
             if (_itemValue.HasQuality && _itemData[1] > 0)
             {
                 _itemValue.Quality = _itemData[1];
             }
             EntityItem entityItem = new EntityItem();
             entityItem = (EntityItem)EntityFactory.CreateEntity(new EntityCreationData
             {
                 entityClass     = EntityClass.FromString("item"),
                 id              = EntityFactory.nextEntityID++,
                 itemStack       = new ItemStack(_itemValue, _itemData[0]),
                 pos             = world.Players.dict[_cInfo.entityId].position,
                 rot             = new Vector3(20f, 0f, 20f),
                 lifetime        = 60f,
                 belongsPlayerId = _cInfo.entityId
             });
             world.SpawnEntityInWorld(entityItem);
             _cInfo.SendPackage(NetPackageManager.GetPackage <NetPackageEntityCollect>().Setup(entityItem.entityId, _cInfo.entityId));
             world.RemoveEntity(entityItem.entityId, EnumRemoveEntityReason.Killed);
             Log.Out(string.Format("[SERVERTOOLS] Spawned starting item {0} for {1} with steam id {2}", _itemValue.ItemClass.GetLocalizedItemName() ?? _itemValue.ItemClass.Name, _cInfo.playerName, _cInfo.playerId));
             PersistentContainer.Instance.Players[_cInfo.playerId].StartingItems = true;
             PersistentContainer.Instance.Save();
         }
     }
     catch (Exception e)
     {
         Log.Out(string.Format("[SERVERTOOLS] Error in StartingItems.SpawnItems: {0}.", e.Message));
     }
 }
Exemplo n.º 18
0
        private static void Give(ClientInfo _cInfo, ItemValue _itemValue, int _count)
        {
            EntityPlayer _player = GameManager.Instance.World.Players.dict[_cInfo.entityId];

            if (_player.IsSpawned())
            {
                World world      = GameManager.Instance.World;
                var   entityItem = (EntityItem)EntityFactory.CreateEntity(new EntityCreationData
                {
                    entityClass     = EntityClass.FromString("item"),
                    id              = EntityFactory.nextEntityID++,
                    itemStack       = new ItemStack(_itemValue, _count),
                    pos             = world.Players.dict[_cInfo.entityId].position,
                    rot             = new Vector3(20f, 0f, 20f),
                    lifetime        = 60f,
                    belongsPlayerId = _cInfo.entityId
                });
                world.SpawnEntityInWorld(entityItem);
                _cInfo.SendPackage(new NetPackageEntityCollect(entityItem.entityId, _cInfo.entityId));
                world.RemoveEntity(entityItem.entityId, EnumRemoveEntityReason.Killed);
            }
        }
Exemplo n.º 19
0
        public static void FirstClaim(ClientInfo _cInfo)
        {
            bool _firstClaim = PersistentContainer.Instance.Players[_cInfo.playerId].FirstClaimBlock;

            if (!_firstClaim)
            {
                World     world      = GameManager.Instance.World;
                string    claimBlock = "keystoneBlock";
                ItemValue itemValue;
                itemValue = new ItemValue(ItemClass.GetItem(claimBlock).type, 1, 1, true);

                if (Equals(itemValue, ItemValue.None))
                {
                    SdtdConsole.Instance.Output(string.Format("Unable to find block {0} for /{1} command", claimBlock, Command32));
                }
                var entityItem = (EntityItem)EntityFactory.CreateEntity(new EntityCreationData
                {
                    entityClass     = EntityClass.FromString("item"),
                    id              = EntityFactory.nextEntityID++,
                    itemStack       = new ItemStack(itemValue, 1),
                    pos             = world.Players.dict[_cInfo.entityId].position,
                    rot             = new Vector3(20f, 0f, 20f),
                    lifetime        = 60f,
                    belongsPlayerId = _cInfo.entityId
                });
                world.SpawnEntityInWorld(entityItem);
                _cInfo.SendPackage(NetPackageManager.GetPackage <NetPackageEntityCollect>().Setup(entityItem.entityId, _cInfo.entityId));
                world.RemoveEntity(entityItem.entityId, EnumRemoveEntityReason.Despawned);
                PersistentContainer.Instance.Players[_cInfo.playerId].FirstClaimBlock = true;
                PersistentContainer.DataChange = true;
                Phrases.Dict.TryGetValue(701, out string _phrase701);
                ChatHook.ChatMessage(_cInfo, Config.Chat_Response_Color + _phrase701 + "[-]", -1, Config.Server_Response_Name, EChatType.Whisper, null);
            }
            else
            {
                Phrases.Dict.TryGetValue(702, out string _phrase702);
                ChatHook.ChatMessage(_cInfo, Config.Chat_Response_Color + _phrase702 + "[-]", -1, Config.Server_Response_Name, EChatType.Whisper, null);
            }
        }
Exemplo n.º 20
0
        public static void ShopPurchase(ClientInfo _cInfo, string _itemName, int _count, int _quality, int _price, string _playerName, int currentCoins, Player p)
        {
            World     world      = GameManager.Instance.World;
            ItemValue _itemValue = ItemClass.GetItem(_itemName, true);

            if (_itemValue.type != ItemValue.None.type)
            {
                ItemValue itemValue  = new ItemValue(ItemClass.GetItem(_itemName).type, _quality, _quality, true);
                var       entityItem = (EntityItem)EntityFactory.CreateEntity(new EntityCreationData
                {
                    entityClass     = EntityClass.FromString("item"),
                    id              = EntityFactory.nextEntityID++,
                    itemStack       = new ItemStack(itemValue, _count),
                    pos             = world.Players.dict[_cInfo.entityId].position,
                    rot             = new Vector3(20f, 0f, 20f),
                    lifetime        = 60f,
                    belongsPlayerId = _cInfo.entityId
                });
                world.SpawnEntityInWorld(entityItem);
                _cInfo.SendPackage(new NetPackageEntityCollect(entityItem.entityId, _cInfo.entityId));
                world.RemoveEntity(entityItem.entityId, EnumRemoveEntityReason.Killed);
                SdtdConsole.Instance.Output(string.Format("Sold {0} to {1}.", itemValue.ItemClass.localizedName ?? itemValue.ItemClass.Name, _cInfo.playerName));
                _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("{0}{1} {2} was purchased through the shop. If your bag is full, check the ground.[-]", Config.Chat_Response_Color, _count, itemValue.ItemClass.localizedName ?? itemValue.ItemClass.Name), Config.Server_Response_Name, false, "ServerTools", false));
                int newCoins = p.PlayerSpentCoins - _price;
                PersistentContainer.Instance.Players[_cInfo.playerId, true].PlayerSpentCoins = newCoins;
                PersistentContainer.Instance.Save();
            }
            else
            {
                string _phrase623;
                if (!Phrases.Dict.TryGetValue(623, out _phrase623))
                {
                    _phrase623 = "{PlayerName} there was an error in the shop list. Unable to buy this item. Please alert an administrator.";
                    Log.Out(string.Format("Player {0} tried to buy item {1} from the shop. The item name in the Market.xml does not match an existing item. Check your Item.xml for the correct item name. It is case sensitive.", _cInfo.playerName, _itemName));
                }
                _phrase623 = _phrase623.Replace("{PlayerName}", _playerName);
                _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("{0}{1}[-]", Config.Chat_Response_Color, _phrase623), Config.Server_Response_Name, false, "ServerTools", false));
            }
        }
Exemplo n.º 21
0
 /// <summary>
 /// 写入INT16型字数组数据
 /// </summary>
 /// <param name="data">字型数组数据</param>
 /// <param name="itemNum">项</param>
 /// <returns></returns>
 public bool Writenew(Int16[] data, int itemNum)
 {
     try
     {
         ItemValue[] values = new ItemValue[1];
         values[0]       = new ItemValue((Opc.ItemIdentifier)subscription.Items[itemNum]);
         values[0].Value = data;
         Opc.IdentifiedResult[] idr = subscription.Write(values);
         if (idr != null && idr.Length > 0)
         {
             return(true);
         }
         else
         {
             return(false);
         }
     }
     catch (Exception ex)
     {
         throw new Exception("opc函数Writenew异常:" + ex.ToString());
     }
 }
Exemplo n.º 22
0
        /// <summary>
        /// Unmarshals and deallocates a OPCITEMSTATE structures.
        /// </summary>
        internal static ItemValue[] GetItemValues(ref IntPtr pInput, int count, bool deallocate)
        {
            ItemValue[] output = null;

            if (pInput != IntPtr.Zero && count > 0)
            {
                output = new ItemValue[count];

                IntPtr pos = pInput;

                for (int ii = 0; ii < count; ii++)
                {
                    OpcRcw.Da.OPCITEMSTATE result = (OpcRcw.Da.OPCITEMSTATE)Marshal.PtrToStructure(pos, typeof(OpcRcw.Da.OPCITEMSTATE));

                    output[ii] = new ItemValue();
                    output[ii].ClientHandle       = result.hClient;
                    output[ii].Value              = result.vDataValue;
                    output[ii].Quality            = new Opc.Da.Quality(result.wQuality);
                    output[ii].QualitySpecified   = true;
                    output[ii].Timestamp          = OpcCom.Interop.GetFILETIME(Convert(result.ftTimeStamp));
                    output[ii].TimestampSpecified = output[ii].Timestamp != DateTime.MinValue;

                    if (deallocate)
                    {
                        Marshal.DestroyStructure(pos, typeof(OpcRcw.Da.OPCITEMSTATE));
                    }

                    pos = (IntPtr)(pos.ToInt64() + Marshal.SizeOf(typeof(OpcRcw.Da.OPCITEMSTATE)));
                }

                if (deallocate)
                {
                    Marshal.FreeCoTaskMem(pInput);
                    pInput = IntPtr.Zero;
                }
            }

            return(output);
        }
Exemplo n.º 23
0
        protected override async Task <IOnDisk> LoadProjectItem(ItemValue item)
        {
            var itemPath    = Path.Combine(GetRootDirectory(), item.Filename);
            var projectBase = await ProjectBase.OpenProjectFile(itemPath, CurrentPluginManager);

            if (projectBase is Project project)
            {
                project.ParentSolution = this;
                RegisterProjectEventHandlers(project);
                return(project);
            }
            else if (projectBase is UnsupportedProjectBase unsupportedBase)
            {
                var unsupportedProject = new UnsupportedProject(unsupportedBase);
                unsupportedProject.ParentSolution = this;
                return(unsupportedProject);
            }
            else
            {
                throw new Exception("Got an unknown kind of unsupported project");
            }
        }
Exemplo n.º 24
0
        public static EntityPlayerLocal Adjust(EntityPlayerLocal _entityPlayerLocal, string _itemName, int _itemCount)
        {
            Log.Out("[SERVERTOOLS] Adjusting local player bag");
            Log.Out(string.Format("[ST] _itemName = {0}, _itemCount = {1}", _itemName, _itemCount));
            ItemValue _itemValue = new ItemValue(ItemClass.GetItem(_itemName).type, 1, 1, false, null, 1);

            if (_itemValue != null)
            {
                Log.Out("[SERVERTOOLS] _itemValue not null");
                int         _count   = _itemCount;
                ItemStack[] bagSlots = _entityPlayerLocal.bag.GetSlots();
                for (int i = 0; i < bagSlots.Length; i++)
                {
                    Log.Out(string.Format("[ST] bagSlots[i].itemValue.GetItemOrBlockId() = {0}, _itemValue.GetItemOrBlockId() = {1}", bagSlots[i].itemValue.GetItemOrBlockId(), _itemValue.GetItemOrBlockId()));
                    if (_count != 0 && !bagSlots[i].IsEmpty() && bagSlots[i].itemValue.GetItemOrBlockId() == _itemValue.GetItemOrBlockId())
                    {
                        if (bagSlots[i].count <= _count)
                        {
                            int _newCount = _count - bagSlots[i].count;
                            Log.Out(string.Format("[ST] _count = {0}, bagSlots[i].count = {1}, _newCount = {2}", _count, bagSlots[i].count, _newCount));
                            _count      = _newCount;
                            bagSlots[i] = ItemStack.Empty.Clone();
                        }
                        else
                        {
                            int _newCount = _count - bagSlots[i].count;
                            Log.Out(string.Format("[ST] _count = {0}, bagSlots[i].count = {1}, _newCount = {2}", _count, bagSlots[i].count, _newCount));
                            _count = 0;
                            ItemStack _stack = new ItemStack(bagSlots[i].itemValue, _newCount);
                            bagSlots[i] = _stack.Clone();
                        }
                    }
                }
                _entityPlayerLocal.bag.SetSlots(bagSlots);
                Log.Out("[SERVERTOOLS] Completed adjustment");
            }
            return(_entityPlayerLocal);
        }
Exemplo n.º 25
0
 private static void PrintEquipment(Equipment _equipment, int _entityId, string _location)
 {
     for (int i = 0; i < _equipment.GetSlotCount(); i++)
     {
         ItemValue _item = _equipment.GetSlotItem(i);
         if (_item != null && !_item.IsEmpty())
         {
             if (_item.HasQuality && _item.Quality > 0)
             {
                 using (StreamWriter sw = new StreamWriter(filepath, true, Encoding.UTF8))
                 {
                     sw.WriteLine(string.Format("    Slot {0}: {1} - quality: {2}", _item.ItemClass.EquipSlot, _item.ItemClass.GetItemName(), _item.Quality));
                     sw.Flush();
                     sw.Close();
                     sw.Dispose();
                 }
             }
             else
             {
                 using (StreamWriter sw = new StreamWriter(filepath, true, Encoding.UTF8))
                 {
                     sw.WriteLine(string.Format("    Slot {0}: {1}", _item.ItemClass.EquipSlot, _item.ItemClass.GetItemName()));
                     sw.Flush();
                     sw.Close();
                     sw.Dispose();
                 }
             }
             if (_item.Modifications != null && _item.Modifications.Length > 0)
             {
                 Mods(_item.Modifications, 1, null);
             }
             if (_item.CosmeticMods != null && _item.CosmeticMods.Length > 0)
             {
                 CosmeticMods(_item.CosmeticMods, 1, null);
             }
         }
     }
 }
Exemplo n.º 26
0
    /// <summary>
    /// 宝藏活动预览数据
    /// </summary>
    private void S2C_GetTreasureInfo(Pt _pt)
    {
        //Debug.Log("宝藏活动预览数据");
        rewardList.Clear();
        pt_reply_treasure_info_d971 info = _pt as pt_reply_treasure_info_d971;

        if (info != null)
        {
            priceOne  = (int)info.price1;
            priceTwo  = (int)info.price2;
            rewardOne = new ItemValue((int)info.reward1_item_type, (int)info.reward1_item_amount);
            //Debug.Log("rewardOne:"+ rewardOne.eid);
            rewardTwo = new ItemValue((int)info.reward2_item_type, (int)info.reward2_item_amount);
            for (int i = 0, len = info.reward_info.Count; i < len; i++)
            {
                rewardList.Add(new EquipmentInfo((int)info.reward_info[i].item_id, (int)info.reward_info[i].item_num, EquipmentBelongTo.PREVIEW));
            }
            if (updateTreasurePreview != null)
            {
                updateTreasurePreview();
            }
        }
    }
Exemplo n.º 27
0
        internal static List <IBinderValue> populatePost(List <Microblog> list)
        {
            List <IBinderValue> results = new List <IBinderValue>();

            foreach (Microblog post in list)
            {
                IBinderValue vo = new ItemValue();

                vo.CreatorName = post.User.Name;
                vo.CreatorLink = alink.ToUserMicroblog(post.User);
                vo.CreatorPic  = post.User.PicSmall;

                vo.Title   = post.Content;
                vo.Link    = alink.ToUserMicroblog(post.User);
                vo.Content = post.Content;
                vo.Created = post.Created;
                vo.Replies = post.Replies;

                results.Add(vo);
            }

            return(results);
        }
Exemplo n.º 28
0
        public void WriteAsync(Dictionary <string, string> TAG_TO_OPC)
        {
            ItemIdentifier[] itemIdentifiersLocalDO = new ItemIdentifier[TAG_TO_OPC.Count];
            ItemValue[]      itemValuesDO           = new ItemValue[TAG_TO_OPC.Count];
            int    clientHandleDO       = 0;
            Random rnd                  = new Random();
            int    transactionHandleUNQ = rnd.Next();

            for (int ind = 0; ind < TAG_TO_OPC.Count; ind++)
            {
                itemIdentifiersLocalDO[ind]              = new ItemIdentifier();
                itemIdentifiersLocalDO[ind].ItemName     = TAG_TO_OPC.ElementAt(ind).Key;
                itemIdentifiersLocalDO[ind].ClientHandle = clientHandleDO++;
                itemValuesDO[ind]       = new ItemValue();
                itemValuesDO[ind].Value = TAG_TO_OPC.ElementAt(ind).Value;
            }

            try
            {
                ReturnCode returnCode = DAServer.WriteAsync(transactionHandleUNQ, ref itemIdentifiersLocalDO, itemValuesDO);
            }
            catch { }
        }
Exemplo n.º 29
0
        public static string GetBlockName(BlockValue blockValue)
        {
            ItemValue itemValue = blockValue.ToItemValue();

            if (itemValue == null)
            {
                return("air");
            }

            if (itemValue.type == 0)
            {
                return("air");
            }

            ItemClass itemClass = ItemClass.list [itemValue.type];

            if (itemClass == null)
            {
                return("air");
            }

            return(itemClass.GetItemName());
        }
Exemplo n.º 30
0
        internal static List <IBinderValue> getResult(List <BlogPost> list)
        {
            List <IBinderValue> results = new List <IBinderValue>();

            foreach (BlogPost post in list)
            {
                IBinderValue vo = new ItemValue();

                vo.CreatorName = post.Creator.Name;
                vo.CreatorLink = Link.ToUser(post.CreatorUrl);
                vo.CreatorPic  = post.Creator.PicSmall;

                vo.Title   = post.Title;
                vo.Link    = alink.ToAppData(post);
                vo.Content = post.Content;
                vo.Created = post.Created;
                vo.Replies = post.Replies;

                results.Add(vo);
            }

            return(results);
        }
Exemplo n.º 31
0
        internal static List<IBinderValue> populatePost( List<Microblog> list )
        {
            List<IBinderValue> results = new List<IBinderValue>();

            foreach (Microblog post in list) {

                IBinderValue vo = new ItemValue();

                vo.CreatorName = post.User.Name;
                vo.CreatorLink = alink.ToUserMicroblog( post.User );
                vo.CreatorPic = post.User.PicSmall;

                vo.Title = post.Content;
                vo.Link = alink.ToUserMicroblog( post.User );
                vo.Content = post.Content;
                vo.Created = post.Created;
                vo.Replies = post.Replies;

                results.Add( vo );
            }

            return results;
        }
Exemplo n.º 32
0
        public async Task <object> Verify()
        {
            _companyNumber = Instrument.Items.GetItem(ItemCodes.SiteInfo.CompanyNumber);

            var viewModel = new CompanyNumberDialogViewModel(this);

            ScreenManager.ShowDialog(Container, viewModel);

            return(await Update(viewModel.CompanyNumber));

            var serverUri = new Uri(ServerUrl);

            using (var client = new HttpClient())
            {
                var response = await client.PostAsync(serverUri, new StringContent(_companyNumber.ToString()));

                response.EnsureSuccessStatusCode();

                var content = await response.Content.ReadAsStringAsync();

                return(content);
            }
        }
Exemplo n.º 33
0
        public static void firstClaim(ClientInfo _cInfo)
        {
            bool _firstClaim = PersistentContainer.Instance.Players[_cInfo.playerId].FirstClaimBlock;

            if (!_firstClaim)
            {
                World     world      = GameManager.Instance.World;
                string    claimBlock = "keystoneBlock";
                ItemValue itemValue;
                itemValue = new ItemValue(ItemClass.GetItem(claimBlock).type, 1, 1, true);

                if (Equals(itemValue, ItemValue.None))
                {
                    SdtdConsole.Instance.Output(string.Format("Unable to find block {0} for /{1} command", claimBlock, Command32));
                }
                var entityItem = (EntityItem)EntityFactory.CreateEntity(new EntityCreationData
                {
                    entityClass     = EntityClass.FromString("item"),
                    id              = EntityFactory.nextEntityID++,
                    itemStack       = new ItemStack(itemValue, 1),
                    pos             = world.Players.dict[_cInfo.entityId].position,
                    rot             = new Vector3(20f, 0f, 20f),
                    lifetime        = 60f,
                    belongsPlayerId = _cInfo.entityId
                });
                world.SpawnEntityInWorld(entityItem);
                _cInfo.SendPackage(NetPackageManager.GetPackage <NetPackageEntityCollect>().Setup(entityItem.entityId, _cInfo.entityId));
                world.RemoveEntity(entityItem.entityId, EnumRemoveEntityReason.Despawned);
                ChatHook.ChatMessage(_cInfo, LoadConfig.Chat_Response_Color + "Claim block has been added to your inventory or if inventory is full, it dropped at your feet.[-]", _cInfo.entityId, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
                PersistentContainer.Instance.Players[_cInfo.playerId].FirstClaimBlock = true;
                PersistentContainer.Instance.Save();
            }
            else
            {
                ChatHook.ChatMessage(_cInfo, LoadConfig.Chat_Response_Color + "You have already received your first claim block. Contact an administrator if you require help.[-]", _cInfo.entityId, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
            }
        }
Exemplo n.º 34
0
        private void writeValue(Int32 value, string tagName)
        {
            try
            {
                List <Item> list  = this.group.Items.ToList();
                int         index = list.FindIndex(x => x.ItemName == tagName); // x.ItemName.StartsWith(tagName)

                if (index == -1)
                {
                    // add PLC item to listv
                    Item[] items = new Item[1];
                    items[0]          = new Item();
                    items[0].ItemName = tagName;
                    items             = this.group.AddItems(items);
                }

                stsLabel.Text = this.group.Items.Length.ToString();
                // write items
                ItemValue[] writeValues = new ItemValue[1];
                writeValues[0] = new ItemValue();
                if (index == -1)
                {
                    writeValues[0].ServerHandle = this.group.Items.Last().ServerHandle;
                }
                else
                {
                    writeValues[0].ServerHandle = this.group.Items[index].ServerHandle;
                }
                writeValues[0].Value = value;
                Opc.IRequest req;
                this.group.Write(writeValues, 321, new WriteCompleteEventHandler(WriteCompleteCallback), out req);
            }
            catch (Exception x)
            {
                log.Fatal(x.Message);
            }
        }
Exemplo n.º 35
0
        public static void firstClaim(ClientInfo _cInfo)
        {
            World  world = GameManager.Instance.World;
            Player p     = PersistentContainer.Instance.Players[_cInfo.playerId, false];

            if (p == null || !p.FirstClaim)
            {
                string    claimBlock = "keystoneBlock";
                ItemValue itemValue;
                itemValue = new ItemValue(ItemClass.GetItem(claimBlock).type, 1, 1, true);

                if (Equals(itemValue, ItemValue.None))
                {
                    SdtdConsole.Instance.Output(string.Format("Unable to find block {0} for /claim command", claimBlock));
                }
                var entityItem = (EntityItem)EntityFactory.CreateEntity(new EntityCreationData
                {
                    entityClass     = EntityClass.FromString("item"),
                    id              = EntityFactory.nextEntityID++,
                    itemStack       = new ItemStack(itemValue, 1),
                    pos             = world.Players.dict[_cInfo.entityId].position,
                    rot             = new Vector3(20f, 0f, 20f),
                    lifetime        = 60f,
                    belongsPlayerId = _cInfo.entityId
                });
                world.SpawnEntityInWorld(entityItem);
                _cInfo.SendPackage(new NetPackageEntityCollect(entityItem.entityId, _cInfo.entityId));
                world.RemoveEntity(entityItem.entityId, EnumRemoveEntityReason.Killed);
                _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("{0}Claim block has been added to your inventory or if inventory is full, it dropped at your feet.[-]", Config.Chat_Response_Color), Config.Server_Response_Name, false, "ServerTools", false));
                PersistentContainer.Instance.Players[_cInfo.playerId, true].FirstClaim = true;
                PersistentContainer.Instance.Save();
            }
            else
            {
                _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("{0}You have already received your first claim block. Contact an administrator if you require help.[-]", Config.Chat_Response_Color), Config.Server_Response_Name, false, "ServerTools", false));
            }
        }
Exemplo n.º 36
0
        public void Write(string tag, string value)
        {
            _server = OpcServerSingleton.Instance;
            if (_server == null)
            {
                return;
            }
            var items = new ItemValue[1];

            items[0] = new ItemValue
            {
                ClientHandle = Guid.NewGuid(),
                ItemName     = tag,
                Value        = value
            };
            try
            {
                _server.Write(items);
            }
            catch
            {
                throw new Exception();
            }
        }
Exemplo n.º 37
0
    /// <summary>
    /// 根据物品需求数量及背包已有数量,获取显示字符串(eg:初级强化石 10/[ff0000]0[-]) out材料是否足够 out 缺少的材料
    /// </summary>
    public static string GetStringWithBagNumber(ItemValue _itemValue, out bool enough, out EquipmentInfo lackEquip)
    {
        ulong number   = (ulong)_itemValue.count;
        int   equipEid = _itemValue.eid;

        System.Text.StringBuilder builder = new System.Text.StringBuilder();
        ulong count = (ulong)GameCenter.inventoryMng.GetNumberByType(equipEid);

        switch (equipEid)
        {
        case 5:
            count = GameCenter.mainPlayerMng.MainPlayerInfo.TotalCoinCount;
            break;

        case 6:
            count = GameCenter.mainPlayerMng.MainPlayerInfo.TotalCoinCount;
            break;

        default:        //金币等物品不显示名字
            builder.Append("[u]").Append(GameHelper.GetEquipNameByType(equipEid)).Append("[/u]").Append(" ");
            break;
        }
        builder.Append(number);
        enough    = (count >= number);
        lackEquip = (enough == false)?new EquipmentInfo(equipEid, (int)(number - count), EquipmentBelongTo.NONE):null;
        if (count < number)
        {
            builder.Append("[ff0000]");
        }
        builder.Append("/").Append(count);
        if (count < number)
        {
            builder.Append("[-]");
        }
        return(builder.ToString());
    }
Exemplo n.º 38
0
 /// <summary>
 /// OPC同步写一个数据
 /// </summary>
 /// <param name="opcitem">地址Name</param>
 /// <param name="WriteVaule">待写的地址Value</param>
 /// <returns>是否写成功</returns>
 public bool SynWriteOpcItem(string itemName, string writeValue)
 {
     try
     {
         ItemValue[] itemvalues = new ItemValue[1];
         foreach (var item in OpcGroupClasssubscription.Items)
         {
             if (itemName == item.ItemName)
             {
                 itemvalues[0]       = new ItemValue((ItemIdentifier)item);
                 itemvalues[0].Value = writeValue;
                 break;
             }
         }
         OpcGroupClasssubscription.Write(itemvalues);
         return(true);
     }
     catch (Exception ex)
     {
         //ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
         //log.Fatal("写心跳信号失败!", ex);
         return(false);
     }
 }
Exemplo n.º 39
0
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            var iv = cbDefault.SelectedItem as ItemValue;

            currentDefaultAction = iv;

            if (iv == null)
                return;

            trayIcon.Text = string.Format(Resources.TrayIconTooltip, currentDefaultAction.Text);

            RegistrySettings.SetConfig(RegistrySettings.ConfigKey.DefaultAction, iv.Action.ToString());
            NPowerTray_VisibleChanged(sender, e);
        }
Exemplo n.º 40
0
        private ItemValue ParseItemValue(out bool success)
        {
            var reskey = new Tuple<int, string>(position, "ItemValue");
            if (ParsingResults.ContainsKey(reskey))
            {
                var parsingResult = ParsingResults[reskey];
                success = parsingResult.Item2;
                position = parsingResult.Item3;
                return parsingResult.Item1 as ItemValue;
            }

            int errorCount = Errors.Count;
            ItemValue itemValue = new ItemValue();

            itemValue.Value = ParseExpr(out success);
            if (success) { ClearError(errorCount); }
            else { Error("Failed to parse Value of ItemValue."); }
            ParsingResults[reskey] = new Tuple<object, bool, int>(itemValue, success, position);
            return itemValue;
        }
Exemplo n.º 41
0
        /// <summary>
        /// Writes a value to the device.
        /// </summary>
        public IdentifiedResult Write(string locale, ItemValue value, bool supportsCOM)
        {
            // check for invalid values.
            if (value == null || value.Value == null)
            {
                return new IdentifiedResult(m_itemID, ResultID.Da.E_BADTYPE);
            }

            ItemValue canonicalValue = new ItemValue();

            // convert non-enumerated type to canonical type.
            if (m_euType != euType.enumerated || !typeof(string).IsInstanceOfType(value.Value))
            {
                try
                {
                    canonicalValue.Value = ChangeType(value.Value, m_datatype, locale, supportsCOM);
                }
                catch (OverflowException e)
                {
                    return new IdentifiedResult(m_itemID, ResultID.Da.E_RANGE, e.Message);
                }
                catch (InvalidCastException e)
                {
                    return new IdentifiedResult(m_itemID, ResultID.Da.E_RANGE, e.Message);
                }
                catch (ResultIDException e)
                {
                    return new IdentifiedResult(m_itemID, e.Result, e.Message);
                }
                catch (Exception e)
                {
                    return new IdentifiedResult(m_itemID, ResultID.Da.E_BADTYPE, e.Message);
                }
            }
            else
            {
                for (int ii = 0; ii < m_euInfo.Length; ii++)
                {
                    if (m_euInfo[ii] == (string)value.Value)
                    {
                        canonicalValue.Value = ii;
                        break;
                    }
                }

                if (canonicalValue.Value == null)
                {
                    return new IdentifiedResult(m_itemID, ResultID.Da.E_BADTYPE);
                }
            }

            canonicalValue.Quality            = value.Quality;
            canonicalValue.QualitySpecified   = value.QualitySpecified;
            canonicalValue.Timestamp          = value.Timestamp;
            canonicalValue.TimestampSpecified = value.TimestampSpecified;

            return m_device.Write(m_itemID, Property.VALUE, canonicalValue);
        }
Exemplo n.º 42
0
 private static void _GiveItem(ClientInfo _cInfo, bool _announce)
 {
     _randomItem = GimmeItems.RandomObject();
     if (_gameItems.ContainsKey(_randomItem))
     {
         _itemValue = _gameItems[_randomItem].Clone();
     }
     else
     {
         _randomItem = _randomItem.ToLower();
         foreach (KeyValuePair<string, ItemValue> _key in _gameItems)
         {
             if (_key.Key.ToLower().Equals(_randomItem))
             {
                 _itemValue = _key.Value.Clone();
             }
         }
     }
     EntityPlayer _player = GameManager.Instance.World.Players.dict[_cInfo.entityId];
     if (_itemValue.HasQuality)
     {
         _itemValue.Quality = _player.GetLevel() * 10;
     }
     if( _gimmeItems.TryGetValue(_randomItem, out _itemcounts))
     {
         _minmax = _itemcounts.Split(',');
         if (int.TryParse(_minmax[0], out _min) && int.TryParse(_minmax[1], out _max))
         {
             int _count = _random.Next(_min, _max);
             ItemStack _itemDrop = new ItemStack(_itemValue, _count);
             GameManager.Instance.ItemDropServer(_itemDrop, _player.GetPosition(), Vector3.zero, -1, 60);
             if (_announce)
             {
                 GameManager.Instance.GameMessageServer(_cInfo, "[00FF00]" + _cInfo.playerName + " has received " + _count.ToString() + " " + _randomItem + ".[-]", "Server");
             }
             else
             {
                 _cInfo.SendPackage(new NetPackageGameMessage("[00FF00]You have received " + _count.ToString() + " " + _randomItem + ".[-]", "Server"));
             }
             _gimmePlayers.Add(_cInfo.playerId, DateTime.Now);
             UpdatePlayerXml();
         }
     }
 }
Exemplo n.º 43
0
 public static DataItem getItemDataByItemValue(ItemValue itemValue)
 {
     return getItemDataById(itemValue.type.get());
 }
Exemplo n.º 44
0
        private void bindItemValue(ItemValue itemValue)
        {
            this.itemValue = itemValue;

            type = itemValue.type;
            quality = itemValue.quality;
            useTimes = itemValue.useTimes;
            meta = itemValue.meta;
            selectedAmmoTypeIndex = itemValue.selectedAmmoTypeIndex;
            activated = itemValue.activated;
            parts = itemValue.parts;
            attachments = itemValue.attachments;
        }
Exemplo n.º 45
0
        private void populateItemValue(ItemValue itemValue, DataItem itemData)
        {
            itemValue.itemValueVersion = new Value<byte>(3);
            itemValue.type = new Value<int>(itemData.id);
            itemValue.useTimes = new Value<int>(0);
            itemValue.quality = new Value<int>(0);
            itemValue.meta = new Value<int>(0);
            itemValue.selectedAmmoTypeIndex = new Value<byte>(0);
            itemValue.activated = new Value<bool>(false);
            itemValue.parts = new ItemValue[0];
            itemValue.attachments = new List<ItemValue>();

            if (itemData.name != "air")
            {
                if (itemData.hasQuality)
                {
                    itemValue.quality.set(DataItem.MAX_QUALITY);

                    if (itemData.partNames != null)
                    {
                        itemValue.parts = new ItemValue[4];

                        int quality = 0;

                        for (int i = 0; i < 4; i++)
                        {
                            itemValue.parts[i] = new ItemValue();
                            populateItemValue(itemValue.parts[i], DataItem.getItemDataByName(itemData.partNames[i]));
                            quality += itemValue.parts[i].quality.get();
                        }

                        itemValue.quality.set(quality / 4);
                    }
                }
            }
        }
Exemplo n.º 46
0
        /// <summary>
        /// 读变量表
        /// </summary>
        /// <param name="aModbusItem">需要更新的变量表</param>
        /// <returns>读写是否成功</returns>
        public bool ReadItems(ref ModbusItem[] aModbusItem)
        {
            //读线圈或读寄存器模式
            CoilOrRegister iCoilOrRegiterMode = CoilOrRegister.Register;

            //从轮询地址
            byte bSlaveID = 0;

            //变量长度
            int iCount = 0;

            //开始地址
            UInt16 uint16StartAddr = 0;

            //排序
            var varSortItem = from item in aModbusItem
                              orderby item.SlaveID, item.ItemAddress
                              select item;
            ModbusItem[] mbItems = varSortItem.ToArray();

            //获得变量个数
            iCount = mbItems.Length;

            //读取变量
            //遍历更新所有变量
            for (int i = 0; i < iCount; i++)
            {
                //读取长度
                UInt16 uint16Length = 0;

                //获得从轮询地址
                bSlaveID = Convert.ToByte(mbItems[i].SlaveID);

                //获得开始地址
                uint16StartAddr = Convert.ToUInt16(mbItems[i].ItemAddress);

                //判断需要缓存的长度
                switch (mbItems[i].ItemType)
                {
                    case "WORD":
                        uint16Length += 1;
                        break;
                    case "DWORD":
                    case "FLOAT":
                        uint16Length += 2;
                        break;
                    case "STRING":
                        uint16Length += 5;
                        break;
                    case "BOOLEAN":
                        iCoilOrRegiterMode = CoilOrRegister.Coil;
                        uint16Length += 1;
                        break;
                }

                //当有读取长度时
                if (uint16Length > 0)
                {
                    if (iCoilOrRegiterMode == CoilOrRegister.Coil)
                    {
                        //数据缓存
                        byte[] bBuffer = new byte[uint16Length];

                        try
                        {
                            //读线圈
                            if (ReadCoils(bSlaveID, uint16StartAddr, uint16Length, bBuffer) == uint16Length)
                            {
                                //获得变量值缓存索引
                                int iItemValueBufferIndex = (mbItems[i].ItemAddress - uint16StartAddr);

                                //更新状态
                                mbItems[i].Status = ValueState.STATUS_GOOG;

                                //时间戳
                                mbItems[i].UpdateTime = DateTime.Now;

                                //值
                                mbItems[i].Value = Convert.ToBoolean(bBuffer[iItemValueBufferIndex]);
                            }
                            else
                            {
                                //更新状态
                                mbItems[i].Status = ValueState.STATUS_BAD;

                                //时间戳
                                mbItems[i].UpdateTime = DateTime.Now;
                            }
                        }
                        catch
                        {
                            //更新状态
                            mbItems[i].Status = ValueState.STATUS_BAD;

                            //时间戳
                            mbItems[i].UpdateTime = DateTime.Now;

                            //读失败
                            return false;
                        }
                    }
                    else if (iCoilOrRegiterMode == CoilOrRegister.Register)
                    {
                        //数据缓存
                        byte[] bBuffer = new byte[uint16Length * 2];

                        try
                        {
                            //读寄存器
                            if (ReadHoldingRegisters(bSlaveID, uint16StartAddr, uint16Length, bBuffer) == uint16Length * 2)
                            {
                                //获得变量值缓存索引
                                int iItemValueBufferIndex = (mbItems[i].ItemAddress - uint16StartAddr) * 2;

                                //更新状态
                                mbItems[i].Status = ValueState.STATUS_GOOG;

                                //时间戳
                                mbItems[i].UpdateTime = DateTime.Now;

                                //变量数值缓存
                                ItemValue ivValue = new ItemValue();

                                //数值解析
                                switch (mbItems[i].ItemType)
                                {
                                    //word类型数据解析
                                    case "WORD":
                                        ivValue.B0 = bBuffer[iItemValueBufferIndex + 1];
                                        ivValue.B1 = bBuffer[iItemValueBufferIndex];
                                        mbItems[i].Value = Convert.ToDecimal(ivValue.Word);
                                        break;

                                    //dword类型解析
                                    case "DWORD":
                                        ivValue.B0 = bBuffer[iItemValueBufferIndex + 1];
                                        ivValue.B1 = bBuffer[iItemValueBufferIndex];
                                        ivValue.B2 = bBuffer[iItemValueBufferIndex + 3];
                                        ivValue.B3 = bBuffer[iItemValueBufferIndex + 2];
                                        mbItems[i].Value = Convert.ToDecimal(ivValue.DWord);
                                        break;

                                    //float类型解析
                                    case "FLOAT":
                                        ivValue.B0 = bBuffer[iItemValueBufferIndex + 1];
                                        ivValue.B1 = bBuffer[iItemValueBufferIndex];
                                        ivValue.B2 = bBuffer[iItemValueBufferIndex + 3];
                                        ivValue.B3 = bBuffer[iItemValueBufferIndex + 2];
                                        mbItems[i].Value = Convert.ToDecimal(ivValue.Float);
                                        break;

                                    //字符串类型解析
                                    case "STRING":
                                        char[] cStrBuf = new char[10];
                                        Array.Copy(bBuffer, iItemValueBufferIndex, cStrBuf, 0, 10);
                                        string strValue = new string(cStrBuf);
                                        mbItems[i].Value = strValue = strValue.Replace(new String(new Char[] { '\0' }), "");
                                        break;
                                }
                            }
                            else
                            {
                                //更新状态
                                mbItems[i].Status = ValueState.STATUS_BAD;

                                //时间戳
                                mbItems[i].UpdateTime = DateTime.Now;

                                //读失败
                                return false;
                            }
                        }
                        catch (Exception ex)
                        {
                            //更新状态
                            mbItems[i].Status = ValueState.STATUS_BAD;

                            //时间戳
                            mbItems[i].UpdateTime = DateTime.Now;

            #if DEBUG
                            Log.WriteLog(ex.ToString());
            #else
                            //Log.WriteLog(ex.ToString());
            #endif
                        }
                    }
                    else
                    {
                        //更新状态
                        mbItems[i].Status = ValueState.STATUS_BAD;

                        //时间戳
                        mbItems[i].UpdateTime = DateTime.Now;
                    }
                }
            }

            //读成功
            return true;
        }
Exemplo n.º 47
0
        private ItemStack createItemStack(DataItem itemData, ItemValue itemValue)
        {
            ItemStack itemStack = new ItemStack();
            itemStack.count = new Value<int>(itemData.stackNumber);
            itemStack.itemValue = itemValue;

            return itemStack;
        }
Exemplo n.º 48
0
        //======================================================================
        // Write
        /// <summary>
        /// Writes the value, quality and timestamp for a set of items.
        /// </summary>
        /// <param name="items">The set of item values to write.</param>
        /// <returns>The results of the write operation for each item.</returns>
        public IdentifiedResult[] Write(ItemValue[] items)
        {
            if (items == null) throw new ArgumentNullException("items");

            if (items.Length == 0)
            {
                return new Opc.IdentifiedResult[0];
            }

            lock (this)
            {
                ArrayList results = new ArrayList(items.Length);

                foreach (ItemValue item in items)
                {
                    IdentifiedResult result = m_cache.Write(item.ItemName, m_culture.Name, item);

                    if (result == null)
                    {
                        result = new IdentifiedResult(item, ResultID.E_FAIL);
                    }

                    result.ClientHandle = item.ClientHandle;

                    results.Add(result);
                }

                return (IdentifiedResult[])results.ToArray(typeof(IdentifiedResult));
            }
        }
Exemplo n.º 49
0
        public void Write(WriteParameter[] writeParameters)
        {
            lock (_itemValues)
            {
                var itemValues = new ItemValue[writeParameters.Length];
                var items = new Item[writeParameters.Length];
                for (var i = 0; i < writeParameters.Length; i++)
                {
                    var writeParameter = writeParameters[i];
                    var item = new Item { ItemName = writeParameter.Address };
                    items[i] = item;
                    itemValues[i] = new ItemValue(item) { Value = writeParameter.Value };
                }
                _server.Write(itemValues);

                var readResult = _server.Read(items);
                foreach (var itemValueResult in readResult)
                {
                    if (_itemValues.ContainsKey(itemValueResult.ItemName))
                    {
                        _itemValues[itemValueResult.ItemName] = itemValueResult.Value;
                    }
                }
            }
        }
Exemplo n.º 50
0
        public Opc.IdentifiedResult[] WriteTags(ItemValue[] items)
        {
            if (opcServer != null && opcURL != null)
            {
                opcServer.Connect(opcURL, new Opc.ConnectData(new System.Net.NetworkCredential()));

                if (opcServer.IsConnected)
                {
                    var results = ((Opc.Da.IServer)opcServer).Write(items);
                    opcServer.Disconnect();
                    opcServer.Dispose();
                    return results;
                }
                else
                {
                    throw new Exception("OPC server not connected");
                }

            }

            opcServer.Disconnect();
            opcServer.Dispose();
            throw new Exception("OPC server not initialized of type null");

        }
Exemplo n.º 51
0
        /// <summary>
        /// 读模拟量数据块
        /// </summary>
        /// <param name="aModbusItem">modbus变量表</param>
        /// <returns>读写是否成功</returns>
        public bool ReadItemsSimulationPiece(ref ModbusItem[] aModbusItem)
        {
            //从轮询地址
            byte bSlaveID = 0;

            //开始地址
            UInt16 uint16StartAddr = 0;

            //读取长度
            UInt16 uint16Length = 0;

            //排序
            var varSortItem = from item in aModbusItem
                              where item.ItemType != "BOOLEAN"
                              orderby item.SlaveID, item.ItemAddress
                              select item;
            ModbusItem[] mbItems = varSortItem.ToArray();

            //获得开始地址
            uint16StartAddr = Convert.ToUInt16(mbItems[0].ItemAddress);

            //获得读取长度
            uint16Length = Convert.ToUInt16(mbItems[mbItems.Length - 1].ItemAddress - uint16StartAddr);

            //判断最后一位需要缓存的长度
            switch (mbItems[mbItems.Length - 1].ItemType)
            {
                case "WORD":
                    uint16Length += 1;
                    break;
                case "DWORD":
                case "FLOATINVERSE":
                case "FLOAT":
                    uint16Length += 2;
                    break;
                case "STRING":
                    uint16Length += 5;
                    break;
            }

            //获取从轮寻地址
            bSlaveID = Convert.ToByte(mbItems[0].SlaveID);

            //当有读取长度时
            if (uint16Length > 0)
            {
                //数据缓存
                byte[] bBuffer = new byte[uint16Length * 2];

                try
                {
                    //读寄存器
                    if (ReadHoldingRegisters(bSlaveID, uint16StartAddr, uint16Length, bBuffer) == uint16Length * 2)
                    {

                        for (int i = 0; i < mbItems.Length; i++)
                        {
                            //获得变量值缓存索引
                            int iItemValueBufferIndex = (mbItems[i].ItemAddress - uint16StartAddr) * 2;

                            //更新状态
                            mbItems[i].Status = ValueState.STATUS_GOOG;

                            //时间戳
                            mbItems[i].UpdateTime = DateTime.Now;

                            //变量数值缓存
                            ItemValue ivValue = new ItemValue();

                            //数值解析
                            switch (mbItems[i].ItemType)
                            {
                                //word类型数据解析
                                case "WORD":
                                    ivValue.B0 = bBuffer[iItemValueBufferIndex + 1];
                                    ivValue.B1 = bBuffer[iItemValueBufferIndex];
                                    mbItems[i].Value = Convert.ToDecimal(ivValue.Word);
                                    break;

                                //dword类型解析
                                case "DWORD":
                                    ivValue.B0 = bBuffer[iItemValueBufferIndex + 1];
                                    ivValue.B1 = bBuffer[iItemValueBufferIndex];
                                    ivValue.B2 = bBuffer[iItemValueBufferIndex + 3];
                                    ivValue.B3 = bBuffer[iItemValueBufferIndex + 2];
                                    mbItems[i].Value = Convert.ToDecimal(ivValue.DWord);
                                    break;

                                //float类型解析
                                case "FLOAT":
                                    ivValue.B0 = bBuffer[iItemValueBufferIndex + 1];
                                    ivValue.B1 = bBuffer[iItemValueBufferIndex];
                                    ivValue.B2 = bBuffer[iItemValueBufferIndex + 3];
                                    ivValue.B3 = bBuffer[iItemValueBufferIndex + 2];
                                    mbItems[i].Value = Convert.ToDecimal(ivValue.Float);
                                    break;

                                //float inverse类型解析
                                case "FLOATINVERSE":
                                    ivValue.B0 = bBuffer[iItemValueBufferIndex + 3];
                                    ivValue.B1 = bBuffer[iItemValueBufferIndex + 2];
                                    ivValue.B2 = bBuffer[iItemValueBufferIndex + 1];
                                    ivValue.B3 = bBuffer[iItemValueBufferIndex];
                                    mbItems[i].Value = Convert.ToDecimal(ivValue.Float);
                                    break;

                                //字符串类型解析
                                case "STRING":
                                    char[] cStrBuf = new char[10];
                                    Array.Copy(bBuffer, iItemValueBufferIndex, cStrBuf, 0, 10);
                                    string strValue = new string(cStrBuf);
                                    mbItems[i].Value = strValue = strValue.Replace(new String(new Char[] { '\0' }), "");
                                    break;
                            }
                        }
                    }
                    else
                    {
                        for (int i = 0; i < mbItems.Length; i++)
                        {
                            //更新状态
                            mbItems[i].Status = ValueState.STATUS_BAD;

                            //时间戳
                            mbItems[i].UpdateTime = DateTime.Now;
                        }
            #if DEBUG
                        Log.WriteLog("ReadItemsSimulationPiece error");
            #else
                        Log.WriteLog("ReadItemsSimulationPiece error");
            #endif
                        //读失败
                        return false;
                    }
                }
                catch (Exception ex)
                {
                    for (int i = 0; i < mbItems.Length; i++)
                    {
                        //更新状态
                        mbItems[i].Status = ValueState.STATUS_BAD;

                        //时间戳
                        mbItems[i].UpdateTime = DateTime.Now;
                    }
            #if DEBUG
                    Log.WriteLog(ex.ToString());
            #else
                    //Log.WriteLog(ex.ToString());
            #endif
                }
            }

            //读取成功
            return true;
        }
Exemplo n.º 52
0
 public static void CheckInv(ClientInfo _cInfo, PlayerDataFile _playerDataFile)
 {
     if (_cInfo != null && !GameManager.Instance.adminTools.IsAdmin(_cInfo.playerId))
     {
         for (int i = 0; i < _playerDataFile.inventory.Length; i++)
         {
             ItemStack _intemStack = new ItemStack();
             ItemValue _itemValue = new ItemValue();
             _intemStack = _playerDataFile.inventory[i];
             _itemValue = _intemStack.itemValue;
             int _count = _playerDataFile.inventory[i].count;
             if (_count > 0 && _itemValue != null && !_itemValue.Equals(ItemValue.None) && _cInfo != null)
             {
                 int _maxAllowed = ItemClass.list[_itemValue.type].Stacknumber.Value;
                 string _name = ItemClass.list[_itemValue.type].GetItemName();
                 if (AnounceInvalidStack && _count > _maxAllowed)
                 {
                     string _phrase3;
                     if (!Phrases.Dict.TryGetValue(3, out _phrase3))
                     {
                         _phrase3 = "{PlayerName} you have a invalid item stack: {ItemName} {ItemCount}. Max per stack: {MaxPerStack}.";
                     }
                     _phrase3 = _phrase3.Replace("{PlayerName}", _cInfo.playerName);
                     _phrase3 = _phrase3.Replace("{ItemName}", _name);
                     _phrase3 = _phrase3.Replace("{ItemCount}", _count.ToString());
                     _phrase3 = _phrase3.Replace("{MaxPerStack}", _maxAllowed.ToString());
                     _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FF8000]{0}[-]", _phrase3), "Server", false, "", false));
                     ChatLog.Log(_phrase3, "Server");
                 }
                 if (IsEnabled && dict.ContainsKey(_name))
                 {
                     if (BanPlayer)
                     {
                         string _phrase4;
                         if (!Phrases.Dict.TryGetValue(4, out _phrase4))
                         {
                             _phrase4 = "Cheat Detected: Auto banned {PlayerName} for having a invalid item: {ItemName}.";
                         }
                         _phrase4 = _phrase4.Replace("{PlayerName}", _cInfo.playerName);
                         _phrase4 = _phrase4.Replace("{ItemName}", _name);
                         GameManager.Instance.GameMessageServer(_cInfo, EnumGameMessages.Chat, string.Format("[FF8000]{0}[-]", _phrase4), "Server", false, "", false);
                         SdtdConsole.Instance.ExecuteSync(string.Format("ban add {0} 10 years \"Invalid Item {1}\"", _cInfo.entityId, _name), _cInfo);
                     }
                     else
                     {
                         string _phrase5;
                         if (!Phrases.Dict.TryGetValue(5, out _phrase5))
                         {
                             _phrase5 = "Cheat Detected: Auto kicked {PlayerName} for having a invalid item: {ItemName}.";
                         }
                         _phrase5 = _phrase5.Replace("{PlayerName}", _cInfo.playerName);
                         _phrase5 = _phrase5.Replace("{ItemName}", _name);
                         GameManager.Instance.GameMessageServer(_cInfo, EnumGameMessages.Chat, string.Format("[FF8000]{0}[-]", _phrase5), "Server", false, "", false);
                         SdtdConsole.Instance.ExecuteSync(string.Format("kick {0} \"Invalid Item: {1}\"", _cInfo.entityId, _name), _cInfo);
                     }
                     break;
                 }
             }
         }
         for (int i = 0; i < _playerDataFile.bag.Length; i++)
         {
             ItemStack _intemStack = new ItemStack();
             ItemValue _itemValue = new ItemValue();
             _intemStack = _playerDataFile.bag[i];
             _itemValue = _intemStack.itemValue;
             int _count = _playerDataFile.bag[i].count;
             if (_count > 0 && _itemValue != null && !_itemValue.Equals(ItemValue.None) && _cInfo != null)
             {
                 int _maxAllowed = ItemClass.list[_itemValue.type].Stacknumber.Value;
                 string _name = ItemClass.list[_itemValue.type].GetItemName();
                 if (AnounceInvalidStack && _count > _maxAllowed)
                 {
                     string _phrase3;
                     if (!Phrases.Dict.TryGetValue(3, out _phrase3))
                     {
                         _phrase3 = "{PlayerName} you have a invalid item stack: {ItemName} {ItemCount}. Max per stack: {MaxPerStack}.";
                     }
                     _phrase3 = _phrase3.Replace("{PlayerName}", _cInfo.playerName);
                     _phrase3 = _phrase3.Replace("{ItemName}", _name);
                     _phrase3 = _phrase3.Replace("{ItemCount}", _count.ToString());
                     _phrase3 = _phrase3.Replace("{MaxPerStack}", _maxAllowed.ToString());
                     _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("[FF8000]{0}[-]", _phrase3), "Server", false, "", false));
                     ChatLog.Log(_phrase3, "Server");
                 }
                 if (IsEnabled && dict.ContainsKey(_name))
                 {
                     if (BanPlayer)
                     {
                         string _phrase4;
                         if (!Phrases.Dict.TryGetValue(4, out _phrase4))
                         {
                             _phrase4 = "Cheat Detected: Auto banned {PlayerName} for having a invalid item: {ItemName}.";
                         }
                         _phrase4 = _phrase4.Replace("{PlayerName}", _cInfo.playerName);
                         _phrase4 = _phrase4.Replace("{ItemName}", _name);
                         GameManager.Instance.GameMessageServer(_cInfo, EnumGameMessages.Chat, string.Format("[FF8000]{0}[-]", _phrase4), "Server", false, "", false);
                         SdtdConsole.Instance.ExecuteSync(string.Format("ban add {0} 10 years \"Invalid Item {1}\"", _cInfo.entityId, _name), _cInfo);
                     }
                     else
                     {
                         string _phrase5;
                         if (!Phrases.Dict.TryGetValue(5, out _phrase5))
                         {
                             _phrase5 = "Cheat Detected: Auto kicked {PlayerName} for having a invalid item: {ItemName}.";
                         }
                         _phrase5 = _phrase5.Replace("{PlayerName}", _cInfo.playerName);
                         _phrase5 = _phrase5.Replace("{ItemName}", _name);
                         GameManager.Instance.GameMessageServer(_cInfo, EnumGameMessages.Chat, string.Format("[FF8000]{0}[-]", _phrase5), "Server", false, "", false);
                         SdtdConsole.Instance.ExecuteSync(string.Format("kick {0} \"Invalid Item: {1}\"", _cInfo.entityId, _name), _cInfo);
                     }
                     break;
                 }
             }
         }
     }
 }
Exemplo n.º 53
0
        public NPowerTray()
        {
            InitializeComponent();

            boldFont = shutdownToolStripMenuItem.Font;
            normalFont = rebootToolStripMenuItem.Font;
            var osv = Environment.OSVersion;
            var isWin8 = (osv.Platform == PlatformID.Win32NT &&
                          osv.Version >= new Version(6, 2));

            hybridShutdownToolStripMenuItem.Visible = isWin8;

            shutdownToolStripMenuItem.Text = Resources.ActionShutdown;
            rebootToolStripMenuItem.Text = Resources.ActionReboot;
            hibernateToolStripMenuItem.Text = Resources.ActionHibernate;
            sleepToolStripMenuItem.Text = Resources.ActionSleep;
            lockToolStripMenuItem.Text = Resources.ActionLock;
            logOffToolStripMenuItem.Text = Resources.ActionLogOff;
            changeUserToolStripMenuItem.Text = Resources.ActionChangeUser;
            specialOptionsToolStripMenuItem.Text = Resources.MenuSpecialOptions;
            forceShutdownToolStripMenuItem.Text = Resources.ActionForceShutdown;
            forceRebootToolStripMenuItem.Text = Resources.ActionForceReboot;
            forceHibernateToolStripMenuItem.Text = Resources.ActionForceHibernate;
            forceSleepToolStripMenuItem.Text = Resources.ActionForceSleep;
            forceLogOffToolStripMenuItem.Text = Resources.ActionForceLogOff;
            hibernateDisableWakeUpEventsToolStripMenuItem.Text = Resources.ActionHibernateDisableWakeupEvents;
            sleepDisableWakeUpEventsToolStripMenuItem.Text = Resources.ActionSleepDisableWakeupEvents;
            forceHibernateDisableWakeUpEventsToolStripMenuItem.Text = Resources.ActionForceHibernateDisableWakeupEvents;
            forceSleepDisableWakeUpEventsToolStripMenuItem.Text = Resources.ActionForceSleepDisableWakeupEvents;
            aboutToolStripMenuItem.Text = Resources.ShowAbout;
            closeTrayIconToolStripMenuItem.Text = Resources.CloseTrayIcon;
            lblCopyright.Text = Resources.CopyrightNotice;
            lblContact.Text = Resources.Contact;
            cbStartup.Text = Resources.Startup;
            lnLicense.Text = Resources.ShowLicense;
            lnEmail.Text = Program.AuthorEmail;
            cbCheckUpdates.Text = Resources.CheckForUpdates;
            lnCheckNow.Text = Resources.CheckNow;
            lbDefault.Text = Resources.DefaultActionChoice;

            minutesToolStripMenuItem.Text = Resources.MinutesToShutdown5;
            minutesToolStripMenuItem1.Text = Resources.MinutesToShutdown10;
            minutesToolStripMenuItem2.Text = Resources.MinutesToShutdown15;
            minutesToolStripMenuItem3.Text = Resources.MinutesToShutdown30;
            minutesToolStripMenuItem5.Text = Resources.MinutesToShutdown45;
            hourToolStripMenuItem.Text = Resources.HoursToShutdown1;
            hoursToolStripMenuItem.Text = Resources.HoursToShutdown2;
            hoursToolStripMenuItem1.Text = Resources.HoursToShutdown4;
            hoursToolStripMenuItem2.Text = Resources.HoursToShutdown8;
            hoursToolStripMenuItem3.Text = Resources.HoursToShutdown12;
            hoursToolStripMenuItem4.Text = Resources.HoursToShutdown24;

            shutdownAfterMenuItem.Text = Resources.ShutdownAfter;
            convertToShutdownToolStripMenuItem.Text = Resources.ConvertToShutdown;
            convertToRebootToolStripMenuItem.Text = Resources.ConvertToReboot;
            convertToHibernateToolStripMenuItem.Text = Resources.ConvertToHibernate;
            convertToSleepToolStripMenuItem.Text = Resources.ConvertToSleep;
            cancelToolStripMenuItem.Text = Resources.CancelTimer;

            cbDefault.Items.Clear();

            if (isWin8)
                cbDefault.Items.Add(
                    new ItemValue(DefaultActions.HybridShutdown, Resources.ActionHybridShutdown));
            cbDefault.Items.AddRange(new object[]
                {
                    new ItemValue(DefaultActions.Shutdown, Resources.ActionShutdown),
                    new ItemValue(DefaultActions.Reboot, Resources.ActionReboot),
                    new ItemValue(DefaultActions.Sleep, Resources.ActionSleep),
                    new ItemValue(DefaultActions.Hibernate, Resources.ActionHibernate),
                    new ItemValue(DefaultActions.Lock, Resources.ActionLock),
                    new ItemValue(DefaultActions.LogOff, Resources.ActionLogOff),
                    new ItemValue(DefaultActions.ChangeUser, Resources.ActionChangeUser)
                });

            hybridShutdownToolStripMenuItem.Text = Resources.ActionHybridShutdown;

            // ///////////////////////////////////////////////////////////////////////////////////// //
            // Sanitize settings

            var defStr = RegistrySettings.GetConfig(RegistrySettings.ConfigKey.DefaultAction, "Shutdown");
            defStr = defStr.Replace(" ", "");

            DefaultActions def;
            if(!Enum.TryParse(defStr, out def))
            {
                def = DefaultActions.Shutdown;
            }

            if(defStr != def.ToString())
                RegistrySettings.SetConfig(RegistrySettings.ConfigKey.DefaultAction, def.ToString());

            // ///////////////////////////////////////////////////////////////////////////////////// //

            var defItem = cbDefault.Items.Cast<ItemValue>().FirstOrDefault(item => item.Action == def);

            if (defItem == null)
                return;

            currentDefaultAction = defItem;

            trayIcon.Text = string.Format(Resources.TrayIconTooltip, currentDefaultAction.Text);
        }
Exemplo n.º 54
0
        /// <summary>
        /// 写变量
        /// </summary>
        /// <param name="aModbusItem">变量</param>
        /// <param name="aValue">值</param>
        /// <returns>是否写成功</returns>
        public bool WriteItem(ref ModbusItem aModbusItem, Iolist aValue)
        {
            //如果值相等则不需再重写
            if (aModbusItem.Value.ToString().ToUpper() == aValue.Values.Value.ToString().ToUpper()
                && Convert.ToDecimal(aValue.Values.Value) != decimal.MaxValue)
                return false;

            //写圈或写寄存器模式
            CoilOrRegister iCoilOrRegiterMode = CoilOrRegister.Register;

            //写长度
            UInt16 uint16WriteLenth = 0;

            //写缓存
            byte[] bWriteBuffer = new byte[0];

            //写数值
            ItemValue ivItemValue = new ItemValue();

            //判断数据类型
            switch (aModbusItem.ItemType)
            {
                //WORD类型打包
                case "WORD":
                    ivItemValue.Word = Convert.ToInt16(aValue.Values.Value.ToString());
                    bWriteBuffer = new byte[2];
                    bWriteBuffer[0] = ivItemValue.B1;
                    bWriteBuffer[1] = ivItemValue.B0;
                    uint16WriteLenth = 1;
                    break;

                //DWORD类型打包
                case "DWORD":
                    ivItemValue.DWord = Convert.ToInt32(aValue.Values.Value.ToString());
                    bWriteBuffer = new byte[4];
                    bWriteBuffer[0] = ivItemValue.B1;
                    bWriteBuffer[1] = ivItemValue.B0;
                    bWriteBuffer[2] = ivItemValue.B3;
                    bWriteBuffer[3] = ivItemValue.B2;
                    uint16WriteLenth = 2;
                    break;

                //FLOAT类型打包
                case "FLOAT":
                    ivItemValue.Float = (float)Convert.ToDouble(aValue.Values.Value.ToString());
                    bWriteBuffer = new byte[4];
                    bWriteBuffer[0] = ivItemValue.B1;
                    bWriteBuffer[1] = ivItemValue.B0;
                    bWriteBuffer[2] = ivItemValue.B3;
                    bWriteBuffer[3] = ivItemValue.B2;
                    uint16WriteLenth = 2;
                    break;

                //STRING类型打包
                case "STRING":
                    //数值转换为字符串
                    string strValue = Convert.ToString(aValue.Values.Value.ToString());

                    //缓存
                    bWriteBuffer = new byte[10];
                    //char[] cBuffer = new char[10];

                    //数据打包
                    for (int i = 0; i < bWriteBuffer.Length && i < strValue.Length; i++) bWriteBuffer[i] = (byte)strValue[i];

                    //Array.Copy((byte[])cBuffer, 0, bWriteBuffer, 0, 10);
                    uint16WriteLenth = 5;
                    break;
                case "BOOLEAN":
                    iCoilOrRegiterMode = CoilOrRegister.Coil;
                    bWriteBuffer = new byte[1];
                    bWriteBuffer[0] = Convert.ToByte(aValue.Values.Value);
                    uint16WriteLenth = 1;
                    break;
                default:
                    uint16WriteLenth = 0;
                    break;
            }

            //写
            if (uint16WriteLenth > 0)
            {
                switch (iCoilOrRegiterMode)
                {
                    case CoilOrRegister.Coil:
                        //写线圈
                        if (WriteSingleCoil(aModbusItem.SlaveID, aModbusItem.ItemAddress, Convert.ToUInt16(bWriteBuffer[0])) == uint16WriteLenth)
                        {
                            //更新值
                            aModbusItem.Value = aValue.Values.Value;
                            aModbusItem.UpdateTime = DateTime.Now;
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                        //break;
                    case CoilOrRegister.Register:
                        //写寄存器
                        if (WriteMultipleRegisters(aModbusItem.SlaveID, aModbusItem.ItemAddress, uint16WriteLenth, bWriteBuffer) == uint16WriteLenth * 2)
                        {
                            //更新值
                            aModbusItem.Value = aValue.Values.Value;
                            aModbusItem.UpdateTime = DateTime.Now;
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                        //break;
                    default:
                        return false;
                        //break;
                }

            }
            else
            {
                return false;
            }

            //return true;
        }
        private TestSetFolder CreateTestSetNames(List<string> TestSetNames, TestSetFolder TSFolder)
        {
            List<ItemValue> tcList = new List<ItemValue>();
              #region Generate TestSet Name
              //Get all match test cases and store it to a List
              try
              {
            ICommand com = tdConn.Command as ICommand;
            string[] columnName = { "TS_TEST_ID", configFile.CaseFilter.TestSetName };

            string sqlCommand = GenerateSQLText(columnName);
            com.CommandText = sqlCommand;

            IRecordset recList = com.Execute() as IRecordset;

            recList.First();
            for (int num = 0; num < recList.RecordCount; num++)
            {
              ItemValue tc = new ItemValue();
              tc.Test_ID = recList["TS_TEST_ID"].ToString();
              if (recList[configFile.CaseFilter.TestSetName] != null)
            tc.Test_Custom = recList[configFile.CaseFilter.TestSetName].ToString();
              tcList.Insert(0, tc);
              recList.Next();
            }
              }
              catch (Exception e)
              {
            AutoLog.Info("AutoIntSys: Exception with " + e.Message);
            AutoLog.Info("AutoIntSys: Fail to get Specified Field Value from TEST Table!");
            //Debug.Print("AutoIntSys:Fail to get Specified Field Value from TEST Table!");
            //Debug.Print("AutoIntSys:" + e);
            return null;
              }
              #endregion

              #region Generate TestSet
              try
              {
            TestSetFactory TSFact = TSFolder.TestSetFactory as TestSetFactory;
            TestFactory TestFact = tdConn.TestFactory as TestFactory;
            foreach (string TSName in TestSetNames)
            {
              TestSet TestSetName;
              TSTestFactory TSTestFact;

              TestSetName = TSFact.AddItem(TSName) as TestSet;
              TestSetName.Post();
              TSTestFact = TestSetName.TSTestFactory as TSTestFactory;

              foreach (ItemValue t in tcList)
              {
            if (t.Test_Custom == TSName)
              TSTestFact.AddItem(t.Test_ID);
              }
            }

            createTSSucess = true;
            return TSFolder;
              }
              catch (Exception e)
              {
            AutoLog.Info("AutoIntSys: Exception with " + e.Message);
            AutoLog.Info("AutoIntSys: Create Test Sets Error!");
            //Debug.Print("AutoIntSys:Create Test Sets Error!");
            //Debug.Print("AutoIntSys:" + e.Message);
            return null;
              }
              #endregion
        }
Exemplo n.º 56
0
        /// <summary>
        /// Writes a value to the device.
        /// </summary>
        public IdentifiedResult Write(string itemID, string locale, ItemValue value)
        {
            lock (this)
            {
                if (m_disposed) throw new ObjectDisposedException("Opc.Da.Cache");

                if (itemID == null || itemID.Length == 0)
                {
                    return new IdentifiedResult(itemID, ResultID.Da.E_INVALID_ITEM_NAME);
                }

                CacheItem item = LookupItem(itemID);

                if (item == null)
                {
                    return new IdentifiedResult(itemID, ResultID.Da.E_UNKNOWN_ITEM_NAME);
                }

                return item.Write(locale, value, m_supportsCOM);
            }
        }
Exemplo n.º 57
0
        public void WriteWord (string tag, int value)
        {
            if (Connected)
            {
                tag = _OpcSection.Server.Channel + "." + _OpcSection.Server.Device + "." + tag;
                //tag = _OpcSection.Server.Channel + tag;
                _logger.LogInfo("OPC - Write Tag: " + tag + "; Value: " + value.ToString());
                Item[] itemToAdd = new Item[1];
                itemToAdd[0] = new Item();
                itemToAdd[0].ItemName = tag;

                ItemValue[] writeValues = new ItemValue[1];
                writeValues[0] = new ItemValue(itemToAdd[0]);

                bool itemFound = false;
                foreach (Item item in _groupWrite.Items)
                {
                    if (item.ItemName == itemToAdd[0].ItemName)
                    {
                        writeValues[0].ServerHandle = item.ServerHandle;
                        itemFound = true;
                        break;
                    }
                }

                if (!itemFound)
                {
                    _groupWrite.AddItems(itemToAdd);
                    writeValues[0].ServerHandle = _groupWrite.Items[_groupWrite.Items.Length - 1].ServerHandle;
                }

                writeValues[0].Value = value;
                _groupWrite.Write(writeValues);
                /*Marlon: try catch added by Bruce but forgot to write values to array, see above.
                if (!itemFound)
                    try
                    {
                        _GroupWrite.AddItems(itemToAdd);
                        writeValues[0].ServerHandle = _GroupWrite.Items[_GroupWrite.Items.Length - 1].ServerHandle;
                        writeValues[0].Value = value;
                        _GroupWrite.Write(writeValues);
                    }
                    catch (Exception ex)
                    {
                        _logger.LogError(ex);
                        throw ex;
                    }*/
            }
        }
Exemplo n.º 58
0
 private static void _GiveItem(ClientInfo _cInfo, bool _announce)
 {
     string _randomItem = list.RandomObject();
     ItemValue _itemValue = new ItemValue();
     if (GameItems.Dict.ContainsKey(_randomItem))
     {
         _itemValue = GameItems.Dict[_randomItem].Clone();
     }
     else
     {
         _randomItem = _randomItem.ToLower();
         foreach (KeyValuePair<string, ItemValue> _key in GameItems.Dict)
         {
             if (_key.Key.ToLower().Equals(_randomItem))
             {
                 _itemValue = _key.Value.Clone();
             }
         }
     }
     EntityPlayer _player = GameManager.Instance.World.Players.dict[_cInfo.entityId];
     if (_itemValue.HasQuality)
     {
         int _quality = random.Next(1, 600);
         _itemValue.Quality = _quality;
     }
     int[] _counts;
     if (dict.TryGetValue(_randomItem, out _counts))
     {
         int _count = random.Next(_counts[0], _counts[1]);
         ItemStack _itemDrop = new ItemStack(_itemValue, _count);
         GameManager.Instance.ItemDropServer(_itemDrop, _player.GetPosition(), Vector3.zero, -1, 60);
         string _phrase7;
         if (!Phrases.Dict.TryGetValue(7, out _phrase7))
         {
             _phrase7 = "{PlayerName} has received {ItemCount} {ItemName}.";
         }
         _phrase7 = _phrase7.Replace("{PlayerName}", _cInfo.playerName);
         _phrase7 = _phrase7.Replace("{ItemCount}", _count.ToString());
         _phrase7 = _phrase7.Replace("{ItemName}", _randomItem);
         if (_announce || AlwaysShowResponse)
         {
             GameManager.Instance.GameMessageServer(_cInfo, EnumGameMessages.Chat, string.Format("{0}{1}[-]", CustomCommands.ChatColor, _phrase7), "Server", false, "", false);
         }
         else
         {
             _cInfo.SendPackage(new NetPackageGameMessage(EnumGameMessages.Chat, string.Format("{0}{1}[-]", CustomCommands.ChatColor, _phrase7), "Server", false, "", false));
         }
         PersistentContainer.Instance.Players[_cInfo.playerId, true].LastGimme = DateTime.Now;
         PersistentContainer.Instance.Save();
     }
 }