Another note on the topic. I did think of a way this could be more possible without modding the original handler script. Edit the power hour token itself, so when it creates the attachment, it does a party check on the attachment part and attaches itself to anyone else in the party, which will cause them to benefit from it as well. that actually would be an easy change
Post automatically merged:

Okay, I know I said I would not do anymore features but this is an exception since it was an original request.
The token now does a party check and attaches the token to party members as well. This follows the same rules as far as being within range, if they are not in range they will not get the attachment. Welcome to expand on that, but thats what I did. lol.
Great!!! yay
 
I can not get experience using skill

[example]
SkillCap 100
Begging Skill 0 ~ 99.9 -> Exp Get
Begging Skill 100 -> Exp Not

I have a skill of 100
I want to get Exp when using skill.


What part should I fix?
 
I can not get experience using skill

[example]
SkillCap 100
Begging Skill 0 ~ 99.9 -> Exp Get
Begging Skill 100 -> Exp Not

I have a skill of 100
I want to get Exp when using skill.


What part should I fix?
Yeah the skills part of this whole thing is wonky, i hate it say it but distro edits are the only real way to make it always perfect... Well, I will continue to see what i can do to fix the skills exp section to work better, for now. Here is a modded begging.cs file you can replace yours with. It should achieve the goal.

Any of the skills in the 'skills' folder can be manually modded like i did the begging file using the same info from the levelhandler.cs, minus a few minor details which you will see if comparing the copied code.
 

Attachments

  • Begging.cs
    14 KB · Views: 4
Yeah the skills part of this whole thing is wonky, i hate it say it but distro edits are the only real way to make it always perfect... Well, I will continue to see what i can do to fix the skills exp section to work better, for now. Here is a modded begging.cs file you can replace yours with. It should achieve the goal.

Any of the skills in the 'skills' folder can be manually modded like i did the begging file using the same info from the levelhandler.cs, minus a few minor details which you will see if comparing the copied code.
amazing!
And thank you
By applying the added code
We also set up fishing skills the same way.
 
Spoiler alert, so i started playing my own shard to enjoy what i've created so far and play around, and then i thought to myself... the default xml level system is junk... guess it's hard to play the game when you just like screwing with things. so, here comes an expansion, it will feature the same flavor at level 3 system, but it will be a revamped item level system and include the newest updates to the skills. not hard, just a lot ... a lot of repetative work. And the best part, so far it only has one distro edit that is optional. kaboom. I'm not taking any short cuts as I enjoy the experience of doing it the hard way. so here it comes.. (it will have its own resource page and not be tied in with level 3.)
 
Hello!
Using the last update of the level system on my shard,and going well,but now im getting double exp message + double exp points added to all players.
Any known issue about this?Thank you!
Image attached.
 

Attachments

  • double exp.png
    double exp.png
    22.7 KB · Views: 31
Hello!
Using the last update of the level system on my shard,and going well,but now im getting double exp message + double exp points added to all players.
Any known issue about this?Thank you!
Image attached.
It looks like you maybe did a merge and update . If you did that then there were a lot of changes made, including removal of distro edits. The basecreature.cs edit was removed ( willkill ) as that operation was moved to the exmlplayer attachment itself. That is only a guess though.
 
Thank you @Lemke for finding a bug within the Pet Level System. When gaining exp with an actively owned pet and a summoned pet the system crashed. Here is the updated LevelHandlerPet that fixes the issue. I'm checking one more item and then pushing the update to the main zip.
 

Attachments

  • LevelHandlerPet.cs
    12 KB · Views: 5
Thank you Joshua!You are ever giving a monster support for us.
Got a question about pets,on my shard,we are using your level system,and we got the evolution dragon made by Xanthos,its a powerful pet so,i want to ask you about if there is a way to exclude some monsters from the exp gains like this evo.
Thank you!
 
In the LevelHandlerPet.cs , assuming you have updated to the most recent patched version of LevelHandlerPet.cs after Line 38, maybe try something like

C#:
            if (klr is SuperDragon)
                return;

If its more then one pet type, just add in bars. like this

C#:
            if (klr is SuperDragon || klr is SuperKillerDragon || klr is thedragon)
                return;

Can do as many bars as you want. I think that should accomplish what you are after.
 
Just downloaded this and had a few errors revolving around checking if the BaseCreature "HasBreath". Since BaseCreature no longer has this property here is a work around.

We need to first check for an ability profile since not all creatures have them. Then we check to see if they have special abilities ( magery creatures may have a profile without an ability). Lastly we iterate through the abilities to see if the BaseCreature has the Ability we are looking for (DragonBreath).


The code below is the modified code, this will be around like 206 I believe in LevelCore.cs

Hope this helps someone.


C#:
      private static bool IsFireBreathingCreature(BaseCreature bc)
        {
            if (bc == null)
                return false;


            if (bc.AbilityProfile != null)
            {
                if (bc.AbilityProfile.SpecialAbilities.Length != 0)
                {

                    Array arr = bc.AbilityProfile.SpecialAbilities;

                    foreach (SpecialAbility i in arr)
                    {
                        if (i == SpecialAbility.DragonBreath)
                        {
                            return true;
                        }
                    }
                    return false;
                }
                else
                    return false;
            }
            return false;
        }
 
Sorry for posting again, I could not find an edit button to append to my original reply.

If you would like to gain experience from Harvesting you need to find in HarvestSystem.cs around line 244.

C#:
EventSink.InvokeResourceHarvestSuccess(new ResourceHarvestSuccessEventArgs(from, tool, item, bonusItem, this));

and add this right below it.

C#:
//Level System
PlayerMobile pm = from as PlayerMobile;
Configured c = new Configured();
HarvestDefinition defi = new HarvestDefinition();

LevelCore.Harvest(pm, item,  defi , from.Map, loc, resource);
//End Level System


also in LevelCore.cs around line 400 there is the line

C#:
if (resource is BaseOre)

that needs changed to
C#:
if(i is BaseOre)

If you don't change that you will not gain XP based on ore types.

If you would like your [expbar to work while harvesting and crafting in LevelCore.cs around lines 388 and 478 look for
C#:
xmlplayer.kxp += (int)give;

and right below those add

C#:
if (pm.HasGump(typeof(ExpBar)))
{
pm.CloseGump(typeof(ExpBar));
pm.SendGump(new ExpBar(pm));
}
 
Last edited:
Old thread, I know but there is a bug where if you are in a party and your pet kills something, the pet gets all the XP and the owner gets none. This only happens when you're in a party.
 
Just got this error after install... any help would be great
C#:
ServUO - [https://www.servuo.com] Version 0.5, Build 7217.34674 - Build on 10/5/2019 7:15:48 PM UTC - Release
Core: Optimizing for 4 64-bit processors
Core: Compiled for .NET MONO/CSC/Unknown
RandomImpl: CSPRandom (Software)
Core: Loading config...
Scripts: Compiling C# scripts...Failed with: 2 errors, 20 warnings
Warnings:
 + Customs/Custom Systems/Level System/Core/LevelHandlerPet.cs:
    CS0219: Line 78: The variable 'pm' is assigned but its value is never used
    CS0219: Line 112: The variable 'pm' is assigned but its value is never used
 + Customs/Custom Systems/Level System/Core/Level Core.cs:
    CS0184: Line 375: The given expression is never of the provided ('BaseOre') type
 + Customs/Custom Systems/Level System/XMLAttachments/XMLPetAttacksBonus.cs:
    CS0168: Line 522: The variable 'map' is declared but never used
    CS0169: Line 541: The field 'XMLPetAttacksBonus.pb_petsounds' is never used
 + Customs/Custom Systems/Level System/Items/LevelReqTile.cs:
    CS0162: Line 71: Unreachable code detected
 + Customs/Armor/BlackHand/BlackHandNunchaku.cs:
    CS0169: Line 14: The field 'BlackHandNunchaku.m_Timer' is never used
    CS0169: Line 13: The field 'BlackHandNunchaku.m_DecayTime' is never used
 + Customs/Armor/BlackHand/BlackHandTekagi.cs:
    CS0169: Line 13: The field 'BlackHandTekagi.m_DecayTime' is never used
    CS0169: Line 14: The field 'BlackHandTekagi.m_Timer' is never used
 + Customs/Armor/BlackHand/BlackHandTessen.cs:
    CS0169: Line 13: The field 'BlackHandTessen.m_DecayTime' is never used
    CS0169: Line 14: The field 'BlackHandTessen.m_Timer' is never used
 + Customs/Armor/BlackHand/BlackHandBokuto.cs:
    CS0169: Line 13: The field 'BlackHandBokuto.m_DecayTime' is never used
    CS0169: Line 14: The field 'BlackHandBokuto.m_Timer' is never used
 + Customs/Armor/BlackHand/Sumo.cs:
    CS0169: Line 14: The field 'Sumo.m_Timer' is never used
    CS0169: Line 13: The field 'Sumo.m_DecayTime' is never used
 + Customs/Custom Systems/Level System/Items/PlayerSkillResetToken.cs:
    CS0169: Line 31: The field 'SkillResetGump.m_From' is never used
    CS0414: Line 35: The field 'SkillResetGump.hue' is assigned but its value is never used
 + Customs/Armor/BlackHand/BlackHandWakizashi.cs:
    CS0169: Line 13: The field 'BlackHandWakizashi.m_DecayTime' is never used
    CS0169: Line 14: The field 'BlackHandWakizashi.m_Timer' is never used
 + Customs/Armor/BlackHand/BlackHandLajatang.cs:
    CS0169: Line 13: The field 'BlackHandLajatang.m_DecayTime' is never used
    CS0169: Line 14: The field 'BlackHandLajatang.m_Timer' is never used
 + Customs/Armor/BlackHand/BlackHandKama.cs:
    CS0169: Line 13: The field 'BlackHandKama.m_DecayTime' is never used
    CS0169: Line 14: The field 'BlackHandKama.m_Timer' is never used
 + Customs/Armor/BlackHand/BlackHandDaisho.cs:
    CS0169: Line 13: The field 'BlackHandDaisho.m_DecayTime' is never used
    CS0169: Line 14: The field 'BlackHandDaisho.m_Timer' is never used
 + Customs/Armor/BlackHand/BlackHandTetsubo.cs:
    CS0169: Line 13: The field 'BlackHandTetsubo.m_DecayTime' is never used
    CS0169: Line 14: The field 'BlackHandTetsubo.m_Timer' is never used
 + Customs/Custom Systems/Level System/CommandsGumps/PetLevelGump.cs:
    CS0169: Line 104: The field 'PetLevelGump.m_Master' is never used
 + Customs/Armor/BlackHand/BlackHandNoDachi.cs:
    CS0169: Line 14: The field 'BlackHandNoDachi.m_Timer' is never used
    CS0169: Line 13: The field 'BlackHandNoDachi.m_DecayTime' is never used
 + Customs/Armor/BlackHand/BlackHandSai.cs:
    CS0169: Line 14: The field 'BlackHandSai.m_Timer' is never used
    CS0169: Line 13: The field 'BlackHandSai.m_DecayTime' is never used
 + Customs/Armor/Drunken Dragon/DrunkenDragonPads.cs:
    CS0169: Line 14: The field 'DrunkenDragonPads.m_SkillMod3' is never used
 + Customs/Custom Systems/Level System/XMLAttachments/XMLNewPlayer.cs:
    CS0414: Line 13: The field 'XMLNewPlayer.m_Value' is assigned but its value is never used
Errors:
 + Customs/Custom Systems/Level System/Core/Level Core.cs:
    CS1061: Line 204: 'BaseCreature' does not contain a definition for 'HasBreath' and no accessible extension method 'HasBreath' accepting a first argument of type 'BaseCreature' could be found (are you missing a using directive or an assembly reference?)
 + Customs/Custom Systems/Level System/Core/MountCheck.cs:
    CS1061: Line 20: 'Configured' does not contain a definition for 'ToMountLevel' and no accessible extension method 'ToMountLevel' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 22: 'Configured' does not contain a definition for 'ToMountLevel' and no accessible extension method 'ToMountLevel' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 25: 'Configured' does not contain a definition for 'ToMountLevel' and no accessible extension method 'ToMountLevel' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 34: 'Configured' does not contain a definition for 'Beetle' and no accessible extension method 'Beetle' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 34: 'Configured' does not contain a definition for 'Beetle' and no accessible extension method 'Beetle' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 37: 'Configured' does not contain a definition for 'Beetle' and no accessible extension method 'Beetle' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 44: 'Configured' does not contain a definition for 'DesertOstard' and no accessible extension method 'DesertOstard' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 44: 'Configured' does not contain a definition for 'DesertOstard' and no accessible extension method 'DesertOstard' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 47: 'Configured' does not contain a definition for 'DesertOstard' and no accessible extension method 'DesertOstard' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 54: 'Configured' does not contain a definition for 'FireSteed' and no accessible extension method 'FireSteed' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 54: 'Configured' does not contain a definition for 'FireSteed' and no accessible extension method 'FireSteed' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 57: 'Configured' does not contain a definition for 'FireSteed' and no accessible extension method 'FireSteed' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 64: 'Configured' does not contain a definition for 'ForestOstard' and no accessible extension method 'ForestOstard' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 64: 'Configured' does not contain a definition for 'ForestOstard' and no accessible extension method 'ForestOstard' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 67: 'Configured' does not contain a definition for 'ForestOstard' and no accessible extension method 'ForestOstard' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 74: 'Configured' does not contain a definition for 'FrenziedOstard' and no accessible extension method 'FrenziedOstard' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 74: 'Configured' does not contain a definition for 'FrenziedOstard' and no accessible extension method 'FrenziedOstard' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 77: 'Configured' does not contain a definition for 'FrenziedOstard' and no accessible extension method 'FrenziedOstard' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 84: 'Configured' does not contain a definition for 'HellSteed' and no accessible extension method 'HellSteed' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 84: 'Configured' does not contain a definition for 'HellSteed' and no accessible extension method 'HellSteed' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 87: 'Configured' does not contain a definition for 'HellSteed' and no accessible extension method 'HellSteed' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 94: 'Configured' does not contain a definition for 'Hiryu' and no accessible extension method 'Hiryu' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 94: 'Configured' does not contain a definition for 'Hiryu' and no accessible extension method 'Hiryu' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 97: 'Configured' does not contain a definition for 'Hiryu' and no accessible extension method 'Hiryu' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 104: 'Configured' does not contain a definition for 'Horse' and no accessible extension method 'Horse' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 104: 'Configured' does not contain a definition for 'Horse' and no accessible extension method 'Horse' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 107: 'Configured' does not contain a definition for 'Horse' and no accessible extension method 'Horse' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 114: 'Configured' does not contain a definition for 'Kirin' and no accessible extension method 'Kirin' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 114: 'Configured' does not contain a definition for 'Kirin' and no accessible extension method 'Kirin' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 117: 'Configured' does not contain a definition for 'Kirin' and no accessible extension method 'Kirin' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 124: 'Configured' does not contain a definition for 'LesserHiryu' and no accessible extension method 'LesserHiryu' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 124: 'Configured' does not contain a definition for 'LesserHiryu' and no accessible extension method 'LesserHiryu' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 127: 'Configured' does not contain a definition for 'LesserHiryu' and no accessible extension method 'LesserHiryu' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 134: 'Configured' does not contain a definition for 'NightMare' and no accessible extension method 'NightMare' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 134: 'Configured' does not contain a definition for 'NightMare' and no accessible extension method 'NightMare' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 137: 'Configured' does not contain a definition for 'NightMare' and no accessible extension method 'NightMare' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 144: 'Configured' does not contain a definition for 'RidableLlama' and no accessible extension method 'RidableLlama' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 144: 'Configured' does not contain a definition for 'RidableLlama' and no accessible extension method 'RidableLlama' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 147: 'Configured' does not contain a definition for 'RidableLlama' and no accessible extension method 'RidableLlama' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 154: 'Configured' does not contain a definition for 'Ridgeback' and no accessible extension method 'Ridgeback' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 154: 'Configured' does not contain a definition for 'Ridgeback' and no accessible extension method 'Ridgeback' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 157: 'Configured' does not contain a definition for 'Ridgeback' and no accessible extension method 'Ridgeback' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 164: 'Configured' does not contain a definition for 'SavageRidgeback' and no accessible extension method 'SavageRidgeback' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 164: 'Configured' does not contain a definition for 'SavageRidgeback' and no accessible extension method 'SavageRidgeback' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 167: 'Configured' does not contain a definition for 'SavageRidgeback' and no accessible extension method 'SavageRidgeback' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 174: 'Configured' does not contain a definition for 'ScaledSwampDragon' and no accessible extension method 'ScaledSwampDragon' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 174: 'Configured' does not contain a definition for 'ScaledSwampDragon' and no accessible extension method 'ScaledSwampDragon' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 177: 'Configured' does not contain a definition for 'ScaledSwampDragon' and no accessible extension method 'ScaledSwampDragon' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 184: 'Configured' does not contain a definition for 'SeaHorse' and no accessible extension method 'SeaHorse' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 184: 'Configured' does not contain a definition for 'SeaHorse' and no accessible extension method 'SeaHorse' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 187: 'Configured' does not contain a definition for 'SeaHorse' and no accessible extension method 'SeaHorse' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 194: 'Configured' does not contain a definition for 'SilverSteed' and no accessible extension method 'SilverSteed' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 194: 'Configured' does not contain a definition for 'SilverSteed' and no accessible extension method 'SilverSteed' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 197: 'Configured' does not contain a definition for 'SilverSteed' and no accessible extension method 'SilverSteed' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 204: 'Configured' does not contain a definition for 'SkeletalMount' and no accessible extension method 'SkeletalMount' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 204: 'Configured' does not contain a definition for 'SkeletalMount' and no accessible extension method 'SkeletalMount' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 207: 'Configured' does not contain a definition for 'SkeletalMount' and no accessible extension method 'SkeletalMount' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 214: 'Configured' does not contain a definition for 'SwampDragon' and no accessible extension method 'SwampDragon' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 214: 'Configured' does not contain a definition for 'SwampDragon' and no accessible extension method 'SwampDragon' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 217: 'Configured' does not contain a definition for 'SwampDragon' and no accessible extension method 'SwampDragon' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 224: 'Configured' does not contain a definition for 'Unicorn' and no accessible extension method 'Unicorn' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 224: 'Configured' does not contain a definition for 'Unicorn' and no accessible extension method 'Unicorn' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
    CS1061: Line 227: 'Configured' does not contain a definition for 'Unicorn' and no accessible extension method 'Unicorn' accepting a first argument of type 'Configured' could be found (are you missing a using directive or an assembly reference?)
Scripts: One or more scripts failed to compile or no script files were found.
 - Press return to exit, or R to try again.
 
Sorry everyone for disappearing for a bit there, my computer took a dump and life got busy. Long story short, I'm back!. I will be poking through the comments here to see what's been said, bugs issues, things that need clarification. I'm also going to be downloading the newest distro and retesting everything out to mae sure it's all still good. If anyone has anything, post in here and let me know. Got a feature or something you want to see built off of this system or included? Share the idea. Hope everyone had a good holiday! If you rather talk to me directly, feel free to reach out to me on discord. Joitz#5539
 
In a short time i will host a server with your system,for now i dont find issues so seems clear and working like hell.
Love to see new ideas... :D
Post automatically merged:

Its possible to add level requeriment to all the loot based on props+intensity?
Just like colored item names,here the code from his modifier:

C#:
  public static string GetArmorItemValue(Item item)
        {
                bool useartifactrarity = false;
        
                BaseArmor ba = item as BaseArmor;
                int values = CheckArmor(ba);
                int rarityvalues = CheckArtifactArmor(ba);
                
                if (useartifactrarity && rarityvalues >= 1)
                {
                if (rarityvalues >= 4)
                    return "<BASEFONT COLOR=#FFFF00>";
                else if (rarityvalues >= 3)
                    return "<BASEFONT COLOR=#00FFFF>";
                else if (rarityvalues >= 2)
                    return "<BASEFONT COLOR=#00FF00>";
                else if (rarityvalues >= 1)
                    return "<BASEFONT COLOR=#FFFFFF>";
                    
                    return "<BASEFONT COLOR=#D6D6D6>";
                }
                else
                {
                if (values >= 250)
                    return String.Format("<BASEFONT COLOR=#FF8000>[Legendary]");
                else if (values >= 175)
                    return String.Format("<BASEFONT COLOR=#A335EE>[Epic]");
                else if (values >= 75)
                    return String.Format("<BASEFONT COLOR=#0070FF>[Rare]");
                else if (values >= 25)
                    return String.Format("<BASEFONT COLOR=#1EFF00>[Uncommon]");

                    return String.Format("<BASEFONT COLOR=#D6D6D6>[Common]");
                }
        }
We can try this example:
Common: Level required from 1-20
Uncommon: 20-50
etc...
Just an idea.
 
Last edited:
@Malbolger - Thank you for pointing out that error with hasbreath and providing the altered code, much appreciated.

@Lemke - Let me look into that. There are challenges to something like that without revamping the whole system. Which i CAN do but do not want to do. =p I think there is a way to avoid huge changes to distro for this and keep it XML based, so I will let you know more as I dig into it.

@ion - That was my mistake, I left the file mountcheck.cs in the zip, please delete it and that should fix the errors. I will be sure to fix that on the next update. That whole feature was moved elsewhere, so that file is just garbage at this point.
 
  • Like
Reactions: ExX
So the level requirement for all loot based on props and 'value' can be done however I want to write this a little different. Ultimately importing his package and modifying it to communicate with the level system isn't a hard thing and mesh it into the existing level requirement script that is in place. However, I rather not 'copy' or 'recreate' the wheel. Though this original idea spawned off a concept that already existed, it was out of personal necessity because a decent level system truly did not exist, and the one possible system was super dated. Hence what we have here. So... yeah let me see what will come of this, I rather write it out from scratch for sure and maybe add a few 'shortcuts' to have cleaner code with it.
Post automatically merged:

Also, what do you guys think about removing the 'Loot Generator' from basecreature and having loot handed out based on level? just a concept i was looking into. So, Level 1 through 10, you are stuck with meager loot, no matter what you kill (prevents the idea of someone getting uber armor or whatever and gaining a super jump to fame), and as you level you gain access to higher levels of randomized loot.
 
So the level requirement for all loot based on props and 'value' can be done however I want to write this a little different. Ultimately importing his package and modifying it to communicate with the level system isn't a hard thing and mesh it into the existing level requirement script that is in place. However, I rather not 'copy' or 'recreate' the wheel. Though this original idea spawned off a concept that already existed, it was out of personal necessity because a decent level system truly did not exist, and the one possible system was super dated. Hence what we have here. So... yeah let me see what will come of this, I rather write it out from scratch for sure and maybe add a few 'shortcuts' to have cleaner code with it.
Post automatically merged:

Also, what do you guys think about removing the 'Loot Generator' from basecreature and having loot handed out based on level? just a concept i was looking into. So, Level 1 through 10, you are stuck with meager loot, no matter what you kill (prevents the idea of someone getting uber armor or whatever and gaining a super jump to fame), and as you level you gain access to higher levels of randomized loot.
What you say is for sure the greatest feature you can add to your level system,if you got it working all the entire PVM can be changed to be better and better,i think is the last great change needed to be a perfect level system.
Good luck in trying,so excited to see some results lol,and THANK YOU for your time and work.
 
I personally like the idea of loot based off level however I feel not everyone will want it that way to maybe make that an option you can enable or disable?
 
What you say is for sure the greatest feature you can add to your level system,if you got it working all the entire PVM can be changed to be better and better,i think is the last great change needed to be a perfect level system.
Good luck in trying,so excited to see some results lol,and THANK YOU for your time and work.

I'm just glad my 'hobby' is fun and everyone enjoys it. :)

I personally like the idea of loot based off level however I feel not everyone will want it that way to maybe make that an option you can enable or disable?

That would be without saying, aside from the core features (which even those can be disabled) that are enabled by default, everything up this point can be toggled on or off in the config files with no changes to the code. The idea I desire to keep is user-friendly, drop and drag as much as possible, use what you want, turn off what you do not want.
Post automatically merged:

Oh, fun note, So when my computer took that dump I was talking about, I was halfway done with recreating the Equipment level system to be compatible with Level 3. Unfortunately, when the dump happened I lost that code that was never saved to my project cloud (I failed on that...), perhaps that's why I took a moment to myself too? Shear annoyance.. lmao. I will likely restart that again and finish and include it.
 
Last edited:
  • Love
Reactions: ExX
Loot based on level. Not so sure about it, it doesnt promote the idea of group hunting, say a group of 6-9 level players kill something higher difficulty they should have access to a loot comparable to the effort it took to kill it, or if a lower level player took an hour to kill something and got low level loot it could easily discourage them.
 
Loot based on level. Not so sure about it, it doesnt promote the idea of group hunting, say a group of 6-9 level players kill something higher difficulty they should have access to a loot comparable to the effort it took to kill it, or if a lower level player took an hour to kill something and got low level loot it could easily discourage them.

In that kind of scenario, I could agree on that, in either case, this would be an option (if I manage it correctly) turned off by default, so it would cater to single-player or multi-player shards.
 
In that kind of scenario, I could agree on that, in either case, this would be an option (if I manage it correctly) turned off by default, so it would cater to single-player or multi-player shards.
would there be a way to check to see if they are in a party? then if so use combined party level?
 
would there be a way to check to see if they are in a party? then if so use combined party level?

That already exists, at least the code for it. When I fixed the share EXP for party kills that opened up a lot of utility. So I could easily just hook the loot check in with that script.
 
Joshua updated Level System 3 - Rerelease with a new update entry:

Added Feature and fixes applied.

-Modified Files
-- XMLItemlevelReq.cs
-- LevelCore.CS - Fixed old code - Thanks to Malbolger for pointing this out and providing the fix/workaround.

- Added Files
-- LevelEquipXMLDynamic.cs
-- ConfiguredEquipment.cs

- Removed MountCheck.cs from zip File.


I know I said I was not going to do any more features or expand on this but I got some motivation so figure I might as well use it.

Read the rest of this update entry...
 
Ok lets go!
Im using colored item names,i think is the problem?Equipmet is displaying twice the battle rating tag,picture attached:
The mod change code for colored names with your update:

C#:
 #region [Item Name Color]
        public override void AddNameProperty(ObjectPropertyList list)
        {
            string resourceName = CraftResources.GetName(m_Resource);

            if (string.IsNullOrEmpty(resourceName) || resourceName.ToLower() == "none" || resourceName.ToLower() == "normal" || resourceName.ToLower() == "iron")
                resourceName = "";

            list.Add(1053099, ItemNameHue.ArmorItemProps.RarityNameMod(this, ((m_Quality == ItemQuality.Exceptional) ? "Exceptional " : "") + "{0}\t{1}"), resourceName, GetNameString());
            Server.Engines.XmlSpawner2.XmlAttach.AddAttachmentProperties(this, list);

        }
        #endregion
twice.png
 
UPDATE:I do rollback without colored names,the problem is not solved,just double battle rating display,and some item is correctly displayed.
 
UPDATE:I do rollback without colored names,the problem is not solved,just double battle rating display,and some item is correctly displayed.
Let me take a look, there should be no remaining references. I could have missed something. Can you please post your BaseArmor.cs ? Or if rather you can send it to me in a PM.
Post automatically merged:

Also, I recall that in basearmor there should already be a reference that calls the xmlproperties, did you add an additional line?
 
Last edited:
Let me take a look, there should be no remaining references. I could have missed something. Can you please post your BaseArmor.cs ? Or if rather you can send it to me in a PM.
Post automatically merged:

Also, I recall that in basearmor there should already be a reference that calls the xmlproperties, did you add an additional line?

@Lemke - Delete line 2754

You have
Server.Engines.XmlSpawner2.XmlAttach.AddAttachmentProperties

twice in the basearmor script.

On line 3028 , that is what is part of the initial distro, when I said basearmor, baseweapon and basejewel already have existing references, just baseclothing needed it. Which for those wondering why the XML Extra's Equipment Level system (the one that was made ages ago) never showed anything above the clothing items, that is the reason why.
 
Last edited:
@Lemke - Delete line 2754

You have
Server.Engines.XmlSpawner2.XmlAttach.AddAttachmentProperties

twice in the basearmor script.

On line 3028 , that is what is part of the initial distro, when I said basearmor, baseweapon and basejewel already have existing references, just baseclothing needed it. Which for those wondering why the XML Extra's Equipment Level system (the one that was made ages ago) never showed anything above the clothing items, that is the reason why.
So sorry Joshua,just my fail,new feature is working 100% without issues!!!
 
New issue appear when player kill a creature,but not sure about where is the issue located,here the log:

C#:
Server Crash Report
===================

ServUO Version 0.5, Build 6996.26785
Operating System: Microsoft Windows NT 6.2.9200.0
.NET Framework: 4.0.30319.34014
Time: 2/15/2020 12:42:19 AM
Mobiles: 43643
Items: 223933
Exception:
System.NullReferenceException: Object reference not set to an instance of an object.
   at Server.LevelCore.IsFireBreathingCreature(BaseCreature bc)
   at Server.LevelCore.Base(Mobile kld)
   at Server.LevelHandler.AddExp(Mobile m, Mobile k, Party p, Configured c)
   at Server.LevelHandler.Set(Mobile killer, Mobile killed)
   at Server.Engines.XmlSpawner2.XMLPlayerLevelAtt.OnKill(Mobile killed, Mobile killer)
   at Server.Engines.XmlSpawner2.XmlAttach.CheckOnKill(Mobile m_killed, Mobile m_killer)
   at Server.Items.XmlQuest.RegisterKill(Mobile m_killed, Mobile m_killer)
   at Server.Mobiles.BaseCreature.OnDeath(Container c)
   at Server.Mobile.Kill()
   at Server.Mobile.Damage(Int32 amount, Mobile from, Boolean informMount, Boolean checkDisrupt)
   at Server.Mobiles.BaseCreature.Damage(Int32 amount, Mobile from, Boolean informMount, Boolean checkDisrupt)
   at Server.AOS.Damage(IDamageable damageable, Mobile from, Int32 damage, Boolean ignoreArmor, Int32 phys, Int32 fire, Int32 cold, Int32 pois, Int32 nrgy, Int32 chaos, Int32 direct, Boolean keepAlive, DamageType type)
   at Server.Items.BaseWeapon.OnHit(Mobile attacker, IDamageable damageable, Double damageBonus)
   at Server.Items.BaseSword.OnHit(Mobile attacker, IDamageable damageable, Double damageBonus)
   at Server.Items.BaseWeapon.OnSwing(Mobile attacker, IDamageable damageable, Double damageBonus)
   at Server.Mobile.CombatTimer.OnTick()
   at Server.Timer.Slice()
   at Server.Core.Main(String[] args)

Your level core section:

C#:
private static bool IsFireBreathingCreature(BaseCreature bc)
        {
            if (bc == null)
                return false;


            if (bc.AbilityProfile != null)
            {
                if (bc.AbilityProfile.SpecialAbilities.Length != 0)
                {

                    Array arr = bc.AbilityProfile.SpecialAbilities;

                    foreach (SpecialAbility i in arr)
                    {
                        if (i == SpecialAbility.DragonBreath)
                        {
                            return true;
                        }
                    }
                    return false;
                }
                else
                    return false;
            }
            return false;
        }
 
Last edited:
Replace what you posted with this and it will fix it.

C#:
public static bool IsFireBreathingCreature(BaseCreature bc)
        {
            if (bc == null)
                return false;

            var profile = bc.AbilityProfile;

            if (profile != null)
            {
                return profile.HasAbility(SpecialAbility.DragonBreath);
            }

            return false;
        }
 
Yes i solved doing that for now.Thank you so much!
Post automatically merged:

And the last question,the level required system on items didnt work in custom armors or weapon,any idea?At the same time this item requirements are not working,looted items works well without issues.Here an example:
example.png
 
Last edited:
Awesome, I will patch that fix through, thanks @Visam

Yes i solved doing that for now.Thank you so much!
Post automatically merged:

And the last question,the level required system on items didnt work in custom armors or weapon,any idea?At the same time this item requirements are not working,looted items works well without issues.Here an example:
View attachment 14796
I will check into this.
 
I have not had a chance to test that issue yet, however, something occurred to me. The check against equipment only happens during the actual attempt to equip it. If the armor or item is already equipped when the attachment is applied, it doesn't remove it from the toon, it just shows there. Is that kind of what is happening in your case? I think i have a solution for that as well.
 
The issue is when i add the custom item directly with admin command,and give to player,or player dropped that item,he just can equip without his level requeriment.
 

Active Shards

Donations

Total amount
$50.00
Goal
$1,000.00
Back