How to add some extra function on Source Code (Newbie Coder)

Status
Not open for further replies.
For those who want to use RELEASE_KOREA but stucked @ 'don't execute independent'
Quote this part of Basic.cpp
Location: Source\Basic\Basic.cpp

PHP:
#if defined(KR_PARAM) || defined(KRT_PARAM)
    {
        //    Note : ´ÙÀ½ °ÔÀÓ ÆÄ¶ó¸ÞŸ È®ÀÎ.
        //
        CDaumGameParameter cDGP;
        char szParameter[MAX_DGPARAMETER_LENGTH];
        if ( cDGP.Get ( _T("Parameter"), szParameter, MAX_DGPARAMETER_LENGTH ) == FALSE )
        {
            MessageBox ( NULL, _T("À¥¿¡¼­ ½ÇÇàÇØÁֽʽÿÀ."), _T("¶õ¿Â¶óÀÎ"), MB_OK );
            return FALSE;
        }

        //MessageBox ( NULL, szParameter, "key", MB_OK );
        RANPARAM::SETIDPARAM ( szParameter );
        
        //    userid´Â ÀÓÀÇ·Î ÁöÁ¤. ( °ÔÀÓ ¿É¼Ç ÀúÀå¿ë. )
        RANPARAM::SETUSERID ( "userid" );

        //    ´ÙÀ½ °ÔÀÓ ÆÄ¶ó¸ÞŸÀÇ ³»¿ëÀ» Áö¿öÁÝ´Ï´Ù.
        cDGP.Empty();
    }
    #endif
For those who want to use KR version but you want to have KR version + MD5 password,
here it is:
Location: Source\RanClientUILib\Interface\LoginPage.cpp

PHP:
...
                    default:
                    pNetClient->ChinaSndLogin( strID, strPW, strRP, nServerChannel ); //Md5ed - Seifer13
                    break;
...
Changing Game.exe's Window Title
Location : \Source\Basic\BasicWnd.cpp

PHP:
...
#ifdef CH_PARAM
    SetWindowText ( "Á÷ÐÇ»¨Ô°" );
#elif TW_PARAM
    SetWindowText ( "«i online" );
#elif HK_PARAM
    SetWindowText ( "«i online" );
#else 
    SetWindowText ( "Ran Client" ); 
#endif
...
 
Last edited:
sir Seifer13, i need to function press 'u' button for open webshop for KR.
please guide for me.

thank you.

search this and add code like this :

Code:
#if defined [COLOR="Red"]( CH_PARAM ) || defined ( TH_PARAM ) || defined( PH_PARAM ) || defined ( JP_PARAM ) || defined( _RELEASED ) || defined ( KR_PARAM ) || defined( KRT_PARAM ) // add more param define[/COLOR]
	if ( UIKeyCheck::GetInstance()->Check ( RANPARAM::MenuShotcut[SHOTCUT_ITEMSHOP], DXKEY_DOWN) )
	{
		if ( !IsVisibleGroup ( ITEMSHOP_WINDOW ) )
		{
			//	ItemShopAuth
			if ( ItemShopAuth() )
			{
				ShowGroupFocus ( ITEMSHOP_WINDOW );
			}

			HideGroup ( HELP_WINDOW );
		}
		else
		{
			HideGroup ( ITEMSHOP_WINDOW );
		}
	}
	
	//	ItemShopAuth	
	ItemShopVisible();

#endif

and this :

Code:
#if defined [COLOR="Red"]( CH_PARAM ) || defined ( TH_PARAM ) || defined( PH_PARAM ) || defined ( JP_PARAM ) || defined( _RELEASED ) || defined ( KR_PARAM ) || defined( KRT_PARAM ) // add more param define[/COLOR]
	{
		if( CCommonWeb::Get()->GetCreate() )
		{
			CItemShopWindowWeb* pItemShopWindow = new CItemShopWindowWeb;
			pItemShopWindow->Create ( ITEMSHOP_WINDOW, "BASIC_WINDOW", UI_FLAG_XSIZE | UI_FLAG_YSIZE );
			pItemShopWindow->CreateBaseWindowBlack ( "ITEMSHOP_WINDOW", (char*)ID2GAMEWORD("ITEMSHOP_WINDOW_STATIC") );
			pItemShopWindow->CreateWeb ();
			pItemShopWindow->SetAlignFlag ( UI_FLAG_CENTER_X | UI_FLAG_CENTER_Y );
			RegisterControl ( pItemShopWindow, true );			
		}
		ShowGroupFocus ( ITEMSHOP_WINDOW );
	}
#endif

dont forget to add your item shop address in your param.
 
i know this sounds funny but i wonder where i can found this things
DxPieceDefine.h
DxAniKey.h
DxSkinAniMan.cpp
:)

and is that codes up there to the first post only for ep7?? or for all the episodes?
 
search this and add code like this :

Code:
#if defined [COLOR="Red"]( CH_PARAM ) || defined ( TH_PARAM ) || defined( PH_PARAM ) || defined ( JP_PARAM ) || defined( _RELEASED ) || defined ( KR_PARAM ) || defined( KRT_PARAM ) // add more param define[/COLOR]
	if ( UIKeyCheck::GetInstance()->Check ( RANPARAM::MenuShotcut[SHOTCUT_ITEMSHOP], DXKEY_DOWN) )
	{
		if ( !IsVisibleGroup ( ITEMSHOP_WINDOW ) )
		{
			//	ItemShopAuth
			if ( ItemShopAuth() )
			{
				ShowGroupFocus ( ITEMSHOP_WINDOW );
			}

			HideGroup ( HELP_WINDOW );
		}
		else
		{
			HideGroup ( ITEMSHOP_WINDOW );
		}
	}
	
	//	ItemShopAuth	
	ItemShopVisible();

#endif

and this :

Code:
#if defined [COLOR="Red"]( CH_PARAM ) || defined ( TH_PARAM ) || defined( PH_PARAM ) || defined ( JP_PARAM ) || defined( _RELEASED ) || defined ( KR_PARAM ) || defined( KRT_PARAM ) // add more param define[/COLOR]
	{
		if( CCommonWeb::Get()->GetCreate() )
		{
			CItemShopWindowWeb* pItemShopWindow = new CItemShopWindowWeb;
			pItemShopWindow->Create ( ITEMSHOP_WINDOW, "BASIC_WINDOW", UI_FLAG_XSIZE | UI_FLAG_YSIZE );
			pItemShopWindow->CreateBaseWindowBlack ( "ITEMSHOP_WINDOW", (char*)ID2GAMEWORD("ITEMSHOP_WINDOW_STATIC") );
			pItemShopWindow->CreateWeb ();
			pItemShopWindow->SetAlignFlag ( UI_FLAG_CENTER_X | UI_FLAG_CENTER_Y );
			RegisterControl ( pItemShopWindow, true );			
		}
		ShowGroupFocus ( ITEMSHOP_WINDOW );
	}
#endif

dont forget to add your item shop address in your param.

oh thank you very much. sir geger009 you are very good man, you share everything which you know don't keep it for you only. you better good than many people. i'm very like you.
thank you again sir geger009.
 
//#if defined ( CH_PARAM ) || defined ( TH_PARAM ) || defined( PH_PARAM ) || defined ( JP_PARAM ) || defined( _RELEASED ) // วสธฎวษ พฦภฬลผฅ
{
if( CCommonWeb::Get()->GetCreate() )
{
CItemShopWindowWeb* pItemShopWindow =
new CItemShopWindowWeb;
pItemShopWindow->Create ( ITEMSHOP_WINDOW, "BASIC_WINDOW", UI_FLAG_XSIZE | UI_FLAG_YSIZE );
pItemShopWindow->CreateBaseWindowBlack ( "ITEMSHOP_WINDOW", (
char*)ID2GAMEWORD("ITEMSHOP_WINDOW_STATIC") );
pItemShopWindow->CreateWeb ();
pItemShopWindow->SetAlignFlag ( UI_FLAG_CENTER_X | UI_FLAG_CENTER_Y );
RegisterControl ( pItemShopWindow,
true );
}
ShowGroupFocus ( ITEMSHOP_WINDOW );
}
//#endif
add // to if defined & endif
to
All PARAM
 
//#if defined ( CH_PARAM ) || defined ( TH_PARAM ) || defined( PH_PARAM ) || defined ( JP_PARAM ) || defined( _RELEASED ) // วสธฎวษ พฦภฬลผฅ
{
if( CCommonWeb::Get()->GetCreate() )
{
CItemShopWindowWeb* pItemShopWindow =
new CItemShopWindowWeb;
pItemShopWindow->Create ( ITEMSHOP_WINDOW, "BASIC_WINDOW", UI_FLAG_XSIZE | UI_FLAG_YSIZE );
pItemShopWindow->CreateBaseWindowBlack ( "ITEMSHOP_WINDOW", (
char*)ID2GAMEWORD("ITEMSHOP_WINDOW_STATIC") );
pItemShopWindow->CreateWeb ();
pItemShopWindow->SetAlignFlag ( UI_FLAG_CENTER_X | UI_FLAG_CENTER_Y );
RegisterControl ( pItemShopWindow,
true );
}
ShowGroupFocus ( ITEMSHOP_WINDOW );
}
//#endif
add // to if defined & endif
to
All PARAM
you too, thank you very much. :thumbup1:
 
i found something interested for me

Basic.cpp and Basic.h

Code:
/////////////////////////////////////////////////////////////////////////////
// CBasicApp

DO_RTC_CATCH _rtc_catch;

// Nprotect Á¤ÀÇ
#if defined(MY_PARAM) || defined(MYE_PARAM)
	CNPGameLib npgl("RanOnlineMY");
#elif defined(PH_PARAM)
	CNPGameLib npgl("RanOnlinePH");
//#elif defined(TW_PARAM)
//	CNPGameLib npgl("RanMinTW");
//#elif defined( VN_PARAM ) 
//	CNPGameLib npgl("RanOnlineVN");
//#elif defined(TH_PARAM)
//	CNPGameLib npgl("RanOnlineTH");
#endif
///////////////////////////////
#if defined(MY_PARAM) || defined(MYE_PARAM) || defined(PH_PARAM) //|| defined( VN_PARAM ) || defined(TH_PARAM) || defined ( HK_PARAM ) || defined(TW_PARAM) // Nprotect Á¤ÀÇ
	{
		DWORD dwResult = npgl.Init();
		if( dwResult != NPGAMEMON_SUCCESS )
		{
			ErrorMsgByNP( dwResult );
			return FALSE;
		}
	}
#endif

Code:
#if !defined(MY_PARAM) && !defined(MYE_PARAM) && !defined(PH_PARAM) //&& !defined( VN_PARAM ) //&& !defined(TH_PARAM) && !defined ( HK_PARAM ) && !defined(TW_PARAM) // Nprotect Á¤ÀÇ
#define NO_GAMEGUARD
#endif

#ifdef _RELEASED
#define NO_GAMEGUARD
#endif

#if defined( TH_PARAM ) 
#include "../=include_th/NPGameLib.h"
#else
#include "../=include/NPGameLib.h"
#endif

BasicWndD3d.cpp

Code:
#if defined(MY_PARAM) || defined(PH_PARAM) || defined(MYE_PARAM) //|| defined ( VN_PARAM ) || defined(TH_PARAM) || defined ( HK_PARAM ) || defined(TW_PARAM) // Nprotect Á¤ÀÇ
BOOL CALLBACK NPGameMonCallback(DWORD dwMsg, DWORD dwArg)
{
	TCHAR msg[128]={0};
	LPCTSTR lpszMsg( NULL );
	bool bAppExit( false );
	static DWORD dwCharIDBack = 0;

	switch( dwMsg )
	{
	case NPGAMEMON_COMM_ERROR:
	case NPGAMEMON_COMM_CLOSE:
		bAppExit = true;
		return false;
	case NPGAMEMON_INIT_ERROR:
		bAppExit = true; // Closing code
		_stprintf(msg, ID2GAMEEXTEXT( "NPGAMEMON_INIT_ERROR" ), dwArg);
		lpszMsg = msg;
		break;
	case NPGAMEMON_SPEEDHACK:
		bAppExit = true; // termination code
		lpszMsg = ID2GAMEEXTEXT( "NPGAMEMON_SPEEDHACK" );
		break;
	case NPGAMEMON_GAMEHACK_KILLED:
		bAppExit = true; // termination code, close or proceed continuously
		lpszMsg = ID2GAMEEXTEXT( "NPGAMEMON_GAMEHACK_KILLED" );
		break;
	case NPGAMEMON_GAMEHACK_DETECT:
		bAppExit = true; // termination code
		lpszMsg = ID2GAMEEXTEXT( "NPGAMEMON_GAMEHACK_DETECT" );
		break;
	case NPGAMEMON_GAMEHACK_DOUBT:
		bAppExit = true; // termination code
		lpszMsg = ID2GAMEEXTEXT( "NPGAMEMON_GAMEHACK_DOUBT" );
		break;
	case NPGAMEMON_CHECK_CSAUTH2:
		{

			
			// charid°¡ º¯°æµÉ¶§¸¶´Ù ID Àü¼Û
			DWORD dwCHARID = GLGaeaClient::GetInstance().GetCharacter()->m_dwCharID;

			if ( dwCharIDBack != dwCHARID && dwCHARID != 0 )
			{
				CString strUserID;
				strUserID.Format( "CHAR_ID:%u", dwCHARID );
				npgl.Send( strUserID.GetString() );
			}	

			if( g_AuthMsgBuffer.empty() ) break;
			UINT AuthMsg = g_AuthMsgBuffer.front();
			g_AuthMsgBuffer.pop();

			if( AuthMsg == NET_MSG_GAMEGUARD_AUTH )
			{
				NET_GAMEGUARD_ANSWER NetMsg;
				memmove( &NetMsg.ggad, (GG_AUTH_DATA*)dwArg, sizeof(GG_AUTH_DATA) );

				CNetClient* pNetClient = DxGlobalStage::GetInstance().GetNetClient ();
				if ( pNetClient && pNetClient->IsOnline () )
				{
					const TCHAR* szEncrypt;
					szEncrypt = pNetClient->DoEncryptKey();					
					memcpy( NetMsg.szEnCrypt, szEncrypt, ENCRYPT_KEY+1);
				}

				DxGlobalStage::GetInstance().NetSend( (NET_MSG_GENERIC*)&NetMsg );
			}	
			else if( AuthMsg == NET_MSG_GAMEGUARD_AUTH_1 )
			{
				NET_GAMEGUARD_ANSWER_1 NetMsg;
				memmove( &NetMsg.ggad, (GG_AUTH_DATA*)dwArg, sizeof(GG_AUTH_DATA) );
				DxGlobalStage::GetInstance().NetSend( (NET_MSG_GENERIC*)&NetMsg );
			}
			else if( AuthMsg == NET_MSG_GAMEGUARD_AUTH_2 )
			{
				NET_GAMEGUARD_ANSWER_2 NetMsg;
				memmove( &NetMsg.ggad, (GG_AUTH_DATA*)dwArg, sizeof(GG_AUTH_DATA) );
				DxGlobalStage::GetInstance().NetSend( (NET_MSG_GENERIC*)&NetMsg );
			}
		}
		break;
	}

	if( bAppExit ) // °ÔÀÓ Á¾·á½Ã¿¡¸¸ false¸¦ ¸®ÅÏ
	{
		DWORD dwCHARID = GLGaeaClient::GetInstance().GetCharacter()->m_dwCharID;

		{ // Note : ¶õ¼­¹ö¿¡ ·Î±× ±â·Ï
			GLMSG::SNET_BLOCK_DETECTED NetMsg;
			NetMsg.dwDETECTED = dwMsg; // NP ¸®ÅÏ ¹øÈ£
			NetMsg.dwCHARID = dwCHARID;
			StringCchCopy( NetMsg.szINFO, GLMSG::SNET_BLOCK_DETECTED::MAX_INFO, npgl.GetInfo() );
			DxGlobalStage::GetInstance().NetSend( (NET_MSG_GENERIC*)&NetMsg );
		}

		{ // Note : NP¼­¹ö¿¡ ·Î±× ±â·Ï
			CString strUserID;
			strUserID.Format( "CHAR_ID:%u", dwCHARID );
			npgl.Send( strUserID.GetString() );
		}	

		// Note : ÇÁ·Î±×·¥À» Á¾·áÇÑ´Ù.
		//CInnerInterface::GetInstance().WAITSERVER_DIALOGUE_OPEN(ID2GAMEINTEXT("WAITSERVER_HACK_MESSAGE"), WAITSERVER_CLOSEGAME);
		DxGlobalStage::GetInstance().CloseGame( lpszMsg );
		return false;
	}

	return true;
}
#endif
//////////////////////////
#if defined(MY_PARAM) || defined(MYE_PARAM) || defined(PH_PARAM) //|| defined ( VN_PARAM ) || defined(TH_PARAM) || defined ( HK_PARAM ) || defined(TW_PARAM) // Nprotect Á¤ÀÇ
	npgl.SetHwnd( m_hWnd );
	m_nGGTimer = SetTimer(NPGAMEMON_TIMER, 10000, 0);
	m_nGGATimer = SetTimer(NPGAMEMON_AUTH_TIMER, 60000, 0);
	m_nGGA12Timer = SetTimer(NPGAMEMON_AUTH12_TIMER, 33, 0);
#endif

BasicWnd.cpp

Code:
#if defined(MY_PARAM) || defined(MYE_PARAM) || defined(PH_PARAM) //|| defined ( VN_PARAM ) || defined(TH_PARAM) || defined ( HK_PARAM ) || defined(TW_PARAM) // Nprotect Á¤ÀÇ
	KillTimer( m_nGGTimer );
	KillTimer( m_nGGATimer );
	KillTimer( m_nGGA12Timer );
#endif

i think this is gameguard source for game.exe (not sure and not try yet)
what do you think??
 
  • Like
Reactions: zet
@geger
Yes it is. :):
But i advise for those who want to use gameguard, just straightly use PH RELEASE. it's gameguard-ready . Just bypass the 'Invalid Game Account' and 'Don't Execute independent' error.

The Only working Gameguard source is the one from the PH Release, i tried to use MY and MYE release with MY-Gameguard and it is not working.

But a tip base on my experience,
Game Guard is good but, its not advisable to use unless you make your own GG-SERVER - That's the problem right now. We have a gameguard INI decryptor but, we don't have an encryptor
 
Last edited:
It's funny how people obsess over game guard as if it was a miracle solution to all hack problems, truth is that most problems aren't done with hack "tools", dupe is done by bug abuse, crash doesn't even require the game to be ON at all, so what's your mighty game guard gonna do? Game Guard is just a false hope solution on bad source code, if you want real security fix your code/client
 
How to set glogic.rcc password :

Go to: Source\enginelib\Common

Find this:
Code:
if( IsEncrypted( info.dwFlags ) ) // MEMO : ¾Ïȣȭ µÈ ÆÄÀÏÀ̸é...
		{
			if( unzOpenCurrentFilePassword(m_uzFile, "asdgfh") != UNZ_OK )
				return UINT_MAX;
		}
		else
		{
			if( unzOpenCurrentFile(m_uzFile) != UNZ_OK )
				return UINT_MAX;
		}

Edit:

Code:
if( IsEncrypted( info.dwFlags ) ) // MEMO : ¾Ïȣȭ µÈ ÆÄÀÏÀ̸é...
		{
			if( unzOpenCurrentFilePassword(m_uzFile, "[COLOR="Red"]Yourpassword[/COLOR]") != UNZ_OK )
				return UINT_MAX;
		}
		else
		{
			if( unzOpenCurrentFile(m_uzFile) != UNZ_OK )
				return UINT_MAX;
		}

After that compile source,,
Hope it helped!:):
 
must encrypt you game.exe so that so no one can see your modified password
good guide..
i was about to post it.. well tnx
 
Status
Not open for further replies.
Back