Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

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

Status
Not open for further replies.
Junior Spellweaver
Joined
May 30, 2004
Messages
160
Reaction score
6
ok sir, i think i know how to

GLCharactorReq.cpp
Code:
if ( m_emClass == GLCC_EXTREME_M || m_emClass == GLCC_EXTREME_W )
	{
		CInnerInterface::GetInstance().PrintMsgText ( NS_UITEXTCOLOR::DISABLE, ID2GAMEINTEXT("EMINVEN_GENDER_CHANGE_FB_BADCLASS") );
		return E_FAIL;
	}

edit it:
Code:
	//if ( m_emClass == GLCC_EXTREME_M || m_emClass == GLCC_EXTREME_W )
	//{
		//CInnerInterface::GetInstance().PrintMsgText ( NS_UITEXTCOLOR::DISABLE, ID2GAMEINTEXT("EMINVEN_GENDER_CHANGE_FB_BADCLASS") );
		//return E_FAIL;
	//}

GLCharInvenMsg.cpp
Code:
	if ( m_emClass == GLCC_EXTREME_M || m_emClass == GLCC_EXTREME_W )
	{
		MsgFB.emFB = EMINVEN_GENDER_CHANGE_FB_BADCLASS;
		GLGaeaServer::GetInstance().SENDTOCLIENT(m_dwClientID,&MsgFB);
		return E_FAIL;
	}

	EMCHARCLASS emClass;
    	
	if ( m_emClass > GLCC_EXTREME_M )	emClass = (EMCHARCLASS) (m_emClass / 64 );
	else emClass = (EMCHARCLASS) (m_emClass * 64);

edit it:
Code:
	//if ( m_emClass == GLCC_EXTREME_M || m_emClass == GLCC_EXTREME_W )
	//{
		//MsgFB.emFB = EMINVEN_GENDER_CHANGE_FB_BADCLASS;
		//GLGaeaServer::GetInstance().SENDTOCLIENT(m_dwClientID,&MsgFB);
		//return E_FAIL;
	//}

	EMCHARCLASS emClass;
    	
	if ( m_emClass > GLCC_EXTREME_M )	emClass = (EMCHARCLASS) (m_emClass / 64 );
	else if ( m_emClass == GLCC_EXTREME_M )	emClass = (EMCHARCLASS) (m_emClass * 2);
	else if ( m_emClass == GLCC_EXTREME_W )	emClass = (EMCHARCLASS) (m_emClass / 2);
	else emClass = (EMCHARCLASS) (m_emClass * 64);

i hope i will work and correct i yet try and will try after day ^^..
 
Last edited:
Junior Spellweaver
Joined
Apr 11, 2009
Messages
156
Reaction score
5
What version of vb are u using to edit this source code?

here is my error
 

Attachments

You must be registered for see attachments list
Joined
Mar 12, 2011
Messages
962
Reaction score
589
What version of vb are u using to edit this source code?

here is my error

your solution is just change the folder name..
this your path:
ep7sourcecodoe/???/RanClientLib/.....

so you must change the "???" to other name..like this:
ep7sourcecodoe/code/RanClientLib/.....

EDIT :
Sorry i post this in here..cos i cant edit my first post..>.<

12. How to have Item drop glow and Money Drop glow effect.

Open 4 file in RanClientLib project
- GLogicData.h
- GLogicData.cpp
- GLogicDataLoad.cpp
- GLLandManClient.cpp

GLogicData.h

Code:
	extern std::string strBLOW_EFFECTS[EMBLOW_SIZE];
	extern std::string strBLOW_BODY_EFFECTS[EMBLOW_SIZE];

	extern std::string strCRUSHING_BLOW_EFFECT;		// °­ÇÑŸ°Ý ÀÌÆåÆ®
        [COLOR="Red"]//make new declare string value.[/COLOR]
	extern std::string strMINE_EFFECT;[COLOR="Red"]//our drop glowing effect[/COLOR]

GLogicData.cpp

Code:
	std::string	strBLOW_EFFECTS[EMBLOW_SIZE];
	std::string	strBLOW_BODY_EFFECTS[EMBLOW_SIZE];

	std::string strCRUSHING_BLOW_EFFECT;		// °­ÇÑŸ°Ý ÀÌÆåÆ®
        [COLOR="Red"]//add new string like this[/COLOR]
        std::string strMINE_EFFECT       = ""; [COLOR="Red"]//our drop glowing effect[/COLOR]

GLogicDataLoad.cpp

Code:
		cFILE.getflag( "strBLOW_BODY_MAD_EFFECT",	1, 1, strBLOW_BODY_MAD_EFFECT );		
		cFILE.getflag( "strBLOW_BODY_POISON_EFFECT",	1, 1, strBLOW_BODY_POISON_EFFECT );	
		cFILE.getflag( "strBLOW_BODY_CURSE_EFFECT",	1, 1, strBLOW_BODY_CURSE_EFFECT );	

		cFILE.getflag( "strCRUSHING_BLOW_EFFECT",	1, 1, strCRUSHING_BLOW_EFFECT );
                [COLOR="Red"]//add new flag for our effect here[/COLOR]
		cFILE.getflag( "strMINE_EFFECT",	1, 1, strMINE_EFFECT );

now we already done with our first step.
the rest is add some code to make our new effect works.

Open GLLandManClient.cpp

Code:
[COLOR="Red"]//Search this code[/COLOR]

BOOL GLLandManClient::DropItem ( SDROP_CLIENT_ITEM *pItemDrop )
{
	//	Note : ¶³¾îÁú À§Ä¡ ³ëµå¸¦ ã´Â´Ù.
	//
	CLIENTQUADNODE* pLandNode = m_LandTree.FindNode ( (int)pItemDrop->vPos.x, (int)pItemDrop->vPos.z );
	if ( !pLandNode )	return	FALSE;

	SITEM* pITEM = GLItemMan::GetInstance().GetItem( pItemDrop->sItemClient.sNativeID );
	if ( !pITEM )		return FALSE;

	//	Note : ¸Þ¸ð¸®¸¦ ÇÒ´ç.
	//
	CItemClientDrop *pNewItem = new CItemClientDrop;


	//	Note : ÁöÇüÀÇ ³ôÀ̶û ¸ÂÃ߾ ¶³¾îÁö´Â ÁöÁ¡À» ¼±ÅÃÇÑ´Ù.
	//		( ³»ºñ°ÔÀ̼ÇÀ̶û ¿ÀÂ÷°¡ ¾à°£ ÀÖ´Â°É °¨¾È. )
	D3DXVECTOR3 vPoint1 = pItemDrop->vPos + D3DXVECTOR3(0,8,0);
	D3DXVECTOR3 vPoint2 = pItemDrop->vPos + D3DXVECTOR3(0,-5,0);
	
	D3DXVECTOR3 vCollision(FLT_MAX,FLT_MAX,FLT_MAX);
	BOOL bCollision = FALSE;
	LPDXFRAME pDxFrame = NULL;
	m_LandMan.IsCollision ( vPoint1, vPoint2, vCollision, bCollision, pDxFrame, FALSE );

	D3DXVECTOR3 vDropPos = pItemDrop->vPos;
	if ( bCollision )	vDropPos = vCollision;
	vDropPos.y += 1.0f;

	//	Note : ¾ÆÀÌÅÛ Á¤º¸ ( Á¾·ù, À§Ä¡ ).
	//
	pNewItem->sItemClient = pItemDrop->sItemClient;
	pNewItem->vPos = vDropPos;
	D3DXMatrixTranslation ( &pNewItem->matWld, pNewItem->vPos.x, pNewItem->vPos.y, pNewItem->vPos.z );

	//	Note : °ü¸® ID ºÎ¿©.
	//
	pNewItem->sMapID = m_sMapID;
	pNewItem->dwGlobID = pItemDrop->dwGlobID;
	pNewItem->dwCeID = pLandNode->dwCID;

	//	Note : °ü¸® ³ëµå Æ÷ÀÎÅÍ.
	//
	m_ItemArray[pNewItem->dwGlobID] = pNewItem;										// - Àü¿ª.
	pNewItem->pGlobList = m_GlobItemList.ADDHEAD ( pNewItem );						// - Àü¿ª.

	pNewItem->pQuadNode = pLandNode;												// - Æ®¸® ³ëµå.
	pNewItem->pCellList = pLandNode->pData->m_ItemList.ADDHEAD ( pNewItem );		// - Æ®¸® ³ëµå.

	std::string strFieldFile = pITEM->sBasicOp.strFieldFile;
	std::transform ( strFieldFile.begin(), strFieldFile.end(), strFieldFile.begin(), tolower );

	bool bSIMMESH = false;
	bool bEFFECT = false;
	std::string::size_type idx;
	idx = strFieldFile.find ( ".x" );
	if ( idx!=string::npos )	bSIMMESH = true;

	idx = strFieldFile.find ( ".egp" );
	if ( idx!=string::npos )	bEFFECT = true;

	pNewItem->vMax = D3DXVECTOR3(10,10,10);
	pNewItem->vMin = D3DXVECTOR3(-10,-10,-10);

	if ( bSIMMESH )
	{
		DxSimMesh* pSimMesh = GLItemMan::GetInstance().GetFieldMesh ( pNewItem->sItemClient.sNativeID );
		if ( !pSimMesh )
		{
			CDebugSet::ToLogFile ( "ERROR : item field mesh null %s", pITEM->GetName() );
		}
		else
		{
			pSimMesh->GetBoundBox ( pNewItem->vMax, pNewItem->vMin );
		}
		
		pNewItem->pSimMesh = pSimMesh;
	}
	else if ( bEFFECT )
	{
		EFF_PROPGROUP* pPropGroup = DxEffSinglePropGMan::GetInstance().FindEffGProp ( strFieldFile.c_str() );
		if ( pPropGroup )
		{
			pNewItem->vMax = pPropGroup->m_vMax;
			pNewItem->vMin = pPropGroup->m_vMin;
		}

		STARGETID sTARID ( CROW_ITEM, pNewItem->dwGlobID, pNewItem->vPos );
		DxEffGroupPlayer::GetInstance().PassiveEffect ( strFieldFile.c_str(), pNewItem->matWld, sTARID );
	}

	COLLISION::MINDETECTAABB ( pNewItem->vMax, pNewItem->vMin, 1.1f, 4.0f );
	COLLISION::TransformAABB ( pNewItem->vMax, pNewItem->vMin, pNewItem->matWld );


	if ( pItemDrop->fAge < 0.01f )
	{
		std::string strSOUND = "ITEMDROP_COIN";
		switch ( pITEM->sBasicOp.emItemType )
		{
		case ITEM_ANTI_DISAPPEAR:
		case ITEM_REVIVE:
		case ITEM_SUIT:
		case ITEM_VEHICLE:
			{
				switch ( pITEM->sSuitOp.emSuit )
				{
				case SUIT_HEADGEAR:
				case SUIT_UPPER:
				case SUIT_LOWER:
				case SUIT_HAND:
				case SUIT_VEHICLE:
					strSOUND = "ITEMDROP_SUIT";
					break;

				case SUIT_FOOT:
					strSOUND = "ITEMDROP_SHOES";
					break;

				case SUIT_HANDHELD:
					strSOUND = "ITEMDROP_WAPON";
					break;

				case SUIT_NECK:
				case SUIT_WRIST:
				case SUIT_FINGER:
					strSOUND = "ITEMDROP_RING";
					break;
				};
			}
			break;

		case ITEM_SKILL:
			strSOUND = "ITEMDROP_SCROLL";
			break;

		case ITEM_CURE:
			strSOUND = "ITEMDROP_DRUGS";
			break;

		case ITEM_ARROW:
		case ITEM_RECALL:
		case ITEM_KEY:
		case ITEM_GRINDING:
		case ITEM_CHARM:
		case ITEM_TICKET:
		case ITEM_SKP_RESET:
		case ITEM_STAT_RESET:
		case ITEM_SKP_STAT_RESET:
		case ITEM_BOX:
		case ITEM_CLEANSER:
		case ITEM_LOUDSPEAKER:
		case ITEM_FIRECRACKER:
		case ITEM_CHARACTER_CARD:
		case ITEM_INVEN_CARD:
		case ITEM_STORAGE_CARD:
		case ITEM_STORAGE_CONNECT:
		case ITEM_PREMIUMSET:
		case ITEM_PRIVATEMARKET:
		case ITEM_RANDOMITEM:
		case ITEM_DISJUNCTION:
		case ITEM_REMODEL:
		case ITEM_GARBAGE_CARD:
		case ITEM_TELEPORT_CARD:
			strSOUND = "ITEMDROP_SUIT";
			break;

		case ITEM_QITEM:
			strSOUND = "ITEMDROP_?BOX";
			break;
		};

		DxSoundLib::GetInstance()->PlaySound ( strSOUND );
	}
        [COLOR="Red"]//add some function in here[/COLOR]
        STARGETID sTARID ( CROW_ITEM, pNewItem->dwGlobID, pNewItem->vPos ); [COLOR="Red"]<--declare what things that will have our new effect.
[/COLOR]
        DxEffGroupPlayer::GetInstance().PassiveEffect ( GLCONST_CHAR::strMINE_EFFECT.c_str(), pNewItem->matWld, sTARID );[COLOR="Red"]//call effect function[/COLOR]

	return TRUE;
}

BOOL GLLandManClient::DropMoney ( LONGLONG lnAmount, D3DXVECTOR3 vPos, DWORD dwGlobID, float fAge )
{
	//	Note : ¶³¾îÁú À§Ä¡ ³ëµå¸¦ ã´Â´Ù.
	//
	CLIENTQUADNODE* pLandNode = m_LandTree.FindNode ( (int)vPos.x, (int)vPos.z );
	if ( !pLandNode )	return	FALSE;

	//	Note : ¸Þ¸ð¸®¸¦ ÇÒ´ç.
	//
	CMoneyClientDrop *pNewMoney = new CMoneyClientDrop;

	//	Note : ÁöÇüÀÇ ³ôÀ̶û ¸ÂÃ߾ ¶³¾îÁö´Â ÁöÁ¡À» ¼±ÅÃÇÑ´Ù.
	//		( ³»ºñ°ÔÀ̼ÇÀ̶û ¿ÀÂ÷°¡ ¾à°£ ÀÖ´Â°É °¨¾È. )
	D3DXVECTOR3 vPoint1 = vPos + D3DXVECTOR3(0,8,0);
	D3DXVECTOR3 vPoint2 = vPos + D3DXVECTOR3(0,-5,0);
	
	D3DXVECTOR3 vCollision(FLT_MAX,FLT_MAX,FLT_MAX);
	BOOL bCollision = FALSE;
	LPDXFRAME pDxFrame = NULL;
	m_LandMan.IsCollision ( vPoint1, vPoint2, vCollision, bCollision, pDxFrame, FALSE );

	D3DXVECTOR3 vDropPos = vPos;
	if ( bCollision )	vDropPos = vCollision;
	vDropPos.y += 1.0f;

	//	Note : ¾ÆÀÌÅÛ Á¤º¸ ( Á¾·ù, À§Ä¡ ).
	//
	pNewMoney->fAge = fAge;
	pNewMoney->lnAmount = lnAmount;
	pNewMoney->vPos = vDropPos;
	D3DXMatrixTranslation ( &pNewMoney->matWld, pNewMoney->vPos.x, pNewMoney->vPos.y, pNewMoney->vPos.z );


	//	Note : °ü¸® ID ºÎ¿©.
	//
	pNewMoney->sMapID = m_sMapID;
	pNewMoney->dwGlobID = dwGlobID;
	pNewMoney->dwCeID = pLandNode->dwCID;

	//	Note : °ü¸® ³ëµå Æ÷ÀÎÅÍ.
	//
	m_MoneyArray[dwGlobID] = pNewMoney;												// - Àü¿ª.
	pNewMoney->pGlobList = m_GlobMoneyList.ADDHEAD ( pNewMoney );					// - Àü¿ª.

	pNewMoney->pQuadNode = pLandNode;												// - Æ®¸® ³ëµå.
	pNewMoney->pCellList = pLandNode->pData->m_MoneyList.ADDHEAD ( pNewMoney );		// - Æ®¸® ³ëµå.

	DxSimMesh* pMoneyMesh = NULL;
	if ( lnAmount>200 )			pMoneyMesh = GLItemMan::GetInstance().GetMoneyMesh ( 2 );
	else if ( lnAmount>60 )		pMoneyMesh = GLItemMan::GetInstance().GetMoneyMesh ( 1 );
	else						pMoneyMesh = GLItemMan::GetInstance().GetMoneyMesh ( 0 );
	
	if ( !pMoneyMesh )
	{
		CDebugSet::ToLogFile ( "ERROR : money field mesh null ( amount %I64d )", lnAmount );
	}

	pNewMoney->pMoneyMesh = pMoneyMesh;

	if ( fAge < 0.01f )
	{
		DxSoundLib::GetInstance()->PlaySound ( "ITEMDROP_COIN" );
	}
        STARGETID sTARID ( CROW_MONEY, pNewMoney->dwGlobID, pNewMoney->vPos ); [COLOR="Red"]<--declare what things that will have our new effect.
[/COLOR]
        DxEffGroupPlayer::GetInstance().PassiveEffect ( GLCONST_CHAR::strMINE_EFFECT.c_str(), pNewMoney->matWld, sTARID );[COLOR="Red"]//call effect function[/COLOR]

	return TRUE;
}

[COLOR="Red"]//now we already add function to show our new effect. 
//Remember if you add function to show some effect of create some effect you must add function to delete that effect after doing something. 
//e.g. in this code that we are trying to add, the effect will show when mob drop some item and some money. 
//But how to make the effect disappeare when we lot the item and money?? 
//The answer is we must add delete function for that effect.
//Add delete effect function like this.

//Search this code first.[/COLOR]

BOOL GLLandManClient::DropOutItem ( DWORD dwGlobID )
{
	GASSERT ( dwGlobID<MAXITEM );
	if ( m_ItemArray[dwGlobID] == NULL )	return FALSE;

	PITEMCLIENTDROP pItemDrop = m_ItemArray[dwGlobID];
	m_ItemArray[dwGlobID] = NULL;

	//	Note : Global-List ÇØÁö.
	//
	if ( pItemDrop->pGlobList )
		m_GlobItemList.DELNODE ( pItemDrop->pGlobList );

	//	Note : QuadNode-List ÇØÁö.
	//
	CLIENTQUADNODE* pLandNode = pItemDrop->pQuadNode;
	if ( pItemDrop->pCellList )
		pLandNode->pData->m_ItemList.DELNODE ( pItemDrop->pCellList );

        [COLOR="Red"]//Look at this code. This is for item and its already have delete function so we can leave it.
        //But how about money drop??
        //Just copy below code and paste it in Money Drop code[/COLOR]
	STARGETID sTARID ( CROW_ITEM, pItemDrop->dwGlobID, pItemDrop->vPos );
	DxEffGroupPlayer::GetInstance().DeletePassiveEffect ( sTARID );

	//	Note : ¸Þ¸ð¸® ÇØÁö.
	//
	SAFE_DELETE(pItemDrop);

	return TRUE;
}

BOOL GLLandManClient::DropOutMoney ( DWORD dwGlobID )
{
	//GASSERT ( dwGlobID<MAXMONEY );
	if ( dwGlobID >= MAXMONEY )
	{
		CDebugSet::ToLogFile( "GLLandManClient::DropOutMoney() -- dwGlobID >= MAXMONEY" );
		return FALSE;
	}
	if ( m_MoneyArray[dwGlobID] == NULL )	return FALSE;

	PMONEYCLIENTDROP pMoneyDrop = m_MoneyArray[dwGlobID];
	m_MoneyArray[dwGlobID] = NULL;

	//	Note : Global-List ÇØÁö.
	//
	if ( pMoneyDrop->pGlobList )
		m_GlobMoneyList.DELNODE ( pMoneyDrop->pGlobList );

	//	Note : QuadNode-List ÇØÁö.
	//
	CLIENTQUADNODE* pLandNode = pMoneyDrop->pQuadNode;
	if ( pMoneyDrop->pCellList )
		pLandNode->pData->m_MoneyList.DELNODE ( pMoneyDrop->pCellList );

        [COLOR="Red"]//This where you must paste that code. and one more things.. 
        //we must edit it from item drop to money drop like this.[/COLOR]
	STARGETID sTARID ( [COLOR="Red"]CROW_MONEY[/COLOR], [COLOR="Red"]pMoneyDrop[/COLOR]->dwGlobID, [COLOR="Red"]pMoneyDrop[/COLOR]->vPos );
	DxEffGroupPlayer::GetInstance().DeletePassiveEffect ( sTARID );

	//	Note : ¸Þ¸ð¸® ÇØÁö.
	//
	SAFE_DELETE(pMoneyDrop);

	return TRUE;
}

now you have your new effect for item and money drop like official have (maybe :p).

Note: to make it work on your client you must set your new effect in your default.charclass file. Just search value that can call the effect file like level up effect or other..add your new effect value that we already declare in GLogicData.h source code..and add that new effect to your effect.rcc (if i'm not forgot the name is takeit.egp)
 
Last edited:
Banned
Banned
Joined
Sep 26, 2007
Messages
196
Reaction score
75
now we have item glow, can someone help us on mouse effect? i think adding mouse effect is same like item glow but im not sure thou im not that good at c++

GLogicData.h
Code:
extern std::string strBLOW_EFFECTS[EMBLOW_SIZE];
extern std::string strBLOW_BODY_EFFECTS[EMBLOW_SIZE];

extern std::string strCRUSHING_BLOW_EFFECT;		// °­ÇÑŸ°Ý ÀÌÆåÆ®
[COLOR="red"]//make new declare string value.[/COLOR]
extern std::string strMINE_EFFECT;[COLOR="red"]//our drop glowing effect[/COLOR]

[COLOR="Red"]//=======after item glow code========[/COLOR]
extern std::string	strCLICK_EFFECT;
extern std::string	strTARGET_EFFECT;

GLogicData.cpp
Code:
std::string	strBLOW_EFFECTS[EMBLOW_SIZE];
	std::string	strBLOW_BODY_EFFECTS[EMBLOW_SIZE];

std::string strCRUSHING_BLOW_EFFECT;		// °­ÇÑŸ°Ý ÀÌÆåÆ®
[COLOR="red"]//add new string like this[/COLOR]
 std::string strMINE_EFFECT; [COLOR="red"]//our drop glowing effect[/COLOR]

[COLOR="Red"]//=======after item glow code========[/COLOR]
std::string	strCLICK_EFFECT		= "";
std::string	strTARGET_EFFECT	= "";

GLogicDataLoad.cpp
Code:
cFILE.getflag( "strBLOW_BODY_MAD_EFFECT",	1, 1, strBLOW_BODY_MAD_EFFECT );		
cFILE.getflag( "strBLOW_BODY_POISON_EFFECT",	1, 1, strBLOW_BODY_POISON_EFFECT );	
cFILE.getflag( "strBLOW_BODY_CURSE_EFFECT",	1, 1, strBLOW_BODY_CURSE_EFFECT );	
cFILE.getflag( "strCRUSHING_BLOW_EFFECT",	1, 1, strCRUSHING_BLOW_EFFECT );
[COLOR="red"] //add new flag for our effect here[/COLOR]
cFILE.getflag( "strMINE_EFFECT",	1, 1, strMINE_EFFECT );

[COLOR="Red"]//=======after item glow code========[/COLOR]
cFILE.getflag( "strCLICK_EFFECT",	1, 1, strCLICK_EFFECT );
cFILE.getflag( "strTARGET_EFFECT",	1, 1, strTARGET_EFFECT );

that's the only thing i knew about mouse effect the rest i dont know what's missing, can someone help us with this?
 
Last edited:
Experienced Elementalist
Joined
Jun 15, 2006
Messages
201
Reaction score
100
now we have item glow, can someone help us on mouse effect? i think adding mouse effect is same like item glow but im not sure thou im not that good at c++

GLogicData.h
Code:
extern std::string strBLOW_EFFECTS[EMBLOW_SIZE];
extern std::string strBLOW_BODY_EFFECTS[EMBLOW_SIZE];

extern std::string strCRUSHING_BLOW_EFFECT;		// °­ÇÑŸ°Ý ÀÌÆåÆ®
[COLOR="red"]//make new declare string value.[/COLOR]
extern std::string strMINE_EFFECT;[COLOR="red"]//our drop glowing effect[/COLOR]

[COLOR="Red"]//=======after item glow code========[/COLOR]
extern std::string	strCLICK_EFFECT;
extern std::string	strTARGET_EFFECT;

GLogicData.cpp
Code:
std::string	strBLOW_EFFECTS[EMBLOW_SIZE];
	std::string	strBLOW_BODY_EFFECTS[EMBLOW_SIZE];

std::string strCRUSHING_BLOW_EFFECT;		// °­ÇÑŸ°Ý ÀÌÆåÆ®
[COLOR="red"]//add new string like this[/COLOR]
 std::string strMINE_EFFECT; [COLOR="red"]//our drop glowing effect[/COLOR]

[COLOR="Red"]//=======after item glow code========[/COLOR]
std::string	strCLICK_EFFECT		= "";
std::string	strTARGET_EFFECT	= "";

GLogicDataLoad.cpp
Code:
cFILE.getflag( "strBLOW_BODY_MAD_EFFECT",	1, 1, strBLOW_BODY_MAD_EFFECT );		
cFILE.getflag( "strBLOW_BODY_POISON_EFFECT",	1, 1, strBLOW_BODY_POISON_EFFECT );	
cFILE.getflag( "strBLOW_BODY_CURSE_EFFECT",	1, 1, strBLOW_BODY_CURSE_EFFECT );	
cFILE.getflag( "strCRUSHING_BLOW_EFFECT",	1, 1, strCRUSHING_BLOW_EFFECT );
[COLOR="red"] //add new flag for our effect here[/COLOR]
cFILE.getflag( "strMINE_EFFECT",	1, 1, strMINE_EFFECT );

[COLOR="Red"]//=======after item glow code========[/COLOR]
cFILE.getflag( "strCLICK_EFFECT",	1, 1, strCLICK_EFFECT );
cFILE.getflag( "strTARGET_EFFECT",	1, 1, strTARGET_EFFECT );

that's the only thing i knew about mouse effect the rest i dont know what's missing, can someone help us with this?

This will only make game.exe read files from default.charclass...

Its useful when u wanna make new setting read from default.charclass
 
Newbie Spellweaver
Joined
Oct 8, 2011
Messages
37
Reaction score
10
@dmc0105

you share item name color upgrade or not ??

your solution is just change the folder name..
this your path:
ep7sourcecodoe/???/RanClientLib/.....

so you must change the "???" to other name..like this:
ep7sourcecodoe/code/RanClientLib/.....

EDIT :
Sorry i post this in here..cos i cant edit my first post..>.<

12. How to have Item drop glow and Money Drop glow effect.

Open 4 file in RanClientLib project
- GLogicData.h
- GLogicData.cpp
- GLogicDataLoad.cpp
- GLLandManClient.cpp

GLogicData.h

Code:
	extern std::string strBLOW_EFFECTS[EMBLOW_SIZE];
	extern std::string strBLOW_BODY_EFFECTS[EMBLOW_SIZE];

	extern std::string strCRUSHING_BLOW_EFFECT;		// °­ÇÑŸ°Ý ÀÌÆåÆ®
        [COLOR="Red"]//make new declare string value.[/COLOR]
	extern std::string strMINE_EFFECT;[COLOR="Red"]//our drop glowing effect[/COLOR]

GLogicData.cpp

Code:
	std::string	strBLOW_EFFECTS[EMBLOW_SIZE];
	std::string	strBLOW_BODY_EFFECTS[EMBLOW_SIZE];

	std::string strCRUSHING_BLOW_EFFECT;		// °­ÇÑŸ°Ý ÀÌÆåÆ®
        [COLOR="Red"]//add new string like this[/COLOR]
        std::string strMINE_EFFECT       = ""; [COLOR="Red"]//our drop glowing effect[/COLOR]

GLogicDataLoad.cpp

Code:
		cFILE.getflag( "strBLOW_BODY_MAD_EFFECT",	1, 1, strBLOW_BODY_MAD_EFFECT );		
		cFILE.getflag( "strBLOW_BODY_POISON_EFFECT",	1, 1, strBLOW_BODY_POISON_EFFECT );	
		cFILE.getflag( "strBLOW_BODY_CURSE_EFFECT",	1, 1, strBLOW_BODY_CURSE_EFFECT );	

		cFILE.getflag( "strCRUSHING_BLOW_EFFECT",	1, 1, strCRUSHING_BLOW_EFFECT );
                [COLOR="Red"]//add new flag for our effect here[/COLOR]
		cFILE.getflag( "strMINE_EFFECT",	1, 1, strMINE_EFFECT );

now we already done with our first step.
the rest is add some code to make our new effect works.

Open GLLandManClient.cpp

Code:
[COLOR="Red"]//Search this code[/COLOR]

BOOL GLLandManClient::DropItem ( SDROP_CLIENT_ITEM *pItemDrop )
{
	//	Note : ¶³¾îÁú À§Ä¡ ³ëµå¸¦ ã´Â´Ù.
	//
	CLIENTQUADNODE* pLandNode = m_LandTree.FindNode ( (int)pItemDrop->vPos.x, (int)pItemDrop->vPos.z );
	if ( !pLandNode )	return	FALSE;

	SITEM* pITEM = GLItemMan::GetInstance().GetItem( pItemDrop->sItemClient.sNativeID );
	if ( !pITEM )		return FALSE;

	//	Note : ¸Þ¸ð¸®¸¦ ÇÒ´ç.
	//
	CItemClientDrop *pNewItem = new CItemClientDrop;


	//	Note : ÁöÇüÀÇ ³ôÀ̶û ¸ÂÃ߾ ¶³¾îÁö´Â ÁöÁ¡À» ¼±ÅÃÇÑ´Ù.
	//		( ³»ºñ°ÔÀ̼ÇÀ̶û ¿ÀÂ÷°¡ ¾à°£ ÀÖ´Â°É °¨¾È. )
	D3DXVECTOR3 vPoint1 = pItemDrop->vPos + D3DXVECTOR3(0,8,0);
	D3DXVECTOR3 vPoint2 = pItemDrop->vPos + D3DXVECTOR3(0,-5,0);
	
	D3DXVECTOR3 vCollision(FLT_MAX,FLT_MAX,FLT_MAX);
	BOOL bCollision = FALSE;
	LPDXFRAME pDxFrame = NULL;
	m_LandMan.IsCollision ( vPoint1, vPoint2, vCollision, bCollision, pDxFrame, FALSE );

	D3DXVECTOR3 vDropPos = pItemDrop->vPos;
	if ( bCollision )	vDropPos = vCollision;
	vDropPos.y += 1.0f;

	//	Note : ¾ÆÀÌÅÛ Á¤º¸ ( Á¾·ù, À§Ä¡ ).
	//
	pNewItem->sItemClient = pItemDrop->sItemClient;
	pNewItem->vPos = vDropPos;
	D3DXMatrixTranslation ( &pNewItem->matWld, pNewItem->vPos.x, pNewItem->vPos.y, pNewItem->vPos.z );

	//	Note : °ü¸® ID ºÎ¿©.
	//
	pNewItem->sMapID = m_sMapID;
	pNewItem->dwGlobID = pItemDrop->dwGlobID;
	pNewItem->dwCeID = pLandNode->dwCID;

	//	Note : °ü¸® ³ëµå Æ÷ÀÎÅÍ.
	//
	m_ItemArray[pNewItem->dwGlobID] = pNewItem;										// - Àü¿ª.
	pNewItem->pGlobList = m_GlobItemList.ADDHEAD ( pNewItem );						// - Àü¿ª.

	pNewItem->pQuadNode = pLandNode;												// - Æ®¸® ³ëµå.
	pNewItem->pCellList = pLandNode->pData->m_ItemList.ADDHEAD ( pNewItem );		// - Æ®¸® ³ëµå.

	std::string strFieldFile = pITEM->sBasicOp.strFieldFile;
	std::transform ( strFieldFile.begin(), strFieldFile.end(), strFieldFile.begin(), tolower );

	bool bSIMMESH = false;
	bool bEFFECT = false;
	std::string::size_type idx;
	idx = strFieldFile.find ( ".x" );
	if ( idx!=string::npos )	bSIMMESH = true;

	idx = strFieldFile.find ( ".egp" );
	if ( idx!=string::npos )	bEFFECT = true;

	pNewItem->vMax = D3DXVECTOR3(10,10,10);
	pNewItem->vMin = D3DXVECTOR3(-10,-10,-10);

	if ( bSIMMESH )
	{
		DxSimMesh* pSimMesh = GLItemMan::GetInstance().GetFieldMesh ( pNewItem->sItemClient.sNativeID );
		if ( !pSimMesh )
		{
			CDebugSet::ToLogFile ( "ERROR : item field mesh null %s", pITEM->GetName() );
		}
		else
		{
			pSimMesh->GetBoundBox ( pNewItem->vMax, pNewItem->vMin );
		}
		
		pNewItem->pSimMesh = pSimMesh;
	}
	else if ( bEFFECT )
	{
		EFF_PROPGROUP* pPropGroup = DxEffSinglePropGMan::GetInstance().FindEffGProp ( strFieldFile.c_str() );
		if ( pPropGroup )
		{
			pNewItem->vMax = pPropGroup->m_vMax;
			pNewItem->vMin = pPropGroup->m_vMin;
		}

		STARGETID sTARID ( CROW_ITEM, pNewItem->dwGlobID, pNewItem->vPos );
		DxEffGroupPlayer::GetInstance().PassiveEffect ( strFieldFile.c_str(), pNewItem->matWld, sTARID );
	}

	COLLISION::MINDETECTAABB ( pNewItem->vMax, pNewItem->vMin, 1.1f, 4.0f );
	COLLISION::TransformAABB ( pNewItem->vMax, pNewItem->vMin, pNewItem->matWld );


	if ( pItemDrop->fAge < 0.01f )
	{
		std::string strSOUND = "ITEMDROP_COIN";
		switch ( pITEM->sBasicOp.emItemType )
		{
		case ITEM_ANTI_DISAPPEAR:
		case ITEM_REVIVE:
		case ITEM_SUIT:
		case ITEM_VEHICLE:
			{
				switch ( pITEM->sSuitOp.emSuit )
				{
				case SUIT_HEADGEAR:
				case SUIT_UPPER:
				case SUIT_LOWER:
				case SUIT_HAND:
				case SUIT_VEHICLE:
					strSOUND = "ITEMDROP_SUIT";
					break;

				case SUIT_FOOT:
					strSOUND = "ITEMDROP_SHOES";
					break;

				case SUIT_HANDHELD:
					strSOUND = "ITEMDROP_WAPON";
					break;

				case SUIT_NECK:
				case SUIT_WRIST:
				case SUIT_FINGER:
					strSOUND = "ITEMDROP_RING";
					break;
				};
			}
			break;

		case ITEM_SKILL:
			strSOUND = "ITEMDROP_SCROLL";
			break;

		case ITEM_CURE:
			strSOUND = "ITEMDROP_DRUGS";
			break;

		case ITEM_ARROW:
		case ITEM_RECALL:
		case ITEM_KEY:
		case ITEM_GRINDING:
		case ITEM_CHARM:
		case ITEM_TICKET:
		case ITEM_SKP_RESET:
		case ITEM_STAT_RESET:
		case ITEM_SKP_STAT_RESET:
		case ITEM_BOX:
		case ITEM_CLEANSER:
		case ITEM_LOUDSPEAKER:
		case ITEM_FIRECRACKER:
		case ITEM_CHARACTER_CARD:
		case ITEM_INVEN_CARD:
		case ITEM_STORAGE_CARD:
		case ITEM_STORAGE_CONNECT:
		case ITEM_PREMIUMSET:
		case ITEM_PRIVATEMARKET:
		case ITEM_RANDOMITEM:
		case ITEM_DISJUNCTION:
		case ITEM_REMODEL:
		case ITEM_GARBAGE_CARD:
		case ITEM_TELEPORT_CARD:
			strSOUND = "ITEMDROP_SUIT";
			break;

		case ITEM_QITEM:
			strSOUND = "ITEMDROP_?BOX";
			break;
		};

		DxSoundLib::GetInstance()->PlaySound ( strSOUND );
	}
        [COLOR="Red"]//add some function in here[/COLOR]
        STARGETID sTARID ( CROW_ITEM, pNewItem->dwGlobID, pNewItem->vPos ); [COLOR="Red"]<--declare what things that will have our new effect.
[/COLOR]
        DxEffGroupPlayer::GetInstance().PassiveEffect ( GLCONST_CHAR::strMINE_EFFECT.c_str(), pNewItem->matWld, sTARID );[COLOR="Red"]//call effect function[/COLOR]

	return TRUE;
}

BOOL GLLandManClient::DropMoney ( LONGLONG lnAmount, D3DXVECTOR3 vPos, DWORD dwGlobID, float fAge )
{
	//	Note : ¶³¾îÁú À§Ä¡ ³ëµå¸¦ ã´Â´Ù.
	//
	CLIENTQUADNODE* pLandNode = m_LandTree.FindNode ( (int)vPos.x, (int)vPos.z );
	if ( !pLandNode )	return	FALSE;

	//	Note : ¸Þ¸ð¸®¸¦ ÇÒ´ç.
	//
	CMoneyClientDrop *pNewMoney = new CMoneyClientDrop;

	//	Note : ÁöÇüÀÇ ³ôÀ̶û ¸ÂÃ߾ ¶³¾îÁö´Â ÁöÁ¡À» ¼±ÅÃÇÑ´Ù.
	//		( ³»ºñ°ÔÀ̼ÇÀ̶û ¿ÀÂ÷°¡ ¾à°£ ÀÖ´Â°É °¨¾È. )
	D3DXVECTOR3 vPoint1 = vPos + D3DXVECTOR3(0,8,0);
	D3DXVECTOR3 vPoint2 = vPos + D3DXVECTOR3(0,-5,0);
	
	D3DXVECTOR3 vCollision(FLT_MAX,FLT_MAX,FLT_MAX);
	BOOL bCollision = FALSE;
	LPDXFRAME pDxFrame = NULL;
	m_LandMan.IsCollision ( vPoint1, vPoint2, vCollision, bCollision, pDxFrame, FALSE );

	D3DXVECTOR3 vDropPos = vPos;
	if ( bCollision )	vDropPos = vCollision;
	vDropPos.y += 1.0f;

	//	Note : ¾ÆÀÌÅÛ Á¤º¸ ( Á¾·ù, À§Ä¡ ).
	//
	pNewMoney->fAge = fAge;
	pNewMoney->lnAmount = lnAmount;
	pNewMoney->vPos = vDropPos;
	D3DXMatrixTranslation ( &pNewMoney->matWld, pNewMoney->vPos.x, pNewMoney->vPos.y, pNewMoney->vPos.z );


	//	Note : °ü¸® ID ºÎ¿©.
	//
	pNewMoney->sMapID = m_sMapID;
	pNewMoney->dwGlobID = dwGlobID;
	pNewMoney->dwCeID = pLandNode->dwCID;

	//	Note : °ü¸® ³ëµå Æ÷ÀÎÅÍ.
	//
	m_MoneyArray[dwGlobID] = pNewMoney;												// - Àü¿ª.
	pNewMoney->pGlobList = m_GlobMoneyList.ADDHEAD ( pNewMoney );					// - Àü¿ª.

	pNewMoney->pQuadNode = pLandNode;												// - Æ®¸® ³ëµå.
	pNewMoney->pCellList = pLandNode->pData->m_MoneyList.ADDHEAD ( pNewMoney );		// - Æ®¸® ³ëµå.

	DxSimMesh* pMoneyMesh = NULL;
	if ( lnAmount>200 )			pMoneyMesh = GLItemMan::GetInstance().GetMoneyMesh ( 2 );
	else if ( lnAmount>60 )		pMoneyMesh = GLItemMan::GetInstance().GetMoneyMesh ( 1 );
	else						pMoneyMesh = GLItemMan::GetInstance().GetMoneyMesh ( 0 );
	
	if ( !pMoneyMesh )
	{
		CDebugSet::ToLogFile ( "ERROR : money field mesh null ( amount %I64d )", lnAmount );
	}

	pNewMoney->pMoneyMesh = pMoneyMesh;

	if ( fAge < 0.01f )
	{
		DxSoundLib::GetInstance()->PlaySound ( "ITEMDROP_COIN" );
	}
        STARGETID sTARID ( CROW_MONEY, pNewMoney->dwGlobID, pNewMoney->vPos ); [COLOR="Red"]<--declare what things that will have our new effect.
[/COLOR]
        DxEffGroupPlayer::GetInstance().PassiveEffect ( GLCONST_CHAR::strMINE_EFFECT.c_str(), pNewMoney->matWld, sTARID );[COLOR="Red"]//call effect function[/COLOR]

	return TRUE;
}

[COLOR="Red"]//now we already add function to show our new effect. 
//Remember if you add function to show some effect of create some effect you must add function to delete that effect after doing something. 
//e.g. in this code that we are trying to add, the effect will show when mob drop some item and some money. 
//But how to make the effect disappeare when we lot the item and money?? 
//The answer is we must add delete function for that effect.
//Add delete effect function like this.

//Search this code first.[/COLOR]

BOOL GLLandManClient::DropOutItem ( DWORD dwGlobID )
{
	GASSERT ( dwGlobID<MAXITEM );
	if ( m_ItemArray[dwGlobID] == NULL )	return FALSE;

	PITEMCLIENTDROP pItemDrop = m_ItemArray[dwGlobID];
	m_ItemArray[dwGlobID] = NULL;

	//	Note : Global-List ÇØÁö.
	//
	if ( pItemDrop->pGlobList )
		m_GlobItemList.DELNODE ( pItemDrop->pGlobList );

	//	Note : QuadNode-List ÇØÁö.
	//
	CLIENTQUADNODE* pLandNode = pItemDrop->pQuadNode;
	if ( pItemDrop->pCellList )
		pLandNode->pData->m_ItemList.DELNODE ( pItemDrop->pCellList );

        [COLOR="Red"]//Look at this code. This is for item and its already have delete function so we can leave it.
        //But how about money drop??
        //Just copy below code and paste it in Money Drop code[/COLOR]
	STARGETID sTARID ( CROW_ITEM, pItemDrop->dwGlobID, pItemDrop->vPos );
	DxEffGroupPlayer::GetInstance().DeletePassiveEffect ( sTARID );

	//	Note : ¸Þ¸ð¸® ÇØÁö.
	//
	SAFE_DELETE(pItemDrop);

	return TRUE;
}

BOOL GLLandManClient::DropOutMoney ( DWORD dwGlobID )
{
	//GASSERT ( dwGlobID<MAXMONEY );
	if ( dwGlobID >= MAXMONEY )
	{
		CDebugSet::ToLogFile( "GLLandManClient::DropOutMoney() -- dwGlobID >= MAXMONEY" );
		return FALSE;
	}
	if ( m_MoneyArray[dwGlobID] == NULL )	return FALSE;

	PMONEYCLIENTDROP pMoneyDrop = m_MoneyArray[dwGlobID];
	m_MoneyArray[dwGlobID] = NULL;

	//	Note : Global-List ÇØÁö.
	//
	if ( pMoneyDrop->pGlobList )
		m_GlobMoneyList.DELNODE ( pMoneyDrop->pGlobList );

	//	Note : QuadNode-List ÇØÁö.
	//
	CLIENTQUADNODE* pLandNode = pMoneyDrop->pQuadNode;
	if ( pMoneyDrop->pCellList )
		pLandNode->pData->m_MoneyList.DELNODE ( pMoneyDrop->pCellList );

        [COLOR="Red"]//This where you must paste that code. and one more things.. 
        //we must edit it from item drop to money drop like this.[/COLOR]
	STARGETID sTARID ( CROW_ITEM, [COLOR="Red"]pMoneyDrop[/COLOR]->dwGlobID, [COLOR="Red"]pMoneyDrop[/COLOR]->vPos );
	DxEffGroupPlayer::GetInstance().DeletePassiveEffect ( sTARID );

	//	Note : ¸Þ¸ð¸® ÇØÁö.
	//
	SAFE_DELETE(pMoneyDrop);

	return TRUE;
}

now you have your new effect for item and money drop like official have (maybe :p).

Note: to make it work on your client you must set your new effect in your default.charclass file. Just search value that can call the effect file like level up effect or other..add your new effect value that we already declare in GLogicData.h source code..and add that new effect to your effect.rcc (if i'm not forgot the name is takeit.egp)

STARGETID sTARID ( CROW_ITEM, pMoneyDrop->dwGlobID, pMoneyDrop->vPos ); <- Change CROW_ITEM to CROW_MONEY
 
Last edited:
Joined
Mar 12, 2011
Messages
962
Reaction score
589
@dmc0105

you share item name color upgrade or not ??



STARGETID sTARID ( CROW_ITEM, pMoneyDrop->dwGlobID, pMoneyDrop->vPos ); <- Change CROW_ITEM to CROW_MONEY

oops sorry i forgot to change that..
thx for the correction sceon..
already change my post about that..
 
Skilled Illusionist
Joined
Feb 11, 2010
Messages
302
Reaction score
26
I saw party invite from friendlist or guild member list, just select nick name, then click invite button, then on target character, show invitation chat for party, target character respon with click link on that invitation, then target character became member of party...

anyone can give me source for such thing?
 
Joined
Mar 12, 2011
Messages
962
Reaction score
589
@all

i tried to add mouse effect like this :

Code:
D3DXVECTOR3	m_vDir = m_sTargetID.vPos - m_vPos;
D3DXVECTOR3	m_vDirOrig(1,0,0);
	
float fThetaY = DXGetThetaYFromDirection ( m_vDir, m_vDirOrig );
D3DXMATRIX matTrans;
D3DXMatrixRotationY ( &matTrans, fThetaY );
matTrans._41 = m_sTargetID.vPos.x;
matTrans._42 = m_sTargetID.vPos.y;
matTrans._43 = m_sTargetID.vPos.z;

DxEffGroupPlayer::GetInstance().NewEffGroup
(
	GLCONST_CHAR::strCLICK_EFFECT.c_str(),
	matTrans,
	&m_sTargetID
);

and the result is like this :

geger009 - How to add some extra function on Source Code (Newbie Coder) - RaGEZONE Forums


the effect not follow the cursor..but always show up..

and when i change the code like this :

Code:
D3DXMATRIX matTrans;
D3DXMatrixTranslation ( &matTrans, m_sTargetID.vPos.x, m_sTargetID.vPos.y, m_sTargetID.vPos.z );
STARGETID sTargetID ( CROW_PC, m_dwGaeaID, m_sTargetID.vPos );

DxEffGroupPlayer::GetInstance().NewEffGroup
(
	GLCONST_CHAR::strCLICK_EFFECT.c_str(),
	matTrans,
	&m_sTargetID
);

the result is still same like above..
can some one tell me what is wrong with my code??
thanks before..
 
Newbie Spellweaver
Joined
Oct 8, 2011
Messages
37
Reaction score
10
send code to me

Now, I will help you
 
Newbie Spellweaver
Joined
May 29, 2011
Messages
96
Reaction score
1
@All
The EP7 source code how to open double window @@?
 
Joined
Mar 12, 2011
Messages
962
Reaction score
589
@all

i tried to add mouse effect like this :

Code:
D3DXVECTOR3	m_vDir = m_sTargetID.vPos - m_vPos;
D3DXVECTOR3	m_vDirOrig(1,0,0);
	
float fThetaY = DXGetThetaYFromDirection ( m_vDir, m_vDirOrig );
D3DXMATRIX matTrans;
D3DXMatrixRotationY ( &matTrans, fThetaY );
matTrans._41 = m_sTargetID.vPos.x;
matTrans._42 = m_sTargetID.vPos.y;
matTrans._43 = m_sTargetID.vPos.z;

DxEffGroupPlayer::GetInstance().NewEffGroup
(
	GLCONST_CHAR::strCLICK_EFFECT.c_str(),
	matTrans,
	&m_sTargetID
);

and the result is like this :

geger009 - How to add some extra function on Source Code (Newbie Coder) - RaGEZONE Forums


the effect not follow the cursor..but always show up..

and when i change the code like this :

Code:
D3DXMATRIX matTrans;
D3DXMatrixTranslation ( &matTrans, m_sTargetID.vPos.x, m_sTargetID.vPos.y, m_sTargetID.vPos.z );
STARGETID sTargetID ( CROW_PC, m_dwGaeaID, m_sTargetID.vPos );

DxEffGroupPlayer::GetInstance().NewEffGroup
(
	GLCONST_CHAR::strCLICK_EFFECT.c_str(),
	matTrans,
	&m_sTargetID
);

the result is still same like above..
can some one tell me what is wrong with my code??
thanks before..

no one can help me?
 
Good to be back.
Joined
Feb 1, 2009
Messages
631
Reaction score
59
sceon said that send him your code and he will help you
 
Newbie Spellweaver
Joined
Oct 8, 2011
Messages
37
Reaction score
10
ok success

D3DXMATRIX matTrans;
D3DXMatrixTranslation ( &matTrans, m_sTargetID.vPos.x, m_sTargetID.vPos.y, m_sTargetID.vPos.z );
STARGETID sTargetID ( CROW_PC, m_dwGaeaID, m_sTargetID.vPos );
DxEffGroupPlayer::GetInstance().DeleteAllEff ( GLCONST_CHAR::strCLICK_EFFECT.c_str() );
DxEffGroupPlayer::GetInstance().NewEffGroup
(
GLCONST_CHAR::strCLICK_EFFECT.c_str(),
matTrans,
&m_sTargetID
);
 
Status
Not open for further replies.
Back
Top