stoneage8.5/石器时代8.5客户端最新源代码/石器源码/wgs/message.h
2020-06-23 15:27:59 +08:00

177 lines
4.6 KiB
C

/*-----------------------------------------------
Message.h -- Message format definition
(c) Ðí°ÙʤCary Hsu, 1999.8.18
+----+------------+------------------+
|name|Data len'\0'| Data |
|1B | 5 Byte | 0~4090B |
+----+------------+------------------+
-----------------------------------------------*/
#ifndef __MESSAGE
#define __MESSAGE
#include <windows.h>
// Message name
#define M_NULL '@'
#define M_ECHO 'A'
#define M_HELO 'H' // H ID CodingData
#define M_HELO1 'I' // H ID CodingData
#define M_HELO2 'J' // H ID CodingData
#define M_REDI 'R' // R 202.52.121.208:10000 pid
#define M_MESG 'M'
#define M_ERRO 'E' // (E Error) or E ID
#define M_SKEY 'S' // S 1234567
#define M_LOAD 'L' // L ÈËÊý
#define M_ACKN 'K' // K ID CodingData
#define M_DATA 'D' // D ID SaveData
#define M_GOTO 'G' // G 202.52.121.208
#define M_LINE 'N' // N SubMessage
#define M_GAME '(' // M GameMessage
#define M_PKEY 'T'
#define M_CONT 'U'
// SubMessage
#define A_SEND 'T' // A_SEND string \0
#define A_WHISPER 'W' // A_WHISPER player \n string \0
#define A_QUERY 'P' // A_QUERY PlayerName \0
#define A_NEW 'N' // A_NEW description \0
#define A_QUIT 'Q' // A_QUIT \0
#define A_KICK 'K' // A_KICK \0
#define A_START 'S' // A_START \0
#define A_GAMEOVER 'G' // A_GAMEOVER PlayerName \n score \0
#define A_JOIN 'J' // A_JOIN PlayerName \0
#define A_REFRESH 'R' // A_REFRESH \0
//#define A_CLIENT 'C' // A_CLIENT \0
#define A_ENTER 'E' // A_ENTER RoomName \0
#define A_EXIT 'X' // A_EXIT \0
#define A_ERROR 'Z'
//
#define B_PLAYER 'y' // B_PLAYER numPlayer \n state \n PlayerName \n ..... \0
#define B_DESK 'd' // B_DESK numDesk \n state \n DealerName \n description \n ...... \0
#define B_ROOM 'r' // B_ROOM numRoom \n numUser \n Name \n ......\0
#define B_SEND 't' // B_SEND PlayerName:string \0
#define B_WHISPER 'w' // B_WHISPER PlayerName:string \0
#define B_QUERY 'p' // B_QUERY string \0
#define B_NEW 'n' // B_NEW Y \0 or B_NEW N cause \0
#define B_QUIT 'q' // B_QUIT \0
#define B_SOMEONE 'o' // B_SOMEONE PlayerName \n IP \0
#define B_KICK 'k' // B_KICK \0
#define B_START 's' // B_START \0
#define B_GAMEOVER 'g' // B_GAMEOVER numChart \n PlayerName \n score \n ...... \0
#define B_JOIN 'j' // B_JOIN Y IP \0 or B_JOIN N cause \0
//#define B_CLIENT 'c' // B_CLIENT \0
#define B_ENTER 'e' // B_ENTER Y \0 or B_ENTER N cause \0
#define B_EXIT 'x' // B_EXIT Y \0 or B_EXIT N cause \0
#define B_ERROR 'z'
// Game Message
#define S_NEWGAME 'N' // S_NEW parameter
#define S_GAMEOVER 'O' // S_GAMEOVER
#define S_BORNDICE 'B'
#define S_WAVEFLAG 'W'
#define S_RAISECOUNT 'R' //for RaiseCount
#define S_JiaYiu 'J' //forJiaYiuCount
#define S_CLIENTKEY 'C' //for ParamSav
#define S_SERVERKEY 'S'
#define S_WANTOVER 'A'
#define S_ECHO 'E'
#define S_TOKEN 'T'
//
#define C_NEW 'n' // C_NEW
#define C_ECHO 'e'
#define C_CANSEND 'x'
//#ifdef _STONDEBUG_
#define NO_WGS //²»Ê¹ÓÃWGSÈÏÖ¤
//#endif
struct Parameter
{
char *lpstrParam;
int iLen;
Parameter *next;
Parameter(){
lpstrParam=NULL;
next=NULL;}
};
struct MessNode
{
int nParam;
Parameter *param;
MessNode *next;
MessNode(){
param=NULL;
next=NULL;}
};
enum
{
WGS=1,
CS,
GS
};
//state of encrypt or decrypt
enum
{
E_INIT,
E_ECB,
E_NO
};
#define FORMAT_APPEND 0x00
#define FORMAT_START 0x01
#define FORMAT_FINISH 0x02
#define FORMAT_ONLYONE 0x03
#ifdef _BACK_VERSION ////
#define SZ_ECB "9304001" //²úÆ·ÐòºÅ
#else
#ifdef _PK_SERVER
#define SZ_ECB "9306001"
#else
#define SZ_ECB "8904001"
#endif
#endif
extern const DWORD RET_OK;
extern const DWORD RET_MEMORY;
extern const DWORD RET_PARAM;
extern MessNode *messNew;
extern MessNode *messHead;
extern MessNode *messTail;
extern DWORD dwServer;
extern int iWGS;
extern TCHAR szWGS[];
extern WORD wWGS;
extern TCHAR szCSIP[];
extern WORD wCS;
extern TCHAR szError[1024];
void AddParamForFormat(LPSTR lpstr,int iLen,DWORD flag);
void AddParamForFormat(char ch,DWORD flag);
LPTSTR GetString(int &iLen,LPTSTR lpstrEncrypt);
DWORD AnalyzeMessage(LPSTR lpstr,int iStrLen);
Parameter *ReleaseMessHeadParam();
void RemoveMessHead();
void ReleaseMessList();
BOOL GetIP_PORT(Parameter *param);
void GetEncrypt(Parameter *param);
void PKey_Init();
void ReleaseSendData();
void ipAddressAnalyze( );
BOOL ReadWGSMessage(LPSTR lpstr,int &iStrLen);
void DoHellow();
void DoSKey();
#ifdef _OMIT_WGS
void testtest();
LPTSTR O_WGS_Format();
#endif
DWORD GetCafeNumber();
#ifdef NO_WGS
void SetTestServer();
#endif
#endif