Go Back   RunUO - Ultima Online Emulation > RunUO > Server Support on Windows

Server Support on Windows Get (and give) support on general questions related to the RunUO server itself.

Reply
 
Thread Tools Display Modes
Old 12-22-2003, 10:33 AM   #1 (permalink)
 
Join Date: Jul 2003
Location: Portugal
Posts: 179
Send a message via ICQ to cool_dem Send a message via MSN to cool_dem
Default weird error creating new character!

in the shard im building, we were testing the new character location and when we tried to create a character it gave this error:

[code:1]Client: 213.22.236.8: Sent ingame packet (0xD7) before having been attached to a
mobile
Client: 213.22.236.8: Disconnected. [1 Online]
[/code:1]

here it is our Character creation.cs:

[code:1]using System;
using Server;
using Server.Items;
using Server.Mobiles;
using Server.Network;
using Server.Accounting;

namespace Server.Misc
{
public class CharacterCreation
{
public static void Initialize()
{
// Register our event handler
EventSink.CharacterCreated += new CharacterCreatedEventHandler( EventSink_CharacterCreated );
}

private static void AddBackpack( Mobile m )
{
Container pack = m.Backpack;

if ( pack == null )
{
pack = new Backpack();
pack.Movable = false;

m.AddItem( pack );
}

PackItem( new RedBook( "a book", m.Name, 20, true ) );
PackItem( new Gold( 1000 ) ); // Starting gold can be customized here
PackItem( new Dagger() );
PackItem( new Candle() );
PackItem( new RunicHammer( CraftResource.Valorite,5000 ) );
PackItem( new RunicHammer( CraftResource.Agapite,5000 ) );
PackItem( new RunicHammer( CraftResource.Gold,5000 ) );
PackItem( new RunicHammer( CraftResource.ShadowIron,5000 ) );
PackItem( new RunicHammer( CraftResource.DullCopper,5000 ) );
PackItem( new RunicSewingKit( CraftResource.BarbedLeather,5000 ) );
PackItem( new RunicSewingKit( CraftResource.HornedLeather,5000 ) );
PackItem( new RunicSewingKit( CraftResource.SpinedLeather,5000 ) );
}

private static Item MakeNewbie( Item item )
{
if ( !Core.AOS )
item.LootType = LootType.Newbied;

return item;
}

private static void PlaceItemIn( Container parent, int x, int y, Item item )
{
parent.AddItem( item );
item.Location = new Point3D( x, y, 0 );
}

private static Item MakePotionKeg( PotionEffect type, int hue )
{
PotionKeg keg = new PotionKeg();

keg.Held = 100;
keg.Type = type;
keg.Hue = hue;

return MakeNewbie( keg );
}

private static void FillBankAOS( Mobile m )
{
BankBox bank = m.BankBox;

if ( bank == null )
return;

// The new AOS bankboxes don't have powerscrolls, they are automatically 'applied':

for ( int i = 0; i < PowerScroll.Skills.Length; ++i )
m.Skills[PowerScroll.Skills[i]].Cap = 120.0;

m.StatCap = 375;


Container cont;


// Begin box of money
cont = new WoodenBox();
cont.ItemID = 0xE7D;
cont.Hue = 0x489;

PlaceItemIn( cont, 16, 51, new BankCheck( 500000 ) );
PlaceItemIn( cont, 28, 51, new BankCheck( 250000 ) );
PlaceItemIn( cont, 40, 51, new BankCheck( 100000 ) );
PlaceItemIn( cont, 52, 51, new BankCheck( 100000 ) );
PlaceItemIn( cont, 64, 51, new BankCheck( 50000 ) );

PlaceItemIn( cont, 34, 115, MakeNewbie( new Gold( 60000 ) ) );

PlaceItemIn( bank, 18, 169, cont );
// End box of money


// Begin bag of potion kegs
cont = new Backpack();
cont.Name = "Various Potion Kegs";

PlaceItemIn( cont, 45, 149, MakePotionKeg( PotionEffect.CureGreater, 0x2D ) );
PlaceItemIn( cont, 69, 149, MakePotionKeg( PotionEffect.HealGreater, 0x499 ) );
PlaceItemIn( cont, 93, 149, MakePotionKeg( PotionEffect.PoisonDeadly, 0x46 ) );
PlaceItemIn( cont, 117, 149, MakePotionKeg( PotionEffect.RefreshTotal, 0x21 ) );
PlaceItemIn( cont, 141, 149, MakePotionKeg( PotionEffect.ExplosionGreater, 0x74 ) );

PlaceItemIn( cont, 93, 82, MakeNewbie( new Bottle( 1000 ) ) );

PlaceItemIn( bank, 53, 169, cont );
// End bag of potion kegs


// Begin bag of tools
cont = new Bag();
cont.Name = "Tool Bag";

PlaceItemIn( cont, 30, 35, MakeNewbie( new TinkerTools( 1000 ) ) );
PlaceItemIn( cont, 60, 35, new HousePlacementTool() );
PlaceItemIn( cont, 90, 35, MakeNewbie( new DovetailSaw( 1000 ) ) );
PlaceItemIn( cont, 30, 68, MakeNewbie( new Scissors() ) );
PlaceItemIn( cont, 45, 68, MakeNewbie( new MortarPestle( 1000 ) ) );
PlaceItemIn( cont, 75, 68, MakeNewbie( new ScribesPen( 1000 ) ) );
PlaceItemIn( cont, 90, 68, MakeNewbie( new SmithHammer( 1000 ) ) );
PlaceItemIn( cont, 30, 118, MakeNewbie( new TwoHandedAxe() ) );
PlaceItemIn( cont, 60, 118, MakeNewbie( new FletcherTools( 1000 ) ) );
PlaceItemIn( cont, 90, 118, MakeNewbie( new SewingKit( 1000 ) ) );

PlaceItemIn( bank, 118, 169, cont );
// End bag of tools


// Begin bag of archery ammo
cont = new Bag();
cont.Name = "Bag Of Archery Ammo";

PlaceItemIn( cont, 48, 76, MakeNewbie( new Arrow( 5000 ) ) );
PlaceItemIn( cont, 72, 76, MakeNewbie( new Bolt( 5000 ) ) );

PlaceItemIn( bank, 118, 124, cont );
// End bag of archery ammo


// Begin bag of treasure maps
cont = new Bag();
cont.Name = "Bag Of Treasure Maps";

PlaceItemIn( cont, 30, 35, MakeNewbie( new TreasureMap( 1, Map.Trammel ) ) );
PlaceItemIn( cont, 45, 35, MakeNewbie( new TreasureMap( 2, Map.Trammel ) ) );
PlaceItemIn( cont, 60, 35, MakeNewbie( new TreasureMap( 3, Map.Trammel ) ) );
PlaceItemIn( cont, 75, 35, MakeNewbie( new TreasureMap( 4, Map.Trammel ) ) );
PlaceItemIn( cont, 90, 35, MakeNewbie( new TreasureMap( 5, Map.Trammel ) ) );

PlaceItemIn( cont, 30, 50, MakeNewbie( new TreasureMap( 1, Map.Trammel ) ) );
PlaceItemIn( cont, 45, 50, MakeNewbie( new TreasureMap( 2, Map.Trammel ) ) );
PlaceItemIn( cont, 60, 50, MakeNewbie( new TreasureMap( 3, Map.Trammel ) ) );
PlaceItemIn( cont, 75, 50, MakeNewbie( new TreasureMap( 4, Map.Trammel ) ) );
PlaceItemIn( cont, 90, 50, MakeNewbie( new TreasureMap( 5, Map.Trammel ) ) );

PlaceItemIn( cont, 55, 100, MakeNewbie( new Lockpick( 30 ) ) );
PlaceItemIn( cont, 60, 100, MakeNewbie( new Pickaxe() ) );

PlaceItemIn( bank, 98, 124, cont );
// End bag of treasure maps


// Begin bag of raw materials
cont = new Bag();
cont.Hue = 0x835;
cont.Name = "Raw Materials Bag";

PlaceItemIn( cont, 92, 60, MakeNewbie( new BarbedLeather( 5000 ) ) );
PlaceItemIn( cont, 92, 68, MakeNewbie( new HornedLeather( 5000 ) ) );
PlaceItemIn( cont, 92, 76, MakeNewbie( new SpinedLeather( 5000 ) ) );
PlaceItemIn( cont, 92, 84, MakeNewbie( new Leather( 5000 ) ) );

PlaceItemIn( cont, 30, 118, MakeNewbie( new Cloth( 5000 ) ) );
PlaceItemIn( cont, 30, 84, MakeNewbie( new Board( 5000 ) ) );
PlaceItemIn( cont, 57, 80, MakeNewbie( new BlankScroll( 500 ) ) );

PlaceItemIn( cont, 30, 35, MakeNewbie( new DullCopperIngot( 5000 ) ) );
PlaceItemIn( cont, 37, 35, MakeNewbie( new ShadowIronIngot( 5000 ) ) );
PlaceItemIn( cont, 44, 35, MakeNewbie( new CopperIngot( 5000 ) ) );
PlaceItemIn( cont, 51, 35, MakeNewbie( new BronzeIngot( 5000 ) ) );
PlaceItemIn( cont, 58, 35, MakeNewbie( new GoldIngot( 5000 ) ) );
PlaceItemIn( cont, 65, 35, MakeNewbie( new AgapiteIngot( 5000 ) ) );
PlaceItemIn( cont, 72, 35, MakeNewbie( new VeriteIngot( 5000 ) ) );
PlaceItemIn( cont, 79, 35, MakeNewbie( new ValoriteIngot( 5000 ) ) );
PlaceItemIn( cont, 86, 35, MakeNewbie( new IronIngot( 5000 ) ) );

PlaceItemIn( cont, 30, 59, MakeNewbie( new RedScales( 5000 ) ) );
PlaceItemIn( cont, 36, 59, MakeNewbie( new YellowScales( 5000 ) ) );
PlaceItemIn( cont, 42, 59, MakeNewbie( new BlackScales( 5000 ) ) );
PlaceItemIn( cont, 48, 59, MakeNewbie( new GreenScales( 5000 ) ) );
PlaceItemIn( cont, 54, 59, MakeNewbie( new WhiteScales( 5000 ) ) );
PlaceItemIn( cont, 60, 59, MakeNewbie( new BlueScales( 5000 ) ) );

PlaceItemIn( bank, 98, 169, cont );
// End bag of raw materials


// Begin bag of spell casting stuff
cont = new Backpack();
cont.Hue = 0x480;
cont.Name = "Spell Casting Stuff";

PlaceItemIn( cont, 45, 105, new Spellbook( UInt64.MaxValue ) );
PlaceItemIn( cont, 65, 105, new NecromancerSpellbook( (UInt64)0xFFFF ) );
PlaceItemIn( cont, 85, 105, new BookOfChivalry( (UInt64)0x3FF ) );

Runebook runebook = new Runebook( 10 );
runebook.CurCharges = runebook.MaxCharges;
PlaceItemIn( cont, 105, 105, runebook );

Item toHue = new BagOfReagents( 150 );
toHue.Hue = 0x2D;
PlaceItemIn( cont, 45, 150, toHue );

toHue = new BagOfNecroReagents( 150 );
toHue.Hue = 0x488;
PlaceItemIn( cont, 65, 150, toHue );

PlaceItemIn( cont, 140, 150, new BagOfAllReagents( 500 ) );

for ( int i = 0; i < 9; ++i )
PlaceItemIn( cont, 45 + (i * 10), 75, MakeNewbie( new RecallRune() ) );

PlaceItemIn( bank, 78, 169, cont );
// End bag of spell casting stuff
}

private static void FillBankbox( Mobile m )
{
if ( Core.AOS )
{
FillBankAOS( m );
return;
}

BankBox bank = m.BankBox;

if ( bank != null )
{
bank.DropItem( new BankCheck( 1000000 ) );

// Full spellbook
Spellbook book = new Spellbook();

book.Content = ulong.MaxValue;

bank.DropItem( book );

Bag bag = new Bag();

for ( int i = 0; i < 5; ++i )
bag.DropItem( new Moonstone( MoonstoneType.Felucca ) );

// Felucca moonstones
bank.DropItem( bag );

bag = new Bag();

for ( int i = 0; i < 5; ++i )
bag.DropItem( new Moonstone( MoonstoneType.Trammel ) );

// Trammel moonstones
bank.DropItem( bag );

// Treasure maps
bank.DropItem( new TreasureMap( 1, Map.Trammel ) );
bank.DropItem( new TreasureMap( 2, Map.Trammel ) );
bank.DropItem( new TreasureMap( 3, Map.Trammel ) );
bank.DropItem( new TreasureMap( 4, Map.Trammel ) );
bank.DropItem( new TreasureMap( 5, Map.Trammel ) );

// Bag containing 50 of each reagent
bank.DropItem( new BagOfReagents( 50 ) );

// Craft tools
bank.DropItem( MakeNewbie( new Scissors() ) );
bank.DropItem( MakeNewbie( new SewingKit( 1000 ) ) );
bank.DropItem( MakeNewbie( new SmithHammer( 1000 ) ) );
bank.DropItem( MakeNewbie( new FletcherTools( 1000 ) ) );
bank.DropItem( MakeNewbie( new DovetailSaw( 1000 ) ) );
bank.DropItem( MakeNewbie( new MortarPestle( 1000 ) ) );
bank.DropItem( MakeNewbie( new ScribesPen( 1000 ) ) );
bank.DropItem( MakeNewbie( new TinkerTools( 1000 ) ) );

// A few dye tubs
bank.DropItem( new Dyes() );
bank.DropItem( new DyeTub() );
bank.DropItem( new DyeTub() );
bank.DropItem( new BlackDyeTub() );

DyeTub darkRedTub = new DyeTub();

darkRedTub.DyedHue = 0x485;
darkRedTub.Redyable = false;

bank.DropItem( darkRedTub );

// Some food
bank.DropItem( MakeNewbie( new Apple( 1000 ) ) );

// Resources
bank.DropItem( MakeNewbie( new Feather( 1000 ) ) );
bank.DropItem( MakeNewbie( new BoltOfCloth( 1000 ) ) );
bank.DropItem( MakeNewbie( new BlankScroll( 1000 ) ) );
bank.DropItem( MakeNewbie( new Hides( 1000 ) ) );
bank.DropItem( MakeNewbie( new Bandage( 1000 ) ) );
bank.DropItem( MakeNewbie( new Bottle( 1000 ) ) );
bank.DropItem( MakeNewbie( new Log( 1000 ) ) );

bank.DropItem( MakeNewbie( new IronIngot( 5000 ) ) );
bank.DropItem( MakeNewbie( new DullCopperIngot( 5000 ) ) );
bank.DropItem( MakeNewbie( new ShadowIronIngot( 5000 ) ) );
bank.DropItem( MakeNewbie( new CopperIngot( 5000 ) ) );
bank.DropItem( MakeNewbie( new BronzeIngot( 5000 ) ) );
bank.DropItem( MakeNewbie( new GoldIngot( 5000 ) ) );
bank.DropItem( MakeNewbie( new AgapiteIngot( 5000 ) ) );
bank.DropItem( MakeNewbie( new VeriteIngot( 5000 ) ) );
bank.DropItem( MakeNewbie( new ValoriteIngot( 5000 ) ) );

// Reagents
bank.DropItem( MakeNewbie( new BlackPearl( 1000 ) ) );
bank.DropItem( MakeNewbie( new Bloodmoss( 1000 ) ) );
bank.DropItem( MakeNewbie( new Garlic( 1000 ) ) );
bank.DropItem( MakeNewbie( new Ginseng( 1000 ) ) );
bank.DropItem( MakeNewbie( new MandrakeRoot( 1000 ) ) );
bank.DropItem( MakeNewbie( new Nightshade( 1000 ) ) );
bank.DropItem( MakeNewbie( new SulfurousAsh( 1000 ) ) );
bank.DropItem( MakeNewbie( new SpidersSilk( 1000 ) ) );

// Some extra starting gold
bank.DropItem( MakeNewbie( new Gold( 9000 ) ) );

// 5 blank recall runes
for ( int i = 0; i < 5; ++i )
bank.DropItem( MakeNewbie( new RecallRune() ) );

AddPowerScrolls( bank );
}
}

private static void AddPowerScrolls( BankBox bank )
{
Bag bag = new Bag();

for ( int i = 0; i < PowerScroll.Skills.Length; ++i )
bag.DropItem( new PowerScroll( PowerScroll.Skills[i], 120.0 ) );

bag.DropItem( new StatCapScroll( 250 ) );

bank.DropItem( bag );
}

private static void AddShirt( Mobile m, int shirtHue )
{
int hue = Utility.ClipDyedHue( shirtHue & 0x3FFF );

switch ( Utility.Random( 3 ) )
{
case 0: EquipItem( new Shirt( hue ), true ); break;
case 1: EquipItem( new FancyShirt( hue ), true ); break;
case 2: EquipItem( new Doublet( hue ), true ); break;
}
}

private static void AddPants( Mobile m, int pantsHue )
{
int hue = Utility.ClipDyedHue( pantsHue & 0x3FFF );

if ( m.Female )
{
switch ( Utility.Random( 2 ) )
{
case 0: EquipItem( new Skirt( hue ), true ); break;
case 1: EquipItem( new Kilt( hue ), true ); break;
}
}
else
{
switch ( Utility.Random( 2 ) )
{
case 0: EquipItem( new LongPants( hue ), true ); break;
case 1: EquipItem( new ShortPants( hue ), true ); break;
}
}
}

private static void AddShoes( Mobile m )
{
EquipItem( new Shoes( Utility.RandomYellowHue() ), true );
}

private static void AddHair( Mobile m, int itemID, int hue )
{
Item item;

switch ( itemID & 0x3FFF )
{
case 0x2044: item = new Mohawk( hue ); break;
case 0x2045: item = new PageboyHair( hue ); break;
case 0x2046: item = new BunsHair( hue ); break;
case 0x2047: item = new Afro( hue ); break;
case 0x2048: item = new ReceedingHair( hue ); break;
case 0x2049: item = new TwoPigTails( hue ); break;
case 0x204A: item = new KrisnaHair( hue ); break;
case 0x203B: item = new ShortHair( hue ); break;
case 0x203C: item = new LongHair( hue ); break;
case 0x203D: item = new PonyTail( hue ); break;
default: return;
}

m.AddItem( item );
}

private static void AddBeard( Mobile m, int itemID, int hue )
{
if ( m.Female )
return;

Item item;

switch ( itemID & 0x3FFF )
{
case 0x203E: item = new LongBeard( hue ); break;
case 0x203F: item = new ShortBeard( hue ); break;
case 0x2040: item = new Goatee( hue ); break;
case 0x2041: item = new Mustache( hue ); break;
case 0x204B: item = new MediumShortBeard( hue ); break;
case 0x204C: item = new MediumLongBeard( hue ); break;
case 0x204D: item = new Vandyke( hue ); break;
default: return;
}

m.AddItem( item );
}

private static Mobile CreateMobile( Account a )
{
for ( int i = 0; i < 5; ++i )
if ( a[i] == null )
return (a[i] = new PlayerMobile());

return null;
}

private static void EventSink_CharacterCreated( CharacterCreatedEventArgs args )
{
Mobile newChar = CreateMobile( args.Account as Account );

if ( newChar == null )
{
Console.WriteLine( "Login: {0}: Character creation failed, account full", args.State );
return;
}

args.Mobile = newChar;
m_Mobile = newChar;

newChar.Player = true;
newChar.AccessLevel = ((Account)args.Account).AccessLevel;
newChar.Female = args.Female;
newChar.Body = newChar.Female ? 0x191 : 0x190;
newChar.Hue = Utility.ClipSkinHue( args.Hue & 0x3FFF ) | 0x8000;
newChar.Hunger = 20;
newChar.SkillsCap = 12000; //edited
newChar.StatCap = 375; //edited

SetName( newChar, args.Name );

AddBackpack( newChar );

SetStats( newChar, args.Str, args.Dex, args.Int );
SetSkills( newChar, args.Skills, args.Profession );

AddHair( newChar, args.HairID, Utility.ClipHairHue( args.HairHue & 0x3FFF ) );
AddBeard( newChar, args.BeardID, Utility.ClipHairHue( args.BeardHue & 0x3FFF ) );

if ( !Core.AOS || (args.Profession != 4 && args.Profession != 5) )
{
AddShirt( newChar, args.ShirtHue );
AddPants( newChar, args.PantsHue );
AddShoes( newChar );
}

FillBankbox( newChar );

//CityInfo city = args.City;
CityInfo city = new CityInfo( "Dungeon", "Starting Place", 6032, 400, 22 );

newChar.Location = city.Location;
newChar.Map = Map.Felucca;

Console.WriteLine( "Login: {0}: New character being created (account={1})", args.State, ((Account)args.Account).Username );
Console.WriteLine( " - Character: {0} (serial={1})", newChar.Name, newChar.Serial );
Console.WriteLine( " - Started: {0} {1}", city.City, city.Location );

new WelcomeTimer( newChar ).Start();
}

private static void FixStats( ref int str, ref int dex, ref int intel )
{
int vStr = str - 10;
int vDex = dex - 10;
int vInt = intel - 10;

if ( vStr < 0 )
vStr = 0;

if ( vDex < 0 )
vDex = 0;

if ( vInt < 0 )
vInt = 0;

int total = vStr + vDex + vInt;

if ( total == 0 || total == 50 )
return;

double scalar = 50 / (double)total;

vStr = (int)(vStr * scalar);
vDex = (int)(vDex * scalar);
vInt = (int)(vInt * scalar);

FixStat( ref vStr, (vStr + vDex + vInt) - 50 );
FixStat( ref vDex, (vStr + vDex + vInt) - 50 );
FixStat( ref vInt, (vStr + vDex + vInt) - 50 );

str = vStr + 10;
dex = vDex + 10;
intel = vInt + 10;
}

private static void FixStat( ref int stat, int diff )
{
stat += diff;

if ( stat < 0 )
stat = 0;
else if ( stat > 50 )
stat = 50;
}

private static void SetStats( Mobile m, int str, int dex, int intel )
{
FixStats( ref str, ref dex, ref intel );

if ( str < 10 || str > 60 || dex < 10 || dex > 60 || intel < 10 || intel > 60 || (str + dex + intel) != 80 )
{
str = 10;
dex = 10;
intel = 10;
}

m.InitStats( str, dex, intel );
}

private static void SetName( Mobile m, string name )
{
name = name.Trim();

if ( !NameVerification.Validate( name, 2, 16, true, true, true, 1, NameVerification.SpaceDashPeriodQuote ) )
name = "Generic Player";

m.Name = name;
}

private static bool ValidSkills( SkillNameValue[] skills )
{
int total = 0;

for ( int i = 0; i < skills.Length; ++i )
{
if ( skills[i].Value < 0 || skills[i].Value > 50 )
return false;

total += skills[i].Value;

for ( int j = i + 1; j < skills.Length; ++j )
{
if ( skills[j].Value > 0 && skills[j].Name == skills[i].Name )
return false;
}
}

return ( total == 100 );
}

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
{
if ( !Core.AOS )
goto default;

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
{
if ( !Core.AOS )
goto default;

skills = new SkillNameValue[]
{
new SkillNameValue( SkillName.Chivalry, 51 ),
new SkillNameValue( SkillName.Swords, 49 ),
new SkillNameValue( SkillName.Focus, 30 ),
new SkillNameValue( SkillName.Tactics, 30 )
};

break;
}
default:
{
if ( !ValidSkills( skills ) )
return;

break;
}
}

bool addSkillItems = true;

switch ( prof )
{
case 1: // Warrior
{
EquipItem( new LeatherChest() );
break;
}
case 4: // Necromancer
{
Container regs = new BagOfNecroReagents( 50 );

if ( !Core.AOS )
{
foreach ( Item item in regs.Items )
item.LootType = LootType.Newbied;
}

PackItem( regs );

regs.LootType = LootType.Regular;

EquipItem( new BoneHarvester() );
EquipItem( new BoneHelm() );

EquipItem( NecroHue( new LeatherChest() ) );
EquipItem( NecroHue( new LeatherArms() ) );
EquipItem( NecroHue( new LeatherGloves() ) );
EquipItem( NecroHue( new LeatherGorget() ) );
EquipItem( NecroHue( new LeatherLegs() ) );
EquipItem( NecroHue( new Skirt() ) );
EquipItem( new Sandals( 0x8FD ) );

Spellbook book = new NecromancerSpellbook( (ulong)0x8981 ); // animate dead, evil omen, pain spike, summon familiar, wraith form

PackItem( book );

book.LootType = LootType.Blessed;

addSkillItems = false;

break;
}
case 5: // Paladin
{
EquipItem( new Broadsword() );
EquipItem( new Helmet() );
EquipItem( new PlateGorget() );
EquipItem( new RingmailArms() );
EquipItem( new RingmailChest() );
EquipItem( new RingmailLegs() );
EquipItem( new ThighBoots( 0x748 ) );
EquipItem( new Cloak( 0xCF ) );
EquipItem( new BodySash( 0xCF ) );

Spellbook book = new BookOfChivalry( (ulong)0x3FF );

PackItem( book );

book.LootType = LootType.Blessed;

break;
}
}

for ( int i = 0; i < skills.Length; ++i )
{
SkillNameValue snv = skills[i];

if ( snv.Value > 0 && snv.Name != SkillName.Stealth && snv.Name != SkillName.RemoveTrap )
{
Skill skill = m.Skills[snv.Name];

if ( skill != null )
{
skill.BaseFixedPoint = snv.Value * 10;

if ( addSkillItems )
AddSkillItems( snv.Name );
}
}
}
}

private static void EquipItem( Item item )
{
EquipItem( item, false );
}

private static void EquipItem( Item item, bool mustEquip )
{
if ( !Core.AOS )
item.LootType = LootType.Newbied;

if ( m_Mobile != null && m_Mobile.EquipItem( item ) )
return;

Container pack = m_Mobile.Backpack;

if ( !mustEquip && pack != null )
pack.DropItem( item );
else
item.Delete();
}

private static void PackItem( Item item )
{
if ( !Core.AOS )
item.LootType = LootType.Newbied;

Container pack = m_Mobile.Backpack;

if ( pack != null )
pack.DropItem( item );
else
item.Delete();
}

private static void PackInstrument()
{
switch ( Utility.Random( 6 ) )
{
case 0: PackItem( new Drums() ); break;
case 1: PackItem( new Harp() ); break;
case 2: PackItem( new LapHarp() ); break;
case 3: PackItem( new Lute() ); break;
case 4: PackItem( new Tambourine() ); break;
case 5: PackItem( new TambourineTassel() ); break;
}
}

private static void PackScroll( int circle )
{
switch ( Utility.Random( 8 ) * (circle * 8) )
{
case 0: PackItem( new ClumsyScroll() ); break;
case 1: PackItem( new CreateFoodScroll() ); break;
case 2: PackItem( new FeeblemindScroll() ); break;
case 3: PackItem( new HealScroll() ); break;
case 4: PackItem( new MagicArrowScroll() ); break;
case 5: PackItem( new NightSightScroll() ); break;
case 6: PackItem( new ReactiveArmorScroll() ); break;
case 7: PackItem( new WeakenScroll() ); break;
case 8: PackItem( new AgilityScroll() ); break;
case 9: PackItem( new CunningScroll() ); break;
case 10: PackItem( new CureScroll() ); break;
case 11: PackItem( new HarmScroll() ); break;
case 12: PackItem( new MagicTrapScroll() ); break;
case 13: PackItem( new MagicUnTrapScroll() ); break;
case 14: PackItem( new ProtectionScroll() ); break;
case 15: PackItem( new StrengthScroll() ); break;
case 16: PackItem( new BlessScroll() ); break;
case 17: PackItem( new FireballScroll() ); break;
case 18: PackItem( new MagicLockScroll() ); break;
case 19: PackItem( new PoisonScroll() ); break;
case 20: PackItem( new TelekinisisScroll() ); break;
case 21: PackItem( new TeleportScroll() ); break;
case 22: PackItem( new UnlockScroll() ); break;
case 23: PackItem( new WallOfStoneScroll() ); break;
}
}

private static Item NecroHue( Item item )
{
item.Hue = 0x2C3;

return item;
}

private static void AddSkillItems( SkillName skill )
{
switch ( skill )
{
case SkillName.Alchemy:
{
PackItem( new Bottle( 4 ) );
PackItem( new MortarPestle() );
EquipItem( new Robe( Utility.RandomPinkHue() ) );
break;
}
case SkillName.Anatomy:
{
PackItem( new Bandage( 3 ) );
EquipItem( new Robe( Utility.RandomYellowHue() ) );
break;
}
case SkillName.AnimalLore:
{
EquipItem( new ShepherdsCrook() );
EquipItem( new Robe( Utility.RandomBlueHue() ) );
break;
}
case SkillName.Archery:
{
PackItem( new Arrow( 25 ) );
EquipItem( new Bow() );
break;
}
case SkillName.ArmsLore:
{
switch ( Utility.Random( 3 ) )
{
case 0: EquipItem( new Kryss() ); break;
case 1: EquipItem( new Katana() ); break;
case 2: EquipItem( new Club() ); break;
}

break;
}
case SkillName.Begging:
{
EquipItem( new GnarledStaff() );
break;
}
case SkillName.Blacksmith:
{
PackItem( new Tongs() );
PackItem( new Pickaxe() );
PackItem( new Pickaxe() );
PackItem( new IronIngot( 50 ) );
EquipItem( new HalfApron( Utility.RandomYellowHue() ) );
break;
}
case SkillName.Fletching:
{
PackItem( new Board( 14 ) );
PackItem( new Feather( 5 ) );
PackItem( new Shaft( 5 ) );
break;
}
case SkillName.Camping:
{
// TODO: Bedroll
PackItem( new Kindling( 5 ) );
break;
}
case SkillName.Carpentry:
{
PackItem( new Board( 10 ) );
PackItem( new Saw() );
EquipItem( new HalfApron( Utility.RandomYellowHue() ) );
break;
}
case SkillName.Cartography:
{
PackItem( new BlankMap() );
PackItem( new BlankMap() );
PackItem( new BlankMap() );
PackItem( new BlankMap() );
PackItem( new Sextant() );
break;
}
case SkillName.Cooking:
{
PackItem( new Kindling( 2 ) );
PackItem( new RawLambLeg() );
PackItem( new RawChickenLeg() );
PackItem( new RawFishSteak() );
PackItem( new SackFlour() );
PackItem( new Pitcher( BeverageType.Water ) );
break;
}
case SkillName.DetectHidden:
{
EquipItem( new Cloak( 0x455 ) );
break;
}
case SkillName.Discordance:
{
PackInstrument();
break;
}
case SkillName.Fencing:
{
EquipItem( new Kryss() );
break;
}
case SkillName.Fishing:
{
EquipItem( new FishingPole() );
EquipItem( new FloppyHat( Utility.RandomYellowHue() ) );
break;
}
case SkillName.Healing:
{
PackItem( new Bandage( 50 ) );
PackItem( new Scissors() );
break;
}
case SkillName.Herding:
{
EquipItem( new ShepherdsCrook() );
break;
}
case SkillName.Hiding:
{
EquipItem( new Cloak( 0x455 ) );
break;
}
case SkillName.Inscribe:
{
PackItem( new BlankScroll( 2 ) );
PackItem( new BlueBook() );
break;
}
case SkillName.ItemID:
{
EquipItem( new GnarledStaff() );
break;
}
case SkillName.Lockpicking:
{
PackItem( new Lockpick( 20 ) );
break;
}
case SkillName.Lumberjacking:
{
EquipItem( new Hatchet() );
break;
}
case SkillName.Macing:
{
EquipItem( new Club() );
break;
}
case SkillName.Magery:
{
BagOfReagents regs = new BagOfReagents( 30 );

if ( !Core.AOS )
{
foreach ( Item item in regs.Items )
item.LootType = LootType.Newbied;
}

PackItem( regs );

regs.LootType = LootType.Regular;

PackScroll( 0 );
PackScroll( 1 );
PackScroll( 2 );

Spellbook book = new Spellbook( (ulong)0x382A8C38 );

EquipItem( book );

book.LootType = LootType.Blessed;

EquipItem( new Robe( Utility.RandomBlueHue() ) );
EquipItem( new WizardsHat() );

break;
}
case SkillName.Mining:
{
PackItem( new Pickaxe() );
break;
}
case SkillName.Musicianship:
{
PackInstrument();
break;
}
case SkillName.Parry:
{
EquipItem( new WoodenShield() );
break;
}
case SkillName.Peacemaking:
{
PackInstrument();
break;
}
case SkillName.Poisoning:
{
PackItem( new LesserPoisonPotion() );
PackItem( new LesserPoisonPotion() );
break;
}
case SkillName.Provocation:
{
PackInstrument();
break;
}
case SkillName.Snooping:
{
PackItem( new Lockpick( 20 ) );
break;
}
case SkillName.SpiritSpeak:
{
EquipItem( new Cloak( 0x455 ) );
break;
}
case SkillName.Stealing:
{
PackItem( new Lockpick( 20 ) );
break;
}
case SkillName.Swords:
{
EquipItem( new Katana() );
break;
}
case SkillName.Tactics:
{
EquipItem( new Katana() );
break;
}
case SkillName.Tailoring:
{
PackItem( new BoltOfCloth() );
PackItem( new SewingKit() );
break;
}
case SkillName.Tracking:
{
if ( m_Mobile != null )
{
Item shoes = m_Mobile.FindItemOnLayer( Layer.Shoes );

if ( shoes != null )
shoes.Delete();
}

EquipItem( new Boots( Utility.RandomYellowHue() ) );
EquipItem( new SkinningKnife() );
break;
}
case SkillName.Veterinary:
{
PackItem( new Bandage( 5 ) );
PackItem( new Scissors() );
break;
}
case SkillName.Wrestling:
{
EquipItem( new LeatherGloves() );
break;
}
}
}
}
}[/code:1]

and here its our GameRegion.cs from the ctf game that we think mayb its interfeering:

[code:1]using Server;
using System;
using Server.Items;
using System.Collections;
using Server.Spells.Third;
using Server.Spells.Fifth;
using Server.Spells.Eighth;
using Server.Spells.Fourth;
using Server.Spells.Sixth;
using Server.Spells.Seventh;
using Server.Spells.Necromancy;
using Server.Spells.Chivalry;
using System.Text;

namespace Server.Regions
{
public class CtfGameRegion : Region
{
public static void Initialize()
{
Region.AddRegion( new CtfGameRegion() );
}

public CtfGameRegion() : base( "", "CTF Game", Map.Felucca )
{
Priority = Region.HighestPriority;
LoadFromXml = false;

this.Coords = new ArrayList( 1 );
this.Coords.Add( new Rectangle2D( 5984 ,400, 100, 100 ) );//ctf ( topleft, bottomright, width, height )
this.Coords.Add( new Rectangle2D( 5944, 454, 96, 95 ) );//dd ( topleft, bottomright, width, height )
}

public override bool CanUseStuckMenu( Mobile m )
{
return false;
}

public override bool OnBeginSpellCast( Mobile m, ISpell s )
{
if ( m.AccessLevel == AccessLevel.Player &&
( s is MarkSpell || s is RecallSpell || s is GateTravelSpell || s is PolymorphSpell ||
s is SummonDaemonSpell || s is AirElementalSpell || s is EarthElementalSpell || s is EnergyVortexSpell ||
s is FireElementalSpell || s is WaterElementalSpell || s is BladeSpiritsSpell || s is SummonCreatureSpell || s is VengefulSpiritSpell || s is SummonFamiliarSpell || s is SacredJourneySpell || s is ParalyzeFieldSpell || s is EnergyFieldSpell || s is WallOfStoneSpell ) )
{
m.SendMessage( "That spell is not allowed." );
return false;
}
else
return base.OnBeginSpellCast( m, s );
}

public override bool AllowHousing( Mobile from, Point3D p )
{
if ( from.AccessLevel == AccessLevel.Player )
return false;
else
return true;
}

/*public override double LightLevel( Mobile m, double level )
{
return LightCycle.DungeonLevel;
} */

public override bool OnSingleClick( Mobile from, object o )
{
if ( o is Mobile )
{
Mobile m = (Mobile)o;

for (int i=0;i<CTFGame.Registry.Count;i++)
{
CTFGame game = (CTFGame)CTFGame.Registry[i];
CTFTeam team = game.FindTeam( m );
if ( team != null )
{
string msg;
Item[] items;

if ( m.Backpack != null )
items = m.Backpack.FindItemsByType(typeof(CTFFlag));
else
items = new Item[0];

if ( items.Length == 0 )
{
msg = String.Format( "(Team: {0})", team.Name );
}
else
{
StringBuilder sb = new StringBuilder("(Team: " );
sb.Append( team.Name );
sb.Append( "; Flag" );
if ( items.Length > 1 )
sb.Append( "s" );
sb.Append( ": " );

for(int j=0;j<items.Length;j++)
{
CTFFlag flag = (CTFFlag)items[j];

if ( flag != null && flag.Team != null )
{
if ( j > 0 )
sb.Append( ", " );

sb.Append( flag.Team.Name );
}
}

sb.Append( ")" );

msg = sb.ToString();
}
m.PrivateOverheadMessage( Network.MessageType.Regular, team.Hue, true, msg, from.NetState );
break;
}
}
}
return true;
}
}
}
[/code:1]

help!
__________________
Quote:
Originally Posted by Phantom
Alright I am wrong :-)
OMG :shock:
cool_dem is offline   Reply With Quote
Old 12-22-2003, 02:03 PM   #2 (permalink)
Account Terminated
 
Join Date: Sep 2002
Age: 26
Posts: 3,846
Send a message via ICQ to Phantom Send a message via AIM to Phantom Send a message via MSN to Phantom
Default

I hope the client is 4.0.1b correct?
Phantom is offline   Reply With Quote
Old 12-22-2003, 04:04 PM   #3 (permalink)
 
Join Date: Jul 2003
Location: Portugal
Posts: 179
Send a message via ICQ to cool_dem Send a message via MSN to cool_dem
Default

yes, its 4.0.1b
__________________
Quote:
Originally Posted by Phantom
Alright I am wrong :-)
OMG :shock:
cool_dem is offline   Reply With Quote
Old 12-22-2003, 04:08 PM   #4 (permalink)
 
Join Date: Jul 2003
Location: Portugal
Posts: 179
Send a message via ICQ to cool_dem Send a message via MSN to cool_dem
Default

one weird thing, it only happens to me... :x

what could it be? one of the other gms has 4.0.1b and logins cool
__________________
Quote:
Originally Posted by Phantom
Alright I am wrong :-)
OMG :shock:
cool_dem is offline   Reply With Quote
Old 12-22-2003, 04:08 PM   #5 (permalink)
 
Join Date: Oct 2002
Age: 23
Posts: 4,689
Default

Basically the client sent a packet that a player (mobile) would send, before actually being in-game. (Somewhere after selecting or creating a character, and before seeing stuff in-game)

if this is a script error.. wrong forum?
XxSP1DERxX is offline   Reply With Quote
Old 12-22-2003, 04:11 PM   #6 (permalink)
 
Join Date: Oct 2002
Age: 23
Posts: 4,689
Default

Does this happen when creating a character or logging in?

Everything looks fine in both files.. but maybe i overlooked something.
XxSP1DERxX is offline   Reply With Quote
Old 12-22-2003, 04:19 PM   #7 (permalink)
 
Join Date: Oct 2003
Posts: 78
Send a message via ICQ to TremerePuck Send a message via AIM to TremerePuck Send a message via MSN to TremerePuck Send a message via Yahoo to TremerePuck
Default

I see this error ALOT. But it usually does nothing more than cause a slight delay on log in. Occasionaly the person will have to try again. Seems to happen more with 3d than 2d.
__________________
Discover "What Dreams May Come"
http://uo.gamingrealms.com
uog://2F201CAB3A88656BEE7EBDBAE6DEF8A5
TremerePuck is offline   Reply With Quote
Old 12-22-2003, 04:22 PM   #8 (permalink)
 
Join Date: Jul 2003
Location: Portugal
Posts: 179
Send a message via ICQ to cool_dem Send a message via MSN to cool_dem
Default

only on creating character, and it causes the client to stay at "creating character..." forever..
__________________
Quote:
Originally Posted by Phantom
Alright I am wrong :-)
OMG :shock:
cool_dem is offline   Reply With Quote
Old 12-22-2003, 04:26 PM   #9 (permalink)
Account Terminated
 
Join Date: Sep 2002
Age: 26
Posts: 3,846
Send a message via ICQ to Phantom Send a message via AIM to Phantom Send a message via MSN to Phantom
Default

Nothing you can do about it, shouldn't worry about it.
Phantom is offline   Reply With Quote
Old 12-22-2003, 04:40 PM   #10 (permalink)
 
Join Date: Jul 2003
Location: Portugal
Posts: 179
Send a message via ICQ to cool_dem Send a message via MSN to cool_dem
Default

´why shoudnt i worry bout? some times i need to create new chars to test some scripts and with this bug i cant... if someone knows a fix for it plz tell me....
__________________
Quote:
Originally Posted by Phantom
Alright I am wrong :-)
OMG :shock:
cool_dem is offline   Reply With Quote
Old 12-22-2003, 05:15 PM   #11 (permalink)
 
Join Date: Jul 2003
Location: Portugal
Posts: 179
Send a message via ICQ to cool_dem Send a message via MSN to cool_dem
Default

i fixed it by re-installing uo...
__________________
Quote:
Originally Posted by Phantom
Alright I am wrong :-)
OMG :shock:
cool_dem is offline   Reply With Quote
Old 01-03-2004, 11:33 AM   #12 (permalink)
 
Join Date: Jun 2003
Posts: 12
Default

"only on creating character, and it causes the client to stay at "creating character..." forever.." - I have this problem too!!! Maybe any one know how fix it???
Rool_Ra is offline   Reply With Quote
Old 01-03-2004, 11:36 AM   #13 (permalink)
Forum Expert
 
Join Date: Oct 2002
Age: 26
Posts: 1,797
Default

Use 2d.
I've only ever seen this error with 3d clients.
__________________
New shard coming soon!
Voran is offline   Reply With Quote
Old 01-03-2004, 11:45 AM   #14 (permalink)
 
Join Date: Jun 2003
Posts: 12
Default

Quote:
Originally Posted by Voran
Use 2d.
I've only ever seen this error with 3d clients.
But when I use my 3d client for creating characterson the other RunUO servers - all work fine.
I have problem when i try create character on my shard only :((((

P.S.
I use custom map...(I think its problem with "starting location point")
And, if I try many(more than 15) times create character, its done.....
Sorry about my English.
Rool_Ra is offline   Reply With Quote
Reply

Bookmarks


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On