Rewrote network stack, started working on porting to 64-bit

This commit is contained in:
2022-03-12 11:39:41 +02:00
parent 64596d344c
commit a056345a7b
167 changed files with 1388 additions and 3085 deletions

View File

@@ -6,7 +6,6 @@ enum
HEADER_CG_HANDSHAKE = 0xff,
HEADER_CG_PONG = 0xfe,
HEADER_CG_TIME_SYNC = 0xfc,
HEADER_CG_KEY_AGREEMENT = 0xfb, // _IMPROVED_PACKET_ENCRYPTION_
HEADER_CG_LOGIN = 1,
HEADER_CG_ATTACK = 2,
@@ -94,9 +93,6 @@ enum
// HEADER_CG_ROULETTE = 200,
// HEADER_CG_RUNUP_MATRIX_ANSWER = 201,
//
HEADER_CG_PASSPOD_ANSWER = 202,
//NOTE : <20>̷<EFBFBD> <20><>XXX <20><><EFBFBD><EFBFBD> <20>̰<EFBFBD> Packet<65><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20>̷<EFBFBD><CCB7><EFBFBD> <20>ڵ<EFBFBD><DAB5>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ѿ<D1BE><EEB0A1>.
//enum<75><6D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ϴ<EFBFBD><CFB4><EFBFBD>. <20>ƴ<EFBFBD> namepsace<63><65> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ϴ<EFBFBD><CFB4><EFBFBD>..
//<2F><><EFBFBD><EFBFBD> packet generator<6F><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD> <20>ʴ´<CAB4>. <20>̷<EFBFBD> <20><>XX
@@ -109,8 +105,6 @@ enum
HEADER_CG_CLIENT_VERSION2 = 0xf1,
/********************************************************/
HEADER_GC_KEY_AGREEMENT_COMPLETED = 0xfa, // _IMPROVED_PACKET_ENCRYPTION_
HEADER_GC_KEY_AGREEMENT = 0xfb, // _IMPROVED_PACKET_ENCRYPTION_
HEADER_GC_TIME_SYNC = 0xfc,
HEADER_GC_PHASE = 0xfd,
HEADER_GC_HANDSHAKE = 0xff,
@@ -277,8 +271,6 @@ enum
HEADER_GC_ROULETTE = 200,
// END_ROULETTE
//
HEADER_GC_REQUEST_PASSPOD = 202,
HEADER_GC_REQUEST_PASSPOD_FAILED = 203,
HEADER_GC_SPECIFIC_EFFECT = 208,
@@ -334,7 +326,7 @@ typedef struct SPacketGGLogin
char szName[CHARACTER_NAME_MAX_LEN + 1];
DWORD dwPID;
BYTE bEmpire;
long lMapIndex;
LONG lMapIndex;
BYTE bChannel;
} TPacketGGLogin;
@@ -348,20 +340,20 @@ typedef struct SPacketGGRelay
{
BYTE bHeader;
char szName[CHARACTER_NAME_MAX_LEN + 1];
long lSize;
LONG lSize;
} TPacketGGRelay;
typedef struct SPacketGGNotice
{
BYTE bHeader;
long lSize;
LONG lSize;
} TPacketGGNotice;
typedef struct SPacketGGMonarchNotice
{
BYTE bHeader;
BYTE bEmpire;
long lSize;
LONG lSize;
} TPacketGGMonarchNotice;
//FORKED_ROAD
@@ -431,7 +423,7 @@ typedef struct SPacketGGXmasWarpSanta
{
BYTE bHeader;
BYTE bChannel;
long lMapIndex;
LONG lMapIndex;
} TPacketGGXmasWarpSanta;
typedef struct SPacketGGXmasWarpSantaReply
@@ -470,8 +462,8 @@ typedef struct SPacketGGWarpCharacter
{
BYTE header;
DWORD pid;
long x;
long y;
LONG x;
LONG y;
} TPacketGGWarpCharacter;
// HEADER_GG_GUILD_WAR_ZONE_MAP_INDEX = 15,
@@ -481,14 +473,14 @@ typedef struct SPacketGGGuildWarMapIndex
BYTE bHeader;
DWORD dwGuildID1;
DWORD dwGuildID2;
long lMapIndex;
LONG lMapIndex;
} TPacketGGGuildWarMapIndex;
typedef struct SPacketGGTransfer
{
BYTE bHeader;
char szName[CHARACTER_NAME_MAX_LEN + 1];
long lX, lY;
LONG lX, lY;
} TPacketGGTransfer;
typedef struct SPacketGGLoginPing
@@ -501,7 +493,7 @@ typedef struct SPacketGGBlockChat
{
BYTE bHeader;
char szName[CHARACTER_NAME_MAX_LEN + 1];
long lBlockDuration;
LONG lBlockDuration;
} TPacketGGBlockChat;
/* Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ŷ */
@@ -517,7 +509,7 @@ typedef struct command_handshake
BYTE bHeader;
DWORD dwHandshake;
DWORD dwTime;
long lDelta;
LONG lDelta;
} TPacketCGHandshake;
typedef struct command_login
@@ -624,16 +616,16 @@ typedef struct command_move
BYTE bFunc;
BYTE bArg;
BYTE bRot;
long lX;
long lY;
LONG lX;
LONG lY;
DWORD dwTime;
} TPacketCGMove;
typedef struct command_sync_position_element
{
DWORD dwVID;
long lX;
long lY;
LONG lX;
LONG lY;
} TPacketCGSyncPositionElement;
// <20><>ġ <20><><EFBFBD><EFBFBD>ȭ
@@ -794,7 +786,7 @@ typedef struct command_script_answer
typedef struct command_script_button
{
BYTE header;
unsigned int idx;
UINT idx;
} TPacketCGScriptButton;
typedef struct command_quest_input_string
@@ -817,7 +809,7 @@ typedef struct packet_quest_confirm
{
BYTE header;
char msg[64+1];
long timeout;
LONG timeout;
DWORD requestPID;
} TPacketGCQuestConfirm;
@@ -826,7 +818,7 @@ typedef struct packet_handshake
BYTE bHeader;
DWORD dwHandshake;
DWORD dwTime;
long lDelta;
LONG lDelta;
} TPacketGCHandshake;
enum EPhase
@@ -844,7 +836,6 @@ enum EPhase
PHASE_P2P,
PHASE_AUTH,
PHASE_TEEN,
PHASE_PASSPOD,
};
typedef struct packet_phase
@@ -918,9 +909,9 @@ typedef struct packet_add_char
DWORD dwVID;
float angle;
long x;
long y;
long z;
LONG x;
LONG y;
LONG z;
BYTE bType;
WORD wRaceNum;
@@ -1013,7 +1004,7 @@ typedef struct packet_main_character
DWORD dwVID;
WORD wRaceNum;
char szName[CHARACTER_NAME_MAX_LEN + 1];
long lx, ly, lz;
LONG lx, ly, lz;
BYTE empire;
BYTE skill_group;
} TPacketGCMainCharacter;
@@ -1031,7 +1022,7 @@ typedef struct packet_main_character3_bgm
WORD wRaceNum;
char szChrName[CHARACTER_NAME_MAX_LEN + 1];
char szBGMName[MUSIC_NAME_LEN + 1];
long lx, ly, lz;
LONG lx, ly, lz;
BYTE empire;
BYTE skill_group;
} TPacketGCMainCharacter3_BGM;
@@ -1049,7 +1040,7 @@ typedef struct packet_main_character4_bgm_vol
char szChrName[CHARACTER_NAME_MAX_LEN + 1];
char szBGMName[MUSIC_NAME_LEN + 1];
float fBGMVol;
long lx, ly, lz;
LONG lx, ly, lz;
BYTE empire;
BYTE skill_group;
} TPacketGCMainCharacter4_BGM_VOL;
@@ -1069,11 +1060,11 @@ typedef struct packet_skill_level
typedef struct packet_point_change
{
int header;
INT header;
DWORD dwVID;
BYTE type;
long amount;
long value;
LONG amount;
LONG value;
} TPacketGCPointChange;
typedef struct packet_stun
@@ -1094,7 +1085,7 @@ struct TPacketGCItemDelDeprecated
TItemPos Cell;
DWORD vnum;
BYTE count;
long alSockets[ITEM_SOCKET_MAX_NUM];
LONG alSockets[ITEM_SOCKET_MAX_NUM];
TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
};
@@ -1107,7 +1098,7 @@ typedef struct packet_item_set
DWORD flags;
DWORD anti_flags;
bool highlight;
long alSockets[ITEM_SOCKET_MAX_NUM];
LONG alSockets[ITEM_SOCKET_MAX_NUM];
TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
} TPacketGCItemSet;
@@ -1138,14 +1129,14 @@ typedef struct packet_item_update
BYTE header;
TItemPos Cell;
BYTE count;
long alSockets[ITEM_SOCKET_MAX_NUM];
LONG alSockets[ITEM_SOCKET_MAX_NUM];
TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
} TPacketGCItemUpdate;
typedef struct packet_item_ground_add
{
BYTE bHeader;
long x, y, z;
LONG x, y, z;
DWORD dwVID;
DWORD dwVnum;
} TPacketGCItemGroundAdd;
@@ -1213,7 +1204,7 @@ struct packet_shop_item
DWORD price;
BYTE count;
BYTE display_pos;
long alSockets[ITEM_SOCKET_MAX_NUM];
LONG alSockets[ITEM_SOCKET_MAX_NUM];
TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
};
@@ -1243,7 +1234,7 @@ typedef struct packet_shop_update_item
typedef struct packet_shop_update_price
{
int iPrice;
INT iPrice;
} TPacketGCShopUpdatePrice;
typedef struct packet_shop // <20><><EFBFBD><EFBFBD> <20><>Ŷ
@@ -1261,7 +1252,7 @@ struct packet_exchange
DWORD arg1; // vnum
TItemPos arg2; // cell
DWORD arg3; // count
long alSockets[ITEM_SOCKET_MAX_NUM];
LONG alSockets[ITEM_SOCKET_MAX_NUM];
TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
};
@@ -1320,8 +1311,8 @@ typedef struct packet_move
BYTE bArg;
BYTE bRot;
DWORD dwVID;
long lX;
long lY;
LONG lX;
LONG lY;
DWORD dwTime;
DWORD dwDuration;
} TPacketGCMove;
@@ -1338,8 +1329,8 @@ typedef struct packet_ownership
typedef struct packet_sync_position_element
{
DWORD dwVID;
long lX;
long lY;
LONG lX;
LONG lY;
} TPacketGCSyncPositionElement;
// <20><>ġ <20><><EFBFBD><EFBFBD>ȭ
@@ -1361,7 +1352,7 @@ typedef struct command_fly_targeting
{
BYTE bHeader;
DWORD dwTargetVID;
long x, y;
LONG x, y;
} TPacketCGFlyTargeting;
typedef struct packet_fly_targeting
@@ -1369,7 +1360,7 @@ typedef struct packet_fly_targeting
BYTE bHeader;
DWORD dwShooterVID;
DWORD dwTargetVID;
long x, y;
LONG x, y;
} TPacketGCFlyTargeting;
typedef struct packet_shoot
@@ -1423,9 +1414,9 @@ typedef struct packet_target
typedef struct packet_warp
{
BYTE bHeader;
long lX;
long lY;
long lAddr;
LONG lX;
LONG lY;
LONG lAddr;
WORD wPort;
} TPacketGCWarp;
@@ -1665,13 +1656,13 @@ typedef struct command_safebox_money
{
BYTE bHeader;
BYTE bState;
long lMoney;
LONG lMoney;
} TPacketCGSafeboxMoney;
typedef struct packet_safebox_money_change
{
BYTE bHeader;
long lMoney;
LONG lMoney;
} TPacketGCSafeboxMoneyChange;
// Guild
@@ -1878,8 +1869,8 @@ typedef struct packet_dungeon
typedef struct packet_dungeon_dest_position
{
long x;
long y;
LONG x;
LONG y;
} TPacketGCDungeonDestPosition;
typedef struct SPacketGCShopSign
@@ -1942,8 +1933,8 @@ typedef struct SPacketGCRefineInformaion
DWORD src_vnum;
DWORD result_vnum;
BYTE material_count;
int cost; // <20>ҿ<EFBFBD> <20><><EFBFBD><EFBFBD>
int prob; // Ȯ<><C8AE>
INT cost; // <20>ҿ<EFBFBD> <20><><EFBFBD><EFBFBD>
INT prob; // Ȯ<><C8AE>
TRefineMaterial materials[REFINE_MATERIAL_MAX_NUM];
} TPacketGCRefineInformation;
@@ -1951,8 +1942,8 @@ struct TNPCPosition
{
BYTE bType;
char name[CHARACTER_NAME_MAX_LEN+1];
long x;
long y;
LONG x;
LONG y;
};
typedef struct SPacketGCNPCPosition
@@ -2013,7 +2004,7 @@ typedef struct pakcet_view_equip
struct {
DWORD vnum;
BYTE count;
long alSockets[ITEM_SOCKET_MAX_NUM];
LONG alSockets[ITEM_SOCKET_MAX_NUM];
TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
} equips[WEAR_MAX_NUM];
} TPacketViewEquip;
@@ -2021,8 +2012,8 @@ typedef struct pakcet_view_equip
typedef struct
{
DWORD dwID;
long x, y;
long width, height;
LONG x, y;
LONG width, height;
DWORD dwGuildID;
} TLandPacketElement;
@@ -2035,7 +2026,7 @@ typedef struct packet_land_list
typedef struct
{
BYTE bHeader;
long lID;
LONG lID;
char szName[32+1];
DWORD dwVID;
BYTE bType;
@@ -2044,14 +2035,14 @@ typedef struct
typedef struct
{
BYTE bHeader;
long lID;
long lX, lY;
LONG lID;
LONG lX, lY;
} TPacketGCTargetUpdate;
typedef struct
{
BYTE bHeader;
long lID;
LONG lID;
} TPacketGCTargetDelete;
typedef struct
@@ -2103,7 +2094,7 @@ typedef struct packet_damage_info
BYTE header;
DWORD dwVID;
BYTE flag;
int damage;
INT damage;
} TPacketGCDamageInfo;
enum
@@ -2125,18 +2116,6 @@ typedef struct command_runup_matrix_answer
char szAnswer[RUNUP_MATRIX_ANSWER_MAX_LEN + 1];
} TPacketCGRunupMatrixAnswer;
typedef struct packet_passpod
{
BYTE bHeader;
char szAnswer[8+1];
} TPacketCGPasspod;
typedef struct packet_passpod_failed
{
BYTE bHeader;
char szMessage[128];
} TPacketCGPasspodFailed;
typedef struct tag_GGSiege
{
BYTE bHeader;
@@ -2148,14 +2127,14 @@ typedef struct SPacketGGMonarchTransfer
{
BYTE bHeader;
DWORD dwTargetPID;
long x;
long y;
LONG x;
LONG y;
} TPacketMonarchGGTransfer;
typedef struct SPacketGGPCBangUpdate
{
BYTE bHeader;
unsigned long ulPCBangID;
ULONG ulPCBangID;
} TPacketPCBangUpdate;
typedef struct SPacketGGCheckAwakeness
@@ -2186,7 +2165,7 @@ typedef struct SPacketGCHybridCryptKeys
DWORD GetStreamSize()
{
return sizeof(bHeader) + sizeof(WORD) + sizeof(int) + KeyStreamLen;
return sizeof(bHeader) + sizeof(WORD) + sizeof(INT) + KeyStreamLen;
}
BYTE* GetStreamData()
@@ -2210,7 +2189,7 @@ typedef struct SPacketGCHybridCryptKeys
BYTE bHeader;
WORD uDynamicPacketSize; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<><C5AC> DynamicPacketHeader <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD> -_-;
int KeyStreamLen;
INT KeyStreamLen;
BYTE* pDataKeyStream;
private:
@@ -2234,7 +2213,7 @@ typedef struct SPacketGCPackageSDB
DWORD GetStreamSize()
{
return sizeof(bHeader) + sizeof(WORD) + sizeof(int) + iStreamLen;
return sizeof(bHeader) + sizeof(WORD) + sizeof(INT) + iStreamLen;
}
BYTE* GetStreamData()
@@ -2258,7 +2237,7 @@ typedef struct SPacketGCPackageSDB
BYTE bHeader;
WORD uDynamicPacketSize; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<><C5AC> DynamicPacketHeader <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD> -_-;
int iStreamLen;
INT iStreamLen;
BYTE* m_pDataSDBStream;
private:
@@ -2267,24 +2246,6 @@ private:
} TPacketGCPackageSDB;
#ifdef _IMPROVED_PACKET_ENCRYPTION_
struct TPacketKeyAgreement
{
static const int MAX_DATA_LEN = 256;
BYTE bHeader;
WORD wAgreedLength;
WORD wDataLength;
BYTE data[MAX_DATA_LEN];
};
struct TPacketKeyAgreementCompleted
{
BYTE bHeader;
BYTE data[3]; // dummy (not used)
};
#endif // _IMPROVED_PACKET_ENCRYPTION_
#define MAX_EFFECT_FILE_NAME 128
typedef struct SPacketGCSpecificEffect
{
@@ -2337,15 +2298,15 @@ typedef struct SPacketGCDragonSoulRefine
typedef struct SPacketCGStateCheck
{
BYTE header;
unsigned long key;
unsigned long index;
ULONG key;
ULONG index;
} TPacketCGStateCheck;
typedef struct SPacketGCStateCheck
{
BYTE header;
unsigned long key;
unsigned long index;
ULONG key;
ULONG index;
unsigned char state;
} TPacketGCStateCheck;