UO Sagas: Tree chop V1.3

Created: about 16 hours ago on 07/10/2026, 11:05:58 AMUpdated: about 12 hours ago on 07/10/2026, 02:52:04 PM
Size: 4840
Category: lumberjacking

Description: ->

Requirments: Hatchets in bag

How it works:

- Starts checking for trees to chop (Target self with tool for auto targeting)

-> chops until full (you need to put your max weigt if you dont have max strengh!)

-> Chops logs into boards (on at a time not all types at once)

-> checks for new tree to chop

Version 1.3

Bugs: sometimes doesnt start right away and starting script again fixes

Unsatisfactory: No Disarm for anyother and wont be changed

Future ideas: maybe add pack animal unload

+++++++++++++++++++++++

Newest Gathering Rules:

One gatherer per connection.

Only one character per internet connection can gather resources at a time. If a second character on your connection tries to mine, chop, or fish while another is already gathering, the attempt is blocked: "Your connection (IP) is already involved in a harvesting attempt; only one may gather at a time."

Window focus

You can no longer start gathering while the game window is in the background — bring the game (or the Assistant) into focus first. Alt-tabbing doesn't interrupt a swing already in progress; it only stops the next one.

Walk before harvest

Take a step after traveling. After a Recall, Gate or right after logging in — take one step before you can gather. One step, that's all.

Automatic harvest target selection

New convenience: self-target to auto-gather. Target yourself with a harvest tool and it automatically works the nearest matching resource within 2 tiles: pickaxe/shovel → ore or rock, axe → tree, fishing pole → water, skinning knife → the nearest unskinned corpse. No more pixel-hunting the mountainside.

-- V1 release -- V1.1 logchop fix -- V1.2 Hatchet fix -- V1.3 Hatchet handle fix -- Known bugs: At client start the hatchet doesnt get recognised -- Configuration local MAX_WEIGHT_DIFF = 10 local MAX_WEIGHT = 390 local ITEM_ID_WOODEN_LOGS = 0x1BDD local CHOP_DELAY = 2500 function GetHatchet() -- Check if Hatchet already in hand for _, layer in ipairs({1, 2}) do local checkAxe = Items.FindByLayer(layer) if checkAxe and string.find(string.lower(checkAxe.Name or ""), "hatchet") then return checkAxe end end -- No Hatchet -> Check Bagpack local equipaxe = Items.FindByName("Hatchet") if equipaxe then Player.Equip(equipaxe.Serial) Pause(1000) -- check if equip is successful for _, layer in ipairs({1, 2}) do local checkAxe = Items.FindByLayer(layer) if checkAxe and string.find(string.lower(checkAxe.Name or ""), "hatchet") then return checkAxe end end end Player.Say("No hatchet found.") return nil end function GetLogs() local itemList = Items.FindByFilter({}) for _, item in ipairs(itemList) do if item and item.RootContainer == Player.Serial and item.Graphic == ITEM_ID_WOODEN_LOGS then return item end end return nil end function CreateBoards(hatchet) local log = GetLogs() if hatchet and log then Player.Say("Chopping boards!") Player.UseObject(hatchet.Serial) if Targeting.WaitForTarget(1000) then Targeting.TargetSerial(log.Serial) Pause(1000) else Player.Say("Failed to target log for boards.") end elseif not hatchet then Player.Say("No hatchet to make boards.") elseif not log then Player.Say("No logs to make boards.") end end function CheckTreeStatus() local messages = { "There is no wood here to chop.", "You cannot see that.", "That is too far away.", "You can't use an axe on that.", "You cannot reach that.", "You have worn out your tool!", "There's not enough wood here to harvest." } for _, msg in ipairs(messages) do if Journal.Contains(msg) then Journal.Clear() return true end end return false end function ChopLoop(hatchet) while true do -- Check if hatchet still exists if not hatchet then Player.Say("Searching new hatchet...") hatchet = GetHatchet() if not hatchet then Player.Say("No hatchet found. Stopping.") return end end -- Weight check if Player.Weight > MAX_WEIGHT - MAX_WEIGHT_DIFF then Player.Say("Making boards") CreateBoards(hatchet) Pause(1000) end -- Use hatchet Player.UseObject(hatchet.Serial) Pause(500) if Targeting.WaitForTarget(1000) then Targeting.Self() else -- Hatchet may have broken hatchet = GetHatchet() Pause(1000) goto continue end Pause(CHOP_DELAY) if CheckTreeStatus() then Player.Say("Searching next tree") Pause(1000) end ::continue:: Pause(500) end end function Main() Journal.Clear() local hatchet = GetHatchet() if not hatchet then Player.Say("Stopping - no hatchet") return end Player.Say("Starting lumberjack") ChopLoop(hatchet) end Main()

Version History

Version 8 - 7/10/2026, 2:52:04 PM - about 12 hours ago

Tree chop V1.3

Version 7 - 7/10/2026, 12:57:55 PM - about 14 hours ago

Tree chop V1.3

Version 6 - 7/10/2026, 12:49:58 PM - about 14 hours ago

Tree chop V1.3

Version 5 - 7/10/2026, 12:49:24 PM - about 14 hours ago

Tree chop V1.3

Version 4 - 7/10/2026, 12:18:38 PM - about 15 hours ago

Tree chop V1.2

Version 3 - 7/10/2026, 12:14:15 PM - about 15 hours ago

Tree chop V1.2

Version 2 - 7/10/2026, 12:00:33 PM - about 15 hours ago

Lumperjacking with news Hardvest changes V1.1

Version 1 - 7/10/2026, 11:42:49 AM - about 16 hours ago

Lumperjacking with news Hardvest changes V1.1

Original Version Saved - 7/10/2026, 11:05:58 AM - about 16 hours ago

Lumperjacking with news Hardvest changes

No changes to display

Comments (0)

Log in to leave a comment.

No comments yet. Be the first!

View list of scripts
Disclaimer: This is a fan made site and is not directly associated with Ultima Online or UO staff.