When using OWL woods it works, but only with logs. If I turn the logs into boards the boards retain their color but are just called boards and can't be used in crafting saying "You have insufficient materials to craft that".
Odd. I'm having no trouble crafting with boards or logs either one. And thats with using either the axe to create the boards or the Carp craft funtion. As for how they look, they should be looking like so..
ScreenHunter_78 May. 31 20.06.jpgScreenHunter_77 May. 31 20.06.jpg
 
Ahhhh interesting! I didn't even know you could make boards with an axe...so this narrows things down.
If I use an axe to make the boards they have the correct hue and name and i'm able to use them in crafting.
If i use the carpentry craft board function the boards have the correct hue but incorrect name and can't be used.
So could this be that board.cs is funky somehow?

YAY this works using boards made with an axe!

574e1d5b.jpg 574e1d6f.jpg 574e1d47.jpg


Booooo these don't work using the carpentry craft board option!


574e1e44.jpg
 
So something weird. I went to test the carpentry system finaly and every time I try to use the saw the server crashes, here is the log file.

Code:
Server Crash Report
===================

RunUO Version 0.5, Build 5984.39812
Operating System: Microsoft Windows NT 6.2.9200.0
.NET Framework: 4.0.30319.42000
Time: 5/31/2016 9:58:49 PM
Mobiles: 5251
Items: 123864
Exception:
System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
   at System.Collections.CollectionBase.System.Collections.IList.get_Item(Int32 index)
   at Server.Engines.Craft.CraftSubResCol.GetAt(Int32 index)
   at Server.Engines.Craft.CraftGump..ctor(Mobile from, CraftSystem craftSystem, BaseTool tool, Object notice, CraftPage page)
   at Server.Items.BaseTool.OnDoubleClick(Mobile from)
   at Server.Mobile.Use(Item item) in k:\AlfheimRebornServer\Ultima Server\Server\Mobile.cs:line 4479
   at Server.Engines.XmlSpawner2.XmlAttach.UseReq(NetState state, PacketReader pvSrc)
   at Server.Network.MessagePump.HandleReceive(NetState ns) in k:\AlfheimRebornServer\Ultima Server\Server\Network\MessagePump.cs:line 187
   at Server.Network.MessagePump.Slice() in k:\AlfheimRebornServer\Ultima Server\Server\Network\MessagePump.cs:line 115
   at Server.Core.Main(String[] args) in k:\AlfheimRebornServer\Ultima Server\Server\Main.cs:line 579

Clients:
- Count: 1
+ 192.168.1.1: (account = romeov007) (mobile = 0x2B 'Ray')
[doublepost=1464754073][/doublepost]so after digging through code, seems something about the PM serialization got changed in the save methods and bombed out once I updated the defcarp. Made a new toon and it worked correctly when trying to open. (Good thing this is not yet a production shard).

Next issue. I spawn a log and turn it into boards, the log never goes away , however I get boards. Boards are also not accounted for in the carp gump.
 
I downloaded the master repo file and compared, seems my basetool was dated, I updated it and recompiled. The issue with the logs not being consumed is repaired. However the boards still do not show up as an available resource in the carp gump.
 
Oh I see, so it is acting like cloth for tailoring, cloth is assumed but never actually a visible resource on the list. noted. by the way, i give you props, you have the patience of a saint, im annoying. lol
 
@Joshua Check the bottom of the DefCarpentry & DefBowFletch scripts. You should be seeing this
Code:
            this.CanEnhance = Core.ML;

            this.SetSubRes(typeof(Board), 1072643); // this line
If not, try adding it & see if that helps. Although.. your Carp menu looks different from mine.
 
So
Code:
this.SetSubRes(typeof(Board), 1072643); // this line
was already there, and did not show up so I added back the original code

Code:
this.AddSubRes(typeof(Board), 1072643, 00.0, 1044041, 1072652);

and that got the wood option to show up. its ashame you cant easily change the string text for those entries, then I would simply add the rest of the boards manually to show up along side the logs
 
yeah I see that

For fun I tried adding
Code:
this.AddSubRes(typeof(OakBoard), "Oak Boards", 50.0, 1072652);

It actually showed up correctly with an amount however when trying to craft anything from it, the system thinks you have 0, despite the gump showing the amount
[doublepost=1464755763][/doublepost]bummer, think i somehow broke something, so i can only craft with regular logs/boards, any custom resources are showing with an amount but keeps stating I do not have enough.
upload_2016-5-31_22-36-2.png
 
You only need
Code:
this.SetSubRes(typeof(Board), 1072643);
None of the other CliLoc numbers are needed at the bottom for the subres. Just that line. But.. you just gave me an idea for an experiment. ;)
 
Glad to be of help :) any idea though why any of my custom resources are not working for crafting? why it says I have insufficient wood yet It shows me having the wood.
[doublepost=1464758562][/doublepost]I attached my carp file for anyone wanting to skip the resourcehelper, which in my opinion is the root of the problem.. could be wrong bit this works for me! lol. this shows all logs and boards and the correct amounts and makes them usable. defaults to regular wood.
 

Attachments

  • DefCarpentry.cs
    51.1 KB · Views: 10
Now thats funny.. I was working on the same thing basically, just not quite as wordy. Dont really need the logs showing, especially since most arent going to keep them AS logs anyway. And these totals are from inside the MasterStorage, so it works all the way around. :)
Code:
            this.AddSubRes(typeof(Board), 1072643, 00.0, 1044041, 1072652);
            this.AddSubRes(typeof(OakBoard), 1072644, 65.0, 1044041, 1072652);
            this.AddSubRes(typeof(AshBoard), 1072645, 80.0, 1044041, 1072652);
            this.AddSubRes(typeof(YewBoard), 1072646, 95.0, 1044041, 1072652);
            this.AddSubRes(typeof(HeartwoodBoard), 1072647, 100.0, 1044041, 1072652);
            this.AddSubRes(typeof(BloodwoodBoard), 1072648, 100.0, 1044041, 1072652);
            this.AddSubRes(typeof(FrostwoodBoard), 1072649, 100.0, 1044041, 1072652);
            this.AddSubRes(typeof(EbonyBoard), "Ebony", 100.0, 1072652);
            this.AddSubRes(typeof(BambooBoard), "Bamboo", 100.0, 1072652);
            this.AddSubRes(typeof(PurpleHeartBoard), "PurpleHeart", 100.0, 1072652);
            this.AddSubRes(typeof(RedwoodBoard), "Redwood", 100.0, 1072652);
            this.AddSubRes(typeof(PetrifiedBoard), "Petrified", 100.0, 1072652);
.ScreenHunter_81 May. 31 22.38.jpg
 
Meh I did ponder on the wordyness then i figured, if i did not be wordy, that ONE person (or more) would say 'WHAT IS THIS?!' so meh.
Im doing this to the rest of the craft gumps. lol
[doublepost=1464760159][/doublepost]I'm still not sure if I will keep the master storage accessible to players until I can get that loot gump fixed, i hate work arounds, to much explaining
[doublepost=1464761727][/doublepost]Here is my finished product, yes WORDY but its easy to change to less wordy.. lol tested them all, looks to be working as intended. even retaining resource colors which was not working with the resource helper
[doublepost=1464762101][/doublepost]By the way, i dislike the heartwood blue look, i actually enjoyed it green. by chance know where to change that hue? lol
 

Attachments

  • DefBlacksmithy.cs
    48.9 KB · Views: 4
  • DefTailoring.cs
    30 KB · Views: 7
  • DefBowFletching.cs
    13.6 KB · Views: 5
  • DefMasonry.cs
    10.9 KB · Views: 4
  • DefTinkering.cs
    45.1 KB · Views: 5
  • DefCarpentry.cs
    51.1 KB · Views: 6
Use the Add Single Item in the MasterStorage Options. Left click the MasterStorage pack, select Options. If its soemthing that isnt already there, what you target should get added. As for the Heartwood being blue.. lets see your ResourceInfo.cs It SHOULD be showing green..
 
Nope, it was set to blue.. LOL.

Code:
                //daat99 OWLTR start - custom wood
                new CraftResourceInfo( 0, 0,    "Normal",        CraftAttributeInfo.Blank,        CraftResource.RegularWood,    typeof(Board),                typeof( Log ) ),
                new CraftResourceInfo( 1281, 0, "Oak",            CraftAttributeInfo.OakWood,        CraftResource.OakWood,        typeof(OakBoard),            typeof( OakLog ) ),
                new CraftResourceInfo( 488,  0, "Ash",            CraftAttributeInfo.AshWood,        CraftResource.AshWood,        typeof(AshBoard),            typeof( AshLog ) ),
                new CraftResourceInfo( 2313, 0, "Yew",            CraftAttributeInfo.YewWood,        CraftResource.YewWood,        typeof(YewBoard),            typeof( YewLog ) ),
                new CraftResourceInfo( 1262, 0,    "Heartwood",    CraftAttributeInfo.Heartwood,    CraftResource.Heartwood,    typeof(HeartwoodBoard),        typeof( HeartwoodLog ) ),
                new CraftResourceInfo( 1194, 0,    "Bloodwood",    CraftAttributeInfo.Bloodwood,    CraftResource.Bloodwood,    typeof(BloodwoodBoard),        typeof( BloodwoodLog ) ),
                new CraftResourceInfo( 1266, 0,    "Frostwood",    CraftAttributeInfo.Frostwood,    CraftResource.Frostwood,    typeof(FrostwoodBoard),        typeof( FrostwoodLog ) ),
                new CraftResourceInfo( 1457, 0, "Ebony",        CraftAttributeInfo.Ebony,        CraftResource.Ebony,        typeof(EbonyBoard),            typeof( EbonyLog ) ),
                new CraftResourceInfo( 1719, 0,    "Bamboo",        CraftAttributeInfo.Bamboo,        CraftResource.Bamboo,        typeof(BambooBoard),        typeof( BambooLog ) ),
                new CraftResourceInfo( 114,  0, "PurpleHeart",    CraftAttributeInfo.PurpleHeart,    CraftResource.PurpleHeart,    typeof(PurpleHeartBoard),    typeof( PurpleHeartLog ) ),
                new CraftResourceInfo( 37,   0,    "Redwood",        CraftAttributeInfo.Redwood,        CraftResource.Redwood,        typeof(RedwoodBoard),        typeof( RedwoodLog ) ),
                new CraftResourceInfo( 1153, 0, "Petrified",    CraftAttributeInfo.Petrified,    CraftResource.Petrified,    typeof(PetrifiedBoard),        typeof( PetrifiedLog ) ),
                //daat99 OWLTR end - custom wood

im fixing that asap
 
This is from mine..
Code:
                new CraftResourceInfo( 0x000, 1011542,    "Normal",        CraftAttributeInfo.Blank,        CraftResource.RegularWood,    typeof(Board),                typeof( Log ) ),
                new CraftResourceInfo( 0x7DA, 1072533,  "Oak",            CraftAttributeInfo.OakWood,        CraftResource.OakWood,        typeof(OakBoard),            typeof( OakLog ) ),
                new CraftResourceInfo( 0x4A7, 1072534,  "Ash",            CraftAttributeInfo.AshWood,        CraftResource.AshWood,        typeof(AshBoard),            typeof( AshLog ) ),
                new CraftResourceInfo( 0x4A8, 1072535,  "Yew",            CraftAttributeInfo.YewWood,        CraftResource.YewWood,        typeof(YewBoard),            typeof( YewLog ) ),
                new CraftResourceInfo( 0x4A9, 1072536,    "Heartwood",    CraftAttributeInfo.Heartwood,    CraftResource.Heartwood,    typeof(HeartwoodBoard),        typeof( HeartwoodLog ) ),
                new CraftResourceInfo( 0x4AA, 1072538,    "Bloodwood",    CraftAttributeInfo.Bloodwood,    CraftResource.Bloodwood,    typeof(BloodwoodBoard),        typeof( BloodwoodLog ) ),
                new CraftResourceInfo( 0x47F, 1072539,    "Frostwood",    CraftAttributeInfo.Frostwood,    CraftResource.Frostwood,    typeof(FrostwoodBoard),        typeof( FrostwoodLog ) ),
                new CraftResourceInfo( 1457, 0, "Ebony",        CraftAttributeInfo.Ebony,        CraftResource.Ebony,        typeof(EbonyBoard),            typeof( EbonyLog ) ),
                new CraftResourceInfo( 1719, 0,    "Bamboo",        CraftAttributeInfo.Bamboo,        CraftResource.Bamboo,        typeof(BambooBoard),        typeof( BambooLog ) ),
                new CraftResourceInfo( 114,  0, "PurpleHeart",    CraftAttributeInfo.PurpleHeart,    CraftResource.PurpleHeart,    typeof(PurpleHeartBoard),    typeof( PurpleHeartLog ) ),
                new CraftResourceInfo( 37,   0,    "Redwood",        CraftAttributeInfo.Redwood,        CraftResource.Redwood,        typeof(RedwoodBoard),        typeof( RedwoodLog ) ),
                new CraftResourceInfo( 1153, 0, "Petrified",    CraftAttributeInfo.Petrified,    CraftResource.Petrified,    typeof(PetrifiedBoard),        typeof( PetrifiedLog ) ),
 
Yeah I'm not sure what happened there, might be time to repack and review the downloaded zip once we knock out a few more bugs
 
Which bugs?
[doublepost=1464763319][/doublepost]I think I know what happened with that hue. Higher client than the one it was originally done on. And now I have the original hue CliLocs in it, so the hues will be accurate.
 
The only one I did not mention yet was all the elemental scripts have invalid options in them per the current distro, such as packmagicitems, which will cause a fail to compile. I ended up re doing them all to match closer to AirElementals but with their respective resources. also, i removed the autodispel which was counter intuitive in my scenario. Now that I got past the crafting system, now im going to really dig into the rest of the system and make sure everything is working like it should be :)
 

Attachments

  • OreElementals.cs
    31.5 KB · Views: 2
I just remove the PackMagicitems. Oddly enough, it wasnt an issue until some update to ServUO between the time I released it & recently.
 
Not surprised. Ore ele's really dont need them anyway. Just the ability to drop their respective ores & runics. And have the hue OF that ore of course. And be harder to kill than others. And the ability to spawn on top of you when you use a Gargoyle Pickaxe for mining. And the ability to let you know they spawned by a sudden black screen saying you died. Thats all thats really needed for them. lol
 
HH I figured it out!! The section about boards in CraftItem.cs was missing the entries for the custom woods. Now I can craft using logs and boards of any type and they're hued and named correctly. The code in CraftItem.cs should look like this around line 1500ish:
Code:
#region Mondain's Legacy
                    if (item is Board)
                    {
                        Type resourceType = typeRes;

                        if (resourceType == null)
                        {
                            resourceType = Resources.GetAt(0).ItemType;
                        }

                        CraftResource thisResource = CraftResources.GetFromType(resourceType);

                        switch (thisResource)
                        {
                            case CraftResource.OakWood:
                                item = new OakBoard();
                                break;
                            case CraftResource.AshWood:
                                item = new AshBoard();
                                break;
                            case CraftResource.YewWood:
                                item = new YewBoard();
                                break;
                            case CraftResource.Heartwood:
                                item = new HeartwoodBoard();
                                break;
                            case CraftResource.Bloodwood:
                                item = new BloodwoodBoard();
                                break;
                            case CraftResource.Frostwood:
                                item = new FrostwoodBoard();
                                break;
                            case CraftResource.Ebony:
                                item = new EbonyBoard();
                                break;
                            case CraftResource.Bamboo:
                                item = new BambooBoard();
                                break;
                            case CraftResource.PurpleHeart:
                                item = new PurpleHeartBoard();
                                break;
                            case CraftResource.Redwood:
                                item = new RedwoodBoard();
                                break;
                            case CraftResource.Petrified:
                                item = new PetrifiedBoard();
                                break;
                            default:
                                item = new Board();
                                break;
                        }
                    }
                    #endregion
[doublepost=1464806875][/doublepost]Ok so now that all the fun and games with boards and logs is done (YAY!) I'm running into a cosmetic issue with material type being listed on items.
Here I've made two thrones, one out of frostwood (a normal OSI wood) and one out of purpleheart wood (a custom wood).

The frostwood one says Frostwood, the Purpleheart one does not. Any idea where this may be hiding out at? :D

574ef27f.jpg 574ef28d.jpg 574ef266.jpg
 

Attachments

  • CraftItem.cs
    47.8 KB · Views: 8
Now here is a stupid question.. What is the easiest way to reduce the amount of tokens that are given when a corpse is cleaned up?
 
@alchimyst Mine has been crafting with hues for wood from the beginning without adding that to CraftItem.cs It isnt showing the resource name because there are no CliLocs for them.
[doublepost=1464821635][/doublepost]@Joshua That would be in daat99's TokenSystem.cs, in the GiveTokens section.
 
Yeah, unfortunately. All I added into DefCarpentry & DefBowFletching was this.
Code:
        private DefCarpentry()
            : base(1, 1, 1.25)// base( 1, 1, 3.0 )
        {
        }
        public override bool RetainsColorFrom(CraftItem item, Type type)  //  These 4 lines
        {                                                            
            return true;
        }
        public override int CanCraft(Mobile from, BaseTool tool, Type itemType)
Which allows it to show the wood hue on crafted items. Between that & an addition to LockableContainer.cs, most wood items show the wood hue.
 
@Joshua That would be in daat99's TokenSystem.cs, in the GiveTokens section.

So that only controls the Bonus Tokens, I need to actually find the formula that calculates total tokens for the corpse that is cleaned up.
[doublepost=1464848332][/doublepost]Found it, is MasterStorage, called
Code:
private int getCorpseReward( Corpse c )
 
Okeydokey HH than all is working as it should for that portion of things! Super appreciate the help and time you've put into this awesome system. So now that the resources are finished i'm testing everything before i pack it all up. :)

Looks like I'm now running into an issue Ether had with Carpentry BODS.

Seems I can't add musical instruments to BODs for some reason. Just says "not requested item".
If i props the BOD and change the AmountCur to what it needs to be i'm able to turn it in fine and get a reward. Other carpentry bods are fine.

-Alch
 
Last edited:
@ alchemist - I tested your issue and I was also able to replicate it
[doublepost=1464907704][/doublepost]Fixed half the problem.. in SmallBod.CS

Find this section

Code:
        public void EndCombine(Mobile from, object o)
        {
            if (o is Item && ((Item)o).IsChildOf(from.Backpack))
            {
                Type objectType = o.GetType();

                if (this.m_AmountCur >= this.m_AmountMax)
                {
                    from.SendLocalizedMessage(1045166); // The maximum amount of requested items have already been combined to this deed.
                }
                else if (this.m_Type == null || (objectType != this.m_Type && !objectType.IsSubclassOf(this.m_Type)) || (!(o is BaseWeapon) && !(o is BaseArmor) && !(o is BaseClothing)))
                {
                    from.SendLocalizedMessage(1045169); // The item is not in the request.
                }
                else
                {

Add type ' Item '
So it looks like this

Code:
        public void EndCombine(Mobile from, object o)
        {
            if (o is Item && ((Item)o).IsChildOf(from.Backpack))
            {
                Type objectType = o.GetType();

                if (this.m_AmountCur >= this.m_AmountMax)
                {
                    from.SendLocalizedMessage(1045166); // The maximum amount of requested items have already been combined to this deed.
                }
                else if (this.m_Type == null || (objectType != this.m_Type && !objectType.IsSubclassOf(this.m_Type)) || (!(o is BaseWeapon) && !(o is BaseArmor) && !(o is Item) && !(o is BaseClothing)))
                {
                    from.SendLocalizedMessage(1045169); // The item is not in the request.
                }
                else
                {

The only problem I have now is it keeps stating it's not made from the right material, I do not think drums can be made from ashwood in my case. I tried selecting the resource ashwood and making the drums however I do not think it's actually tagging them with the wood type.
[doublepost=1464907834][/doublepost]So either we would need to fix the bod so it only made item types from normal wood not custom wood, or fix the item type so it can have a custom resource.
 
Last edited:
Ah coolness Joshua, that does narrow it down. :)
Finding it works with normal instruments but if I get a bod for exceptional it says "that item is not exceptional" even though it clearly is.
I'm guessing this and the custom wood is just a simple string somewhere.

-Alch
 
*sigh* Ok, you want those BODs to work as well? Sheesh.... greedy, arent ya'? Fine... consider them FIXED. :p Joshua was on the right track, just didnt go far enough. Edits to both SmallBOD.cs AND BaseInstrument.cs were needed. Instruments had nothing at all for resources, so I had to add that in & add in checks for BaseInstrument into SmallBOD.cs Drop these in to overwrite or merge them & you should be able to add crafted instruments to the Carp BODs. I just added BODs for each type of instrument on my tester, crafted one of each type & was able to add them to the BODs. Happy now? :D
 

Attachments

  • SmallBOD.rar
    2.9 KB · Views: 13
  • BaseInstrument.rar
    4.1 KB · Views: 10
No! you didn't buy us ice cream or get us a pony!!!!:eek:

Seriously HH can i like...fed ex you some beer or pizza or something for all your awesome help? :D

-Alch
 
I dont even buy myself ice cream most of the time & as for a pony.. script one yourself. I dont drink & the FedEx guy would probably eat the pizza and/or drink the beer. Just use the scripts, craft instruments & get gold for the BODs. :p
 
perfect it works. trying to find out what to put in base instrument so it list the resource type since the instruments do not take on a hue of the resource
 
Joshua, be on the lookout for serialization issues with baseinstument.cs...should be easy to figure out if you run into it.
 
Back