Jump to content

Gathering herbs while using quest profile


Recommended Posts

Hey,

 

first of all, i would like to apologize for the doubel post but i just saw that the topic was posted in the wrong forum

 

 

As much as i am enjoying the bot, i am having some serious problems with running a quest profile and occasionally harvesting herbs. The bot in general is behaving as promised. It keeps on grinding and questing and detecting herbs. It then runs to the herb and trys to pick it up. The only problem is: gathering herbs in vanilla takes 5 seconds and not 2.5 seconds. Thus i would have to increase the minimum lag up to 2500ms in order to get to a total time of ~5sec gathering.

This is not acceptable for me, because the bot will become realy sluggish and decreasing its performance in combat and in general. And besides it isnt fun to watch.

 

Is there any workaround or any "secret" settings that may fix this issue?

gather_stop.html

Link to comment
Share on other sites

latency is just server reaction time, you do not need so high settings. 500 ms is enough to get response from server. It recognises you start interact with herb node, and player start casting "Herb Gathering" spell. After this bot waits while player casting (infinite) and then looting (latency+2000).

When gather manually, do you need wait 2500 ms before "Herb Gathering" starts? I think no.

So, suspecting something else. I think it HumanMasterPlugin - it starts moving too early. Disable it and check herb gathering

Link to comment
Share on other sites

Sadly deactivating the Human Master Plugin (HMP) did not solve the problem. Exactly the same behaviour.

 

Well my the latency setting of Wrobot differs from the latency that we experience as players. At least this matches my test results. When i set the latency for a minimum of 2500 ms then the bot behaves like this "Harvest Herbs" -> "Wait the initial 2.5 sec for harvesting" -> "Wait another 2.5sec for lag". And it must be something like this because the bot is then able to gather herbs. While this is great for gather, it is really bad for combat. Because the bot turns really slow, reacts really slow to low health etc...

gather_herb_without_hmp.html

Link to comment
Share on other sites

Now all code is obfuscated and its impossible to understarnd what it doing. Maybe there is logical error in bot. But in previous versions there was this sequence in farming task:

			Interact.InteractGameObject(gameObject.GetBaseAddress, true, false);
			Usefuls.WaitIsCasting();
			Usefuls.WaitIsLooting();

And WaitIsCasting algorithm (with my comments):

				robotManager.Helpful.Timer timer = new robotManager.Helpful.Timer((double)(Usefuls.Latency + 200));
				while (!timer.IsReady && !ObjectManager.Me.IsCast)
				{	// waits until start casting but no more than Usefuls.Latency + 200
					if (!Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause)
					{
						break;
					}
					Thread.Sleep(5);
				}
				while (ObjectManager.Me.IsCast && Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause)
				{	// waits while casting
					Thread.Sleep(30);
				}

 

Could you run this C# code in developement tools

wManager.DevelopmentTools.OutPutCSharp= Usefuls.LatencyReal;

 

Link to comment
Share on other sites

so i copy and pasted your statement into the "development tools" and hit the C# button. If this is the right way to do it?! Please correct if i am wrong

Returned:

wManager.DevelopmentTools.OutPutCSharp= Usefuls.LatencyReal;
// wManager.DevelopmentTools.OutPutCSharp= 16
// Execute time: 375

 

The bot showed the same behaviour. HMP deactivated.

 

gather_cs_statement.html

Link to comment
Share on other sites

Can you find herb node, select it and in developement tools execute C# code:

Interact.InteractGameObject(ObjectManager.Target.GetBaseAddress, true, false);
Usefuls.WaitIsCasting();
Usefuls.WaitIsLooting();

does it gather herb?

But set NORMAL latency, 200-300

Link to comment
Share on other sites

i am sorry to disappoint but i am not able to get it to work. i stand in front of an herb. then i hover over it with the cursor and alt+tab into the dev. tools and hit c#.

 

it doesnt do anything. neither with a paused bot nor with an "idle" wrobot.

 

is my procedure wrong?

 

edit:

i made another interesting observation:

if start the bot completly fresh and it is next to a herb, then it will pick it up. But after the questing profile has started and he transitions into "farming" then he does not wait the entire cast time. Wrobot executes the next step of the leveling profile, switches into farming, aborts herb picking after 2.5 sec and switches pack to the quest profil step.

Maybe there is a bug with switching between "profiles" or "bot-modes"?

Link to comment
Share on other sites

Can you target it with left button (i have not herbaist right now, so cant check how it works)? 

If cant, try this code

WoWObject _t = ObjectManager.GetWoWGameObjectByName("put here name of herb").OrderBy(o => o.GetDistance).FirstOrDefault();
Interact.InteractGameObject(_t.GetBaseAddress, true, false);
Usefuls.WaitIsCasting();
Usefuls.WaitIsLooting();

but dont forget to put right herb name

Link to comment
Share on other sites

no i am not able to target a herb by left clicking. i can only "mouse focus" it by hovering over it or right clicking, which is mining.

 

I will shortly.

 

Edit:

 

WoWObject _t = ObjectManager.GetWoWGameObjectByName("Peacebloom").OrderBy(o => o.GetDistance).FirstOrDefault();
Interact.InteractGameObject(_t.GetBaseAddress, true, false);
Usefuls.WaitIsCasting();
Usefuls.WaitIsLooting();
// wManager.DevelopmentTools.OutPutCSharp= 
// Execute time: 703

 

without any problems. Started gathering for the whole 5 sec.

So maybe there is a problem between swtiching profiles?!

Link to comment
Share on other sites

Does it works with normal latency?

This C# code is approximate algorythm from old version of wrobot (i used 7.1.5 archieve available on this server). Now it obfuscated and almost impossible to say what it doing. Maybe there is some errors there, maybe some plugin or profile code interrupts herb gathering. Try to find older version of wrobot

Link to comment
Share on other sites

Добрый день headcrab =)

Yes it works fine with "minimum" latency(min: 200ms, max: 300ms).

 

When i run this piece of code

WoWObject _t = ObjectManager.GetWoWGameObjectByName("Peacebloom").OrderBy(o => o.GetDistance).FirstOrDefault();
Interact.InteractGameObject(_t.GetBaseAddress, true, false);
Usefuls.WaitIsCasting();
Usefuls.WaitIsLooting();
Move.JumpOrAscend();

// wManager.DevelopmentTools.OutPutCSharp= 
// Execute time: 938

The bot starts gathering for a few mili seconds, then jumps and then does nothing.

Link to comment
Share on other sites

Yes, it should. There is condition Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause, so need to run any product. Can you execute the same code, but with wrotation running? Does it gather herb in this case?

Link to comment
Share on other sites

Okay so i started WRotation and tested, that the bot is functioning. It is. It just fought against a boar.

I then looked for a nearby herb and ran the following code...

WoWObject _t = ObjectManager.GetWoWGameObjectByName("Peacebloom").OrderBy(o => o.GetDistance).FirstOrDefault();
Interact.InteractGameObject(_t.GetBaseAddress, true, false);
Usefuls.WaitIsCasting();
Usefuls.WaitIsLooting();
Move.JumpOrAscend();

// wManager.DevelopmentTools.OutPutCSharp= 
// Execute time: 1422

 

Same behaviour as before. The bot starts gathering for a few mili seconds, jumps (and interrupts the gathering process), then does nothing. Even after some time (~2min) of waiting it does not resume the gather process.

Link to comment
Share on other sites

Looks like WaitIsCasting broken. Does this code gathers herb (with normal latency, less than 500)? What you see in log window?

WoWObject _t = ObjectManager.GetWoWGameObjectByName("Peacebloom").OrderBy(o => o.GetDistance).FirstOrDefault();
Interact.InteractGameObject(_t.GetBaseAddress, true, false);
// this code works like Usefuls.WaitIsCasting();
robotManager.Helpful.Timer timer = new robotManager.Helpful.Timer((double)(Usefuls.Latency + 200));
while (!timer.IsReady && !ObjectManager.Me.IsCast) {
	Thread.Sleep(5);
}
Logging.Write("Me.IsCast="+ObjectManager.Me.IsCast);
while (ObjectManager.Me.IsCast) {
	Thread.Sleep(30);
}
Usefuls.WaitIsLooting();
Move.JumpOrAscend();

If not gathers, try to increase in 4rd string 200 -> 300...400 but not much more.

Link to comment
Share on other sites

I started WRotation again and went to a nearby herb.

 

My latency is 15ms. The bot itself is still configured for a minimum latency of 200ms and max latency of 300ms. So i guess it is still reasonable.

 

I executed your code.

Return:

WoWObject _t = ObjectManager.GetWoWGameObjectByName("Peacebloom").OrderBy(o => o.GetDistance).FirstOrDefault();
Interact.InteractGameObject(_t.GetBaseAddress, true, false);
// this code works like Usefuls.WaitIsCasting();
robotManager.Helpful.Timer timer = new robotManager.Helpful.Timer((double)(Usefuls.Latency + 200));
while (!timer.IsReady && !ObjectManager.Me.IsCast) {
	Thread.Sleep(5);
}
Logging.Write("Me.IsCast="+ObjectManager.Me.IsCast);
while (ObjectManager.Me.IsCast) {
	Thread.Sleep(30);
}
Usefuls.WaitIsLooting();
Move.JumpOrAscend();
// wManager.DevelopmentTools.OutPutCSharp= 
// Execute time: 1438

 

And the log file says (had to fight a mob):

[F] 15:36:55 - [Spell] Cast Lightning Shield (Lightning Shield)

[F] 15:36:57 - [Spell] Cast Earth Shock (Earth Shock)
15:37:06 - Me.IsCast=False

 

Behaviour of the bot harvesting attempt: Start gathering -> jump (cancel gathering) -> idle

Link to comment
Share on other sites

Try code like (not tested)

        ulong lastTarget = 0;
        wManager.Events.InteractEvents.OnInteractPulse += (target, cancelable) =>
        {
            try
            {
                if (lastTarget == target)
                    return;

                if (!Logging.Status.StartsWith("Farm"))
                    return;

                var o = ObjectManager.GetObjectByGuid(target);
                if (o.IsValid && o.Type == WoWObjectType.GameObject)
                {
                    var go = new WoWGameObject(o.GetBaseAddress);
                    if (go.IsValid)
                    {
                        lastTarget = target;
                        cancelable.Cancel = true;
                        Interact.InteractGameObject(target);
                        Thread.Sleep(1500);
                    }
                }
            }
            catch { }
        };

(run this code one time per session)

Link to comment
Share on other sites

I fired up wrobot and tried your code. There seems to be some argument missmatch.

 

Log:

[E] 16:07:00 - Compilator Error :
c:\Users\asd\AppData\Local\Temp\fqmnizcl.0.cs(41,25) : error CS1502: The best overloaded method match for 'wManager.Wow.Helpers.Interact.InteractGameObject(uint, bool, bool)' has some invalid arguments
c:\Users\asd\AppData\Local\Temp\fqmnizcl.0.cs(41,53) : error CS1503: Argument 1: cannot convert from 'ulong' to 'uint'


[E] 16:07:00 - Cannot run code, look log.

Link to comment
Share on other sites

21 minutes ago, headcrab said:

try to increase in 4rd string 200 -> 300...400...

Does it helps or every time it writes Me.IsCast=False?

If helps, but requires big value (>500), just forget this server. 

It always returns Me.IsCast=False.

Yet it gathers the herb when the value is +5000.

 

It is a well known and big vanilla server, without telling its name and it is NO lag since my latency to the server is 10-15ms. The gathering simply takes 5 seconds and not the programmed 2.5 seconds. 

Link to comment
Share on other sites

Always false means robot can't recognize player's cast. Maybe bot bug, maybe they use modified client - anyway it will be hard botting on this server. You can use Droidz  workaround if it relays only gathering, but it not good if bot can't recognize every cast. 

Link to comment
Share on other sites

Oh I See. Didn’t know that this is possible.

 

this only leaves one question unanswered. How come the bot is able to gather the first herb as long as the quester profile was not triggered. If I login next to an herb it goes into farming mode, loots the herb and then transitions into the quest profile. When he reached the quest profile the fun begins ^^#

Link to comment
Share on other sites

Hey guys,

 

thanks to headcrabs hint with the game client i came up with a "solution" i tryed different WoW 1.12 clients for their compatibility with wrobot. The elysium client seems to work perfectly. Every herb and everything is gathered and casted and looted without a single problem.

Maybe this helps people with similar problems.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...