static void DoCombo() { if (W.Ready && myMenu.Get <MenuCheckbox>("cbW").Checked) { var WTarget = TSW.GetTarget(myHero.Position, W.Data.Range, (x) => W.Data.GetDamage(x)); CastW(WTarget); } if (E.Ready && myMenu.Get <MenuCheckbox>("cbE").Checked) { var ETarget = TSE.GetTarget(myHero.Position, E.Data.Range, (x) => E.Data.GetDamage(x)); CastE(ETarget); } if (Q.Ready && myMenu.Get <MenuCheckbox>("cbQ").Checked) { if (myMenu.Get <MenuCheckbox>("cbWE").Checked&& !W.Ready && !E.Ready) { return; } var QTarget = TSQ.GetTarget(myHero.Position, Q.Data.ChargedMaxRange + myMenu.Get <MenuSlider>("QExtend").CurrentValue, (x) => Q.Data.GetDamage(x)); CastQ(QTarget); } }
static void DoHarass() { if (E.Ready && myHero.ManaPercent >= myMenu.Get <MenuSlider>("hrMPE").CurrentValue&& myMenu.Get <MenuCheckbox>("hrE").Checked) { var ETarget = TSE.GetTarget(myHero.Position, E.Data.Range, (x) => E.Data.GetDamage(x)); CastE(ETarget); } if (W.Ready && myHero.ManaPercent >= myMenu.Get <MenuSlider>("hrMPW").CurrentValue&& myMenu.Get <MenuCheckbox>("hrW").Checked) { var WTarget = TSW.GetTarget(myHero.Position, W.Data.Range, (x) => W.Data.GetDamage(x)); CastW(WTarget); } if (Q.Ready && (QData.Active || myHero.ManaPercent >= myMenu.Get <MenuSlider>("hrMPQ").CurrentValue) && myMenu.Get <MenuCheckbox>("hrQ").Checked) { if (myMenu.Get <MenuCheckbox>("hrWE").Checked&& !W.Ready && !E.Ready) { return; } var QTarget = TSQ.GetTarget(myHero.Position, Q.Data.ChargedMaxRange + myMenu.Get <MenuSlider>("QExtend").CurrentValue, (x) => Q.Data.GetDamage(x)); CastQ(QTarget); } }
/// <summary> /// File upload packet of segments to upload in separated threads /// </summary> /// <param name="AccountSrc"></param> /// <param name="AccountDst"></param> /// <param name="MailSendParam_"></param> /// <param name="MF"></param> /// <param name="FileName"></param> /// <param name="FileSegmentProgress"></param> /// <param name="FileSegmentCount"></param> /// <param name="FileSegmentToDo"></param> /// <param name="FileSegmentSize"></param> /// <param name="SegmentMode"></param> /// <param name="SegmentImageSize"></param> /// <param name="cancel"></param> public static bool FileUploadMsg(int[] AccountSrc, int[] AccountDst, List <MailSendParam> MailSendParam_, ref MailFile[] MF, string[] FileName, ref int[] FileSegmentProgress, int[] FileSegmentCount, int[] FileSegmentToDo, int FileSegmentSize, int SegmentMode, int SegmentImageSize, CancellationTokenSource cancel) { Stopwatch_ SW = new Stopwatch_(); // Assign slots to each used account to reuse as many of existing connection as possible for (int i = 0; i < AccountSrc.Length; i++) { int SmtpClientSlot = 0; HashSet <int> SmtpClientSlotUsed = new HashSet <int>(); SmtpClientSlotUsed.Clear(); for (int ii = 0; ii < MailSendParam_.Count; ii++) { if (MailSendParam_[ii].AccountSrcN == i) { SmtpClientSlotUsed.Add(MailSendParam_[ii].SmtpClientSlot); } } while (SmtpClientSlotUsed.Contains(SmtpClientSlot)) { SmtpClientSlot++; } for (int ii = 0; ii < MailSendParam_.Count; ii++) { if (MailSendParam_[ii].AccountSrcN == i) { if (MailSendParam_[ii].SmtpClientSlot < 0) { MailSendParam_[ii].SmtpClientSlot = SmtpClientSlot; SmtpClientSlot++; } } } } // Size of segment packet int TotalSize = 0; int I = 0; // If number of sending threads is 1, there is not necessary to create separate thread if (MailSendParam_.Count == 1) { MailSendParam MailSendParam___ = MailSendParam_[0]; MailSendParam___.Idx = I; MailSendParam___.ThreadNo = 1; MailSend(ref MailSendParam___, FileName, FileSegmentSize, FileSegmentCount, MailAccountList, AccountDst, SegmentMode, SegmentImageSize, cancel); } else { List <Thread> Thr = new List <Thread>(); while ((I < MailSendParam_.Count) && (I < ThreadsUpload)) { MailSendParam MailSendParam___ = MailSendParam_[I]; MailSendParam___.Idx = I; MailSendParam___.ThreadNo = Thr.Count + 1; Thread Thr_ = new Thread(() => MailSend(ref MailSendParam___, FileName, FileSegmentSize, FileSegmentCount, MailAccountList, AccountDst, SegmentMode, SegmentImageSize, cancel)); Thr_.Start(); Thr.Add(Thr_); I++; } foreach (Thread Thr_ in Thr) { Thr_.Join(); } I--; } // Encounting data size and removing segments from packet, which are sent correctly, // changing account number to next number in current group for not sent segments bool UploadedSomething = false; while (I >= 0) { if (MailSendParam_[I].Good) { UploadedSomething = true; MF[MailSendParam_[I].FileI].MapSet(MailSendParam_[I].FileSegmentNum, 1); FileSegmentProgress[MailSendParam_[I].FileI]++; TotalSize += MailSendParam_[I].FileSegmentSize; MailSendParam_.RemoveAt(I); } else { MF[MailSendParam_[I].FileI].MapSet(MailSendParam_[I].FileSegmentNum, 0); MailSendParam_[I].AccountSrcN++; if (AccountSrc[MailSendParam_[I].AccountSrcN] < 0) { MailSendParam_[I].AccountSrcN--; while (AccountSrc[MailSendParam_[I].AccountSrcN] >= 0) { MailSendParam_[I].AccountSrcN--; } MailSendParam_[I].AccountSrcN++; } MailSendParam_[I].AccountSrc = AccountSrc[MailSendParam_[I].AccountSrcN]; MailSendParam_[I].SmtpClientSlot = -1; } I--; } // Print progress after packet send attemp and transfer of the packet segments long GetDataSizeSum = 0; long GetDataSizeSegSum = 0; int FileSegmentProgressSum = 0; int FileSegmentToDoSum = 0; for (int i_ = 0; i_ < MF.Length; i_++) { GetDataSizeSum += MF[i_].GetDataSize(); GetDataSizeSegSum += MF[i_].GetDataSizeSeg(); FileSegmentProgressSum += FileSegmentProgress[i_]; FileSegmentToDoSum += FileSegmentToDo[i_]; } Console_WriteLine("Upload progress: " + FileSegmentProgressSum + "/" + FileSegmentToDoSum); Console_WriteLine("Upload speed: " + KBPS(TotalSize, SW.Elapsed())); Log(TSW.Elapsed().ToString(), LogDiffS(FileSegmentProgressSum).ToString(), FileSegmentProgressSum.ToString(), FileSegmentToDoSum.ToString(), LogDiffB(KBPS_Bytes).ToString(), KBPS_B(), GetDataSizeSum.ToString(), GetDataSizeSegSum.ToString()); // If uploaded something, return true, otherwise return false if (UploadedSomething) { return(true); } else { return(false); } }
private static void TxScrollWindowEx(IntPtr pThis, int dx, int dy, IntPtr lprcScroll, IntPtr lprcClip, IntPtr hrgnUpdate, IntPtr lprcUpdate, TSW fuScroll) => GetHost(pThis).TxScrollWindowEx(dx, dy, lprcScroll, lprcClip, hrgnUpdate, lprcUpdate, fuScroll);