Lucid Nagual
Knight
Lucid Nagual's << OWLTR & FS Taming Plugin | Carpenter & Fletcher BODs >>
!Attention:
MUST have the following systems:
Evil Furniture:
http://www.runuo.com/forums/showthread.php?t=59298&highlight=evil+furniture
ML Items:
http://www.runuo.com/forums/showthread.php?t=58408&highlight=elven+furniture
OWLTR:
http://www.runuo.com/forums/showthread.php?t=52981&highlight=owltr
FS Taming:
http://www.runuo.com/forums/showthread.php?t=47710
and Advanced Archery:
http://www.runuo.com/forums/showthread.php?t=60516
Recommended Systems:
All Crafts (Crystal Crafting):
http://www.runuo.com/forums/showthread.php?t=64229
Client Patch Warning:
http://www.runuo.com/forums/showthread.php?t=64920
!Bonus:
Lucid Nagual's << Carpenter's House Building >>.
!Special Thanks:
-To Daat99 for his help and patience (with my billion questions).
-To Joshw for some info and Data info I found in the support section.
-To Turmoil for reporting errors & helping fix many script issues. This project got beyond it's BETA Phase with your help, thanks.
-To Stryder for SmallBOD.cs fix.
-To SirSly for pushing me to finish this project. I can't wait to see the other MODs released
-To TMS and Alien for support with my many questions, verbal support and including me in the Shard Pack.
-To EVERYONE who has reported bugs/issues. And to those who send me email and pm's with kind words and support. I greatly appreciate it.
!X-tra Special Thanks:
To Turmoil and HotBird for their recent reports and fixes.
!Known Bugs:
None.
Replace ALL files with the ones I have provided you with. It is up to you to hunt down those files. Was impossible to make this drag and drop. Unzip Carpenter and Fletcher folders and place them in: RunUO Dirsctory/Data/Bulk Orders folder. The PlayerMobile.cs will have to be edited for this system.
PlayerMobile.cs Edit:
//Start PlayerMobile Edit
Under:
Add:
Under:
Add:
Under:
Add:
Under:
Add:
Under:
Add:
!Note:
If you don't understand how to serialize/deserialize take a look at the example for Advanced Archery. It is found here. And make sure the serialization and deserialization edits are in the same order. If you look at my example down below you will see that both are added in the same order.
!Serialize:
Under:
Add:
!Deserialize:
//End PlayerMobile Edit
!List of Commands:
[OWLTRBOD - Opens gump that displays what BODs are available. If available, then can collect the selected BOD/BODs.
Lucid Nagual's << CFTB v[3]0.2 (b)>>
Carpenter, Fletcher and Tinker BODs
Carpenter, Fletcher and Tinker BODs
!Attention:
MUST have the following systems:
Evil Furniture:
http://www.runuo.com/forums/showthread.php?t=59298&highlight=evil+furniture
ML Items:
http://www.runuo.com/forums/showthread.php?t=58408&highlight=elven+furniture
OWLTR:
http://www.runuo.com/forums/showthread.php?t=52981&highlight=owltr
FS Taming:
http://www.runuo.com/forums/showthread.php?t=47710
and Advanced Archery:
http://www.runuo.com/forums/showthread.php?t=60516
Recommended Systems:
All Crafts (Crystal Crafting):
http://www.runuo.com/forums/showthread.php?t=64229
Client Patch Warning:
http://www.runuo.com/forums/showthread.php?t=64920
!Bonus:
Lucid Nagual's << Carpenter's House Building >>.
!Special Thanks:
-To Daat99 for his help and patience (with my billion questions).
-To Joshw for some info and Data info I found in the support section.
-To Turmoil for reporting errors & helping fix many script issues. This project got beyond it's BETA Phase with your help, thanks.
-To Stryder for SmallBOD.cs fix.
-To SirSly for pushing me to finish this project. I can't wait to see the other MODs released
-To TMS and Alien for support with my many questions, verbal support and including me in the Shard Pack.
-To EVERYONE who has reported bugs/issues. And to those who send me email and pm's with kind words and support. I greatly appreciate it.
!X-tra Special Thanks:
To Turmoil and HotBird for their recent reports and fixes.
!Known Bugs:
None.
Replace ALL files with the ones I have provided you with. It is up to you to hunt down those files. Was impossible to make this drag and drop. Unzip Carpenter and Fletcher folders and place them in: RunUO Dirsctory/Data/Bulk Orders folder. The PlayerMobile.cs will have to be edited for this system.
PlayerMobile.cs Edit:
//Start PlayerMobile Edit
Under:
Code:
[B][SIZE=2][COLOR=#0000ff]private [/COLOR][/SIZE][/B][SIZE=2]DateTime m_NextTailorBulkOrder[/SIZE][SIZE=2][COLOR=#006400];
[/COLOR][/SIZE]
Code:
[B][SIZE=2][COLOR=#0000ff]private [/COLOR][/SIZE][/B][SIZE=2]DateTime m_NextFletcherBulkOrder[/SIZE][SIZE=2][COLOR=#006400];
[/COLOR][/SIZE][B][SIZE=2][COLOR=#0000ff]private [/COLOR][/SIZE][/B][SIZE=2]DateTime m_NextCarpenterBulkOrder[/SIZE][SIZE=2][COLOR=#006400];[/COLOR][/SIZE]
[SIZE=2][COLOR=#006400][SIZE=2]private DateTime m_NextTinkerBulkOrder;
[/SIZE][/COLOR][/SIZE]
Under:
Code:
[SIZE=2][COLOR=#006400][[/COLOR][/SIZE][B][SIZE=2][COLOR=#191970]CommandProperty[/COLOR][/SIZE][/B][SIZE=2][COLOR=#006400]( [/COLOR][/SIZE][SIZE=2]AccessLevel[/SIZE][SIZE=2][COLOR=#006400].[/COLOR][/SIZE][SIZE=2]GameMaster [/SIZE][SIZE=2][COLOR=#006400])]
[/COLOR][/SIZE][B][SIZE=2][COLOR=#0000ff]public [/COLOR][/SIZE][/B][SIZE=2]TimeSpan NextSmithBulkOrder
[/SIZE][SIZE=2][COLOR=#006400]{
[/COLOR][/SIZE][SIZE=2][COLOR=#8b4513]get
[/COLOR][/SIZE][SIZE=2][COLOR=#006400]{
[/COLOR][/SIZE][SIZE=2]TimeSpan ts [/SIZE][SIZE=2][COLOR=#006400]= [/COLOR][/SIZE][SIZE=2]m_NextSmithBulkOrder [/SIZE][SIZE=2][COLOR=#006400]- [/COLOR][/SIZE][SIZE=2]DateTime[/SIZE][SIZE=2][COLOR=#006400].[/COLOR][/SIZE][SIZE=2]Now[/SIZE][SIZE=2][COLOR=#006400];
[/COLOR][/SIZE][B][SIZE=2][COLOR=#0000ff]if [/COLOR][/SIZE][/B][SIZE=2][COLOR=#006400]( [/COLOR][/SIZE][SIZE=2]ts [/SIZE][SIZE=2][COLOR=#006400]< [/COLOR][/SIZE][SIZE=2]TimeSpan[/SIZE][SIZE=2][COLOR=#006400].[/COLOR][/SIZE][SIZE=2]Zero [/SIZE][SIZE=2][COLOR=#006400])
[/COLOR][/SIZE][SIZE=2]ts [/SIZE][SIZE=2][COLOR=#006400]= [/COLOR][/SIZE][SIZE=2]TimeSpan[/SIZE][SIZE=2][COLOR=#006400].[/COLOR][/SIZE][SIZE=2]Zero[/SIZE][SIZE=2][COLOR=#006400];
[/COLOR][/SIZE][SIZE=2][COLOR=#000080]return [/COLOR][/SIZE][SIZE=2]ts[/SIZE][SIZE=2][COLOR=#006400];
}
[/COLOR][/SIZE][SIZE=2][COLOR=#8b4513]set
[/COLOR][/SIZE][SIZE=2][COLOR=#006400]{
[/COLOR][/SIZE][B][SIZE=2][COLOR=#008080]try[/COLOR][/SIZE][/B][SIZE=2][COLOR=#006400]{ [/COLOR][/SIZE][SIZE=2]m_NextSmithBulkOrder [/SIZE][SIZE=2][COLOR=#006400]= [/COLOR][/SIZE][SIZE=2]DateTime[/SIZE][SIZE=2][COLOR=#006400].[/COLOR][/SIZE][SIZE=2]Now [/SIZE][SIZE=2][COLOR=#006400]+ [/COLOR][/SIZE][B][SIZE=2]value[/SIZE][/B][SIZE=2][COLOR=#006400]; }
[/COLOR][/SIZE][B][SIZE=2][COLOR=#008080]catch[/COLOR][/SIZE][/B][SIZE=2][COLOR=#006400]{}
}
}
[/COLOR][/SIZE]
Code:
[SIZE=2][COLOR=#006400][[/COLOR][/SIZE][B][SIZE=2][COLOR=#191970]CommandProperty[/COLOR][/SIZE][/B][SIZE=2][COLOR=#006400]( [/COLOR][/SIZE][SIZE=2]AccessLevel[/SIZE][SIZE=2][COLOR=#006400].[/COLOR][/SIZE][SIZE=2]GameMaster [/SIZE][SIZE=2][COLOR=#006400])]
[/COLOR][/SIZE][B][SIZE=2][COLOR=#0000ff]public [/COLOR][/SIZE][/B][SIZE=2]TimeSpan NextFletcherBulkOrder
[/SIZE][SIZE=2][COLOR=#006400]{
[/COLOR][/SIZE][SIZE=2][COLOR=#8b4513]get
[/COLOR][/SIZE][SIZE=2][COLOR=#006400]{
[/COLOR][/SIZE][SIZE=2]TimeSpan ts [/SIZE][SIZE=2][COLOR=#006400]= [/COLOR][/SIZE][SIZE=2]m_NextFletcherBulkOrder [/SIZE][SIZE=2][COLOR=#006400]- [/COLOR][/SIZE][SIZE=2]DateTime[/SIZE][SIZE=2][COLOR=#006400].[/COLOR][/SIZE][SIZE=2]Now[/SIZE][SIZE=2][COLOR=#006400];
[/COLOR][/SIZE][B][SIZE=2][COLOR=#0000ff]if [/COLOR][/SIZE][/B][SIZE=2][COLOR=#006400]( [/COLOR][/SIZE][SIZE=2]ts [/SIZE][SIZE=2][COLOR=#006400]< [/COLOR][/SIZE][SIZE=2]TimeSpan[/SIZE][SIZE=2][COLOR=#006400].[/COLOR][/SIZE][SIZE=2]Zero [/SIZE][SIZE=2][COLOR=#006400])
[/COLOR][/SIZE][SIZE=2]ts [/SIZE][SIZE=2][COLOR=#006400]= [/COLOR][/SIZE][SIZE=2]TimeSpan[/SIZE][SIZE=2][COLOR=#006400].[/COLOR][/SIZE][SIZE=2]Zero[/SIZE][SIZE=2][COLOR=#006400];
[/COLOR][/SIZE][SIZE=2][COLOR=#000080]return [/COLOR][/SIZE][SIZE=2]ts[/SIZE][SIZE=2][COLOR=#006400];
}
[/COLOR][/SIZE][SIZE=2][COLOR=#8b4513]set
[/COLOR][/SIZE][SIZE=2][COLOR=#006400]{
[/COLOR][/SIZE][B][SIZE=2][COLOR=#008080]try[/COLOR][/SIZE][/B][SIZE=2][COLOR=#006400]{ [/COLOR][/SIZE][SIZE=2]m_NextFletcherBulkOrder [/SIZE][SIZE=2][COLOR=#006400]= [/COLOR][/SIZE][SIZE=2]DateTime[/SIZE][SIZE=2][COLOR=#006400].[/COLOR][/SIZE][SIZE=2]Now [/SIZE][SIZE=2][COLOR=#006400]+ [/COLOR][/SIZE][B][SIZE=2]value[/SIZE][/B][SIZE=2][COLOR=#006400]; }
[/COLOR][/SIZE][B][SIZE=2][COLOR=#008080]catch[/COLOR][/SIZE][/B][SIZE=2][COLOR=#006400]{}
}
}
[/COLOR][/SIZE][SIZE=2][COLOR=#008000]
[/COLOR][/SIZE][SIZE=2][COLOR=#006400][[/COLOR][/SIZE][B][SIZE=2][COLOR=#191970]CommandProperty[/COLOR][/SIZE][/B][SIZE=2][COLOR=#006400]( [/COLOR][/SIZE][SIZE=2]AccessLevel[/SIZE][SIZE=2][COLOR=#006400].[/COLOR][/SIZE][SIZE=2]GameMaster [/SIZE][SIZE=2][COLOR=#006400])]
[/COLOR][/SIZE][B][SIZE=2][COLOR=#0000ff]public [/COLOR][/SIZE][/B][SIZE=2]TimeSpan NextCarpenterBulkOrder
[/SIZE][SIZE=2][COLOR=#006400]{
[/COLOR][/SIZE][SIZE=2][COLOR=#8b4513]get
[/COLOR][/SIZE][SIZE=2][COLOR=#006400]{
[/COLOR][/SIZE][SIZE=2]TimeSpan ts [/SIZE][SIZE=2][COLOR=#006400]= [/COLOR][/SIZE][SIZE=2]m_NextCarpenterBulkOrder [/SIZE][SIZE=2][COLOR=#006400]- [/COLOR][/SIZE][SIZE=2]DateTime[/SIZE][SIZE=2][COLOR=#006400].[/COLOR][/SIZE][SIZE=2]Now[/SIZE][SIZE=2][COLOR=#006400];
[/COLOR][/SIZE][B][SIZE=2][COLOR=#0000ff]if [/COLOR][/SIZE][/B][SIZE=2][COLOR=#006400]( [/COLOR][/SIZE][SIZE=2]ts [/SIZE][SIZE=2][COLOR=#006400]< [/COLOR][/SIZE][SIZE=2]TimeSpan[/SIZE][SIZE=2][COLOR=#006400].[/COLOR][/SIZE][SIZE=2]Zero [/SIZE][SIZE=2][COLOR=#006400])
[/COLOR][/SIZE][SIZE=2]ts [/SIZE][SIZE=2][COLOR=#006400]= [/COLOR][/SIZE][SIZE=2]TimeSpan[/SIZE][SIZE=2][COLOR=#006400].[/COLOR][/SIZE][SIZE=2]Zero[/SIZE][SIZE=2][COLOR=#006400];
[/COLOR][/SIZE][SIZE=2][COLOR=#000080]return [/COLOR][/SIZE][SIZE=2]ts[/SIZE][SIZE=2][COLOR=#006400];
}
[/COLOR][/SIZE][SIZE=2][COLOR=#8b4513]set
[/COLOR][/SIZE][SIZE=2][COLOR=#006400]{
[/COLOR][/SIZE][B][SIZE=2][COLOR=#008080]try[/COLOR][/SIZE][/B][SIZE=2][COLOR=#006400]{ [/COLOR][/SIZE][SIZE=2]m_NextCarpenterBulkOrder [/SIZE][SIZE=2][COLOR=#006400]= [/COLOR][/SIZE][SIZE=2]DateTime[/SIZE][SIZE=2][COLOR=#006400].[/COLOR][/SIZE][SIZE=2]Now [/SIZE][SIZE=2][COLOR=#006400]+ [/COLOR][/SIZE][B][SIZE=2]value[/SIZE][/B][SIZE=2][COLOR=#006400]; }
[/COLOR][/SIZE][B][SIZE=2][COLOR=#008080]catch[/COLOR][/SIZE][/B][SIZE=2][COLOR=#006400]{}
}
}
[SIZE=2][CommandProperty( AccessLevel.GameMaster )]
public TimeSpan NextTinkerBulkOrder
{
get
{
TimeSpan ts = m_NextTinkerBulkOrder - DateTime.Now;
if ( ts < TimeSpan.Zero )
ts = TimeSpan.Zero;
return ts;
}
set
{
try{ m_NextTinkerBulkOrder = DateTime.Now + value; }
catch{}
}
}
[/SIZE][/COLOR][/SIZE]
Under:
Code:
[SIZE=2]m_BOBFilter = new Engines.BulkOrders.BOBFilter();
m_TamingBOBFilter = new Engines.BulkOrders.TamingBOBFilter();
[/SIZE]
Add:
Code:
[SIZE=2]m_TinkBOBFilter = new Engines.BulkOrders.TinkBOBFilter();
[/SIZE]
Under:
Code:
[SIZE=2]private Engines.BulkOrders.BOBFilter m_BOBFilter;
private Engines.BulkOrders.TamingBOBFilter m_TamingBOBFilter;
[/SIZE]
Add:
Code:
[SIZE=2]private Engines.BulkOrders.TinkBOBFilter m_TinkBOBFilter;
[/SIZE]
Under:
Code:
[SIZE=2]public Engines.BulkOrders.BOBFilter BOBFilter
{
get{ return m_BOBFilter; }
}
public Engines.BulkOrders.TamingBOBFilter TamingBOBFilter
{
get{ return m_TamingBOBFilter; }
}
[/SIZE]
Add:
Code:
[SIZE=2]public Engines.BulkOrders.TinkBOBFilter TinkBOBFilter
{
get{ return m_TinkBOBFilter; }
}
[/SIZE]
!Note:
If you don't understand how to serialize/deserialize take a look at the example for Advanced Archery. It is found here. And make sure the serialization and deserialization edits are in the same order. If you look at my example down below you will see that both are added in the same order.
!Serialize:
Code:
[SIZE=2]NextCarpenterBulkOrder [/SIZE][SIZE=2][COLOR=#006400]= [/COLOR][/SIZE][SIZE=2]reader[/SIZE][SIZE=2][COLOR=#006400].[/COLOR][/SIZE][B][SIZE=2][COLOR=#191970]ReadTimeSpan[/COLOR][/SIZE][/B][SIZE=2][COLOR=#006400]();
[/COLOR][/SIZE][SIZE=2]NextFletcherBulkOrder [/SIZE][SIZE=2][COLOR=#006400]= [/COLOR][/SIZE][SIZE=2]reader[/SIZE][SIZE=2][COLOR=#006400].[/COLOR][/SIZE][B][SIZE=2][COLOR=#191970]ReadTimeSpan[/COLOR][/SIZE][/B][SIZE=2][COLOR=#006400]();[/COLOR][/SIZE]
[SIZE=2][COLOR=#006400][SIZE=2]NextTinkerBulkOrder = reader.ReadTimeSpan();
[SIZE=2]m_TinkBOBFilter = new Engines.BulkOrders.TinkBOBFilter( reader );
[/SIZE][/SIZE][/COLOR][/SIZE]
Under:
Code:
[SIZE=2]if ( m_BOBFilter == null )
m_BOBFilter = new Engines.BulkOrders.BOBFilter();
if ( m_TamingBOBFilter == null )
m_TamingBOBFilter = new Engines.BulkOrders.TamingBOBFilter();
[/SIZE]
Add:
Code:
[SIZE=2]if ( m_TinkBOBFilter == null )
m_TinkBOBFilter = new Engines.BulkOrders.TinkBOBFilter();
[/SIZE]
!Deserialize:
Code:
[SIZE=2]writer[/SIZE][SIZE=2][COLOR=#006400].[/COLOR][/SIZE][B][SIZE=2][COLOR=#191970]Write[/COLOR][/SIZE][/B][SIZE=2][COLOR=#006400]( [/COLOR][/SIZE][SIZE=2]NextFletcherBulkOrder [/SIZE][SIZE=2][COLOR=#006400]);
[/COLOR][/SIZE][SIZE=2]writer[/SIZE][SIZE=2][COLOR=#006400].[/COLOR][/SIZE][B][SIZE=2][COLOR=#191970]Write[/COLOR][/SIZE][/B][SIZE=2][COLOR=#006400]( [/COLOR][/SIZE][SIZE=2]NextCarpenterBulkOrder [/SIZE][SIZE=2][COLOR=#006400]);[/COLOR][/SIZE]
[SIZE=2][COLOR=#006400][SIZE=2]writer.Write( NextTinkerBulkOrder );
[SIZE=2]m_TinkBOBFilter.Serialize( writer );
[/SIZE][/SIZE][/COLOR][/SIZE]
!List of Commands:
[OWLTRBOD - Opens gump that displays what BODs are available. If available, then can collect the selected BOD/BODs.