/// <summary> /// Gets an item from a TradeEvent, and passes it into the UserHandler's implemented OnUserRemoveItem([...]) routine. /// Passes in null items if something went wrong. /// </summary> /// <param name="tradeEvent">TradeEvent to get item from</param> /// <returns></returns> private void FireOnUserRemoveItem(TradeEvent tradeEvent) { ulong itemID = (ulong)tradeEvent.assetid; if (OtherInventory != null) { Inventory.Item item = OtherInventory.GetItem(itemID); if (item != null) { Schema.Item schemaItem = CurrentSchema.GetItem(item.Defindex); if (schemaItem == null) { // TODO: Add log (counldn't find item in CurrentSchema) } OnUserRemoveItem(schemaItem, item); } else { // TODO: Log this (Couldn't find item in user's inventory can't find item in CurrentSchema OnUserRemoveItem(null, item); } } else { var schemaItem = GetItemFromPrivateBp(tradeEvent, itemID); if (schemaItem == null) { // TODO: Add log (counldn't find item in CurrentSchema) } OnUserRemoveItem(schemaItem, null); } }
/// <summary> /// Gets an item from a TradeEvent, and passes it into the UserHandler's implemented OnUserAddItem([...]) routine. /// Passes in null items if something went wrong. /// </summary> /// <param name="tradeEvent">TradeEvent to get item from</param> /// <returns></returns> private void FireOnUserAddItem(TradeEvent tradeEvent) { ulong itemID = tradeEvent.assetid; if (OtherInventory != null) { Inventory.Item item = OtherInventory.GetItem(itemID); if (item != null) { Schema.Item schemaItem = CurrentSchema.GetItem(item.Defindex); if (schemaItem == null) { Console.WriteLine("User added an unknown item to the trade."); } OnUserAddItem(schemaItem, item); } else { Console.WriteLine("User added an unknown item to the trade."); OnUserAddItem(null, item); } } else { var schemaItem = GetItemFromPrivateBp(tradeEvent, itemID); if (schemaItem == null) { Console.WriteLine("User added an unknown item to the trade."); } OnUserAddItem(schemaItem, null); // todo: figure out what to send in with Inventory item..... } }
void Start() { inventory = GetComponent <OtherInventory>(); if (NetworkServer.active) { StartCoroutine(CheckNullAndFill()); } }
void CmdCloseOtherInventory(GameObject otherinventory, int[] clientinventory) { OtherInventory otherinventorycom = otherinventory.GetComponent <OtherInventory>(); otherinventorycom.isOpened = false; for (int i = 0; i < 30; i++) { otherinventorycom.Items[i] = clientinventory[i]; } }
private void Interactions() { // Getting an eventual object. var collider = ObjectOver(); if (collider && collider.CompareTag("Treasure")) { var tmpInventory = collider.GetComponentInChildren <OtherInventory>(); if (Input.GetButtonDown("Use") == true) { var items = otherInventory.GetAllItems(); foreach (var item in items) { inventory.Add(item.Item1, item.Item2); } } if (tmpInventory != null) { if (otherInventory != null) { otherInventory.ToggleInventory(false); } otherInventory = tmpInventory; otherInventory.ToggleInventory(true); } } else if (collider && collider.CompareTag("Repairable")) { if (Input.GetButtonDown("Use") == true) { var repairable = collider.GetComponentInChildren <ARepairable>(); // Check if the player can repair the object. if ((repairable.Status() == ReperableStatus.Broken || repairable.Status() == ReperableStatus.Repairing) && scrap > 0) { repairable.Repair(1, _energy); scrap -= 1; } else { // Remove or add energy. _energy += repairable.Repair(1, _energy); } } } else if (otherInventory != null) { otherInventory.ToggleInventory(false); } // update the hud. hud.OnUpdate(); }
private Tuple <List <Schema.Item>, List <Schema.Item> > GetItems(TradeOffer offer) { Bot.GetInventory(); GetOtherInventory(); var myInventory = Bot.MyInventory; var myItems = offer.Items.GetMyItems(); var theirItems = offer.Items.GetTheirItems(); var myItemsWithSchema = myItems.Select( i => Schema.GetSchema().GetItem(myInventory.GetItem((ulong)i.AssetId).Defindex)).ToList(); var theirItemsWithSchema = theirItems.Select( i => Schema.GetSchema().GetItem(OtherInventory.GetItem((ulong)i.AssetId).Defindex)).ToList(); return(new Tuple <List <Schema.Item>, List <Schema.Item> >(myItemsWithSchema, theirItemsWithSchema)); }
/// <summary> /// Gets an item from a TradeEvent, and passes it into the UserHandler's implemented OnUserAddItem([...]) routine. /// Passes in null items if something went wrong. /// </summary> /// <param name="tradeEvent">TradeEvent to get item from</param> /// <returns></returns> private void FireOnUserAddItem(TradeEvent tradeEvent) { // TODO: Add log // Customer removed item ulong itemID = tradeEvent.assetid; if (null != OtherInventory) { Inventory.Item item = OtherInventory.GetItem(itemID); if (null != item) { Schema.Item schemaItem = CurrentSchema.GetItem(item.Defindex); if (null == schemaItem) { // TODO: Log this // Could not find item in schema. } OnUserAddItem(schemaItem, item); return; } else { // TODO: Log this // Could not find item in customer's inventory." // Cannot look for item in schema. OnUserAddItem(null, item); return; } } else { // Customer inventory is private. var schemaItem = GetItemFromPrivateBp(tradeEvent, itemID); if (null == schemaItem) { // TODO: Log this // Could not find item in schema. } OnUserAddItem(schemaItem, null); // todo: figure out what to send in with Inventory item..... return; } }
private void FireOnUserRemoveItem(TradeEvent tradeEvent) { ulong itemID = (ulong)tradeEvent.assetid; // TODO: Add log // Customer removed item [itemID] if (OtherInventory != null) { Inventory.Item item = OtherInventory.GetItem(itemID); if (null != item) { Schema.Item schemaItem = CurrentSchema.GetItem(item.Defindex); if (null == schemaItem) { // TODO: Add log // Could not find item in schema. } OnUserRemoveItem(schemaItem, item); return; } else { // TODO: Add log // Could not find item in customer's inventory. // Cannot look for item in schema. OnUserAddItem(null, item); return; } } else { // TODO: Add log // Customer inventory is private. var schemaItem = GetItemFromPrivateBp(tradeEvent, itemID); if (null == schemaItem) { // TODO: Add log // Could not find item in schema. } OnUserRemoveItem(schemaItem, null); return; } }
private void FireOnUserRemoveItem(TradeEvent tradeEvent) { ulong itemID = (ulong)tradeEvent.assetid; if (OtherInventory != null) { Inventory.Item item = OtherInventory.GetItem(itemID); Schema.Item schemaItem = CurrentSchema.GetItem(item.Defindex); OnUserRemoveItem(schemaItem, item); } else { var schemaItem = GetItemFromPrivateBp(tradeEvent, itemID); OnUserRemoveItem(schemaItem, null); } }
//------------------------------ public void setOtherInventory(OtherInventory oi) { otherinventory = oi; MaxIdx = otherinventory == null ? 35 : 65; if (otherinventory != null) { for (int i = 35; i < 65; i++) { int itn = otherinventory.Items[i - 35]; if (itn != -1) { MakeNewItem(i, itn, 1, ITEMPARENT.OTHER); } } } }
private void FireOnUserAddItem(TradeEvent tradeEvent) { ulong itemID = tradeEvent.assetid; if (OtherInventory != null) { Inventory.Item item = OtherInventory.GetItem(itemID); Schema.Item schemaItem = CurrentSchema.GetItem(item.Defindex); OnUserAddItem(schemaItem, item); } else { var schemaItem = GetItemFromPrivateBp(tradeEvent, itemID); OnUserAddItem(schemaItem, null); // todo: figure out what to send in with Inventory item..... } }
/// <summary> /// Gets an item from a TradeEvent, and passes it into the UserHandler's implemented OnUserAddItem([...]) routine. /// Passes in null items if something went wrong. /// </summary> private void FireOnUserAddItem(TradeUserAssets asset) { if (MeIsReady) { SetReady(false); } if (OtherInventory != null && !OtherInventory.IsPrivate) { Inventory.Item item = OtherInventory.GetItem(asset.assetid); if (item != null) { Schema.Item schemaItem = CurrentSchema.GetItem(item.Defindex); if (schemaItem == null) { Console.WriteLine("User added an unknown item to the trade."); } OnUserAddItem(schemaItem, item); } else { item = new Inventory.Item { Id = asset.assetid, AppId = asset.appid, ContextId = asset.contextid }; //Console.WriteLine("User added a non TF2 item to the trade."); OnUserAddItem(null, item); } } else { var schemaItem = GetItemFromPrivateBp(asset); if (schemaItem == null) { Console.WriteLine("User added an unknown item to the trade."); } OnUserAddItem(schemaItem, null); // todo: figure out what to send in with Inventory item..... } }
/// <summary> /// Gets an item from a TradeEvent, and passes it into the UserHandler's implemented OnUserRemoveItem([...]) routine. /// Passes in null items if something went wrong. /// </summary> /// <returns></returns> private void FireOnUserRemoveItem(TradeUserAssets asset) { if (MeIsReady) { SetReady(false); } if (OtherInventory != null) { Inventory.Item item = OtherInventory.GetItem(asset.assetid); if (item != null) { Schema.Item schemaItem = CurrentSchema.GetItem(item.Defindex); if (schemaItem == null) { // TODO: Add log (counldn't find item in CurrentSchema) } OnUserRemoveItem(schemaItem, item); } else { // TODO: Log this (Couldn't find item in user's inventory can't find item in CurrentSchema item = new Inventory.Item { Id = asset.assetid, AppId = asset.appid, ContextId = asset.contextid }; OnUserRemoveItem(null, item); } } else { var schemaItem = GetItemFromPrivateBp(asset); if (schemaItem == null) { // TODO: Add log (counldn't find item in CurrentSchema) } OnUserRemoveItem(schemaItem, null); } }
/// <summary> /// This updates the trade. This is called at an interval of a /// default of 800ms, not including the execution time of the /// method itself. /// </summary> /// <returns><c>true</c> if the other trade partner performed an action; otherwise <c>false</c>.</returns> public bool Poll() { bool otherDidSomething = false; if (!TradeStarted) { tradeStarted = true; // since there is no feedback to let us know that the trade // is fully initialized we assume that it is when we start polling. if (OnAfterInit != null) { OnAfterInit(); } } StatusObj status = GetStatus(); if (status == null) { throw new TradeException("The web command to get the trade status failed."); } // I've noticed this when the trade is cancelled. if (status.trade_status == 3) { if (OnError != null) { OnError("Trade was cancelled by other user."); } OtherUserCancelled = true; return(otherDidSomething); } if (status.events != null && numEvents != status.events.Length) { int numLoops = status.events.Length - numEvents; numEvents = status.events.Length; for (int i = numLoops; i > 0; i--) { int EventID; if (numLoops == 1) { EventID = numEvents - 1; } else { EventID = numEvents - i; } bool isBot = status.events [EventID].steamid == MySteamId.ConvertToUInt64().ToString(); /* * * Trade Action ID's * * 0 = Add item (itemid = "assetid") * 1 = remove item (itemid = "assetid") * 2 = Toggle ready * 3 = Toggle not ready * 4 * 5 * 6 * 7 = Chat (message = "text") * */ ulong itemID; switch (status.events [EventID].action) { case 0: itemID = (ulong)status.events [EventID].assetid; if (isBot) { steamMyOfferedItems.Add(itemID); ValidateSteamItemChanged(itemID, true); } else { OtherOfferedItems.Add(itemID); Inventory.Item item = OtherInventory.GetItem(itemID); Schema.Item schemaItem = CurrentSchema.GetItem(item.Defindex); OnUserAddItem(schemaItem, item); } break; case 1: itemID = (ulong)status.events [EventID].assetid; if (isBot) { steamMyOfferedItems.Remove(itemID); ValidateSteamItemChanged(itemID, false); } else { OtherOfferedItems.Remove(itemID); Inventory.Item item = OtherInventory.GetItem(itemID); Schema.Item schemaItem = CurrentSchema.GetItem(item.Defindex); OnUserRemoveItem(schemaItem, item); } break; case 2: if (!isBot) { otherIsReady = true; OnUserSetReady(true); } break; case 3: if (!isBot) { otherIsReady = false; OnUserSetReady(false); } break; case 4: if (!isBot) { OnUserAccept(); } break; case 7: if (!isBot) { OnMessage(status.events [EventID].text); } break; default: // Todo: add an OnWarning or similar event if (OnError != null) { OnError("Unkown Event ID: " + status.events [EventID].action); } break; } if (!isBot) { otherDidSomething = true; } } } // Update Local Variables if (status.them != null) { otherIsReady = status.them.ready == 1 ? true : false; meIsReady = status.me.ready == 1 ? true : false; } // Update version if (status.newversion) { Version = status.version; } if (status.logpos != 0) { LogPos = status.logpos; } return(otherDidSomething); }
public override void CancelCommand() { OtherInventory.AddItem(OtherItem, OtherSlot); EquipInventory.AddItem(EquipItem, EquipSlot); }
/// <summary> /// This updates the trade. This is called at an interval of a /// default of 800ms, not including the execution time of the /// method itself. /// </summary> /// <returns><c>true</c> if the other trade partner performed an action; otherwise <c>false</c>.</returns> public bool Poll() { bool otherDidSomething = false; if (!TradeStarted) { tradeStarted = true; // since there is no feedback to let us know that the trade // is fully initialized we assume that it is when we start polling. if (OnAfterInit != null) { OnAfterInit(); } } StatusObj status = GetStatus(); if (status == null) { throw new TradeException("The web command to get the trade status failed."); } // I've noticed this when the trade is cancelled. if (status.trade_status == 3) { if (OnError != null) { OnError("Trade was cancelled by other user."); } OtherUserCancelled = true; return(otherDidSomething); } if (status.events != null) { foreach (TradeEvent trdEvent in status.events) { if (!eventList.Contains(trdEvent)) { eventList.Add(trdEvent);//add event to processed list, as we are taking care of this event now bool isBot = trdEvent.steamid == MySteamId.ConvertToUInt64().ToString(); /* * * Trade Action ID's * * 0 = Add item (itemid = "assetid") * 1 = remove item (itemid = "assetid") * 2 = Toggle ready * 3 = Toggle not ready * 4 * 5 * 6 * 7 = Chat (message = "text") * */ ulong itemID; switch ((TradeEventType)trdEvent.action) { case TradeEventType.ItemAdded: itemID = (ulong)trdEvent.assetid; if (isBot) { steamMyOfferedItems.Add(itemID); ValidateSteamItemChanged(itemID, true); Inventory.Item item = MyInventory.GetItem(itemID); Schema.Item schemaItem = CurrentSchema.GetItem(item.Defindex); } else { OtherOfferedItems.Add(itemID); Inventory.Item item = OtherInventory.GetItem(itemID); Schema.Item schemaItem = CurrentSchema.GetItem(item.Defindex); OnUserAddItem(schemaItem, item); } break; case TradeEventType.ItemRemoved: itemID = (ulong)trdEvent.assetid; if (isBot) { steamMyOfferedItems.Remove(itemID); ValidateSteamItemChanged(itemID, false); Inventory.Item item = MyInventory.GetItem(itemID); Schema.Item schemaItem = CurrentSchema.GetItem(item.Defindex); } else { OtherOfferedItems.Remove(itemID); Inventory.Item item = OtherInventory.GetItem(itemID); Schema.Item schemaItem = CurrentSchema.GetItem(item.Defindex); OnUserRemoveItem(schemaItem, item); } break; case TradeEventType.UserSetReady: if (!isBot) { otherIsReady = true; OnUserSetReady(true); } break; case TradeEventType.UserSetUnReady: if (!isBot) { otherIsReady = false; OnUserSetReady(false); } break; case TradeEventType.UserAccept: if (!isBot) { OnUserAccept(); } break; case TradeEventType.UserChat: if (!isBot) { OnMessage(trdEvent.text); } break; default: // Todo: add an OnWarning or similar event if (OnError != null) { OnError("Unknown Event ID: " + trdEvent.action); } break; } if (!isBot) { otherDidSomething = true; } } //if (!eventList.Contains(trdEvent)) } // foreach (TradeEvent trdEvent in status.events) } //if (status.events != null) // Update Local Variables if (status.them != null) { otherIsReady = status.them.ready == 1 ? true : false; meIsReady = status.me.ready == 1 ? true : false; } // Update version if (status.newversion) { Version = status.version; } if (status.logpos != 0) { LogPos = status.logpos; } return(otherDidSomething); }
public void OpenOtherInventory(OtherInventory oi) { UIInventory.OtherInventory.gameObject.SetActive(true); UIInventory.setOtherInventory(oi); }
/// <summary> /// This updates the trade. This is called at an interval of a /// default of 800ms, not including the execution time of the /// method itself. /// </summary> public void Poll() { if (!TradeStarted) { tradeStarted = true; tradeStartTime = DateTime.Now; lastOtherActionTime = DateTime.Now; } StatusObj status = GetStatus(); if (status == null) { throw new TradeException("The web command to get the trade status failed."); } // I've noticed this when the trade is cancelled. if (status.trade_status == 3) { if (OnError != null) { OnError("Trade was cancelled by other user."); } OtherUserCancelled = true; return; } if (status.events != null && numEvents != status.events.Length) { int numLoops = status.events.Length - numEvents; numEvents = status.events.Length; for (int i = numLoops; i > 0; i--) { int EventID; if (numLoops == 1) { EventID = numEvents - 1; } else { EventID = numEvents - i; } bool isBot = status.events [EventID].steamid == MySteamId.ConvertToUInt64().ToString(); /* * * Trade Action ID's * * 0 = Add item (itemid = "assetid") * 1 = remove item (itemid = "assetid") * 2 = Toggle ready * 3 = Toggle not ready * 4 * 5 * 6 * 7 = Chat (message = "text") * */ ulong itemID; switch (status.events [EventID].action) { case 0: itemID = (ulong)status.events [EventID].assetid; if (isBot) { steamMyOfferedItems.Add(itemID); ValidateSteamItemChanged(itemID, true); } else { OtherOfferedItems.Add(itemID); Inventory.Item item = OtherInventory.GetItem(itemID); Schema.Item schemaItem = CurrentSchema.GetItem(item.Defindex); OnUserAddItem(schemaItem, item); } break; case 1: itemID = (ulong)status.events [EventID].assetid; if (isBot) { steamMyOfferedItems.Remove(itemID); ValidateSteamItemChanged(itemID, false); } else { OtherOfferedItems.Remove(itemID); Inventory.Item item = OtherInventory.GetItem(itemID); Schema.Item schemaItem = CurrentSchema.GetItem(item.Defindex); OnUserRemoveItem(schemaItem, item); } break; case 2: if (!isBot) { otherIsReady = true; OnUserSetReady(true); } break; case 3: if (!isBot) { otherIsReady = false; OnUserSetReady(false); } break; case 4: if (!isBot) { OnUserAccept(); } break; case 7: if (!isBot) { OnMessage(status.events [EventID].text); } break; default: // Todo: add an OnWarning or similar event if (OnError != null) { OnError("Unkown Event ID: " + status.events [EventID].action); } break; } if (!isBot) { lastOtherActionTime = DateTime.Now; } } } else { // check if the user is AFK var now = DateTime.Now; DateTime actionTimeout = lastOtherActionTime.AddSeconds(MaximumActionGap); int untilActionTimeout = (int)Math.Round((actionTimeout - now).TotalSeconds); DateTime tradeTimeout = TradeStartTime.AddSeconds(MaximumTradeTime); int untilTradeTimeout = (int)Math.Round((tradeTimeout - now).TotalSeconds); if (untilActionTimeout <= 0 || untilTradeTimeout <= 0) { if (OnTimeout != null) { OnTimeout(); } CancelTrade(); } else if (untilActionTimeout <= 15 && untilActionTimeout % 5 == 0) { SendMessageWebCmd("Are You AFK? The trade will be canceled in " + untilActionTimeout + " seconds if you don't do something."); } } // Update Local Variables if (status.them != null) { otherIsReady = status.them.ready == 1 ? true : false; meIsReady = status.me.ready == 1 ? true : false; } // Update version if (status.newversion) { Version = status.version; } if (status.logpos != 0) { LogPos = status.logpos; } }
void Controll() { GameMng.instance.PressE.SetActive(false); RaycastHit hitinfo; bool israyhit = Physics.Raycast(Camera.main.transform.position, Camera.main.transform.forward, out hitinfo, 8.0f); if (PlayerType == PLAYERTYPE.HEALER && Input.GetKeyDown(KeyCode.Mouse0) && israyhit) { if (hitinfo.transform.gameObject.CompareTag("Player")) { HealTarget = hitinfo.transform.gameObject; } } if (Input.GetKeyDown(KeyCode.F)) { CmdSetFlash(!FlashActive); } if (!isOtherInvOn && !isWorkBenchOn) { if (!isInvOn) { if (Input.GetKeyDown(KeyCode.Q)) { OpenInventory(); } } else if (Input.GetKeyDown(KeyCode.Q) || Input.GetKeyDown(KeyCode.Escape)) { CloseInventory(); } } if (!isInvOn) { if (!isWorkBenchOn) { if (israyhit) { workbench = hitinfo.transform.GetComponent <WorkBench>(); if (workbench != null) { GameMng.instance.PressE.SetActive(true); if (Input.GetKeyDown(KeyCode.E)) { isWorkBenchOn = true; workbench.OpenWorkBech(); } } } } else { if ((Input.GetKeyDown(KeyCode.E) || Input.GetKeyDown(KeyCode.Escape)) && workbench != null) { isWorkBenchOn = false; workbench.CloseWorkBech(); } } } if (!isOtherInvOn) { if (israyhit) { otherInventory = hitinfo.transform.GetComponent <OtherInventory>(); if (otherInventory != null && otherInventory.enabled) { GameMng.instance.PressE.SetActive(true); if (Input.GetKeyDown(KeyCode.E)) { isOtherInvOn = true; otherinventoryobject = hitinfo.transform.gameObject; OpenOtherInventory(otherinventoryobject); } } } } else { if ((Input.GetKeyDown(KeyCode.E) || Input.GetKeyDown(KeyCode.Escape)) && otherInventory != null) { isOtherInvOn = false; CloseOtherInventory(otherinventoryobject, inventory.gameObject); if (otherInventory.OpenToDestroy) { Destroy(otherInventory.gameObject); } } } if (isInvOn || isWorkBenchOn || isWorkBenchOn) { return; } if (Input.GetKeyDown(KeyCode.Mouse0) && PlayerState == (PlayerState | PLAYERSTATE.ZOOM)) { Shoot(Camera.main.transform.position, Camera.main.transform.forward); } for (KeyCode k = KeyCode.Alpha1; k < KeyCode.Alpha6; k++) { if (Input.GetKeyDown(k)) { playerstatus.setEquipItem((int)k - 49); } } Item eitem = inventory.UIInventory.getItemByNum(playerstatus.EquipItem + 30); if (israyhit && eitem != null) { barrier = hitinfo.transform.GetComponent <Barrier>(); Door door = hitinfo.transform.GetComponent <Door>(); if (door != null && Input.GetMouseButtonDown(1)) { CmdOpenCloseDoor(door.gameObject); } if (eitem.id == 25 && Input.GetMouseButtonDown(0)) { inventory.UIInventory.DestroyItem(inventory.UIInventory.getItemByNum(30 + playerstatus.EquipItem), 1); SpawnCampFire(hitinfo.point + (Vector3.one / 2.0f)); clearmng.setCampFirePlant(); } if (barrier != null && barrier.isBroken && ItemDatabase.instance.Items[eitem.id].itemType == ItemDatabase.ItemType.RepairMaterial && barrier.gameObject.CompareTag("Window")) { barrier.meshrenderer.material = GameMng.instance.RepairMaterials[eitem.id - 13]; barrier.isPreview = true; if (Input.GetMouseButtonDown(0)) { inventory.UIInventory.DestroyItem(inventory.UIInventory.getItemByNum(30 + playerstatus.EquipItem), 1); CmdSetNewBarrier(barrier.gameObject, eitem.id - 13); } } if (eitem.id == 26 && Input.GetMouseButtonDown(0)) { inventory.UIInventory.DestroyItem(inventory.UIInventory.getItemByNum(30 + playerstatus.EquipItem), 1); CmdSetRadio(hitinfo.point + (Vector3.one / 2.0f)); clearmng.setRadio(); } } if ((Input.GetKeyDown(KeyCode.Space) || Input.GetAxis("Mouse ScrollWheel") > 0f) && isGround) { JumpFlag = true; } foreach (var item in FindObjectsOfType <Barrier>()) { item.isPreview = false; } }