Beispiel #1
0
        private void PlayerInfo_AutoSellItemUpdated()
        {
            var autoSellItem = string.Join("|", AutoSellItemList.ToArray());

            IniHelper.Account.WriteString(Id.ToString(), "AutoSellItem", autoSellItem);

            SellAndDropItem();
        }
Beispiel #2
0
        public void InitPlayerAccount()
        {
            var autoSellItem = IniHelper.Account.GetString(Id.ToString(), "AutoSellItem");
            var spSellItem   = autoSellItem.Split('|');

            foreach (var item in spSellItem)
            {
                if (ushort.TryParse(item, out var id))
                {
                    AutoSellItemList.Add(id);
                }
            }
            var isAutoSell = IniHelper.Account.GetString(Id.ToString(), "IsAutoSell");

            if (bool.TryParse(isAutoSell, out var result))
            {
                IsAutoSell = result;
            }

            var isSellWhenFull = IniHelper.Account.GetString(Id.ToString(), "IsSellWhenFull");

            if (bool.TryParse(isSellWhenFull, out result))
            {
                IsSellWhenFull = result;
            }

            var autoDropItem = IniHelper.Account.GetString(Id.ToString(), "AutoDropItem");
            var spDropItem   = autoDropItem.Split('|');

            foreach (var item in spDropItem)
            {
                if (ushort.TryParse(item, out var id))
                {
                    AutoDropItemList.Add(id);
                }
            }
            var isAutoDrop = IniHelper.Account.GetString(Id.ToString(), "IsAutoDrop");

            if (bool.TryParse(isAutoDrop, out result))
            {
                IsAutoDrop = result;
            }

            var eventNoStr = IniHelper.Account.GetString(Id.ToString(), "WoodManEventNo");

            if (byte.TryParse(eventNoStr, out var eventNo))
            {
                _socket.WoodManInfo.EventNo = eventNo;
            }

            InfoUpdated?.Invoke();

            AutoSellItemUpdated?.Invoke();
            AutoDropItemUpdated?.Invoke();

            AutoSellItemUpdated += PlayerInfo_AutoSellItemUpdated;
            AutoDropItemUpdated += PlayerInfo_AutoDropItemUpdated;
        }
Beispiel #3
0
        public void SellAndDropItem()
        {
            if (!IsAutoSell && !IsAutoDrop)
            {
                return;
            }
            if (IsAutoSellingOrDropping)
            {
                return;
            }

            IsAutoSellingOrDropping = true;
            var bagItems = BagItems;
            var flag     = false;

            for (byte pos = 1; pos <= 50; pos++)
            {
                if (bagItems[pos].Id <= 0)
                {
                    continue;
                }

                if (IsAutoSell && AutoSellItemList.Contains(bagItems[pos].Id))
                {
                    if (IsSellWhenFull)
                    {
                        flag = (bagItems[pos].Qty == 50 || !DataManagers.ItemManager.IsOverlap(bagItems[pos].Id));
                    }
                    else
                    {
                        flag = true;
                    }

                    if (flag)
                    {
                        _socket.SendPacket(new PacketBuilder(0x1B, 0x03).Add(pos).Build());
                        break;
                    }
                }
                else if (IsAutoDrop && AutoDropItemList.Contains(bagItems[pos].Id))
                {
                    flag = true;
                    _socket.SendPacket(new PacketBuilder(0x17, 0x03).Add(pos).Add(bagItems[pos].Qty).Add((byte)1).Build());
                    _socket.SendPacket(new PacketBuilder(0x17, 0x7C).Add(pos).Add(bagItems[pos].Qty).Add((byte)2).Build());
                    break;
                }
            }

            if (flag)
            {
                var _ = new Timer(CheckSellOrDropAnswer, null, 2000, Timeout.Infinite);
            }
            else
            {
                IsAutoSellingOrDropping = false;
            }
        }
Beispiel #4
0
        public void DelAutoSellItemIdx(int idx)
        {
            if (AutoSellItemList.Count <= idx)
            {
                return;
            }
            AutoSellItemList.RemoveAt(idx);

            AutoSellItemUpdated?.Invoke();
        }
Beispiel #5
0
        public void AddAutoSellItemIdx(int idx)
        {
            if (idx <= 0 || idx >= BagItems.Length || BagItems[idx].Id == 0)
            {
                return;
            }
            if (AutoSellItemList.Contains(BagItems[idx].Id))
            {
                return;
            }
            AutoSellItemList.Add(BagItems[idx].Id);

            AutoSellItemUpdated?.Invoke();
        }