Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Rappelz > Rappelz Private Server
You last visited: Today at 20:09

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Selling Rappelz Epic7 Part 4 Source code.

Discussion on Selling Rappelz Epic7 Part 4 Source code. within the Rappelz Private Server forum part of the Rappelz category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: May 2015
Posts: 6
Received Thanks: 2
Selling Rappelz Epic7 Part 4 Source code.

Hi

So basically what the title says, I'm selling the entire OFFICIAL source code for rappelz, this includes client, server side, full database structures, source code to ALL rappelz tools, including but not limited to, JTool, QJTVLoader, QJTVMaker, Nx3Exporter etc. The source code is from december 2012.
Again, this is for FULL code, client and server and tools. This is the souce of epic7 part 4.

Payments will only be accepted via BTC, for anon reasons of course. I understand not trusting an account that was made today, but I like to be safe.
I have uploaded a .zip but it's a 7z archive (please extract with 7zip) with null byte files, but the directory structure to prove the existence of the files. There are no executable to open, so don't scream virus. You need knowledge of coding, I'm not here to help you with compile problems.


Mods/Admins can request additional verification, such as small code snippet etc.

Serious offers to be made here.

Please do not PM ME offers, you can ask for information, but offers to be made here.

Also selling 4story source code @


Also selling Dragons Prophet source code (but no section to post it in)

Additional proof: (this is taken from Project_RP/Client/Epic7Part4/Game/Main/SGame.cpp)

Code:
#include "StdAfx.h"

#include "XSyncStreamConnection.h"

#include "KRenderObjectBone.h"
#include "KRenderObjectEtc.h"

#include "SGameViewPort.h"

#include "KDeviceManager.h"
#include "KRenderDeviceDX.h"
#include "KResourceManager.h"
#include "K3DCamera.h"

#include "SGameEnhanceFx.h"

#include "resource.h"

#include "SGameManager.h"
#include "sgame.h"
#include "SGameSound.h"
#include "SGameEffect.h"
#include "GameDefine.h"
#include "SGameOption.h"

#include "SGameAvatarEx.h"

#include "XUtil.h"
#include "XConsole.h"
#include "XStringUtil.h"
#include "XSimpleProfiler.h"

#include "SGameMessage.h"
#include "SGameMessageUI.h"
#include "SNetMessage.h"
#include "XProfiler.h"

#include "SGameUtil.h"
#include "SkillBaseFile.h"
#include "STenacityDB.h"
#include "SMotionDB.h"
#include "SEnhanceFXDB.h"
#include "SUIDisplayInfo.h"

#include "SGameMilesSoundMgr.h"
/// 2010.11.10 - prodongi
#include "SGameLobbyDefine.h"

//Explorer
#include <exdisp.h>
#include <comutil.h>

#define S_USER					1000

const char * pEP_Name[] =
{
		"ep_top01_main",
		"ep_middle01_main",
		"ep_damage01_main",
		"ep_bottom01",
		"ep_ride01_main",
		"ep_wfx_00_l",
		"ep_wfx_00",
		"ep_wfx_00_th",
};

const char * pEffectAniKey[] = 
{
	"effect_start",
	"effect_middle",
	"effect_end"
};

extern void SetNavigate( const char * pURL, bool bVisible, int nAddWidth, int nAddHeight );
extern void SetVisibleNavigate( bool bVisible );
extern IWebBrowser2* GetWebBrowser( int nWidth, int nHeight, int nAddWidth, int nAddHeight );
extern void InitWebBrowser( IWebBrowser2* pWebBrowser );
extern void SetWebWindowStyle( HWND hWebBrowser );
extern void SetWebBrowserMovePos( IWebBrowser2* pWebBrowser, int nX, int nY );
extern void SetWebBrowserCenterPos( IWebBrowser2* pWebBrowser, int nW, int nY );
extern void SetWebBrowserVisible( IWebBrowser2* pWebBrowser, bool bVisible );
extern void SetURLNavigate( IWebBrowser2* pWebBrowser, const char * pURL );
extern void CurURLRefresh( IWebBrowser2* pWebBrowser );

extern void CloseWebBrowser( IWebBrowser2* pWebBrowser );

typedef struct _Web_Window_
{
	_Web_Window_()
	{
		nWindowID        = 0;
		pWebBrowserOther = NULL; 
	}

	int				nWindowID;
	IWebBrowser2*   pWebBrowserOther; 
} WEB_WINDOW;

std::vector< WEB_WINDOW > g_vWebWinList;

extern HWND g_hWnd;
extern IWebBrowser2*   g_pWebBrowser; 
extern VARIANT_BOOL    g_IsShowWebBrowser;
extern bool			   g_IsShowWebBrowserChanged;

void EraseWebWindow( int nWinID )
{
	for( unsigned int i(0); g_vWebWinList.size()>i; i++ )
	{
		if( g_vWebWinList[i].nWindowID == nWinID )
		{
			g_vWebWinList.erase( g_vWebWinList.begin()+i );
			return;
		}
	}
}

IWebBrowser2* GetWebWindow( int nWinID )
{
	for( unsigned int i(0); g_vWebWinList.size()>i; i++ )
	{
		if( g_vWebWinList[i].nWindowID == nWinID )
			return g_vWebWinList[i].pWebBrowserOther;
	}

	return NULL;
}

void CurOtherURLRefresh( int nWinID )
{
	IWebBrowser2* pWebBrowserOther = GetWebWindow( nWinID );

	if( pWebBrowserOther )
		CurURLRefresh( pWebBrowserOther );
}

void SetOtherNavigateMove( int nWinID, int nX, int nY )
{
	IWebBrowser2* pWebBrowserOther = GetWebWindow( nWinID );

	if( pWebBrowserOther )
	{
		SetWebBrowserMovePos( pWebBrowserOther, nX, nY );
	}
}

void SetOtherNavigateClose( int nWinID )
{
	IWebBrowser2* pWebBrowserOther = GetWebWindow( nWinID );

	if( pWebBrowserOther )
	{
		SetWebBrowserVisible( pWebBrowserOther, false );
	
		CloseWebBrowser( pWebBrowserOther );

		EraseWebWindow( nWinID );
	}
}

void SetOtherNavigate( int nWinID, const char * pURL, int nWidth, int nHeight )
{
	IWebBrowser2* pWebBrowserOther = GetWebWindow( nWinID );

	if( pWebBrowserOther )
	{
		SetWebBrowserVisible( pWebBrowserOther, true );
		SetURLNavigate( pWebBrowserOther, pURL );

		HWND hWnd = NULL;
		HRESULT hrGetHWN = pWebBrowserOther->get_HWND( (long*)&hWnd );
		if( hrGetHWN == S_OK ) 
			::BringWindowToTop( hWnd );
	}
	else
	{
		WEB_WINDOW web_window;
		web_window.pWebBrowserOther = GetWebBrowser( nWidth, nHeight, 0, 0 );
		web_window.nWindowID        = nWinID;

		g_vWebWinList.push_back( web_window );

		if( web_window.pWebBrowserOther )
		{
			InitWebBrowser( web_window.pWebBrowserOther );
			HWND hWnd = NULL;
			HRESULT hrGetHWN = web_window.pWebBrowserOther->get_HWND( (long*)&hWnd );
			if( hrGetHWN == S_OK ) 
			{
				SetWebWindowStyle( hWnd );
				::BringWindowToTop( hWnd );
			}

				SetWebBrowserCenterPos( web_window.pWebBrowserOther, nWidth, nHeight );
				SetURLNavigate( web_window.pWebBrowserOther, pURL );
				SetWebBrowserVisible( web_window.pWebBrowserOther, true );
		}
	}
}

//=============================================================================
//SGame

SGame::SGame
( SGameManager* pGameMng
 , int nGameType
 , K3DRenderDeviceDX* pRenderDevice
 , SSoundManager* pSoundMng
 , KTextureManager* pTextureMng
 , KNX3Manager* pNX3Mng
 , SGameMilesSoundMgr* pMSoundMgr )
 : m_pGameMng(pGameMng) 
 ,m_nGameType(nGameType)
 ,m_pRenderDevice(pRenderDevice)
 ,m_pSoundMng(pSoundMng)
 ,m_pTextureMng(pTextureMng)
 ,m_pNX3Mng(pNX3Mng)
 ,m_pMSoundMgr(pMSoundMgr)
{

	m_pCamera = new K3DCamera;
	m_pCamera->Reset();

	m_pArObject   = NULL;

	m_dwTime = 0;

	m_nCurSelect     = -1;
	m_nSpecialSelect = -1;

	m_nDeltaSpeed    = 1;

	m_fTime        = 0.0f;	// Current time in seconds
	m_fAccumTime   = 0.0f;	// the global time - Speed Tree
	m_fElapsedTime = 0.0f;  // Time elapsed since last frame

	m_nGameRef = STAGE_LOADING;

	m_nCheatMode = CHEAT_NONE;

	m_nEffectID		=	0;
	m_nNewEffectID	=	0;

	m_nAttackEffectID = 0;

	m_bStopProc = false;

	m_pViewPort = NULL;

	m_nNewEnhanceFxID	=	0;
}

SGame::~SGame(void)
{
	SAFE_DELETE(m_pCamera);

	_AllDelEffect();

	AllDelParticle();
}

void SGame::SetViewPort( SGameViewPort* pViewPort )
{ 
	m_pViewPort = pViewPort;
}

void SGame::_AllDelEffect()
{
	for( unsigned int i(0); m_vEffectList.size()>i; i++ )
		delete m_vEffectList[i];
	m_vEffectList.erase( m_vEffectList.begin(), m_vEffectList.end() );

	for( unsigned int i(0); m_vNewEffectList.size()>i; i++ )
		delete m_vNewEffectList[i];
	m_vNewEffectList.erase( m_vNewEffectList.begin(), m_vNewEffectList.end() );

	for( unsigned int i(0); m_vAttackEffectList.size()>i; i++ )
		delete m_vAttackEffectList[i];
	m_vAttackEffectList.erase( m_vAttackEffectList.begin(), m_vAttackEffectList.end() );	
}

void SGame::AllDelParticle()
{
	std::vector< SGameEnhanceFx* >::iterator iter = m_vEnhanceFxList.begin();
	for( ; iter != m_vEnhanceFxList.end(); )
	{
		SAFE_DELETE( (*iter) );
		iter = m_vEnhanceFxList.erase(iter);
	}
	m_vEnhanceFxList.clear();

	m_nNewEnhanceFxID		=	0;

	while( !m_RecycleID.empty() )
		m_RecycleID.pop();
}

bool SGame::Render( unsigned long uRenderBitVector, KViewportObject** ppViewportList, int nViewportCount )
{
	//Camera Render
	for(int vit = 0; vit < nViewportCount; ++vit)  {
		//if(ppViewportList[vit]->GetAttributes() & KViewportObject::VIEWPORT_GAME)
		//	m_pCamera->Render( ppViewportList[vit] );
		ppViewportList[vit]->SetCamera(m_pCamera);
	}

	return true;
}

bool SGame::Process( DWORD time, unsigned long uProcessBitVector )
{
	m_dwTime = time;

	return true;
}

void SGame::SetCheatMode( int nMode )
{
	m_nCheatMode = nMode;
}

void SGame::SetGameRef( int nGameRef )
{ 
	_oprint( "!!!!! SetGameRef : %d\n", nGameRef );
	m_nGameRef = nGameRef; 
}

void SGame::SendMsg( SGameObject *pGO, const TS_MESSAGE *msg )
{
	TS_MESSAGE * pMsg = NULL;

	//TS_MESSAGE¸¦ ±¸¼ºÇÏ¿©, º¸³½´Ù.

	PendMessage( pMsg );
}

void SGame::SendMsg( const TS_MESSAGE *msg )
{
	PendMessage( msg );
}

bool SGame::IsUIWindowOpened( int nWindowID )
{
	return m_pGameMng->IsUIWindowOpened( nWindowID );
}

bool SGame::IsWebPageWndOpened()
{
	return m_pGameMng->IsWebPageWndOpened();
}

void SGame::PendMessage( const TS_MESSAGE * pMessage )
{
	if( IsStopProcess() ) return;

	//	_oprint( "PendMessage : %d\n", pMessage->id );

	m_pGameMng->PendMessage( pMessage );
}

void SGame::DelOwnerEffect( AR_HANDLE hOwner )
{
	for( unsigned int i(0); m_vEffectList.size()>i; i++ )
	{
		if( m_vEffectList[i]->GetHandle() == hOwner )
			m_vEffectList[i]->SetEnd();
	}

	for( unsigned int i(0); m_vNewEffectList.size()>i; i++ )
	{
		if( m_vNewEffectList[i]->GetOwner() == hOwner )
			m_vNewEffectList[i]->ForceEnd();
	}

	for( unsigned int i(0); m_vAttackEffectList.size()>i; i++ )
	{
		if(m_vAttackEffectList[i]->GetCastHandle() == hOwner)
			m_vAttackEffectList[i]->SetEnd();
	}
}

void  SGame::DelEffect( int nEffectID )
{
	for( unsigned int i(0); m_vEffectList.size()>i; i++ )
	{
		if( m_vEffectList[i]->GetEffectID() == nEffectID )
		{
			m_vEffectList[i]->SetEnd();
			break;
		}
	}
}

void SGame::EndLoopFx( int nEffectID )
{
	for( unsigned int i(0); m_vNewEffectList.size()>i; i++ )
	{
		if( m_vNewEffectList[i]->GetEffectID() == nEffectID )
		{
			m_vNewEffectList[i]->IsLoopFx(false);
			break;
		}
	}
}

void SGame::AddStateEffect( SGameMessage * pGameMsg )
{
	if( pGameMsg->nType == MSG_STATE )
	{
		SMSG_STATE * pStateMsg = reinterpret_cast<SMSG_STATE*>(pGameMsg);

		SGameAvatarEx* pTarget = (SGameAvatarEx*)GetGameObject( pStateMsg->handle );
		if( !pTarget ) return;

		if( pTarget->IsPendLoading() ) return;

		StateInfoEx * pState = GetTenacityDB().GetTenacityData( pStateMsg->state_code );
		if( !pState ) return;

		int nFXID = GetTenacityDB().GetFXID( pStateMsg->state_code );

		FX_DATA fx_data;
		fx_data.nStateCode   = pStateMsg->state_code;
		fx_data.nMode        = SGameEffectEx::STATE_MODE;
		fx_data.end_time     = pStateMsg->end_time;    //»óÅ ÀÌ»ó Á¾·á ½Ã°£
		fx_data.state_handle = pStateMsg->state_handle;//»óÅ ÀÌ»ó ÇÚµé

		fx_data.owner   = pStateMsg->handle;
		fx_data.attack  = pStateMsg->handle;
		fx_data.target  = pStateMsg->handle;
		fx_data.nEffPos = pState->pos_id;
		fx_data.nFX_ID  = nFXID;

		AddEffect( &fx_data );
	}
}

void SGame::UpdateStateEffect( SGameMessage * pGameMsg )
{
	if( pGameMsg == NULL ) return;

	if( pGameMsg->nType == MSG_STATE )
	{
		SMSG_STATE * pStateMsg = reinterpret_cast<SMSG_STATE*>(pGameMsg);

		std::vector< SGameEffectEx* >::iterator iter = m_vNewEffectList.begin();
		for( ; iter != m_vNewEffectList.end(); ++iter )
		{
			if( (*iter)->GetMode() == SGameEffectEx::STATE_MODE )
			{
				if( (*iter)->GetOwner() == pStateMsg->handle && (*iter)->GetStateHandle() == pStateMsg->state_handle )
				{
					(*iter)->SetEndTime( pStateMsg->end_time );
				}
			}
		}
	}
}

void SGame::DelStateEffect( SGameMessage * pGameMsg )
{
	if( pGameMsg->nType == MSG_STATE )
	{
		SMSG_STATE * pState = reinterpret_cast<SMSG_STATE*>(pGameMsg);

		for( unsigned int i(0); m_vEffectList.size()>i; i++ )
		{
			if( m_vEffectList[i]->GetHandle() == pState->handle && m_vEffectList[i]->GetStateHandle() == pState->state_handle )
			{
				m_vEffectList[i]->SetEnd();
			}
		}

		std::vector< class SGameEffectEx* >::iterator iter = m_vNewEffectList.begin();
		for( ; iter != m_vNewEffectList.end(); ++iter )
		{
			if( (*iter)->GetOwner() == pState->handle && (*iter)->GetStateHandle() == pState->state_handle )			
			{
				(*iter)->ForceEnd();
			}
		}
	}
}

void SGame::DelStateEffect( int nDelObjType )
{
	for( unsigned int i(0); m_vEffectList.size()>i; i++ )
	{
		unsigned char Type;
		int ObjType = IsFriend( m_vEffectList[i]->GetHandle(), Type );
		if( ObjType & nDelObjType )
		{
			m_vEffectList[i]->SetEnd();
		}
	}

	std::vector< class SGameEffectEx* >::iterator iter = m_vNewEffectList.begin();
	for( ; iter != m_vNewEffectList.end(); ++iter )
	{
		unsigned char Type;
		int ObjType = IsFriend( (*iter)->GetOwner(), Type );
		if( ObjType & nDelObjType )
		{
			(*iter)->ForceEnd();
		}
	}
}

SGameEffect* SGame::CreateEffect( const char * pEffectName, int nFlag, AR_HANDLE owner, AR_HANDLE caster, AR_HANDLE target, int nUseBoneIndex, int nAniType, float fPlayRate, AR_TIME end_time, bool bIsOwnerDir )
{
	//	_oprint( "SGame::CreateEffect [c-%u] [o-%u]\n", caster, owner );
	SGameAvatarEx* pOwner = (SGameAvatarEx*)GetGameObject( owner );
	if( !pOwner ) return NULL;

	SGameAvatarEx* pCaster = (SGameAvatarEx*)GetGameObject( caster );
	if( !pCaster ) return NULL;

	SGameAvatarEx* pTarget = (SGameAvatarEx*)GetGameObject( target );
	if( !pTarget ) return NULL;

	if( pOwner->GetEffectRef() > 7 ) return NULL;

	if( CheckCameraDistance( pOwner ) == false ) 
		return NULL;

	pOwner->EffectAddRef();

	SGameEffect * pEffect = new SGameEffect( owner );

	pEffect->SetOwner( owner );
	pEffect->SetFlag( nFlag );     //µû¶ó°¡±â 1, º¸Åë 0

	if( m_nCheatMode == CHEAT_NONE )
	{
		pEffect->AddEffect( pEffectName );						//¸ð¾ç Á¾·ù
	}
	else
	{
		std::string strFileName = pEffectName;
		if( m_nCheatMode == CHEAT_MODE01 )
		{
			if( strcmp( strFileName.c_str(), "rcfx_ch_standard_damage_01.nx3" ) == 0 )
				strFileName = "rcfx_ch_standard_criticaldamage_01.nx3";
		}
		else if( m_nCheatMode == CHEAT_MODE02 )
		{
			if( strcmp( strFileName.c_str(), "rcfx_ch_standard_damage_01.nx3" ) == 0 )
				strFileName = "rcfx_ch_standard_damage_plusalpha_01.nx3";
		}

		pEffect->AddEffect( strFileName.c_str() );
	}

	pEffect->PlayAnimation( m_dwTime, nAniType, fPlayRate );  //½ÃÀÛ

	assert( nUseBoneIndex <= EFFECT_POS_MAX && "ÀÌÆåÆ® À§Ä¡°¡ ¿¾³¯ °ÍÀÓ" );

	const K3DMatrix* pEvpMatrix			= pOwner->GetEventPointMatrix( nUseBoneIndex );
	const K3DMatrix* pEvpAttachMatrix	= pOwner->GetEventPointAttachMatrix( nUseBoneIndex );

	K3DMatrix mat; //»À´Â À§Ä¡¸¸ ÂüÁ¶
	K3DMatrixIdentity( mat );

	//¹æÇâ ±¸Çϱâ
	if( bIsOwnerDir )
	{
		pEffect->SetOwnerDirection( pCaster->GetTransform(), (K3DVector*)&pCaster->GetViewVector() );
	}
	else if( caster != target )
	{
		//¹æÇâÀº caster -> target
		pEffect->SetDirection( *pCaster->GetPosition(), *pTarget->GetPosition() );
	}
	else
	{
		K3DVector spos = pCaster->GetViewVector();
		K3DVector tpos = spos;
		tpos *= 3;
		pEffect->SetDirection( spos, tpos );
	}

	if( nFlag == 1 ) //µû¶ó°¡±â ¼³Á¤
	{
		if( pEvpAttachMatrix && pEvpMatrix )
			pEffect->SetParentMat( pOwner->GetTransform(), pEvpAttachMatrix, pEvpMatrix );
		else
			pEffect->SetParentMat( pOwner->GetTransform(), NULL, NULL );
	}
	else
	{
		if( pEvpAttachMatrix && pEvpMatrix )
		{
			K3DMatrixMultiply( mat, *pEvpAttachMatrix, *pOwner->GetTransform() );
			K3DMatrixMultiply( mat, *pEvpMatrix, mat );
		}
		else
			mat = *pOwner->GetTransform();

		pEffect->SetTransform( mat );
	}

	if( pOwner->GetArID() != pTarget->GetArID() && nFlag != 2 )
	{
		pEffect->SetTargetScale(pTarget->GetScale(), mat);
	}

	pEffect->SetMessageHandler( this );

	//»óÅ ÀÌ»ó Áö¼Ó ½Ã°£
	if( end_time > 0 )
	{
		pEffect->SetEndTime( end_time );
	}

	if (fabs(pTarget->GetAdjustedScale() - 1.0f) > FLT_EPSILON)
	{
		pEffect->SetScalePure(pTarget->GetAdjustedScale());
	}

	return pEffect;
}

int SGame::AddEffectTest( const char * pFileName, AR_HANDLE hOwner )
{
	SGameEffect * pEffect = CreateEffect(	pFileName, 1, 
		hOwner, hOwner, hOwner, 
		EFFECT_POS_DAMAGE, SEQTYPE_NORMAL, 4.8f, 0, 0 );
	if( pEffect )
	{
		m_nEffectID++;
		pEffect->SetEffectID( m_nEffectID );

		m_vEffectList.push_back( pEffect );

		return m_nEffectID;
	}
	return -1;	
}

int  SGame::AddEffect( FX_DATA * pFX_data )
{
	_MOTION_FX_SET* pFXSET = GetMotionFxSetDB().GetFXSet( pFX_data->nFX_ID );
	if( pFXSET )
	{
		SGameAvatarEx* pOwner = (SGameAvatarEx*)GetGameObject( pFX_data->owner );
		if( !pOwner ) return NULL;

		SGameAvatarEx* pCaster = (SGameAvatarEx*)GetGameObject( pFX_data->attack );
		if( !pCaster ) return NULL;

		SGameAvatarEx* pTarget = (SGameAvatarEx*)GetGameObject( pFX_data->target );
		if( !pTarget ) return NULL;

		if( pOwner->GetEffectRef() > 7 ) return NULL;

		if( pFX_data->state_handle == 0 )
		{
			if( CheckCameraDistance( pOwner ) == false ) 
				return NULL;
		}

		pOwner->EffectAddRef();

		SGameEffectEx * pEffect = new SGameEffectEx( pFX_data, pFXSET );
		++m_nNewEffectID;

		pEffect->SetOwner( pFX_data->owner ); //Áö¿ï¶§ »ç¿ë
		pEffect->SetCaster( pFX_data->attack );
/*
		KEventPointSeq * pEv = NULL;
		bool bFindSuc = false;
		{
			_CID( REQ_EVPOINT );
			KMsgREQ_EVPOINT effect_pos_msg;
			pOwner->Perform( ANIPART_WEAPON_LEFT , id_REQ_EVPOINT, effect_pos_msg );
			pOwner->Perform( ANIPART_WEAPON_RIGHT, id_REQ_EVPOINT, effect_pos_msg );
			pOwner->Perform( ANIPART_BIPED, id_REQ_EVPOINT, &effect_pos_msg );
			//Effect Pos À§Ä¡ °è»ê ÇØ¾ß ÇÑ´Ù.
			for( int i(0); effect_pos_msg.GetPointCount()>i; i++ )
			{
				pEv = effect_pos_msg.GetPoint(i);
				const char * pName = pEv->GetName();
				if( strlen(pName) && _stricmp( pName, pEP_Name[pFX_data->nEffPos] ) == 0 )
				{
					pEffect->SetEventPointSequencer( pEv );
					bFindSuc = true;
					break;
				}
			}
		}*/

 		const K3DMatrix* pEvpMatrix			= pOwner->GetEventPointMatrix( pFX_data->nEffPos );
		const K3DMatrix* pEvpAttachMatrix	= pOwner->GetEventPointAttachMatrix( pFX_data->nEffPos );

		K3DMatrix mat;
		if( pFX_data->nMode == SGameEffectEx::NORMAL_MODE )
		{
			if( pFX_data->bDir )
			{
				//¹æÇâ ±¸Çϱâ
				if( pFX_data->attack != pFX_data->target )
				{
					//¹æÇâÀº caster -> target
					pEffect->SetDirection( *pCaster->GetPosition(), *pTarget->GetPosition() );
				}
				else
				{
					K3DVector spos = pCaster->GetViewVector();
					K3DVector tpos = spos;
					tpos *= 3;
					pEffect->SetDirection( spos, tpos );
				}
			}

			if( pFXSET->nFollowing == 1 )
			{
				if( pFX_data->nEffPos == EFFECT_POS_W_LEFT	|| 
					pFX_data->nEffPos == EFFECT_POS_W_RIGHT || 
					pFX_data->nEffPos == EFFECT_POS_W_TWOHAND )
				{
					pEffect->IsWeaponEffectPos();
				}

				pEffect->SetParentMat( pOwner->GetTransform(), pEvpAttachMatrix, pEvpMatrix );

				mat = *pOwner->GetTransform();
			}
			else
			{
				if( pEvpAttachMatrix && pEvpMatrix )
				{
					K3DMatrixMultiply( mat, *pEvpAttachMatrix, *pOwner->GetTransform() );
					K3DMatrixMultiply( mat, *pEvpMatrix, mat );
				}
				else
					mat = *pOwner->GetTransform();
			}
		}
		else if( pFX_data->nMode == SGameEffectEx::STATE_MODE )
		{
			pEffect->SetParentMat( pOwner->GetTransform(), pEvpAttachMatrix, pEvpMatrix );
			mat = *pOwner->GetTransform();	
		}


		if( pOwner->GetArID() != pTarget->GetArID() )
		{
			pEffect->SetTargetScale(pTarget->GetScale(), mat);
		}

		pEffect->SetEndTime( pFX_data->end_time );
		pEffect->SetMode( pFX_data->nMode );
		pEffect->SetStateHandle( pFX_data->state_handle );
		pEffect->SetMessageHandler( this );
		pEffect->SetTransform( mat );
		pEffect->SetEffectID( m_nNewEffectID );
		pEffect->PlayAnimation( m_dwTime );  //½ÃÀÛ
		pEffect->IsLoopFx(pFX_data->bIsLoop);

		if (fabs(pTarget->GetAdjustedScale() - 1.0f) > FLT_EPSILON)
		{
			pEffect->SetScaleAdjust(pTarget->GetAdjustedScale());
		}

		pEffect->setTarget(pFX_data->target);	/// 2011.04.04 - prodongi

		m_vNewEffectList.push_back( pEffect );

		return m_nNewEffectID;
	}

 	return -1;
}

int SGame::AddEffect( FX_DATA_EX * pFX_data ) //Follow Effect
{
	//	_oprint( "AddEffect %s, %d\n", pEffectName, end_time );

	SGameEffect * pEffect = CreateEffect(	pFX_data->m_pEffectName, pFX_data->m_nFlag, 
		pFX_data->m_owner, pFX_data->m_caster, pFX_data->m_target, 
		pFX_data->m_nUseBoneIndex, pFX_data->m_nAniType, pFX_data->m_fPlayRate, pFX_data->m_end_time, pFX_data->m_bIsOwnerDir );
	if( pEffect )
	{
		m_nEffectID++;
		pEffect->SetEffectID( m_nEffectID );

		m_vEffectList.push_back( pEffect );

		return m_nEffectID;
	}
	return -1;
}

int SGame::AddEffect( AR_HANDLE hAttacker, AR_HANDLE hTarget, AR_HANDLE hOwner, int nEffectID, int nEffectPos, bool bIsLoopFx )
{
	FX_DATA	fxdata;
	fxdata.attack	=	hAttacker;
	fxdata.target	=	hTarget;
	fxdata.owner	=	hOwner;
	fxdata.nFX_ID	=	nEffectID;
	fxdata.nEffPos	=	nEffectPos;
	fxdata.bIsLoop	=	bIsLoopFx;

	return AddEffect( &fxdata );
}

int SGame::AddAttackEffect( FX_DATA * fxdata )
{
	SGameAvatarEx* pCaster = (SGameAvatarEx*)GetGameObject(fxdata->attack);
	if(pCaster)
	{
		if(pCaster->GetObjType() != TS_ENTER::GAME_PLAYER || fxdata->keyhandleid == SMotionEventHanderDB::EV_HIT)
		{
			if( CheckCameraDistance( pCaster ) )
				return AddEffect( fxdata );
			else
				return -1;
		}

		if(fxdata->keyhandleid != SMotionEventHanderDB::EV_LEFT_HAND_HIT  &&
		   fxdata->keyhandleid != SMotionEventHanderDB::EV_RIGHT_HAND_HIT &&
		   fxdata->keyhandleid != SMotionEventHanderDB::EV_TWO_HAND_HIT)
		{
			if( CheckCameraDistance( pCaster ) )
				return AddEffect( fxdata );
			else
				return -1;
		}
	}
	else
	{
		return -1;
	}

	_MOTION_FX_SET* pFXSET = GetMotionFxSetDB().GetFXSet(fxdata->nFX_ID);
	if( pFXSET )
	{
		SGameAvatarEx* pTarget = (SGameAvatarEx*)GetGameObject(fxdata->target);
		if( !pTarget ) return NULL;

		if( CheckCameraDistance( pCaster ) == false )
			return -1;

		if( pCaster->GetEffectRef() > 7 ) return NULL;

		const K3DMatrix*	pmatEPParent;
		const K3DMatrix*	pmatEpAttach;
		const K3DMatrix*	pmatEpPoint;

		EFFECT_POS_WEAPON nEffectPosWp;
		
		switch(fxdata->keyhandleid)
		{
		case SMotionEventHanderDB::EV_LEFT_HAND_HIT:	nEffectPosWp = EFFECT_POS_LEFT_WEAPON;		break;
		case SMotionEventHanderDB::EV_RIGHT_HAND_HIT:	nEffectPosWp = EFFECT_POS_RIGHT_WEAPON;		break;
		case SMotionEventHanderDB::EV_TWO_HAND_HIT:		nEffectPosWp = EFFECT_POS_TWOHAND_WEAPON;	break;
		default:
			{
				assert( false );
				return AddEffect( fxdata );
			}
		}

		if(!pCaster->GetWeaponEventPoint(nEffectPosWp) || fxdata->keytime == -1) 
		{
			return AddEffect( fxdata );
		}

		float fFrame = ((fxdata->keytime*4.8f)/160.0f)+0.05f; //¹Ý¿Ã¸²
		if(!pCaster->SetFrame((int)fFrame))
		{
			return AddEffect( fxdata );
		}

		pmatEPParent	=	pCaster->GetWeaponEventPointParentMatrix(nEffectPosWp, EFFECT_POS_WEAPON_EP_END);
		pmatEpAttach	=	pCaster->GetWeaponEventPointAttachMatrix(nEffectPosWp, EFFECT_POS_WEAPON_EP_END);
		pmatEpPoint		=	pCaster->GetWeaponEventPointMatrix(nEffectPosWp, EFFECT_POS_WEAPON_EP_END);

		K3DMatrix matWpTransform;
		K3DMatrixIdentity(matWpTransform);
		K3DMatrixMultiply(matWpTransform, *pmatEpPoint, *pmatEpAttach);
		K3DMatrixMultiply(matWpTransform, matWpTransform, *pmatEPParent);

		K3DVector vWpPos;
		vWpPos.x = matWpTransform._41;
		vWpPos.y = matWpTransform._42;
		vWpPos.z = 0.0f;//matWpTransform._43;

		K3DVector vCasterPos = *pCaster->GetPosition();
		K3DVector vTargetPos = *pTarget->GetPosition();

		float fCasterLength = K3DVectorLength((vCasterPos - vWpPos));
		float fTargetLength = K3DVectorLength((vCasterPos - vTargetPos));

		K3DMatrix matTransform;
		K3DMatrixIdentity(matTransform);

		if(fCasterLength < fTargetLength)
		{	//¹«±â À§Ä¡¿Í Ÿ°Ù À§Ä¡ Áß°£Á¡¿¡¼* ÀÌÆåÆ® ¹ß»ýµÊ
			K3DVector vWpPos = K3DVector( matWpTransform._41, matWpTransform._42, 0.0f );
			vWpPos = vWpPos + ((vTargetPos-vWpPos)/2.0f);

			matTransform._41 = vWpPos.x;
			matTransform._42 = vWpPos.y;
			matTransform._43 = matWpTransform._43;
		}
		else
		{	//À§Ä¡´Â Ÿ°ÙÀ§Ä¡ ³ôÀÌ´Â ¹«±â ³ôÀÌ
			matTransform._41 = vTargetPos.x;
			matTransform._42 = vTargetPos.y;
			matTransform._43 = matWpTransform._43; 
		}

		SGameEffectEx * pEffect = new SGameEffectEx( fxdata, pFXSET );
		++m_nNewEffectID;

		pCaster->EffectAddRef();

		pEffect->SetOwner( fxdata->attack ); //Áö¿ï¶§ »ç¿ë

		if( pCaster->GetArID() != pTarget->GetArID() )
		{
			pEffect->SetTargetScale(pTarget->GetScale(), matTransform);
		}

		pEffect->SetEndTime(fxdata->end_time );
		pEffect->SetMode(fxdata->nMode);
		pEffect->SetStateHandle(fxdata->state_handle);
		pEffect->SetMessageHandler(this);
		pEffect->SetTransform(matTransform);
		pEffect->SetEffectID(m_nNewEffectID);
		pEffect->PlayAnimation(m_dwTime);  //½ÃÀÛ
		pEffect->IsLoopFx(fxdata->bIsLoop);

		if (fabs(pTarget->GetAdjustedScale() - 1.0f) > FLT_EPSILON)
		{
			pEffect->SetScalePure(pTarget->GetAdjustedScale());
		}

		m_vNewEffectList.push_back(pEffect);

		return m_nNewEffectID;
	
	}

	return -1;
}

bool SGame::CheckCameraDistance( SGameObject* pObject )
{
	if( m_pViewPort )
	{
		const K3DVector& vCameraPos = m_pViewPort->GetCameraPos();
		float fLength = K3DVectorLength( vCameraPos - *pObject->GetPosition() );
		if( fLength > GAME_EFFECT_DISTANCE ) 
			return false;
	}

	return true;
}

void SGame::SendGameInterfaceMsg( struct SGameMessage * game_msg )
{
	if( m_pGameMng ) m_pGameMng->InterfaceMsg( game_msg );
}

unsigned g_userCamStates = 0;

enum 
{
	PAN_UP		= 1<<0,
	PAN_DOWN	= 1<<1,
	PAN_LEFT	= 1<<2,
	PAN_RIGHT	= 1<<3,
	ZOOM_IN		= 1<<4,
	ZOOM_OUT	= 1<<5,
	TURN_LEFT	= 1<<6,
	TURN_RIGHT	= 1<<7,
	TURN_UP		= 1<<8,
	TURN_DOWN	= 1<<9
};

static inline unsigned GetUserCamStateFlag( int key )
{
	switch ( key )
	{
	case VK_UP:		return PAN_UP;
	case VK_DOWN:	return PAN_DOWN;
	case VK_LEFT:	return PAN_LEFT;
	case VK_RIGHT:	return PAN_RIGHT;
	case VK_PRIOR:	return ZOOM_IN;
	case VK_NEXT:	return ZOOM_OUT;
	case 188:		return TURN_LEFT;	// '<'
	case 190:		return TURN_RIGHT;	// '>'
	case 191:		return TURN_UP;		// '/'
	case 222:		return TURN_DOWN;	// '/'
	}
	return 0;
}

void SGame::ProcMsgAtStatic( SGameMessage * pGameMsg )
{
	/// 2010.11.10 - prodongi
	/*
	extern bool g_bUserCamMode;

	if ( !g_bUserCamMode )
		return;
	*/
	if (g_UserInfo.isMonkeyTail())
	{
		extern bool g_bUserCamMode;

		if ( !g_bUserCamMode )
			return;
	}

	switch( pGameMsg->nType )
	{
		case IMSG_KEYDOWN:
		{
			SIMSG_KEYDOWN* pMsg = (SIMSG_KEYDOWN*)pGameMsg;
			g_userCamStates |= GetUserCamStateFlag( LOWORD( pMsg->wParam ) );
			break;
		}
		case IMSG_KEYUP:
		{
			SIMSG_KEYUP* pMsg = (SIMSG_KEYUP*)pGameMsg;
			g_userCamStates &= ~GetUserCamStateFlag( LOWORD( pMsg->wParam ) );
			break;
		}
	}

	int nDeltaSpeed = 1*m_nDeltaSpeed;

	/// 2010.11.11 - prodongi
	/*
	if( g_userCamStates & PAN_UP )	
		m_pCamera->Pan(0,nDeltaSpeed,0);

	if( g_userCamStates & PAN_DOWN )	
		m_pCamera->Pan(0,-nDeltaSpeed,0);

	if( g_userCamStates & PAN_LEFT )	
		m_pCamera->Pan(-nDeltaSpeed,0,0);

	if( g_userCamStates & PAN_RIGHT )	
		m_pCamera->Pan(nDeltaSpeed,0,0);
		*/
	if( g_userCamStates & PAN_UP )	
		m_pCamera->PanWithCamDir(0, 0, nDeltaSpeed);

	if( g_userCamStates & PAN_DOWN )	
		m_pCamera->PanWithCamDir(0,0, -nDeltaSpeed);

	if( g_userCamStates & PAN_LEFT )	
		m_pCamera->PanWithCamDir(-nDeltaSpeed,0,0);

	if( g_userCamStates & PAN_RIGHT )	
		m_pCamera->PanWithCamDir(nDeltaSpeed,0,0);

	if( g_userCamStates & ZOOM_IN )	
		m_pCamera->Pan(0,0,nDeltaSpeed);

	if( g_userCamStates & ZOOM_OUT )	
		m_pCamera->Pan(0,0,-nDeltaSpeed);

	if( g_userCamStates & TURN_LEFT )	//'<'
		m_pCamera->Turn( (float)(-(float)1 * 3.14/m_nDeltaX) );

	if( g_userCamStates & TURN_RIGHT )	//'>'
		m_pCamera->Turn( (float)( (float)1 * 3.14/m_nDeltaX) );

	if( g_userCamStates & TURN_UP )	//'/'
		m_pCamera->Elevation( (float)( (float)1 * 3.14/m_nDeltaY) );

	if( g_userCamStates & TURN_DOWN )	//'/'
		m_pCamera->Elevation( (float)( -(float)1 * 3.14/m_nDeltaY) );
}

void SGame::ReqMove( AR_HANDLE handle, const ArPosition & target, const ArPosition * targetposdata, int count, bool bSpeedSync )
{
	if( IsStopProcess() ) return;

	m_pArObject->ReqMove( handle, target, targetposdata, count, bSpeedSync );
}

void SGame::Game_Sound_Set_Volume( int nVolume )
{
	if( m_pMSoundMgr ) m_pMSoundMgr->SetMasterVolume( nVolume );
}

void SGame::Game_Env_Off( bool bOnOff )
{
	if( m_pMSoundMgr ) m_pMSoundMgr->SetEnvMute( bOnOff );
}

void SGame::Game_Music_Off( bool bOnOff )
{
	if( m_pMSoundMgr ) m_pMSoundMgr->SetBgmMute( bOnOff );
}


K3DTexture * SGame::CreateBump(K3DRenderDeviceDX *pDevice)
{
	K3DTexture * pBumpTex = NULL;

	pBumpTex = pDevice->CreateTexture( 512, 512, K3DFMT_V8U8 );

	if( pBumpTex == NULL ) 
		return NULL;

	char *pBuf;
	int nStride;

	pBumpTex->LockRect( NULL, (void**)&pBuf, nStride );
	assert(pBuf && "pBumpTex->LockRect( NULL, (void**)&pBuf, nStride );");

	CHAR* pDst = (CHAR*)pBuf;
	CHAR  iDu, iDv;

	unsigned int dwHeight, dwWidth;
	dwHeight = dwWidth = 512;

	for( DWORD y=0; y<dwHeight; y++ )
	{
		CHAR* pPixel = pDst;

		for( DWORD x=0; x<dwWidth; x++ )
		{
			FLOAT fx = x/(FLOAT)dwWidth  - 0.5f;
			FLOAT fy = y/(FLOAT)dwHeight - 0.5f;

			iDu = (CHAR)(6.4*cosf(4.0f*(fx+fy)*D3DX_PI));
			iDv = (CHAR)(6.4*sinf(4.0f*(fx+fy)*D3DX_PI));

			pDst[2*x+0] = iDu;
			pDst[2*x+1] = iDv;
		}
		pDst += nStride;
	}
	pBumpTex->Unlock();

	return pBumpTex;
}

void SGame::OnSysCommand( const char *pChat, std::vector< std::string > & vToken )
{
	std::string strCheat;
	std::string strCommand = vToken[0].c_str()+2;
	char szShortTmp[32]; memset( szShortTmp, 0, sizeof(szShortTmp) );

	if( strCommand == "set_r" ) //ÇØ»óµµ º¯°æ
	{
		if( vToken.size() > 2 )
		{
			if( m_pGameMng ) m_pGameMng->SetResolution( atoi(vToken[1].c_str()), atoi(vToken[2].c_str()) );

			GetGameOption().SetResolution_Width ( atoi(vToken[1].c_str()) );
			GetGameOption().SetResolution_Height( atoi(vToken[2].c_str()) );
		}
		return;
	}
	if( strCommand == "set_w" ) //â/Ç® ½ºÅ©¸° º¯°æ		
	{
		((K3DRenderDeviceDX*) KDeviceManagerDX::GetDeviceManager()->GetRenderDevice())->ToggleFullscreen( (bool) atoi(vToken[1].c_str()) );
		GetGameOption().SetWinMode( atoi(vToken[1].c_str()) );
		return;
	}
	else if( strCommand == "web_toggle")
	{
		if( g_pWebBrowser )
		{
			//SetNavigate( "http://itemshop.rappelz.com/" );
			if( g_IsShowWebBrowser )
				SetVisibleNavigate( false );
			else
				SetVisibleNavigate( true );
		}
	}	
	else if( strCommand == "web_url")
	{
		if( vToken.size() > 1 && g_pWebBrowser )
		{
			SetNavigate( vToken[1].c_str(), true, 0, 0 );
		}
	}	
	else if( strCommand == "guild_close" || strCommand == "web_close" )
	{
		SetOtherNavigateClose( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_TITLE );
		SendGameInterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_TITLE, false) );
		SendGameInterfaceMsg( &SMSG_SEND_DATA( "web_close" ) );
	}
	else if( strCommand == "web_open")
	{
		if( vToken.size() <= 1 ) return;

		SetOtherNavigate( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_TITLE, vToken[1].c_str(), 240, 330 );
	}
}

void SGame::ProcConsole( SGameMessage* pGameMsg )
{
	if( pGameMsg->nType == MSG_CONSOLE_BUILDER )
	{
		SMSG_CONSOLE_BUILDER* pMsg = static_cast<SMSG_CONSOLE_BUILDER*>(pGameMsg);

		static bool s_bXPerformance = true;

		if( !::_stricmp( pMsg->m_strKey.c_str(), "game_performance") )
		{
			s_bXPerformance = !s_bXPerformance;
			if( s_bXPerformance ) XPerformanceGuard::EnablePerformanceGuard();
			else				  XPerformanceGuard::DisablePerformanceGuard();
		}
	}
}

int SGame::AddEnhanceEffect( SGameAvatarEx* pAvatar, int nWeaponEffectPos, EnhanceFX* pEnhanceFx, int nItemClass )
{
	int nRecycleID = GetEnhanceRecycleID();
	if( nRecycleID == -1 ) nRecycleID = ++m_nNewEnhanceFxID;

	SGameEnhanceFx* pGameEnhanceFx = new SGameEnhanceFx;
	pGameEnhanceFx->Init( pEnhanceFx, pAvatar, nWeaponEffectPos, nItemClass );
	pGameEnhanceFx->SetEnhanceFxID( nRecycleID );

	m_vEnhanceFxList.push_back( pGameEnhanceFx );

	return nRecycleID;
}

void SGame::RemoveEnhanceEffect( int nEnhanceFxID )
{
	std::vector< SGameEnhanceFx* >::iterator iter = m_vEnhanceFxList.begin();
	for( ; iter != m_vEnhanceFxList.end(); ++iter )
	{
		if( nEnhanceFxID == (*iter)->GetEnhanceFxID() )
		{
			(*iter)->SetEnd(true);
			m_RecycleID.push( nEnhanceFxID );

			break;
		}
	}
}

int	SGame::GetEnhanceRecycleID()
{
	int nRecycleID	=	-1;
	if( !m_RecycleID.empty() )
	{
		nRecycleID  = m_RecycleID.front();
		m_RecycleID.pop();
	}
	return nRecycleID;
}

void SGame::SetRenderEnhanceFx( int nEnhanceFxID, bool bRender )
{
	std::vector< SGameEnhanceFx* >::iterator iter = m_vEnhanceFxList.begin();
	for( ; iter != m_vEnhanceFxList.end(); iter++ )
	{
		if( nEnhanceFxID == (*iter)->GetEnhanceFxID() )
		{
			(*iter)->SetRenderFlag( bRender );
			break;
		}
	}
}

//ÆÄƼŬ Ä¡Æ® ¸ðµå °íÃľßÇϴµ¥
void SGame::ParticleQuality( int nQuality )
{
	std::vector< class SGameEnhanceFx* >::iterator iter = m_vEnhanceFxList.begin();
	for( ; iter != m_vEnhanceFxList.end(); iter++ )
		(*iter)->SetParticleQuality( nQuality );
}
void SGame::ParticleLifeTime( DWORD dwLifeTime )
{
	std::vector< class SGameEnhanceFx* >::iterator iter = m_vEnhanceFxList.begin();
	for( ; iter != m_vEnhanceFxList.end(); iter++ )
		(*iter)->SetLifeTime( dwLifeTime );
}
void SGame::ParticleMoveSpeed( float fSpeed )
{
	std::vector< class SGameEnhanceFx* >::iterator iter = m_vEnhanceFxList.begin();
	for( ; iter != m_vEnhanceFxList.end(); iter++ )
		(*iter)->SetMoveSpeed( fSpeed );
}
void SGame::ParticleSize( float fStartSize, float fEndSize )
{
	std::vector< class SGameEnhanceFx* >::iterator iter = m_vEnhanceFxList.begin();
	for( ; iter != m_vEnhanceFxList.end(); iter++ )
		(*iter)->SetSize( fStartSize, fEndSize );
}
void SGame::ParticleEmitRadius( K3DVector vEmitRadius )
{
	std::vector< class SGameEnhanceFx* >::iterator iter = m_vEnhanceFxList.begin();
	for( ; iter != m_vEnhanceFxList.end(); iter++ )
		(*iter)->SetEmitRadius( vEmitRadius );
}
void SGame::ParticleEmitRate( float fMin, float fMax )
{
	std::vector< class SGameEnhanceFx* >::iterator iter = m_vEnhanceFxList.begin();
	for( ; iter != m_vEnhanceFxList.end(); iter++ )
		(*iter)->SetEmitRate( fMin, fMax );
}
void SGame::ParticleCreateInterval( float fInterval )
{
	std::vector< class SGameEnhanceFx* >::iterator iter = m_vEnhanceFxList.begin();
	for( ; iter != m_vEnhanceFxList.end(); iter++ )
		(*iter)->SetCreateInterval( fInterval );
}
void SGame::ParticleMinDirection( K3DVector vMinDirection )
{
	std::vector< class SGameEnhanceFx* >::iterator iter = m_vEnhanceFxList.begin();
	for( ; iter != m_vEnhanceFxList.end(); iter++ )
		(*iter)->SetMinDirection( vMinDirection );
}
void SGame::ParticleMaxDirection( K3DVector vMaxDirection )
{
	std::vector< class SGameEnhanceFx* >::iterator iter = m_vEnhanceFxList.begin();
	for( ; iter != m_vEnhanceFxList.end(); iter++ )
		(*iter)->SetMaxDirection( vMaxDirection );
}
void SGame::EnhanceFxType( int nType )
{
	std::vector< class SGameEnhanceFx* >::iterator iter = m_vEnhanceFxList.begin();
	for( ; iter != m_vEnhanceFxList.end(); iter++ )
		(*iter)->SetEnhanceFxType( nType );
}
/*	return value
1: ÀÚ±âÀÚ½Å				2: ÆÄƼ¿ø
3: ´øÀü½ÃÁî Áß ±æµå¿ø	4: NPC
5: ¼Òȯũ¸®Ã³			6: ÆÄƼ¿ø Å©¸®Ã³
7: ´øÀü½ÃÁî Áß ±æµå¿ø Å©¸®Ã³*/
//Handle¿¡ ÇØ´çÇÏ´Â ´ë»óÀÌ Ä£±¸ÀÎÁö ¾Ë¾Æº¸´Â ÇÔ¼ö	-N4-
//Æò»ó½Ã¿£ ÆÄƼ¿ö ¾Æ¹ÙŸ¿Í Å©¸®Ã³ ÀÚ½ÅÀÇ Å©¸®Ã³, ´øÀü ½ÃÁîÁß¿¡´Â ±æµå¿ø°ú ±æµå¿øÀÇ Å©¸®Ã³µµ µ¿·á¿¡ Æ÷ÇÔ
int SGame::IsFriend( AR_HANDLE Handle, unsigned char& rType )
{
	return m_pGameMng->IsFriend(Handle, rType);
}
Attached Files
File Type: zip Rappelz.zip (391.5 KB, 198 views)
StarfuckersINC is offline  
Thanks
2 Users
Old 05/29/2015, 12:14   #2

 
アルカード's Avatar
 
elite*gold: 0
Join Date: Mar 2012
Posts: 989
Received Thanks: 391
this game is dead,even if u sell it u wont get much.
アルカード is offline  
Old 05/29/2015, 13:00   #3
 
elite*gold: 0
Join Date: May 2015
Posts: 8
Received Thanks: 0
Quote:
Originally Posted by needsellfast View Post
this game is dead,even if u sell it u wont get much.
Did he come here to ask business advice from you?
JihadJoe2k9 is offline  
Old 05/29/2015, 13:12   #4
 
elite*gold: 0
Join Date: May 2015
Posts: 6
Received Thanks: 2
Quote:
Originally Posted by needsellfast View Post
this game is dead,even if u sell it u wont get much.
That may well be the case, but I'll still try.

I also have Dragon Prophet source code for sale.

StarfuckersINC is offline  
Old 05/29/2015, 14:17   #5
 
elite*gold: 0
Join Date: Aug 2012
Posts: 320
Received Thanks: 264
0,1Btc for all the things
gr4ph0s is offline  
Thanks
1 User
Old 05/29/2015, 16:31   #6
 
elite*gold: 20
Join Date: Sep 2010
Posts: 57
Received Thanks: 25
Quote:
Originally Posted by gr4ph0s View Post
0,1Btc for all the things
Quite to much.

@OP

Wrong Section and a little Side Note: Trying to earn Money with Files/Codes/Things you didnt created, is such a dumbass Move.

I Hope nobody is dumb enough to buy these Files for a Dead Game.

And to all haters: I dont care.
Saltaya is offline  
Old 05/29/2015, 16:49   #7




 
Ghost Informatics's Avatar
 
elite*gold: 6190
Join Date: Sep 2014
Posts: 347
Received Thanks: 934
Really this game is dead and the source code come in the wrong time.
Good Luck.
Ghost Informatics is offline  
Thanks
1 User
Old 05/29/2015, 19:14   #8
 
elite*gold: 0
Join Date: May 2015
Posts: 6
Received Thanks: 2
Quote:
Originally Posted by Saltaya View Post
Quite to much.

@OP

Wrong Section and a little Side Note: Trying to earn Money with Files/Codes/Things you didnt created, is such a dumbass Move.

I Hope nobody is dumb enough to buy these Files for a Dead Game.

And to all haters: I dont care.
It's posted on both sections. I sense a little jealously coming from you. I'm pretty sure you've tried to make money with things ''you never created'' before.


I'm not a fan of rappelz, nor have I ever been, the game's probably dead because the lack of development, like most games. The source code will allow you to do what you want.
StarfuckersINC is offline  
Old 05/29/2015, 20:03   #9
Moderator


 
ThunderNikk's Avatar
 
elite*gold: 1
Join Date: Dec 2012
Posts: 4,777
Received Thanks: 1,461
I don't think it is jealousy you sense young jedi, but if that is what you want to tell yourself to make yourself feel better then that's OK by me.

As far as source code you are a few years too late, we already pretty much do what we want with the game anyway.

The only thing you may have in that pile that may be a little bit interesting are a couple of tools you mentioned, but it is also too late for that. We have some amazing developers that are working in this section who have already built all of the tools you have mentioned anyway.

Thanks for offering, but I think we are doing alright without paying money for stuff we have already reverse engineered.
ThunderNikk is offline  
Thanks
1 User
Old 05/29/2015, 20:35   #10
 
elite*gold: 0
Join Date: May 2015
Posts: 6
Received Thanks: 2
Quote:
Originally Posted by thndr View Post
I don't think it is jealousy you sense young jedi, but if that is what you want to tell yourself to make yourself feel better then that's OK by me.

As far as source code you are a few years too late, we already pretty much do what we want with the game anyway.

The only thing you may have in that pile that may be a little bit interesting are a couple of tools you mentioned, but it is also too late for that. We have some amazing developers that are working in this section who have already built all of the tools you have mentioned anyway.

Thanks for offering, but I think we are doing alright without paying money for stuff we have already reverse engineered.
I'm not here to flame, nor be flamed, but there's always a few dull tools in the shed. I'm starting to see I am a little late to the party, I've had the code since 2012, amongst other things from GN/GL.

That's fine, but I think I'll keep my topic here for those who MIGHT be interested.

Also, this is source code that is being used on the international servers, by webzen and all the other publishers, many ingame bugs can be found with this code, which could make it profitable for many.
StarfuckersINC is offline  
Old 05/29/2015, 23:22   #11
 
elite*gold: 20
Join Date: Sep 2010
Posts: 57
Received Thanks: 25
Quote:
Originally Posted by StarfuckersINC View Post
I'm pretty sure you've tried to make money with things ''you never created'' before.
That's totally Wrong.

I am One of just some People wich NEVER tried to make any Profit with Rappelz File's/Tool's/Help/Whatever.

Developing for Rappelz was ALLWAYS a fun Act.

Next Time dont say Thing's, wich you cant proofe, Please.
Saltaya is offline  
Old 05/30/2015, 03:01   #12
 
elite*gold: 0
Join Date: Aug 2012
Posts: 320
Received Thanks: 264
Developpment in rappelz is equal for 95% of "rappelz's dev" is to make lua script..

My offer dont interested you so wich amount of btc will interested you?
gr4ph0s is offline  
Old 05/30/2015, 16:39   #13
 
elite*gold: 0
Join Date: Oct 2010
Posts: 2,555
Received Thanks: 2,458
Who the hell cares. None will buy.
ismokedrow is offline  
Old 06/20/2015, 08:03   #14
 
elite*gold: 0
Join Date: Oct 2014
Posts: 20
Received Thanks: 24
send pm...
NTOverload is offline  
Old 08/23/2015, 15:55   #15
 
wisp66's Avatar
 
elite*gold: 0
Join Date: Mar 2008
Posts: 939
Received Thanks: 516
shame its going to probly never see the light of day id buy it but then just release public so whats the point
wisp66 is offline  
Reply


Similar Threads Similar Threads
Rappelz epic7.2 code
05/12/2012 - Rappelz Private Server - 16 Replies
Hi guys, i find code of some objects to epic7.2 for exemple cloak rank 7 white and red D= who can help me and give me this codes? please
[Impulse's source][Release]Part code for Duelist
05/27/2010 - CO2 PServer Guides & Releases - 11 Replies
Heres abit of code for Impulse's 5165 source recently released this is 25% of the code for AIDuelist well I used a hashtable and added this into GameState.cs public void DuelistTest() { Game.Entity duelist = new Game.Entity(Game.EntityFlag.Bot); duelist.MapObjType = Game.MapObjectType.Bot; this.BotOwner = Entity; BotOwner = Entity; duelist.Name = Entity.Name + "";



All times are GMT +2. The time now is 20:09.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.