UO Sagas: Eval Spammer

Created: 5 days ago on 06/02/2025, 01:36:45 PMUpdated: 5 days ago on 06/02/2025, 02:30:08 PM
FileType: No file type provided
Size: 8144
Category: No category provided
Skills: No skills provided
Hotkey: No hotkey provided
Tags: No tags provided

Description: Spams Evaluate Intelligence on blue players in the area. Perfect for the newbie dungeon (to skill 70) or around the bank where there are lots of players.

--[[ __ __ ___ ________ ___ _ ___ ___ ____ / / ___ ___ / /____ \\\\---- / _ `/ __/ _ `/ ' \/ _ \/ _ `(_-</ _ \/ _ \/ _ \/ __(_-< ----\ ////---- \_, /_/ \_,_/_/_/_/ .__/\_,_/___/_//_/\___/\___/\__/___/ ----/ /___/ /_/ Eval Spammer v1.3 Requirements: ------------- • Evaluating Intelligence skill trained (train at npc first to ~30) • A group of blue (Innocent/Ally) players within range • A safe area where you can spam “Evaluating Intelligence” Usage: ------ Continuously loops through all blue players in SEARCH_RANGE: 1. Finds all blue players (Notoriety = Innocent or Ally) sorted by proximity. 2. For each player: • Re-checks that the mobile still exists and is in range. • Displays “Targeting: <Name>” overhead on the target. • Uses “Evaluating Intelligence” on them. • If the journal logs “That is too far away.”, it skips that target. • Pauses 1 second between each attempt. 3. If no blue players found, displays “No blue players within X tiles.” overhead on yourself and waits 1 second before retrying. 4. Repeats indefinitely until manually stopped. Configuration: -------------- • SEARCH_RANGE (tiles) • COLOR_INFO (overhead text color) • PAUSE_BETWEEN (ms between each skill attempt) ]]-- -- Maximum tile radius to search for blue (Innocent/Ally) players local SEARCH_RANGE = 8 -- Color for overhead text (93 = Blue) local COLOR_INFO = 93 -- Pause between each skill attempt (ms) local PAUSE_BETWEEN = 1000 -------------------------------------------------------------------------------- -- Function: GetAllBluePlayers -- Description: -- Scans all human mobiles within SEARCH_RANGE whose NotorietyFlag is Innocent (1) or Ally (2), -- and returns a list of those mobiles (excluding the player), sorted by Distance ascending. -- Returns: -- A table of Mobile objects representing all blue players within range, sorted by distance. -------------------------------------------------------------------------------- local function GetAllBluePlayers(range) -- Find all human mobiles in range with notoriety Innocent (1) or Ally (2) local candidates = Mobiles.FindByFilter({ range = { max = range }, human = true, notorieties = { 1, 2 } }) -- Filter out the player’s own serial local filtered = {} for _, mob in ipairs(candidates) do if mob.Serial ~= Player.Serial then table.insert(filtered, mob) end end -- Sort by Distance ascending table.sort(filtered, function(a, b) return a.Distance < b.Distance end) return filtered end -------------------------------------------------------------------------------- -- Function: CanUseEvaluateIntelligence -- Description: -- Returns true if the player can use the “Evaluating Intelligence” skill now. -------------------------------------------------------------------------------- local function CanUseEvaluateIntelligence() if Skills.CanCast then return Skills.CanCast("Evaluating Intelligence") else return Skills.GetValue("Evaluating Intelligence") > 0 end end -------------------------------------------------------------------------------- -- Main Loop: Continuously loop through all blue players and use Evaluating Intelligence -------------------------------------------------------------------------------- while true do local blueList = GetAllBluePlayers(SEARCH_RANGE) if #blueList == 0 then Messages.Overhead( "No blue players within " .. SEARCH_RANGE .. " tiles.", COLOR_INFO, Player.Serial ) Pause(PAUSE_BETWEEN) else for _, targetPlayer in ipairs(blueList) do -- Verify that targetPlayer and its Serial are valid if targetPlayer and type(targetPlayer.Serial) == "number" then -- Re-fetch the mobile by serial to ensure it still exists local fresh = Mobiles.FindBySerial(targetPlayer.Serial) -- Check existence, not destroyed, not dead, and still within range if fresh and not fresh.IsDestroyed and not fresh.IsDead and fresh.Distance <= SEARCH_RANGE then -- Display the target’s name overhead on that mobile Messages.Overhead( "Targeting: " .. (fresh.Name or "<unknown>"), COLOR_INFO, fresh.Serial ) -- Clear journal before attempting Journal.Clear() -- Attempt to use Evaluating Intelligence if available if CanUseEvaluateIntelligence() then Skills.Use("Evaluating Intelligence") -- Wait for target cursor if Targeting.WaitForTarget(2000) then Targeting.Target(fresh.Serial) -- Pause briefly to allow journal to populate Pause(200) -- If “That is too far away.”, show a skip message if Journal.Contains("That is too far away.") then Messages.Overhead("Too far away, skipping.", COLOR_INFO, Player.Serial) end else Messages.Overhead("Failed to acquire target cursor.", COLOR_INFO, Player.Serial) end else Messages.Overhead("Cannot use Evaluating Intelligence.", COLOR_INFO, Player.Serial) end end end -- Pause before next attempt Pause(PAUSE_BETWEEN) end end end
View list of scripts
Disclaimer: This is a fan made site and is not directly associated with Ultima Online or UO staff.