My scripts are:
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Server.Mobiles;
using Server.Regions;
using Server.Items;
namespace Server.Regions
{
    public class RegionStone : Item
    {
        public EgitimAlani Register(RegionStone tas)
        {
            if (tas != null)
            {
                Point2D start = new Point2D(tas.X + Size, tas.Y + Size);
                Point2D end = new Point2D(tas.X - Size, tas.Y - Size);
                Rectangle2D arena = new Rectangle2D(start, end);
                EgitimAlani alan = new EgitimAlani(tas, tas.Map, arena, tas.AreaName);

                alan.Register();
                return alan;

            }
            else return null;
        }
        public void UnRegister(RegionStone tas)
        {
            if(tas!= null)
            {
                tas.Alan.Unregister();
            }
        }
        private int m_Size;


        [CommandProperty(AccessLevel.GameMaster)]
      
        public int Size
        {
            get { return m_Size; }
            set { m_Size = value; }
        }
        private Map m_Map;

        [CommandProperty(AccessLevel.GameMaster)]
        public Map Map
        {
            get { return m_Map; }
            set { m_Map = value; }
        }

        private string m_EnterMessage;

        [CommandProperty(AccessLevel.GameMaster)]
        public string EnterMessage
        {
            get { return m_EnterMessage; }
            set { m_EnterMessage = value; }
        }

        private bool m_AllowPets;

        [CommandProperty(AccessLevel.GameMaster)]
        public bool AllowPets
        {
            get { return m_AllowPets; }
            set { m_AllowPets = value; }
        }

        private string m_AreaName;

        [CommandProperty(AccessLevel.GameMaster)]
        public string AreaName
        {
            get { return m_AreaName; }
            set { m_AreaName = value; }
        }
        private EgitimAlani m_Alan;

        public EgitimAlani Alan
        {
            get { return m_Alan; }
            set { m_Alan = value; }
        }


        [Constructable]
        public RegionStone() : base(0xED4)
        {
            AreaName = "Henüz Adlandırılmamış Alan";
            EnterMessage = String.Format("{0}'a hoş geldiniz", AreaName);
            AllowPets = true;
            Size = 3;
            Map = this.Map;
            Movable = false;
            Name = AreaName;
        }

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

        public override void OnDoubleClick(Mobile from)
        {
           // base.OnDoubleClick(from);
            this.PublicOverheadMessage(Network.MessageType.Regular, 1153, false ,"Hey! , wait a little bit.");
            if(from.AccessLevel > AccessLevel.GameMaster)
            {
                UnRegister(this);
               Alan= Register(this);
                this.Name = "" + "" + this.AreaName + " için kontrol taşı";

                if (Alan != null)
                    from.SendMessage(34, "Dungeon Region Updated");
            }
            //from.SendMessage(1153, "Alan yenilendi..");
        }
        public override void OnDelete()
        {
            base.OnDelete();
            UnRegister(this);
        }

        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);
            int version = reader.ReadInt();
            m_AllowPets = reader.ReadBool();
            m_AreaName = reader.ReadString();
            m_EnterMessage = reader.ReadString();
            m_Size = reader.ReadInt();
            m_Map = reader.ReadMap();
          
           
        }
        public override void Serialize(GenericWriter writer)
        {
            base.Serialize(writer);
            writer.Write((int)0);
            writer.Write(m_AllowPets);
            writer.Write(m_AreaName);
            writer.Write(m_EnterMessage);
            writer.Write(m_Size);
            writer.Write(m_Map);
           
        }
    }
}


And

Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Server.Items;
using Server.Regions;

namespace Server.Regions
{
    public class EgitimAlani : Region
    {
        private RegionStone m_Tas;

        public RegionStone Tas

        {
            get { return m_Tas; }
            //set { m_Tas = value; } This should be read-only
        }

        public EgitimAlani(RegionStone tas,Map map , Rectangle2D area , string name) : base(name , map , 0, area)
        {
            m_Tas = tas; tas.Alan = this;
          
        }

        public override void OnEnter(Mobile m)
        {
            base.OnEnter(m);
            m.SendMessage(String.Format("{0}'a hoşgeldin!", m_Tas.AreaName));
        }


    }
}

But when I add the stone somewhere and doubleclick it , server crashes and gives me this crash report :

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

ServUO Version 0.5, Build 6376.24745
Operating System: Microsoft Windows NT 6.1.7601 Service Pack 1
.NET Framework: 4.0.30319.42000
Time: 16.06.2017 13:39:10
Mobiles: 965
Items: 5246
Exception:
System.NullReferenceException: Nesne başvurusu bir nesnenin örneğine ayarlanmadı.
   konum: Server.Regions.RegionStone.OnDoubleClick(Mobile from)
   konum: Server.Mobile.Use(Item item) c:\Users\Klyc\Desktop\ServUO-master\Server\Mobile.cs içinde: satır 4417
   konum: Server.Engines.XmlSpawner2.XmlAttach.UseReq(NetState state, PacketReader pvSrc)
   konum: Server.Network.MessagePump.HandleReceive(NetState ns) c:\Users\Klyc\Desktop\ServUO-master\Server\Network\MessagePump.cs içinde: satır 187
   konum: Server.Network.MessagePump.Slice() c:\Users\Klyc\Desktop\ServUO-master\Server\Network\MessagePump.cs içinde: satır 121
   konum: Server.Core.Main(String[] args) c:\Users\Klyc\Desktop\ServUO-master\Server\Main.cs içinde: satır 587

Clients:
- Count: 1
+ 127.0.0.1: (account = klyc) (mobile = 0x3C4 'Lucian')
 
Back