最近做梦常常梦到自己以前在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.VerifySer