public class Main : IPlugin
{
private bool _isLaunched;
public void Initialize()
{
_isLaunched = true;
robotManager.Events.FiniteStateMachineEvents.OnRunState += (engine, state, cancelable) =>
{
if (ObjectManager.Me.IsDeadMe && Usefuls.ContinentId != (int)ContinentId.WailingCaverns)
{
cancelable.Cancel = true;
IEnumerable<Vector3> paths = new List<Vector3>() {
new Vector3(-852.5135, -2170.376, 92, "None"),
new Vector3(-849.0024, -2036.948, 80, "None"),
new Vector3(-748.3444, -2059.984, 71, "None"),
new Vector3(-621.9654, -2026.705, 63, "None"),
new Vector3(-591.3438, -2135.192, 51, "None"),
new Vector3(-588.2389, -2123.332, 50, "None"),
new Vector3(-628.1954, -2185.471, 48, "None"),
new Vector3(-745,-2210,16, "None")
};
if (ObjectManager.Me.IsDeadMe)
{
// Process waypoints
foreach (Vector3 waypoint in paths)
{
// Move to the given position
MovementManager.Go(PathFinder.FindPath(waypoint), false);
// Loop
while (MovementManager.InMovement && Conditions.InGameAndConnectedAndProductStartedNotInPause && ObjectManager.Me.Position.DistanceTo2D(waypoint) > 1.5 && Usefuls.ContinentId != (int)ContinentId.WailingCaverns)
{
// Wait follow path
Thread.Sleep(10);
}
}
// Stop movement
MovementManager.StopMove();
// End Movement
}
}
};
It is badly work. Char sometimes run back , sometimes stop. How is right to write?