下载 > 资源分类 >  开发技术 >  Web开发 > 盛大传奇外挂源代码(vc)

盛大传奇外挂源代码(vc)

2004-07-23 上传大小:85KB
VC编写,6.0以上版本的VC都可以编译.
说明:
  需要在工作目录放入盛大的GROUP.DAT才能显示区域服务器等信息.
在工作目录\DATA下放入MMAP.WIL,MMAP.WIX就可以显示大地图,在工作目录\MAP下放入盛大的地图就可以显示障碍地图.
|-MIRGUI.EXE
|-GROUP.DAT
+-DATA
|   |-MMAP.WIL
|   \-MMAP.WIX
+-MAP
    |-*.MAP(盛大传奇的地图文件)
DATA/MAP文件夹可以不存在.
但是GROUP.DAT必须存在,没有它就无法显示游戏区域和服务器,也就无法进入游戏.
bindef.h 二进制定义文件,看看就知道了,就是定义了一些B00001111类似的序列,方便二进制操作
mircode.cpp 消息解码相关
mircode.h 消息解码相关头文件
mircore.cpp 开始做测试用代码,现在都转移到MIRGAME.CPP中了。
mircore.h
mirgame.cpp 消息处理,动作处理的核心代码
mirgame.h
mirgamemap.cpp 游戏地图的处理,障碍地图的绘制
mirgamemap.h
mirgroup.cpp 对GROUP.DAT的处理,得到服务器和区域列表,并且有个接口可以将列表输出到COMBOBOX控件
mirgroup.h
mirgroup1.cpp 本来想把上面的处理写到类里面,可是时间问题,我就。。。。
mirgroup1.h
mirgui.cpp 界面处理,
mirgui.h
mirminimap.cpp 小地图处理和绘制类
mirminimap.h
mirmsg.cpp 消息发送接收等处理的类
mirmsg.h
mirprocmsg.cpp 本来想把消息处理独立开,不过后来没时间就。。。。
mirprocmsg.h
mirsocket.cpp 对socket得简单封装。。。。
mirsocket.h
MIRCODE的接口说明
mircode.cpp 详细介绍
char ucase(char c); 输入一个字符,如果是小写字母,返回这个字符的大写。如果是其他的,直接返回。
int hex2int(charc); 输入一个十六进制字符,转换成十进制int型,如果不是16进制字符,返回0
char int2hex(int v); 输入一个0-15的十进制,返回16进制字符
int UnNameCode( char * in, char * out ); 对人物出现消息内的人物名字进行解码,in为输入buffer,out为输出
int CodeGateCode( char * in, char * out); 对消息进行加密,就是盛大以前的一个补丁PROTECTMIR的功能
int UnGateCode( char * in,char * out); 对加密的消息进行解密.
int UnGameCode( char * p, BYTE*out ); 对游戏消息进行解码,返回解码后长度
int CodeGameCode( BYTE*in, int size,BYTE * out); 对游戏消息进行编码,in,输入缓冲,size输入字节,out输出缓冲,返回编码后长度
这些基本上就是传奇的编码和解码核心了。
传奇的消息格式,(二进制)
DWORD dwId;
WORD wCmd;
WORD wParam01;
WORD wParam02;
WORD wParam03;
char buffer[?]
MIRGAME接口说明!^_^
mirgame.cpp
DWORD MessageProc( PVOID * p ); 消息处理线程
class CMirGame   传奇游戏类
{
public:
friend DWORD MessageProc( PVOID * p ); 作为友员函数,方便访问
void Walk( int dir ); 请求行走 参数 方向
BOOL SelectChar( char * charname ); 选择人物 参数 角色名字
BOOL GetSelCharInfo( SELCHARINFO * pInfo ); 取得选人信息 参数 选人信息返回地址
BOOL EnterServer( char * ServerName ); 进入服务器 参数 服务器名字
BOOL Login( char * username, char * password ); 登陆 参数 账号,密码
BOOL OpenGateServer( char * ip ); 连接GATE服务器 参数 ip
int  GetString( char * string ); 分割/隔开的字符串的函数 参数 字符串
public:
void LogToList( HWND hList, char * line ); 向listbox写log
void LogChat( char * line,... );
void LogSystem( char * line,... );
public:
BOOL EnterGame( int CharIndex ); 进入游戏 参数 人物编号,0/1
BOOL CloseAll(); 关闭所有连接
BOOL EnterSelCharServer(); 进入选人服务器 无参数
BOOL CloseGateServer(); 关闭gate服务器 无参数
BOOL InitLogSystem( HWND hSysLog, HWND hChatLog, int MaxLine); 初始化log listbox
BOOL GetMsgInfo( SOCKET s ); 取得消息信息(废除)
BOOL GetMsg( MMSG * pMsg ); 得到一条消息 参数 返回消息指针
public:
BOOL RunThrough( int dir ); 穿人^_^ 参数 方向
CMirMiniMap * GetMiniMap(); 得到小地图 
CMirGameMap * GetGameMap(); 得到游戏障碍地图
void SetCharacterPos( int x, int y ); 设置角色坐标
void Turn( int dir ); 转向 参数 方向
void Run(int dir ); 跑 参数 方向
void HandleCommand( char * command ); 接受控制命令 参数 命令字符串(其实就是用另外一个人来控制该角色)
BOOL CloseSelCharServer(); 关闭选人服务器
BOOL Logout(); 退出游戏世界
BOOL Say( char * word, ...); 说话
BOOL StartGame(); 开始游戏(创建消息收取线程)
CMirGame(); 
virtual ~CMirGame();
private:
CMsgQueue2 m_MsgQueue;
DWORD m_dwGameState;
SOCKET m_sGate;
SOCKET m_sSelChar;
SOCKET m_sGame;
SELCHARINFO m_SelCharInfo;
BOOL m_bInGame;
char m_Account[32];
char m_SelCharIp[20];
char m_GameServerIp[20];
int m_SelCharPort;
int m_GameServerPort;
char m_SID[32];
private:
void ActionFail(); 动作失败处理
void ActionOk(); 动作成功处理
BOOL CanDoAction(); 是否可以做动作(当前是否有动作还没有被确认)
private:
int m_LeftHours;
HWND m_hSysLog;
HWND m_hChatLog;
TSTRING m_StringList[20];
int m_MaxLogLine;
char * m_tmpBuffer;
char * m_tmpBuffer2;
char * m_MsgLeftBuf;
ACTION_LAST m_LastAction;
CHARACTERINFO m_CharSelf;
CMirMsg m_MirMsg;
CMirSocket m_MirSocket;
CMirMiniMap m_MiniMap;
CMirGameMap m_GameMap;
};
MIRGAMEMAP
mirgamemap.cpp
class CMirGameMap  
{
public:
BOOL TestMap( int x, int y ); 测试地图坐标是否有障碍
BOOL TestMapTo( int x, int y, int dir ); 测试坐标的那个方向上的坐标是否有障碍
void SetPersonInfo( DWORD x, DWORD y, DWORD dir ); 设置角色坐标
BOOL SetGameMap( char * mapname, DWORD x, DWORD y ); 设置地图信息和当前坐标
void Draw( HDC dc, int dx, int dy); 在DC的DX,DY位置上绘制障碍地图
CMirGameMap();
virtual ~CMirGameMap();
private:
MIRMAPBLOCK* Loadmap( char * map ); 读取地图
MIRMAPHEADER m_Header;
MIRMAPBLOCK * m_pData;
DWORD m_xpos;
DWORD m_ypos;
DWORD m_dir;
int m_DrawWidth;
int m_DrawHeight;
int m_DrawMapWidth;
int m_DrawMapHeight;
MAPDRAWCOLOR m_DrawColor[MOBJ_TELEPORT + 1];
};
MIRGROUP
MIRGROUP
int SetAreaList( HWND hWnd ); 输出区域信息到指定的LISTBOX或者COMBOBOX
int SetServerCaptionList( HWND hWnd, int AreaID ); 输出服务器显示名字到指定的COMBOBOX
int GetServerName( int AreaID, int ServerIndex, char * ServerName ); 得到制定区的指定服务器的名字(消息中用到的名字)
int SetGroupFile( char * file ); 设置GROUP.DAT的文件
int GetIpAddress( int AreaID, char * IpAddr ); 得到区域登陆服务器的名字
MIRMINIMAP
MIRMINIMAP
class CMirMiniMap  
{
public:
void SetCurPos( int x, int y ); 设置当前坐标
void Draw( HDC dc, int x, int y, int w, int h ); 载dc上的x,y处绘制w,h大小的小地图
BOOL SetMMap( DWORD index ); 设置当前的小地图
BOOL InitMiniMap( char * wixfile, char * wilfile ); 初始化小地图资源信息
CMirMiniMap();
virtual ~CMirMiniMap();
private:
DWORD LoadOfs( char * szWixFile, DWORD ** ofsbuf ); 读取每个图片的偏移量信息
char * LoadBuf( DWORD idx, DWORD & width, DWORD & height ); 读取编号为idx的图片,返回大小
BOOL LoadPal( char * ppal); 读取调色板信息
int MakeBitmapHeader( BITMAPFILEHEADER * pBfHeader, BITMAPINFOHEADER * pBiHeader, int width, int height, int bits ); 创建bitmap头,用来绘制图片到dc
private:
DWORD * m_pResOfs;
DWORD m_dwCntMMap;
char m_szWixFile[1024];
char m_szWilFile[1024];
char * m_ImageData;
DWORD m_dwImageWidth;
DWORD m_dwImageHeight;
FILE * m_fpWilFile;
DWORD m_dwMapIndex;
st_mybi m_BitmapHeader;
DWORD m_xpos;
DWORD m_ypos;
};
MirSocket 说明
class CMirSocket  
{
public:
CMirSocket();
virtual ~CMirSocket();
int SetNoBlock( SOCKET s ); 设置无阻塞模式
void CloseConnection( SOCKET s ); 关闭连接
SOCKET OpenConnection( char * ip, unsigned short port ); 打开一个连接到IP,PORT
BOOL NetCleanup(); 关闭winsock调用
BOOL NetStartup(); 开始winsock调用
};
...展开收缩
综合评分:4(154位用户评分)
直接下载 开通VIP会员 免积分下载

评论共有15条

name
hezhuz2016-08-10 17:38:00
看这个源码真的能学习很多语法
name
jrhui2016-08-01 21:07:29
参考一下。还是有个资料
name
qingtiancao2015-01-02 11:32:08
终于看完了,算是有点收获
name
zyz1992070892014-11-16 14:38:57
值得参考,谢谢
name
lin326326062014-08-30 22:40:59
源码不算好,文档较少,不便于理解
name
winicehui2013-11-05 11:55:01
我基本上是属于完全看不懂那一行列的......
name
yunxtec2013-08-21 10:58:50
还算不错,就是资料比较少,谢谢
name
u0105431162013-06-30 09:18:04
源码不算好,文档较少,不便于理解
name
zqpettfeng2013-05-31 09:29:54
参考价值肯定是有的,无论多老,但是这个算上里边的很少的注释,能看懂,不是一会儿的功夫能做到的·感谢分享
name
maeol2013-04-04 13:49:09
虽然看不懂,慢慢研究吧!

评论资源

您不能发表评论,可能是以下原因:

登录后才能评论

待评论资源
 

热门专辑

关闭
img

spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip

CSDN VIP年卡 4000万程序员的必选现在开通,立省522元
下载
img

盛大传奇外挂源代码(vc)

会员到期时间: 剩余下载个数: 剩余C币:0 剩余积分:
VIP下载

积分不足!

资源所需积分 当前拥有积分
您可以选择
开通VIP年卡
4000万
程序员的必选
600万
绿色安全资源
现在开通
立省522元
或者
购买C币兑换积分 C币抽奖
img
资源所需积分 当前拥有积分 当前拥有C币
5 4 45
(仅够下载10个资源)
VIP年卡
全站1200个资源免积分下载
下载
img
资源所需积分 当前拥有积分 当前拥有C币
5 0 0
VIP年卡
全站1200个资源免积分下载
C币充值开通VIP年卡
img
资源所需积分 当前拥有积分 当前拥有C币
5 4 45
您的积分不足,将扣除 10 C币
VIP年卡
全站1200个资源免积分下载
下载
下载

兑换成功

你当前的下载分为234开始下载资源
你还不是VIP会员
开通VIP会员权限,免积分下载
立即开通

你下载资源过于频繁,请输入验证码

你下载资源过于频繁,请输入验证码

您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:webmaster@csdn.net!

举报

若举报审核通过,可奖励20下载分

  • 举报人:
  • 被举报人:
  • 举报的资源分:
  • *类型:
  • *详细原因: