这个是runuo的,想调用一下travelgategump,老是提示出错
这个是help,用来调用,红色字体是我添加的
using System;
using Server;
using Server.Gumps;
using Server.Network;
using Server.Menus;
using Server.Menus.Questions;
using Server.Accounting;
using Server.Multis;
using Server.Mobiles;
using System.Collections; 
namespace Server.Engines.Help
{
    public class ContainedMenu : QuestionMenu
    {
        private Mobile m_From;
        public ContainedMenu( Mobile from ) : base( "You already have an open help request. We will have someone assist you as soon as possible.  What would you like to do?", new string[]{ "Leave my old help request like it is.", "Remove my help request from the queue." } )
        {
            m_From = from;
        }
        public override void OnCancel( NetState state )
        {
            m_From.SendLocalizedMessage( 1005306, "", 0x35 ); // Help request unchanged.
        }
        public override void OnResponse( NetState state, int index )
        {
            if ( index == 0 )
            {
                m_From.SendLocalizedMessage( 1005306, "", 0x35 ); // Help request unchanged.
            }
            else if ( index == 1 )
            {
                PageEntry entry = PageQueue.GetEntry( m_From );
                if ( entry != null && entry.Handler == null )
                {
                    m_From.SendLocalizedMessage( 1005307, "", 0x35 ); // Removed help request.
                    entry.AddResponse( entry.Sender, "[Canceled]" );
                    PageQueue.Remove( entry );
                }
                else
                {
                    m_From.SendLocalizedMessage( 1005306, "", 0x35 ); // Help request unchanged.
                }
            }
        }
    }
    public class HelpGump : Gump
    {
        public static void Initialize()
        {
            EventSink.HelpRequest += new HelpRequestEventHandler( EventSink_HelpRequest );
        }
        private static void EventSink_HelpRequest( HelpRequestEventArgs e )
        {
            foreach ( Gump g in e.Mobile.NetState.Gumps )
            {
                if ( g is HelpGump )
                    return;
            }
            if ( !PageQueue.CheckAllowedToPage( e.Mobile ) )
                return;
            if ( PageQueue.Contains( e.Mobile ) )
                e.Mobile.SendMenu( new ContainedMenu( e.Mobile ) );
            else
                e.Mobile.SendGump( new HelpGump( e.Mobile ) );
        }
        private static bool IsYoung( Mobile m )
        {
            if ( m is PlayerMobile )
                return ((PlayerMobile)m).Young;
            return false;
        }
        public static bool CheckCombat( Mobile m )
        {
            for ( int i = 0; i < m.Aggressed.Count; ++i )
            {
                AggressorInfo info = m.Aggressed[i];
                if ( DateTime.Now - info.LastCombatTime < TimeSpan.FromSeconds( 30.0 ) )
                    return true;
            }
            return false;
        }
        public HelpGump( Mobile from ) : base( 0, 0 )
        {
            from.CloseGump( typeof( HelpGump ) );
bool isYoung = IsYoung( from );
AddBackground( 50, 25, 540, 530, 2600 );
AddPage( 0 );
            AddHtmlLocalized( 150, 50, 360, 40, 1001002, false, false ); // <CENTER><U>Ultima Online Help Menu</U></CENTER>
            AddButton( 425, 465, 2073, 2072, 0, GumpButtonType.Reply, 0 ); // Close
AddPage( 1 );
            if ( isYoung )
            {
                AddButton( 80, 75, 5540, 5541, 9, GumpButtonType.Reply, 2 );
                AddHtml( 110, 75, 450, 58, @"<BODY><BASEFONT COLOR=BLACK><u>新手玩家专用通道.</u> 选择这个选项可传送到哈镇镇.</BODY>", true, true );
                AddButton( 80, 140, 5540, 5541, 1, GumpButtonType.Reply, 2 );
                AddHtml( 110, 140, 450, 58, @"<u>关于网络创世纪的问题.</u> 选择这个选项,如果你有一个游戏的问题,需要帮助学习使用技巧, 或如果你想搜索uo知识库.", true, true );
                AddButton( 80, 205, 5540, 5541, 2, GumpButtonType.Reply, 0 );
                AddHtml( 110, 205, 450, 58, @"<u>我的角色被卡在游戏里了.</u> 这个选项只能在以下情况使用,角色会停留在原地2分钟,随后传送到你选择的地方,注意: 每天只能传送2次,以现实中的24个小时计算。", true, true );
                AddButton( 80, 270, 5540, 5541, 0, GumpButtonType.Page, 3 );
                AddHtml( 110, 270, 450, 58, @"<u>有人在骂我.</u> 有人在不断辱骂你,当你选择这个选项你将看到一个留言本,看到什么构成骚扰,请访问 http://lzuo.vicp.net/gm_9.html.", true, true );
                AddButton( 80, 355, 5540, 5541, 0, GumpButtonType.Page, 2 );
                AddHtml( 110, 355, 450, 58, @"<u>其它.</u> 如果您所遇到的问题不在游戏类别,我们将给予支援网页(位于http://support.lzuo.vicp.net),请使用此选项。", true, true );
            }
            else
            {
                AddButton( 80, 90, 5540, 5541, 1, GumpButtonType.Reply, 2 );
                AddHtml( 110, 90, 450, 74, @"<u>关于网络创世纪的问题.</u> 选择这个选项,如果你有一个游戏的问题,需要帮助学习使用技巧, 或如果你想搜索uo知识库.", true, true );
                AddButton( 80, 170, 5540, 5541, 2, GumpButtonType.Reply, 0 );
                AddHtml( 110, 170, 450, 74, @"<u>我的角色被卡在游戏里了.</u> 这个选项只能在以下情况使用,角色会停留在原地2分钟,随后传送到你选择的地方,注意: 每天只能传送2次,以现实中的24个小时计算。", true, true );
                AddButton( 80, 250, 5540, 5541, 0, GumpButtonType.Page, 3 );
                AddHtml( 110, 250, 450, 74, @"<u>有人在骂我.</u> 有人在不断辱骂你,当你选择这个选项你将看到一个留言本,看到什么构成骚扰,请访问 http://lzuo.vicp.net/gm_9.html.", true, true );
                AddButton( 80, 330, 5540, 5541, 0, GumpButtonType.Page, 2 );
                AddHtml( 110, 330, 450, 74, @"<u>其它.</u> 如果您所遇到的问题不在游戏类别,我们将给予支援网页(位于http://support.lzuo.vicp.net),请使用此选项。", true, true );
                AddButton( 80, 405, 5540, 5541, 10, GumpButtonType.Page, 0 );
                AddHtml( 110, 405, 450, 58, @"<u>我要使用旅游系统.</u> 免费才是硬道理", true, true );
            }
....................
                case 9: // Young player transport
                {
                    if ( IsYoung( from ) )
                    {
                        if ( from.Region.IsPartOf( typeof( Regions.Jail ) ) )
                        {
                            from.SendLocalizedMessage( 1041530, "", 0x35 ); // You'll need a better jailbreak plan then that!
                        }
                        else if ( from.Region.IsPartOf( "Haven Island" ) )
                        {
                            from.SendLocalizedMessage( 1041529 ); // You're already in Haven
                        }
                        else
                        {
                            from.MoveToWorld( new Point3D( 3618, 2587, 0 ), Map.Trammel );
                        }
                    }
                    break;
                }
                case 10: //travelgate
                {
                from.SendMessage( "测试中" );
                //from.SendGump( new TravelGateGump( from, this ) );
                //from.SendUseGate( from ); 
                break;
                }
            }
            if ( type != (PageType)(-1) && PageQueue.CheckAllowedToPage( from ) )
                from.SendGump( new PagePromptGump( from, type ) );
        }
    }
}
这个是老外写的,被调用
using System; 
using System.Collections; 
using Server; 
using Server.Gumps; 
using Server.Network; 
using Server.Mobiles; 
namespace Server.Items 
{ 
   public class TravelGate : Item 
   { 
      [Constructable] 
      public TravelGate() : base( 0xF6C ) 
      { 
         Movable = false; 
         //Light = LightType.Circle300;
         //Hue = 322; 
         //Weight = 3;  
         Name = "旅行月门"; 
         Light = LightType.Circle300;
      } 
      public TravelGate( Serial serial ) : base( serial ) 
      { 
      } 
      public override void OnDoubleClick( Mobile from ) 
      { 
         if ( !from.Player ) 
            return; 
         if ( from.InRange( GetWorldLocation(), 1 ) ) 
            UseGate( from ); 
         else 
            from.SendLocalizedMessage( 500446 ); // That is too far away. 
      } 
      public override bool OnMoveOver( Mobile m ) 
      { 
         return !m.Player || UseGate( m ); 
      } 
      public bool UseGate( Mobile m ) 
      { 
         if ( m.Criminal ) 
         { 
            m.SendLocalizedMessage( 1005561, "", 0x22 ); // Thou'rt a criminal and cannot escape so easily. 
            return false; 
         } 
         else if ( Server.Spells.SpellHelper.CheckCombat( m ) ) 
         { 
            m.SendLocalizedMessage( 1005564, "", 0x22 ); // Wouldst thou flee during the heat of battle?? 
            return false; 
         } 
         else if ( m.Spell != null ) 
         { 
            m.SendLocalizedMessage( 1049616 ); // You are too busy to do that at the moment. 
            return false; 
         } 
         else 
         { 
            m.CloseGump( typeof( TravelGateGump ) ); 
            m.SendGump( new TravelGateGump( m, this ) ); 
            Effects.PlaySound( m.Location, m.Map, 0x20E ); 
            return true; 
         } 
      } 
      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(); 
      } 
........
看下怎么样可以调用下面这个,我用from.SendGump( new TravelGateGump( from, this ) )和from.SendUseGate( from )来调用travelgategump总是出错。
[此贴子已经被作者于2007-5-15 10:28:24编辑过]



 
											





 
	    

 
	