squrriel

Anything regarding UO or Age of Valor
Locked
ninja2007
Posts: 412
Joined: Tue Aug 21, 2007 7:38 am

squrriel

Post by ninja2007 »

squrriel

what C# progam do you use to code ?[/u]

Archived topic from AOV, old topic ID:2636, old post ID:16819
User avatar
Death
Posts: 7919
Joined: Thu Sep 30, 2004 10:12 pm

squrriel

Post by Death »

ninja2007 wrote:squrriel

what C# progam do you use to code ?[/u]
Your favorite text editor or dev environment

Archived topic from AOV, old topic ID:2636, old post ID:16820
User avatar
Red Squirrel
Posts: 29209
Joined: Wed Dec 18, 2002 12:14 am
Location: Northern Ontario
Contact:

squrriel

Post by Red Squirrel »

notepad++

And for core compilation I use this batch file:

Code: Select all

@echo off

SET Path=C:WINDOWSMicrosoft.NETFrameworkv2.0.50727

csc.exe /out:.RunUO.exe /recurse:RunuoAoV*.cs /win32icon:RunuoAoV
unuo.ico /unsafe /debug /optimize

copy runuo.exe ..
ewfiles
unuo.exe

echo done
pause
Archived topic from AOV, old topic ID:2636, old post ID:16825
Honk if you love Jesus, text if you want to meet Him!
ninja2007
Posts: 412
Joined: Tue Aug 21, 2007 7:38 am

squrriel

Post by ninja2007 »

can you pm me some example scripts like Arties and junk like that

Archived topic from AOV, old topic ID:2636, old post ID:16840
User avatar
Red Squirrel
Posts: 29209
Joined: Wed Dec 18, 2002 12:14 am
Location: Northern Ontario
Contact:

squrriel

Post by Red Squirrel »

if you download the runuo package you can see how some of the stuff is done.

We changed tons of stuff, but our core/sources are not publicly available. (I don't want a bunch of "AoV clones" :P)

But I don't mind releasing a few scripts here and there.

This is how the recipes work:

Code: Select all

using System;
using Server.Items;

namespace Server.Items
{
	public class  SpellWovenBritchesRecipe : BaseRecipe
	{
	
		[Constructable]
		public SpellWovenBritchesRecipe()
		{		
		//InitRequirements();
		}
		
		
		//overrides:
		
		public override Type CraftedItem { get { return typeof(SpellWovenBritches); } }
		public override string artyname { get { return "Spell Woven Britches"; } }
		
		
	
		public override void InitRequirements()
		{
		base.InitRequirements(); //MUST be first! 
		
		//add required skills:
		
		RequiredSkills.Add(new ReqSkill(SkillName.Tailoring,92.5));
		
		//add required resources
		
		CommonResources.Add(new ReqRes("regular leather",typeof(Leather),15));
		
		RareResources.Add(new ReqRes("Eye of the travesty",typeof(EyeOfTheTravesty),1));		
		RareResources.Add(new ReqRes("Putrefaction",typeof(Putrefaction),10));		
		RareResources.Add(new ReqRes("Scourge",typeof(Scourge),10));		
		}	

			
	
		public SpellWovenBritchesRecipe( Serial serial ) : base( serial )
		{
		}

		public override void Serialize( GenericWriter writer )
		{
			base.Serialize( writer );

			writer.Write( (int) 0 ); // version
		}

		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );

			int version = reader.ReadInt();
		}	
		
	}
	
	
	public class SpellWovenBritches : LeafLegs
	{
		public override int LabelNumber{ get{ return 1072929; } } // Spell Woven Britches

		public override int BaseFireResistance{ get{ return 15; } }
		public override int BasePoisonResistance{ get{ return 16; } }

		[Constructable]
		public SpellWovenBritches()
		{
			Hue = 0x487;

			SkillBonuses.SetValues( 0, SkillName.Meditation, 10.0 );

			Attributes.BonusInt = 8;
			Attributes.SpellDamage = 10;
			Attributes.LowerManaCost = 10;
		}

		public SpellWovenBritches( Serial serial ) : base( serial )
		{
		}

		public override void Serialize( GenericWriter writer )
		{
			base.Serialize( writer );

			writer.WriteEncodedInt( 0 );
		}

		public override void Deserialize(GenericReader reader)
		{
			base.Deserialize( reader );

			int version = reader.ReadEncodedInt();
		}
	}
}


And one of my favorites, peerless keys:

Code: Select all

using System;
using Server;
using Server.Items;

namespace Server.Items
{

	public class ChiefParoxysmusKey : basepeerlesskey
	{
	
		[Constructable]
		public ChiefParoxysmusKey(Map map) : base("Chief Paroxysmus","ChiefParoxysmus", new Point3D(6517,359,1),new Point3D(6518,365,56),map,
		new Rectangle2D( new Point2D(6494,346 ), new Point2D( 6553, 400 ) ) )
		{
		ItemID=3628;
		Hue=168;
		}
		
		[Constructable]
		public ChiefParoxysmusKey() : this(Map.Trammel)
		{
		}
		
		public ChiefParoxysmusKey( Serial serial ) : base( serial )
		{
		}
		
		public override void Serialize( GenericWriter writer )
		{
			base.Serialize( writer );
			writer.Write( (int) 0 );
		}
		
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );
			int version = reader.ReadInt();
		}
	}
	
	
	//used experimentally, not really used in game as the cauldron generates it
	public class ChiefParoxysmusKeyBag : peerlesskeybag
	{	
	
		[Constructable]
		public ChiefParoxysmusKeyBag() : base(new ChiefParoxysmusKey(), 3,1,1)
		{		
		}	
	
		public ChiefParoxysmusKeyBag( Serial serial ) : base( serial )
		{
		}
		
		public override void Serialize( GenericWriter writer )
		{
			base.Serialize( writer );
			writer.Write( (int) 0 );
		}
		
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );
			int version = reader.ReadInt();
		}	
	}	
	
	

}



You should of seen the original scripts for these. Was brutal. Was not in stock runuo but was downloaded from their public script section. Way back before I knew much about coding.

Really at this point theres maybe 1% of that code left. Like the gump, about it lol.

Archived topic from AOV, old topic ID:2636, old post ID:16841
Honk if you love Jesus, text if you want to meet Him!
Nosferatu
Posts: 797
Joined: Thu Mar 15, 2007 4:36 pm

squrriel

Post by Nosferatu »

I was just about to say that key script looks awwwfullly trimmed down lol

Archived topic from AOV, old topic ID:2636, old post ID:16843
What?
User avatar
Red Squirrel
Posts: 29209
Joined: Wed Dec 18, 2002 12:14 am
Location: Northern Ontario
Contact:

squrriel

Post by Red Squirrel »

big time, the originals used to have the teleport/summon coded in EACH ONE. O_o. Basepeerlesskey takes care of controlling the peerless session. Its about 1k lines long and that includes the region class as well.

Archived topic from AOV, old topic ID:2636, old post ID:16856
Honk if you love Jesus, text if you want to meet Him!
ninja2007
Posts: 412
Joined: Tue Aug 21, 2007 7:38 am

squrriel

Post by ninja2007 »

cannot download from RunUO cause there Database is still down :/ so just show me like axe of haven or something

Archived topic from AOV, old topic ID:2636, old post ID:16859
User avatar
Red Squirrel
Posts: 29209
Joined: Wed Dec 18, 2002 12:14 am
Location: Northern Ontario
Contact:

squrriel

Post by Red Squirrel »

This is the axe

Code: Select all

using System;
using Server;

namespace Server.Items
{
	public class AxeOfTheHeavens : DoubleAxe
	{
		public override int LabelNumber{ get{ return 1061106; } } // Axe of the Heavens
		public override int ArtifactRarity{ get{ return 11; } }

		public override int InitMinHits{ get{ return 255; } }
		public override int InitMaxHits{ get{ return 255; } }

		[Constructable]
		public AxeOfTheHeavens()
		{
			Hue = 0x4D5;
			WeaponAttributes.HitLightning = 50;
			Attributes.AttackChance = 15;
			Attributes.DefendChance = 15;
			Attributes.WeaponDamage = 50;
		}

		public AxeOfTheHeavens( Serial serial ) : base( serial )
		{
		}

		public override void Serialize( GenericWriter writer )
		{
			base.Serialize( writer );

			writer.Write( (int) 0 );
		}
		
		public override void Deserialize(GenericReader reader)
		{
			base.Deserialize( reader );

			int version = reader.ReadInt();
		}
	}
}

And they STILL have not fixed their download? Wasn't that broke, like over a week ago? lol.

Archived topic from AOV, old topic ID:2636, old post ID:16860
Honk if you love Jesus, text if you want to meet Him!
User avatar
Death
Posts: 7919
Joined: Thu Sep 30, 2004 10:12 pm

squrriel

Post by Death »

ninja2007 wrote:cannot download from RunUO cause there Database is still down :/ so just show me like axe of haven or something
LOL that makes me happy to know we don't depend on their scripts/distributions anymore.

It's been how long now? 2 and a half weeks?

Archived topic from AOV, old topic ID:2636, old post ID:16863
Nosferatu
Posts: 797
Joined: Thu Mar 15, 2007 4:36 pm

squrriel

Post by Nosferatu »

Code: Select all

using System;
using Server;
using Server.Items;
using Server.Mobiles;
using Server.Network;
using System.Collections;
using Server.ContextMenus;

namespace Server.Items
{
	public class AnArtifactChest : WoodenBox
	{
		[Constructable]
		public AnArtifactChest()
		{
			Hue = 1175;
			Movable = false;
			Name = "An Artifact Chest";
			GenerateTreasure();
		}

		public AnArtifactChest( Serial serial ) : base( serial )
		{
		}

		public override bool IsDecoContainer{ get{ return false; } }

		private void GenerateTreasure()
		{
			for ( int i = this.Items.Count - 1; i >= 0; i-- )
				this.Items[i].Delete();

			for ( int i = 0; i < 1; i++ )
			{
				switch ( Utility.Random( 31 ) )
				{
					case 0: DropItem( new LegacyOfTheDreadLord() ); break;
					case 1: DropItem( new TheTaskmaster() ); break;
					case 2: DropItem( new ArmorOfFortune() ); break;
					case 3: DropItem( new GauntletsOfNobility() ); break;
					case 4: DropItem( new HelmOfInsight() ); break;
					case 5: DropItem( new HolyKnightsBreastplate() ); break;
					case 6: DropItem( new JackalsCollar() ); break;
					case 7: DropItem( new LeggingsOfBane() ); break;
					case 8: DropItem( new MidnightBracers() ); break;
					case 9: DropItem( new OrnateCrownOfTheHarrower() ); break;
					case 10: DropItem( new ShadowDancerLeggings() ); break;
					case 11: DropItem( new TunicOfFire() ); break;
					case 12: DropItem( new VoiceOfTheFallenKing() ); break;
					case 13: DropItem( new BraceletOfHealth() ); break;
					case 14: DropItem( new OrnamentOfTheMagician() ); break;
					case 15: DropItem( new RingOfTheElements() ); break;
					case 16: DropItem( new RingOfTheVile() ); break;
					case 17: DropItem( new Aegis() ); break;
					case 18: DropItem( new ArcaneShield() ); break;
					case 19: DropItem( new AxeOfTheHeavens() ); break;
					case 20: DropItem( new BladeOfInsanity() ); break;
					case 21: DropItem( new BoneCrusher() ); break;
					case 22: DropItem( new Frostbringer() ); break;
					case 23: DropItem( new SerpentsFang() ); break;
					case 24: DropItem( new StaffOfTheMagi() ); break;
					case 25: DropItem( new TheBeserkersMaul() ); break;
					case 26: DropItem( new TheDryadBow() ); break;
					case 27: DropItem( new DivineCountenance() ); break;
					case 28: DropItem( new HatOfTheMagi() ); break;
					case 29: DropItem( new HuntersHeaddress() ); break;
					case 30: DropItem( new SpiritOfTheTotem() ); break;
				}
			}
		}

		public override bool CheckHold( Mobile m, Item item, bool message, bool checkItems, int plusItems, int plusWeight )
		{
			return false;
		}
			private Item m_item;
			public override void OnItemLifted( Mobile from, Item item )
		{
			PlayerMobile player = from as PlayerMobile;
			m_item = item;
			
			string message = String.Format( "You notice {0} Running Away With {1}", player.Name, m_item );

			
			foreach ( NetState ns in player.GetClientsInRange( 20 ) )
			{
				if ( ns != player.NetState )
				ns.Mobile.SendMessage( message );
				new AnArtifactChestTimer( item ).Start();
			}
			
			base.OnItemLifted (from, item);
			from.FixedParticles( 0x375A, 1, 17, 9919, 33, 7, EffectLayer.Waist );
		}

		public class AnArtifactChestTimer : Timer
		{
			private Item m_item;
			public AnArtifactChestTimer( Item item ) : base( TimeSpan.FromSeconds( 5.0 ) )
			{
				m_item = item;
			}
			protected override void OnTick()
			{
				new CursedTimer ( m_item ).Start();
				m_item.LootType = LootType.Cursed;
				Stop();
			}
            }

		public class CursedTimer : Timer
		{
			private Item m_item;
			public int cnt;

			public CursedTimer( Item item ) : base( TimeSpan.FromSeconds( 15.0 ), TimeSpan.FromSeconds( 15.0 ) )
			{
				m_item = item;
				cnt = 180;
			}
			protected override void OnTick()
			{
   			 if (cnt > 0)
   			{
      			  cnt -= 60;
    			}
    			else if (cnt <= 0)
    			{
        			cnt = 0;
        			m_item.LootType = LootType.Regular;
        			this.Stop();
    			}
		}
	}	
		public override void Serialize( GenericWriter writer )
		{
		base.Serialize( writer );

		writer.WriteEncodedInt( 0 ); // version
		}

		public override void Deserialize( GenericReader reader )
		{
		base.Deserialize( reader );

		int version = reader.ReadEncodedInt();

		Timer.DelayCall( TimeSpan.Zero, new TimerCallback( GenerateTreasure ) );
      		}
      }
}
behold the future of eliminating doom forever!!!

lol and the sloppiest coding i can possibly think to do!

yet it still curses the arty for the right time limit, and all players in the area are aware who has it xD

Archived topic from AOV, old topic ID:2636, old post ID:16897
What?
Locked