RunUO代码研究(一)

原创 2005年04月29日 16:07:00

     最近做梦常常梦到自己以前在UO中的往事...呵呵,虽然以前玩的不是很厉害,但是迷恋程度可是不低.最近弄到了一份RUNUO的源代码.忍不住想看看这么精彩的代码是如何写的.自己虽然是个小小的程序员(马上就不干这行了),但是却无论如何和达不到这样高的程度...于是仰慕之余就开始了我的第2次UO之旅.

    首先声明一点,由于小弟C#并不是很NB,所以分析出来的东西可能不是很专业,如果能看明白,或者能从我写的东西里得到益处,本人就感到非常欣慰了.哈哈...一句话,对UO还怀念的朋友或者希望一起研究RUNUO代码的朋友,大家多多交流,一起进步.可以联系本人.QQ:1570147  说研究RUNUO代码就可以了.

    我用了几天的代码,熟悉了一下全部的类以及他们的继承关系。发现。。。真的是博大精深啊。。。汗都要出来了。。。写的真是@#^&@#看都看不懂。不过不急,饭是一口一口吃的嘛。慢慢来。首先我们找到Main.cs这个文件,找到Main()方法。咱们一点一点看下去就可以发现启动的时候可以选择3种参数-debug,-service,-profile。如果以-service方式启动后,系统将自动建立Logs目录,我们可以分析Logs/Console.log这个文件。中间略过。。。略过。。。重点的东西出来了"while ( !ScriptCompiler.Compile( debug ) )" debug这个参数是你一开始启动时用-debug设置的,默认为false。我没有设置过这个参数,估计是用来调试Script目录里的代码用的。赶快跟踪进去,ScriptCompiler.cs文件里的Compile()这个函数里。同时编译了Scripts/和Scripts/Output/目录中的*.cs和*.vb类。查找所有文件名的代码在GetScripts()这个函数中。我一开始以为编译采用外部调用csc.exe文件。没想到。。采用的方式如此高级。呵呵。。。.CS文件编译完成后开始编译.vb文件CompileVBScripts();  当没有返回错误以后,开始调用Core.VerifySerialization();验正代码的正确性(本人不确定,还没看Core里的代码)
下面一段代码:
    ArrayList invoke = new ArrayList();

    for (a=0;a<m_Assemblies.Length;++a)
    {
     Type[] types = m_Assemblies[a].GetTypes();

     for ( int i = 0; i < types.Length; ++i )
     {
      MethodInfo m = types[i].GetMethod( "Configure",

BindingFlags.Static | BindingFlags.Public );

      if ( m != null )
       invoke.Add( m );
       //m.Invoke( null, null );
     }
    }

    invoke.Sort( new CallPriorityComparer() );

    for ( int i = 0; i < invoke.Count; ++i )
     ((MethodInfo)invoke[i]).Invoke( null, null );

    invoke.Clear();

是通过反射功能调用运行Script/目录中所有文件中的Configure()函数。。我对反射不了解。暂时只能了解到这里。
查找下整个项目,我们能发现一共有:
 Scripts/Accounting/Accounts.cs  public static void Configure()
 Scripts/Engines/Factions/Core/Reflector.cs  public static void Configure()
 Scripts/Engines/Pathing/Movement.cs  public static void Configure()
 Scripts/Engines/Plants/PlantSystem.cs  public static void Configure()
 Scripts/Engines/RemoteAdmin/Network.cs  public static void Configure()
 Scripts/Misc/AOS.cs  public static void Configure()
 Scripts/Misc/DataPath.cs public static void Configure()
 Scripts/Misc/Email.cs  public static void Configure()
 Scripts/Misc/Gifts/GiftGiving.cs public static void Configure()
 Scripts/Misc/Guild.cs  public static void Configure()
 Scripts/Misc/MapDefinitions.cs  public static void Configure()
 Scripts/Misc/Poison.cs public static void Configure()
 Scripts/Misc/RegenRates.cs  public static void Configure()
 Scripts/Misc/SE.cs public static void Configure()
 Scripts/Multis/BaseHouse.cs  public static void Configure()
 Scripts/Skills/Snooping.cs  public static void Configure()
这些都是初始调用的函数。如果以后你的代码中也有开始就要调用的功能,不妨写入到myClass.Configure()中去。

    Configure()函数我分析了几个。。。象DataPath.cs 用来找到你的UO目录.大部分的是类试EventSink.Login += new LoginEventHandler( EventSink_Login );好象是抓事件用的???我不太清楚,看不太懂。。有哪个大大教教我就好了。。象MapDefinitions.cs中是加载地图用的;SE.cs中好象是用来开启武士帝国功能的。不想开就设置Core.SE = False吧;
    目前暂时分析到次。。。偶还在看。哎C#刚入门,看的实在是痛苦。如果大家喜欢的话给点鼓励吧。:)

聚类方法:DBSCAN算法研究(2)--matlab代码实现

DBSCAN聚类算法三部分: 1、DBSCAN原理、流程、参数设置、优缺点以及算法; 2、matlab代码实现; 3、C++代码实现及与matlab实例结果比较。 摘要:介绍DBSCAN原理、流程...

结合实例与代码谈数字图像处理都研究什么?

图像处理(以及机器视觉)在学校里是一个很大的研究方向,图像处理到底都研究哪些问题,今天我们就来谈一谈它最主要的12个话题(或者方向)...

HEVC码率控制算法研究与HM相应代码分析(二)——新的码率控制模型

下面简单回顾一下H.264中的码率控制算法,并说明为什么不能直接将之前的码率控制算法用于HEVC,同时介绍一下一种很有意思的新的R-λ模型。 在H.264以及之前的码率控制算法中,R-Q模型得到...

【HEVC学习与研究】37、HM编码器的基本结构2:帧内编码部分的代码骨架

第31篇博文大体介绍了

当年给某高校恶意代码研究组的一封公开信[2003年]

写在前面:有朋友看到 再谈反病毒领域工程化技术与科学方法的结合 一文提到的公开信,向我索取,索性贴出来吧,突然发现我记错了,我以为信是05年的,其实是03年底的。想起来了,那天是PACT-ANTIY病...

对“视觉机器学习20讲配套仿真代码”的研究心得---回归学习

回归学习

DIOCP开源项目出炉,附带<IOCP退出资源的管控研究代码>

经过对一段时间对IOCP的学习和研究。对IOCP的流程有了一定的了解。 后面对一段时间的IOCP优化和实际项目的使用,在DIOCP中加入了日志文件记录功能,利用api编写了一个客户端通信类,等解...

对“视觉机器学习20讲配套仿真代码”的研究心得---Adaboost(一)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %功能:演示Adaboost算法在计算机视觉中的应用 %基于Adaboost实现目标分类; %环境:Win7...

红黑树(红黑树研究记录-代码实现)

代码可以根据《红黑树研究记录-实例》那篇文章的图来验证 main.cpp #include #include "RBTree.h" using namespace std; int ...

thrift源码研究-TBinaryProtocolT代码分析

接下来分析具体的协议类,本人看完具体协议类的代码后,再考虑写总结时发现,有人已先我一步对thrift的具体协议类进行了分析,而且较符合我的胃口,以于乎,我将转载他人的成果。本文转载TBinaryPro...
  • whycold
  • whycold
  • 2013年01月23日 21:32
  • 1684
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:RunUO代码研究(一)
举报原因:
原因补充:

(最多只允许输入30个字)