got it all sorted now awesome work! onlything with weapon levels required

1696088302392.png

level 112 for a double axe? can't br right can it?
 
exe.jpg
Long time no see! I have a question. I'm using the system well, but there's a problem. When you click Expansion, no window appears and just disappears. I set it up on a new server and started it because it didn't work on my old server, but it disappeared the same way. Is there a solution?
 
Installed this using the read me that was included. Getting a few errors

Errors:
+ Misc/SkillCheck.cs:
CS0234: Line 11: The type or namespace name 'LevelSystemExtAtt' does not exist in the namespace 'Server.Engines' (are you missing an assembly reference?)
+ Misc/Titles.cs:
CS0234: Line 8: The type or namespace name 'LevelSystemExtAtt' does not exist in the namespace 'Server.Engines' (are you missing an assembly reference?)
+ Mobiles/Normal/BaseCreature.cs:
CS0234: Line 32: The type or namespace name 'LevelSystemExtAtt' does not exist in the namespace 'Server.Engines' (are you missing an assembly reference?)
+ Mobiles/NPCs/BaseVendor.cs:
CS0234: Line 18: The type or namespace name 'LevelSystemExtAtt' does not exist in the namespace 'Server.Engines' (are you missing an assembly reference?)
+ Mobiles/PlayerMobile.cs:
CS0234: Line 50: The type or namespace name 'LevelSystemExtAtt' does not exist in the namespace 'Server.Engines' (are you missing an assembly reference?)
+ Services/BulkOrders/Rewards/ConfirmBankPointsGump.cs:
CS0234: Line 5: The type or namespace name 'LevelSystemExtAtt' does not exist in the namespace 'Server.Engines' (are you missing an assembly reference?)
Scripts: One or more scripts failed to compile or no script files were found.
 
The instructions were not updated it seems, that is on me.

ALL THE MODIFIED FILES BELOW NEED THIS ADDED TO THE SERVICE LIST AT THE TOP!!
using Server.Engines.LevelSystemExtAtt;


Use the below instead.
using Server.Engines.XmlSpawnerExtMod;

I've updated the SetupInstructions
 

Attachments

  • SetupInstructions.txt
    15 KB · Views: 19
Last edited:
Hi there, I have a problem with the script, it was working just fine and then after reaching level 7, all mobs just stopped giving exp. I have no idea why this happens. Also, I noticed some mobs giving only 1 exp, like greater mongbats.

EDIT
I tried with a new char and it worked, but I noticed something, I stopped getting exp after getting a horse, so I went back to the original character, dismounted and tried killing something and it worked! Then tried mounting the horse again before fighting and got no exp. Looking at level control I saw an option for mounted pets getting exp, after activating it I was able to get exp while mounted, but the pet also gets exp! I will try searching in the files for whats causing it, but I'm coding expert.

EDIT2
I found the file with the exp table for mobs and noticed that greater mongbats weren't included.
 
Last edited:
Hi there, I have a problem with the script, it was working just fine and then after reaching level 7, all mobs just stopped giving exp. I have no idea why this happens. Also, I noticed some mobs giving only 1 exp, like greater mongbats.

EDIT
I tried with a new char and it worked, but I noticed something, I stopped getting exp after getting a horse, so I went back to the original character, dismounted and tried killing something and it worked! Then tried mounting the horse again before fighting and got no exp. Looking at level control I saw an option for mounted pets getting exp, after activating it I was able to get exp while mounted, but the pet also gets exp! I will try searching in the files for whats causing it, but I'm coding expert.

EDIT2
I found the file with the exp table for mobs and noticed that greater mongbats weren't included.
To ensure accuracy, the EXP Tables do not encompass every creature in the game as I didn't have the patience to manually update the mobile list with all the necessary choices. This is why I set the default option to not use tables. If you prefer to use tables, more power to you.

I'm working on a feature request, someone asked if I could include EXP Chains (bonuses for killing many creatures in quick succession.) That will likely be a default feature, i see no reason to add a toggle for it. Really, I should have had this in a long time ago, it just never occurred to me for some reason.
 
Hello @Kamras , is there a way to get the whole folder with all the latest changes? I am trying to include this to my shard and cant make it work. I first got the whole thing to work, but after a server restart, the deserializer and serializer for XmlData was broken. I then found some information about some change to do in the code, tried them and now nothing is working. Would be easier to have a clean folder with no code change apart from the readme stuff to do in order to bind with ServUO.

Branch 57.1

EDIT: I finally made it working by going back from start, exporting the folder into my scripts and by replacing the XmlData from the one in this thread. I am also getting some small freeze especially when I see new Mobiles in my screen (it seems).
 
Last edited:
Hello,

I just found a bug with the sharing xp system. After some code verification it seems it is due to missing xmlplayerparty.Expp incrementation in AddExp function (line 79 and 107) in my snippet.

Here is my proposed solution:

LevelHandlerExt.cs:
public static void AddExp(Mobile m, Mobile k, Party p)
        {
            LevelControlSysItem loccontrol = null;
            foreach (Item lister in World.Items.Values)
            {
                if (lister is LevelControlSysItem) loccontrol = lister as LevelControlSysItem;
            }
            LevelControlSys m_ItemxmlSys = null;
            m_ItemxmlSys = (LevelControlSys)XmlAttachExt.FindAttachment(loccontrol, typeof(LevelControlSys));
            if (m_ItemxmlSys == null)
                return;

            LevelSheet xmlplayer = null;
            xmlplayer = m.Backpack.FindItemByType(typeof(LevelSheet), false) as LevelSheet;
            PlayerMobile pm = null;
            LevelHandlerExt lh = new LevelHandlerExt();

            int range = m_ItemxmlSys.PartyExpShareRange;

            double orig    = 0;    //Monster Xp
            double fig    = 0;    //Party Xp
            double give    = 0;    //Xp To Give

            if (k != null)
                orig = LevelCore.Base(k);

            if (p != null && m_ItemxmlSys.PartyExpShare)
            {
                if (m_ItemxmlSys.PartyExpShareSplit)
                {
                    foreach (PartyMemberInfo mi in p.Members)
                    {
                        pm = mi.Mobile as PlayerMobile;

                        if (pm.InRange(k, range) && lh.MemberCount.Count < 6)
                            lh.MemberCount.Add(pm);
                    }

                    if (lh.MemberCount.Count > 1)
                        fig = (orig / lh.MemberCount.Count);
                }
                else
                {
                    pm = m as PlayerMobile;
                    fig = orig;
                }
            }
            else
            {
                pm = m as PlayerMobile;
                fig = orig;
            }

            if (fig > 0)
                give = LevelHandlerExt.ExpFilter(pm, fig, p, false);

            if (give > 0)
            {
                #region PartyExpShare
                if (p != null && m_ItemxmlSys.PartyExpShare)
                {
                    foreach (PartyMemberInfo mi in p.Members)
                    {
                        pm = mi.Mobile as PlayerMobile;
                        if (pm.Alive && pm.InRange(k, range))
                        {
                            LevelSheet xmlplayerparty = null;
                            xmlplayerparty = pm.Backpack.FindItemByType(typeof(LevelSheet), false) as LevelSheet;
                            if (xmlplayerparty == null)
                            {
                                return;
                            }
                            else
                            {
                                if (xmlplayerparty.PowerHour == true)
                                {
                                    pm.SendMessage("You gained " + (give + m_ItemxmlSys.ExpPowerAmount) + " boosted exp for the party kill!");
                                    xmlplayerparty.kxp += (int)give + m_ItemxmlSys.ExpPowerAmount;
                                    xmlplayerparty.Expp += (int)give + m_ItemxmlSys.ExpPowerAmount;
                                    if (pm.HasGump(typeof(ExpBar)))
                                    {
                                        pm.CloseGump(typeof(ExpBar));
                                        pm.SendGump(new ExpBar(pm));
                                    }
                                    if (xmlplayer.Expp >= xmlplayer.ToLevell)
                                    {
                                        if (xmlplayer.MaxLevel < xmlplayer.EndMaxLvl)
                                        {
                                            if (xmlplayer.Levell < xmlplayer.EndMaxLvl)
                                            {
                                                DoLevel(pm);
                                            }
                                        }
                                        else
                                        {
                                            if (xmlplayer.Levell < xmlplayer.MaxLevel)
                                            {
                                                DoLevel(pm);
                                            }
                                        }
                                    }
                                }
                                else
                                {
                                    pm.SendMessage("You gained " + give + " exp for the party kill!");
                                    xmlplayerparty.kxp += (int)give;
                                    xmlplayerparty.Expp += (int)give;
                                    if (pm.HasGump(typeof(ExpBar)))
                                    {
                                        pm.CloseGump(typeof(ExpBar));
                                        pm.SendGump(new ExpBar(pm));
                                    }
                                    if (xmlplayer.Expp >= xmlplayer.ToLevell)
                                    {
                                        if (xmlplayer.MaxLevel < xmlplayer.EndMaxLvl)
                                        {
                                            if (xmlplayer.Levell < xmlplayer.EndMaxLvl)
                                            {
                                                DoLevel(pm);
                                            }
                                        }
                                        else
                                        {
                                            if (xmlplayer.Levell < xmlplayer.MaxLevel)
                                            {
                                                DoLevel(pm);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                #endregion
                else
                {
                    if (xmlplayer.PowerHour == true)
                    {
                        pm.SendMessage("You gained " + (give + m_ItemxmlSys.ExpPowerAmount) + " boosted exp for the kill!");
                        xmlplayer.kxp += (int)give + m_ItemxmlSys.ExpPowerAmount;
                    }
                    else
                    {
                        pm.SendMessage("You gained " + give + " exp for the kill!");
                        xmlplayer.kxp    += (int)give;
                        xmlplayer.Expp    += (int)give;
                    }
                    if (pm.HasGump(typeof(ExpBar)))
                    {
                        pm.CloseGump(typeof(ExpBar));
                        pm.SendGump(new ExpBar(pm));
                    }

                    if (xmlplayer.Expp >= xmlplayer.ToLevell)
                    {
                        if (xmlplayer.MaxLevel < xmlplayer.EndMaxLvl)
                        {
                            if (xmlplayer.Levell < xmlplayer.EndMaxLvl)
                            {
                                DoLevel(pm);
                            }
                        }
                        else
                        {
                            if (xmlplayer.Levell < xmlplayer.MaxLevel)
                            {
                                DoLevel(pm);
                            }
                        }
                    }
                }
            }
            else
            {
                pm.SendMessage("You are at max Level!");
                return;
            }
        }
                                }

P.S You should create a github project with all the files in it instead of just a zip, it would allow us to propose commit.
 
здравствуйте подскажите пожалуйста как включить скилы у питомцев
hello, please tell me how to turn on the skills of pets
 

Attachments

  • 2024-03-31_08-20-53.png
    2024-03-31_08-20-53.png
    103.2 KB · Views: 8
Last edited:
Back