游戏开发论坛

 找回密码
 立即注册
搜索
查看: 301165|回复: 281

mir3 源代码研究

[复制链接]

4

主题

106

帖子

115

积分

注册会员

Rank: 2

积分
115
发表于 2006-2-11 22:26:00 | 显示全部楼层 |阅读模式
Animationsc.wil  游戏里一些动画的图片(灯台、晾的衣服、椰子树等)
Cliffsc.wil          各种岩石、岩石与草地结合的图片
DMon-1.wil       怪物被麻痹的各种动作图
DMon-1.wil       同上怪物的阴影图
Dungeonsc.wil   一些岩石(蚂蚁洞)的图片
Equip.wil          各种物品在装备栏里的图片
Fmmap.wil        陆地上所有地图的小地图图片
Furnituresc.wil   房间里的物品及阶梯的图片
GameInter.wil    游戏界面所看到的图片
Ground.wil        物品在地面所显示时的图片
Horse.wil          三种马的图片
Housesc.wil       房子的图片
Innersc.wil        房子的四壁、房顶的图片(沙漠、土城房子)
Interface1c.wil  刚进入游戏到人物选择所看到各个图片
Inventory.wil    在商店里买东西时所显示的物品的图片
Magic.wil          各种魔法效果图
M-Hair.wil         男性头发图
M-Helmet1.wil   男性所戴头盔的各个方向的图片
M-Hum.wil        男性的各种模型、动作图片(裸身、穿衣服、骑马、钩鱼)
MIcon.wil         魔法图标的图片
mmap.wil         小地图的地图
Mon-1~13.wil   所有怪物的图片
MonS-1~13.wil 所有怪物的阴影图片
M-Weapon1~4.wil  男性拿在手里的武器的各个方向的图片
Npc.wil            游戏里NPC的图片
Npcface.wil       NPC的脸面图
object1~2c.wil  建筑物及一些NPC前杂物的图片
ProgUse.wil      在装备栏所看人物裸身图像及头发的图片
SmObjectsc.wil  一些建筑物、树木、杂物的图片
SmTilesc.wil      地面上的小图片
Tiles30c.wil       城内地砖、草地、草池边的图片
Tiles5c.wil        大海、海与陆地交错地、陆地表面的图片
Tilesc.wil          同上   
Wallsc.wil         城墙的图片
WM-Hair.wil      女性头发图片
WM-Helmet1.wil   女性所戴头盔的各个方向的图片
WM-Hum.wil     女性的各种模型、动作图片(裸身、穿衣服、骑马、钩鱼)
WM-Weapon1~4.wil 女性拿在手里的武器的各个方向的图片

0

主题

2

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2017-1-6 20:41:25 | 显示全部楼层
感谢楼主的文章,补上附件内容

mir3_源代码研究.7z

1.64 MB, 下载次数: 978

4

主题

106

帖子

115

积分

注册会员

Rank: 2

积分
115
 楼主| 发表于 2006-2-11 22:40:00 | 显示全部楼层

第二讲:interfacec2.wil 并不能用gameinter.wil替代


请看韩国源代码:
        m_pxInterImg->NewLoad(".\\Data\\gameinter.wil");
        m_xInterImgEx.NewLoad(".\\Data\\interfacec2.wil");
       
显然是在加载了gameinter.wil之后再加载interfacec2.wil,不可以简单替换掉!

4

主题

106

帖子

115

积分

注册会员

Rank: 2

积分
115
 楼主| 发表于 2006-2-11 22:53:00 | 显示全部楼层

第三讲:关于界面中文I/O问题的解决


        //韩文
        //HFONT                                        CreateGameFont(LPCSTR szFontName, INT nHeight, INT nWidth = 0, INT nWeight = FW_NORMAL, BOOL bItalic = FALSE, BOOL bULine = FALSE, BOOL bStrikeOut = FALSE, DWORD dwCharSet = HANGEUL_CHARSET);

        //中文
        HFONT                                         CreateGameFont(LPCSTR szFontName, INT nHeight, INT nWidth = 0, INT nWeight = FW_NORMAL, BOOL bItalic = FALSE, BOOL bULine = FALSE, BOOL bStrikeOut = FALSE, DWORD dwCharSet = GB2312_CHARSET);

0

主题

31

帖子

31

积分

注册会员

Rank: 2

积分
31
发表于 2006-2-12 11:41:00 | 显示全部楼层

Re:mir3 源代码研究

好,继续

4

主题

106

帖子

115

积分

注册会员

Rank: 2

积分
115
 楼主| 发表于 2006-2-13 08:58:00 | 显示全部楼层

第四讲:mir3 的wil文件格式破译


下面是 Interface1c.wil 文件的16进制码,该文件14959571字节。

0100494C49422076312E302D57454D414445000000008813D007000077572AC08002E001E8FFF0FF30E8FF6800C6500400000000005400C0008A01C1004E00010020006110E3204431453165316639A641C749C751C75186416539653944310321E320E320C220A218C318A2188210811082108210410820006110A21882106110611061106110611061106110611061106108410841084108410841084108410841082108400841084108610861104108200840084108610861084108200001002000200020002000200020002000200020006108C310C3102100C000A8005600C0008901C1005000010020004108A218C218C2180321453166398641A64186418641A749A749863965394531242924292429E320C320A318C318A2188110821082106110200041088218A21881106110611061106110611061106108610841.....

文件结构源代码为:

#pragma pack(1)

typedef struct tagWILFILEHEADER
{
        CHAR        szTmp[40];
        INT                nImageCount;
}WILFILEHEADER, *LPWILFILEHEADER;

typedef struct tagWILFILEIMAGEINFO
{
        SHORT        shWidth;
        SHORT        shHeight;
        SHORT        shPX;
        SHORT        shPY;
        DWORD        dwImageLength;
}WILIMAGEINFO, *LPWILIMAGEINFO;

typedef struct tagWIXFILEIMAGEINFO
{
        CHAR        szTmp[40];
        INT                nIndexCount;
        INT*        pnPosition;
}WIXIMAGEINFO, *LPWIXIMAGEINFO;


typedef struct tagNEWWILFILEHEADER
{
        SHORT        shComp;
        CHAR        szTitle[20];
        SHORT        shVer;
        INT                nImageCount;
}NEWWILFILEHEADER, *LPNEWWILFILEHEADER;

typedef struct tagNEWWILFILEIMAGEINFO
{
        SHORT        shWidth;
        SHORT        shHeight;
        SHORT        shPX;
        SHORT        shPY;
        CHAR        bShadow;                                       
        SHORT        shShadowPX;
        SHORT        shShadowPY;
        DWORD        dwImageLength;
}NEWWILIMAGEINFO, *LPNEWWILIMAGEINFO;
typedef struct tagNEWWIXFILEIMAGEINFO
{
        CHAR        szTitle[20];
        INT                nIndexCount;
        INT*        pnPosition;
}NEWWIXIMAGEINFO, *LPNEWWIXIMAGEINFO;

注意#pragma pack(1)是为了确保存储结构与逻辑结构有同样的布局,这样我们才可以确信文件映像里的字节顺序与我们的设计相符合。

有了上面的数据,数据结构和说明,应该很容易从上面的16制码中计算出Interface1c.wil 文件的长度正好是14959571字节,从而验证了网上流传 的mir2ex的源码正是光通现在运行的mir3的源码的稍早版本,c/c++版本的服务端也正是原传奇2的服务端,里面包含有大量的传奇早期版本的对照代码。

类似方法可以分析出map wix 文件的结构。全都是吻合的。

本人经过整整两个半月的日夜奋斗,现已经完成调试和改造,客户端可兼容盛大传奇与光通传奇,运行稳定流畅。

4

主题

106

帖子

115

积分

注册会员

Rank: 2

积分
115
 楼主| 发表于 2006-2-13 14:49:00 | 显示全部楼层

第四讲++ 宣告c/c++版本的服务器端已经改造成功



作晚11时30分,mir3的c/c++版本的服务器端改造版在我的私网上与改造后的客户端调试成功,使用机器人物成功博弈至现在,级别由最高级降至32级。
改造后的客户端可登录盛大传奇或光通官服进行部分游戏功能,试运行10小时并不能被服务器端察觉!

改造后的原c/c++代码已经全部规范为纯净的c++代码,原dx7部分已经全部改为dx8,界面部分与应用逻辑部分100%绝缘,使用rose建模后在vc6下编译通过,rose代码与纯净的c++代码代码完美结合,教科书级的全中文简体注释,整个客户端与服务器端的源码里找不出连续6行以上与原c/c++代码相同外观的代码,除简单的临时变量外,没有一个函数名字或类名字与原c/c++代码相同,但完全兼容盛大传奇2或光通mir3。

0

主题

38

帖子

40

积分

注册会员

Rank: 2

积分
40
发表于 2006-2-13 16:07:00 | 显示全部楼层

Re:mir3 源代码研究

不懂你杀意思

93

主题

1527

帖子

1532

积分

金牌会员

Rank: 6Rank: 6

积分
1532
发表于 2006-2-13 21:01:00 | 显示全部楼层

Re:mir3 源代码研究

无聊 那代码几年前就调通了....
还....

0

主题

38

帖子

40

积分

注册会员

Rank: 2

积分
40
发表于 2006-2-14 03:45:00 | 显示全部楼层

Re:mir3 源代码研究

你行,你继续灌,在你家的御水池里你随便,你版主当的真牛逼,
自己50还要笑人100
你发个技术分析帖子给我看看,还笑别人无聊,你做啥了?就你那态度,配当版主吗?你2001年啥都不懂当三孙子的时候咋过的?你发那帖子你好意思吗?
知道自己烂,你就潜水,别让我们看见你,看见GAMERES有个这么傻逼的版主,多去学学侦探吧,人家起码还知道自己傻逼,从来不发帖,没给seabug丢人,

0

主题

38

帖子

40

积分

注册会员

Rank: 2

积分
40
发表于 2006-2-14 03:52:00 | 显示全部楼层

Re:mir3 源代码研究

傻逼,我知道你无言以对,赶紧删吧,我知道你删除的技能已经练满级了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-25 01:58

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表