mirror of
https://github.com/pvpgn/pvpgn-server
synced 2026-08-24 18:23:04 -04:00
Convert D2GS codebase from C to C++98
This commit is contained in:
parent
aa47e986d9
commit
0ba5433743
29 changed files with 3239 additions and 142 deletions
|
|
@ -76,8 +76,8 @@ typedef struct
|
|||
{
|
||||
PLAYERMARK PlayerMark;
|
||||
DWORD dwReserved;
|
||||
UCHAR CharName[16];
|
||||
UCHAR AcctName[16];
|
||||
char CharName[16];
|
||||
char AcctName[16];
|
||||
} PLAYERINFO, * PPLAYERINFO, * LPPLAYERINFO;
|
||||
|
||||
typedef struct
|
||||
|
|
@ -87,13 +87,13 @@ typedef struct
|
|||
DWORD WorldEventCurrentSpawnCount;
|
||||
DWORD WorldEventLastSpawnCount;
|
||||
DWORD WorldEventNextSpawnCount;
|
||||
__time32_t WorldEventLastSellTime; // DWORD LastSellTickCount;
|
||||
__time32_t WorldEventLastSpawnTime; // DWORD LastSpawnTickCount;
|
||||
time_t WorldEventLastSellTime; // DWORD LastSellTickCount;
|
||||
time_t WorldEventLastSpawnTime; // DWORD LastSpawnTickCount;
|
||||
DWORD WorldEventTotalSpawn;
|
||||
LPCSTR WorldEventKeyItem; // 128 bytes
|
||||
} WORLDEVENT, * PWORLDEVENT, * LPWORLDEVENT;
|
||||
|
||||
typedef BOOL (__stdcall * D2GSStartFunc ) (LPD2GSINFO lpD2GSInfo);
|
||||
typedef /*BOOL*/DWORD (__stdcall * D2GSStartFunc ) (/*LPD2GSINFO*/ LPVOID lpD2GSInfo);
|
||||
typedef BOOL (__stdcall * D2GSNewEmptyGameFunc) (LPCSTR lpGameName, LPCSTR lpGamePass,
|
||||
LPCSTR lpGameDesc, DWORD dwGameFlag,
|
||||
BYTE bTemplate, BYTE bReserved1,
|
||||
|
|
|
|||
|
|
@ -1,60 +1,58 @@
|
|||
enable_language(C)
|
||||
|
||||
add_executable(d2gs WIN32
|
||||
bn_types.h
|
||||
bnethash.c
|
||||
bnethash.cpp
|
||||
bnethash.h
|
||||
callback.c
|
||||
callback.cpp
|
||||
callback.h
|
||||
charlist.c
|
||||
charlist.cpp
|
||||
charlist.h
|
||||
config.c
|
||||
config.cpp
|
||||
config.h
|
||||
connection.h
|
||||
d2cs_d2gs_character.h
|
||||
d2cs_d2gs_protocol.h
|
||||
d2dbs_d2gs_protocol.h
|
||||
d2gamelist.c
|
||||
d2gamelist.cpp
|
||||
d2gamelist.h
|
||||
d2ge.c
|
||||
d2ge.cpp
|
||||
d2ge.h
|
||||
d2gs.h
|
||||
debug.c
|
||||
debug.cpp
|
||||
debug.h
|
||||
eventlog.c
|
||||
eventlog.cpp
|
||||
eventlog.h
|
||||
handle_s2s.c
|
||||
handle_s2s.cpp
|
||||
handle_s2s.h
|
||||
hexdump.c
|
||||
hexdump.cpp
|
||||
hexdump.h
|
||||
list.h
|
||||
main.c
|
||||
net.c
|
||||
main.cpp
|
||||
net.cpp
|
||||
net.h
|
||||
psapi.h
|
||||
telnetd.c
|
||||
telnetd.cpp
|
||||
telnetd.h
|
||||
timer.c
|
||||
timer.cpp
|
||||
timer.h
|
||||
utils.c
|
||||
utils.cpp
|
||||
utils.h
|
||||
vars.c
|
||||
vars.cpp
|
||||
vars.h
|
||||
versioncheck.c
|
||||
versioncheck.cpp
|
||||
versioncheck.h
|
||||
D2Server.ico
|
||||
d2server.rc
|
||||
resource.h)
|
||||
|
||||
target_compile_definitions(d2gs PRIVATE D2GS)
|
||||
target_compile_definitions(d2gs PRIVATE D2GS _USE_32BIT_TIME_T)
|
||||
|
||||
target_link_libraries(d2gs PRIVATE ws2_32 d2gelib)
|
||||
|
||||
set_target_properties(d2gs
|
||||
PROPERTIES
|
||||
C_STANDARD 99
|
||||
C_STANDARD_REQUIRED YES
|
||||
C_EXTENSIONS NO)
|
||||
CXX_STANDARD 98
|
||||
CXX_STANDARD_REQUIRED YES
|
||||
CXX_EXTENSIONS NO)
|
||||
|
||||
install(TARGETS d2gs DESTINATION ${SBINDIR})
|
||||
|
||||
|
|
|
|||
|
|
@ -154,7 +154,7 @@ extern int bnet_hash(t_hash * hashout, unsigned int size, void const * datain)
|
|||
|
||||
hash_init(hashout);
|
||||
|
||||
data = datain;
|
||||
data = (const unsigned char*)datain;
|
||||
while (size>0)
|
||||
{
|
||||
if (size>64)
|
||||
|
|
@ -77,7 +77,7 @@ void charlist_flush(void)
|
|||
}
|
||||
|
||||
|
||||
void *charlist_getdata(unsigned char const *charname, int type)
|
||||
void *charlist_getdata(const char* charname, int type)
|
||||
{
|
||||
D2CHARLIST *pcl;
|
||||
unsigned int hashval;
|
||||
|
|
@ -112,7 +112,7 @@ void *charlist_getdata(unsigned char const *charname, int type)
|
|||
}
|
||||
|
||||
|
||||
int charlist_insert(unsigned char *charname, void *pCharInfo, void *pGameInfo)
|
||||
int charlist_insert(const char* charname, void *pCharInfo, void *pGameInfo)
|
||||
{
|
||||
D2CHARLIST *pcl, *ptmp;
|
||||
unsigned int hashval;
|
||||
|
|
@ -148,7 +148,7 @@ int charlist_insert(unsigned char *charname, void *pCharInfo, void *pGameInfo)
|
|||
}
|
||||
|
||||
|
||||
int charlist_delete(unsigned char *charname)
|
||||
int charlist_delete(const char* charname)
|
||||
{
|
||||
D2CHARLIST *pcl, *ptmp;
|
||||
unsigned int hashval;
|
||||
|
|
@ -24,7 +24,7 @@
|
|||
|
||||
/* charlist info */
|
||||
typedef struct RAW_D2CHARLIST {
|
||||
unsigned char charname[MAX_CHARNAME_LEN];
|
||||
char charname[MAX_CHARNAME_LEN];
|
||||
void *pCharInfo;
|
||||
void *pGameInfo;
|
||||
struct RAW_D2CHARLIST *next;
|
||||
|
|
@ -36,9 +36,9 @@ unsigned int string_hash(char const *string);
|
|||
int charlist_init(unsigned int tbllen);
|
||||
int charlist_destroy(void);
|
||||
void charlist_flush(void);
|
||||
void *charlist_getdata(unsigned char const *charname, int type);
|
||||
int charlist_insert(unsigned char *charname, void *pCharInfo, void *pGameInfo);
|
||||
int charlist_delete(unsigned char *charname);
|
||||
void *charlist_getdata(const char* charname, int type);
|
||||
int charlist_insert(const char* charname, void *pCharInfo, void *pGameInfo);
|
||||
int charlist_delete(const char* charname);
|
||||
|
||||
|
||||
#endif /* INCLUDED_CHARLIST_H */
|
||||
|
|
@ -211,7 +211,7 @@ int RegkeyReadString(HKEY hKey, LPCTSTR name, char* buf, DWORD buflen)
|
|||
return FALSE;
|
||||
dwLen = buflen;
|
||||
ZeroMemory(buf, buflen);
|
||||
lReturn = RegQueryValueEx(hKey, name, NULL, &dwType, buf, &dwLen);
|
||||
lReturn = RegQueryValueEx(hKey, name, NULL, &dwType, (LPBYTE)buf, &dwLen);
|
||||
if (lReturn == ERROR_SUCCESS)
|
||||
{
|
||||
*(buf + buflen - 1) = 0;
|
||||
|
|
@ -7,6 +7,7 @@
|
|||
|
||||
#ifdef D2GS
|
||||
# include "bn_types.h"
|
||||
# include "d2gs.h"
|
||||
#pragma pack(push, pack01, 1)
|
||||
#endif
|
||||
|
||||
|
|
@ -23,9 +24,9 @@ typedef struct
|
|||
bn_int checksum;
|
||||
bn_int total_play_time;/* total in game play time */
|
||||
bn_int reserved[6];
|
||||
unsigned char charname[MAX_CHARNAME_LEN];
|
||||
unsigned char account[MAX_ACCTNAME_LEN];
|
||||
unsigned char realmname[MAX_REALMNAME_LEN];
|
||||
char charname[MAX_CHARNAME_LEN];
|
||||
char account[MAX_ACCTNAME_LEN];
|
||||
char realmname[MAX_REALMNAME_LEN];
|
||||
} t_d2charinfo_header;
|
||||
|
||||
typedef struct
|
||||
|
|
@ -40,7 +41,7 @@ typedef struct
|
|||
{
|
||||
bn_short header; /* 0x84 0x80 */
|
||||
bn_byte gfx[11];
|
||||
bn_byte class;
|
||||
bn_byte chclass;
|
||||
bn_byte color[11];
|
||||
bn_byte level;
|
||||
bn_byte status;
|
||||
|
|
|
|||
|
|
@ -237,8 +237,8 @@ int D2GSGameListDelete(D2GAMEINFO *lpGameInfo)
|
|||
* Purpose: to insert a char into the game
|
||||
* Return: 0(success), other(failed)
|
||||
*********************************************************************/
|
||||
int D2GSInsertCharIntoGameInfo(D2GAMEINFO *lpGameInfo, DWORD token, UCHAR *AcctName,
|
||||
UCHAR *CharName, UCHAR* RealmIPName, DWORD CharLevel, WORD CharClass, WORD EnterGame)
|
||||
int D2GSInsertCharIntoGameInfo(D2GAMEINFO *lpGameInfo, DWORD token, const char* AcctName,
|
||||
const char* CharName, const char* RealmIPName, DWORD CharLevel, WORD CharClass, WORD EnterGame)
|
||||
{
|
||||
D2CHARINFO *lpCharInfo;
|
||||
D2CHARINFO *lpTemp;
|
||||
|
|
@ -327,8 +327,8 @@ int D2GSDeleteCharFromGameInfo(D2GAMEINFO *lpGameInfo, D2CHARINFO *lpCharInfo)
|
|||
* (receive join game request, but not EnterGame event callback)
|
||||
* Return: 0(success), other(failed)
|
||||
*********************************************************************/
|
||||
int D2GSInsertCharIntoPendingList(DWORD token, UCHAR *AcctName,
|
||||
UCHAR *CharName, UCHAR* RealmIPName, DWORD CharLevel, WORD CharClass, D2GAMEINFO *lpGame)
|
||||
int D2GSInsertCharIntoPendingList(DWORD token, const char* AcctName,
|
||||
const char* CharName, const char* RealmIPName, DWORD CharLevel, WORD CharClass, D2GAMEINFO *lpGame)
|
||||
{
|
||||
D2CHARINFO *lpCharInfo;
|
||||
D2CHARINFO *lpTemp;
|
||||
|
|
@ -407,7 +407,7 @@ int D2GSDeletePendingChar(D2CHARINFO *lpCharInfo)
|
|||
* Purpose: to insert get data request to the list
|
||||
* Return: 0(success), other(failed)
|
||||
*********************************************************************/
|
||||
int D2GSInsertGetDataRequest(UCHAR *AcctName, UCHAR *CharName, DWORD dwClientId, DWORD dwSeqno)
|
||||
int D2GSInsertGetDataRequest(const char* AcctName, const char* CharName, DWORD dwClientId, DWORD dwSeqno)
|
||||
{
|
||||
D2GETDATAREQUEST *lpGetDataReq;
|
||||
D2GETDATAREQUEST *lpTemp;
|
||||
|
|
@ -492,7 +492,7 @@ D2GAMEINFO *D2GSFindGameInfoByGameId(WORD GameId)
|
|||
* Purpose: to find a game info by game name
|
||||
* Return: NULL(not found or failed), other(success)
|
||||
*********************************************************************/
|
||||
D2GAMEINFO *D2GSFindGameInfoByGameName(UCHAR *GameName)
|
||||
D2GAMEINFO *D2GSFindGameInfoByGameName(const char* GameName)
|
||||
{
|
||||
D2GAMEINFO *lpGame;
|
||||
|
||||
|
|
@ -515,7 +515,7 @@ D2GAMEINFO *D2GSFindGameInfoByGameName(UCHAR *GameName)
|
|||
* Purpose: to find a char by char name in pending char list
|
||||
* Return: NULL(not found or failed), other(success)
|
||||
*********************************************************************/
|
||||
D2CHARINFO *D2GSFindCharInGameByCharName(D2GAMEINFO *lpGame, UCHAR *CharName)
|
||||
D2CHARINFO *D2GSFindCharInGameByCharName(D2GAMEINFO *lpGame, const char* CharName)
|
||||
{
|
||||
D2CHARINFO *lpChar;
|
||||
|
||||
|
|
@ -559,7 +559,7 @@ D2CHARINFO *D2GSFindPendingCharByToken(DWORD token)
|
|||
* Purpose: to find a char by char name in pending char list
|
||||
* Return: NULL(not found or failed), other(success)
|
||||
*********************************************************************/
|
||||
D2CHARINFO *D2GSFindPendingCharByCharName(UCHAR *CharName)
|
||||
D2CHARINFO *D2GSFindPendingCharByCharName(const char *CharName)
|
||||
{
|
||||
D2CHARINFO *lpChar;
|
||||
|
||||
|
|
@ -637,8 +637,8 @@ void D2GSGetDataRequestTimerRoutine(void)
|
|||
MOTDCLIENT* lpBuffer = NULL;
|
||||
D2GETDATAREQUEST *lpGetDataReq, *lpTimeOutReq;
|
||||
DWORD dwClientId;
|
||||
u_char AcctName[MAX_ACCTNAME_LEN];
|
||||
u_char CharName[MAX_CHARNAME_LEN];
|
||||
char AcctName[MAX_ACCTNAME_LEN];
|
||||
char CharName[MAX_CHARNAME_LEN];
|
||||
D2GAMEINFO *lpGameInfo;
|
||||
D2CHARINFO *lpCharInfo;
|
||||
|
||||
|
|
@ -654,7 +654,7 @@ void D2GSGetDataRequestTimerRoutine(void)
|
|||
lpGetDataReq = lpGetDataReq->next;
|
||||
if (lpTimeOutReq) {
|
||||
dwClientId = lpTimeOutReq->ClientId;
|
||||
lpBufferTemp = malloc(sizeof(MOTDCLIENT));
|
||||
lpBufferTemp = static_cast<MOTDCLIENT*>(malloc(sizeof(MOTDCLIENT)));
|
||||
if (!lpBufferTemp)
|
||||
{
|
||||
D2GSSendDatabaseCharacter(dwClientId, NULL, 0, 0, TRUE, 0, NULL, 1);
|
||||
|
|
@ -712,10 +712,10 @@ void D2GSGetDataRequestTimerRoutine(void)
|
|||
|
||||
/*-------------------------------------------------------------------*/
|
||||
|
||||
void FormatTimeString(long t, u_char *buf, int len, int format)
|
||||
void FormatTimeString(time_t t, char* buf, int len, int format)
|
||||
{
|
||||
struct tm *tm;
|
||||
long now;
|
||||
time_t now;
|
||||
|
||||
ZeroMemory(buf, len);
|
||||
now = t;
|
||||
|
|
@ -746,7 +746,8 @@ void D2GSShowGameList(unsigned int ns)
|
|||
{
|
||||
D2GAMEINFO *lpGame;
|
||||
int gamecount, charcount;
|
||||
unsigned char buf[256], timestr[32];
|
||||
char buf[256];
|
||||
char timestr[32];
|
||||
|
||||
gamecount = charcount = 0;
|
||||
sprintf(buf, "+-No.--GameName---------GamePass---------ID----GameVer--Type--Difficulty--Ladder-----Users-CreateTime-Dis-+\r\n");
|
||||
|
|
@ -794,7 +795,8 @@ void D2GSShowCharInGame(unsigned int ns, WORD GameId)
|
|||
{
|
||||
D2GAMEINFO *lpGame;
|
||||
D2CHARINFO *lpChar;
|
||||
unsigned char buf[256], timestr[32];
|
||||
char buf[256];
|
||||
char timestr[32];
|
||||
int count;
|
||||
|
||||
EnterCriticalSection(&csGameList);
|
||||
|
|
@ -1038,7 +1040,7 @@ int chat_message_announce_char(DWORD dwMsgType, const char *CharName, const char
|
|||
D2CHARINFO *lpChar;
|
||||
|
||||
EnterCriticalSection(&csGameList);
|
||||
lpChar = charlist_getdata(CharName, CHARLIST_GET_CHARINFO);
|
||||
lpChar = (D2CHARINFO*)charlist_getdata(CharName, CHARLIST_GET_CHARINFO);
|
||||
if (!lpChar) {
|
||||
LeaveCriticalSection(&csGameList);
|
||||
return -1;
|
||||
|
|
@ -1196,7 +1198,7 @@ void D2GSCheckGameLife()
|
|||
if ((curTime - lpGame->CreateTime) > d2gsconf.maxgamelife)
|
||||
{
|
||||
lpChar = lpGame->lpCharInfo;
|
||||
overLastMinute = (((DWORD)curTime - lpGame->CreateTime) >= (d2gsconf.maxgamelife + 60));
|
||||
overLastMinute = ((curTime - lpGame->CreateTime) >= (d2gsconf.maxgamelife + 60));
|
||||
/*
|
||||
cmp eax, edx; >= cf=0, < cf=1
|
||||
sbb edi,edi -> edi - edi - cf -> 0, -1
|
||||
|
|
@ -13,9 +13,9 @@
|
|||
|
||||
/* structures */
|
||||
typedef struct RAW_D2CHARINFO {
|
||||
bn_char AcctName[MAX_ACCTNAME_LEN]; /* account name */
|
||||
bn_char CharName[MAX_CHARNAME_LEN]; /* char name */
|
||||
bn_char RealmIPName[MAX_REALMIPNAME_LEN]; /* realm name */
|
||||
char AcctName[MAX_ACCTNAME_LEN]; /* account name */
|
||||
char CharName[MAX_CHARNAME_LEN]; /* char name */
|
||||
char RealmIPName[MAX_REALMIPNAME_LEN]; /* realm name */
|
||||
bn_int token;
|
||||
bn_int CharLevel;
|
||||
bn_short CharClass;
|
||||
|
|
@ -23,8 +23,8 @@ typedef struct RAW_D2CHARINFO {
|
|||
bn_short EnterGame;
|
||||
bn_short AllowLadder;
|
||||
bn_short CharLockStatus;
|
||||
DWORD EnterTime;
|
||||
DWORD CharCreateTime;
|
||||
time_t EnterTime;
|
||||
time_t CharCreateTime;
|
||||
DWORD ClientId;
|
||||
WORD GameId;
|
||||
struct RAW_D2GAMEINFO *lpGameInfo; /* pointer to the GAMEINFO */
|
||||
|
|
@ -33,12 +33,12 @@ typedef struct RAW_D2CHARINFO {
|
|||
} D2CHARINFO, *PD2CHARINFO, *LPD2CHARINFO;
|
||||
|
||||
typedef struct RAW_D2GAMEINFO {
|
||||
bn_char GameName[MAX_GAMENAME_LEN];
|
||||
bn_char game_pass[MAX_GAMEPASS_LEN];
|
||||
bn_char game_desc[MAX_GAMEDESC_LEN];
|
||||
bn_char creator_acct_name[MAX_ACCTNAME_LEN];
|
||||
bn_char creator_char_name[MAX_CHARNAME_LEN];
|
||||
bn_char creator_ip[MAX_REALMIPNAME_LEN];
|
||||
char GameName[MAX_GAMENAME_LEN];
|
||||
char game_pass[MAX_GAMEPASS_LEN];
|
||||
char game_desc[MAX_GAMEDESC_LEN];
|
||||
char creator_acct_name[MAX_ACCTNAME_LEN];
|
||||
char creator_char_name[MAX_CHARNAME_LEN];
|
||||
char creator_ip[MAX_REALMIPNAME_LEN];
|
||||
bn_byte ladder;
|
||||
bn_byte expansion;
|
||||
bn_byte difficulty;
|
||||
|
|
@ -46,7 +46,7 @@ typedef struct RAW_D2GAMEINFO {
|
|||
bn_byte reserved;
|
||||
WORD GameId;
|
||||
WORD CharCount;
|
||||
DWORD CreateTime;
|
||||
time_t CreateTime;
|
||||
DWORD disable;
|
||||
struct RAW_D2CHARINFO *lpCharInfo;
|
||||
struct RAW_D2GAMEINFO *prev;
|
||||
|
|
@ -55,8 +55,8 @@ typedef struct RAW_D2GAMEINFO {
|
|||
|
||||
|
||||
typedef struct RAW_D2GETDATAREQUEST {
|
||||
bn_char AcctName[MAX_ACCTNAME_LEN]; /* account name */
|
||||
bn_char CharName[MAX_CHARNAME_LEN]; /* char name */
|
||||
char AcctName[MAX_ACCTNAME_LEN]; /* account name */
|
||||
char CharName[MAX_CHARNAME_LEN]; /* char name */
|
||||
DWORD ClientId;
|
||||
DWORD Seqno;
|
||||
bn_short TickCount;
|
||||
|
|
@ -82,23 +82,23 @@ int D2GSGameListInsert(const char* game_name, const char* game_pass, const char
|
|||
const char* creator_acct_name, const char* creator_char_name, const char* creator_ip,
|
||||
UCHAR expansion, UCHAR difficulty, UCHAR hardcore, UCHAR ladder, WORD wGameId);
|
||||
int D2GSGameListDelete(D2GAMEINFO *lpGameInfo);
|
||||
int D2GSInsertCharIntoGameInfo(D2GAMEINFO *lpGameInfo, DWORD token, UCHAR *AcctName,
|
||||
UCHAR *CharName, UCHAR* RealmIPName, DWORD CharLevel, WORD CharClass, WORD EnterGame);
|
||||
int D2GSInsertCharIntoGameInfo(D2GAMEINFO *lpGameInfo, DWORD token, const char* AcctName,
|
||||
const char* CharName, const char* RealmIPName, DWORD CharLevel, WORD CharClass, WORD EnterGame);
|
||||
int D2GSDeleteCharFromGameInfo(D2GAMEINFO *lpGameInfo, D2CHARINFO *lpCharInfo);
|
||||
int D2GSInsertCharIntoPendingList(DWORD token, UCHAR *AcctName,
|
||||
UCHAR *CharName, UCHAR* RealmIPName, DWORD CharLevel, WORD CharClass, D2GAMEINFO *lpGame);
|
||||
int D2GSInsertCharIntoPendingList(DWORD token, const char* AcctName,
|
||||
const char* CharName, const char* RealmIPName, DWORD CharLevel, WORD CharClass, D2GAMEINFO *lpGame);
|
||||
int D2GSDeletePendingChar(D2CHARINFO *lpCharInfo);
|
||||
int D2GSInsertGetDataRequest(UCHAR *AcctName, UCHAR *CharName, DWORD dwClientId, DWORD dwSeqno);
|
||||
int D2GSInsertGetDataRequest(const char* AcctName, const char* CharName, DWORD dwClientId, DWORD dwSeqno);
|
||||
int D2GSDeleteGetDataRequest(D2GETDATAREQUEST *lpGetDataReq);
|
||||
D2GAMEINFO *D2GSFindGameInfoByGameId(WORD GameId);
|
||||
D2GAMEINFO *D2GSFindGameInfoByGameName(UCHAR *GameName);
|
||||
D2CHARINFO *D2GSFindCharInGameByCharName(D2GAMEINFO *lpGame, UCHAR *CharName);
|
||||
D2GAMEINFO *D2GSFindGameInfoByGameName(const char* GameName);
|
||||
D2CHARINFO *D2GSFindCharInGameByCharName(D2GAMEINFO *lpGame, const char* CharName);
|
||||
D2CHARINFO *D2GSFindPendingCharByToken(DWORD token);
|
||||
D2CHARINFO *D2GSFindPendingCharByCharName(UCHAR *CharName);
|
||||
D2CHARINFO *D2GSFindPendingCharByCharName(const char *CharName);
|
||||
D2GETDATAREQUEST *D2GSFindGetDataRequestBySeqno(DWORD dwSeqno);
|
||||
void D2GSPendingCharTimerRoutine(void);
|
||||
void D2GSGetDataRequestTimerRoutine(void);
|
||||
void FormatTimeString(long t, u_char *buf, int len, int format);
|
||||
void FormatTimeString(time_t t, char* buf, int len, int format);
|
||||
void D2GSShowGameList(unsigned int ns);
|
||||
void D2GSShowCharInGame(unsigned int ns, WORD GameId);
|
||||
void D2GSDisableGameByGameId(unsigned int ns, WORD GameId);
|
||||
|
|
|
|||
|
|
@ -190,7 +190,7 @@ static BOOL D2GSGetInterface(void)
|
|||
* Purpose: called by Game Engine when error occur
|
||||
* Return: TRUE(success) or FALSE(failed)
|
||||
*********************************************************************/
|
||||
static DWORD __stdcall D2GSErrorHandle(void)
|
||||
static int WINAPI D2GSErrorHandle(void)
|
||||
{
|
||||
D2GSEventLog("D2GSErrorHandle", "Error occur, exiting...\n\n");
|
||||
|
||||
|
|
@ -16,7 +16,7 @@ void D2GEReloadConfig(void);
|
|||
|
||||
/* local function */
|
||||
static BOOL D2GSGetInterface(void);
|
||||
static DWORD __stdcall D2GSErrorHandle(void);
|
||||
static int WINAPI D2GSErrorHandle(void);
|
||||
|
||||
|
||||
extern D2GSINFO gD2GSInfo;
|
||||
|
|
|
|||
|
|
@ -114,12 +114,12 @@ typedef struct RAW_D2GSCONFIGS {
|
|||
DWORD multicpumask;
|
||||
DWORD maxpreferusers;
|
||||
DWORD maxpacketpersecond;
|
||||
u_char adminpwd[64];
|
||||
char adminpwd[64];
|
||||
u_short adminport;
|
||||
u_short padding;
|
||||
u_char d2cssecrect[32];
|
||||
u_char motd[256];
|
||||
u_char serverconffile[260];
|
||||
char d2cssecrect[32];
|
||||
char motd[256];
|
||||
char serverconffile[260];
|
||||
} D2GSCONFIGS, *PD2GSCONFIGS;
|
||||
|
||||
|
||||
|
|
@ -146,6 +146,9 @@ typedef struct AutoUpdateSetting
|
|||
/* function */
|
||||
int CleanupRoutineInsert(CLEANUP_ROUTINE pRoutine, char *comment);
|
||||
void CloseServerMutex(void);
|
||||
void D2GSShutdown(unsigned int exitcode);
|
||||
void D2GSShutdownTimer(void);
|
||||
void D2GSBeforeShutdown(DWORD status, DWORD seconds);
|
||||
|
||||
|
||||
#endif /* INCLUDED_D2GS_H */
|
||||
1744
src/d2gs/handle_s2s.cpp
Normal file
1744
src/d2gs/handle_s2s.cpp
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
/* structure */
|
||||
typedef struct {
|
||||
UCHAR realmname[MAX_REALMNAME_LEN];
|
||||
char realmname[MAX_REALMNAME_LEN];
|
||||
DWORD sessionnum;
|
||||
DWORD gsactive;
|
||||
} D2GSPARAM, *PD2GSPARAM, *LPD2GAPARAM;
|
||||
|
|
@ -63,7 +63,7 @@ void D2GSLoadComplete(WORD wGameId, LPCSTR lpCharName, BOOL bExpansion);
|
|||
/* by d2dbs */
|
||||
void D2DBSSaveDataReply(int peer, LPVOID lpdata);
|
||||
void D2DBSGetDataReply(int peer, LPVOID lpdata);
|
||||
void D2GSSetCharLockStatus(LPCSTR lpAccountName, LPCSTR lpCharName, UCHAR *RealmName, DWORD CharLockStatus);
|
||||
void D2GSSetCharLockStatus(const char* lpAccountName, const char* lpCharName, const char* RealmName, DWORD CharLockStatus);
|
||||
void D2GSUnlockChar(LPCSTR lpAccountName, LPCSTR lpCharName);
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -27,14 +27,14 @@ struct list_head {
|
|||
* This is only for internal list manipulation where we know
|
||||
* the prev/next entries already!
|
||||
*/
|
||||
static __inline void __list_add(struct list_head * new,
|
||||
static __inline void __list_add(struct list_head * new_entry,
|
||||
struct list_head * prev,
|
||||
struct list_head * next)
|
||||
{
|
||||
next->prev = new;
|
||||
new->next = next;
|
||||
new->prev = prev;
|
||||
prev->next = new;
|
||||
next->prev = new_entry;
|
||||
new_entry->next = next;
|
||||
new_entry->prev = prev;
|
||||
prev->next = new_entry;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -45,9 +45,9 @@ static __inline void __list_add(struct list_head * new,
|
|||
* Insert a new entry after the specified head.
|
||||
* This is good for implementing stacks.
|
||||
*/
|
||||
static __inline void list_add(struct list_head *new, struct list_head *head)
|
||||
static __inline void list_add(struct list_head * new_entry, struct list_head *head)
|
||||
{
|
||||
__list_add(new, head, head->next);
|
||||
__list_add(new_entry, head, head->next);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -58,9 +58,9 @@ static __inline void list_add(struct list_head *new, struct list_head *head)
|
|||
* Insert a new entry before the specified head.
|
||||
* This is useful for implementing queues.
|
||||
*/
|
||||
static __inline void list_add_tail(struct list_head *new, struct list_head *head)
|
||||
static __inline void list_add_tail(struct list_head * new_entry, struct list_head *head)
|
||||
{
|
||||
__list_add(new, head->prev, head);
|
||||
__list_add(new_entry, head->prev, head);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -453,7 +453,7 @@ int D2GSNetRecvPacket(void)
|
|||
WSAEVENT hEvents[4];
|
||||
DWORD dwWait;
|
||||
WSANETWORKEVENTS NetEvents;
|
||||
u_char buffer[8192];
|
||||
char buffer[8192];
|
||||
int val;
|
||||
int retval;
|
||||
|
||||
|
|
@ -572,7 +572,7 @@ int D2GSSendNetData(NETSENDBUFFER *lpnsr)
|
|||
EnterCriticalSection(&csNet);
|
||||
NSBGetData(lpnsr, &buf, &datalen);
|
||||
if (datalen) {
|
||||
bytes = send(sock, buf, datalen, 0);
|
||||
bytes = send(sock, (char*)buf, datalen, 0);
|
||||
if (bytes<=0) {
|
||||
if (WSAGetLastError()==WSAEWOULDBLOCK) {
|
||||
D2GSEventLog("D2GSSendNetData",
|
||||
|
|
@ -685,7 +685,7 @@ void NRBInitialize(NETRECVBUFFER *lpnbr, u_short peer)
|
|||
* Purpose: to add some new data to the NETRECVBUFFER
|
||||
* Return: None
|
||||
*********************************************************************/
|
||||
void NRBAddNewData(NETRECVBUFFER *lpnbr, u_char *lpdata, u_int datalen)
|
||||
void NRBAddNewData(NETRECVBUFFER *lpnbr, void* lpdata, u_int datalen)
|
||||
{
|
||||
u_int bmove;
|
||||
|
||||
|
|
@ -91,7 +91,7 @@ void D2GSGetNetStatistic(D2GSNETSTATISTIC *pnetstat);
|
|||
|
||||
/* NETRECVBUFFER operator */
|
||||
void NRBInitialize(NETRECVBUFFER *lpnrb, u_short peer);
|
||||
void NRBAddNewData(NETRECVBUFFER *lpnrb, u_char *lpdata, u_int datalen);
|
||||
void NRBAddNewData(NETRECVBUFFER *lpnrb, void* lpdata, u_int datalen);
|
||||
int NRBRemovePacketOut(NETRECVBUFFER *lpnrb, D2GSPACKET *lpPkt);
|
||||
void NSBInitialize(NETSENDBUFFER *lpnsr, u_short peer);
|
||||
int NSBAppendData(NETSENDBUFFER *lpnsr, D2GSPACKET *lpPkt);
|
||||
|
|
|
|||
1355
src/d2gs/telnetd.cpp
Normal file
1355
src/d2gs/telnetd.cpp
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -28,7 +28,7 @@
|
|||
typedef struct {
|
||||
char *keyword;
|
||||
BOOL disable;
|
||||
void (*adminfunc)(unsigned int, u_char *);
|
||||
void (*adminfunc)(unsigned int, char *);
|
||||
char *param;
|
||||
char *annotation;
|
||||
} ADMINCOMMAND, *PADMINCOMMAND;
|
||||
|
|
@ -39,34 +39,34 @@ int D2GSAdminInitialize(void);
|
|||
int CleanupRoutineForAdmin(void);
|
||||
DWORD WINAPI admin_service(LPVOID lpParam);
|
||||
DWORD WINAPI admin_thread(LPVOID lpParam);
|
||||
int admin_analyse_cmd(u_char *buf, u_char *cmd, int x, int y);
|
||||
int admin_analyse_cmd(char* buf, char *cmd, int x, int y);
|
||||
int admin_to_stop(void);
|
||||
int get_cmd_line(unsigned int ns, unsigned char *buf, int flag);
|
||||
int get_cmd_line(unsigned int ns, char *buf, int flag);
|
||||
int admin_getchar(unsigned int ns);
|
||||
int admin_check_pass(unsigned char *pass);
|
||||
int admin_check_pass(const char *pass);
|
||||
void admin_logo(unsigned int ns);
|
||||
void admin_help(unsigned int ns, u_char *param);
|
||||
void admin_show_game_list(unsigned int ns, u_char *param);
|
||||
void admin_show_char_in_game(unsigned int ns, u_char *param);
|
||||
void admin_restart(unsigned int ns, u_char *param);
|
||||
void admin_shutdown(unsigned int ns, u_char *param);
|
||||
void admin_uptime(unsigned int ns, u_char *param);
|
||||
void admin_setmaxgame(unsigned int ns, u_char *param);
|
||||
void admin_disablegame(unsigned int ns, u_char *param);
|
||||
void admin_enablegame(unsigned int ns, u_char *param);
|
||||
void admin_setmaxgamelife(unsigned int ns, u_char *param);
|
||||
void admin_getstatus(unsigned int ns, u_char *param);
|
||||
void admin_getversion(unsigned int ns, u_char *param);
|
||||
void admin_getcharinfo(unsigned int ns, u_char *param);
|
||||
void admin_chgpasswd(unsigned int ns, u_char *param);
|
||||
void admin_kick_user(unsigned int ns, u_char *param);
|
||||
void admin_msg(unsigned int ns, u_char *param);
|
||||
void admin_setmotd(unsigned int ns, u_char *param);
|
||||
void admin_setmaxpreferusers(unsigned int ns, u_char* param);
|
||||
void admin_setcpumask(unsigned int ns, u_char* param);
|
||||
void admin_reloadconf(unsigned int ns, u_char* param);
|
||||
void admin_showwe(unsigned int ns, u_char* param);
|
||||
void admin_enablegslog(unsigned int ns, u_char* param);
|
||||
void admin_help(unsigned int ns, char* param);
|
||||
void admin_show_game_list(unsigned int ns, char* param);
|
||||
void admin_show_char_in_game(unsigned int ns, char* param);
|
||||
void admin_restart(unsigned int ns, char* param);
|
||||
void admin_shutdown(unsigned int ns, char* param);
|
||||
void admin_uptime(unsigned int ns, char* param);
|
||||
void admin_setmaxgame(unsigned int ns, char* param);
|
||||
void admin_disablegame(unsigned int ns, char* param);
|
||||
void admin_enablegame(unsigned int ns, char* param);
|
||||
void admin_setmaxgamelife(unsigned int ns, char* param);
|
||||
void admin_getstatus(unsigned int ns, char* param);
|
||||
void admin_getversion(unsigned int ns, char* param);
|
||||
void admin_getcharinfo(unsigned int ns, char* param);
|
||||
void admin_chgpasswd(unsigned int ns, char* param);
|
||||
void admin_kick_user(unsigned int ns, char* param);
|
||||
void admin_msg(unsigned int ns, char* param);
|
||||
void admin_setmotd(unsigned int ns, char* param);
|
||||
void admin_setmaxpreferusers(unsigned int ns, char* param);
|
||||
void admin_setcpumask(unsigned int ns, char* param);
|
||||
void admin_reloadconf(unsigned int ns, char* param);
|
||||
void admin_showwe(unsigned int ns, char* param);
|
||||
void admin_enablegslog(unsigned int ns, char* param);
|
||||
|
||||
|
||||
#endif /* INCLUDED_TELNETD_H */
|
||||
|
|
@ -15,11 +15,11 @@ extern char * * strtoarray(char const * str, char const * delim, int * count)
|
|||
|
||||
if (!str || !delim || !count) return NULL;
|
||||
|
||||
temp=malloc(strlen(str)+1);
|
||||
temp=static_cast<char*>(malloc(strlen(str)+1));
|
||||
if (!temp) return NULL;
|
||||
|
||||
n = SPLIT_STRING_INIT_COUNT;
|
||||
pindex=malloc(sizeof(char *) * n);
|
||||
pindex=static_cast<int*>(malloc(sizeof(char *) * n));
|
||||
if (!pindex) {
|
||||
free(temp);
|
||||
return NULL;
|
||||
|
|
@ -48,7 +48,7 @@ extern char * * strtoarray(char const * str, char const * delim, int * count)
|
|||
if (in_delim) {
|
||||
if (*count>=n) {
|
||||
n += SPLIT_STRING_INCREASEMENT;
|
||||
if (!(realloc_tmp=realloc(pindex,n * sizeof(char *)))) {
|
||||
if (!(realloc_tmp=static_cast<char*>(realloc(pindex,n * sizeof(char *))))) {
|
||||
free(pindex);
|
||||
free(temp);
|
||||
return NULL;
|
||||
|
|
@ -74,7 +74,7 @@ extern char * * strtoarray(char const * str, char const * delim, int * count)
|
|||
free(pindex);
|
||||
return NULL;
|
||||
}
|
||||
result=malloc(pd-temp+index_size);
|
||||
result=static_cast<char*>(malloc(pd-temp+index_size));
|
||||
if (!result) {
|
||||
free(temp);
|
||||
free(pindex);
|
||||
|
|
@ -101,10 +101,10 @@ extern char * * strtoargv(char const * str, int * count)
|
|||
char * realloc_tmp;
|
||||
|
||||
if (!str || !count) return NULL;
|
||||
temp=malloc(strlen(str)+1);
|
||||
temp=static_cast<char*>(malloc(strlen(str)+1));
|
||||
if (!temp) return NULL;
|
||||
n = SPLIT_STRING_INIT_COUNT;
|
||||
pindex=malloc(n * sizeof (char *));
|
||||
pindex=static_cast<int*>(malloc(n * sizeof (char *)));
|
||||
if (!pindex) return NULL;
|
||||
|
||||
i=j=0;
|
||||
|
|
@ -114,7 +114,7 @@ extern char * * strtoargv(char const * str, int * count)
|
|||
if (!str[i]) break;
|
||||
if ((unsigned int)(*count) >=n ) {
|
||||
n += SPLIT_STRING_INCREASEMENT;
|
||||
if (!(realloc_tmp=realloc(pindex,n * sizeof(char *)))) {
|
||||
if (!(realloc_tmp=static_cast<char*>(realloc(pindex,n * sizeof(char *))))) {
|
||||
free(pindex);
|
||||
free(temp);
|
||||
return NULL;
|
||||
|
|
@ -148,7 +148,7 @@ extern char * * strtoargv(char const * str, int * count)
|
|||
free(pindex);
|
||||
return NULL;
|
||||
}
|
||||
result=malloc(j+index_size);
|
||||
result=static_cast<char*>(malloc(j+index_size));
|
||||
if (!result) {
|
||||
free(temp);
|
||||
free(pindex);
|
||||
|
|
@ -1,17 +1,11 @@
|
|||
#ifndef INCLUDED_UTILS_H
|
||||
#define INCLUDED_UTILS_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern char * * strtoarray(char const * str, char const * delim, int * count);
|
||||
extern char * * strtoargv(char const * str, int * count);
|
||||
extern char * str_strip_affix(char * str, char const * affix);
|
||||
extern char * string_color(char *str);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue