예제 #1
0
        /// <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);
            }
        }
예제 #2
0
        /// <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.....
            }
        }
예제 #3
0
 void Start()
 {
     inventory = GetComponent <OtherInventory>();
     if (NetworkServer.active)
     {
         StartCoroutine(CheckNullAndFill());
     }
 }
예제 #4
0
    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];
        }
    }
예제 #5
0
    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();
    }
예제 #6
0
        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));
        }
예제 #7
0
        /// <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;
            }
        }
예제 #8
0
        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;
            }
        }
예제 #9
0
        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);
            }
        }
예제 #10
0
    //------------------------------

    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);
                }
            }
        }
    }
예제 #11
0
        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.....
            }
        }
예제 #12
0
파일: Trade.cs 프로젝트: snideran/SteamBot
        /// <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.....
            }
        }
예제 #13
0
파일: Trade.cs 프로젝트: snideran/SteamBot
        /// <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);
            }
        }
예제 #14
0
파일: Trade.cs 프로젝트: norgalyn/SteamBot
        /// <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);
        }
예제 #15
0
 public override void CancelCommand()
 {
     OtherInventory.AddItem(OtherItem, OtherSlot);
     EquipInventory.AddItem(EquipItem, EquipSlot);
 }
예제 #16
0
파일: Trade.cs 프로젝트: windykiss/SteamBot
        /// <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);
        }
예제 #17
0
 public void OpenOtherInventory(OtherInventory oi)
 {
     UIInventory.OtherInventory.gameObject.SetActive(true);
     UIInventory.setOtherInventory(oi);
 }
예제 #18
0
        /// <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;
            }
        }
예제 #19
0
    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;
        }
    }