Kamras

Member
I'm looking to remove EVERY scroll from inscription and only permit non scroll items to be created, so that includes complete removal of magery/necromancy/mystic etc. However my problem is this.

It compiles just fine, when I attempt to open a scribes pen, the server immediately crashes and restarts.

I got flustered and reverted the changes, now I'm back with a clear mind but I no longer have the crash reports. I was curious if anyone has successfully done this and what their DefInscription looks like before I start the attempt again.

Any advice or direction would be appreciated.
 
What I would do is get the latest ServUO and remove or comment out the scrolls from Scripts\Services\Craft\DefInscription.cs
Edit: My reasoning behind using a clean server to test is to nullify any potential problems caused by any modifications to your current server files. This way you'll know if it's the edit to the script or other file(s) causing your problem, for the most part.

I've included a modified DefInscription.cs with this post showing how I commented out all the scrolls. I am able to launch the server and use the ScribesPen without the server crashing.
 

Attachments

  • DefInscription.cs
    21.3 KB · Views: 7
Last edited by a moderator:
If I got you right you would want to replace the InitCraftList method,
I added the changed one not sure if all is to your liking but you can comment / uncomment what you wish.

Code:
        public override void InitCraftList()
        {
            int index;
            /*m_Circle = 0;
			m_Mana = 4;

			AddSpell( typeof( ReactiveArmorScroll ), Reg.Garlic, Reg.SpidersSilk, Reg.SulfurousAsh );
			AddSpell( typeof( ClumsyScroll ), Reg.Bloodmoss, Reg.Nightshade );
			AddSpell( typeof( CreateFoodScroll ), Reg.Garlic, Reg.Ginseng, Reg.MandrakeRoot );
			AddSpell( typeof( FeeblemindScroll ), Reg.Nightshade, Reg.Ginseng );
			AddSpell( typeof( HealScroll ), Reg.Garlic, Reg.Ginseng, Reg.SpidersSilk );
			AddSpell( typeof( MagicArrowScroll ), Reg.SulfurousAsh );
			AddSpell( typeof( NightSightScroll ), Reg.SpidersSilk, Reg.SulfurousAsh );
			AddSpell( typeof( WeakenScroll ), Reg.Garlic, Reg.Nightshade );

			m_Circle = 1;
			m_Mana = 6;

			AddSpell( typeof( AgilityScroll ), Reg.Bloodmoss, Reg.MandrakeRoot );
			AddSpell( typeof( CunningScroll ), Reg.Nightshade, Reg.MandrakeRoot );
			AddSpell( typeof( CureScroll ), Reg.Garlic, Reg.Ginseng );
			AddSpell( typeof( HarmScroll ), Reg.Nightshade, Reg.SpidersSilk );
			AddSpell( typeof( MagicTrapScroll ), Reg.Garlic, Reg.SpidersSilk, Reg.SulfurousAsh );
			AddSpell( typeof( MagicUnTrapScroll ), Reg.Bloodmoss, Reg.SulfurousAsh );
			AddSpell( typeof( ProtectionScroll ), Reg.Garlic, Reg.Ginseng, Reg.SulfurousAsh );
			AddSpell( typeof( StrengthScroll ), Reg.Nightshade, Reg.MandrakeRoot );

			m_Circle = 2;
			m_Mana = 9;

			AddSpell( typeof( BlessScroll ), Reg.Garlic, Reg.MandrakeRoot );
			AddSpell( typeof( FireballScroll ), Reg.BlackPearl );
			AddSpell( typeof( MagicLockScroll ), Reg.Bloodmoss, Reg.Garlic, Reg.SulfurousAsh );
			AddSpell( typeof( PoisonScroll ), Reg.Nightshade );
			AddSpell( typeof( TelekinisisScroll ), Reg.Bloodmoss, Reg.MandrakeRoot );
			AddSpell( typeof( TeleportScroll ), Reg.Bloodmoss, Reg.MandrakeRoot );
			AddSpell( typeof( UnlockScroll ), Reg.Bloodmoss, Reg.SulfurousAsh );
			AddSpell( typeof( WallOfStoneScroll ), Reg.Bloodmoss, Reg.Garlic );

			m_Circle = 3;
			m_Mana = 11;

			AddSpell( typeof( ArchCureScroll ), Reg.Garlic, Reg.Ginseng, Reg.MandrakeRoot );
			AddSpell( typeof( ArchProtectionScroll ), Reg.Garlic, Reg.Ginseng, Reg.MandrakeRoot, Reg.SulfurousAsh );
			AddSpell( typeof( CurseScroll ), Reg.Garlic, Reg.Nightshade, Reg.SulfurousAsh );
			AddSpell( typeof( FireFieldScroll ), Reg.BlackPearl, Reg.SpidersSilk, Reg.SulfurousAsh );
			AddSpell( typeof( GreaterHealScroll ), Reg.Garlic, Reg.SpidersSilk, Reg.MandrakeRoot, Reg.Ginseng );
			AddSpell( typeof( LightningScroll ), Reg.MandrakeRoot, Reg.SulfurousAsh );
			AddSpell( typeof( ManaDrainScroll ), Reg.BlackPearl, Reg.SpidersSilk, Reg.MandrakeRoot );
			AddSpell( typeof( RecallScroll ), Reg.BlackPearl, Reg.Bloodmoss, Reg.MandrakeRoot );

			m_Circle = 4;
			m_Mana = 14;

			AddSpell( typeof( BladeSpiritsScroll ), Reg.BlackPearl, Reg.Nightshade, Reg.MandrakeRoot );
			AddSpell( typeof( DispelFieldScroll ), Reg.BlackPearl, Reg.Garlic, Reg.SpidersSilk, Reg.SulfurousAsh );
			AddSpell( typeof( IncognitoScroll ), Reg.Bloodmoss, Reg.Garlic, Reg.Nightshade );
			AddSpell( typeof( MagicReflectScroll ), Reg.Garlic, Reg.MandrakeRoot, Reg.SpidersSilk );
			AddSpell( typeof( MindBlastScroll ), Reg.BlackPearl, Reg.MandrakeRoot, Reg.Nightshade, Reg.SulfurousAsh );
			AddSpell( typeof( ParalyzeScroll ), Reg.Garlic, Reg.MandrakeRoot, Reg.SpidersSilk );
			AddSpell( typeof( PoisonFieldScroll ), Reg.BlackPearl, Reg.Nightshade, Reg.SpidersSilk );
			AddSpell( typeof( SummonCreatureScroll ), Reg.Bloodmoss, Reg.MandrakeRoot, Reg.SpidersSilk );

			m_Circle = 5;
			m_Mana = 20;

			AddSpell( typeof( DispelScroll ), Reg.Garlic, Reg.MandrakeRoot, Reg.SulfurousAsh );
			AddSpell( typeof( EnergyBoltScroll ), Reg.BlackPearl, Reg.Nightshade );
			AddSpell( typeof( ExplosionScroll ), Reg.Bloodmoss, Reg.MandrakeRoot );
			AddSpell( typeof( InvisibilityScroll ), Reg.Bloodmoss, Reg.Nightshade );
			AddSpell( typeof( MarkScroll ), Reg.Bloodmoss, Reg.BlackPearl, Reg.MandrakeRoot );
			AddSpell( typeof( MassCurseScroll ), Reg.Garlic, Reg.MandrakeRoot, Reg.Nightshade, Reg.SulfurousAsh );
			AddSpell( typeof( ParalyzeFieldScroll ), Reg.BlackPearl, Reg.Ginseng, Reg.SpidersSilk );
			AddSpell( typeof( RevealScroll ), Reg.Bloodmoss, Reg.SulfurousAsh );

			m_Circle = 6;
			m_Mana = 40;

			AddSpell( typeof( ChainLightningScroll ), Reg.BlackPearl, Reg.Bloodmoss, Reg.MandrakeRoot, Reg.SulfurousAsh );
			AddSpell( typeof( EnergyFieldScroll ), Reg.BlackPearl, Reg.MandrakeRoot, Reg.SpidersSilk, Reg.SulfurousAsh );
			AddSpell( typeof( FlamestrikeScroll ), Reg.SpidersSilk, Reg.SulfurousAsh );
			AddSpell( typeof( GateTravelScroll ), Reg.BlackPearl, Reg.MandrakeRoot, Reg.SulfurousAsh );
			AddSpell( typeof( ManaVampireScroll ), Reg.BlackPearl, Reg.Bloodmoss, Reg.MandrakeRoot, Reg.SpidersSilk );
			AddSpell( typeof( MassDispelScroll ), Reg.BlackPearl, Reg.Garlic, Reg.MandrakeRoot, Reg.SulfurousAsh );
			AddSpell( typeof( MeteorSwarmScroll ), Reg.Bloodmoss, Reg.MandrakeRoot, Reg.SulfurousAsh, Reg.SpidersSilk );
			AddSpell( typeof( PolymorphScroll ), Reg.Bloodmoss, Reg.MandrakeRoot, Reg.SpidersSilk );

			m_Circle = 7;
			m_Mana = 50;

			AddSpell( typeof( EarthquakeScroll ), Reg.Bloodmoss, Reg.MandrakeRoot, Reg.Ginseng, Reg.SulfurousAsh );
			AddSpell( typeof( EnergyVortexScroll ), Reg.BlackPearl, Reg.Bloodmoss, Reg.MandrakeRoot, Reg.Nightshade );
			AddSpell( typeof( ResurrectionScroll ), Reg.Bloodmoss, Reg.Garlic, Reg.Ginseng );
			AddSpell( typeof( SummonAirElementalScroll ), Reg.Bloodmoss, Reg.MandrakeRoot, Reg.SpidersSilk );
			AddSpell( typeof( SummonDaemonScroll ), Reg.Bloodmoss, Reg.MandrakeRoot, Reg.SpidersSilk, Reg.SulfurousAsh );
			AddSpell( typeof( SummonEarthElementalScroll ), Reg.Bloodmoss, Reg.MandrakeRoot, Reg.SpidersSilk );
			AddSpell( typeof( SummonFireElementalScroll ), Reg.Bloodmoss, Reg.MandrakeRoot, Reg.SpidersSilk, Reg.SulfurousAsh );
			AddSpell( typeof( SummonWaterElementalScroll ), Reg.Bloodmoss, Reg.MandrakeRoot, Reg.SpidersSilk );

			if ( Core.SE )
			{
				AddNecroSpell(  0, 23, 39.6, typeof( AnimateDeadScroll ), Reg.GraveDust, Reg.DaemonBlood );
				AddNecroSpell(  1, 13, 19.6, typeof( BloodOathScroll ), Reg.DaemonBlood );
				AddNecroSpell(  2, 11, 19.6, typeof( CorpseSkinScroll ), Reg.BatWing, Reg.GraveDust );
				AddNecroSpell(  3,  7, 19.6, typeof( CurseWeaponScroll ), Reg.PigIron );
				AddNecroSpell(  4, 11, 19.6, typeof( EvilOmenScroll ), Reg.BatWing, Reg.NoxCrystal );
				AddNecroSpell(  5, 11, 39.6, typeof( HorrificBeastScroll ), Reg.BatWing, Reg.DaemonBlood );
				AddNecroSpell(  6, 23, 69.6, typeof( LichFormScroll ), Reg.GraveDust, Reg.DaemonBlood, Reg.NoxCrystal );
				AddNecroSpell(  7, 17, 29.6, typeof( MindRotScroll ), Reg.BatWing, Reg.DaemonBlood, Reg.PigIron );
				AddNecroSpell(  8,  5, 19.6, typeof( PainSpikeScroll ), Reg.GraveDust, Reg.PigIron );
				AddNecroSpell(  9, 17, 49.6, typeof( PoisonStrikeScroll ), Reg.NoxCrystal );
				AddNecroSpell( 10, 29, 64.6, typeof( StrangleScroll ), Reg.DaemonBlood, Reg.NoxCrystal );
				AddNecroSpell( 11, 17, 29.6, typeof( SummonFamiliarScroll ), Reg.BatWing, Reg.GraveDust, Reg.DaemonBlood );
				AddNecroSpell( 12, 23, 98.6, typeof( VampiricEmbraceScroll ), Reg.BatWing, Reg.NoxCrystal, Reg.PigIron );
				AddNecroSpell( 13, 41, 79.6, typeof( VengefulSpiritScroll ), Reg.BatWing, Reg.GraveDust, Reg.PigIron );
				AddNecroSpell( 14, 23, 59.6, typeof( WitherScroll ), Reg.GraveDust, Reg.NoxCrystal, Reg.PigIron );
				AddNecroSpell( 15, 17, 79.6, typeof( WraithFormScroll ), Reg.NoxCrystal, Reg.PigIron );
				AddNecroSpell( 16, 40, 79.6, typeof( ExorcismScroll ), Reg.NoxCrystal, Reg.GraveDust );
			}

			
            if (Core.ML)
            {
                index = this.AddCraft(typeof(EnchantedSwitch), 1044294, 1072893, 45.0, 95.0, typeof(BlankScroll), 1044377, 1, 1044378);
                this.AddRes(index, typeof(SpidersSilk), 1044360, 1, 1044253);
                this.AddRes(index, typeof(BlackPearl), 1044353, 1, 1044253);
                this.AddRes(index, typeof(SwitchItem), 1073464, 1, 1044253);
                this.ForceNonExceptional(index);
                this.SetNeededExpansion(index, Expansion.ML);
				
                index = this.AddCraft(typeof(RunedPrism), 1044294, 1073465, 45.0, 95.0, typeof(BlankScroll), 1044377, 1, 1044378);
                this.AddRes(index, typeof(SpidersSilk), 1044360, 1, 1044253);
                this.AddRes(index, typeof(BlackPearl), 1044353, 1, 1044253);
                this.AddRes(index, typeof(HollowPrism), 1072895, 1, 1044253);
                this.ForceNonExceptional(index);
                this.SetNeededExpansion(index, Expansion.ML);
            }
			*/
            // Runebook
            index = this.AddCraft(typeof(Runebook), 1044294, 1041267, 45.0, 95.0, typeof(BlankScroll), 1044377, 8, 1044378);
            this.AddRes(index, typeof(RecallScroll), 1044445, 1, 1044253);
            this.AddRes(index, typeof(GateTravelScroll), 1044446, 1, 1044253);

            if (Core.AOS)
            {
                this.AddCraft(typeof(Engines.BulkOrders.BulkOrderBook), 1044294, 1028793, 65.0, 115.0, typeof(BlankScroll), 1044377, 10, 1044378);
            }

            if (Core.SE)
            {
                this.AddCraft(typeof(Spellbook), 1044294, 1023834, 50.0, 126, typeof(BlankScroll), 1044377, 10, 1044378);
            }
			
            #region Mondain's Legacy	
            if (Core.ML)
            {
                index = this.AddCraft(typeof(ScrappersCompendium), 1044294, 1072940, 75.0, 125.0, typeof(BlankScroll), 1044377, 100, 1044378);
                this.AddRes(index, typeof(DreadHornMane), 1032682, 1, 1044253);
                this.AddRes(index, typeof(Taint), 1032679, 10, 1044253);
                this.AddRes(index, typeof(Corruption), 1032676, 10, 1044253);
                this.AddRecipe(index, (int)TinkerRecipes.ScrappersCompendium);
                this.ForceNonExceptional(index);
                this.SetNeededExpansion(index, Expansion.ML);
				
                index = this.AddCraft(typeof(SpellbookEngraver), 1044294, 1072151, 75.0, 100.0, typeof(Feather), 1044562, 1, 1044563);
                this.AddRes(index, typeof(BlackPearl), 1015001, 7, 1044253);
                this.SetNeededExpansion(index, Expansion.ML);
				
                this.AddCraft(typeof(NecromancerSpellbook), 1044294, "Necromancer spellbook", 50.0, 100.0, typeof(BlankScroll), 1044377, 10, 1044378);
                //	AddCraft(typeof(SpellweavingBook), 1044294, "Spellweaving book", 50.0, 100.0, typeof(BlankScroll), 1044377, 10, 1044378);
                this.AddCraft(typeof(MysticBook), 1044294, "Mysticism spellbook", 50.0, 100.0, typeof(BlankScroll), 1044377, 10, 1044378);
            }
            #endregion

            #region Stygian Abyss
            if (Core.SA)
            {
                index = this.AddCraft(typeof(GargoyleBook100), 1044294, 1113290, 60.0, 100.0, typeof(BlankScroll), 1044377, 40, 1044378);
                this.AddRes(index, typeof(Beeswax), 1025154, 2, "You do not have enough beeswax.");

                index = this.AddCraft(typeof(GargoyleBook200), 1044294, 1113291, 72.0, 100.0, typeof(BlankScroll), 1044377, 40, 1044378);
                this.AddRes(index, typeof(Beeswax), 1025154, 4, "You do not have enough beeswax.");

                index = AddCraft(typeof(ScrollBinderDeed), 1044294, 1113135, 75.0, 125.0, typeof(WoodPulp), 1113136, 1, 1044253);
                SetNeededExpansion(index, Expansion.SA);
                SetItemHue(index, 1641);
/*
                AddMysticSpell(1031678, 4, 0.0, typeof(NetherBoltScroll), Reg.SulfurousAsh, Reg.BlackPearl);
                AddMysticSpell(1031679, 4, 0.0, typeof(HealingStoneScroll), Reg.Bone, Reg.Garlic, Reg.Ginseng, Reg.SpidersSilk);
                AddMysticSpell(1031680, 6, 0.0, typeof(PurgeMagicScroll), Reg.FertileDirt, Reg.Garlic, Reg.MandrakeRoot, Reg.SulfurousAsh);
                AddMysticSpell(1031681, 6, 0.0, typeof(EnchantScroll), Reg.SpidersSilk, Reg.MandrakeRoot, Reg.SulfurousAsh);
                AddMysticSpell(1031682, 9, 3.5, typeof(SleepScroll), Reg.SpidersSilk, Reg.BlackPearl, Reg.Nightshade);
                AddMysticSpell(1031683, 9, 3.5, typeof(EagleStrikeScroll), Reg.SpidersSilk, Reg.Bloodmoss, Reg.MandrakeRoot, Reg.Bone);
                AddMysticSpell(1031684, 11, 17.8, typeof(AnimatedWeaponScroll), Reg.Bone, Reg.BlackPearl, Reg.MandrakeRoot, Reg.Nightshade);
                AddMysticSpell(1031685, 11, 17.8, typeof(StoneFormScroll), Reg.Bloodmoss, Reg.FertileDirt, Reg.Garlic);
                AddMysticSpell(1031686, 14, 32.1, typeof(SpellTriggerScroll), Reg.SpidersSilk, Reg.MandrakeRoot, Reg.Garlic, Reg.DragonBlood);
                AddMysticSpell(1031687, 14, 32.1, typeof(MassSleepScroll), Reg.SpidersSilk, Reg.Nightshade, Reg.Ginseng);
                AddMysticSpell(1031688, 20, 46.4, typeof(CleansingWindsScroll), Reg.Ginseng, Reg.Garlic, Reg.DragonBlood, Reg.MandrakeRoot);
                AddMysticSpell(1031689, 20, 46.4, typeof(BombardScroll), Reg.Garlic, Reg.DragonBlood, Reg.SulfurousAsh, Reg.Bloodmoss);
                AddMysticSpell(1031690, 40, 60.7, typeof(SpellPlagueScroll), Reg.Garlic, Reg.DragonBlood, Reg.MandrakeRoot, Reg.Nightshade, Reg.SulfurousAsh, Reg.DaemonBone);
                AddMysticSpell(1031691, 40, 60.7, typeof(HailStormScroll), Reg.DragonBlood, Reg.BlackPearl, Reg.MandrakeRoot, Reg.Bloodmoss);
                AddMysticSpell(1031692, 50, 75.0, typeof(NetherCycloneScroll), Reg.Bloodmoss, Reg.Nightshade, Reg.SulfurousAsh, Reg.MandrakeRoot);
                AddMysticSpell(1031693, 50, 75.0, typeof(RisingColossusScroll), Reg.DaemonBone, Reg.FertileDirt, Reg.DragonBlood, Reg.Nightshade, Reg.MandrakeRoot);*/
            }
            #endregion

            this.MarkOption = true;
        }
 
@ Hank

So I followed your DefInscription and the issue did replicate on my server. Here is the Crash Report.

One of my scripts is either out dated or weird, i compared everything to current commits and I'm not sure what's being missed. :-\

Code:
Server Crash Report
===================

RunUO Version 0.5, Build 5890.17338
Operating System: Microsoft Windows NT 6.2.9200.0
.NET Framework: 4.0.30319.42000
Time: 2/18/2016 5:07:11 AM
Mobiles: 1161
Items: 8658
Exception:
System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
   at System.Collections.CollectionBase.System.Collections.IList.get_Item(Int32 index)
   at Server.Engines.Craft.CraftGroupCol.GetAt(Int32 index)
   at Server.Engines.Craft.CraftGump.CreateItemList(Int32 selectedGroup)
   at Server.Engines.Craft.CraftGump..ctor(Mobile from, CraftSystem craftSystem, BaseTool tool, Object notice, CraftPage page)
   at Server.Items.BaseTool.OnDoubleClick(Mobile from)
   at Server.Mobile.Use(Item item) in k:\Ultima Server\Server\Mobile.cs:line 4473
   at Server.Engines.XmlSpawner2.XmlAttach.UseReq(NetState state, PacketReader pvSrc)
   at Server.Network.MessagePump.HandleReceive(NetState ns) in k:\Ultima Server\Server\Network\MessagePump.cs:line 187
   at Server.Network.MessagePump.Slice() in k:\Ultima Server\Server\Network\MessagePump.cs:line 115
   at Server.Core.Main(String[] args) in k:\Ultima Server\Server\Main.cs:line 578
 
Have you made many modifications to your server files?
Can you please post your DefInscription.cs either in code tags or upload it. So that we can take a look at what you have.
 
Since you mentioned your copy was from Stock, I used your and over written my own entirely to get the same results. The only difference between the two i notice is I have different names for the spell books.
 

Attachments

  • DefInscription.cs
    21.4 KB · Views: 3
The DefInscriptions.cs you uploaded contains 'no' changes. It looks similar to a stock file. If you tried using mine that's all you had to say.
Are you using ServUO or RunUO? Perhaps some other fork?

C#:
  this.AddCraft(typeof(BookOfDarkness), 1044294, "Necromancer spellbook", 50.0, 100.0, typeof(BlankScroll), 1044377, 10, 1044378);

  this.AddCraft(typeof(BookOfElements), 1044294, "Mysticism spellbook", 50.0, 100.0, typeof(BlankScroll), 1044377, 10, 1044378);

I never recall seeing the spell books named this way in any runuo or servuo release to my recollection.
The only place I found 'book of darkness' was here http://ultimaonlinerares.com/items/rares/event-items/1555/book-of-darkness
No hits on BookOfElements.
 
Just to make sure, did you remove / renamed the old books classes? And how many spells are there compared to the original?
 
Did not change the old book classes, and just to be sure i tried commenting out the books as well, no luck on that front.
 
So the old books still exist with their old class name? Like the Mystic book?
In that case I am not sure why you get that error if the core stuff is still the same and you just added new books.
Yet from the definscription you uploaded I saw you didnt actually comment out any spells either, you could try to do that and see if your error still pops up
 
Still can't figure this one out, inscription isn't a skill i really wanted to keep due to the scrolls so I found another way to handle it. Thanks for the help :)
 
Try creating a new Scribe's Pen using the [add command. When I was recently making changes to DefInscription I noted that the changes to the menu did not take effect on pre-existing pens.
 
I tried the above suggestion and it worked! Good thing this shard isn't live, making that kind of change would be destructive if existing pens crashed the server.. lol

Thank you Norman! :)


Update:

Ok so working but I now know the true reason why...
The scribe pen that already existed was fine, the issue was my toon. The toon I was using, even after making a new scribe pen crashed the server. I used another toon that already existed and made a new scribe pen and it worked. I know i've tinkered with the first toon a bit and im sure that probably has something to do with it.

Never would have figured that...
 

Active Shards

Donations

Total amount
$0.00
Goal
$1,000.00
Back