private void PlayerInfo_AutoDropItemUpdated() { var autoDropItem = string.Join("|", AutoDropItemList.ToArray()); IniHelper.Account.WriteString(Id.ToString(), "AutoDropItem", autoDropItem); SellAndDropItem(); }
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; }
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; } }
public void DelAutoDropItemIdx(int idx) { if (AutoDropItemList.Count <= idx) { return; } AutoDropItemList.RemoveAt(idx); AutoDropItemUpdated?.Invoke(); }
public void AddAutoDropItemIdx(int idx) { if (idx <= 0 || idx >= BagItems.Length || BagItems[idx].Id == 0) { return; } if (AutoDropItemList.Contains(BagItems[idx].Id)) { return; } AutoDropItemList.Add(BagItems[idx].Id); AutoDropItemUpdated?.Invoke(); }