/// <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; }
public BinderItem(ItemValue itemValue) { bindItemData(DataItem.getItemDataByItemValue(itemValue)); itemStack = createItemStack(DataItem.getItemDataByItemValue(itemValue), itemValue); bindItemValue(itemValue); }
public BinderItem(DataItem itemData) { bindItemData(itemData); itemValue = new ItemValue(); populateItemValue(itemValue, itemData); itemStack = createItemStack(itemData, itemValue); }
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); }
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; }
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); } } }
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); }
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); }
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); }
/// <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)); }
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; } }
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; }
/** * 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)); }
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); }
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)); } }
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); } }
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); } }
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)); } }
/// <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()); } }
/// <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); }
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"); } }
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); }
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); } } } }
/// <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(); } } }
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); }
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 { } }
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()); }
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); }
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; }
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); } }
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); } }
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); } }
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)); } }
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(); } }
/// <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()); }
/// <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); } }
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); }
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; }
/// <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); }
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(); } } }
public static DataItem getItemDataByItemValue(ItemValue itemValue) { return getItemDataById(itemValue.type.get()); }
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; }
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); } } } }
/// <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; }
private ItemStack createItemStack(DataItem itemData, ItemValue itemValue) { ItemStack itemStack = new ItemStack(); itemStack.count = new Value<int>(itemData.stackNumber); itemStack.itemValue = itemValue; return itemStack; }
//====================================================================== // 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)); } }
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; } } } }
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"); }
/// <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; }
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; } } } } }
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); }
/// <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 }
/// <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); } }
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; }*/ } }
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(); } }