-
Active Member
Latest version works with live version of D3 (2.1.1)
-
Active Member
Update
Release notes:
- Minor bug fixes
- Added NavMeshViewer to binaries
- Updated for 2.1.2
-
Member
Hey CrEEzz i want to say thank you for maintaining this project any news on update for 2.2?
Thanks
-
Active Member
Hi, I will try to take care of it today.
-
Active Member
-
Member
hello, thx for your update. but, how does it work ? ^^ You have a movie ? it's safe ?
Thanks you
-
Active Member
Hi, it's as safe as using Enigma.D3. All features were listed in previous posts. There is simple bot implemented for testing purposes in navmeshviewer project so its best to start there. Cheers!
-
Active Member
Release notes:
- Tweaks in anti-stuck system (almost 100% rift exploration success rate)
- More human-like exploration (omitting small regions)
- Added HintPos in exploration engine (helpful when knowing objective position but nav data required to get there is not yet loaded). Exploration will prefer cells nearest to hint location. To disable set to Vec3.Empty.
- Fixes in serialization/deserialization.
- Updated for 2.3
-
Post Thanks / Like - 1 Thanks
Ket (1 members gave Thanks to CrEEzz for this useful post)
-
Member
Great work Creezz !
But there is no x0FC_MeshMinX, x100_MeshMinY, x104_MeshMinZ properties on Enigma.D3.Scene class.
am i missing something ?
-
Active Member
Thanks. You need to compile "augmented" latest version of Enigma from sources included in Enigma.D3.zip or simply copy those fields to your version of enigma.
-
Post Thanks / Like - 1 Thanks
Inject (1 members gave Thanks to CrEEzz for this useful post)
-
Member
You did a great work here with Enigma mate
Im trying your ExplorationEngine, with a MoveToPos method that i have created..
Basically an async method, using Extended Vector to click near my current position in the direction that i want.
Just want to share some ideas
public static async Task<bool> MoveToPosAsync(SharpDX.Vector3 vecDest, int NearDistance = 30)
{
var localAcd = ActorCommonDataHelper.GetLocalAcd();
var distance = (Math.Pow(localAcd.x0D0_WorldPosX - vecDest.X, 2) + Math.Pow(localAcd.x0D4_WorldPosY - vecDest.Y, 2));
DateTime dtTimeout = DateTime.Now;
while (distance > NearDistance)
{
if (DateTime.Now > dtTimeout.AddSeconds(50))
return false;
SharpDX.Vector2 curVector = new SharpDX.Vector2(localAcd.x0D0_WorldPosX, localAcd.x0D4_WorldPosY);
SharpDX.Vector2 destVector = new SharpDX.Vector2(vecDest.X, vecDest.Y);
var vecNormalized = curVector.Extend(destVector, 10).To3D();
System.Drawing.Point screenPoint = D3ToScreen.FromD3toScreenCoords(vecNormalized);
MouseEvents.RightClick(screenPoint.X, screenPoint.Y);
await Task.Delay(new Random().Next(100, 250));
}
return true;
}
-
Active Member
Thanks Integration would be fairly simple. You need to create an instance of D3.Navmesh, feed Navigator with current position and destination and ask for current go to position, sample below:
Code:
public static void Init()
{
Enigma.D3.Engine.Create();
Nav.D3.Navmesh.Create(Enigma.D3.Engine.Current, new Nav.ExploreEngine.Nearest());
}
public static async Task<bool> MoveToPosAsync(SharpDX.Vector3 vecDest, int NearDistance = 30)
{
var localAcd = ActorCommonDataHelper.GetLocalAcd();
var distance = (Math.Pow(localAcd.x0D0_WorldPosX - vecDest.X, 2) + Math.Pow(localAcd.x0D4_WorldPosY - vecDest.Y, 2));
DateTime dtTimeout = DateTime.Now;
while (distance > NearDistance)
{
if (DateTime.Now > dtTimeout.AddSeconds(50))
return false;
// Update current player position.
Nav.D3.Navmesh.Current.Navigator.CurrentPos = new Nav.Vec3(localAcd.x0D0_WorldPosX,
localAcd.x0D4_WorldPosY,
localAcd.x0D8_WorldPosZ);
// Update destination. You can keep setting the same value there is internal check if destination has actually changed.
// This destination overrides any internal destinations (including exploration). When You just want to explore You do
// not need to set any destination. It will be set automatically.
Nav.D3.Navmesh.Current.Navigator.Destination = new Nav.Vec3(vecDest.X, vecDest.Y, vecDest.Z);
// Get current destination.
Nav.Vec3 goToPosition = Nav.D3.Navmesh.Current.Navigator.GoToPosition;
// All updated and calculations are performed on separate threads so You may wait for an actual position a few frames
if (!goToPosition.IsEmpty)
{
SharpDX.Vector3 destVector = new SharpDX.Vector3(goToPosition.X, goToPosition.Y, goToPosition.Z);
System.Drawing.Point screenPoint = D3ToScreen.FromD3toScreenCoords(destVector);
MouseEvents.RightClick(screenPoint.X, screenPoint.Y);
await Task.Delay(new Random().Next(100, 250));
}
else
await Task.Delay(new Random().Next(50, 100));
}
return true;
}
By the way. You have to be careful with this kind of code
Code:
SharpDX.Vector2 curVector = new SharpDX.Vector2(localAcd.x0D0_WorldPosX, localAcd.x0D4_WorldPosY);
SharpDX.Vector2 destVector = new SharpDX.Vector2(vecDest.X, vecDest.Y);
var vecNormalized = curVector.Extend(destVector, 10).To3D();
as it may result in inability to reach destination if You ever decide to change NearDistance to anything below 10 Better soultion would be extending curVector by minimum taken from 10 and distance to destination, so You would never "overshoot"destination and end up with oscilation near destination.
Code:
SharpDX.Vector2 curVector = new SharpDX.Vector2(localAcd.x0D0_WorldPosX, localAcd.x0D4_WorldPosY);
SharpDX.Vector2 destVector = new SharpDX.Vector2(vecDest.X, vecDest.Y);
float distToDest = curVector.Distance(destVector);
var vecNormalized = curVector.Extend(destVector, Math.Min(10, distToDest)).To3D();
Last edited by CrEEzz; 10-30-2015 at 05:37 AM.
-
Post Thanks / Like - 1 Thanks
Inject (1 members gave Thanks to CrEEzz for this useful post)
-
Active Member
Update
New version is available. I moved project to sourceforge. From now on latest version will be available at https://sourceforge.net/projects/nav There is also a little "promotional" video on youtube. Enjoy
Release notes:
- Added regions support (useful when we want bot to avoid dangerous areas - like elites effects).
- Added dynamic obstacles support.
- More reliable exploration.
- Fixes in serialization/deserialization.
- Optimizations and code refactoring.
Last edited by CrEEzz; 11-04-2015 at 11:52 AM.
-
Post Thanks / Like - 1 Thanks
azgul (1 members gave Thanks to CrEEzz for this useful post)
-
The day will come when I take some time to look into this. Looks rly nice keep up the great work
-
Legendary
Originally Posted by
CrEEzz
I F-ing love visualizations