Skip to content

Commit 3b0e7c0

Browse files
authored
Merge pull request #97 from Erol444/hotfix-06-04-2022
Hotfix 06 04 2022
2 parents 0aedde7 + 3db5604 commit 3b0e7c0

File tree

5 files changed

+62
-48
lines changed

5 files changed

+62
-48
lines changed

TbsCore/Models/Logging/LogOutput.cs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ public string GetLog(string username)
3636
lock (objLock)
3737
{
3838
var log = string.Join("", _logs[username]);
39+
3940
return log;
4041
}
4142
}
@@ -49,14 +50,17 @@ public string GetLastLog(string username)
4950

5051
public void Add(string username, string message)
5152
{
52-
_logs[username].AddFirst(message);
53-
// keeps 200 message
54-
while (_logs[username].Count > 200)
53+
lock (objLock)
5554
{
56-
_logs[username].RemoveLast();
57-
}
55+
_logs[username].AddFirst(message);
56+
// keeps 200 message
57+
while (_logs[username].Count > 200)
58+
{
59+
_logs[username].RemoveLast();
60+
}
5861

59-
OnUpdateLog(username);
62+
OnUpdateLog(username);
63+
}
6064
}
6165

6266
public void AddUsername(string username)

TbsCore/Tasks/LowLevel/HeroEquip.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public override async Task<TaskRes> Execute(Account acc)
2121
var (item, amount) = use;
2222

2323
var (category, _, _) = HeroHelper.ParseHeroItem(item);
24-
if (category != HeroItemCategory.Resource || category != HeroItemCategory.Stackable || category != HeroItemCategory.NonStackable)
24+
if (category != HeroItemCategory.Resource && category != HeroItemCategory.Stackable && category != HeroItemCategory.NonStackable)
2525
{
2626
// Check if hero is at home
2727
if (acc.Hero.Status != Hero.StatusEnum.Home)

TbsCore/Tasks/LowLevel/SellOnAuctions.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,10 @@ namespace TbsCore.Tasks.LowLevel
1111
{
1212
public class SellOnAuctions : BotTask
1313
{
14+
private readonly Random rand = new Random();
15+
1416
public override async Task<TaskRes> Execute(Account acc)
17+
1518
{
1619
if (acc.AccInfo.ServerVersion == ServerVersionEnum.TTwars) return TaskRes.Executed;
1720
if (!acc.Wb.CurrentUrl.Contains("auction?action=sell"))
@@ -87,7 +90,7 @@ public override async Task<TaskRes> Execute(Account acc)
8790
var element = acc.Wb.Driver.FindElement(By.XPath(nodeItemXPath.XPath));
8891
if (element == null) continue;
8992
element.Click();
90-
await Task.Delay(600);
93+
await Task.Delay(rand.Next(1500, 2500));
9194

9295
int counter = 3;
9396
do

TbsCore/Tasks/LowLevel/UpgradeBuilding.cs

Lines changed: 46 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using HtmlAgilityPack;
2+
using OpenQA.Selenium;
23
using System;
34
using System.Linq;
45
using System.Threading.Tasks;
@@ -35,6 +36,7 @@ public override async Task<TaskRes> Execute(Account acc)
3536
await SwitchVillage(acc);
3637

3738
var firstComplete = Vill.Build.CurrentlyBuilding.FirstOrDefault();
39+
if (firstComplete == null) continue;
3840
NextExecute = TimeHelper.RanDelay(acc, firstComplete.Duration);
3941
acc.Logger.Information($"Next building will be contructed after {firstComplete.Building} - level {firstComplete.Level} complete. ({NextExecute})", this);
4042
return TaskRes.Executed;
@@ -122,7 +124,7 @@ public override async Task<TaskRes> Execute(Account acc)
122124
acc.Logger.Warning($"Not enough resources to construct {_buildingTask.Building} - Level {_buildingTask.Level}! Needed {cost}. Bot will try finish the task later", this);
123125
DateTime enoughRes = TimeHelper.EnoughResToUpgrade(Vill, stillNeededRes);
124126
NextExecute = TimeHelper.RanDelay(acc, enoughRes);
125-
continue;
127+
return TaskRes.Executed;
126128
}
127129
var heroRes = HeroHelper.GetHeroResources(acc);
128130

@@ -265,11 +267,12 @@ private async Task<bool> Upgrade(Account acc, HtmlNode node)
265267
var watchAd = false;
266268
if (acc.AccInfo.ServerVersion == ServerVersionEnum.T4_5 && buildDuration.TotalMinutes > acc.Settings.WatchAdAbove)
267269
{
268-
watchAd = await TryFastUpgrade(acc);
270+
// watchAd = await TryFastUpgrade(acc);
269271
}
270272

271273
if (!watchAd)
272274
{
275+
upgradeButton = buttons.FirstOrDefault(x => x.HasClass("build"));
273276
await DriverHelper.ClickById(acc, upgradeButton.Id); // Normal upgrade
274277
}
275278

@@ -321,65 +324,68 @@ private void PostTaskCheckDorf(Account acc)
321324
/// <returns>Whether bot watched the ad</returns>
322325
private async Task<bool> TryFastUpgrade(Account acc)
323326
{
324-
if (!await DriverHelper.ClickByClassName(acc, "videoFeatureButton green", log: false)) return false;
325-
await Task.Delay(AccountHelper.Delay(acc));
327+
acc.Wb.UpdateHtml();
328+
var nodeFastUpgrade = acc.Wb.Html.DocumentNode.Descendants("button").FirstOrDefault(x => x.HasClass("videoFeatureButton") && x.HasClass("green"));
329+
if (nodeFastUpgrade == null) return false;
330+
var elementFastUpgrade = acc.Wb.Driver.FindElement(By.XPath(nodeFastUpgrade.XPath));
331+
if (elementFastUpgrade == null) return false;
332+
elementFastUpgrade.Click();
333+
334+
await Task.Delay(rand.Next(1000, 2000));
326335

327336
// Confirm
328337
acc.Wb.UpdateHtml();
329-
if (acc.Wb.Html.DocumentNode.SelectSingleNode("//input[@name='adSalesVideoInfoScreen']") != null)
338+
var node = acc.Wb.Html.DocumentNode.SelectSingleNode("//input[@name='adSalesVideoInfoScreen']");
339+
if (node != null)
330340
{
331-
await DriverHelper.ClickByName(acc, "adSalesVideoInfoScreen");
332-
await Task.Delay(AccountHelper.Delay(acc));
333-
341+
var element = acc.Wb.Driver.FindElement(By.XPath(node.XPath));
342+
if (element == null)
343+
{
344+
await acc.Wb.Refresh();
345+
return false;
346+
}
347+
element.Click();
334348
await DriverHelper.ExecuteScript(acc, "jQuery(window).trigger('showVideoWindowAfterInfoScreen')");
335-
await Task.Delay(AccountHelper.Delay(acc));
336349
}
337350

338-
while (true)
351+
await Task.Delay(rand.Next(10000, 18000));
352+
353+
// click to play video
354+
acc.Wb.UpdateHtml();
355+
var nodeIframe = acc.Wb.Html.GetElementbyId("videoFeature");
356+
if (nodeIframe == null)
339357
{
340-
acc.Wb.UpdateHtml();
341-
var node = acc.Wb.Html.GetElementbyId("videoFeature");
342-
if (node == null) continue;
343-
var element = acc.Wb.Driver.FindElementById("videoFeature");
344-
if (element == null) continue;
345-
element.Click();
346-
break;
358+
await acc.Wb.Refresh();
359+
return false;
347360
}
348-
// Has to be a legit "click"
349-
350-
// wait for finish watching ads
351-
var timeout = DateTime.Now.AddSeconds(100);
352-
do
361+
var elementIframe = acc.Wb.Driver.FindElementById("videoFeature");
362+
if (elementIframe == null)
353363
{
354-
await Task.Delay(3000);
355-
356-
//skip ads from Travian Games
357-
//they use ifarme to emebed ads video to their game
358-
acc.Wb.UpdateHtml();
359-
360-
if (acc.Wb.Html.GetElementbyId("videoArea") != null)
361-
{
362-
acc.Wb.SwitchTo().Frame(acc.Wb.FindElementById("videoArea"));
363-
364-
// trick to skip
365-
await DriverHelper.ExecuteScript(acc, "var video = document.getElementsByTagName('video')[0];video.currentTime = video.duration - 1;", false, false);
366-
//back to first page
364+
await acc.Wb.Refresh();
365+
return false;
366+
}
367+
elementIframe.Click();
367368

368-
acc.Wb.SwitchTo().DefaultContent();
369-
}
370-
if (timeout < DateTime.Now) return false;
369+
try
370+
{
371+
await DriverHelper.WaitPageChange(acc, "dorf", 3);
372+
}
373+
catch
374+
{
375+
await acc.Wb.Refresh();
376+
return false;
371377
}
372-
while (acc.Wb.CurrentUrl.Contains("build.php"));
373378

374379
// Don't show again
375-
await Task.Delay(1000);
380+
await Task.Delay(rand.Next(1000, 2000));
376381
acc.Wb.UpdateHtml();
377382

378383
if (acc.Wb.Html.GetElementbyId("dontShowThisAgain") != null)
379384
{
380385
await DriverHelper.ClickById(acc, "dontShowThisAgain");
381386
await Task.Delay(800);
382387
await DriverHelper.ClickByClassName(acc, "dialogButtonOk ok");
388+
await acc.Wb.Refresh();
383389
}
384390

385391
return true;

TravBotSharp/ControlPanel.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -319,6 +319,7 @@ private void button5_Click(object sender, EventArgs e) // Logout
319319
button2.Invoke(new Action(() => button2.Enabled = false));
320320
}
321321
});
322+
thread.Start();
322323
}
323324

324325
private void button6_Click(object sender, EventArgs e) // Login all accounts

0 commit comments

Comments
 (0)