Recent Posts

Pages: [1] 2 3 ... 10
1
Gold Farming / Re: Whole Book BOD Filler
« Last post by wampa on March 29, 2026, 05:09:28 AM »
I thought this looked like a useful script and so made it my first download from here.  I use S7BodFiller daily so it is all working.  Put this script into same directory as per instructions.  Correct skills on character.  Two BOD books as instructed with roughly 100 bods in the one to be made and an empty one for putting the filled bods in.  Started up script and it dropped the BOD into backpack, picked up 10 copper ingots (was iron bod) and opened the blacksmith gump and stalled.  Can see it is because it hasn't picked up the iron ingots (zero in bag) but I have no idea why it isn't.  S7's works perfectly.  Any ideas anyone?  Is this still working after the recent patching?

Thanks for any help.  Clueless at scripting sorry.  Hope you can help as this would be awesome to use... I currently buy the 'normal' small bods but that is time consuming to do and I think this would enable some very nice bodding sessions.


I had the same problem. It was ranging from just taking 10 copper to stalling.
I added "&& copper notin #property" to all lines with
"If shadow notin #property && dull notin #property && bronze notin #property && gold notin #property && agapite notin #property && verite notin #property && valorite notin #property"

This seems to have fixed it.
Below is a fixed script if anybody still needs it.

Code: [Select]
;=====================================================================
; Script Name:  S7 Filler Call Full BOD Book Filler
; Version: 0.10
; Author: Paulonius
; Special Thanks to TrailMix and S7 for the use of their code
; Client Tested with:
; EUO version tested with:
; Shard OSI / FS: OSI
; Initial Release Date:  04/21/2010
; Revision Date: TBD
; Global Variables Used: N/A
; Dependencies: Script requires that you have S7BodFiller and CraftInfo
;               in the same file as script
;----------------------------------------------------------------------
; Purpose: Fills Bods in one book and transfers them into a second
;======================================================================
; TO Do List
; 1. build a tracking menu
; 2. Menu based setup
;======================================================================
; Initial Setup
; 1. You must have a secure with your resources in it within reach
; 2. You should have two books in your pack, one with bods that you
;    want to fill, and another to drop the completed bods into
;======================================================================
; Instructions:
; 1. Position yourself with reach of a forge, anvil, and your secures
; 2. Have a tinker kit in your backpack
; 3. Toon should have 120 Blacksmith, 100 Mining and 70 Tinker
; 4. Not recommended that you try to fill books with more than 450 BODs
;    490 is your max with a pack empty of everything except what you
;    need to run the script.
; 5. Do not use the same BOD book for full and empty deeds
;======================================================================

Gosub Setup

Repeat
   {
   Gosub Get_Next_BOD
   If #Result = #False
      Set %NoMoreBODs Yes
   Else
      Gosub Fill_BOD %CurrentBod
   }
Until %NoMoreBODs = Yes
IgnoreItem Reset 1
Halt

;==========================================================
Sub Get_Next_BOD
Set #LObjectID #BackPackID
Event Macro 17 0
Wait 20
Start_Get_Next_BOD:
FindItem EYM C_ , #BackpackID
If #FindCnt > 0
   {
   Set %BODFoundInPack #FindID
   GoSub SBOD_Check %BODFoundInPack
   If #Result = #True
      {
      Gosub Drop_BOD_In_BODBook %BODFoundInPack %FullBODBook
      Wait 10
      Gosub OffsetClick 387 427     ; Close BOD Book Gump
      GoTo Start_Get_Next_BOD
      }
   If Large in %BODStatus
      {
      IgnoreItem %BODFoundInPack 1
      GoTo Start_Get_Next_BOD
      }
   If Partial in %BODStatus
      {
      Set %CurrentBod #FindID
      Return #True
      }
   IgnoreItem %BODFoundInPack 1  ; NOTE TO SELF: Look for SBODs as remainders
                                 ; as these will be the result of errors
   GoTo Start_Get_Next_BOD
   }
FindItem %EmptyBODBook C_ , #BackPackID
If #FindCnt < 1
   Return #False
GoSub Get_BODs_From_BOD_Book %EmptyBODBook 1
If #Result = #False
   Return #False
FindItem EYM C_ , #BackpackID
Set %CurrentBod #FindID
Wait 10
Gosub OffsetClick 387 427     ; Close BOD Book Gump
Return #True

;==========================================================
Sub Drop_BOD_In_BODBook
Set %BODToMove %1
Set %BODBookToDropOn %2
FindItem %BODToMove C_ , #BackpackID
While #FindCnt > 0
      {
      exevent drag %BODToMove
      wait 10
      exevent dropc %BODBookToDropOn
      Wait 20
      FindItem %BODToMove C_ , #BackpackID
      }
Return

;==========================================================
; Sub will check a SBOD for Item Count
; Returns #True if it is full or #False if it's not
; Sets %SBODItemCount to the number of items in the sBod
; Returns #False for LBODs and sets %BODStatus to Large
; Will return %BODstatus for SBODs as Full# or Partial# where #
; is the number required to fill the SBOD
;----------------------------------------------------------
; Dependency: This Sub requires the included Sub Large_Check
Sub SBOD_Check
Set %BOD %1
Set %BODStatus N/A
Set %SBODItemCnt N/A
Set %Ones N/A
Set %Tens N/A
Set %BODFillStatusSubString N/A
Event Property %BOD
Set %BODFillStatusString #Property
Str Len %BODFillStatusString
Set %BODFillStatusStringLength #strRes - 3
Str Left %BODFillStatusString %BODFillStatusStringLength
Set %BODFillStatusStringRemainder #StrRes
If Large in #Property
   {
   Gosub Large_Check %BOD
   If #Result = #True
      {
      Set %BODStatus Large
      Return #False
      }
   }
str Right %BODFillStatusString 3
Set %BODFillStatusSubString #strRes
Str Left %BODFillStatusSubString 2
Set %BODFillStatusSubString2 #strRes
Str Left %BODFillStatusSubString2 1
Set %Tens #StrRes
Str Right %BODFillStatusSubString2 1
Set %Ones #StrRes
If %tens > 0
   {
   Set %sBODItemCnt %Tens , %Ones
   }
If %tens < 1
   Set %sBODItemCnt %Ones
If %sBODItemCnt = 20
   {
   Set %BODStatus Full20
   Return #True
   }
If %sBODItemCnt = 15
   {
   If 15 in %BODFillStatusStringRemainder
      {
      Set %BODStatus Full15
      Return #True
      }
   Set %BODStatus Partial20
   Return #False
   }
If %sBODItemCnt = 10
   {
   If 10 in %BODFillStatusStringRemainder
      {
      Set %BODStatus Full10
      Return #True
      }
   If 15 in %BODFillStatusStringRemainder
      {
      Set %BODStatus Partial15
      Return #False
      }
   If 20 in %BODFillStatusStringRemainder
      {
      Set %BODStatus Partial20
      Return #False
      }
   }
If 10 in %BODFillStatusStringRemainder
   {
   Set %BODStatus Parial10
   Return #False
   }
If 15 in %BODFillStatusStringRemainder
   {
   Set %BODStatus Partial15
   Return #False
   }
If 20 in %BODFillStatusStringRemainder
   {
   Set %BODStatus Partial20
   Return #False
   }
Set %BODStatus ERROR
Return #False

;----------------------------------------------------------
; Returns #True for LBOD
Sub Large_Check
Set %BODLargeCheck %1
Event Property %BODLargeCheck
Set %StringCheckLarge #Property
str Pos %StringCheckLarge Large
If #StrRes = 43
   Return #TRUE
Return #False

;==========================================================
Sub Fill_BOD
;event exmsg #charid 3 4 TEST MESSAGE in Fill_BOD Current BOD ID is %1
Set %CurrentBODToFill %1
FillBODLoop:
Finditem %TinkerTools C_ , #BackpackID
If #FindCnt < 2
   Gosub Check_Tinker_Kit
Finditem %Tongs C_ , #BackpackID
If #FindCnt < 2
   Gosub Check_Tongs
Finditem %CurrentBODToFill C_ , #BackpackID
If #FindCnt < 1
      Return #False
While #FindCnt > 0
   {
   Call s7BODFiller.euo %CurrentBODToFill %ResourceSecure #False
   Wait 10
   Gosub OffsetClick 30 453         ; Close Craft Gump
   GoSub SBOD_Check %CurrentBODToFill
   If #Result = #True
      {
      Gosub Drop_BOD_In_BODBook %CurrentBODToFill %FullBODBook
      Wait 10
      Gosub OffsetClick 387 427     ; Close BOD Book Gump
      }
   Finditem %CurrentBODToFill C_ , #BackpackID
   }
Return #True

;==========================================================
Sub Get_BODs_From_BOD_Book
;event exmsg #charid 3 4 TEST MESSAGE in Get_BODs_From_BOD_Book
If %BODBookEmpty = Yes
   Return #False
Set %BookToPullFrom %1
Set %NumberBODsDesired %2
Finditem %BookToPullFrom C_ , #backpackid
if #findcnt < 1
   Return #False
Set #LobjectID %BookToPullFrom
Event Macro 17 0
Gosub waitforgump %BODBookMainGump
If ! #Result
   {
    Set #LobjectID %BookToPullFrom
    event macro 17 0
    Wait 25
    Gosub TM_AdvJournalScan BODBOOK Advance The_book_is_empty
    if #Result = #True
         {
         Set %BODBookEmpty Yes
         Return #False
         }
    }
Repeat
      {
      Gosub OffsetClick 41 102
      Gosub waitforgump %BODBookMainGump
            If ! #Result
               {
               Set #LobjectId %BookToPullFrom
               Event Macro 17 0
               Wait 25
               Gosub TM_AdvJournalScan BODBOOK Advance The_book_is_empty
               If #Result = #True
                  Set %BODBookEmpty Yes
               }
      Finditem EYM C_ , #backpackid
      }
Until #FindCnt = %NumberBODsDesired
Return #True

;-------------------------------------------------------------------------------
; %1 = Gumpname 1
; %2 = Gumpname 2
; #TRUE gump occured before timeout
sub GumpWait
  namespace push
  namespace local GW
  wait 10
  set !timedelay #SCNT
  while #SCNT <= !timedelay + 7
  {
    if #CONTNAME = %1 || #CONTNAME = %2
    {
      namespace pop
      return #TRUE
    }
  }
  namespace pop
return #FALSE

;======================================================================
Sub Check_Tinker_Kit
;event exmsg #charid 3 4 TEST MESSAGE in MakeTinkerKit
MakeKitLoop:
Finditem %TinkerTools C_ , #BackpackID
If #FindCnt >= 2
   Return #True
If #FindCnt < 1
   {
   Finditem %TinkerTools C_ , %ResourceSecure
   If #FindCnt < 1
      {
      Display Please get a tinker kit in your packpack and hit play
      Pause
      Goto MakeKitLoop
      }
   Else
      {
      exevent drag #findid
      wait 10
      exevent dropc #backpackid
      wait 20
      }
   }
Set %IronIngotsFound No
Repeat
   {
   finditem %Ingots C_ , #BackpackID
   Event Property #FindID
   If shadow notin #property && dull notin #property && copper notin #property && bronze notin #property && gold notin #property && agapite notin #property && verite notin #property && valorite notin #property
      Set %IronIngotsFound Yes
   Else
       IgnoreItem #FindID 3
   }
Until %IronIngotsFound = Yes || #FindCnt < 1
IgnoreItem Reset 3
If #findstack < 10 && %IronIngotsFound = Yes
   {
   Set %quantityinpack 10 - #findstack
   Set %IronIngotsFound No
   Repeat
       {
       Finditem %Ingots C_ , %ResourceSecure
       Event Property #FindID
       If shadow notin #property && dull notin #property && copper notin #property && bronze notin #property && gold notin #property && agapite notin #property && verite notin #property && valorite notin #property
          Set %IronIngotsFound Yes
       Else
           IgnoreItem #FindID 3
       }
   Until %IronIngotsFound = Yes || #FindCnt < 1
   IgnoreItem Reset 3
   If #findstack < %quantityinpack
      {
      display You need to place more Iron ingots in your Resource Secure and hit play.
      pause
      Goto MakeKitLoop
      }
   else
       {
       exevent drag #findid %quantityinpack
       wait 10
       exevent dropc #backpackid
       wait 20
       }
   }
If %IronIngotsFound = No
   {
   Set %quantityinpack 10
   Set %IronIngotsFound No
   Repeat
       {
       Finditem %Ingots C_ , %ResourceSecure
       Event Property #FindID
       If shadow notin #property && dull notin #property && copper notin #property && bronze notin #property && gold notin #property && agapite notin #property && verite notin #property && valorite notin #property
          Set %IronIngotsFound Yes
       Else
           IgnoreItem #FindID 3
       }
   Until %IronIngotsFound = Yes || #FindCnt < 1
   IgnoreItem Reset 3
   If #findstack < %quantityinpack
      {
      display You need to place more Iron ingots in your Resource Secure and hit play.
      pause
      Goto MakeKitLoop
      }
   else
       {
       exevent drag #findid %quantityinpack
       wait 10
       exevent dropc #backpackid
       wait 20
       }
   }
Finditem %TinkerTools C_ , #backpackid
set #lobjectid #findid
event macro 17
gosub waitforgump %cwin
if ! #result
   GoTo MakeKitLoop
Gosub OffSetClick 30 130    ; Selects Tools Category
gosub waitforgump %cwin
if ! #result
   GoTo MakeKitLoop
Gosub OffSetClick 230 130   ; Selects Tinker Kit
gosub waitforgump %cwin
if ! #result
   GoTo MakeKitLoop
Gosub OffSetClick 28 453    ; Closes Craft Gump
Wait 10
Return #True

;======================================================================
Sub Check_Tongs
;event exmsg #charid 3 4 TEST MESSAGE in Check Tongs
MakeTongsLoop:
Finditem %TinkerTools C_ , #BackpackID
If #FindCnt < 2
   Gosub Check_Tinker_Kit
Set %IronIngotsFound No
Repeat
   {
   finditem %Ingots C_ , #BackpackID
   Event Property #FindID
   If shadow notin #property && dull notin #property && copper notin #property && bronze notin #property && gold notin #property && agapite notin #property && verite notin #property && valorite notin #property
      Set %IronIngotsFound Yes
   Else
       IgnoreItem #FindID 3
   }
Until %IronIngotsFound = Yes || #FindCnt < 1
IgnoreItem Reset 3
If #findstack < 10 && %IronIngotsFound = Yes
   {
   Set %quantityinpack 10 - #findstack
   Set %IronIngotsFound No
   Repeat
       {
       Finditem %Ingots C_ , %ResourceSecure
       Event Property #FindID
       If shadow notin #property && dull notin #property && copper notin #property && bronze notin #property && gold notin #property && agapite notin #property && verite notin #property && valorite notin #property
          Set %IronIngotsFound Yes
       Else
           IgnoreItem #FindID 3
       }
   Until %IronIngotsFound = Yes || #FindCnt < 1
   IgnoreItem Reset 3
   If #findstack < %quantityinpack
      {
      display You need to place more Iron ingots in your Resource Secure and hit play.
      pause
      Goto MakeTongsLoop
      }
   else
       {
       exevent drag #findid %quantityinpack
       wait 10
       exevent dropc #backpackid
       wait 20
       }
   }
If %IronIngotsFound = No
   {
   Set %quantityinpack 10
   Set %IronIngotsFound No
   Repeat
       {
       Finditem %Ingots C_ , %ResourceSecure
       Event Property #FindID
       If shadow notin #property && dull notin #property && copper notin #property && bronze notin #property && gold notin #property && agapite notin #property && verite notin #property && valorite notin #property
          Set %IronIngotsFound Yes
       Else
           IgnoreItem #FindID 3
       }
   Until %IronIngotsFound = Yes || #FindCnt < 1
   IgnoreItem Reset 3
   If #findstack < %quantityinpack
      {
      display You need to place more Iron ingots in your Resource Secure and hit play.
      pause
      Goto MakeTongsLoop
      }
   else
       {
       exevent drag #findid %quantityinpack
       wait 10
       exevent dropc #backpackid
       wait 20
       }
   }
Finditem %TinkerTools C_ , #backpackid
If #FindCnt < 2
   {
   Gosub Check_Tinker_Kit
   GoTo MakeTongsLoop
   }
Set #lobjectid #findid
Event macro 17
gosub waitforgump %cwin
if ! #result
   Goto MakeTongsLoop
Gosub OffSetClick 30 130     ; Selects Tools Category
gosub waitforgump %cwin
if ! #result
   GoTo MakeTongsLoop
Gosub OffSetClick 380 270    ; Selects next page
gosub waitforgump %cwin
if ! #result
   GoTo MakeTongsLoop
Gosub OffSetClick 230 110    ; Selects make tongs
gosub waitforgump %cwin
if ! #result
   GoTo MakeTongsLoop
Gosub OffSetClick 28 453     ; Selects Close Craft Gump
Wait 10
Return #True

;==========================================================
; Script Name: TrailMyx's Advanced Journal Scanner
; Author: TrailMyx
; Version: 1.1
; Shard OSI / FS: OSI / FS?
; Revision Date: 10/20/2007
; Purpose:
;   Use these subs to quickly find text in your #journal entries.  These subs
; use #jindex for flawless journal scanning and is much more reliable than using
; standard indexing of #journal and #SYSMSG.
;
;   Now it is possible to manage separate journals based on unrelated text.  It's now possible
; to monitor spellcasting, bandaging, stealing, or anything else without a TM_AdvJournalSync
; potentially removing text needed for another UO funciton.
;
;   New is the ability to either gosub or call these functions without the need to change the
; header!  When calling, a limit of 10 arguments is allowed, but more can be added by editing the
; call interface section.
;
;  Examples:
;     gosub TM_AdvJournalSync speech 100 ; sync "speech" journal space, set #LPC to 100 from default of 1000
;     gosub TM_AdvJournalScan speech VALID Find_this_text and_find_this_too ; will not advance copy of #jindex
;     gosub TM_AdvJournalScan heal VALID_ADVANCE you_heal_what that_patient_is_not ; advances pointer after scan
;     gosub TM_AdvJournalScan spellcast NONE fizzle ; no spam checking and doesn't advance #jindex copy automatically
;
;  Subs included:
;     TM_AdvJournalSync - Must call this in initialzation
;     TM_AdvJournalScan - see header for details....
;
;  Release history:
;    v1.0 - Initial release.
;    v1.1 - debug code added, fixed small possibility to miss an incoming journal entry
;
;  Requirements:
;    Nothing special
;
;  Credit:
;    If you use these subs, please leave credit for me somewhere in your script header.
;=================================================================
;------------------------  Call interface  -----------------------
;=================================================================
set !TM_FunctionCalled #FALSE
if %0 = 1
  gosub %1
if %0 = 2
  gosub %1 %2
if %0 = 3
  gosub %1 %2 %3
if %0 = 4
  gosub %1 %2 %3 %4
if %0 = 5
  gosub %1 %2 %3 %4 %5
if %0 = 6
  gosub %1 %2 %3 %4 %5 %6
if %0 = 7
  gosub %1 %2 %3 %4 %5 %6 %7
if %0 = 8
  gosub %1 %2 %3 %4 %5 %6 %7 %8
if %0 = 9
  gosub %1 %2 %3 %4 %5 %6 %7 %8 %9
if %0 = 10
  gosub %1 %2 %3 %4 %5 %6 %7 %8 %9 %10
if %0 = 11
  gosub %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11
if %0 > 11
{
  display ok Too many arguments for "call", edit file.
  stop
}

if !TM_FunctionCalled = #TRUE
  exit
if %0 = N/A
  display ok You may not run this script directly.
else
  display ok Function " , %1 , " not found.
stop
;-------------------------------------------------------------------------------
;-------------------------------------------------------------------------------
; %1 - Journal Name
; %2 - #LPC setting (optional)
; Brings !_jindex up to the most recent #journal entry
sub TM_AdvJournalSync
  namespace push
  namespace local TM_AdvJS_ , %1
  set !_jindex #jindex + 1
  if %0 > 1
    set !lpc_set %2
  namespace pop
  set !TM_FunctionCalled #TRUE
return
;-------------------------------------------------------------------------------
; %1 - Journal Name
; %2 - NONE, ADVANCE , ( _VALID ) - advances jindex pointer, anything else
; %3, %4, %5, etc strings to match
; returns #TRUE for match, #FALSE for no match
;  Will not advance !_jindex pointer to allow for scanning journal history for more than one search.
;  Also searches for : , #SPC in journal entry to be sure someone isn't spamming the text
;  About %2 arguments:
;    NONE: defaults to basic journal scan (no SPAM checking, no #jindex pointer copy advancing)
;    ADVANCE: no spam checking, advances #jindex copy
;    VALID: invokes SPAM filtering, no advance of #jindex copy
;    VALID_ADVANCE, VALIDADVANCE, ADVANCE_VALID, etc.: invokes SPAM filtering, advances of #jindex copy
sub TM_AdvJournalScan
  namespace push
  namespace local TM_AdvJS_ , %1
  set !args %2
  set !temp_lpc #LPC
  if !lpc_set = N/A
    set #LPC 1000
  else
    set #LPC !lpc_set
  set !num_args %0
  set !first_arg 3
  set !sampled_jindex #JINDEX
  if !_jindex = N/A
    set !_jindex !sampled_jindex
  if !charname = N/A
  {
    set !charname #CHARNAME
    AdvJournalScan_loop1:
      str pos !charname #SPC
      if #STRRES <> 0
      {
        set !val #STRRES - 1
        str left !charname !val
        set !left #STRRES
        set !val !val + 1
        str del !charname 1 !val
        set !charname !left , _ , #STRRES
        goto AdvJournalScan_loop1
      }
  }
  set !index !first_arg
  repeat
    set !temp_jindex !_jindex
    set !text % . !index
    while !temp_jindex <= !sampled_jindex
    {
      scanjournal !temp_jindex
      str pos #JOURNAL !charname 1
      set !namepos #STRRES
      str count #JOURNAL !charname
      set !namecnt #STRRES
      str pos #JOURNAL :_ 1
      set !smcpos #STRRES
      str pos #JOURNAL !text 1
      set !textpos #STRRES
      if !textpos < !smcpos && !smcpos <> 0 || !smcpos = 1 || :_ notin #JOURNAL || VALID notin !args
        set !pass #TRUE
      else
        set !pass #FALSE
      if ( !text in #journal && ( ( !namepos = 1 && !namecnt <= 1 ) || !pass ) )
      {
        set !temp_jindex !temp_jindex + 1
        if ADVANCE in !args
          set !_jindex !temp_jindex
        set #LPC !temp_lpc
        namespace pop
        set !TM_FunctionCalled #TRUE
        return #TRUE
      }
      set !temp_jindex !temp_jindex + 1
    }
    set !index !index + 1
  until !index - !first_arg > !num_args - !first_arg
  set %10 !sampled_jindex - !_jindex
  set %10 %1 , _ , %10 ; for debugging purposes
  set #LPC !temp_lpc
  namespace pop
  set !TM_FunctionCalled #TRUE
return #FALSE

;==========================================================
Sub OffSetClick
  Set %tempx %1 + #CONTPOSX
  Set %tempy %2 + #CONTPOSY
  Click %tempx %tempy f
Return

;==========================================================
Sub waitforgump
Set %timeout #scnt + 10
While #contsize <> %1
      {
      Wait %gumpwait
      If #scnt > %timeout
         {
         Return #false
         }
      }
Wait %gumpwait
Return #true

;======================================================================
Sub Setup

Gosub Tm_AdvJournalSync BODBOOK 100
Set %BODBookEmpty No
Set %TinkerTools JTL_GTL_KTL
Set %Tongs OBG
Set %Ingots ENK
Set %cwin 530_497       ; Publish 65 Craft window size
Set %BODBookNameGump 87_42
Set %BODBookMainGump 620_459
Set %GumpWait 2
Set %targetcursorwait 2

Set %EmptyBODBookFound N/A

Display Target the book in your backpack with BODs that you want to fill
  set #targcurs 1
      while #targcurs = 1
         wait 1
         Set %EmptyBODBook #LTargetID
      wait 5

Display Target the book in your backpack for completed BODs
  set #targcurs 1
      while #targcurs = 1
         wait 1
         Set %FullBODBook #LTargetID
      wait 5

Display Target your resource secure
  set #targcurs 1
      while #targcurs = 1
         wait 1
         Set %ResourceSecure #LTargetID
      wait 5

Open_Check_ResourceSecure:
FindItem %ResourceSecure G_2
If #FindCnt < 1
   {
   Display You are either too far from your Resource Secure, or have not assigned one. Please restart.
   Pause
   }
Set #LObjectID #FindID
Event Macro 17 0
Wait 20

Return
2
New member introductions / Re: Hi Everyone, I am Katara
« Last post by Crisis on March 21, 2026, 07:29:25 AM »
Welcome to SUO!
3
New member introductions / Re: Hi Everyone, I am Katara
« Last post by gimlet on March 05, 2026, 08:37:39 PM »

A Very Warm Welcome!

Thanks for your introduction - restricted status lifted - feel free to enjoy all the benefits of the site!


WELCOME!

4
New member introductions / Hi Everyone, I am Katara
« Last post by Katara on March 05, 2026, 12:44:25 PM »
Hello everyone.  I have been playing on & on for a long time (don't want to say number of years and give away my age).  But as my online gaming experience has evolved over the years, I have learned that "world creation" is more fun for me than actual playing.  Although I love My Tamer/Mage.  Lately I joined a private shard and am currently "developing, and hosting" Live events.  "Hide & Seek".... fairly simple events.  But the owners would like me to expand.... so, I found this site and would like to learn.

Thanks all

Kat
5
UO News / [UO.com]Classic Client Patch 7.0.114.2
« Last post by Spaz Ferret on February 24, 2026, 03:08:47 PM »
Classic Client Patch 7.0.114.2

2/24/2026 Greetings, We’ve released Classic Client Patch 7.0.114.2 which addresses the following, Resolves issue with out of synch animations in the Paladin of Air armor set Resolves map issues related to New Legacy Shards See you in Britannia, UO Team
Source: Classic Client Patch 7.0.114.2
6
UO News / [UO.com]UO.com Forum Sunset
« Last post by Spaz Ferret on February 24, 2026, 03:08:40 PM »
7
Orion UO Client / Re: Everything is good. Help me, I need a script for pvp.
« Last post by lbfsiteweb on February 23, 2026, 09:12:42 PM »
Another master is about to be born
8
UO News / [UO.com]UO.com Forum Sunset
« Last post by Spaz Ferret on February 23, 2026, 09:48:35 AM »
UO.com Forum Sunset

2/23/2026 Greetings, As we outlined in our most recent Roadmap Update, the UO.com Forums will be sunset on Friday, February 27, 2026.  No other features of UO.com will be impacted.  We invite you to join us on the Official Ultima Online Discord to continue the conversation: https://discord.com/invite/ultimaonline See you in Britannia, UO Team
Source: UO.com Forum Sunset
9
UO News / [UO.com]Recent Server Performance Issues
« Last post by Spaz Ferret on February 23, 2026, 09:48:34 AM »
Recent Server Performance Issues

2/20/2026 Greetings, Recently the UO team investigated reports of degraded server performance as it relates to our new global event, “Kindlehart”. We took steps to identify several areas where an inordinate amount of server resources were being allocated to elements of the encounter and corrected those.  We’ve read your feedback regarding some of these optimizations, especially world boss loot, and will be addressing those concerns.  Thank you to all those who submitted bug reports and feedback regarding that issue. Upon further investigation it became clear a small number of user accounts were in violation of the Terms of Service, and […]
Source: Recent Server Performance Issues
10
UO News / [UO.com]Recent Server Performance Issues
« Last post by Spaz Ferret on February 20, 2026, 10:36:06 AM »
Pages: [1] 2 3 ... 10