传奇源码分析

传奇源码分析


2024年3月17日发(作者:)

传奇源码分析

2010年01月30日 星期六 下午 11:02

简述:

最近对高性能的服务器比较感兴趣,读过了DELPHI的Socker源码

WebService及RemObject之后,高性能的服务器感兴趣。

你可能需要的以下知识才能更好的读懂一个商业源码:

1).SOCKET的I/O模型熟悉掌握。

2).面向对象技术的熟悉掌握。

3).Socket的API掌握。

4).多线程技术等。

5).一门熟悉的开发工具掌握,和多种语言的源码阅读能力。

我下的源码 LegendOfMir2_Server:共包含AdminCmd, DBSrv, GameGate,

GameSvr,LoginGate, LoginSvr, SelGate七个工程文件。传奇的客户端源代码

有两个工程,WindHorn和Mir2Ex。

我分析的, 主要是VC SQL版本的, DELPHI翎风源码不做分析, 另外下载了乐都

WIL编辑器和乐都MPA地图编辑器这些工具.

传奇源码分析-客户端(WindHorn简述和传奇文件格式分析)

DirectX类库分析(WindHorn):

1. 注册表访问(读写)。

2. CWHApp派生CWHWindow,CWHWindow完成窗口的注册和创建。

CWHWindow派生出CWHDXGraphicWindow,CWHDXGraphicWindow调用CWHWindow完

成创建窗口功能,然后再调用CreateDXG()来初始化DirectX。

3. 在构造函数中获得CWHDXGraphicWindow句

柄。

Clear函数中调用在后台缓存上进行绘图操作,换页至屏幕。

ShowStatus函数,显示状态信息。

DefMainWndProc函数,调用CWHDXGraphicWindow->MainWndProcDXG消息处理。

4. 图象处理。加载位图,位图转换。优化处理。

5. 主页面处理。

6. 材质渲染。

WILTextureContainer: WIL容器类。m_pNext指向下一个WILTextureContainer,

单链表。

7. 从Data目录中加载Wix文件(内存映射)。

8. 处理DirectX效果。

文件类型格式探讨:

Wix文件:索引文件,根据索引查找到相应数据地址(数据文件)。

// WIX 文件头格式

typedef struct tagWIXFILEIMAGEINFO

{

CHAR szTmp[40]; // 库文件标题 'WEMADE

Entertainment inc.' WIL文件头

INT nIndexCount; // 图片数量

INT* pnPosition; // 位置

}WIXIMAGEINFO, *LPWIXIMAGEINFO;

我们下载一个Hedit编辑器打开一个Wil文件,分析一下。我们发现Wix文件中,

0x23地址(含该地址)以前的内容是都相同的,即为:#INDX v1.0-WEMADE

Entertainment inc.

Ofs44 0x2C的地方:存放着0B 00 00 00,高低位转换后为:0xB转换十进制数

为11(图片数量)Ofs48 0x30的地方:存放着38 04 00 00,高低位转换后为:

0x438 = 1080, 这个就是图象数据的开始位置。

我们用Wil编辑打开对应的Wil文件,发现,果然有11张图片。另外我们发现,

在Ofs = 44 -47之间的数据总是38 04 00 00,终于明白,所有的图片起始位

置是相同的。

Wil文件: 数据文件。

前面我们说了图象数据的开始位置为0x438 = 1080, 1080中有文件开头的44

字节都是相同的。所以,就是说有另外的1036字节是另有用途。1036中有1024

是一个256色的调色板。

我们看到图片位置数据为: 20 03 58 02, 转化为十六进制: 0x320, 0x258 刚

好就是800*600大小的图片。07 00 D4 FF。图片起始位置为:

Ofs 1088: 0x440 图片大小为480000

起始位置:0x440 1088 终止位置:0x7573F 481087 为了验证数据是否正确,

我们通过Wil工具,把第一幅图片导出来,然后用Hedit编辑器打开,经过对比,

我们发现,数据一致。大小一致。

第二张BMP图片(图片起始位置:0x436 10078) : F0 01 69 01 , 07 00

D4 FF

刚好大小。第二张Wil起始位置:Ofs:481096 0x75748

知道了图片格式,我们可以写一个抓图片格式的程序了。

传奇源码分析-客户端(全局变量与总体执行流程)

客户端:

传奇的客户端源代码有两个工程,WindHorn和Mir2Ex。

先剖析一下WindHorn工程。

1.CWHApp、CWHWindow和CWHDXGraphicWindow。Window程序窗口的创建。

CWHApp派生CWHWindow,CWHWindow又派生

CWHDXGraphicWindow。CWHWindow类

中完成窗口的注册和创建。CWHDXGraphicWindow调用CWHWindow完成创建窗口

功能,然后再调用CreateDXG()来初始化DirectX。


发布者:admin,转转请注明出处:http://www.yc00.com/news/1710615209a1787292.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信