RunUO Community

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

Owltr ver. 3.0.0

Hammerhand

Knight
Uh huh, that's right... it's here at last! The All New & Improved OWLTR Ver. 3.0.0! Built & tested on RunUO 2.2, it's sure to make your shard that much more fun!
Daat99 Custom OWLTR V3 (Ores Wood Leather Tokens Recipes)
Made by daat99.
Testers:
Hammerhand, Alyssa Dark, GhostRiderGrey, John Moore, frank dalton and Thomas Gordon

Heres a few of the changes..
No more storage keys, everything can be stored in ONE easy to carry backpack.
Storage Deeds are used to create the storage "spaces" in the Master Storage pack.
These are the deeds:
Alchemist (bottles, potion kegs & potions)
Bard (Instruments)
Cook (does not store liquids, but does store ready to eat & cookable foods & ingredients)
Jeweler (stores default UO gems)
Mage (reagents, sand, bone, blank scrolls & beeswax)
Miner (ingots, granite & sand)
MLResource (bonus resources found with Mining, Lumberjacking & as loot)
Runic ( Runic hammers, fletcher, sewing & tinker, only works with OWLTR currently)
Scriber (spell scrolls & blank scrolls)
Tailor (leather, hides, scales, cloth (all types), cotton, wool & flax)
Tool (yup, you got it.. Tools)
Woodworker (boards, logs, arrows, bolts, shafts & feathers)

Lumberjacks Axe is the only "weapon" storable. Stored in Tool Storage, designed for, you guessed it, Lumberjacking.
It is craftable, found in Tinkering, in the Tools section.
All deeds are craftable, found in Tinkering Customs.

More info can be found here >> http://www.runuo.com/community/threads/owltr-v3-status.522752/

The MasterStorage system can be used as a stand alone or with Tokens. It just depends on what you want for your shard. I'm apparently the "go to" guy for support until Daat99 gets his internet back, so PLEASE try not to break it TOO badly.. (he's better at this stuff than I am).
This system does require a great deal of edits, so please take the time to make sure you are getting all of them.
Anywho... Enjoy!
*Edit* Dont just replace or overwrite your files with the ones from the Modified folder. Merge them instead. Its "ok" to replace IF it is a brand new server install, as in NO previous modifications. But if you have modified any of the files that show in the modified folder, you NEED to merge the changes into yours.
**Edit #2**
OWLTR Ver. 3.0.1.0 is now on page 1 2nd post. Sand mining is fixed, Tokens not deleting is now fixed & Runic Sewing Kits now adding LRC/LMC randomly to leather armor.


Get the latest version from here:
http://www.runuo.com/community/threads/owltr-ver-3-0-0.522922/page-3#post-3922009

Couple small screen shots showing the MasterStorage gump to give you a taste..
Front page of gump shows how the inventory looks, the MLResource shows only the MLResource items in it. And crafting draws the items straight from your inventory. No need to have the items in your pack.
 

Attachments

  • OWLTR Ver. 3.0.0.rar
    370.8 KB · Views: 565
  • Front page of gump.jpg
    Front page of gump.jpg
    60 KB · Views: 546
  • MLResource inventory.jpg
    MLResource inventory.jpg
    14.5 KB · Views: 450

daat99

Moderator
Staff member
Attached v3.01.
It contains the fixes for mining items that doesn't have craft resource and the tokens not being deleted.

Files Changed (4)
Complete OWLTR Pack.txt
Modified/Engines/Harvest/Core/HarvestSystem.cs
New/Daat99 OWLTR Control Center.cs
Tokens/daat99's Token System.cs
 

Attachments

  • OWLTR 3.01.00.zip
    389.2 KB · Views: 460

daat99

Moderator
Staff member
Great release have one ? how you go about when you change currency on token stone to gold it doesnt take the gold from master storge everything else seem too be workin like a charm thx agin daat and hammer
Hammerhand said:
Its a Token Vendor Stone, as in it doesnt use gold for purchases, just tokens. If you want to use a vendor stone that takes Gold, search for Raelis vendor stone. This one is a version of that, just designed to use tokens for purchases. To change the Token vendor stone to accept gold instead would require that you change it in the script itself. Just changing it in the gump wont work.
True.

How do you get the gumps to show up?
Hammerhand said:
Left click on the MasterStorage bag itself. That gives you the main gump.
A few things to remember:
1. You won't see the storage gump until you use a storage deed.
2. You won't see the "account" gump if you don't have either tokens ledger or gold ledger enabled.

Dan Buro said:
I am also having trouble with adding to char creation..I followed the other thread but still got the error saying zero arguements..any chance you could post a sample char creation .cs showing exactly how it should be put in..maybe just that part if its not to much to ask?


Thanks ahead of time.
Inside AddBackpack:
Code:
PackItem( new daat99.MasterStorage());

Any chance that the looter and tokens are drag and drop from this system? I'm guessing they are more current in this package than the actual release thread since they had a few bugs in them, right?
They are ALMOST drag and drop.
There are several features that won't work without modifications (like the drop items on death part) and they have a define that you need to set/unset based on whether you are using the OWLTR or not.

It's all explained in the master storage thread and in my post in this thread.

Unfortunately there seems to be a bunch of dependencies on the OWLTR system. Any chance the Master Looter will be updated to include the various fixes already added with this release? Without the storage bits and all that, so that the system actually IS drag and drop.
There aren't any dependencies.

Please look over the installation instructions in the MasterLooter thread again.

There is a line at the top of the files that you need to comment out in order to get the MasterLooter to work without the OWLTR.
Just go over all of the files and comment these lines out.

fcondon said:
Thanks for the heads up. I actually got it to compile, but have 2 questions.

How do I add the tokens to my npcs so they can be looted when they die?

Also I tried adding a Token Ledger deed, and it wont let the player have it, unless they have the Master Storage bag. Can I disable this storage system bag so that players can have just a simple Token Ledger like the old system?
The storage bag doesn't act as a storage if the player doesn't have the storage deed.
You can simply not give your player the storage deeds.

If you want to add tokens when monsters die than you need to locate the code in BaseCreature that does that in the OWLTR and add it to your server.

The storage bag replaces the old token ledger and without it the player has no place to store his tokens.
That should cover it.

Agreed. It's much more manageable this time around.. major kudos to you for making sure every edit is properly commented (some weren't in the 2.0 version, which made it a real pain to pick apart). I think the issue with boards/logs is just a legacy issue that would only be corrected with a total rewrite of CraftGump.. Dougan Ironfist posted elsewhere that he is planning to rewrite the entire craft system so that it'll work easier with custom resources and the like.

If I manage to pull anything out of my hat on this, I'll be sure to post back here since I've been posting about it in this thread.. not as though we have a tutorials sections available on the site. :)
Actually:
http://www.runuo.com/community/forums/faq-forum.59/
http://www.runuo.com/community/forums/tutorials.66/
Either will do :)

Scrlked said:
Great script man! Could you explain a little bit about how does the Masterlooter bag deed works?
Basically, as it is the bag acts like a simple (blessed) bag.
If you add the "PlayerMobile" edit I mentioned in an earlier post than you can make the bag drop the items inside it to the corpse on the player death and this will turn it to a normal bag.

If you have the "token ledger" enabled than the bag will automatically store the tokens the players collect.
If you have the "gold ledger" enabled than the bag will automatically store the gold the players collect.
The players account (gold & tokens) can be accessed when the player single clicks the bag and select the proper context menu entry.

There are storage deeds added to the server as well.
If you give a player a storage deed (like mage storage deed) than the player can double click that deed and it'll enable the storage of the related items (mages get reagents).
The player can withdraw the items use the propert context menu entry.

There is another "looting" option where the player can set default looting items.
You can disable it in the script if you don't want the players to loot.

If the player has the proper storage deed than the looted items will be stored inside the bag storage.
If not than they'll be added to the bag like any other item.

Feel free to ask if you have any more questions.
 

daat99

Moderator
Staff member
Thanks for the tip.

Small bug (not sure it's relevant enough to address):

It seems any items previously stored in the old storage kits (such as the Bard Stand, Scribe Tome, etc) become corrupted when added to the new Master Storage. To be more specific.. a player withdraws an exceptional instrument with a Silver Slayer from the Bard Stand (from OWLTR 2.0), and places it in their Master Storage (OWLTR 3.0), the item is converted to non-exceptional and the uses are nixed. Whereas a freshly looted instrument (same slayer/uses), adds just fine.
Ouch :(
That's probably because OWLTR 2 changed the items before it stored them and OWLTR 3 doesn't store the actual item :(.

Keep in mind that OWLTR 3 doesn't care about item properties, it only adds the uses remaining.

For more information see MasterStorage.cs:
Code:
public bool TryStoreItem(Item item, int amount)
public bool TryStoreItemType(Type type, int amount)
 

daat99

Moderator
Staff member
Sorry for the very late reply but I just got around to work on this:
This time, I'm not crazy!

Found a bug you may want to correct and update the main post.. in BaseLog.cs..

Code:
if (!TryCreateBoards(from, 95, new Board()))
return false;

The above method is the "create board" method for Log. This should be set to 0 in accordance with the skill level to harvest basic logs. Otherwise, players cannot make boards until they're at least 95 in Lumberjacking (the carpentry method was removed).
The create board skill code is taken from stock RunUO so it has nothing to do with the OWLTR, hense I'm leaving it as it is.
Edit: Also wanted to mention, that the system simply doesn't work with default tools. Freshly added default tools add fine, but the craft resource is "lost". Makes it difficult to work with live saves.

As outlined in RunicStorage:


This doesn't even make any sense. This line suggests that the storage system is usable WITHOUT making use of the custom resources.. hardly true at all. Why? Because the storage system returns an item that doesn't exist without having OWLTR. i.e. return typeof(DullCopperRunicHammer);

Dull Copper Runic Hammers don't exist (except in OWLTR)... by default it's Runic Hammer (2 arguments). I tried modifying that line to return typeof((RunicHammer)CraftResource.DullCopper)); but ended up with a slew of errors. I love the updates, but a lot of the explanation given for this system is lacking and/or incorrect.
The runic storage itself is NOT supported by a standalone MasterStorage system.
You can still use the MasterStorage without the OWLTR, you just won't have the runic storage, the rest of the storage deeds are fine.
Notice the following line at the top of the file?
Code:
#define USE_OWLTR3
You need to comment this line out if you don't have the OWLTR (part of the installation instructions, which are lacking at the moment, sorry).

If you want to add Runic storage to your shard without the OWLTR then you need to copy the runic tools files from "OWLTR->new->Hammerhand" and manually modify them to include only the resources your shard has.


If anyone has any more issues with the OWLTR, please report them here so I can fix them before the next release, thank you.
 

daat99

Moderator
Staff member
Having issues with lumberjacking to obtain runic fletcher tools.
Script not spawning the wood elemental. We used up 200 charges on 2 gm characters and 2 player characters without a single elemental spawning.

The is a small fix required for Lumberjacking.cs as follows:

1. Change:
Code:
i_Level = CraftResources.GetIndex(CraftResources.GetFromType(type));
To:
Code:
i_Level = CraftResources.GetIndex(CraftResources.GetFromType(type))+301;

2. Delete:
Code:
if (i_Level > 300 && OWLTROptionsManager.IsEnabled(OWLTROptionsManager.OPTIONS_ENUM.HARVEST_GIVE_TOKENS))
TokenSystem.GiveTokensToPlayer(from as PlayerMobile, (i_Level - 300)*10);

Thank you for reporting the issue.
 

pglizerd

Sorceror
Any one else having a problem with items not showing in menus like tinkering ,smith,scribe it says what you can make but on left side there is no picture of it like plate legs tinker tool bag and so on even scribe shows no picture but has the spell you can make oh running 2.3 and OWLTR 3.1 Thanks
 

Hammerhand

Knight
You're probably patched too high. 2.3 doesnt really like the latest patches from what I've heard. And I havent heard of anyone else having that problem.
 

pglizerd

Sorceror
Hello thank you for the Reply i am patched to 7.0.15.1 Patch 51 is that to high if so i will try to find a other patch that is lower or do you know which patch works best with it the last patch i had was 7.0.11.0 and it had snow every where
 

sec_goat

Squire
I have a question regarding some of the code in OWLTR
In Base Armor.cs I see this:
Code:
    //daat99 OWLTR start
        private int m_PhysicalResistance=-1, m_FireResistance=-1, m_ColdResistance=-1, m_PoisonResistance=-1, m_EnergyResistance=-1;
        public override int PhysicalResistance{ get{ return ((m_PhysicalResistance!=-1)?m_PhysicalResistance:(BasePhysicalResistance + GetProtOffset() + GetResourceAttrs().ArmorPhysicalResist + m_PhysicalBonus)); } }
        public override int FireResistance{ get{ return ((m_FireResistance!=-1)?m_FireResistance:(BaseFireResistance + GetProtOffset() + GetResourceAttrs().ArmorFireResist + m_FireBonus)); } }
        public override int ColdResistance{ get{ return ((m_ColdResistance!=-1)?m_ColdResistance:(BaseColdResistance + GetProtOffset() + GetResourceAttrs().ArmorColdResist + m_ColdBonus)); } }
        public override int PoisonResistance{ get{ return ((m_PoisonResistance!=-1)?m_PoisonResistance:(BasePoisonResistance + GetProtOffset() + GetResourceAttrs().ArmorPoisonResist + m_PoisonBonus)); } }
        public override int EnergyResistance{ get{ return ((m_EnergyResistance!=-1)?m_EnergyResistance:(BaseEnergyResistance + GetProtOffset() + GetResourceAttrs().ArmorEnergyResist + m_EnergyBonus)); } }
        //daat99 OWLTR end

Can some one explain it to me? it seems like it will always return the second half of the expression and never m_reisstance. Is there some reason it is set up like this?

Thanks!
 

daat99

Moderator
Staff member
I don't recall.
All I can tell you is that this comes from OWLTR 1:
Code:
//daat99 make resistances to save
private int m_PhysicalResistance, m_FireResistance, m_ColdResistance, m_PoisonResistance, m_EnergyResistance;
 
public override int PhysicalResistance
{
get
{
if (m_PhysicalResistance != 0)
return m_PhysicalResistance;
else
return BasePhysicalResistance + GetProtOffset() + GetResourceAttrs().ArmorPhysicalResist + m_PhysicalBonus;
}
}
 
public override int FireResistance
{
get
{
if (m_FireResistance != 0)
return m_FireResistance;
else
return BaseFireResistance + GetProtOffset() + GetResourceAttrs().ArmorFireResist + m_FireBonus;
}
}
 
public override int ColdResistance
{
get
{
if (m_ColdResistance != 0)
return m_ColdResistance;
else
return BaseColdResistance + GetProtOffset() + GetResourceAttrs().ArmorColdResist + m_ColdBonus;
}
}
 
public override int PoisonResistance
{
get
{
if (m_PoisonResistance != 0)
return m_PoisonResistance;
else
return BasePoisonResistance + GetProtOffset() + GetResourceAttrs().ArmorPoisonResist + m_PoisonBonus;
}
}
 
public override int EnergyResistance
{
get
{
if (m_EnergyResistance != 0)
return m_EnergyResistance;
else
return BaseEnergyResistance + GetProtOffset() + GetResourceAttrs().ArmorEnergyResist + m_EnergyBonus;
}
}
There is a remark there about saving the resistance but at a glance it doesn't look like it makes a difference.

You can try and remove it and see if there are any side-effects if you want :)
 

sec_goat

Squire
Daat99 thanks for the reply! I did edit those lines / checks out and will see how it behaves.



in the meantime:

I have bee trying to merge files and get this live on my shard, but I appear to be having some problems. I am sure it is most likely from a bad merge, what else would it be? Can some one take a look at these errors and files for me?

So far any time a player mines or lumberjacks they get a "cannot find master storage system" message.
Currently Mining crashes the server rath throuroughly with the below errors. And Lumberjacking is not allowing users to turn logs into boards with the message "You Cannot Work this Strange wood" even with the lowest level of logs.

Code:
System.NullReferenceException: Object reference not set to an instance of an object.
  at daat99.ResourceHelper.GetDaat99HarvestedType(Type originalType, Boolean prospected, Double skill) in c:\RunUO\Scripts\Custom Systems\OWLTR 3.01.00\New\Resource Helper.cs:line 68
 
  at Server.Engines.Harvest.HarvestSystem.FinishHarvesting(Mobile from, Item tool, HarvestDefinition def, Object toHarvest, Object locked) in c:\RunUO\Scripts\Services\Harvest\Core\HarvestSystem.cs:line 168
 
  at Server.Engines.Harvest.HarvestSoundTimer.OnTick() in c:\RunUO\Scripts\Services\Harvest\Core\HarvestSoundTimer.cs:line 31
  at Server.Timer.Slice() in c:\RunUO\Server\Timer.cs:line 425
 
  at Server.Core.Main(String[] args) in c:\RunUO\Server\Main.cs:line 675
 

Attachments

  • Resource Helper.cs
    20.1 KB · Views: 2
  • HarvestSystem.cs
    21.3 KB · Views: 2

Hammerhand

Knight
In your ResourceHelper.cs you need to add this on line 68
Code:
            if (originalType.IsSubclassOf(typeof(BaseGranite)) && info.ResourceTypes.Length > 2)
                return info.ResourceTypes[2];
making it look like so..
Code:
            CraftResourceInfo info = CraftResources.GetInfo(resultCraftResource);
            if (originalType.IsSubclassOf(typeof(BaseGranite)) && info.ResourceTypes.Length > 2)
                return info.ResourceTypes[2];
            if (info.ResourceTypes.Length > 1)
                return info.ResourceTypes[1];
            return info.ResourceTypes[0];
As for your HarvestSystem.cs, you need to redo the merges. You're missing several edits & a few are in the wrong place.
 

sec_goat

Squire
Thanks HammerHand, I appreciate it, I knew I was missing something, But I don't believe I messed with the Resourcehelper.cs at all, so I don't know how I messed that one up. :D


Edit: It still appears to be crashing on the same lines after the update / re-merge. I am going to assume this is all my fault and that the SA gem mining in this version of my core is probably messing things up. It seems to do fine when you mine without gem mining toggled, but as soon as it is it crashes.

But just in case that's not it here is the error and the updated files:

Code:
Exception:
System.NullReferenceException: Object reference not set to an instance of an object.
  at daat99.ResourceHelper.GetDaat99HarvestedType(Type originalType, Boolean prospected, Double skill) in c:\RunUO\Scripts\Custom Systems\OWLTR 3.01.00\New\Resource Helper.cs:line 70
  at Server.Engines.Harvest.HarvestSystem.FinishHarvesting(Mobile from, Item tool, HarvestDefinition def, Object toHarvest, Object locked) in c:\RunUO\Scripts\Services\Harvest\Core\HarvestSystem.cs:line 161
  at Server.Engines.Harvest.HarvestSoundTimer.OnTick() in c:\RunUO\Scripts\Services\Harvest\Core\HarvestSoundTimer.cs:line 31
  at Server.Timer.Slice() in c:\RunUO\Server\Timer.cs:line 425
  at Server.Core.Main(String[] args) in c:\RunUO\Server\Main.cs:line 675
 

Attachments

  • Resource Helper.cs
    20.3 KB · Views: 1
  • HarvestSystem.cs
    20.4 KB · Views: 1

Hammerhand

Knight
sec_goat.... just for shitz & gigglez, post your Mining.cs. With this crash happening when gem mining is toggled, the issue may actually be in that script.
 

sec_goat

Squire
This all started seeming really familiar to me last night so I went digging. The last time I tried this it WAS a problem with Mining.cs you are correct. My problem is that I cannot follow the logic in daat's to find the same location of code that was troublesome before.

http://www.runuo.com/community/thre...als-powders-mining-error.462745/#post-3633033

I think basically what is happening is it is trying to return Resource[3] or something like that which doesn't exist because I have probably merged over that part. Any Way I have been bouncing around Mining.Cs, HarvestSystem.Cs and ResourceHelper.Cs trying to track it down myself. However without the lovely debug features in VS i have no idea what is actually coming up Null, which makes it hard for me to trace it back to the source.

Thank you very much for the help, you guys are awesome!

EDIT: just for fun I put up the original mining.cs as well, I am not seeing much difference, but then again I always realize how little I actually know about this stuff once I start messing with RunUO again!
 

Attachments

  • Mining.cs
    20.8 KB · Views: 1
  • originalMining.cs
    18.8 KB · Views: 1
Top