Kamras

Member
Joshua submitted a new resource:

Level System 3 - Rerelease - Levels XML

Description of System
This is a re release of the level System 3 that was popular with RunUo 2.2. The original release was a bit buggy and also required edits to playermobile which caused serialization errors periodically.

Please take this for what it is as I'm trying to recover and make the system usable again and will post updates as I get them.

Working Features
- Levels up when killing Creature
- Level up Gump
- Stat Distribution
- Skill Point Distribution
- Mount...

Read more about this resource...
 
Forgot to include this. The ExpTable i have on the download was a test file, this one is more complete ..
 

Attachments

  • Exp Tables.CS
    14.9 KB · Views: 67
nice rerelease,also yeah the party share is buggy. with 2 members the killer gets all the exp
 
Got this installed with no issues.
So far I'm Liking it.

Figured I would at-least comment on the ease of Integration.

Can't wait for future updates to this.
 
Please post your Crash Log, I'm currently at work so i cannot actively do any testing in game. But if it's code I can review it *my work thinks im working when im looking at code* lol...
 
Last edited:
Please post your Crash Log, I'm currently at work so i cannot actively do any testing in game. But if it's code I can review it *my work thinks im working when im looking at code* lol...
Server Crash Report
===================

ServUO Version 0.5, Build 6977.34100
Operating System: Microsoft Windows NT 6.1.7601 Service Pack 1
.NET Framework: 4.0.30319.42000
Time: 2019-02-07 오후 3:03:13
Mobiles: 20604
Items: 185902
Exception:
System.NullReferenceException: 개체 참조가 개체의 인스턴스로 설정되지 않았습니다.
위치: Server.LevelHandler.Set(Mobile killer, Mobile killed)
위치: Server.Mobiles.BaseCreature.OnDamage(Int32 amount, Mobile from, Boolean willKill)
위치: Server.Mobile.Damage(Int32 amount, Mobile from, Boolean informMount, Boolean checkDisrupt)
위치: Server.Mobiles.BaseCreature.Damage(Int32 amount, Mobile from, Boolean informMount, Boolean checkDisrupt)
위치: 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)
위치: Server.Items.BaseWeapon.OnHit(Mobile attacker, IDamageable damageable, Double damageBonus)
위치: Server.Items.BaseWeapon.OnSwing(Mobile attacker, IDamageable damageable, Double damageBonus)
위치: Server.Items.Fists.OnSwing(Mobile attacker, IDamageable defender)
위치: Server.Mobile.CombatTimer.OnTick()
위치: Server.Timer.Slice()
위치: Server.Core.Main(String[] args)
 
Also for some additional clarity, before the crash happened. Did it actually happen the moment you attacked the creature, or when you killed the creature?
 
Also for some additional clarity, before the crash happened. Did it actually happen the moment you attacked the creature, or when you killed the creature?
Yes
It's a server crash when you attack monsters with a pet and get experience.
 
Yes
It's a server crash when you attack monsters with a pet and get experience.

Found the problem, It will be a little bit of time to find a work around.
[doublepost=1549560923][/doublepost]Fixed it. Replace your Level Handler with this one.
Confirmed it doesn't crash on the current servuo distro , also confirmed in debug mode, nothing funny happening.
Silly attachments. tricks are for kids...
 

Attachments

  • Level Handler.CS
    10 KB · Views: 10
Found the problem, It will be a little bit of time to find a work around.
[doublepost=1549560923][/doublepost]Fixed it. Replace your Level Handler with this one.
Confirmed it doesn't crash on the current servuo distro , also confirmed in debug mode, nothing funny happening.
Silly attachments. tricks are for kids...
Wow ~! Thank you very much
It works very well ~!
[doublepost=1549627173][/doublepost]This is a bug report.
As shown in the picture,
It is wrong.
Is this a title issue?
 

Attachments

  • 레벨 표시 에러.png
    레벨 표시 에러.png
    48.6 KB · Views: 78
Last edited:
It's really great. Almost complete.
But....
Upcoming character name display It is the same as before the modification.
[doublepost=1549813330][/doublepost]This is a bug report.
Double-click the quest npc
Just happen to crash the server ...
********************************************************************************
ServUO Version 0.5, Build 6978.22313
Operating System: Microsoft Windows NT 6.1.7601 Service Pack 1
.NET Framework: 4.0.30319.42000
Time: 2019-02-10 오후 3:34:04
Mobiles: 20523
Items: 185074
Exception:
System.NullReferenceException: 개체 참조가 개체의 인스턴스로 설정되지 않았습니다.
위치: Server.LevelHandler.Set(Mobile killer, Mobile killed)
위치: Server.Mobiles.BaseCreature.OnDamage(Int32 amount, Mobile from, Boolean willKill)
위치: Server.Mobile.Damage(Int32 amount, Mobile from, Boolean informMount, Boolean checkDisrupt)
위치: Server.Mobiles.BaseCreature.Damage(Int32 amount, Mobile from, Boolean informMount, Boolean checkDisrupt)
위치: 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)
위치: Server.Items.BaseWeapon.OnHit(Mobile attacker, IDamageable damageable, Double damageBonus)
위치: Server.Items.BaseWeapon.OnSwing(Mobile attacker, IDamageable damageable, Double damageBonus)
위치: Server.Items.Fists.OnSwing(Mobile attacker, IDamageable defender)
위치: Server.Mobile.CombatTimer.OnTick()
위치: Server.Timer.Slice()
위치: Server.Core.Main(String[] args)
 

Attachments

  • [ServUO.com]-player.png
    [ServUO.com]-player.png
    48.6 KB · Views: 26
Last edited:
Ahh that was my mistake, I forgot to put the updated LevelHandler.cs in the new download file, just re download it from the previous thread, I will update the zip file now with the right file.
 
Joshua updated Level System 3 - Rerelease with a new update entry:

Added levelHandler.cs updated fix

Forgot to include the updated LevelHandler.cs in the core folder to address a previously fixed bug.

Read the rest of this update entry...
[doublepost=1549829033][/doublepost]The other issue with the overhead display, that I cannot replicate. Still works as intended for me. Can you post your playermobile.cs for me ?
[doublepost=1549837849][/doublepost]Did some digging, I found the issue with double clicking on Quest PC's as well as BaseVendors, the titles distro edit was the issue. I've posted the updated edit to titles.cs on the main resource page and below. Just update this bit of code and that problem should go away.

Code:
            if (Core.SA)
            {
                #region Level System
                PlayerMobile pm = beheld as PlayerMobile;
                XMLPlayerLevelAtt xmlplayer = (XMLPlayerLevelAtt)XmlAttach.FindAttachment(pm, typeof(XMLPlayerLevelAtt));
                Configured c = new Configured();
               
                if (beheld is PlayerMobile && ((PlayerMobile)beheld).PaperdollSkillTitle != null)
                {
                    if (c.PaperdollLevel)
                    {
                        string d = LevelCore.Display(pm, new Configured());
                        title.Append(" - Level " + d + ", ").Append(((PlayerMobile)beheld).PaperdollSkillTitle);
                    }
                    else
                        title.Append(", ").Append(((PlayerMobile)beheld).PaperdollSkillTitle);
                }
                else if (beheld is PlayerMobile && ((PlayerMobile)beheld).PaperdollSkillTitle == null)
                {
                    string d = LevelCore.Display(pm, new Configured());
                    if (c.PaperdollLevel)
                    {
                        if (pm.AccessLevel > AccessLevel.Player && c.StaffHasLevel)
                        {
                            title.Append(" - Level " + d);
                        }
                        else
                        {
                            if (pm.AccessLevel < AccessLevel.GameMaster)
                            {
                                title.Append(" - Level " + d);
                            }
                        }
                       
                    }
                }

                else if (beheld is BaseVendor)
                    title.AppendFormat(" {0}", customTitle);
               
               
                /*
                if (beheld is PlayerMobile && ((PlayerMobile)beheld).PaperdollSkillTitle != null)
                    title.Append(", ").Append(((PlayerMobile)beheld).PaperdollSkillTitle);
                else if (beheld is BaseVendor)
                    title.AppendFormat(" {0}", customTitle);
                */
                #endregion
            }

It's really great. Almost complete.
But....
Upcoming character name display It is the same as before the modification.
[doublepost=1549813330][/doublepost]This is a bug report.
Double-click the quest npc
Just happen to crash the server ...
********************************************************************************
ServUO Version 0.5, Build 6978.22313
Operating System: Microsoft Windows NT 6.1.7601 Service Pack 1
.NET Framework: 4.0.30319.42000
Time: 2019-02-10 오후 3:34:04
Mobiles: 20523
Items: 185074
Exception:
System.NullReferenceException: 개체 참조가 개체의 인스턴스로 설정되지 않았습니다.
위치: Server.LevelHandler.Set(Mobile killer, Mobile killed)
위치: Server.Mobiles.BaseCreature.OnDamage(Int32 amount, Mobile from, Boolean willKill)
위치: Server.Mobile.Damage(Int32 amount, Mobile from, Boolean informMount, Boolean checkDisrupt)
위치: Server.Mobiles.BaseCreature.Damage(Int32 amount, Mobile from, Boolean informMount, Boolean checkDisrupt)
위치: 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)
위치: Server.Items.BaseWeapon.OnHit(Mobile attacker, IDamageable damageable, Double damageBonus)
위치: Server.Items.BaseWeapon.OnSwing(Mobile attacker, IDamageable damageable, Double damageBonus)
위치: Server.Items.Fists.OnSwing(Mobile attacker, IDamageable defender)
위치: Server.Mobile.CombatTimer.OnTick()
위치: Server.Timer.Slice()
위치: Server.Core.Main(String[] args)
 
Joshua, is it possible to make it so the toon's level doesn't show up over their heads? It is kind of distracting.
 
Joshua, is it possible to make it so the toon's level doesn't show up over their heads? It is kind of distracting.

Yes, the current download is set to that by default, as the level over the head breaks on the current servuo distro if the player sets a skill title. If you pop into the configuration.cs, there is a toggle to turn off the level over head.
 
The party share exp still bugged, it have been like that since the first release at runuo forums back then lol :oops:
 
I have an idea of how to fix it, it requires a complete re write to the way it handles sharing exp. hopefully the fix shouldn't take much longer.
 
This script made by fellardin auto split gold to party members, take a look at it
 

Attachments

  • AutoSplitGold.cs
    3.1 KB · Views: 11
Hey Joshua, one question about this system. Enabling this level system doesn't disable skill macroing, right? What should i do if i wanted to make skill raising possible only by leveling?
 
Joshua updated Level System 3 - Rerelease with a new update entry:

Feature Request, Skill Mechanics

Feature Request from decker86. Added the option in the configuration file to disable the skill gain mechanics in game, so only leveling up provides any means to skill and stat gains.

Distro Edit to SkillCheck.cs is required for this feature to work.

Updated the Readme to reflect the change as well and updated the main overview page.

Read the rest of this update entry...
[doublepost=1551248057][/doublepost]
Hey Joshua, one question about this system. Enabling this level system doesn't disable skill macroing, right? What should i do if i wanted to make skill raising possible only by leveling?

I've updated the resource to include that feature. It's literally just one line of code. Go into the configuration file, add the below
Code:
public bool DisableSkillGain = false;
After
Code:
#region Bool Off and On
then go to the main resource overview towards the bottom, after the titles.cs edit you will now see the skillcheck edit to allow that toggle to work.

Setting the toggle to true, will disable the skill gain mechanics altogether, keeping it false will allow skill gain mechanics.

And per your question, aside from the above added feature, the system doesn't touch the skill gain mechanics at all.
[doublepost=1551250248][/doublepost]Added note, if you decide to actually build your world based on levels only and not the ingame Skill Gain system, may want to increase how many stat points and skill points that are offered per level up.

LevelHandler.cs

Code:
                if (pm.SkillsTotal < 120000)
                { xmlplayer.SKPoints += 4; }

                int totalStats = pm.RawDex + pm.RawInt + pm.RawStr;
                if (totalStats < 1500)
                { xmlplayer.StatPoints += 3; }

Around line 231

If you are familiar with altering code, it should even be easy enough to expand that section. Say, If below level 20 you get 15 skill points and 15 stat points per level, if below level 40, you get 20 skill points and 20 stat points per level. Probably get the idea. lol
 
Last edited:
  • Like
Reactions: ExX
Joshua updated Level System 3 - Rerelease with a new update entry:

Added Configuration Options

Expanded the configuration options further for the levelhandler.
ConfiguredSkills.cs now contains additional controls to choose how many skill points or stat points that can be provided per level range.

Read the rest of this update entry...
[doublepost=1551287795][/doublepost]Ran into more snags with the exp share, still not working. I will get this going, EVENTUALLY.. LOL. Until then, I will continue to expand the project. If there are any settings within the system that you believe should be an easy toggle that isn't already there please let me know. Ideally I would like to keep it so the average user doesn't need to edit the system, just make the changes for the desired result in the config files. So far there are only two config files. When I get some time, I will see about updating the EXP table per the current distro. (there are a LOT of creatures) .
 
One thing I would do, but I realize it may be a little bit complicated, is adding level into creatures. This way, the higher the level of the creature, the higher the exp I gain when I kill it.
For crafting, instead, I would add experience gain also when completing bulk orders, in order to make possibile for a player to gain experience only by crafting.

Another thing, useful for RP shards,, would be a command for the game masters for giving experience as a reward.
I believe may be useful also a command or a gate for raising/setting player levels.
 
You can adjust the original artifact code to include the onequip override or make a new artifact and use the original and base and add the equip override. Here is an example of using a regular katana. you can just copy the required code to any weapon or armor, or even basearmor or baseweapon onequip to have a broader affect.
 

Attachments

  • KatanaLevel.cs
    3.5 KB · Views: 11

Active Shards

Donations

Total amount
$0.00
Goal
$1,000.00
Back