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;
}
}
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.
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)
};
}
new ExpansionInfo(
1,
"The Second Age",
ClientFlags.Felucca,
FeatureFlags.ExpansionSE,
CharacterListFlags.ExpansionSE,
HousingFlags.None),
new ExpansionInfo(
2,
"Renaissance",
ClientFlags.Trammel,
FeatureFlags.ExpansionSE,
CharacterListFlags.ExpansionSE,
HousingFlags.None),
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;
}
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;
}
No, where it has less 4, less than 6, less than 8 for pre aos, aos and see repsectively. Make it include all 8 for pre aos.what numerical value should I use? 0?
public static bool VerifyProfession( int profession )
{
if ( profession < 0 )
return false;
else if ( profession < 8 )
return true;
else
return false;
}
ClientFlags flags = args.State == null ? ClientFlags.None : args.State.Flags;
Mobile m = args.Mobile;
switch ( args.Profession )
{
case 4: //Tailor
{
if ( (flags & ClientFlags.Malas) != 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;
}
I'm not sure. I don't have that code. But according to the text (and corresponding cliloc) it looks like it would still allow you to make the character, just sends you to haven. There must be a way to do it without changing softwares.that is exactly how mine looks but for whatever reason im still not able to use those templates..it would be a huge setback to change to servuo but damn.
C#:public static bool VerifyProfession( int profession ) { if ( profession < 0 ) return false; else if ( profession < 8 ) return true; else return false; }
Post automatically merged:
would this have any effect on why its not working?
C#:ClientFlags flags = args.State == null ? ClientFlags.None : args.State.Flags; Mobile m = args.Mobile; switch ( args.Profession ) { case 4: //Tailor { if ( (flags & ClientFlags.Malas) != 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; }
using System;
using Server.Accounting;
using Server.Network;
namespace Server
{
public class CurrentExpansion
{
private static readonly Expansion Expansion = Expansion.UOR;
public static void Configure()
{
Core.Expansion = Expansion.SE;
AccountGold.Enabled = Core.UOR;
AccountGold.ConvertOnBank = true;
AccountGold.ConvertOnTrade = false;
VirtualCheck.UseEditGump = true;
bool Enabled = Core.UOR;
Mobile.InsuranceEnabled = Enabled;
ObjectPropertyList.Enabled = Enabled;
Mobile.VisibleDamageType = Enabled ? VisibleDamageType.Related : VisibleDamageType.None;
Mobile.GuildClickMessage = !Enabled;
Mobile.AsciiClickMessage = !Enabled;
if ( Enabled )
{
AOS.DisableStatInfluences();
if ( ObjectPropertyList.Enabled )
PacketHandlers.SingleClickProps = false; // single click for everything is overriden to check object property list
Mobile.ActionDelay = 1000;
Mobile.AOSStatusHandler = new AOSStatusHandler( AOS.GetStatus );
}
}
}
}
del server.exe
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc /optimize /unsafe /t:exe /out:RunUO.exe /win32icon:Server\runuo.ico /d:NEWTIMERS /d:NEWPARENT /recurse:Server\*.cs
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?
Thank you, Grim. You wouldn't happen to know how to disable the "You must have three unique skills chosen!" prompt after clicking a category for nested professions? I found the message text in the .exe, but have no idea how to suppress the message from being shown, if that is even possible. (Essence UCS was supposed to be able to do this, but I've never been able to obtain it) It's not a big deal, as it doesn't break anything and still allows you to continue creating your character afterwards, but it is confusing as it makes it seem like the advanced button was clicked.I did reverse-engineer the client to figure out where the check was made. You can kill the check by hexedit your client.exe and change (NOP) the following bytes.
0F845A0100006A40 => 9090909090906A40
0F84E500000083FE => 90909090909083FE
This solution will work on any classic client with version 4.0.4t to 6.0.6.1 from gold and up.
-Grim
I did reverse-engineer the client to figure out where the check was made. You can kill the check by hexedit your client.exe and change (NOP) the following bytes.
0F845A0100006A40 => 9090909090906A40
0F84E500000083FE => 90909090909083FE
This solution will work on any classic client with version 4.0.4t to 6.0.6.1 from gold and up.
We use essential cookies to make this site work, and optional cookies to enhance your experience.