Need help changing starting Templates (RunUO 2.7)

librettomafia

Member
Feb 27, 2018
15
0
23
What I'm trying to do here is take away all of the AOS/SE Templates and replace them with common UOR templates.
Ex: Tamer, Thief, Bard, ETC.
any guidance as to where I should start to make these changes?

V/R

Character Creation.png
 
Last edited:

bojangles2872

Well-Known Member
Jul 29, 2018
74
8
Character creation.cs I beleive is where you can change the name and skills given. Idk if you would have to modify the Gump at all
 

librettomafia

Member
Feb 27, 2018
15
0
23
So this modifies the starting skills, would you happen know how to change the name and images within the gump? I have UOFiddler to get the CliLoc values but I just cant find a file to do that.

C#:
private static Mobile m_Mobile;

        private static void SetSkills( Mobile m, SkillNameValue[] skills, int prof )
        {
            switch ( prof )
            {
                case 1: // Warrior
                {
                    skills = new SkillNameValue[]
                        {
                            new SkillNameValue( SkillName.Anatomy, 30 ),
                            new SkillNameValue( SkillName.Healing, 45 ),
                            new SkillNameValue( SkillName.Swords, 35 ),
                            new SkillNameValue( SkillName.Tactics, 50 )
                        };

                    break;
                }
                case 2: // Magician
                {
                    skills = new SkillNameValue[]
                        {
                            new SkillNameValue( SkillName.EvalInt, 30 ),
                            new SkillNameValue( SkillName.Wrestling, 30 ),
                            new SkillNameValue( SkillName.Magery, 50 ),
                            new SkillNameValue( SkillName.Meditation, 50 )
                        };

                    break;
                }
                case 3: // Blacksmith
                {
                    skills = new SkillNameValue[]
                        {
                            new SkillNameValue( SkillName.Mining, 30 ),
                            new SkillNameValue( SkillName.ArmsLore, 30 ),
                            new SkillNameValue( SkillName.Blacksmith, 50 ),
                            new SkillNameValue( SkillName.Tinkering, 50 )
                        };

                    break;
                }
                case 4: // Necromancer
                {
                    skills = new SkillNameValue[]
                        {
                            new SkillNameValue( SkillName.Necromancy, 50 ),
                            new SkillNameValue( SkillName.Focus, 30 ),
                            new SkillNameValue( SkillName.SpiritSpeak, 30 ),
                            new SkillNameValue( SkillName.Swords, 30 ),
                            new SkillNameValue( SkillName.Tactics, 20 )
                        };

                    break;
                }
                case 5: // Paladin
                {
                    skills = new SkillNameValue[]
                        {
                            new SkillNameValue( SkillName.Chivalry, 51 ),
                            new SkillNameValue( SkillName.Swords, 49 ),
                            new SkillNameValue( SkillName.Focus, 30 ),
                            new SkillNameValue( SkillName.Tactics, 30 )
                        };

                    break;
                }
                case 6:    //Samurai
                {
                    skills = new SkillNameValue[]
                        {
                            new SkillNameValue( SkillName.Bushido, 50 ),
                            new SkillNameValue( SkillName.Swords, 50 ),
                            new SkillNameValue( SkillName.Anatomy, 30 ),
                            new SkillNameValue( SkillName.Healing, 30 )
                    };
                    break;
                }
                case 7:    //Ninja
                {
                    skills = new SkillNameValue[]
                        {
                            new SkillNameValue( SkillName.Ninjitsu, 50 ),
                            new SkillNameValue( SkillName.Hiding, 50 ),
                            new SkillNameValue( SkillName.Fencing, 30 ),
                            new SkillNameValue( SkillName.Stealth, 30 )
                        };
                    break;
                }
                default:
                {
                    if ( !ValidSkills( skills ) )
                        return;

                    break;
                }
            }
 

bojangles2872

Well-Known Member
Jul 29, 2018
74
8
I'm guessing you would have to change the Gump. I may have seen it when I was going through them on uofiddler bit I dont have any clue how to change them myself. Thats not really something ive gotten into
 

Djeryv

Well-Known Member
Oct 2, 2014
416
83
I am going to sound all doom and gloom here, but what you are trying to do is no simple task...or may be impossible. That screen is a client-side screen so you would need to change the gump images to something else and then find the cliloc entries and change that text (HOPING those cliloc numbers are not used elswhere). If you can manage to get that far, then you should be able to change the CharacterCreation.cs to accomodate the buttons.

It is because of these things, that some shards let you go through the bullshit of making a character with the client, but then dump your character into a room where you have to pick everything all over again...except based on that shard's situation/design.
 
  • Like
Reactions: librettomafia

PyrO

Well-Known Member
Jan 27, 2015
1,167
95
Yea I agree with Djeryv there, would be best to auto fill the char slots with empty chars or spoof it to make the client think the slots are filled.
Then you would get into the game and there you can do your full character creation gump however you want.

Changing this on the default character creation? Not sure if that is actually doable without to many side effects.
 

Zavreyon

Gold Donator
Apr 5, 2015
82
26
31
To change the text, It's a simple matter of editing and saving the entries in UOFiddler and then saving the cliloc.xxx file for the langauge(s) your shard uses and distributing them to players.

The Cliloc numbers for the player job choices appear to be 1061176 - 1061181 for my client, the descriptions are 1061225 - 1061231. I don't think you will have much trouble with those being used elsewhere, the texts are quite specific and ordered together.

The gumps will be harder and the same art may have been used in other places ingame, but should be possible as I'm quite sure I've seen it done before.

The location of the cliloc entries and a an example using existing art attached. In this case I changed Warrior to Knight. Will look at the art situation later.
Post automatically merged:

The profession Icons start at 0x15A9, there are many, some may no longer be used, but in any case there exists already graphics that "match" that you can reuse, ie, a lute for bard, a horse for tamer I guess (would have preferred a shepherd's crook but oh well) and coins, which could be used for a thief.

So, there's two for each, one pressed one depressed, you can right click the pair you want to use and save as bmp, then rightclick and replace the one you don't wish to use. Then, save and redistribute the new gumpart.mul and gumpartaidx to client. in this example, I changed samurai and ninja to bard and ranger respectively)

And speaking of, the Clilocs for the SE expansion Start in a different section, at 1062948, names first, then descriptions. Keep in mind if you replace SE or AOS profession Slots and are targetting a lower expansion, you will need to allow those to be created serverside. Somewhere.
 

Attachments

Last edited:

librettomafia

Member
Feb 27, 2018
15
0
23
only thing im still confused on is the expansions blocking players from using that pre made template, I changed starting locations of the edited templates but still receiving that AOS/SE message.
Post automatically merged:

Got all the CLilocs and Gumps situated.
Post automatically merged:

 

Attachments

Last edited:

Grimoric

Well-Known Member
Mar 21, 2015
182
44
44
What you are looken for is called "expansion packet" i name it a bit in this post. 0xB9


Im away on hollyday and dont have a computer.

-Grim
 
  • Like
Reactions: librettomafia

librettomafia

Member
Feb 27, 2018
15
0
23
ive been trying different things out all day and have yet to get this to work. ive looked into expansioninfo.cs but cant find anything.
 

Grimoric

Well-Known Member
Mar 21, 2015
182
44
44
ive been trying different things out all day and have yet to get this to work. ive looked into expansioninfo.cs but cant find anything.
I Will not be home until 18th.

The server packet you need to modify is The one sent after the login packet. It controll The festures The client are allowed to use. The packet sent to client is 0xB9.

The change is in core not in The scripts. Just to dubbel check. Have you cellected Aos as expansion? You can try that and compar The packet sent

-Grim
 
Last edited:
  • Like
Reactions: librettomafia

Zavreyon

Gold Donator
Apr 5, 2015
82
26
31
librettomafia, I believe he is referring to this part, looks like it breaks out each expansion into clientflags, featureflags, charlistflags and housingflags:

C#:
Table = new[]
            {
                new ExpansionInfo(
                    0,
                    "None",
                    ClientFlags.None,
                    FeatureFlags.ExpansionNone,
                    CharacterListFlags.ExpansionNone,
                    HousingFlags.None),
                new ExpansionInfo(
                    1,
                    "The Second Age",
                    ClientFlags.Felucca,
                    FeatureFlags.ExpansionT2A,
                    CharacterListFlags.ExpansionT2A,
                    HousingFlags.None),
                new ExpansionInfo(
                    2,
                    "Renaissance",
                    ClientFlags.Trammel,
                    FeatureFlags.ExpansionUOR,
                    CharacterListFlags.ExpansionUOR,
                    HousingFlags.None),
                new ExpansionInfo(
                    3,
                    "Third Dawn",
                    ClientFlags.Ilshenar,
                    FeatureFlags.ExpansionUOTD,
                    CharacterListFlags.ExpansionUOTD,
                    HousingFlags.None),
                new ExpansionInfo(
                    4,
                    "Blackthorn's Revenge",
                    ClientFlags.Ilshenar,
                    FeatureFlags.ExpansionLBR,
                    CharacterListFlags.ExpansionLBR,
                    HousingFlags.None),
                new ExpansionInfo(
                    5,
                    "Age of Shadows",
                    ClientFlags.Malas,
                    FeatureFlags.ExpansionAOS,
                    CharacterListFlags.ExpansionAOS,
                    HousingFlags.HousingAOS),
                new ExpansionInfo(
                    6,
                    "Samurai Empire",
                    ClientFlags.Tokuno,
                    FeatureFlags.ExpansionSE,
                    CharacterListFlags.ExpansionSE,
                    HousingFlags.HousingSE),
                new ExpansionInfo(
                    7,
                    "Mondain's Legacy",
                    new ClientVersion("5.0.0a"),
                    FeatureFlags.ExpansionML,
                    CharacterListFlags.ExpansionML,
                    HousingFlags.HousingML),
                new ExpansionInfo(
                    8,
                    "Stygian Abyss",
                    ClientFlags.TerMur,
                    FeatureFlags.ExpansionSA,
                    CharacterListFlags.ExpansionSA,
                    HousingFlags.HousingSA),
                new ExpansionInfo(
                    9,
                    "High Seas",
                    new ClientVersion("7.0.9.0"),
                    FeatureFlags.ExpansionHS,
                    CharacterListFlags.ExpansionHS,
                    HousingFlags.HousingHS),
                new ExpansionInfo(
                    10,
                    "Time of Legends",
                    new ClientVersion("7.0.45.65"),
                    FeatureFlags.ExpansionTOL,
                    CharacterListFlags.ExpansionTOL,
                    HousingFlags.HousingTOL)
            };
        }
So if you are using Expansion.T2A in your currentexpansion.cs,

you can try changing the T2A section to look like this:

C#:
new ExpansionInfo(
                    1,
                    "The Second Age",
                    ClientFlags.Felucca,
                    FeatureFlags.ExpansionSE,
                    CharacterListFlags.ExpansionSE,
                    HousingFlags.None),
To enable the features. I tried just changing the Charlist Flags but still got the error message that I needed AOS/SE to use those profession slots. So I changed both charlistflags and featureflags, and was able to create a character with those additional profession slots, but am at work so have limited abilities to test things at the moment. I did chose SE as the expansion, so I still have 7 "top level" profession slots but fortunately it does still prevent elves/gargs on character create. What worries me now is whether this enables other features from later expansions that I don't want once ingame.

Grim, I realize you are on vacation, but from your recollection, will this enable other later expansion features or have any other undesired effects that you know of? Is there a different/better way?
 
  • Like
Reactions: librettomafia

librettomafia

Member
Feb 27, 2018
15
0
23
this is my current line for ExpansionInfo.cs im still getting that error about AOS/SE Expansion...im just not understanding this. ill post my CharacterCreation.cs along with ExpansionInfo.cs

I really appreciate you taking time out to help me out.

C#:
                new ExpansionInfo(
                    2,
                    "Renaissance",
                    ClientFlags.Trammel,
                    FeatureFlags.ExpansionSE,
                    CharacterListFlags.ExpansionSE,
                    HousingFlags.None),
Post automatically merged:

ive been thinking maybe this line has a bit to do with it. this is AFTER making changes trying to solve.

C#:
switch ( args.Profession )
            {
                case 4: //Tailor
                {
                    if ( (flags & ClientFlags.Felucca) != 0 )
                    {
                        return new CityInfo( "Britain", "Sweet Dreams Inn", 3503, 2574, 14, Map.Felucca );
                    }
                    else
                    {
                        useHaven = true;

                        new BadStartMessage( m, 1062205 );
                        /*
                         * Unfortunately you are playing on a *NON-Age-Of-Shadows* game
                         * installation and cannot be transported to Malas. 
                         * You will not be able to take your new player quest in Malas
                         * without an AOS client.  You are now being taken to the city of
                         * Haven on the Trammel facet.
                         * */
                    }

                    break;
                }
                case 5:    //Animal Tamer
                {
                    return m_NewHavenInfo;
                }
                case 6:    //Bard
                {
                    if ( (flags & ClientFlags.Felucca) != 0 )
                    {
                        return new CityInfo( "Britain", "Sweet Dreams Inn", 3503, 2574, 14, Map.Felucca );
                    }
                    else
                    {
                        useHaven = false;

                        new BadStartMessage( m, 1063487 );
                        /*
                         * Unfortunately you are playing on a *NON-Samurai-Empire* game
                         * installation and cannot be transported to Tokuno.
                         * You will not be able to take your new player quest in Tokuno
                         * without an SE client. You are now being taken to the city of
                         * Haven on the Trammel facet.
                         * */
                    }

                    break;
                }
                case 7:    //Archer
                {
                    if ( (flags & ClientFlags.Felucca) != 0 )
                    {
                        return new CityInfo( "Britain", "Sweet Dreams Inn", 3503, 2574, 14, Map.Felucca );
                    }
                    else
                    {
                        useHaven = false;

                        new BadStartMessage( m, 1063487 );
                        /*
                         * Unfortunately you are playing on a *NON-Samurai-Empire* game
                         * installation and cannot be transported to Tokuno.
                         * You will not be able to take your new player quest in Tokuno
                         * without an SE client. You are now being taken to the city of
                         * Haven on the Trammel facet.
                         * */
                    }

                    break;
                }
            }

            if( useHaven )
                return m_NewHavenInfo;
            else
                return args.City;
        }
 

Attachments

Zavreyon

Gold Donator
Apr 5, 2015
82
26
31
Did you also change the numerical range in verify profession? That's the only other change I made. But I'm also using servuo, will have to retest everything on runuo when I get home
 

librettomafia

Member
Feb 27, 2018
15
0
23
are you talking about these?

C#:
        public static bool VerifyProfession( int profession )
        {
            if ( profession < 0 )
                return false;
            else if ( profession < 4   )
                return true;
            else if ( Core.AOS && profession < 6 )
                return true;
            else if ( Core.SE && profession < 8 )
                return true;
            else
                return false;
        }
 

librettomafia

Member
Feb 27, 2018
15
0
23
could you show what youre saying in a code line? ive changed the numbers but I may be doing something wrong.
 

Zavreyon

Gold Donator
Apr 5, 2015
82
26
31
this is what mine looks like, keeping in mind I am using ServUO, but looks very similar in RunUO

C#:
     public static bool VerifyProfession(int profession)
                {
                        if ( profession < 0 )
                                return false;
                        else if ( profession < 8 )
                                return true;
                        else
                                return false;
                }
 
  • Like
Reactions: librettomafia