hello.

I made all the edits and it is running with no errors. I have skill gain turned off and when i kill npc i get exp, but when I craft I do not. no errors up on console.

What am I doing wrong?

My apologies if this is something obvious, i just got back into uoserver stuff.

Thanks,
 
The ExpTable.cs needs to be filled out further.
Code:
        public static Type[] Ringmail = new Type[]
            {
                typeof(RingmailGloves),
                typeof(RingmailLegs),
                typeof(RingmailArms),
                typeof(RingmailChest)
            };

        public static Type[] Chainmail = new Type[]
            {
                typeof(ChainCoif),
                typeof(ChainChest),
                typeof(ChainLegs)
            };

        public static Type[] Platemail = new Type[]
            {
                typeof(PlateHelm),
                typeof(PlateArms),
                typeof(PlateGloves),
                typeof(PlateChest),
                typeof(PlateLegs),
                typeof(PlateGorget),
                typeof(FemalePlateChest)
            };
    }

You can add in the missing weapons and armors to either category and that should fix it. I won't be back to my main pc until tomorrow, so I do not have the core with me to test things out.
[doublepost=1551932547][/doublepost]Got a moment to check things out. So I didn't update the exp table with any new equipment, and I actually received EXP for any weapons and armor I made. Post your craftitem and I will see what the problem is.
[doublepost=1551932600][/doublepost]Which , I'm not sure If I would count that as broken or not if the exp tables are being ignored (shrugs) . Maybe this is a good opportunity to review that part of the system. So far its seems pretty automated, I can likely expand it to go beyond smithing into other sub craft systems. I think cooking and alchemy could be included.
[doublepost=1551933402][/doublepost]Nevermind, seems all crafting systems ARE included.. lol. Then in that case revise/improve and expand.
 
Last edited:
hey,

sorry didnt see your reply. yea i feel like im just messing something up in craftitem. Im sure its something dumb. Thanks very much for your time.
 

Attachments

  • CraftItem.cs
    64 KB · Views: 5
Need to make this change. Here is the original code from your file

Code:
                    {
                        //Level System
                    PlayerMobile pm = from as PlayerMobile;
                    Configured c = new Configured();

                    double ch = GetSuccessChance(pm, typeRes, craftSystem, false, ref allRequiredSkills);
                    double ex = GetExceptionalChance(craftSystem, ch, pm);

                    LevelCore.Craft(item, quality, ch, ex, pm, new Configured());
                    //End Level System
                        from.AddToBackpack(item);
                    }

It needs to look like this

Code:
                    else
                    {
                        from.AddToBackpack(item);
                    }
                   
                    //Level System
                    PlayerMobile pm = from as PlayerMobile;
                    Configured c = new Configured();

                    double ch = GetSuccessChance(pm, typeRes, craftSystem, false, ref allRequiredSkills);
                    double ex = GetExceptionalChance(craftSystem, ch, pm);

                    LevelCore.Craft(item, quality, ch, ex, pm, new Configured());
                    //End Level System
 
Thanks. its working now. I misunderstood the instructions, or am reading it wrong.

Thank you very much.

I've elaborated on the instructions a little for others that may get lost. Let me know if you need anything else :)
[doublepost=1552065850][/doublepost]
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.

The creatures already have levels on them if you toggles the feature in configuration.cs, it creates those levels loosely on rawstats and MaxHits. Even if you have the feature where it shows their levels off, they are calculated regardless. Now the feature called AdvancedExp, turn that to false to gain EXP based on the creatures levels. That will ignore the EXP tables entirely. I've updated that note in the main over view as well.

It should gain properly however it might still need a little tweaking.

The bulk orders providing exp would be a distro edit for sure. Would require a little math but shouldn't be too hard.
Also working creating Level Vendors, vendors that will only allows toons that equal or exceed X level, and even have the option of providing discounts for those toons. Kind of a reward for reaching X level.

For those shards without Level weapons or armors, maybe make a special exception and let that be a reward from these vendors ;)
 
Joshua updated Level System 3 - Rerelease with a new update entry:

Feature Update

- Added Equipment level examples, sword and armor.

- Updated configure.cs with Discount option, required distro edit

- Updated readme file with instructions for discount in BaseVendor.cs

- Created Level Vendors up to Level 250
- The user will need to go into each vendor file and modify the buy list to meet their shards needs. Sell list left incomplete on purpose.

- Updated Folder Tree in Zip File
- Added Easier Toggle to Turn off EXP for killing creatures. This would allow other...

Read the rest of this update entry...
 
This is turning into a very awesome leveling system thanks for shareing :):D:)

I'm happy to share, I feel our community is too selfish when it comes to sharing accomplishments and expansions to the system. I know all want to be unique and not be copied but in the end, sharing helps develop the community further and encourages other people to develop more or learn to develop. This level system, I fixed the original version awhile ago before even posting this but I felt guilty for not contributing to the community and only taking advice and not giving back. So I wanted to turn things around for myself and be a better 'virtual me' in the community. So here i am, i'm slowly removing some of the systems I personally developed as they are for the most part a part of my server to make them usable for other people. That RaceScript I released, I have a much more advanced version of it but its so built into different parts of my server, i can't just take it out, I have to remove it piece by piece test it out on the newest servuo to keep it stable.

And when it comes to future development, I feel the future is with XML attachments. Easy modifiable systems, not destructive to any existing systems (usually) and very flexible.

(BY the way, I do not insist that there are those NOT sharing, just saying it would be nice if more shared. :) )
 
Last edited:
Raise the level and use the stat points ...
Is there any way to reset the stat point later and raise it again?

Looking to make this normal usable action for players or just want to be able to do it as a GM? As a GM you can [getatt for a player and edit their XML attachment directly and make changes.
 
Looking to make this normal usable action for players or just want to be able to do it as a GM? As a GM you can [getatt for a player and edit their XML attachment directly and make changes.
Thank you for your answer.
How can a player buy a stat reset item in gold?
 
Yes, that's it. I suggest a way to pay and change a lot of gold when you accidentally mistake stat or want to change your character style
 
The way the system is designed it doesn't count separately (or store) the points that are awarded and to what stat groups they are awarded too so to undo the distribution isn't possible. I looked into that possibility, I think i might have a solution. It would however mean changes to the serialization of the main attachment which would break all existing level attachments when updating, so all current gained levels/exp would be lost. Raw Stats however would be unaffected. I will do some digging around and see what I can come up with, i might be able to avoid changing the serialization on the main attachment and use a 'data' xml file instead.
 
The stat point generated an initialization script.

But I'm not good at it, so I have an error.

I made it simple.

Buy this item at level 100.

Attempt to reset the stat and set the initialization point.

Could you check?
 

Attachments

  • LevelStatInitialization.cs
    2.4 KB · Views: 2
The stat point generated an initialization script.

But I'm not good at it, so I have an error.

I made it simple.

Buy this item at level 100.

Attempt to reset the stat and set the initialization point.

Could you check?

I fixed it, you were close. It should compile now, have not tested it though but based on the code should provide the desired results. I cleaned up the code a little and added a suggested edit that is commented out if you want it.
 

Attachments

  • LevelStatInitialization.cs
    2.5 KB · Views: 5
I fixed it, you were close. It should compile now, have not tested it though but based on the code should provide the desired results. I cleaned up the code a little and added a suggested edit that is commented out if you want it.
It's perfect and thank you!!!
You've fixed exactly what I want you to do!!!!
 
It's perfect and thank you!!!
You've fixed exactly what I want you to do!!!!
Your welcome! And I will take your initial suggestion and try putting it into action. Unfortunately it looks like to do something like that though properly will be a change in serialization in the main attachment, it will be a optional update that people can avoid if they want of course.
 
Joshua updated Level System 3 - Rerelease with a new update entry:

StatPoint Update

- Updated and overhauled the XML attachment itself
- Updates to the PlayerGump to accommodate the new features.
- Added A stat reset coin, the update to the xml attachment now holds the used stats from leveling up, which the reset coin uses as a reference to reset and return used stat points.
- Added additional updates to the XML attachment for future updates.

!!!!!!!!!!!!!!!!!!!!!!!!!!WARNING!!!!!!!!!!!!!!!!!!!!!!!!!!!!
This is a serialization change to the level xml attachment! If...

Read the rest of this update entry...
[doublepost=1553051092][/doublepost]This isn't included in the current zip, but I will include it on the next update when it comes. This script, when set to true within the script will search players on login to delete the attachment. It's set to false by default so you do not accidentally delete stuff, you have to actually set is to true to use it then compile. This isn't going to be a big help for big servers of ppl testing things out, but its better then nothing. lol..
 

Attachments

  • XMLDeleteLevelAttOnLogin.cs
    1.5 KB · Views: 3
Joshua updated Level System 3 - Rerelease with a new update entry:

StatPoint Update



Read the rest of this update entry...
[doublepost=1553051092][/doublepost]This isn't included in the current zip, but I will include it on the next update when it comes. This script, when set to true within the script will search players on login to delete the attachment. It's set to false by default so you do not accidentally delete stuff, you have to actually set is to true to use it then compile. This isn't going to be a big help for big servers of ppl testing things out, but its better then nothing. lol..

Even if I'm reset, it's definitely in effect.

The level-up system is getting upgraded!!!!
 
Hello Joshua!For first i need to say: what a good job :D
Now i compiled the new update and im getting a single error:


Code:
Level system new/Items/ExpCoin.cs:
    CS0236: Line 107: Un inicializador de campo no puede hacer referencia al campo, método o propiedad no estáticos 'Server.Items.AwardExpTarget.c'

Line 107:
Code:
private int m_SCV = c.ExpCoinCommandValue;

Can you advice a fix for me?Thank you!!!
 
It would however mean changes to the serialization of the main attachment which would break all existing level attachments when updating, so all current gained levels/exp would be lost.

Why would a serialization change break existing attachments? Don't they serialize independently? In other words, why can't you create a new "version" of the serialization? If the attachment has the old version, it loads using the old version. When it is saved, it saves the new version, then when it loads again, it uses the new version because of the updated version number.
 
Why would a serialization change break existing attachments? Don't they serialize independently? In other words, why can't you create a new "version" of the serialization? If the attachment has the old version, it loads using the old version. When it is saved, it saves the new version, then when it loads again, it uses the new version because of the updated version number.

That is a great question, I've been driving at that myself. I'm not sure why it breaks, if you have any insight on that I would be appreciative.

Hello Joshua!For first i need to say: what a good job :D
Now i compiled the new update and im getting a single error:


Code:
Level system new/Items/ExpCoin.cs:
    CS0236: Line 107: Un inicializador de campo no puede hacer referencia al campo, método o propiedad no estáticos 'Server.Items.AwardExpTarget.c'

Line 107:
Code:
private int m_SCV = c.ExpCoinCommandValue;

Can you advice a fix for me?Thank you!!!

Regarding this, for now replace that line with
Code:
private int m_SCV = 100;
Make 100 whichever value you want the command to invoke, I need to review that further.
 
Joshua updated Level System 3 - Rerelease with a new update entry:

Fixed EXPCoin

EXPCoin isn't compiling with a configuration setting, reverted for now.

Read the rest of this update entry...
[doublepost=1553098166][/doublepost]I see what you mean, had to think about that for a second. Lokai you are correct, I neglected the possibility of just adding in another version to the serialization. Blah.. I will see about that for next attachment update if it comes to it.
 
That is a great question, I've been driving at that myself. I'm not sure why it breaks, if you have any insight on that I would be appreciative.

Sure.

When you add new entries to be saved on any object (in this case XMLPlayerLevelAtt) you should change the version number. That is the first number that is saved on every item in ServUO. In your case, you should have changed it from a 0 to a 1, for example.

Then, in the Deserialize method, it will read that number before loading values. Right now, everyone's XMLPlayerLevelAtt was saved with a version of 0, so when you load one with a 0 version, you ONLY want it to load the values that were saved in that version, which is why in PlayerMobile for example, you will see so many case statements or whatever, because there could be many different versions out there, and when someone loads a new one, it will save all kinds of new variables, but when it first loads it will only have the ones from the one it was saved with.

So, to make sure the new variables are ONLY loaded if someone has already updated their scripts you put a switch in the Deserialize method, so if they have version 1 it will load all the new stuff, then proceed to load the old stuff, and if they have version 0, it will only load the old.

To make that work in Serialize, you need to save version as 1, then save all the new variables, then LAST save all the old variables that were in the original version.
 
Perfect explanation :) Thank you kindly. Using that should make future updates easier in that case without breaking the attachments.
[doublepost=1553099658][/doublepost]So probably something like this.
Code:
        public override void Serialize( GenericWriter writer )
        {
            base.Serialize( writer );
            writer.Write( (int) 1 );
        }
      
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize( reader );
            int version = reader.ReadInt();
            if( version < 1 )
            {
                Add Attributes
            }
        }
 
Joshua updated Level System 3 - Rerelease with a new update entry:

Update - Fix ResetStatToken

Token did not Delete on usage
Fixed an issue with command and token being used.

Read the rest of this update entry...
[doublepost=1553136963][/doublepost]I just realized, I dropped a new feature in the system without mentioning it. If you go into ConfiguredSkills.cs and scroll down you will notice a new entry.
"GainFollowerSlotOnLevel"
This feature will give (1) follow slot PER level. Wanted to give a heads up, this feature wasn't supposed to be slipped in yet, I forgot I included it in the zip, it is FALSE by default. The reason I did not want to include it yet was because it's not complete. If you turn it on, what will happen is from level 1 to Level 200 the toon will gain a bonus to their follower slots all the way up! so final total of 205 follow slots. :) If you make changes to the config and maybe set it to zero for most of the levels except for maybe one back *Like the last levels between 180 and 200 then it might be usable.

But just giving a heads up... lol
 
Last edited:
Hello ~! You can not gain experience by killing a creature with a summoned pet and killing it.
Could it be possible?
 
Hello ~! You can not gain experience by killing a creature with a summoned pet and killing it.
Could it be possible?
Hmm, I assumed it was tied into the basecreature tamed pet code so I never really tested that out.. that is good to know. I will look into it tonight, thanks for bringing that up! :)
[doublepost=1553184986][/doublepost]
Hello ~! You can not gain experience by killing a creature with a summoned pet and killing it.
Could it be possible?

Can you please tell me what you summoned that handled the kills? Were these normal summons like Daemons / Elementals or EV's ?
 
Last edited:
Hmm, I assumed it was tied into the basecreature tamed pet code so I never really tested that out.. that is good to know. I will look into it tonight, thanks for bringing that up! :)
[doublepost=1553184986][/doublepost]

Can you please tell me what you summoned that handled the kills? Were these normal summons like Daemons / Elementals or EV's ?


Summoning Necromancer When I tested the creatures, blade spirits, and vortexes, I sometimes did not get experience!
 
Summoning Necromancer When I tested the creatures, blade spirits, and vortexes, I sometimes did not get experience!

I think I know the issue here, I made a change in LevelHandler.cs, back your original up in case this doesn't work or just re download it.
Replace LevelHandler.cs with this file and see if that helps. Sorry, not in a place I can test this out.
 

Attachments

  • Level Handler.cs
    16.1 KB · Views: 4
Last edited:
I think I know the issue here, I made a change in LevelHandler.cs, back your original up in case this doesn't work or just re download it.
Replace LevelHandler.cs with this file and see if that helps. Sorry, not in a place I can test this out.
Thank you Tested it is very good!
You can get experience points with summoning pets!
[doublepost=1553251814][/doublepost]In PlayerLevelGump.cs

It's the part to fix.

Click Mysticism Skill Rise Below

Skill list changes to Trade list
.
2141 line
2145 line
2151 line
SkillCategory.Trade -> SkillCategory.Magic

You'll have to edit it.

Thank you
 
Last edited:
Joshua updated Level System 3 - Rerelease with a new update entry:

Level System Expanded Into Pets and More

Expansion into pets is finally here, pets now can be leveled up right along side the main toon with their own EXP pool. Not shared to the control master. With this system new features are coming to light.
- ConfiguredPet.cs script to control the system
- Loss of level on Death
- Loss of Stat on Death (required Loss of level to be enabled to use)
- Customization Stat points like the player. (no Skills yet!)
- Level Sheet for the Pets (only works on your own pet!) - command available too...

Read the rest of this update entry...
 
Hello!On a new Servuo repo,pets dont show his level as suffix.Tryed with a gm account,and player account.
Pet used = Kirin and horse.
Followed the new readme instructions to install.
 
Hello!On a new Servuo repo,pets dont show his level as suffix.Tryed with a gm account,and player account.
Pet used = Kirin and horse.
Followed the new readme instructions to install.
That is my Fault. I forgot to include the cosmetic display code for the Pets, I will get to it right away.
 
Joshua updated Level System 3 - Rerelease with a new update entry:

Missing cosmetic pet Level and patch

Here is the missing Cosmetic Level info.

Changes to these files were done.
- LevelCore.cs
- PetConfiguration.cs
- LevelHandlerPet.cs
- Readme

Fixed a possible unlikely of unlikely scenario's where if the controlmaster was null however the pet still had the attachment the server would crash. Changes made in LevelHandlerPet.cs

Added a distro edit for basecreature.cs to pull the level info. The changes to PetConfiguration and LevelCore are required for this to work.

Here is the quick...

Read the rest of this update entry...
 
Joshua updated Level System 3 - Rerelease with a new update entry:

Forgot the Updated Zip

Attached ZIP
Still getting used to the new form for submitting changes.

Read the rest of this update entry...
Post automatically merged:

Thank you Tested it is very good!
You can get experience points with summoning pets!
[doublepost=1553251814][/doublepost]In PlayerLevelGump.cs

It's the part to fix.

Click Mysticism Skill Rise Below

Skill list changes to Trade list
.
2141 line
2145 line
2151 line
SkillCategory.Trade -> SkillCategory.Magic

You'll have to edit it.

Thank you
I found what you were referring to and confirmed the issue, I have updated the file for when I push it next. Thanks for pointing this out :)
 
Last edited:
BaseCreature.cs ---

if (amount > disruptThreshold)
{
BandageContext c = BandageContext.GetContext(this);

if (c != null)
{
c.Slip();
}
}

in this part

BandageContext c = BandageContext.GetContext(this);

Script error on server startup

Could you tell me why?

*************************************************************************
And I have one idea.

Pet training

Can you make it active when you are in Pet Slot 5?
 
That is likely due to the variable "c" is used on part of my suggested edits. Change c to something else and be sure to edit any relevant references that it would use. Likewise you can change "c" in my edits to something else as well.
 
Back