Files
LGram16 dd97ddec92 Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code:
- Client: Game client source (moved to Client/Client/)
- Server: Game server source
- GameTools: Development tools
- CryptoSource: Encryption utilities
- database: Database scripts
- Script: Game scripts
- rylCoder_16.02.2008_src: Legacy coder tools
- GMFont, Game: Additional resources

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 20:17:20 +09:00

355 lines
10 KiB
C++

//=============================================================================
// File : NPGameLib.h
// Use : Handle Communication between Game and GameMon
// Author : Kim Chan Ho (chkim@inca.co.kr)
// Date : 2003/07/01 - 03
//=============================================================================
#ifndef __NPGAMELIB_H__
#define __NPGAMELIB_H__
/// Definitions
#ifdef NPGAMEDLL_EXPORTS
#define NPGAMEDLL_API __declspec(dllexport)
#else
#define NPGAMEDLL_API
#endif
// Callback Message
#define NPGAMEMON_UNDEFINED 1000 // Undefined message
#define NPGAMEMON_COMM_ERROR 1001 // Communication error
#define NPGAMEMON_COMM_CLOSE 1002 // Communication closing
#define NPGAMEMON_SPEEDHACK 1011 // SpeedHack detected
#define NPGAMEMON_GAMEHACK_KILLED 1012 // GameHack killed
#define NPGAMEMON_GAMEHACK_DETECT 1013 // GameHack detected
#define NPGAMEMON_INIT_ERROR 1014 // GameMon Init Error
#define NPGAMEMON_GAMEHACK_DOUBT 1015 // GameHack doubt
#define NPGAMEMON_CHECK_CSAUTH 1016 // CSAuth
#define NPGAMEMON_CHECK_CSAUTH2 1017 // CSAuth2
#define NPGAMEMON_GAMEHACK_REPORT 1018 // GameHack report
// Error Code 110 - 300
#define NPGAMEMON_ERROR_EXIST 110 // GameMon Already Exist
#define NPGAMEMON_ERROR_CREATE 111 // GameGuard Directory Create Error
#define NPGAMEMON_ERROR_NPSCAN 112 // npscan.des Error
#define NPGAMEMON_ERROR_THREAD 113 // CreateThread Error
#define NPGAMEMON_ERROR_INIT 114 // GameMon Initialize Error
#define NPGAMEMON_ERROR_GAME_EXIST 115 // Game Instance Already Exist
#define NPGAMEMON_ERROR_AUTH_INI 120 // .ini Authentication Fail
#define NPGAMEMON_ERROR_AUTH_NPGMUP 121 // npgmup.des Authentication Fail
#define NPGAMEMON_ERROR_AUTH_GAMEMON 122 // GameMon.des Authentication Fail
#define NPGAMEMON_ERROR_AUTH_NEWUP 123 // npgmup.des.new Auth Fail
#define NPGAMEMON_ERROR_AUTH_GAMEGUARD 124 // GameGuard.des Authentication Fail
#define NPGAMEMON_ERROR_AUTH_DLL 125 // NPGameDLL.dll Authentication Fail
#define NPGAMEMON_ERROR_DECRYPT 130 // .ini File Decryption Fail
#define NPGAMEMON_ERROR_CORRUPT_INI 141 // Corrupt ini file Error
#define NPGAMEMON_ERROR_CORRUPT_INI2 142 // Not match GameName in ini file Error
#define NPGAMEMON_ERROR_NFOUND_INI 150 // ini File not Found
#define NPGAMEMON_ERROR_NFOUND_NPGMUP 151 // npgmup.des not found
#define NPGAMEMON_ERROR_NFOUND_NEWUP 152 // npgmup.des.new not found
#define NPGAMEMON_ERROR_NFOUND_GG 153 // GameGuard.des not found
#define NPGAMEMON_ERROR_NFOUND_GM 154 // GameMon.des not found
#define NPGAMEMON_ERROR_CRYPTOAPI 155 // rsabase.dll is corrupted
#define NPGAMEMON_ERROR_COMM 160 // Communication Init Error
#define NPGAMEMON_ERROR_EXECUTE 170 // GameMon Execute Error
#define NPGAMEMON_ERROR_EVENT 171 // GameMon Event Create Error
#define NPGAMEMON_ERROR_NPGMUP 180 // npgmup.dll Error
#define NPGAMEMON_ERROR_MOVE_INI 191 // Move ini Error
#define NPGAMEMON_ERROR_MOVE_NEWUP 192 // Move npgmup.des.new Error
#define NPGAMEMON_ERROR_ILLEGAL_PRG 200 // Detected a illegal program
#define NPGAMEMON_ERROR_GAMEMON 210 // GameMon Init Error
#define NPGAMEMON_ERROR_SPEEDCHECK 220 // SpeedCheck Init Error
#define NPGAMEMON_ERROR_GAMEGUARD 230 // GameGuard Init Error
// Error Code 310 - 400
// Update Error Code
#define NPGMUP_ERROR_PARAM 320 // Invalid .ini
#define NPGMUP_ERROR_INIT 330 // npgmup.des Initialize Error
#define NPGMUP_ERROR_DOWNCFG 340 // Download Error
#define NPGMUP_ERROR_ABORT 350 // Canceled by User
#define NPGMUP_ERROR_AUTH 360 // File Authentication Error
#define NPGMUP_ERROR_AUTH_INI 361 // .ini Authentication Error
#define NPGMUP_ERROR_DECRYPT 370 // .ini Decrypt Error
#define NPGMUP_ERROR_CONNECT 380 // Connect to update server Fail
#define NPGMUP_ERROR_INI 390 // .ini is corrupted
// Error Code 500
// Collision Error Code
#define NPGG_ERROR_COLLISION 500 // Detected a Collision Program
#define NPGAMEMON_SUCCESS 0x755 // GameMon Initialize Success
// USER_POLYBUFFER (NPGE L5 only)
#define USER_POLYBUFFER \
__asm _emit 0xEB \
__asm _emit 0x04 \
__asm _emit 0xEB \
__asm _emit 0x05 \
__asm _emit 0x39 \
__asm _emit 0x19
// gameguard auth data
typedef struct _GG_AUTH_DATA
{
DWORD dwIndex;
DWORD dwValue1;
DWORD dwValue2;
DWORD dwValue3;
} GG_AUTH_DATA, *PGG_AUTH_DATA;
#if defined(_LIB) || !defined(__LITE_VERSION)
#ifdef __cplusplus
extern "C" {
#endif
NPGAMEDLL_API DWORD __cdecl CheckNPGameMon();
NPGAMEDLL_API BOOL __cdecl CloseNPGameMon();
NPGAMEDLL_API DWORD __cdecl InitNPGameMon();
NPGAMEDLL_API void __cdecl SetHwndToGameMon(HWND hWnd);
NPGAMEDLL_API DWORD __cdecl PreInitNPGameMonA(LPCSTR szGameName);
NPGAMEDLL_API DWORD __cdecl PreInitNPGameMonW(LPCWSTR szGameName);
NPGAMEDLL_API BOOL __cdecl SendUserIDToGameMonA(LPCSTR szUserID);
NPGAMEDLL_API BOOL __cdecl SendUserIDToGameMonW(LPCWSTR szUserID);
NPGAMEDLL_API BOOL __cdecl SendCSAuthToGameMon(DWORD dwAuth);
NPGAMEDLL_API BOOL __cdecl SendCSAuth2ToGameMon(PGG_AUTH_DATA pAuth);
NPGAMEDLL_API LPSTR __cdecl NPDect(LPSTR lpszString);
NPGAMEDLL_API BOOL __cdecl NPGuardData(LPVOID lpData, DWORD dwSize);
NPGAMEDLL_API BOOL __cdecl NPReleaseData(LPVOID lpData, DWORD dwSize);
NPGAMEDLL_API LPCSTR __cdecl GetInfoFromGameMon();
NPGAMEDLL_API LPBYTE __cdecl GetHackInfoFromGameMon(DWORD* dwSize);
NPGAMEDLL_API BOOL __cdecl ResourceAuthA(LPCSTR lpszFilename, bool bCheckFilename /* = true */ );
NPGAMEDLL_API BOOL __cdecl ResourceAuthW(LPCWSTR lpszFilename, bool bCheckFilename /* = true */ );
NPGAMEDLL_API BOOL __cdecl CheckD3DDevice(LPVOID lpD3DDevice, LPSTR lpszDll);
NPGAMEDLL_API DWORD __cdecl GGGetLastError(); // 2009.07.27
NPGAMEDLL_API DWORD __cdecl InitPacketProtect(LPCSTR lpszUserKey);
NPGAMEDLL_API DWORD __cdecl EncryptPacket(LPVOID lpData, DWORD dwLength);
NPGAMEDLL_API DWORD __cdecl DecryptPacket(LPVOID lpData, DWORD dwLength);
NPGAMEDLL_API DWORD __cdecl EncryptPeerPacket(LPVOID lpData, DWORD dwLength);
NPGAMEDLL_API DWORD __cdecl DecryptPeerPacket(LPVOID lpData, DWORD dwLength);
NPGAMEDLL_API DWORD __cdecl PPGetLastError();
NPGAMEDLL_API BOOL __cdecl FixVC80DEP();
typedef BOOL (CALLBACK *NPGMCALLBACK)(DWORD dwMsg, DWORD dwArg);
NPGAMEDLL_API void __cdecl SetCallbackToGameMon(NPGMCALLBACK fnCallback);
NPGAMEDLL_API DWORD __cdecl SetModulePathA(LPCSTR szModulePath); // 2008.10.31
NPGAMEDLL_API DWORD __cdecl SetModulePathW(LPCWSTR szModulePath); // 2008.10.31
NPGAMEDLL_API BOOL __cdecl IsAdminPrivilege(); // 2009.02.25
#ifdef __cplusplus
}
#endif
#ifdef _UNICODE
#define PreInitNPGameMon PreInitNPGameMonW
#define SetModulePath SetModulePathW
#define SendUserIDToGameMon SendUserIDToGameMonW
#define ResourceAuth ResourceAuthW
#else
#define SetModulePath SetModulePathA
#define PreInitNPGameMon PreInitNPGameMonA
#define SendUserIDToGameMon SendUserIDToGameMonA
#define ResourceAuth ResourceAuthA
#endif
#ifndef NPGAMELIB_C
/// CNPGameLib Wrapper Class ///
class CNPGameLib
{
public:
explicit CNPGameLib(LPCTSTR lpszGameName)
{
#ifdef NO_GAMEGUARD
return;
#endif
PreInitNPGameMon(lpszGameName);
}
explicit CNPGameLib(LPCTSTR lpszGameName, LPCTSTR lpszModulePath)
{
#ifdef NO_GAMEGUARD
return;
#endif
SetModulePath(lpszModulePath);
PreInitNPGameMon(lpszGameName);
}
~CNPGameLib()
{
#ifdef NO_GAMEGUARD
return;
#endif
CloseNPGameMon();
}
public:
DWORD Init()
{
#ifdef NO_GAMEGUARD
return NPGAMEMON_SUCCESS;
#endif
return (InitNPGameMon());
}
void SetHwnd(HWND hWnd)
{
#ifdef NO_GAMEGUARD
return;
#endif
SetHwndToGameMon(hWnd);
}
DWORD Check()
{
#ifdef NO_GAMEGUARD
return NPGAMEMON_SUCCESS;
#endif
return (CheckNPGameMon());
}
DWORD Send(LPCTSTR lpszUserId)
{
#ifdef NO_GAMEGUARD
return NPGAMEMON_SUCCESS;
#endif
return (SendUserIDToGameMon(lpszUserId));
}
LPCSTR GetInfo()
{
#ifdef NO_GAMEGUARD
return NULL;
#endif
return (GetInfoFromGameMon());
}
LPBYTE GetHackInfo(DWORD *dwSize)
{
#ifdef NO_GAMEGUARD
return NULL;
#endif
return (GetHackInfoFromGameMon(dwSize));
}
DWORD Auth(DWORD dwAuth)
{
#ifdef NO_GAMEGUARD
return NPGAMEMON_SUCCESS;
#endif
return (SendCSAuthToGameMon(dwAuth));
}
DWORD Auth2(PGG_AUTH_DATA pAuth)
{
#ifdef NO_GAMEGUARD
return NPGAMEMON_SUCCESS;
#endif
return (SendCSAuth2ToGameMon(pAuth));
}
BOOL ResAuth(LPCTSTR lpszFilename, bool bCheckFilename = true)
{
#ifdef NO_GAMEGUARD
return TRUE;
#endif
return (ResourceAuth(lpszFilename, bCheckFilename));
}
private:
// No copies
CNPGameLib(const CNPGameLib &rhs);
CNPGameLib &operator=(const CNPGameLib &rhs);
};
///
/*
class CNPDword
{
public:
CNPDword();
//CNPDword(DWORD dwSize);
~CNPDword();
DWORD Get();
void Set(DWORD dwValue);
private:
void Guard();
void Release();
public:
LPDWORD m_pValue;
DWORD m_dwSize;
};
*/
extern BOOL __cdecl RegisterToMgr(LPVOID);
extern void __cdecl RemoveFromMgr(LPVOID);
extern DWORD __cdecl GetDataFromMgr(LPVOID);
extern void __cdecl SetDataToMgr(LPVOID, DWORD);
class CNPDword {
public:
CNPDword() : m_dwData(0)
{
m_bFlag = RegisterToMgr(this);
}
~CNPDword()
{
RemoveFromMgr(this);
}
DWORD Get()
{
if (m_bFlag)
return GetDataFromMgr(this);
else
return m_dwData;
}
void Set(DWORD dwData)
{
if (m_bFlag)
SetDataToMgr(this, dwData);
else
m_dwData = dwData;
}
private:
DWORD m_dwData;
BOOL m_bFlag;
};
#endif // NPGAMELIB_C
#else // defined(_LIB) || !defined(__LITE_VERSION)
#ifdef __cplusplus
extern "C" {
#endif
NPGAMEDLL_API DWORD __cdecl StartGameGuard(LPCSTR szGameName);
NPGAMEDLL_API BOOL __cdecl EndGameGuard();
#ifdef __cplusplus
}
#endif
#endif // defined(_LIB) || !defined(__LITE_VERSION)
#endif // __NPGAMELIB_H__