eMommy Posted September 1 Posted September 1 A simple script which randomizes your target from shortest -> furthest so you can farm with Rush Impact on your doombringer Edit your skill id (Default 45179): SkillList.ByID(45159, sweep) Edit your search range (Default 900): Script.NewThread(@SweepThread, Pointer(900)); var bSweepFurthest: boolean; // Global state variable to track which mob to get next // This procedure now alternates between finding the furthest and nearest mob. procedure SweepThread(dist: integer); var sweep: TL2Skill; mob: TL2Npc; begin while Delay(100) do begin if (Engine.Status = lsOnline) and SkillList.ByID(45159, sweep) then begin // Decide which mob to find based on the bSweepFurthest state if (bSweepFurthest) then begin mob:= GetFurthestSweepableMob(dist); // Looking for the furthest mob end else begin mob:= GetNearestSweepableMob(dist); // Looking for the nearest mob end; if (mob <> nil) then begin if Engine.SetTarget(mob) then Delay(1); Engine.UseSkill(sweep) ; // Flip the state for the next loop iteration bSweepFurthest := not bSweepFurthest; end; end; end; end; // Corrected to check for dead mobs function GetNearestSweepableMob(dist: integer): TL2Npc; var i: integer; begin Result:= nil; for i:= 0 to NpcList.Count-1 do begin if (NpcList(i).Valid) and (User.DistTo(NpcList(i)) < dist) and not (NpcList(i).Dead) then begin // <<< Corrected: Sweepable mobs are dead Result:= NpcList(i); dist:= User.DistTo(NpcList(i)); end; end; end; // Modified to accept a distance parameter and corrected to check for dead mobs function GetFurthestSweepableMob(dist: integer): TL2Npc; var i: integer; max_dist: integer; begin Result:= nil; max_dist:= 0; for i:= 0 to NpcList.Count-1 do begin if (NpcList(i).Valid) and (User.DistTo(NpcList(i)) < dist) // <<< Changed from 400 to the 'dist' parameter and not (NpcList(i).Dead) // <<< Corrected: Sweepable mobs are dead and (User.DistTo(NpcList(i)) > max_dist) then begin Result:= NpcList(i); max_dist:= User.DistTo(NpcList(i)); end; end; end; // Main execution block begin // Initialize the state to start by finding the furthest mob first bSweepFurthest := true; // Start the thread, passing 300 as the max distance for both nearest and furthest searches Script.NewThread(@SweepThread, Pointer(900)); Delay(-1); end.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now