Full Version : Custom Region Error
xmlspawner >>Scripting Support >>Custom Region Error


<< Prev | Next >>

Erica- 01-13-2007
Just updated to Svn 145 and something changed so now im getting this error on my Custom Region heres the error
CODE
RunUO - [www.runuo.com] Version 2.0, Build 2569.35780
Core: Running on .NET Framework Version 2.0.50727
Core: Running with arguments: -debug
Core: Optimizing for 2 processors
Scripts: Compiling C# scripts...failed (1 errors, 0 warnings)
Errors:
+ Custom Scripts 2.0/Custom Regions in a Box V4.0a/CustomRegion.cs:
   CS0508: Line 28: 'Server.Regions.CustomRegion.OnDeath(Server.Mobile)': retur
n type must be 'void' to match overridden member 'Server.Region.OnDeath(Server.M
obile)'
Scripts: One or more scripts failed to compile or no script files were found.
- Press return to exit, or R to try again.
And here the script
CODE
using Server;
using System;
using System.Collections;
using Server.Items;
using Server.Spells;
using Server.Mobiles;

namespace Server.Regions
{
   public class CustomRegion : GuardedRegion
   {              
       private RegionControl m_Controller;

       public RegionControl Controller
       {
           get { return m_Controller; }
       }

       public CustomRegion(RegionControl control): base(control.RegionName, control.Map, control.RegionPriority, control.RegionArea)
       {
           Disabled = !control.IsGuarded;
           Music = control.Music;
           m_Controller = control;
       }

       private Timer m_Timer;

       public override bool OnDeath( Mobile m )
       {
           bool toreturn = true;

           if ( m != null && !m.Deleted)
           {

               if (m is PlayerMobile && m_Controller.NoPlayerItemDrop)
               {
                   if (m.Female)
                   {
                       m.FixedParticles(0x374A, 10, 30, 5013, 1153, 2, EffectLayer.Waist);
                       m.Body = 403;
                       m.Hidden = true;
                   }
                   else
                   {
                       m.FixedParticles(0x374A, 10, 30, 5013, 1153, 2, EffectLayer.Waist);
                       m.Body = 402;
                       m.Hidden = true;
                   }
                   m.Hidden = false;
                   toreturn = false;
               }
               else if ( !(m is PlayerMobile) && m_Controller.NoNPCItemDrop)
               {
                   if (m.Female)
                   {
                       m.FixedParticles(0x374A, 10, 30, 5013, 1153, 2, EffectLayer.Waist);
                       m.Body = 403;
                       m.Hidden = true;
                   }
                   else
                   {
                       m.FixedParticles(0x374A, 10, 30, 5013, 1153, 2, EffectLayer.Waist);
                       m.Body = 402;
                       m.Hidden = true;
                   }
                   m.Hidden = false;
                   toreturn = false;
               }
               else
                   toreturn = true;

               // Start a 1 second timer
               // The Timer will check if they need moving, corpse deleting etc.
               m_Timer = new MovePlayerTimer(m, m_Controller);
               m_Timer.Start();

               return base.OnDeath(m);
           }

           return toreturn;

       }

       private class MovePlayerTimer : Timer
       {
           private Mobile m;
           private RegionControl m_Controller;

           public MovePlayerTimer(Mobile m_Mobile, RegionControl controller)
               : base(TimeSpan.FromSeconds(1.0), TimeSpan.FromSeconds(1.0))
           {
               Priority = TimerPriority.FiftyMS;
               m = m_Mobile;
               m_Controller = controller;
           }

           protected override void OnTick()
           {
               // Emptys the corpse and places items on ground
               if ( m is PlayerMobile )
               {
                   if (m_Controller.EmptyPlayerCorpse)
                   {
                       if (m != null && m.Corpse != null)
                       {
                           ArrayList corpseitems = new ArrayList(m.Corpse.Items);

                           foreach (Item item in corpseitems)
                           {
                               if ((item.Layer != Layer.Bank) && (item.Layer != Layer.Backpack) && (item.Layer != Layer.Hair) && (item.Layer != Layer.FacialHair) && (item.Layer != Layer.Mount))
                               {
                                   if ((item.LootType != LootType.Blessed))
                                   {
                                       item.MoveToWorld(m.Corpse.Location, m.Corpse.Map);
                                   }
                               }
                           }
                       }
                   }
               }
               else if ( m_Controller.EmptyNPCCorpse )
               {
                   if (m != null && m.Corpse != null)
                   {
                       ArrayList corpseitems = new ArrayList(m.Corpse.Items);

                       foreach (Item item in corpseitems)
                       {
                           if ((item.Layer != Layer.Bank) && (item.Layer != Layer.Backpack) && (item.Layer != Layer.Hair) && (item.Layer != Layer.FacialHair) && (item.Layer != Layer.Mount))
                           {
                               if ((item.LootType != LootType.Blessed))
                               {
                                   item.MoveToWorld(m.Corpse.Location, m.Corpse.Map);
                               }
                           }
                       }
                   }
               }

               Mobile newnpc = null;  

               // Resurrects Players
               if (m is PlayerMobile)
               {
                   if (m_Controller.ResPlayerOnDeath)
                   {
                       if (m != null)
                       {
                           m.Resurrect();
                           m.SendMessage("You have been Resurrected");
                       }
                   }
               }
               else if (m_Controller.ResNPCOnDeath)
               {
                   if (m != null && m.Corpse != null)
                   {
                       Type type = m.GetType();
                       newnpc = Activator.CreateInstance(type) as Mobile;
                       if (newnpc != null)
                       {
                           newnpc.Location = m.Corpse.Location;
                           newnpc.Map = m.Corpse.Map;
                       }
                   }
               }

               // Deletes the corpse
               if ( m is PlayerMobile )
               {
                   if (m_Controller.DeletePlayerCorpse)
                   {
                       if (m != null && m.Corpse != null)
                       {
                           m.Corpse.Delete();
                       }
                   }
               }
               else if ( m_Controller.DeleteNPCCorpse )
               {
                   if (m != null && m.Corpse != null)
                   {
                       m.Corpse.Delete();
                   }
               }          

               // Move Mobiles
               if ( m is PlayerMobile )
               {
                   if (m_Controller.MovePlayerOnDeath)
                   {
                       if (m != null)
                       {
                           m.Map = m_Controller.MovePlayerToMap;
                           m.Location = m_Controller.MovePlayerToLoc;
                       }
                   }
               }
               else if ( m_Controller.MoveNPCOnDeath )
               {
                   if (newnpc != null)
                   {
                       newnpc.Map = m_Controller.MoveNPCToMap;
                       newnpc.Location = m_Controller.MoveNPCToLoc;
                   }
               }
               
               Stop();

           }
       }

       public override bool IsDisabled()
       {
           if (!m_Controller.IsGuarded != Disabled)
               m_Controller.IsGuarded = !Disabled;

  return Disabled;
       }

       public override bool AllowBeneficial(Mobile from, Mobile target)
       {
           if ((!m_Controller.AllowBenefitPlayer && target is PlayerMobile) || (!m_Controller.AllowBenefitNPC && target is BaseCreature))
           {
               from.SendMessage("You cannot perform benificial acts on your target.");
               return false;
           }

           return base.AllowBeneficial(from, target);
       }

       public override bool AllowHarmful(Mobile from, Mobile target)
       {
           if ((!m_Controller.AllowHarmPlayer && target is PlayerMobile) || (!m_Controller.AllowHarmNPC && target is BaseCreature))
           {
               from.SendMessage("You cannot perform harmful acts on your target.");
               return false;
           }

           return base.AllowHarmful(from, target);
       }

       public override bool AllowHousing(Mobile from, Point3D p)
       {
           return m_Controller.AllowHousing;
       }

       public override bool AllowSpawn()
       {
           return m_Controller.AllowSpawn;
       }

       public override bool CanUseStuckMenu(Mobile m)
       {
           if (!m_Controller.CanUseStuckMenu)
               m.SendMessage("You cannot use the Stuck menu here.");
           return m_Controller.CanUseStuckMenu;
       }

       public override bool OnDamage(Mobile m, ref int Damage)
       {
           if (!m_Controller.CanBeDamaged)
           {
               m.SendMessage("You cannot be damaged here.");
           }

           return m_Controller.CanBeDamaged;
       }
       public override bool OnResurrect(Mobile m)
       {
           if (!m_Controller.CanRessurect && m.AccessLevel == AccessLevel.Player)
               m.SendMessage("You cannot ressurect here.");
           return m_Controller.CanRessurect;
       }

       public override bool OnBeginSpellCast(Mobile from, ISpell s)
       {
           if (from.AccessLevel == AccessLevel.Player)
           {
               bool restricted = m_Controller.IsRestrictedSpell(s);
               if (restricted)
               {
                   from.SendMessage("You cannot cast that spell here.");
                   return false;
               }

               //if ( s is EtherealSpell && !CanMountEthereal ) Grr, EthereealSpell is private :<
               if (!m_Controller.CanMountEthereal && ((Spell)s).Info.Name == "Ethereal Mount") //Hafta check with a name compare of the string to see if ethy
               {
                   from.SendMessage("You cannot mount your ethereal here.");
                   return false;
               }
           }

           //Console.WriteLine( m_Controller.GetRegistryNumber( s ) );

           //return base.OnBeginSpellCast( from, s );
           return true; //Let users customize spells, not rely on weather it's guarded or not.
       }

       public override bool OnDecay(Item item)
       {
           return m_Controller.ItemDecay;
       }

       public override bool OnHeal(Mobile m, ref int Heal)
       {
           if (!m_Controller.CanHeal)
           {
               m.SendMessage("You cannot be healed here.");
           }

           return m_Controller.CanHeal;
       }

       public override bool OnSkillUse(Mobile m, int skill)
       {
           bool restricted = m_Controller.IsRestrictedSkill(skill);
           if (restricted && m.AccessLevel == AccessLevel.Player)
           {
               m.SendMessage("You cannot use that skill here.");
               return false;
           }

           return base.OnSkillUse(m, skill);
       }

       public override void OnExit(Mobile m)
       {
           if (m_Controller.ShowExitMessage)
               m.SendMessage("You have left {0}", this.Name);

           base.OnExit(m);

       }

       public override void OnEnter(Mobile m)
       {
           if (m_Controller.ShowEnterMessage)
               m.SendMessage("You have entered {0}", this.Name);

           base.OnEnter(m);
       }

       public override bool OnMoveInto(Mobile m, Direction d, Point3D newLocation, Point3D oldLocation)
       {
           if (!m_Controller.CanEnter && !this.Contains(oldLocation))
           {
               m.SendMessage("You cannot enter this area.");
               return false;
           }

           return true;
       }

       public override TimeSpan GetLogoutDelay(Mobile m)
       {
           if (m.AccessLevel == AccessLevel.Player)
               return m_Controller.PlayerLogoutDelay;

           return base.GetLogoutDelay(m);
       }

       public override bool OnDoubleClick(Mobile m, object o)
       {
           if (o is BasePotion && !m_Controller.CanUsePotions)
           {
               m.SendMessage("You cannot drink potions here.");
               return false;
           }

           if (o is Corpse)
           {
               Corpse c = (Corpse)o;

               bool canLoot;

               if (c.Owner == m)
                   canLoot = m_Controller.CanLootOwnCorpse;
               else if (c.Owner is PlayerMobile)
                   canLoot = m_Controller.CanLootPlayerCorpse;
               else
                   canLoot = m_Controller.CanLootNPCCorpse;

               if (!canLoot)
                   m.SendMessage("You cannot loot that corpse here.");

               if (m.AccessLevel >= AccessLevel.GameMaster && !canLoot)
               {
                   m.SendMessage("This is unlootable but you are able to open that with your Godly powers.");
                   return true;
               }

               return canLoot;
           }

           return base.OnDoubleClick(m, o);
       }

       public override void AlterLightLevel(Mobile m, ref int global, ref int personal)
       {
           if (m_Controller.LightLevel >= 0)
               global = m_Controller.LightLevel;
           else
               base.AlterLightLevel(m, ref global, ref personal);
       }

       /*public override bool CheckAccessibility(Item item, Mobile from)
       {

           if (item is BasePotion && !m_Controller.CanUsePotions)
           {
               from.SendMessage("You cannot drink potions here.");
               return false;
           }

           if (item is Corpse)
           {
               Corpse c = item as Corpse;

               bool canLoot;

               if (c.Owner == from)
                   canLoot = m_Controller.CanLootOwnCorpse;
               else if (c.Owner is PlayerMobile)
                   canLoot = m_Controller.CanLootPlayerCorpse;
               else
                   canLoot = m_Controller.CanLootNPCCorpse;

               if (!canLoot)
                   from.SendMessage("You cannot loot that corpse here.");

               if (from.AccessLevel >= AccessLevel.GameMaster && !canLoot)
               {
                   from.SendMessage("This is unlootable but you are able to open that with your Godly powers.");
                   return true;
               }

               return canLoot;
           }

           return base.CheckAccessibility(item, from);
       }*/

   }
}
Any idea what i gotta change Thank You.

ArteGordon- 01-13-2007
have to change this
CODE

public override bool OnDeath( Mobile m )

to this
CODE

public override void OnDeath( Mobile m )


and change this

CODE

              return base.OnDeath(m);
          }

          return toreturn;

      }


to this

CODE

          }

          base.OnDeath(m);

      }