UO Evolution

Tech Support => Coding Corner => Topic started by: Evolution on March 04, 2016, 03:40:54 PM

Title: UO Steam Macro Library
Post by: Evolution on March 04, 2016, 03:40:54 PM
UO Steam Macro Library - UO Evolution Shard

http://www.uosteam.com/ (http://www.uosteam.com/)
http://www.uosteam.com/uo-steam-faq/ (http://www.uosteam.com/uo-steam-faq/)
http://www.uosteam.com/uo-steam-guide/ (http://www.uosteam.com/uo-steam-guide/)
http://uoevolution.com/wiki/index.php/UO_Steam_Wiki (http://uoevolution.com/wiki/index.php/UO_Steam_Wiki)

UO Steam Macro Library on github

https://github.com/her/uosteam (https://github.com/her/uosteam)


Please add your favorite UOSteam Macros in this thread
Title: Re: UO Steam Macro Library
Post by: Evolution on March 04, 2016, 03:42:30 PM
Ultima Online - Magery and Resists Trainer - UO Steam Script Macro

Code: [Select]
////////////////////////////////////
// This macro is designed for //
// training both magery and //
// resist from 30. It is intended //
// for characters with 40+ //
// intelligence. //
// //
// Turn on loop and click play! //
////////////////////////////////////
if skill 'magery' < 100
if @injournal 'insufficient mana'
clearjournal
useskill 'meditation'
while mana < maxmana
endwhile
else
if skill 'magery' < 30
headmsg 'Buy more skill!'
stop
elseif skill 'magery' < 45
cast 'bless' 'self'
pause 1000
elseif skill 'magery' < 55
cast 'mana drain' 'self'
pause 1000
elseif skill 'magery' < 75
cast 'invisibility' 'self'
pause 1000
elseif skill 'magery' < 100
cast 'mana vampire' 'self'
pause 1000
else
headmsg 'Magery complete!'
stop
endif
endif
elseif skill 'resisting spells' < 100
if @injournal 'insufficient mana'
clearjournal
useskill 'meditation'
while mana < maxmana
endwhile
else
cast 'mana vampire' 'self'
pause 1000
endif
else
headmsg 'Magery and resisting spells complete!'
stop
endif

Title: Re: UO Steam Macro Library
Post by: Evolution on March 04, 2016, 03:43:03 PM

Ultima Online - Scroll Trainer - UO Steam Script Macro


[/font][/size]
Code: [Select]
if not @listexists 'Scrolls'
createlist 'Scrolls'
pushlist 'Scrolls' 0x1f66
endif
if mana < 30
clearjournal
useskill 'meditation'
while mana < maxmana
endwhile
else
if @counttype 0xfbf 0x0 'backpack' < 2
movetype 0xfbf 'restock' 'backpack' 0 0 0 0x0 3
pause 1000
endif
if not @findtype 0xfbf 0x0 'backpack'
headmsg 'Get more Pens!'
stop
endif
if not @findobject 'Completed'
headmsg 'Select your Storage for Finished Goods'
promptalias 'Completed'
endif
if not @findobject 'restock'
headmsg 'Select the container with your materials'
promptalias 'restock'
useobject 'restock'
endif
if @counttype 0x1f66 0x0 'backpack' < 1
movetype 0x1f66 'restock' 'backpack' 0 0 0 0x0 10
pause 1000
endif
if @counttype 0xf88 0x0 'backpack' < 10
movetype 0xf88 'restock' 'backpack' 0 0 0 0x0 50
pause 1000
endif
if @counttype 0xf86 0x0 'backpack' < 10
movetype 0xf86 'restock' 'backpack' 0 0 0 0x0 50
pause 1000
endif
if @counttype 0xef3 0x0 'backpack' < 10
movetype 0xef3 'restock' 'backpack' 0 0 0 0x0 50
pause 1000
endif
if @counttype 0xf7b 0x0 'backpack' < 10
movetype 0xf7b 'restock' 'backpack' 0 0 0 0x0 50
pause 1000
endif
if @counttype 0xf7a 0x0 'backpack' < 10
movetype 0xf7a 'restock' 'backpack' 0 0 0 0x0 50
pause 1000
endif
if skill 'Magery' < 88
headmsg 'Buy more skill!'
stop
elseif skill 'Magery' < 101
if usetype 0xfbf 0x0 'backpack'
waitforgump 0x38920abd 15000
replygump 0x38920abd 51
waitforgump 0x38920abd 15000
replygump 0x38920abd 51
waitforgump 0x38920abd 2000
endif
else
headmsg 'Out of Stock!'
stop
endif
if @counttype 0x1f4c 0x0 'backpack' > 10
movetype 0x1f4c 'backpack' 'Completed'
pause 1000
endif
endif
pause 600
Title: Re: UO Steam Macro Library
Post by: Evolution on March 04, 2016, 03:43:31 PM

Ultima Online - Stealth Trainer - UO Steam Script Macro

Code: [Select]
////////////////////////////////////
// Go to any public moongate for //
// this to work. Also, bring a //
// ringmail tunic and sleeves. //
// This macrois designed for //
// training stealth from 0. //
// //
// Turn on loop and click play! //
// //
// ~~Made by kdivers~~ //
////////////////////////////////////
if skill 'hiding' < 80
headmsg 'Train your hiding to 80.0 first!'
stop
endif
if not @findobject 'chest' and not @findtype 0x13ec 'any' 'self'
headmsg 'Buy a ringmail tunic'
stop
else
setalias 'chest' 'found'
endif
if not @findobject 'arms' and not @findtype 0x13ee 'any' 'self'
headmsg 'Buy ringmail sleeves'
stop
else
setalias 'arms' 'found'
endif
if skill 'stealth' < 80
if usetype 0xf6c 'any' 'ground'
waitforgump 0xe0e675b8 15000
replygump 0xe0e675b8 1 1
pause 10000
useskill 'stealth'
pause 600
endif
if usetype 0xf6c 'any' 'ground'
waitforgump 0xe0e675b8 15000
replygump 0xe0e675b8 1 0
pause 10000
useskill 'stealth'
pause 600
endif
elseif skill 'stealth' < 100
if not @findlayer 'self' 13
@equipitem 'chest' 13
pause 600
endif
if not @findlayer 'self' 19
@equipitem 'arms' 19
pause 600
endif
if usetype 0xf6c 'any' 'ground'
waitforgump 0xe0e675b8 15000
replygump 0xe0e675b8 1 1
pause 10000
useskill 'stealth'
pause 600
endif
if usetype 0xf6c 'any' 'ground'
waitforgump 0xe0e675b8 15000
replygump 0xe0e675b8 1 0
pause 10000
useskill 'stealth'
pause 600
endif
endif

Title: Re: UO Steam Macro Library
Post by: Evolution on March 04, 2016, 03:44:11 PM
Ultima Online - Sort Your Items - UO Steam Script Macro

Code: [Select]
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
//$$ Sort Yer Stuff
//$$ By: Amonseti
//$$ V 2.5
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
//
//??? USAGE GUIDE LINES:
//??? This macro requires the character to have Item Identification
//??? skill, it is recomended to be 100. not haveing guranteed id's
//??? could be costly ..
//???
//??? Macro will sort thru all items of one container and separate
//??? all weapons and armor into 2 bags. A Junk bag and a Keeper Bag.
//???
//??? have ready 3 bags the first bag is the source bag containing all
//??? the items you want sorted. the 2nd bag is the junk bag, any
//??? weapons or armor that is id'ed and not meeting the keep requirments
//??? is placed into this bag to be sold or trashed what ever you want
//??? to do with it.
//???
//??? and finally the 3rd bag is the keeper bag.. items placed into
//??? this bag must meet any 1 of the following conditions:
//??? A) Any weapons that are Vanquishing.
//??? B) Any Weapons that are Power.
//??? C) Any Weapons with a Slayer attribute.
//??? D) Any armor or shield of Invulnerability.
//??? E) All leather or studded armor reguardless of quality.
//???
//??? Run the Macro and follow the prompting instructions.
//???
// !!*** Init Data ***!!
@clearjournal
unsetalias 'bagtosort'
unsetalias 'stufftosell'
unsetalias 'stufftokeep'
// !! user Input
if not @findobject 'bagtosort'
headmsg 'Select From Bag' '2124'
promptalias 'bagtosort'
endif
pause 700
// !! user Input
if not @findobject 'stufftosell'
headmsg 'Select Junk Bag' '38'
promptalias 'stufftosell'
endif
pause 700
// !! user Input
if not @findobject 'stufftokeep'
headmsg 'Select Keeper Bag' '58'
promptalias 'stufftokeep'
endif
pause 700
//
// !! Static Data
if not listexists 'ItemTypes'
createlist 'ItemTypes'
endif
useobject 'bagtosort'
useobject 'stufftosell'
useobject 'stufftokeep'
clearlist 'ItemTypes'
//Shields
@pushlist 'ItemTypes' 0x1b72 //BronzeShields
@pushlist 'ItemTypes' 0x1b73 //Buckler
@pushlist 'ItemTypes' 0x1b7b //MetalShield
@pushlist 'ItemTypes' 0x1b74 //Metal Kite Shield
@pushlist 'ItemTypes' 0x1b79 //Tear Kite Shield
@pushlist 'ItemTypes' 0x1b7a //WoodenShield
@pushlist 'ItemTypes' 0x1b76 //HeaterShield
//Bone Armor
@pushlist 'ItemTypes' 0x1451 //Bone Helmet
@pushlist 'ItemTypes' 0x144f //Bone Armor
@pushlist 'ItemTypes' 0x1452 //Bone Leggings
@pushlist 'ItemTypes' 0x144e //Bone Arms
@pushlist 'ItemTypes' 0x1450 //Bone Gloves
//Platemail
@pushlist 'ItemTypes' 0x1408 //Close Helmet
@pushlist 'ItemTypes' 0x1410 //Platemail Arms
@pushlist 'ItemTypes' 0x1411 //Platemail Legs
@pushlist 'ItemTypes' 0x1412 //Plate Helm
@pushlist 'ItemTypes' 0x1413 //Plate Gorget
@pushlist 'ItemTypes' 0x1414 //Platemail Gloves
@pushlist 'ItemTypes' 0x1415 //Plate Chest
@pushlist 'ItemTypes' 0x140a //Helmet
@pushlist 'ItemTypes' 0x140c //Bascinet
@pushlist 'ItemTypes' 0x140e //Norse Helm
//Chainmail
@pushlist 'ItemTypes' 0x13bb //Chainmail Coif
@pushlist 'ItemTypes' 0x13be //Chainmail Leggins
@pushlist 'ItemTypes' 0x13bf //Chainmail Tunic
//Ringmail
@pushlist 'ItemTypes' 0x13ee //Ringmail Sleeves
@pushlist 'ItemTypes' 0x13eb //Ringmail Gloves
@pushlist 'ItemTypes' 0x13ec //Ringmail Tunic
@pushlist 'ItemTypes' 0x13f0 //Ringmail Leggins
//Studded
@pushlist 'ItemTypes' 0x13da //Studded Leggings
@pushlist 'ItemTypes' 0x13db //Studded Tunic
@pushlist 'ItemTypes' 0x13d5 //Studded Gloves
@pushlist 'ItemTypes' 0x13d6 //Studded Gorget
@pushlist 'ItemTypes' 0x13dc //Studded Sleeves
//Leather
@pushlist 'ItemTypes' 0x13c6 //Leather Gloves
@pushlist 'ItemTypes' 0x13cd //Leather Sleeves
@pushlist 'ItemTypes' 0x13cc //Leather Tunic
@pushlist 'ItemTypes' 0x13cb //Leather Pants
@pushlist 'ItemTypes' 0x13c7 //Leather Gorget
@pushlist 'ItemTypes' 0x1db9 //Leather Cap
//Female Armor
@pushlist 'ItemTypes' 0x1c04 //Female Plate
@pushlist 'ItemTypes' 0x1c0c //Female Studded Bustier
@pushlist 'ItemTypes' 0x1c02 //Female Studded Armor
@pushlist 'ItemTypes' 0x1c00 //Female Leather Shorts
@pushlist 'ItemTypes' 0x1c08 //Female Leather Skirt
@pushlist 'ItemTypes' 0x1c06 //Female Leather Armor
@pushlist 'ItemTypes' 0x1c0a //Female Leather Bustier
//Fencing
@pushlist 'ItemTypes' 0xf62 //Spear
@pushlist 'ItemTypes' 0x1403 //Short Spear
@pushlist 'ItemTypes' 0xe87 //Pitchfork
@pushlist 'ItemTypes' 0x1405 //Warfork
@pushlist 'ItemTypes' 0x1401 //Kryss
@pushlist 'ItemTypes' 0xf52 //Dagger
//Macing
@pushlist 'ItemTypes' 0x13b0 //War axe
@pushlist 'ItemTypes' 0xdf0 //Black Staff
@pushlist 'ItemTypes' 0x1439 //War Hammer
@pushlist 'ItemTypes' 0x1407 //War Mace
@pushlist 'ItemTypes' 0xe89 //Quarter Staff
@pushlist 'ItemTypes' 0x143d //Hammer Pick
@pushlist 'ItemTypes' 0x13b4 //Club
@pushlist 'ItemTypes' 0xe81 //Shepherds Crook
@pushlist 'ItemTypes' 0x13f8 //Gnarled Staff
@pushlist 'ItemTypes' 0xf5c //Mace
@pushlist 'ItemTypes' 0x143b //Maul
//Swords
@pushlist 'ItemTypes' 0x13b9 //Viking Sword
@pushlist 'ItemTypes' 0xf61 //Longsword
@pushlist 'ItemTypes' 0x1441 //Cutlass
@pushlist 'ItemTypes' 0x13b6 //Scimitar
@pushlist 'ItemTypes' 0xec4 //Skinning Knife
@pushlist 'ItemTypes' 0x13f6 //Butcher Knife
@pushlist 'ItemTypes' 0xf5e //Broadsword
@pushlist 'ItemTypes' 0x13ff //Katana
@pushlist 'ItemTypes' 0xec3 //Cleaver
//Axes
@pushlist 'ItemTypes' 0xf43 //Hatchet
@pushlist 'ItemTypes' 0xf45 //Executioner's Axe
@pushlist 'ItemTypes' 0xf4d //Bardiche
@pushlist 'ItemTypes' 0xf4b //Double Axe
@pushlist 'ItemTypes' 0x143e //Halberd
@pushlist 'ItemTypes' 0x13fb //Large Battle Axe
@pushlist 'ItemTypes' 0x1443 //Two Handed Axe
@pushlist 'ItemTypes' 0xf47 //Battle Axe
@pushlist 'ItemTypes' 0xf49 //Axe
@pushlist 'ItemTypes' 0xe85 //Pickaxe
@pushlist 'ItemTypes' 0xe86 //Pickaxe
//Bows
@pushlist 'ItemTypes' 0x13fd //HeavyXbow
@pushlist 'ItemTypes' 0xf50 //Xbow
@pushlist 'ItemTypes' 0x13b2 //bow
// !!*** End of Data Init ***!!
//
//
//
// !! cycle all items listed in var ItemTypes
for 0 to 'ItemTypes'
// !! Process all items found of current cyucled ItemType
while @findtype 'ItemTypes[]' 'any' 'bagtosort'
@clearjournal
moveitem found 'stufftosell'
// !! Id the item using Item ID Skill
pause 1500
useskill 'Item Identification'
waitfortarget 15000
target! found
pause 1500
//
// !!*** Item to do conditionals ***!!
// !!*** If any of these conditions are true
// !!*** The Item is a keeper , (Sure wish we
// !!*** Could use switchs bleh )
// !!*****************************************!!
if @injournal 'Silver' 'system'
moveitem found 'stufftokeep'
headmsg 'Silver' '2213'
@clearjournal
elseif @injournal 'Vanquishing' 'system'
moveitem found 'stufftokeep'
headmsg 'Vanquishing' '2213'
@clearjournal
elseif @injournal 'Power' 'system'
moveitem found 'stufftokeep'
headmsg 'Power' '2213'
@clearjournal
elseif @injournal 'Exorcism' 'system'
moveitem found 'stufftokeep'
headmsg 'Exorcisim' '2213'
@clearjournal
elseif @injournal 'Air' 'system'
moveitem found 'stufftokeep'
headmsg 'Air' '2213'
@clearjournal
elseif @injournal 'Daemon' 'system'
moveitem found 'stufftokeep'
headmsg 'Daemon' '2213'
@clearjournal
elseif @injournal 'Gargoyle' 'system'
moveitem found 'stufftokeep'
headmsg 'Gargoyle' '2213'
@clearjournal
elseif @injournal 'Fey' 'system'
moveitem found 'stufftokeep'
headmsg 'Fey' '2213'
@clearjournal
elseif @injournal 'Respond' 'system'
moveitem found 'stufftokeep'
headmsg 'Respond' '2213'
@clearjournal
elseif @injournal 'Repond' 'system'
moveitem found 'stufftokeep'
headmsg 'Repond' '2213'
@clearjournal
elseif @injournal 'Vacuum' 'system'
moveitem found 'stufftokeep'
headmsg 'Vacuum' '2213'
@clearjournal
elseif @injournal 'Flame' 'system'
moveitem found 'stufftokeep'
headmsg 'Flame' '2213'
@clearjournal
elseif @injournal 'Elemental' 'system'
moveitem found 'stufftokeep'
headmsg 'Elemental' '2213'
@clearjournal
elseif @injournal 'Earth' 'system'
moveitem found 'stufftokeep'
headmsg 'Earth' '2213'
@clearjournal
elseif @injournal 'Water' 'system'
moveitem found 'stufftokeep'
headmsg 'Water' '2213'
@clearjournal
elseif @injournal 'Ogre' 'system'
moveitem found 'stufftokeep'
headmsg 'Ogre' '2213'
@clearjournal
elseif @injournal 'Orc' 'system'
moveitem found 'stufftokeep'
headmsg 'Orc' '2213'
@clearjournal
elseif @injournal 'Arachnid' 'system'
moveitem found 'stufftokeep'
headmsg 'Arachnid' '2213'
@clearjournal
elseif @injournal 'Spider' 'system'
moveitem found 'stufftokeep'
headmsg 'Spider' '2213'
@clearjournal
elseif @injournal 'Scorpion' 'system'
moveitem found 'stufftokeep'
headmsg 'Scorpion' '2213'
@clearjournal
elseif @injournal 'Terathan' 'system'
moveitem found 'stufftokeep'
headmsg 'Terathan' '2213'
@clearjournal
elseif @injournal 'Reptile' 'system'
moveitem found 'stufftokeep'
headmsg 'Reptile' '2213'
@clearjournal
elseif @injournal 'Dragon' 'system'
headmsg 'Dragon' '2213'
moveitem found 'stufftokeep'
@clearjournal
elseif @injournal 'Lizardman' 'system'
moveitem found 'stufftokeep'
headmsg 'Lizardman' '2213'
@clearjournal
elseif @injournal 'Ophidian' 'system'
moveitem found 'stufftokeep'
headmsg 'Ophidan' '2213'
@clearjournal
elseif @injournal 'Snake' 'system'
moveitem found 'stufftokeep'
headmsg 'Snake' '2213'
@clearjournal
elseif @injournal 'Undead' 'system'
moveitem found 'stufftokeep'
headmsg 'Undead' '2213'
@clearjournal
elseif @injournal 'Blood' 'system'
moveitem found 'stufftokeep'
headmsg 'Blood' '2213'
@clearjournal
elseif @injournal 'Poison' 'system'
moveitem found 'stufftokeep'
headmsg 'Poison' '2213'
@clearjournal
elseif @injournal 'Troll' 'system'
moveitem found 'stufftokeep'
headmsg 'Troll' '2213'
@clearjournal
elseif @injournal 'Fire' 'system'
moveitem found 'stufftokeep'
headmsg 'Fire' '2213'
@clearjournal
elseif @injournal 'Snow' 'system'
moveitem found 'stufftokeep'
headmsg 'Snow' '2213'
@clearjournal
elseif @injournal 'Demon' 'system'
moveitem found 'stufftokeep'
headmsg 'Demon' '2213'
@clearjournal
elseif @injournal 'Balron' 'system'
moveitem found 'stufftokeep'
headmsg 'Balron' '2213'
@clearjournal
//
elseif @injournal 'Invulnerability' 'system'
moveitem found 'stufftokeep'
headmsg 'Invulnerability' '2213'
@clearjournal
elseif @injournal 'Leather Gloves' 'system'
moveitem found 'stufftokeep'
headmsg 'Leather Gloves' '2213'
@clearjournal
elseif @injournal 'Leather Sleeves' 'system'
moveitem found 'stufftokeep'
headmsg 'Leather Sleeves' '2213'
@clearjournal
elseif @injournal 'Leather Tunic' 'system'
moveitem found 'stufftokeep'
headmsg 'Leather Tunic' '2213'
@clearjournal
elseif @injournal 'Leather Leggings' 'system'
moveitem found 'stufftokeep'
headmsg 'Leather Leggings' '2213'
@clearjournal
elseif @injournal 'Leather Gorget' 'system'
moveitem found 'stufftokeep'
headmsg 'Leather Gorget' '2213'
@clearjournal
elseif @injournal 'Leather Cap' 'system'
moveitem found 'stufftokeep'
headmsg 'Leather Cap' '2213'
@clearjournal
elseif @injournal 'studded' 'system'
moveitem found 'stufftokeep'
headmsg 'Studded Armor!!' '2213'
@clearjournal
endif
@clearjournal
endwhile
endfor
msg '[e whistle'
headmsg 'All Done' '2124'
stop
Title: Re: UO Steam Macro Library
Post by: Evolution on March 04, 2016, 03:44:39 PM

Ultima Online - Recall Escape - UO Steam Script Macro

Code: [Select]
if not listexists 'home'
createlist 'home'
pushlist 'home' 0x401fb957 //serial for runebook for char 1
pushlist 'home' 0x4048cd67 //serial for runebook for char 2
pushlist 'home' 0x40725d1b //serial for runebook for char 3
pushlist 'home' 0x41b25eac //serial for runebook for char 4
pushlist 'home' 0x4048603a //serial for etc
endif
while @findtype 0x22c5 'any' 'backpack'
ignoreobject 'found'
for 0 to 'home'
if @Serial 'found' == serial 'home[]'
if @Serial 'found' == serial 0x41b25eac //for tamers, remove if statement


if your not a tamer
msg 'all come'
msg 'all come'
endif
cast "Recall"
waitfortarget 2000
target! 'found'
break
endif
endfor
endwhile
clearignorelist
Title: Re: UO Steam Macro Library
Post by: Evolution on March 04, 2016, 03:45:09 PM
Ultima Online - Weapon Swap - UO Steam Script Macro


One Button weapon swap

Code: [Select]
if not listexists 'swapweapons'


createlist 'swapweapons'


endif


if list 'swapweapons' < 1


pushlist 'swapweapons' 0x41cebcd4 //set serial here


pushlist 'swapweapons' 0x41cebe3d //set serial here


endif


if findobject 'lefthand'


clearhands 'both'


pause 500


endif


equipitem swapweapons[0] 1


poplist 'swapweapons' 'front'
Title: Re: UO Steam Macro Library
Post by: Evolution on March 04, 2016, 03:46:24 PM
Ultima Online - Cure/Heal Potion Drinker - UO Steam Script Macro

Code: [Select]
// $$$$$$$$ Cure Heal Pot Chugger $$$$$$$$
// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
// ?? By Amonseti
// ?? V2.1
// ?? This macro only requires that there
// ?? be Cure and / or Heal pots in the
// ?? Main pack or any bag in the main.
// ??
// ?? Macro will first check if you are
// ?? holding a weapon and clear your hands
// ?? to allow for pot chuggins. It will
// ?? then do a check to see if you are
// ?? Poisoned and attempt to cure it.
// ?? with a cure pot. other wise it will
// ?? chug a heal pot.
// ??
// ?? When done the macro will automatically
// ?? re-equip the weapon you were using..
// ??
// !! Check if holding a weapon !!
if @findlayer 'self' 2
// !! Unequip wep
togglehands 'left'
pause 600
//
// !! Check poison state
if poisoned 'self'
// !! Player is poisoned: Cure it
if @findtype 0xf07 0 'backpack'
@setalias 'Potion' 'found'
useobject! 'Potion'
else
headmsg 'OUT!!! of Cure potions'
endif
else
// !! Not poisoned: Heal wounds
if @findtype 0xf0c 0 'backpack'
@setalias 'Potion' 'found'
useobject! 'Potion'
else
headmsg 'OUT!!! of Heal potions'
endif
endif
//
pause 600
// !! Re-Equip Weapon player was holding
togglehands 'left'
else
// !! Check poison state
if poisoned 'self'
// !! Player is poisoned: Cure it
if @findtype 0xf07 0 'backpack'
@setalias 'Potion' 'found'
useobject! 'Potion'
else
headmsg 'OUT!!! of Cure potions'
endif
else
// !! Not poisoned: Heal wounds
if @findtype 0xf0c 0 'backpack'
@setalias 'Potion' 'found'
useobject! 'Potion'
else
headmsg 'OUT!!! of Heal potions'
endif
endif
endif


Title: Re: UO Steam Macro Library
Post by: Evolution on March 04, 2016, 03:47:10 PM

Ultima Online - Dex Potion Drinker - UO Steam Script Macro


Code: [Select]
// $$$$$$$$$$$ Dex Pot Chugger $$$$$$$$$$$
// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
// ?? By Amonseti
// ?? V2.0
// ?? This macro only requires that there
// ?? be Dex pots in the Main pack or any
// ?? bag in the main.
// ??
// ?? Macro will first check if you are
// ?? holding a weapon and clear your hands
// ?? to allow for pot chuggins.
// ??
// ?? When done the macro will automatically
// ?? re-equip the weapon you were using..
// ??
//
// !! Check if holding a weapon !!
if @findlayer 'self' 2
// !! Unequip wep
togglehands 'left'
pause 600
//
if @findtype 0xf08 0 'backpack'
@setalias 'Potion' 'found'
useobject! 'Potion'
else
headmsg 'OUT!!! of Dex potions'
endif
//
pause 600
// !! Re-Equip Weapon player was holding
togglehands 'left'
else
if @findtype 0xf08 0 'backpack'
@setalias 'Potion' 'found'
useobject! 'Potion'
else
headmsg 'OUT!!! of Dex potions'
endif
endif
Title: Re: UO Steam Macro Library
Post by: Evolution on March 04, 2016, 03:47:41 PM
Ultima Online - Inscription Trainer - UO Steam Script Macro

Code: [Select]
////////////////////////////////////
// This macro is designed for //
// training inscription from 30. //
// It is intended for characters //
// with 40+ intelligence. //
// //
// Turn on loop and click play! //
// //
// ~~Made by kdivers~~ //
////////////////////////////////////
if not @findtype 0xfbf 0x0 'backpack'
headmsg 'Get more scribes pens!'
stop
endif
if @ingump 0x38920abd 'You lack the required'
useskill 'meditation'
while mana < maxmana
endwhile
endif
if @ingump 0x38920abd 'You do not have enough'
headmsg 'Get more supplies!'
stop
endif
if skill 'inscription' < 30
headmsg 'Buy more skill!'
stop
elseif skill 'inscription' < 55
if usetype 0xfbf
waitforgump 0x38920abd 15000
replygump 0x38920abd 22
waitforgump 0x38920abd 15000
replygump 0x38920abd 51
waitforgump 0x38920abd 2000
endif
elseif skill 'inscription' < 75
if usetype 0xfbf
waitforgump 0x38920abd 15000
replygump 0x38920abd 36
waitforgump 0x38920abd 15000
replygump 0x38920abd 30
waitforgump 0x38920abd 2000
endif
elseif skill 'inscription' < 95
if usetype 0xfbf
waitforgump 0x38920abd 15000
replygump 0x38920abd 43
waitforgump 0x38920abd 15000
replygump 0x38920abd 23
waitforgump 0x38920abd 2000
endif
elseif skill 'inscription' < 101
if usetype 0xfbf
waitforgump 0x38920abd 15000
replygump 0x38920abd 50
waitforgump 0x38920abd 15000
replygump 0x38920abd 9
waitforgump 0x38920abd 2000
endif
else
headmsg 'Inscription complete!'
stop
endif
Title: Re: UO Steam Macro Library
Post by: Evolution on March 04, 2016, 03:48:10 PM
Ultima Online - UO Spellbook Maker - UO Steam Script Macro


Code: [Select]
//===============================================================
//=---------------------Spell Book Maker------------------------=
//=-------------------------By:Hawt-----------------------------=
//=-------------------------------------------------------------=
//=--------This script will make scrolls 1-64, Place them-------=
//=-----------in the book, meditate, and adjust when------------=
//=----to use mediation Based on what scrolls you are making----=
//=----I have broke the script down pretty good in order for----=
//=--------others to learn from 'dissecting' the script --------=
//=-------------------------------------------------------------=
//===============================================================
//=Gives Target for you too select the spellbook you want filled=
//===============================================================
if not @findobject 'spellbook'
sysmsg '!!!! Target Empty Spell Book !!!!' '23'
promptalias 'spellbook'
endif
//===============================================================
//=-----List of the gump buttons for the 8 Spell Circles.-------=
//===============================================================
if not listexists 'Circle'
@createlist 'Circle'
endif
if 'list' 'Circle' == '0'
@pushlist 'Circle' '1'
@pushlist 'Circle' '8'
@pushlist 'Circle' '15'
@pushlist 'Circle' '22'
@pushlist 'Circle' '29'
@pushlist 'Circle' '36'
@pushlist 'Circle' '43'
@pushlist 'Circle' '50'
endif
//==============================================================
//=--------List of the gump buttons for each scroll------------=
//==============================================================
if not listexists 'Spells'
@createlist 'Spells'
endif
if 'list' 'Spells' == '0'
@pushlist 'Spells' '2'
@pushlist 'Spells' '9'
@pushlist 'Spells' '16'
@pushlist 'Spells' '23'
@pushlist 'Spells' '30'
@pushlist 'Spells' '37'
@pushlist 'Spells' '44'
@pushlist 'Spells' '51'
endif
//==============================================================
//=-------------List of different Mana lvls--------------------=
//==============================================================
if not listexists 'Mana'
@createlist 'Mana'
endif
if 'list' 'Mana' == '0'
@pushlist 'Mana' '4'
@pushlist 'Mana' '6'
@pushlist 'Mana' '9'
@pushlist 'Mana' '11'
@pushlist 'Mana' '14'
@pushlist 'Mana' '20'
@pushlist 'Mana' '40'
@pushlist 'Mana' '50'
endif
//==============================================================
//=--------------List all Scrolls for each spell---------------=
//==============================================================
//=----------I did not make this list i took the list----------=
//=------------from another in The script library--------------=
//=-------------------Thank you Kadoba!!-----------------------=
//=http://www.runuo.com/community/resources/fill-spellbook.57/-=
//==============================================================
if not listexists 'scrolls'
@createlist 'scrolls'
endif
if 'list' 'scrolls' == '0'
@pushlist 'scrolls' 0x1f2d // Reactive Armor
@pushlist 'scrolls' 0x1f2e // Clumsy
@pushlist 'scrolls' 0x1f2f // Create Food
@pushlist 'scrolls' 0x1f30 // Feeblemind
@pushlist 'scrolls' 0x1f31 // Heal
@pushlist 'scrolls' 0x1f32 // Magic Arrow
@pushlist 'scrolls' 0x1f33 // Night Sight
@pushlist 'scrolls' 0x1f34 // Weaken
@pushlist 'scrolls' 0x1f35 // Agility
@pushlist 'scrolls' 0x1f36 // Cunning
@pushlist 'scrolls' 0x1f37 // Cure
@pushlist 'scrolls' 0x1f38 // Harm
@pushlist 'scrolls' 0x1f39 // Magic Trap
@pushlist 'scrolls' 0x1f3a // Magic Untrap
@pushlist 'scrolls' 0x1f3b // Protection
@pushlist 'scrolls' 0x1f3c // Strength
@pushlist 'scrolls' 0x1f3d // Bless
@pushlist 'scrolls' 0x1f3e // Fireball
@pushlist 'scrolls' 0x1f3f // Magic Lock
@pushlist 'scrolls' 0x1f40 // Poison
@pushlist 'scrolls' 0x1f41 // Telekinesis
@pushlist 'scrolls' 0x1f42 // Teleport
@pushlist 'scrolls' 0x1f43 // Unlock
@pushlist 'scrolls' 0x1f44 // Wall of Stone
@pushlist 'scrolls' 0x1f45 // Arch Cure
@pushlist 'scrolls' 0x1f46 // Arch Protection
@pushlist 'scrolls' 0x1f47 // Curse
@pushlist 'scrolls' 0x1f48 // Fire Field
@pushlist 'scrolls' 0x1f49 // Greater Heal
@pushlist 'scrolls' 0x1f4a // Lightning
@pushlist 'scrolls' 0x1f4b // Mana Drain
@pushlist 'scrolls' 0x1f4c // Recall
@pushlist 'scrolls' 0x1f4d // Blade Spirit
@pushlist 'scrolls' 0x1f4e // Dispel Field
@pushlist 'scrolls' 0x1f4f // Incognito
@pushlist 'scrolls' 0x1f50 // Magic Reflection
@pushlist 'scrolls' 0x1f51 // Mind Blast
@pushlist 'scrolls' 0x1f52 // Paralyze
@pushlist 'scrolls' 0x1f53 // Poison Field
@pushlist 'scrolls' 0x1f54 // Summon Creature
@pushlist 'scrolls' 0x1f55 // Dispel
@pushlist 'scrolls' 0x1f56 // Energy Bolt
@pushlist 'scrolls' 0x1f57 // Explosion
@pushlist 'scrolls' 0x1f58 // Invisibility
@pushlist 'scrolls' 0x1f59 // Mark
@pushlist 'scrolls' 0x1f5a // Mass Curse
@pushlist 'scrolls' 0x1f5b // Paralyze Field
@pushlist 'scrolls' 0x1f5c // Reveal
@pushlist 'scrolls' 0x1f5d // Chain Lightning
@pushlist 'scrolls' 0x1f5e // Energy Field
@pushlist 'scrolls' 0x1f5f // Flamestrike
@pushlist 'scrolls' 0x1f60 // Gate Travel
@pushlist 'scrolls' 0x1f61 // Mana Vampire
@pushlist 'scrolls' 0x1f62 // Mass Dispel
@pushlist 'scrolls' 0x1f63 // Meteor Swarm
@pushlist 'scrolls' 0x1f64 // Polymorph
@pushlist 'scrolls' 0x1f65 // Earthquake
@pushlist 'scrolls' 0x1f66 // Energy Vortex
@pushlist 'scrolls' 0x1f67 // Ressurrection
@pushlist 'scrolls' 0x1f68 // Summon Air Elemental
@pushlist 'scrolls' 0x1f69 // Summon Daemon
@pushlist 'scrolls' 0x1f6a // Summon Earth Elemental
@pushlist 'scrolls' 0x1f6b // Summon Fire Elemental
@pushlist 'scrolls' 0x1f6c // Summon Water Elemental
endif
//===============================================================
//=-------Basically telling the script when to meditate---------=
//===============================================================
if mana < Mana[0]
useskill 'meditation'
while not mana == maxmana
endwhile
endif
//===============================================================
//=-----------------Checks for Blank Scrolls.-------------------=
//===============================================================
if not @findtype '0xef3' 'any' 'backpack'
sysmsg '#### No Scrolls###'
stop
endif
//===============================================================
//=---Checks for Scribe Pens, if finding one is uses the pen.---=
//===============================================================
if @usetype '0xfbf' 'any' 'backpack'
waitforgump '0x38920abd' '5000'
else
sysmsg '####No Pens ####' '23'
stop
endif
//==============================================================
//=-----------------Gump Buttons to be pressed.----------------=
//==============================================================
replygump '0x38920abd' Circle[0]
waitforgump '0x38920abd' '5000'
replygump '0x38920abd' Spells[0]
waitforgump '0x38920abd' '5000'
pause 900
//==============================================================
//=------------Checks for Scroll to be placed in book----------=
//==============================================================
if @movetype scrolls[0] 'backpack' 'spellbook' 0 0 0 'any' '1'
pause '1000'
poplist 'Spells' 'front'
poplist 'scrolls' 'front'
endif
//==============================================================
//=--------After Finishing a complete circle of spells---------=
//=-----This changes the Spell Circle and When to meditate.----=
//==============================================================
if list 'Spells' == 0
poplist 'Circle' 'front'
poplist 'Mana' 'front'
endif
//==============================================================
//=----This stops the script when completeing a full book.-----=
//==============================================================
if list 'scrolls' == 0
unsetalias 'spellbook'
sysmsg 'Spell Book Should Be Full' '23'
stop
endif
Title: Re: UO Steam Macro Library
Post by: Evolution on March 04, 2016, 03:48:47 PM

Ultima Online - Lumberjack Assistant - UO Steam Script Macro

Code: [Select]
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
//$$ Manual Lumberjacking assistant
//$$ By: Amonseti
//$$ V 1.8
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
//
//??? USAGE GUIDE LINES:
//??? Simply create a new macro. give it an appropreate name,
//??? Any will do.
//???
//??? Run the macro. with an axe equiped or in your backpack
//??? The macro will look for a tree first tile west
//??? of where your character is standing.
//??? The macro will tell you when to move onto the next
//??? tree until your weight has exceeded 380stones. ( This
//??? is based off of assuming your lumberjacker has 100strength)
//??? There are some trees that due to terrain height are unchoppable
//??? if for some reason you find yourself just standing there not
//??? Collecting wood ... Then move on to next tree.
//???
//???
//
//
// !! Find and equip any axe in backpack ***
if not listexists 'AxeList'
createlist 'AxeList'
endif


// !! axe data
@clearlist 'AxeList'
@pushlist 'AxeList' 0xf43 //Hatchet
@pushlist 'AxeList' 0xf45 //Executioner's Axe
@pushlist 'AxeList' 0xf4d //Bardiche
@pushlist 'AxeList' 0xf4b //Double Axe
@pushlist 'AxeList' 0x143e //Halberd
@pushlist 'AxeList' 0x13fb //Large Battle Axe
@pushlist 'AxeList' 0x1443 //Two Handed Axe
@pushlist 'AxeList' 0xf47 //Battle Axe
@pushlist 'AxeList' 0xf49 //Axe
//
// !! Equip Axe
for 0 to 'AxeList'
if @findtype 'AxeList[]' 'any' 'backpack'
unsetalias 'AXE'
setalias 'AXE' 'found'
endif
endfor
//******************************************
//
// !! Main chopping routine
while weight < 380
clearjournal
if not @findlayer 'self' 2
equipitem 'AXE' 2
pause 600
endif
//
useobject 'LeftHand'
waitfortarget 1000
targettileoffset -1 0 0
pause 500
//
//
//****** Wait for it **********************
// !! System hickup insurance loop
for 60
if @injournal 'enough wood here' 'system'
break
elseif @injournal 'You chop' 'system'
break
elseif @injournal "fail to" "system"
break
elseif @injournal "You can't" "system"
break
elseif @injournal "You can" "system"
break
elseif not @findlayer 'self' 2
break
else
pause 100
endif
endfor
//
//******************************************
//
//*** Display proper feedback
if @injournal "You can't" "system"
pause 500
endif
if @injournal 'enough wood here' 'system'
headmsg 'NO MORE WOOD' '2124'
headmsg 'go to next tree' '2124'
msg '[e whistle'
pause 2000
endif
if @injournal 'some ordinary' 'system'
headmsg '--Ordinary wood--' '1150'
clearjournal
endif
if @injournal 'some oak' 'system'
headmsg '--OAK--' '2010'
clearjournal
endif
if @injournal 'some ash' 'system'
headmsg '--ASH--' '1191'
clearjournal
endif
if @injournal 'some yew' 'system'
headmsg '--YEW--' '1192'
msg '[e ah'
clearjournal
endif
if @injournal 'some heartwood' 'system'
headmsg '>!!!--HEARTWOOD--!!!<' '1193'
msg '[e yea'
clearjournal
endif
if @injournal 'some bloodwood' 'system'
headmsg '>!!!--BLOODWOOD--!!!<' '1194'
msg '[e woohoo'
clearjournal
endif
if @injournal 'some frostwood' 'system'
headmsg '>!!!--FROSTWOOD--!!!<' '1151'
msg '[e woohoo'
clearjournal
endif
//******************************************
//
//
endwhile
headmsg 'Over Weight Fatty !' '89'
headmsg 'go home and unload!' '89'



Title: Re: UO Steam Macro Library
Post by: Evolution on March 04, 2016, 03:49:30 PM

Ultima Online - Mining - UO Steam Script Macro

Code: [Select]
if not @findalias 'Beetle'
promptalias 'Beetle'
endif
if counttype 0x19b9 'any' 'backpack' < 188
movetype 0x19b9 'backpack' 'Beetle'
endif
if not listexists 'miningerrormessages'
createlist 'miningerrormessages'
pushlist 'miningerrormessages' 'no metal here'
pushlist 'miningerrormessages' "You can't mine there"
pushlist 'miningerrormessages' "Target cannot be seen"
pushlist 'miningerrormessages' "You can't mine that"
endif
if @findtype 0xe86 'any' 'backpack' or @findtype 0xf39 'any' 'backpack'
useobject 'found'
else
sysmsg "You do not have any digging tools!"
stop
endif
waitfortarget 500
if direction == 0
targettileoffset 0 -1 0
elseif direction == 1
targettileoffset 1 -1 0
elseif direction == 2
targettileoffset 1 0 0
elseif direction == 3
targettileoffset 1 1 0
elseif direction == 4
targettileoffset 0 1 0
elseif direction == 5
targettileoffset -1 1 0
elseif direction == 6
targettileoffset -1 0 0
elseif direction == 7
targettileoffset -1 -1 0
endif
pause 200
if @findtype 0xe86 'any' 'backpack' or @findtype 0xf39 'any' 'backpack'
useobject 'found'
else
sysmsg "You do not have any digging tools!"
stop
endif
waitfortarget 500
if direction == 1
targettileoffset 0 -1 0
elseif direction == 2
targettileoffset 1 -1 0
elseif direction == 3
targettileoffset 1 0 0
elseif direction == 4
targettileoffset 1 1 0
elseif direction == 5
targettileoffset 0 1 0
elseif direction == 6
targettileoffset -1 1 0
elseif direction == 7
targettileoffset -1 0 0
elseif direction == 0
targettileoffset -1 -1 0
endif
pause 200
if @findtype 0xe86 'any' 'backpack' or @findtype 0xf39 'any' 'backpack'
useobject 'found'
else
sysmsg "You do not have any digging tools!"
stop
endif
waitfortarget 500
if direction == 7
targettileoffset 0 -1 0
elseif direction == 0
targettileoffset 1 -1 0
elseif direction == 1
targettileoffset 1 0 0
elseif direction == 2
targettileoffset 1 1 0
elseif direction == 3
targettileoffset 0 1 0
elseif direction == 4
targettileoffset -1 1 0
elseif direction == 5
targettileoffset -1 0 0
elseif direction == 6
targettileoffset -1 -1 0
endif
pause 10


Title: Re: UO Steam Macro Library
Post by: Evolution on March 04, 2016, 03:50:06 PM
Ultima Online - Fishing - UO Steam Script Macro


This macro will fish a target location and cut the fish into steaks then
organize your bags so all the junk will be in a bag and the fish steaks go
to your fishing bag.

Code: [Select]
\\\\\\\\\\Make sure you delete anything between this\\\\\\\\\\\\\\\\\\\\\\


usetype 0xdbf \\\\\\\\\\\\Uses your fishing pole\\\\\\\\\\\\\
waitfortarget 15000
targettile 5210 787 -5 \\\\\\\\\\\\Create a test macro and record the


target area you will use\\\\\\\\\\\\\\\\\\\\
pause 1000
usetype 0xf52 \\\\\\\\\\Uses your knife on a fish


type\\\\\\\\\\\\\\\\\\\\\\
waitingfortarget 15000
targettype 0x9cc
pause 1000
usetype 0xf52 \\\\\\\\\\\\\\\This one is a duplicate but for some reason


the first one doesn't work\\\\\\\\\\
waitingfortarget 15000
targettype 0x9cc
pause 1000
usetype 0xf52
waitingfortarget 15000
targettype 0x9cf
pause 1000
usetype 0xf52
waitingfortarget 15000
targettype 0x9ce
pause 1000
usetype 0xf52
waitingfortarget 15000
targettype 0x9cd
pause 1000
usetype 0xf52
waitingfortarget 15000
targettype 0x170d
pause 1000
msg '[organizeme' \\\\\\\\\\\\\\\Organizes items in your inventory\\\\\\\\
canceltarget \\\\\\Crucial to avoid target lock during world
saves\\\\\\\\\\


If you don't know what I mean by using a test macro then follow the below


steps:


1) Create a new macro named test
2) Click record
3) Double click your fishing pole
4) Click where you want to fish and if you can fish there
5) Copy just the targettile from the test macro and paste over line 3


[/size]That is the only customization you should have to do to this macro between
characters and locations.[/font]
Title: Re: UO Steam Macro Library
Post by: Evolution on March 04, 2016, 03:50:36 PM
Ultima Online - UO Bandself - UO Steam Script Macro

Code: [Select]
smart bandage self

I still keep a standard bandage self hotkey but here is one that I put
together. I mainly did this to avoid accidentally interrupting a heal,
starting it all over. I also add it to the front end of other macros on my
healers to make sure I don't skip a heal.

if not timerexists 'Bandage Timer'

createtimer 'Bandage Timer'

settimer 'Bandage Timer' 10250

endif

//poisoned

if poisoned 'self' and timer 'Bandage Timer' >= 10250

bandageself

waitfortarget 1500

target! 'self'

settimer 'Bandage Timer' 0

endif

if hits < maxhits and timer 'Bandage Timer' >= 10250

bandageself

waitfortarget 1500

target! 'self'

settimer 'Bandage Timer' 0

endif
Title: Re: UO Steam Macro Library
Post by: Evolution on March 04, 2016, 03:51:00 PM

Auto Heal Pets

Code: [Select]
if not findalias 'pet'
promptalias 'pet'
endif
if not inrange 'pet' 1
headmsg 'Get closer.'
unsetalias 'pet'
stop
endif
if diffhits 'pet' <= 0
headmsg 'Pet full health.'
unsetalias 'pet'
stop
endif
if @findtype 0xe21
@useobject 'found'
else
headmsg 'out of bandages'
stop
endif
clearjournal
waitfortarget 1000
target! 'pet'
if injournal 'not damaged' 'system'
headmsg 'not hurt'
unsetalias 'pet'
stop
endif
clearjournal
while not @injournal 'you finish applying' 'system'
//headmsg 'pausing'
pause 50
endwhile
replay
Title: Re: UO Steam Macro Library - Attack Macros
Post by: Evolution on March 12, 2016, 04:28:46 PM

First macro is simple attacker macro:
 
getenemy 'murderer' 'enemy' 'criminal' 'gray' 'closest'
attack 'enemy'
pause 1250


second is attacker with secondary ability:


setability 'secondary' 'on'
getenemy 'murderer' 'enemy' 'criminal' 'gray' 'closest'
attack 'enemy'
 pause 1250


third is an attacker with a grab at end to loot all corpses:


getenemy 'murderer' 'enemy' 'criminal' 'gray' 'closest'
attack 'enemy'
pause 1250
 msg '[grab'
Title: Re: UO Steam Macro Library - Vet Macro
Post by: Evolution on March 13, 2016, 04:03:45 PM

Heals 2 pets. Heals Lowest pet as long as it is within 1 tile.

Code: [Select]
//Heals 2 pets.
//Included weight check on self
@cleartargetqueue
@clearjournal
if dead 'self'
  stop
endif
//Setup
if not findalias 'pet1'
  headmsg 'Select first pet'
  promptalias 'pet1'
endif
if not findalias 'pet2'
  headmsg 'Select second pet'
  promptalias 'pet2'
endif
//Feed pets
if not timerexists 'feed'
  createtimer 'feed'
endif
if timer 'feed' > 600000
  if @inrange 'pet1' 1 or @inrange 'pet2' 1
    headmsg 'Feeding Pets!!!'
    pause 600
    feed 'pet1' '0x9f1' 'any' '1'
    pause 700
    feed 'pet2' '0x9f1' 'any' '1'
    settimer 'feed' 0
  endif
endif
//Heal them to full
while hits 'pet1' == maxhits 'pet1' and hits 'pet2' == maxhits 'pet2'
  pause 50
endwhile
if diffhits 'pet1' > diffhits 'pet2'
  if inrange 'pet1' 1
    bandage
    autotargetobject 'pet1'
    pause 6100
  endif
else
  if inrange 'pet2' 1
    bandage
    autotargetobject 'pet2'
    pause 6100
  endif
endif
if not @injournal 'finish' 'system'
  pause 1100
  replay
else if @injournal 'finish' 'system'
  @clearjournal
  replay
elseif @injournal 'too far away' 'system'
  @clearjournal
  replay
elseif @injournal 'stay close enough' 'system'
  @clearjournal
  replay
endif
if mana > 25
  while weight >= maxweight
    cast 'bless'
    autotargetself!
    pause 1500
  endwhile
endif

Title: Re: UO Steam Macro Library
Post by: Smilingdeath on March 17, 2016, 10:21:21 PM
Here is a site that I use for some UOSteam macros, sometimes they need a little tweaking for this server though.


http://greeduo.wix.com/uomacro#!macros-for-uosteam/c1kh5


They also have razor and autohotkey as well.
Title: Re: UO Steam Macro Library
Post by: Fysen on April 12, 2016, 05:47:06 AM
I'm really picky about my targeting system, so I made this alternate tab-target style macro. This takes care of the 1] Targeting closest enemy 2] Enabling War Mode 3] Auto-attacking closest enemy 4] Disabling War Mode

Enjoy! =D

Code: [Select]
@getenemy 'murderer' 'Enemy' 'criminal' 'gray' 'closest'
if @findobject 'enemy'
  // Set the next line to the distance you want to be at for the macro to insist on turning on war mode.
  if distance 'enemy' <= 8
    warmode 'on'
  endif
  // Set the next line to the distance you want to be at for the macro to insist you needn't be in war mode any longer.
  if distance 'enemy' > 12
    warmode 'off'
  endif
  autotargetobject! 'enemy'
  attack! 'enemy'
endif
if not @findobject 'enemy'
  warmode 'off'
endif
@clearusequeue
@cancelautotarget
Title: Re: UO Steam Macro Library
Post by: Evolution on November 06, 2016, 04:02:14 PM

Train Carpentry - UOS Macro

I decided to post this handy script i wrote, it trains carpentry from 30 to 100 fully automated.
All you need is a bag with boards and ingots, at least 50 tinkering, and at least 1 tinker tool in you backpack.

At some point the macro starts crafting "ballot box", which come deeded.
Be sure you don't keep any valuable deeds (PS,SoT,Repair Deeds, Commodity) in your backpack as the macro will trash them.

Code: [Select]
//setting aliases
if not @findalias 'init1'
  sysmsg 'Target a restock container' 232
  promptalias 'fletch_restock' 0x42d175f5 
  sysmsg 'Target the trash barrel' 232
  @setalias 'init1' 'self'
  promptalias 'trash1' 0x4249518f
endif
if not listexists 'carpenstuff'
  createlist 'carpenstuff'
  pushlist 'carpenstuff' 0x9aa
  pushlist 'carpenstuff' 0xb4f
  pushlist 'carpenstuff' 0x27aa
  pushlist 'carpenstuff' 0x14f0
  pushlist 'carpenstuff' 0x27a8
  pushlist 'carpenstuff' 0x13f8
endif
//Tinker skill check
if skill 'Tinkering' < 45
  sysmsg 'Tinkering skill is too low, train it first' 232
  stop
endif
//check backpack for boards
if counttype 0x1bd7 0 'backpack' < 40
  movetype 0x1bd7 'fletch_restock' 'backpack'[(0 0 0)] 0 245
  pause 650
endif
// check for ingots
if counttype 0x1bf2 0 'backpack' < 10
  movetype 0x1bf2 'fletch_restock' 'backpack'[(0 0 0)] 0 45
  pause 650
endif
//craft tinker kits
//=================
while @counttype 0x1eb8 0 'backpack' < 3
  usetype! 0x1eb8
  waitforgump 0x38920abd 2000
  @replygump 0x38920abd 8
  waitforgump 0x38920abd 2000
  @replygump 0x38920abd 23
  waitforgump 0x38920abd 2000
endwhile
//check for carpenter saws
while @counttype 0x1034 0 'backpack' < 3
  usetype 0x1eb8
  waitforgump 0x38920abd 2000
  @replygump 0x38920abd 8
  waitforgump 0x38920abd 2000
  replygump 0x38920abd 51
  waitforgump 0x38920abd 15000
endwhile
// Crafting carpen stuff
If skill 'Carpentry' > 79 and skill 'Carpentry' < 100
   usetype 0x1034
   waitforgump 0x38920abd 1500
   replygump 0x38920abd 22
   waitforgump 0x38920abd 1500
   replygump 0x38920abd 16
elseif skill 'Carpentry' > 72 and skill 'Carpentry' < 79
   usetype 0x1034
   waitforgump 0x38920abd 1500
   replygump 0x38920abd 22
   waitforgump 0x38920abd 1500
   replygump 0x38920abd 23
elseif skill 'Carpentry' > 65 and skill 'Carpentry' < 72
   usetype 0x1034
   waitforgump 0x38920abd 1500
   replygump 0x38920abd 22
   waitforgump 0x38920abd 1500
   replygump 0x38920abd 30
elseif skill 'Carpentry'> 48 and skill 'Carpentry' < 65
   usetype 0x1034
   waitforgump 0x38920abd 1500
   replygump 0x38920abd 43
   waitforgump 0x38920abd 1500
   replygump 0x38920abd 128
elseif skill 'Carpentry' < 48 and skill 'Carpentry' > 45
   usetype 0x1034
   waitforgump 0x38920abd 1500
   replygump 0x38920abd 8
    waitforgump 0x38920abd 1500
    replygump 0x38920abd 30
elseif skill 'Carpentry' < 45
    usetype 0x1034
   replygump 0x38920abd 15
   waitforgump 0x38920abd 1500
   replygump 0x38920abd 2
   waitforgump 0x38920abd 1500
else
   usetype 0x1034
   waitforgump 0x38920abd 1500
   replygump 0x38920abd 21
endif
//Handling trash
for 0 to 'carpenstuff'
while @findtype carpenstuff[] 'any' 'backpack'
  moveitem 'found' 'trash1'
  pause 650
endwhile
endfor
if skill 'Carpentry' == 100
 sysmsg 'Congrats!!' 232
 stop
endif
Title: Re: UO Steam Macro Library
Post by: Evolution on November 06, 2016, 04:04:49 PM

Train Bowcraft - UOS Macro

This UOS script trains bowcraft from 30 to 100 fully automated.

All you need is a bag with boards and ingots, at least 50 tinkering, and at least 1 tinker tool in you backpack.

Be sure you don't keep any valuable bows/xbows in your backpack as the macro will trash them.

Code: [Select]
//setting aliases
if not @findalias 'init1'
  sysmsg 'Target a restock container' 232
  promptalias 'fletch_restock' 0x42d175f5 
  sysmsg 'Target the trash barrel' 232
  @setalias 'init1' 'self'
  promptalias 'trash1' 0x4249518f
endif
if not listexists 'craftbows'
  createlist 'craftbows'
  pushlist 'craftbows' 0x13b2
  pushlist 'craftbows' 0xf50
  pushlist 'craftbows' 0x26c2
  pushlist 'craftbows' 0x13fd
  pushlist 'craftbows' 0x26c3
endif
//Tinker skill check
if skill 'Tinkering' < 45
  sysmsg 'Tinkering skill is too low, train it first' 232
  stop
endif
// check for ingots
if counttype 0x1bf2 0 'backpack' < 10
  movetype 0x1bf2 'fletch_restock' 'backpack'[(0 0 0)] 0 45
  pause 650
endif
//craft tinker kits
//=================
while @counttype 0x1eb8 0 'backpack' < 3
  usetype! 0x1eb8
  waitforgump 0x38920abd 2000
  @replygump 0x38920abd 8
  waitforgump 0x38920abd 2000
  @replygump 0x38920abd 23
  waitforgump 0x38920abd 2000
endwhile
//check for fletching kits
while @counttype 0x1022 0 'backpack' < 3
  usetype 0x1eb8
  waitforgump 0x38920abd 2000
  @replygump 0x38920abd 8
  waitforgump 0x38920abd 2000
  @replygump 0x38920abd 142
  waitforgump 0x38920abd 2000
endwhile
//check backpack for boards
if counttype 0x1bd7 0 'backpack' < 40
  movetype 0x1bd7 'fletch_restock' 'backpack'[(0 0 0)] 0 245
  pause 650
endif
// Crafting bows
If skill 'Bowcraft' > 90
usetype 0x1022
waitforgump 0x38920abd 1500
replygump 0x38920abd 15
waitforgump 0x38920abd 1500
replygump 0x38920abd 30
waitforgump 0x38920abd 1500
elseif skill 'Bowcraft' > 80 and skill 'Bowcraft' < 90
usetype 0x1022
waitforgump 0x38920abd 1500
replygump 0x38920abd 15
waitforgump 0x38920abd 1500
replygump 0x38920abd 16
elseif skill 'Bowcraft' > 70 and skill 'Bowcraft' < 80
usetype 0x1022
waitforgump 0x38920abd 1500
replygump 0x38920abd 15
waitforgump 0x38920abd 1500
replygump 0x38920abd 23
elseif skill 'Bowcraft'> 60 and skill 'Bowcraft' < 70
usetype 0x1022
waitforgump 0x38920abd 1500
replygump 0x38920abd 15
waitforgump 0x38920abd 1500
replygump 0x38920abd 9
elseif skill 'Bowcraft' < 60
usetype 0x1022
waitforgump 0x38920abd 1500
replygump 0x38920abd 15
waitforgump 0x38920abd 1500
replygump 0x38920abd 2
else
usetype 0x1022
waitforgump 0x38920abd 1500
replygump 0x38920abd 21
endif
//Handling trash
for 0 to 'craftbows'
while @findtype craftbows[] 'any' 'backpack'
  moveitem 'found' 'trash1'
  pause 650
endwhile
endfor
if skill 'Bowcraft' = 100
 sysmsg 'Congrats!!' 232
 stop
endif
Title: Re: UO Steam Macro Library
Post by: Evolution on November 06, 2016, 04:08:09 PM

Discord - UOS Macro

This is a macro that I crafted, basically it asks for target to discord, it will follow until that target has been discorded then ask for new target:

Code: [Select]
if injournal 'That creature is already in discord'
  clearjournal
  unsetalias 'todiscord'
else
  if not findalias 'todiscord'
    sysmsg 'Target an todiscord'
    promptalias 'todiscord'
  endif
  useskill 'Discordance'
  waitfortarget 10000
  target!  'todiscord'
  while not inrange 'todiscord' 2
    if @x 'todiscord' > x 'self' and @y 'todiscord' > y 'self'
      walk 'Southeast'
    elseif @x 'todiscord' < x 'self' and @y 'todiscord' > y 'self'
      walk 'Southwest'
    elseif @x 'todiscord' > x 'self' and @y 'todiscord' < y 'self'
      walk 'Northeast'
    elseif @x 'todiscord' < x 'self' and @y 'todiscord' < y 'self'
      walk 'Northwest'
    elseif @x 'todiscord' > x 'self' and @y 'todiscord' == y 'self'
      walk 'East'
    elseif @x 'todiscord' < x 'self' and @y 'todiscord' == y 'self'
      walk 'West'
    elseif @x 'todiscord' == x 'self' and @y 'todiscord' > y 'self'
      walk 'South'
    elseif @x 'todiscord' == x 'self' and @y 'todiscord' < y 'self'
      walk 'North'
    endif
  endwhile
  pause 500
endif
Title: Re: UO Steam Macro Library
Post by: Evolution on November 06, 2016, 04:09:26 PM

UO Steam Lumberjack Macro
Code: [Select]
//Magery Version
//1. need 2 full runebooks marked 1 tile south and same elevation of the choppable tree
//2. Organizer agent 'Boards' needs to be configured from your backpack to dropoff container with boards and 5 specials on it
//3. pauses after recalls are set to 2000 for 0fc. Change to 1750 for 1fc and 1500 for 2fc
if not @findobject 'TreeBookOne'
promptalias 'TreeBookOne'
endif
if not @findobject 'TreeBookTwo'
promptalias 'TreeBookTwo'
endif
if not @findobject 'HomeLumber'
promptalias 'HomeLumber'
endif
if not listexists 'TreeBook'
createlist 'TreeBook'
pushlist 'TreeBook' 'TreeBookOne'
pushlist 'TreeBook' 'TreeBookTwo'
endif
if not listexists 'Runes'
createlist 'Runes'
pushlist 'Runes' 5
pushlist 'Runes' 11
pushlist 'Runes' 17
pushlist 'Runes' 23
pushlist 'Runes' 29
pushlist 'Runes' 35
pushlist 'Runes' 41
pushlist 'Runes' 47
pushlist 'Runes' 53
pushlist 'Runes' 59
pushlist 'Runes' 65
pushlist 'Runes' 71
pushlist 'Runes' 77
pushlist 'Runes' 83
pushlist 'Runes' 89
pushlist 'Runes' 95
endif
For 0 to 'TreeBook'
For 0 to 'Runes'
pause 500
clearjournal
pause 500
useobject TreeBook[]
waitforgump 0x554b87f3 5000
replygump 0x554b87f3 Runes[]
//tells you which rune you are on, see runelist above
sysmsg 'Rune' 33
sysmsg Runes[] 33
pause 2000
//equips axe if it's not SC
if not @findobject 'lefthand'
//change type to your axe
if findtype 0xf47 0 'backpack'
setalias 'axe' 'found'
equipitem 'axe' 2
endif
endif
while not @injournal 'enough wood here'
pause 300
//chop logs to boards
if @findtype 0x1bdd 'any' 'backpack'
useobject 'LeftHand'
waitfortarget 1000
target! 'found'
else
//chop trees
useobject 'LeftHand'
waitfortarget 1000
targettileoffset 0 -1 0
endif
// Change this if your getting overweight, Subtract 25 from your max weight.
if weight > 480
//make remaining logs boards
while @findtype 0x1bdd 'any' 'backpack'
useobject 'LeftHand'
waitfortarget 1000
target! 'found'
pause 500
endwhile
//recall home
useobject 'HomeLumber'
waitforgump 0x554b87f3 5000
replygump 0x554b87f3 5
pause 2000
//unload
organizer 'Boards'
while organizing
pause 500
endwhile
//go back to where you were
useobject TreeBook[]
waitforgump 0x554b87f3 5000
replygump 0x554b87f3 Runes[]
pause 2000
//re-equip axe if needed
if not @findobject 'lefthand'
equipitem 'axe' 2
pause 1000
endif
endif
if @injournal 'use an axe'
break
endif
endwhile
endfor
endfor
Title: Re: UO Steam Macro Library
Post by: Evolution on November 06, 2016, 04:10:41 PM

UO Steam - Animal Taming Macro

Code: [Select]
// Author: Di
// Description: find, chase and tame nearby pets accordingly to skill level
// v2.1: pet release and tamed detection improvements
// v2.0: improved pets list and created unstuck pathfind heuristic
// Configure skill limit      ▼
if skill! 'animal taming' >= 100
  setskill 'animal taming' 'locked'
  stop
endif
@createlist 'pets'
@clearlist 'pets'
if skill 'animal taming' < 60
  // Eagle
  pushlist 'pets' 0x5
  // Goat
  pushlist 'pets' 0xd1
  // Pig
  pushlist 'pets' 0xcb
  pushlist 'pets' 0x122
  // Hind
  pushlist 'pets' 0xed
  // Timber wolf
  pushlist 'pets' 0xe1
  // Llama
  pushlist 'pets' 0xdc
  // Horse
  pushlist 'pets' 0xcc
  pushlist 'pets' 0xe2
  pushlist 'pets' 0xe4
  pushlist 'pets' 0xc8
  pushlist 'pets' 0x3e9f
  pushlist 'pets' 0x3ea0
  pushlist 'pets' 0x3ea1
  pushlist 'pets' 0x3ea2
  // Cow
  pushlist 'pets' 0xe7
  pushlist 'pets' 0xd8
  // Bear
  pushlist 'pets' 0xa7
  pushlist 'pets' 0xd3
  // Cougar
  pushlist 'pets' 0x3f
elseif skill 'animal taming' < 75
  // Grizzly Bear
  pushlist 'pets' 0xd4
  // Grey Wolf
  pushlist 'pets' 0x1b
  pushlist 'pets' 0x19
  // Snow Leopard
  pushlist 'pets' 0x41
  pushlist 'pets' 0x40
  // Walrus
  pushlist 'pets' 0xdd
  // Polar Bear
  pushlist 'pets' 0xd5
  // Great Hart
  pushlist 'pets' 0xea
elseif skill 'animal taming' < 95.1
  // Gaman
  pushlist 'pets' 0xf8
  // Bull
  pushlist 'pets' 0xe8
  pushlist 'pets' 0xe9
  // Great Hart
  pushlist 'pets' 0xea
  // White Wolf
  pushlist 'pets' 0x25
  pushlist 'pets' 0x22
  // Snow Leopard
  pushlist 'pets' 0x41
  pushlist 'pets' 0x40
else
  // Bull
  pushlist 'pets' 0xe8
  pushlist 'pets' 0xe9
  // Unicorn
  pushlist 'pets' 0x7a
  // Ki-rin
  pushlist 'pets' 0x84
endif
if not listexists 'errors'
  createlist 'errors'
  pushlist 'errors' 'too many owners'
  pushlist 'errors' 'only be tamed by'
  pushlist 'errors' 'no chance of taming'
  pushlist 'errors' 'looks tame already'
  //pushlist 'errors' 'clear path to the animal'
  pushlist 'errors' 'cannot be seen'
endif
@createlist 'unstuck'
if list 'unstuck' == 0
  pushlist 'unstuck' 'east'
  pushlist 'unstuck' 'west'
  pushlist 'unstuck' 'south'
  pushlist 'unstuck' 'north'
endif
// Search
if not @findobject 'pet'
  for 0 to 'pets'
    if @findtype 'pets[]' 'any' 'ground'
      @settimer 'stuck' 0
      @setalias 'pet' 'found'
      break
    endif
  endfor
else
  // Pathfind
  @settimer 'pathfind' 0
  while @findobject 'pet' and not @inrange 'pet' 2
    if dead
      break
    elseif @timer 'pathfind' >= 5000
      // Diverge
      if direction == 0
        @poplist 'unstuck' 'north'
      elseif direction == 2
        @poplist 'unstuck' 'east'
      elseif direction == 4
        @poplist 'unstuck' 'south'
      elseif direction == 6
        @poplist 'unstuck' 'west'
      endif
      // Unstuck
      if list 'unstuck' != 0
        for 5
          run 'unstuck[0]'
          pause 100
        endfor
        poplist 'unstuck' 'front'
      endif
      break
    elseif @x 'pet' > x 'self' and @y 'pet' > y 'self'
      run 'southeast'
    elseif @x 'pet' < x 'self' and @y 'pet' > y 'self'
      run 'southwest'
    elseif @x 'pet' > x 'self' and @y 'pet' < y 'self'
      run 'northeast'
    elseif @x 'pet' < x 'self' and @y 'pet' < y 'self'
      run 'northwest'
    elseif @x 'pet' > x 'self' and @y 'pet' == y 'self'
      run 'east'
    elseif @x 'pet' < x 'self' and @y 'pet' == y 'self'
      run 'west'
    elseif @x 'pet' == x 'self' and @y 'pet' > y 'self'
      run 'south'
    elseif @x 'pet' == x 'self' and @y 'pet' < y 'self'
      run 'north'
    endif
    pause 100
  endwhile
  if @inrange 'pet' 2
    // Tame
    clearjournal
    useskill 'animal taming'
    waitfortarget 1000
    target! 'pet'
    // Handle
    if @property '(tame)' 'pet'
      for 5
        if @gumpexists 0x909cc741 or not @findobject 'pet'
          break
        elseif dead or followers == 0
          break
        elseif @name 'pet' != 'trashpet'
          rename 'pet' 'trashpet'
        else
          msg 'trashpet release'
        endif
        pause 500
      endfor
      replygump 0x909cc741 2
      sysmsg 'Success: tamed and released!' 88
      ignoreobject 'pet'
      @unsetalias 'pet'
    else
      @settimer 'stuck' 0
      for 0 to 'errors'
        if @injournal 'errors[]'
          sysmsg 'Ignore: error message!' 25
          ignoreobject 'pet'
          @unsetalias 'pet'
          break
        endif
      endfor
    endif
  elseif @timer 'stuck' >= 20000
    sysmsg 'Ignore: stuck timeout!' 25
    ignoreobject 'pet'
    @unsetalias 'pet'
  endif
endif


Title: Re: UO Steam Macro Library
Post by: Evolution on November 06, 2016, 04:12:59 PM

Tailor BOD Filler - UOS Macro

Check the "Loop" option.

Configure:
- "Bulk Source": the BOD book full of BODs you wanna fill;
- "Bulk Destination": an empty BOD book you'll place filled BODs;
- "Restock" container with leather, cloth and sewing kits;
- "Trash BODs Destination": it can be an empty container the macro will place BODs it could not fill for a reason;
- "Trash Barrel": select your house's trash barrel;
- Have a scissors in your backpack.

Important:
- Your character must be nearby all selected/required containers.
- If you have configured something wrong you can just go to the Macros tab, click the "Active Objects" -> "Clear All" button and play the macro again.

Code: [Select]
// Author: Kraz
// Description: Tailoring BOD Filler
// v2.1: fixed issue where it could not craft footwear
// v2.0: (1) easier to update, read and edit craft info, (2) search, recycle and combine existing items before crafting, (3) faster crafting due to gump category swap improvements, (4) added resource handler
if not @findobject 'Bulk Source'
  promptalias 'Bulk Source'
endif
if not @findobject 'Bulk Destination'
  promptalias 'Bulk Destination'
endif
if not @findobject 'Restock'
  promptalias 'Restock'
endif
if not @findobject 'Trash BODs Destination'
  promptalias 'Trash BODs Destination'
endif
if not @findobject 'Trash Barrel'
  promptalias 'Trash Barrel'
endif
// Craft info placeholder
if not listexists 'Craft'
  @createlist 'Craft'
  // 0: Category, 1: Button, 2: Graphic, 3: Resource Button, 4: Resource Color
endif
// Search for a BOD to fill
if @findtype 0x2258 0x483 'backpack' and @property 'small' 'found'
  // Reset craft state
  @clearlist 'Craft'
  @unsetalias 'crafting'
  // Define and open new BOD
  @setalias 'bod' 'found'
  useobject! 'bod'
  waitforgump 0x5afbd742 15000
  // Combine items
  if not targetexists 'server'
    replygump 0x5afbd742 2
    waitforgump 0x5afbd742 15000
    waitfortarget 5000
  endif
  // Check for tools
  if @findtype 0xf9d 0 'backpack'
    pause 1500
    @setalias 'tool' 'found'
    useobject! 'tool'
    waitforgump 0x38920abd 15000
    // Craft
    while targetexists 'server'
      // Define BOD material type
      @setalias 'cloth' 'bod'
      if @ingump 0x5afbd742 'leather' or @ingump 0x5afbd742 'studded'
        @unsetalias 'cloth'
      elseif @ingump 0x5afbd742 'boots' and not @ingump 0x5afbd742 'fur boots'
        @unsetalias 'cloth'
      elseif @ingump 0x5afbd742 'shoes' or @ingump 0x5afbd742 'sandals'
        @unsetalias 'cloth'
      endif
      // Craft requirements
      if @findalias 'cloth'
        // Check for cut cloths
        if @counttype 0x1766 'any' 'backpack' < 50 and @counttype 0x1767 'any' 'backpack' < 50
          if @movetype 0x1766 'Restock' 'backpack' 0 0 0 'any' 100 or @movetype 0x1767 'Restock' 'backpack' 0 0 0 'any' 100
            pause 1500
          else
            sysmsg 'Out of cloths!' 25
            @canceltarget
            stop
          endif
        endif
        if not @findalias 'crafting'
          // Hats
          if @ingump 0x5afbd742 'skullcap'
            @pushlist 'Craft' 1
            @pushlist 'Craft' 2
            @pushlist 'Craft' 0x1544
          elseif @ingump 0x5afbd742 'bandana'
            @pushlist 'Craft' 1
            @pushlist 'Craft' 9
            @pushlist 'Craft' 0x1540
          elseif @ingump 0x5afbd742 'floppy hat'
            @pushlist 'Craft' 1
            @pushlist 'Craft' 16
            @pushlist 'Craft' 0x1713
          elseif @ingump 0x5afbd742 'cap'
            @pushlist 'Craft' 1
            @pushlist 'Craft' 23
            @pushlist 'Craft' 0x1715
          elseif @ingump 0x5afbd742 'wide-brim hat'
            @pushlist 'Craft' 1
            @pushlist 'Craft' 30
            @pushlist 'Craft' 0x1714
          elseif @ingump 0x5afbd742 'tall straw hat'
            @pushlist 'Craft' 1
            @pushlist 'Craft' 44
            @pushlist 'Craft' 0x1716
          elseif @ingump 0x5afbd742 'straw hat'
            @pushlist 'Craft' 1
            @pushlist 'Craft' 37
            @pushlist 'Craft' 0x1717
          elseif @ingump 0x5afbd742 "wizard's hat"
            @pushlist 'Craft' 1
            @pushlist 'Craft' 51
            @pushlist 'Craft' 0x1718
          elseif @ingump 0x5afbd742 'bonnet'
            @pushlist 'Craft' 1
            @pushlist 'Craft' 58
            @pushlist 'Craft' 0x1719
          elseif @ingump 0x5afbd742 'feathered hat'
            @pushlist 'Craft' 1
            @pushlist 'Craft' 65
            @pushlist 'Craft' 0x171a
          elseif @ingump 0x5afbd742 'tricorne hat'
            @pushlist 'Craft' 1
            @pushlist 'Craft' 72
            @pushlist 'Craft' 0x171b
          elseif @ingump 0x5afbd742 'jester hat'
            @pushlist 'Craft' 1
            @pushlist 'Craft' 79
            @pushlist 'Craft' 0x171c
          elseif @ingump 0x5afbd742 'flower garland'
            @pushlist 'Craft' 1
            @pushlist 'Craft' 86
            @pushlist 'Craft' 0x2306
            // Shirts
          elseif @ingump 0x5afbd742 'doublet'
            @pushlist 'Craft' 8
            @pushlist 'Craft' 2
            @pushlist 'Craft' 0x1f7b
          elseif @ingump 0x5afbd742 'fancy shirt'
            @pushlist 'Craft' 8
            @pushlist 'Craft' 16
            @pushlist 'Craft' 0x1efd
          elseif @ingump 0x5afbd742 'formal shirt'
            @pushlist 'Craft' 8
            @pushlist 'Craft' 86
            @pushlist 'Craft' 0x2310
          elseif @ingump 0x5afbd742 'shirt'
            @pushlist 'Craft' 8
            @pushlist 'Craft' 9
            @pushlist 'Craft' 0x1517
          elseif @ingump 0x5afbd742 'tunic'
            @pushlist 'Craft' 8
            @pushlist 'Craft' 23
            @pushlist 'Craft' 0x1fa1
          elseif @ingump 0x5afbd742 'surcoat'
            @pushlist 'Craft' 8
            @pushlist 'Craft' 30
            @pushlist 'Craft' 0x1ffd
          elseif @ingump 0x5afbd742 'plain dress'
            @pushlist 'Craft' 8
            @pushlist 'Craft' 37
            @pushlist 'Craft' 0x1f01
          elseif @ingump 0x5afbd742 'fancy dress'
            @pushlist 'Craft' 8
            @pushlist 'Craft' 44
            @pushlist 'Craft' 0x1f00
          elseif @ingump 0x5afbd742 'cloak'
            @pushlist 'Craft' 8
            @pushlist 'Craft' 51
            @pushlist 'Craft' 0x1515
          elseif @ingump 0x5afbd742 'robe'
            @pushlist 'Craft' 8
            @pushlist 'Craft' 58
            @pushlist 'Craft' 0x1f03
          elseif @ingump 0x5afbd742 'jester suit'
            @pushlist 'Craft' 8
            @pushlist 'Craft' 65
            @pushlist 'Craft' 0x1f9f
          elseif @ingump 0x5afbd742 'fur cape'
            @pushlist 'Craft' 8
            @pushlist 'Craft' 72
            @pushlist 'Craft' 0x230a
          elseif @ingump 0x5afbd742 'gilded dress'
            @pushlist 'Craft' 8
            @pushlist 'Craft' 79
            @pushlist 'Craft' 0x230e
            // Pants
          elseif @ingump 0x5afbd742 'short pants'
            @pushlist 'Craft' 15
            @pushlist 'Craft' 2
            @pushlist 'Craft' 0x152e
          elseif @ingump 0x5afbd742 'long pants'
            @pushlist 'Craft' 15
            @pushlist 'Craft' 9
            @pushlist 'Craft' 0x1539
          elseif @ingump 0x5afbd742 'kilt'
            @pushlist 'Craft' 15
            @pushlist 'Craft' 16
            @pushlist 'Craft' 0x1537
          elseif @ingump 0x5afbd742 'skirt'
            @pushlist 'Craft' 15
            @pushlist 'Craft' 23
            @pushlist 'Craft' 0x1516
            // Miscellaneous
          elseif @ingump 0x5afbd742 'body sash'
            @pushlist 'Craft' 22
            @pushlist 'Craft' 2
            @pushlist 'Craft' 0x1541
          elseif @ingump 0x5afbd742 'half apron'
            @pushlist 'Craft' 22
            @pushlist 'Craft' 9
            @pushlist 'Craft' 0x153b
          elseif @ingump 0x5afbd742 'full apron'
            @pushlist 'Craft' 22
            @pushlist 'Craft' 16
            @pushlist 'Craft' 0x153d
            // Footwear
          elseif @ingump 0x5afbd742 'fur boots'
            @pushlist 'Craft' 29
            @pushlist 'Craft' 9
            @pushlist 'Craft' 0x2307
          else
            break
          endif
        endif
      else
        if not @findalias 'crafting'
          // Leather
          if @ingump 0x5afbd742 'leather gorget'
            @pushlist 'Craft' 36
            @pushlist 'Craft' 23
            @pushlist 'Craft' 0x13c7
          elseif @ingump 0x5afbd742 'leather cap'
            @pushlist 'Craft' 36
            @pushlist 'Craft' 30
            @pushlist 'Craft' 0x1db9
          elseif @ingump 0x5afbd742 'leather gloves'
            @pushlist 'Craft' 36
            @pushlist 'Craft' 37
            @pushlist 'Craft' 0x13c6
          elseif @ingump 0x5afbd742 'leather sleeves'
            @pushlist 'Craft' 36
            @pushlist 'Craft' 44
            @pushlist 'Craft' 0x13cd
          elseif @ingump 0x5afbd742 'leather leggings'
            @pushlist 'Craft' 36
            @pushlist 'Craft' 51
            @pushlist 'Craft' 0x13cb
          elseif @ingump 0x5afbd742 'leather tunic'
            @pushlist 'Craft' 36
            @pushlist 'Craft' 58
            @pushlist 'Craft' 0x13cc
            // Studded
          elseif @ingump 0x5afbd742 'studded gorget'
            @pushlist 'Craft' 43
            @pushlist 'Craft' 2
            @pushlist 'Craft' 0x13d6
          elseif @ingump 0x5afbd742 'studded gloves'
            @pushlist 'Craft' 43
            @pushlist 'Craft' 9
            @pushlist 'Craft' 0x13d5
          elseif @ingump 0x5afbd742 'studded sleeves'
            @pushlist 'Craft' 43
            @pushlist 'Craft' 16
            @pushlist 'Craft' 0x13dc
          elseif @ingump 0x5afbd742 'studded leggings'
            @pushlist 'Craft' 43
            @pushlist 'Craft' 23
            @pushlist 'Craft' 0x13da
          elseif @ingump 0x5afbd742 'studded tunic'
            @pushlist 'Craft' 43
            @pushlist 'Craft' 30
            @pushlist 'Craft' 0x13db
            // Female Armor
          elseif @ingump 0x5afbd742 'leather shorts'
            @pushlist 'Craft' 50
            @pushlist 'Craft' 2
            @pushlist 'Craft' 0x1c00
          elseif @ingump 0x5afbd742 'leather skirt'
            @pushlist 'Craft' 50
            @pushlist 'Craft' 9
            @pushlist 'Craft' 0x1c08
          elseif @ingump 0x5afbd742 'leather bustier'
            @pushlist 'Craft' 50
            @pushlist 'Craft' 16
            @pushlist 'Craft' 0x1c0a
          elseif @ingump 0x5afbd742 'studded bustier'
            @pushlist 'Craft' 50
            @pushlist 'Craft' 23
            @pushlist 'Craft' 0x1c0c
          elseif @ingump 0x5afbd742 'female leather armor'
            @pushlist 'Craft' 50
            @pushlist 'Craft' 30
            @pushlist 'Craft' 0x1c06
          elseif @ingump 0x5afbd742 'studded armor'
            @pushlist 'Craft' 50
            @pushlist 'Craft' 37
            @pushlist 'Craft' 0x1c02
          elseif @ingump 0x5afbd742 'thigh boots'
            @pushlist 'Craft' 29
            @pushlist 'Craft' 51
            @pushlist 'Craft' 0x1711
          elseif @ingump 0x5afbd742 'shoes'
            @pushlist 'Craft' 29
            @pushlist 'Craft' 37
            @pushlist 'Craft' 0x170f
          elseif @ingump 0x5afbd742 'sandals'
            @pushlist 'Craft' 29
            @pushlist 'Craft' 30
            @pushlist 'Craft' 0x170d
          elseif @ingump 0x5afbd742 'boots'
            @pushlist 'Craft' 29
            @pushlist 'Craft' 44
            @pushlist 'Craft' 0x170b
          else
            break
          endif
          // Define resource
          if @ingump 0x5afbd742 'barbed'
            @pushlist 'Craft' 27
            @pushlist 'Craft' 2129
          elseif @ingump 0x5afbd742 'horned'
            @pushlist 'Craft' 20
            @pushlist 'Craft' 2117
          elseif @ingump 0x5afbd742 'spined'
            @pushlist 'Craft' 13
            @pushlist 'Craft' 2220
          else
            @pushlist 'Craft' 6
            @pushlist 'Craft' 0
          endif
        endif
        // Check for leathers
        if @counttype 0x1081 Craft[4] 'backpack' < 50
          while @movetype 0x1081 'backpack' 'Restock'
            pause 1500
          endwhile
          if @movetype 0x1081 'Restock' 'backpack' 0 0 0 Craft[4] 100
            pause 1500
          else
            sysmsg 'Out of leathers!' 25
            @canceltarget
            stop
          endif
        endif
      endif
      // Search for existing items
      while @findtype Craft[2] 'any' 'backpack'
        target! 'found'
        waitfortarget 5000
        if not targetexists 'server' and @injournal 'must be exceptional' 'system'
          // Recycle this item
          if usetype! 0xf9f
            waitfortarget 5000
            target! 'found'
            pause 1500
          endif
          // Unable to recycle, trash item
          if @findobject 'found'
            @moveitem! 'found' 'Trash Barrel'
            pause 1500
          endif
          replygump 0x5afbd742 2
          waitforgump 0x5afbd742 15000
          waitfortarget 5000
          clearjournal
        endif
      endwhile
      // Craft new items if necessary
      if targetexists 'server'
        // Check tool before craft
        if not @findobject 'tool'
          break
        endif
        // Swap resource and category only once per BOD
        if not @findobject 'crafting' 'any' 'backpack'
          @setalias 'crafting' 'bod'
          // Resource
          if list 'Craft' == 5
            replygump 0x38920abd 7
            waitforgump 0x38920abd 5000
            replygump 0x38920abd Craft[3]
            waitforgump 0x38920abd 5000
          endif
          // Category
          replygump 0x38920abd Craft[0]
          waitforgump 0x38920abd 5000
        endif
        replygump 0x38920abd Craft[1]
        waitforgump 0x38920abd 5000
        pause 250
      endif
    endwhile
    // BOD is complete, move to destination
    if not targetexists 'server'
      @moveitem 'bod' 'Bulk Destination'
      // Trash BOD or missing definitions
    elseif not @findalias 'crafting'
      @moveitem 'bod' 'Trash BODs Destination'
    endif
    // Out of tools
  elseif not @movetype 0xf9d 'Restock' 'backpack'
    sysmsg 'Out of sewing kits!' 25
    @canceltarget
    stop
  endif
  pause 1500
elseif not property 'Deeds In Book: 0' 'Bulk Source'
  useobject! 'Bulk Source'
  waitforgump 0x54f555df 15000
  replygump 0x54f555df 5
  pause 1500
else
  sysmsg 'Unable to find BODs to fill.' 64
  @canceltarget
  stop
endif
Title: Re: UO Steam Macro Library
Post by: Evolution on November 06, 2016, 04:14:20 PM

Blacksmith BOD Filler - UOS Macro

Check the "Loop" option.

Configure:
- "Bulk Source": the BOD book full of BODs you wanna fill;
- "Bulk Destination": an empty BOD book you'll place filled BODs;
- "Restock" container with ingots and tongs (or smith hammers);
- "Trash BODs Destination": it can be an empty container the macro will place BODs it could not fill for a reason;
- "Trash Barrel": select your house's trash barrel.

Important:
- Your character must be nearby all selected/required containers.
- If you have configured something wrong you can just go to the Macros tab, click the "Active Objects" -> "Clear All" button and play the macro again.

Code: [Select]
// Author: Kraz
// Description: Blacksmith BOD Filler
// v2.0: (1) easier to update, read and edit craft info, (2) search, recycle and combine existing items before crafting, (3) faster crafting due to gump category swap improvements, (4) added resource handler
if not @findobject 'Bulk Source'
  promptalias 'Bulk Source'
endif
if not @findobject 'Bulk Destination'
  promptalias 'Bulk Destination'
endif
if not @findobject 'Restock'
  promptalias 'Restock'
endif
if not @findobject 'Trash BODs Destination'
  promptalias 'Trash BODs Destination'
endif
if not @findobject 'Trash Barrel'
  promptalias 'Trash Barrel'
endif
// Craft info placeholder
if not listexists 'Craft'
  @createlist 'Craft'
  // 0: Category, 1: Button, 2: Graphic, 3: Resource Button, 4: Resource Color
endif
// Search for a BOD to fill
if @findtype 0x2258 0x44E 'backpack' and @property 'small' 'found'
  // Reset craft state
  @clearlist 'Craft'
  @unsetalias 'crafting'
  // Define and open new BOD
  @setalias 'bod' 'found'
  useobject! 'bod'
  waitforgump 0x5afbd742 15000
  // Combine items
  if not targetexists 'server'
    replygump 0x5afbd742 2
    waitforgump 0x5afbd742 15000
    waitfortarget 5000
  endif
  // Check for tools
  if @findtype 0xfbb 0 'backpack' or @findtype 0x13e3 0 'backpack'
    pause 1500
    @setalias 'tool' 'found'
    useobject! 'tool'
    waitforgump 0x38920abd 15000
    // Craft
    while targetexists 'server'
      if not @findalias 'crafting'
        // Ringmail
        if @ingump 0x5afbd742 'ringmail gloves'
          @pushlist 'Craft' 1
          @pushlist 'Craft' 2
          @pushlist 'Craft' 0x13eb
        elseif @ingump 0x5afbd742 'ringmail leggings'
          @pushlist 'Craft' 1
          @pushlist 'Craft' 9
          @pushlist 'Craft' 0x13f0
        elseif @ingump 0x5afbd742 'ringmail sleeves'
          @pushlist 'Craft' 1
          @pushlist 'Craft' 16
          @pushlist 'Craft' 0x13ee
        elseif @ingump 0x5afbd742 'ringmail tunic'
          @pushlist 'Craft' 1
          @pushlist 'Craft' 23
          @pushlist 'Craft' 0x13ec
          // Chainmail
        elseif @ingump 0x5afbd742 'chainmail coif'
          @pushlist 'Craft' 8
          @pushlist 'Craft' 2
          @pushlist 'Craft' 0x13bb
        elseif @ingump 0x5afbd742 'chainmail leggings'
          @pushlist 'Craft' 8
          @pushlist 'Craft' 9
          @pushlist 'Craft' 0x13be
        elseif @ingump 0x5afbd742 'chainmail tunic'
          @pushlist 'Craft' 8
          @pushlist 'Craft' 16
          @pushlist 'Craft' 0x13bf
          // Platemail
        elseif @ingump 0x5afbd742 'platemail arms'
          @pushlist 'Craft' 15
          @pushlist 'Craft' 2
          @pushlist 'Craft' 0x1410
        elseif @ingump 0x5afbd742 'platemail gloves'
          @pushlist 'Craft' 15
          @pushlist 'Craft' 9
          @pushlist 'Craft' 0x1414
        elseif @ingump 0x5afbd742 'platemail gorget'
          @pushlist 'Craft' 15
          @pushlist 'Craft' 16
          @pushlist 'Craft' 0x1413
        elseif @ingump 0x5afbd742 'platemail legs'
          @pushlist 'Craft' 15
          @pushlist 'Craft' 23
          @pushlist 'Craft' 0x1411
        elseif @ingump 0x5afbd742 'platemail tunic'
          @pushlist 'Craft' 15
          @pushlist 'Craft' 30
          @pushlist 'Craft' 0x1415
        elseif @ingump 0x5afbd742 'female plate'
          @pushlist 'Craft' 15
          @pushlist 'Craft' 37
          @pushlist 'Craft' 0x1c04
          // Helmets
        elseif @ingump 0x5afbd742 'bascinet'
          @pushlist 'Craft' 22
          @pushlist 'Craft' 2
          @pushlist 'Craft' 0x140c
        elseif @ingump 0x5afbd742 'close helmet'
          @pushlist 'Craft' 22
          @pushlist 'Craft' 9
          @pushlist 'Craft' 0x1408
        elseif @ingump 0x5afbd742 'helmet'
          @pushlist 'Craft' 22
          @pushlist 'Craft' 16
          @pushlist 'Craft' 0x140a
        elseif @ingump 0x5afbd742 'norse helm'
          @pushlist 'Craft' 22
          @pushlist 'Craft' 23
          @pushlist 'Craft' 0x140e
        elseif @ingump 0x5afbd742 'plate helm'
          @pushlist 'Craft' 22
          @pushlist 'Craft' 30
          @pushlist 'Craft' 0x1412
          // Shields
        elseif @ingump 0x5afbd742 'buckler'
          @pushlist 'Craft' 29
          @pushlist 'Craft' 2
          @pushlist 'Craft' 0x1b73
        elseif @ingump 0x5afbd742 'bronze shield'
          @pushlist 'Craft' 29
          @pushlist 'Craft' 9
          @pushlist 'Craft' 0x1b72
        elseif @ingump 0x5afbd742 'heater shield'
          @pushlist 'Craft' 29
          @pushlist 'Craft' 16
          @pushlist 'Craft' 0x1b76
        elseif @ingump 0x5afbd742 'metal shield'
          @pushlist 'Craft' 29
          @pushlist 'Craft' 23
          @pushlist 'Craft' 0x1b7b
        elseif @ingump 0x5afbd742 'metal kite shield'
          @pushlist 'Craft' 29
          @pushlist 'Craft' 30
          @pushlist 'Craft' 0x1b74
        elseif @ingump 0x5afbd742 'tear kite shield'
          @pushlist 'Craft' 29
          @pushlist 'Craft' 37
          @pushlist 'Craft' 0x1b79
          // Bladed
        elseif @ingump 0x5afbd742 'broadsword'
          @pushlist 'Craft' 36
          @pushlist 'Craft' 9
          @pushlist 'Craft' 0xf5e
        elseif @ingump 0x5afbd742 'cutlass'
          @pushlist 'Craft' 36
          @pushlist 'Craft' 23
          @pushlist 'Craft' 0x1441
        elseif @ingump 0x5afbd742 'dagger'
          @pushlist 'Craft' 36
          @pushlist 'Craft' 30
          @pushlist 'Craft' 0xf52
        elseif @ingump 0x5afbd742 'katana'
          @pushlist 'Craft' 36
          @pushlist 'Craft' 37
          @pushlist 'Craft' 0x13ff
        elseif @ingump 0x5afbd742 'kryss'
          @pushlist 'Craft' 36
          @pushlist 'Craft' 44
          @pushlist 'Craft' 0x1401
        elseif @ingump 0x5afbd742 'longsword'
          @pushlist 'Craft' 36
          @pushlist 'Craft' 51
          @pushlist 'Craft' 0xf61
        elseif @ingump 0x5afbd742 'scimitar'
          @pushlist 'Craft' 36
          @pushlist 'Craft' 58
          @pushlist 'Craft' 0x13b6
        elseif @ingump 0x5afbd742 'viking sword'
          @pushlist 'Craft' 36
          @pushlist 'Craft' 65
          @pushlist 'Craft' 0x13b9
          // Axes
        elseif @ingump 0x5afbd742 'large battle axe'
          @pushlist 'Craft' 43
          @pushlist 'Craft' 30
          @pushlist 'Craft' 0x13fb
        elseif @ingump 0x5afbd742 'double axe'
          @pushlist 'Craft' 43
          @pushlist 'Craft' 16
          @pushlist 'Craft' 0xf4b
        elseif @ingump 0x5afbd742 "executioner's axe"
          @pushlist 'Craft' 43
          @pushlist 'Craft' 23
          @pushlist 'Craft' 0xf45
        elseif @ingump 0x5afbd742 'battle axe'
          @pushlist 'Craft' 43
          @pushlist 'Craft' 9
          @pushlist 'Craft' 0xf47
        elseif @ingump 0x5afbd742 'two handed axe'
          @pushlist 'Craft' 43
          @pushlist 'Craft' 37
          @pushlist 'Craft' 0x1443
        elseif @ingump 0x5afbd742 'war axe'
          @pushlist 'Craft' 43
          @pushlist 'Craft' 44
          @pushlist 'Craft' 0x13b0
        elseif @ingump 0x5afbd742 'axe'
          @pushlist 'Craft' 43
          @pushlist 'Craft' 2
          @pushlist 'Craft' 0xf49
          // Polearms
        elseif @ingump 0x5afbd742 'bardiche'
          @pushlist 'Craft' 50
          @pushlist 'Craft' 2
          @pushlist 'Craft' 0xf4d
        elseif @ingump 0x5afbd742 'halberd'
          @pushlist 'Craft' 50
          @pushlist 'Craft' 23
          @pushlist 'Craft' 0x143e
        elseif @ingump 0x5afbd742 'short spear'
          @pushlist 'Craft' 50
          @pushlist 'Craft' 44
          @pushlist 'Craft' 0x1403
        elseif @ingump 0x5afbd742 'spear'
          @pushlist 'Craft' 50
          @pushlist 'Craft' 58
          @pushlist 'Craft' 0xf62
        elseif @ingump 0x5afbd742 'war fork'
          @pushlist 'Craft' 50
          @pushlist 'Craft' 65
          @pushlist 'Craft' 0x1405
          // Bashing
        elseif @ingump 0x5afbd742 'war mace'
          @pushlist 'Craft' 57
          @pushlist 'Craft' 30
          @pushlist 'Craft' 0x1407
        elseif @ingump 0x5afbd742 'hammer pick'
          @pushlist 'Craft' 57
          @pushlist 'Craft' 2
          @pushlist 'Craft' 0x143d
        elseif @ingump 0x5afbd742 'mace'
          @pushlist 'Craft' 57
          @pushlist 'Craft' 9
          @pushlist 'Craft' 0xf5c
        elseif @ingump 0x5afbd742 'maul'
          @pushlist 'Craft' 57
          @pushlist 'Craft' 16
          @pushlist 'Craft' 0x143b
        elseif @ingump 0x5afbd742 'war hammer'
          @pushlist 'Craft' 57
          @pushlist 'Craft' 37
          @pushlist 'Craft' 0x1439
        else
          break
        endif
        // Define resource
        if @ingump 0x5afbd742 'valorite'
          @pushlist 'Craft' 62
          @pushlist 'Craft' 2219
        elseif @ingump 0x5afbd742 'verite'
          @pushlist 'Craft' 55
          @pushlist 'Craft' 2207
        elseif @ingump 0x5afbd742 'agapite'
          @pushlist 'Craft' 48
          @pushlist 'Craft' 2425
        elseif @ingump 0x5afbd742 'gold'
          @pushlist 'Craft' 41
          @pushlist 'Craft' 2213
        elseif @ingump 0x5afbd742 'bronze ingots'
          @pushlist 'Craft' 34
          @pushlist 'Craft' 2418
        elseif @ingump 0x5afbd742 'shadow iron'
          @pushlist 'Craft' 20
          @pushlist 'Craft' 2406
        elseif @ingump 0x5afbd742 'dull copper'
          @pushlist 'Craft' 13
          @pushlist 'Craft' 2419
        elseif @ingump 0x5afbd742 'copper'
          @pushlist 'Craft' 27
          @pushlist 'Craft' 2413
        else
          @pushlist 'Craft' 6
          @pushlist 'Craft' 0
        endif
      endif
      // Check for ingots
      if @counttype 0x1bf2 Craft[4] 'backpack' < 50
        while @movetype 0x1bf2 'backpack' 'Restock'
          pause 1500
        endwhile
        if @movetype 0x1bf2 'Restock' 'backpack' 0 0 0 Craft[4] 100
          pause 1500
        else
          sysmsg 'Out of ingots!' 25
          @canceltarget
          stop
        endif
      endif
      // Search for existing items
      while @findtype Craft[2] Craft[4] 'backpack'
        target! 'found'
        waitfortarget 5000
        if not targetexists 'server' and @injournal 'must be exceptional' 'system'
          // Recycle this item
          replygump 0x38920abd 14
          waitfortarget 5000
          target! 'found'
          pause 1500
          // Unable to recycle, trash item
          if @findobject 'found'
            @moveitem! 'found' 'Trash Barrel'
            pause 1500
          endif
          replygump 0x5afbd742 2
          waitforgump 0x5afbd742 15000
          waitfortarget 5000
          clearjournal
        endif
      endwhile
      // Craft new items if necessary
      if targetexists 'server'
        // Check tool before craft
        if not @findobject 'tool'
          break
        endif
        // Swap resource and category only once per BOD
        if not @findobject 'crafting' 'any' 'backpack'
          @setalias 'crafting' 'bod'
          // Resource
          if list 'Craft' == 5
            replygump 0x38920abd 7
            waitforgump 0x38920abd 5000
            replygump 0x38920abd Craft[3]
            waitforgump 0x38920abd 5000
          endif
          // Category
          replygump 0x38920abd Craft[0]
          waitforgump 0x38920abd 5000
        endif
        replygump 0x38920abd Craft[1]
        waitforgump 0x38920abd 5000
        pause 250
      endif
    endwhile
    // BOD is complete, move to destination
    if not targetexists 'server'
      @moveitem 'bod' 'Bulk Destination'
      // Trash BOD or missing definitions
    elseif not @findalias 'crafting'
      @moveitem 'bod' 'Trash BODs Destination'
    endif
    // Out of tools
  elseif not @movetype 0xfbb 'Restock' 'backpack' and not @movetype 0x13e3 'Restock' 'backpack'
    sysmsg 'Out of tongs and smith hammers!' 25
    @canceltarget
    stop
  endif
  pause 1500
elseif not property 'Deeds In Book: 0' 'Bulk Source'
  useobject! 'Bulk Source'
  waitforgump 0x54f555df 15000
  replygump 0x54f555df 5
  pause 1500
else
  sysmsg 'Unable to find BODs to fill.' 64
  @canceltarget
  stop
endif
Title: Re: UO Steam Macro Library
Post by: Evolution on November 06, 2016, 04:15:37 PM

Simple Cross Heal - UOS Macro

Check the "Do not auto interrupt" option and assign a hotkey.

Code: [Select]
// Author: Di
// Description: seek low hp friend, miniheal, disrupt paralyze and invisibility if mortaled
// Seek
@unsetalias 'target'
for 15
  @getfriend 'humanoid' 'transformation' 'friend'
  if not @findobject 'friend'
    break
  elseif @inrange 'friend' 10 and not dead 'friend'
    if criminal 'friend' or murderer 'friend'
      if @inregion 'guards' 'friend'
        continue
      endif
    endif
    if not @findobject 'target' or hits 'target' > hits 'friend'
      @setalias 'target' 'friend'
    endif
  endif
endfor
@setalias 'friend' 'target'
// Help
if @findobject 'friend' and not dead 'friend'
  if targetexists 'beneficial'
    target! 'friend'
  endif
  if paralyzed 'friend'
    cast 'clumsy' 'friend'
  elseif yellowhits 'friend'
    cast 'invisibility' 'friend'
  else
    miniheal 'friend'
  endif
  while waitingfortarget
    if criminal 'friend' or murderer 'friend'
      if @inregion 'guards' 'friend'
        sysmsg 'Target cancelled, guards zone!' 55
        cancelautotarget
        break
      endif
    endif
  endwhile
else
  headmsg '* No friend *' 25
endif
Title: Re: UO Steam Macro Library
Post by: Evolution on April 06, 2018, 04:58:51 PM

UO Steam Script Library
https://github.com/her/uosteam/tree/master/skill
Title: Re: UO Steam Macro Library
Post by: Luckbox on April 25, 2018, 01:59:53 PM
This is my macro for dyeing items much quicker, without the need to retarget item after using each tub.
Launch macro, target item you want to dye once, then just keep doubleclicking tubs. This way you can also dye your ethy without need to remount each time.

Code: [Select]
headmsg 'Choose item' promptalias 'item'
headmsg 'Keep clicking tubs'
while not dead
  while not targetexists 'any'
    pause 10
  endwhile
  target! 'item'
endwhile
Title: Re: UO Steam Macro Library
Post by: Evolution on August 13, 2018, 05:28:50 PM

Top UO Steam Macros on UO Evolution Shard
www.uoevolution.com


//Angelic Faith Buff
//Make sure you are in Human Form
cast "Vampiric Embrace"
pause 3500
msg '[cs angelicfaith'
pause 10000
cast "Vampiric Embrace"


//MiniHeal Self
if diffhits > 1
  miniheal
endif


//Bless Self
cast "Bless"
waitfortarget 15000
target! 'self'


//Eat Enchanted Apple
usetype '0x2fd8'


//Gift of Renewal Self
cast 'gift of renewal'
waitfortarget 15000
target! 'self'


----------
Offensive- Make sure you set your target as enemy for these
----------
//Set Enemy
//Use this and Target who you want to kill
setalias 'enemy'
 
//Curse Enemy
 if inrange 'enemy' 10
  cast 'Curse' 'enemy'
  while waitingfortarget
    clearjournal
  endwhile
 
//Strangle Enemy
if inrange 'enemy' 10
  cast 'Strangle' 'enemy'
  while waitingfortarget
    clearjournal
  endwhile


//Evil Omen Enemy
if inrange 'enemy' 10
  cast 'Evil Omen' 'enemy'
  while waitingfortarget
  endwhile
 
//Magic Arrow Enemy
if inrange 'enemy' 10
  cast 'Magic Arrow' 'enemy'
  while waitingfortarget
  endwhile
 
//Poison Enemy
if inrange 'enemy' 10
  cast 'Poison ' 'enemy'
  while waitingfortarget
  endwhile
 
//Cast Harm Enemy (must be 1 tile away)
if inrange 'enemy' 1
  cast 'harm' 'enemy'
  while waitingfortarget
  endwhile
endif


//Fireball Enemy
if inrange 'enemy' 10
  cast 'fireball' 'enemy'
  while waitingfortarget
  endwhile
endif
 
//Lightning Enemy
if inrange 'enemy' 10
  cast 'lightning' 'enemy'
  while waitingfortarget
  endwhile
endif


//Explosion Enemy
if inrange 'enemy' 10
  cast 'Explosion' 'enemy'
  while waitingfortarget
  endwhile
endif
 
//Energy Bolt Enemy
if inrange 'enemy' 10
  cast 'Energy Bolt' 'enemy'
  while waitingfortarget
  endwhile
endif


//Flamestrike Enemy
if inrange 'enemy' 10
  cast 'Flame Strike' 'enemy'
  while waitingfortarget
  endwhile
endif
 
//Explosion Flamestrike Enemy
if inrange 'enemy' 10
  cast 'Explosion' 'enemy'
  while waitingfortarget
  endwhile
endif
pause 500
if inrange 'enemy' 10
  cast 'Flame strike' 'enemy'
  while waitingfortarget
  endwhile
endif


//Toggle Triple Slash
//Make sure gump is up
replygump 0x7ec42f38 1000


//Toggle Shield Spike
//Make sure gump is up
replygump 0x4239a64f 1006
Title: Re: UO Steam Macro Library
Post by: Evolution on May 07, 2019, 02:04:28 AM
//Animal Lore trainer by Radament
//v1.0
if not findalias 'animal' 
msg 'Choose animal to begin training' 
prompt alias 'animal'
endif
useskill 'Animal Lore'
waitfortarget 15000
target! 'animal'