飞飞迷 > 源码修改 > 重制发光系统

重制发光系统

来源:飞飞迷 发布时间:2015-09-25 浏览:

项目 __JOPS_GLOW

DPSrvr.cpp

Under

Code:
#ifdef __GUILD_HOUSE_MIDDLE
	ON_MSG( PACKETTYPE_GUILDHOUSE_TENDER_MAINWND, OnGuildHouseTenderMainWnd );
	ON_MSG( PACKETTYPE_GUILDHOUSE_TENDER_INFOWND, OnGuildHouseTenderInfoWnd );
	ON_MSG( PACKETTYPE_GUILDHOUSE_TENDER_JOIN, OnGuildHouseTenderJoin );
#endif // __GUILD_HOUSE_MIDDLE
add

Code:
#ifdef __JOPS_GLOW
	ON_MSG( PACKETTYPE_GLOW_CHANGE, OnGlowChange );
#endif //__JOPS_GLOW
At the end of file add

Code:
#ifdef __JOPS_GLOW
void CDPSrvr::OnGlowChange( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE lpBuf, u_long uBufSize )
{
  CUser* pUser = g_UserMng.GetUser( dpidCache, dpidUser );
  if( !IsValidObj( pUser ) )
		return;
  
  int iGlowBody, iGlowHandLeft, iGlowHandRight, iGlowArmLeft, iGlowArmRight, iGlowLegLeft, iGlowLegRight;
  ar >> iGlowBody >> iGlowHandLeft >> iGlowHandRight >> iGlowArmLeft >> iGlowArmRight >> iGlowLegLeft >> iGlowLegRight;
  
	if( iGlowArmLeft > 16 || iGlowArmLeft < 0 )
		return;
	if( iGlowArmRight > 16 || iGlowArmRight < 0 )
		return;
	if( iGlowLegLeft > 16 || iGlowLegLeft < 0 )
		return;
	if( iGlowLegRight > 16 || iGlowLegRight < 0)
		return;
	if( iGlowBody > 16 || iGlowBody < 0)
		return;
	if( iGlowHandLeft > 24 || iGlowHandLeft < 0)
		return;
	if( iGlowHandRight > 24 || iGlowHandRight < 0)
		return;

  pUser->m_iGlowBody = iGlowBody;
  pUser->m_iGlowHandLeft = iGlowHandLeft;
  pUser->m_iGlowHandRight = iGlowHandRight;
  pUser->m_iGlowArmLeft = iGlowArmLeft;
  pUser->m_iGlowArmRight = iGlowArmRight;
  pUser->m_iGlowLegLeft = iGlowLegLeft;
  pUser->m_iGlowLegRight = iGlowLegRight;
  
  g_UserMng.UpdateGlow(pUser, iGlowBody, iGlowHandLeft, iGlowHandRight, iGlowArmLeft, iGlowArmRight, iGlowLegLeft, iGlowLegRight);

}
#endif //__JOPS_GLOW
DPSrvr.h

Before

Code:
private:
	DPID	m_dpidCache;		// ij½¬¼*¹ö DPID
};
add

Code:
#ifdef __JOPS_GLOW
void	OnGlowChange( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE lpBuf, u_long uBufSize );
#endif //__JOPS_GLOW
DPClient.cpp

Under 

Code:
#ifdef __GUILD_HOUSE_MIDDLE
			case SNAPSHOTTYPE_GUILDHOUSE_TENDER_MAINWND:	OnGuildHouseTenderMainWnd( ar ); break;
			case SNAPSHOTTYPE_GUILDHOUSE_TENDER_INFOWND:	OnGuildHouseTenderInfoWnd( ar ); break;
			case SNAPSHOTTYPE_GUILDHOUSE_TENDER_RESULT:		OnGuildHouseTenderResult( ar ); break;
#endif // __GUILD_HOUSE_MIDDLE
add

Code:
#ifdef __JOPS_GLOW
			case SNAPSHOTTYPE_UPDATEGLOW: OnUpdateGlow( objid, ar ); break;
#endif //__JOPS_GLOW
At the end of file add before

Code:
CDPClient	g_DPlay;
add

Code:
#ifdef __JOPS_GLOW
void CDPClient::OnUpdateGlow( OBJID objid, CAr & ar )
{
	int glowbody, glowhandleft, glowhandright, glowarmleft, glowarmright, glowlegleft, glowlegright;
	ar >> glowbody;
	ar >> glowhandleft;
	ar >> glowhandright;
	ar >> glowarmleft;
	ar >> glowarmright;
	ar >> glowlegleft;
	ar >> glowlegright;
	CCtrl* pCtrl	= prj.GetCtrl( objid );
	if( IsValidObj( (CObj*)pCtrl ) )
	{
    CMover* pMover	= (CMover*)pCtrl;
    if(pMover)
    {
      pMover->m_iGlowBody = glowbody;
      pMover->m_iGlowHandLeft = glowhandleft;
      pMover->m_iGlowHandRight = glowhandright,
      pMover->m_iGlowArmLeft = glowarmleft;
      pMover->m_iGlowArmRight = glowarmright;
      pMover->m_iGlowLegLeft = glowlegleft;
      pMover->m_iGlowLegRight = glowlegright;	
    }
	}
}

void CDPClient::SendGlowChange( int iGlowBody, int iGlowHandLeft, int iGlowHandRight, int iGlowArmLeft, int iGlowArmRight, int iGlowLegLeft, int iGlowLegRight)
{
	if(IsValidObj(g_pPlayer))
	{
		g_pPlayer->m_iGlowBody = iGlowBody;
		g_pPlayer->m_iGlowHandLeft = iGlowHandLeft;
		g_pPlayer->m_iGlowHandRight = iGlowHandRight;
		g_pPlayer->m_iGlowArmLeft = iGlowArmLeft;
		g_pPlayer->m_iGlowArmRight = iGlowArmRight;
		g_pPlayer->m_iGlowLegLeft = iGlowLegLeft;
		g_pPlayer->m_iGlowLegRight = iGlowLegRight;
	}
    
    BEFORESENDSOLE( ar, PACKETTYPE_GLOW_CHANGE, DPID_UNKNOWN );
    ar << iGlowBody << iGlowHandLeft << iGlowHandRight << iGlowArmLeft << iGlowArmRight << iGlowLegLeft << iGlowLegRight;
    SEND( ar, this, DPID_SERVERPLAYER );
}
#endif
DPClient.h

before

Code:
void	OnShout( CAr & ar );
add

Code:
#ifdef __JOPS_GLOW
	void	OnUpdateGlow( OBJID objid, CAr & ar );
	void SendGlowChange( int iGlowBody, int iGlowHandLeft, int iGlowHandRight, int iGlowArmLeft, int iGlowArmRight, int iGlowLegLeft, int iGlowLegRight);
#endif //__JOPS_GLOW
Mover.cpp

After 

Code:
#if __VER >= 15 // __CAMPUS
	m_idCampus = 0;
	m_nCampusPoint = 0;
#endif // __CAMPUS
add

Code:
#ifdef __JOPS_GLOW
	m_iGlowBody = 0;
	m_iGlowLegLeft = 0;
	m_iGlowLegRight = 0;
	m_iGlowArmLeft = 0;
	m_iGlowArmRight = 0;
	m_iGlowHandLeft = 0;
	m_iGlowHandRight = 0;
#endif //__JOPS_GLOW
Replace function : void CMover::CreateAbilityOption_SetItemSFX( int nAbilityOption ) by

Code:
void CMover::CreateAbilityOption_SetItemSFX( int nAbilityOption )
{
	DWORD dwSfx = 0;

  DWORD dwSfxHandRight = 0;
  DWORD dwSfxHandLeft = 0;
  DWORD dwSfxArmRight = 0;
  DWORD dwSfxArmLeft = 0;
  DWORD dwSfxBody = 0;
  DWORD dwSfxLegLeft = 0;
  DWORD dwSfxLegRight = 0;
  
  switch( m_iGlowBody ) 
	{
    case 0: dwSfxBody = XI_GEN_ITEM_SETITEM10; break;
    case 1: dwSfxBody = XI_GEN_ITEM_SETITEM101; break; 
    case 2: dwSfxBody = XI_GEN_ITEM_SETITEM102; break; 
    case 3: dwSfxBody = XI_GEN_ITEM_SETITEM103; break; 
    case 4: dwSfxBody = XI_GEN_ITEM_SETITEM104; break; 
    case 5: dwSfxBody = XI_GEN_ITEM_SETITEM105; break; 
    case 6: dwSfxBody = XI_GEN_ITEM_SETITEM106; break; 
    case 7: dwSfxBody = XI_GEN_ITEM_SETITEM107; break; 
    case 8: dwSfxBody = XI_GEN_ITEM_SETITEM108; break; 
    case 9: dwSfxBody = XI_GEN_ITEM_SETITEM109; break; 
    case 10: dwSfxBody = XI_GEN_ITEM_SETITEM1010; break; 
    case 11: dwSfxBody = XI_GEN_ITEM_SETITEM1011; break; 
    case 12: dwSfxBody = XI_GEN_ITEM_SETITEM1012; break; 
    case 13: dwSfxBody = XI_GEN_ITEM_SETITEM1013; break; 
    case 14: dwSfxBody = XI_GEN_ITEM_SETITEM1014; break; 
    case 15: dwSfxBody = XI_GEN_ITEM_SETITEM1015; break; 
    default : dwSfxBody = XI_GEN_ITEM_SETITEM10; break; 
	}
	
	switch( m_iGlowArmLeft ) 
	{
    case 0: dwSfxArmLeft = XI_GEN_ITEM_SETITEM10; break;
    case 1: dwSfxArmLeft = XI_GEN_ITEM_SETITEM101; break; 
    case 2: dwSfxArmLeft = XI_GEN_ITEM_SETITEM102; break; 
    case 3: dwSfxArmLeft = XI_GEN_ITEM_SETITEM103; break; 
    case 4: dwSfxArmLeft = XI_GEN_ITEM_SETITEM104; break; 
    case 5: dwSfxArmLeft = XI_GEN_ITEM_SETITEM105; break; 
    case 6: dwSfxArmLeft = XI_GEN_ITEM_SETITEM106; break; 
    case 7: dwSfxArmLeft = XI_GEN_ITEM_SETITEM107; break; 
    case 8: dwSfxArmLeft = XI_GEN_ITEM_SETITEM108; break; 
    case 9: dwSfxArmLeft = XI_GEN_ITEM_SETITEM109; break; 
    case 10: dwSfxArmLeft = XI_GEN_ITEM_SETITEM1010; break; 
    case 11: dwSfxArmLeft = XI_GEN_ITEM_SETITEM1011; break; 
    case 12: dwSfxArmLeft = XI_GEN_ITEM_SETITEM1012; break; 
    case 13: dwSfxArmLeft = XI_GEN_ITEM_SETITEM1013; break; 
    case 14: dwSfxArmLeft = XI_GEN_ITEM_SETITEM1014; break; 
    case 15: dwSfxArmLeft = XI_GEN_ITEM_SETITEM1015; break; 
    default : dwSfxArmLeft = XI_GEN_ITEM_SETITEM10; break; 
	}
	
	switch( m_iGlowArmRight ) 
	{
    case 0: dwSfxArmRight = XI_GEN_ITEM_SETITEM10; break;
    case 1: dwSfxArmRight = XI_GEN_ITEM_SETITEM101; break; 
    case 2: dwSfxArmRight = XI_GEN_ITEM_SETITEM102; break; 
    case 3: dwSfxArmRight = XI_GEN_ITEM_SETITEM103; break; 
    case 4: dwSfxArmRight = XI_GEN_ITEM_SETITEM104; break; 
    case 5: dwSfxArmRight = XI_GEN_ITEM_SETITEM105; break; 
    case 6: dwSfxArmRight = XI_GEN_ITEM_SETITEM106; break; 
    case 7: dwSfxArmRight = XI_GEN_ITEM_SETITEM107; break; 
    case 8: dwSfxArmRight = XI_GEN_ITEM_SETITEM108; break; 
    case 9: dwSfxArmRight = XI_GEN_ITEM_SETITEM109; break; 
    case 10: dwSfxArmRight = XI_GEN_ITEM_SETITEM1010; break; 
    case 11: dwSfxArmRight = XI_GEN_ITEM_SETITEM1011; break; 
    case 12: dwSfxArmRight = XI_GEN_ITEM_SETITEM1012; break; 
    case 13: dwSfxArmRight = XI_GEN_ITEM_SETITEM1013; break; 
    case 14: dwSfxArmRight = XI_GEN_ITEM_SETITEM1014; break; 
    case 15: dwSfxArmRight = XI_GEN_ITEM_SETITEM1015; break; 
    default : dwSfxArmRight = XI_GEN_ITEM_SETITEM10; break; 
	}
	
	switch( m_iGlowLegLeft ) 
	{
    case 0: dwSfxLegLeft = XI_GEN_ITEM_SETITEM10; break;
    case 1: dwSfxLegLeft = XI_GEN_ITEM_SETITEM101; break; 
    case 2: dwSfxLegLeft = XI_GEN_ITEM_SETITEM102; break; 
    case 3: dwSfxLegLeft = XI_GEN_ITEM_SETITEM103; break; 
    case 4: dwSfxLegLeft = XI_GEN_ITEM_SETITEM104; break; 
    case 5: dwSfxLegLeft = XI_GEN_ITEM_SETITEM105; break; 
    case 6: dwSfxLegLeft = XI_GEN_ITEM_SETITEM106; break; 
    case 7: dwSfxLegLeft = XI_GEN_ITEM_SETITEM107; break; 
    case 8: dwSfxLegLeft = XI_GEN_ITEM_SETITEM108; break; 
    case 9: dwSfxLegLeft = XI_GEN_ITEM_SETITEM109; break; 
    case 10: dwSfxLegLeft = XI_GEN_ITEM_SETITEM1010; break; 
    case 11: dwSfxLegLeft = XI_GEN_ITEM_SETITEM1011; break; 
    case 12: dwSfxLegLeft = XI_GEN_ITEM_SETITEM1012; break; 
    case 13: dwSfxLegLeft = XI_GEN_ITEM_SETITEM1013; break; 
    case 14: dwSfxLegLeft = XI_GEN_ITEM_SETITEM1014; break; 
    case 15: dwSfxLegLeft = XI_GEN_ITEM_SETITEM1015; break; 
    default : dwSfxLegLeft = XI_GEN_ITEM_SETITEM10; break; 
	}
	
	switch( m_iGlowLegRight ) 
	{
    case 0: dwSfxLegRight = XI_GEN_ITEM_SETITEM10; break;
    case 1: dwSfxLegRight = XI_GEN_ITEM_SETITEM101; break; 
    case 2: dwSfxLegRight = XI_GEN_ITEM_SETITEM102; break; 
    case 3: dwSfxLegRight = XI_GEN_ITEM_SETITEM103; break; 
    case 4: dwSfxLegRight = XI_GEN_ITEM_SETITEM104; break; 
    case 5: dwSfxLegRight = XI_GEN_ITEM_SETITEM105; break; 
    case 6: dwSfxLegRight = XI_GEN_ITEM_SETITEM106; break; 
    case 7: dwSfxLegRight = XI_GEN_ITEM_SETITEM107; break; 
    case 8: dwSfxLegRight = XI_GEN_ITEM_SETITEM108; break; 
    case 9: dwSfxLegRight = XI_GEN_ITEM_SETITEM109; break; 
    case 10: dwSfxLegRight = XI_GEN_ITEM_SETITEM1010; break; 
    case 11: dwSfxLegRight = XI_GEN_ITEM_SETITEM1011; break; 
    case 12: dwSfxLegRight = XI_GEN_ITEM_SETITEM1012; break; 
    case 13: dwSfxLegRight = XI_GEN_ITEM_SETITEM1013; break; 
    case 14: dwSfxLegRight = XI_GEN_ITEM_SETITEM1014; break; 
    case 15: dwSfxLegRight = XI_GEN_ITEM_SETITEM1015; break; 
    default : dwSfxLegRight = XI_GEN_ITEM_SETITEM10; break; 
	}

	switch( m_iGlowHandRight ) 
	{
    case 0: dwSfxHandRight = XI_SETIEM_EFFECTHAND; break; 
    case 1: dwSfxHandRight = XI_SETIEM_EFFECTHAND1; break; 
    case 2: dwSfxHandRight = XI_SETIEM_EFFECTHAND2; break; 
    case 3: dwSfxHandRight = XI_SETIEM_EFFECTHAND3; break; 
    case 4: dwSfxHandRight = XI_SETIEM_EFFECTHAND4; break; 
    case 5: dwSfxHandRight = XI_SETIEM_EFFECTHAND5; break;
    case 6: dwSfxHandRight = XI_SETIEM_EFFECTHAND6; break; 
    case 7: dwSfxHandRight = XI_SETIEM_EFFECTHAND7; break;
    case 8: dwSfxHandRight = XI_SETIEM_EFFECTHAND8; break;
    case 9: dwSfxHandRight = XI_SETIEM_EFFECTHAND9; break;
    case 10: dwSfxHandRight = XI_SETIEM_EFFECTHAND10; break;
    case 11: dwSfxHandRight = XI_SETIEM_EFFECTHAND11; break;
    case 12: dwSfxHandRight = XI_SETIEM_EFFECTHAND12; break;
    case 13: dwSfxHandRight = XI_SETIEM_EFFECTHAND13; break;
    case 14: dwSfxHandRight = XI_SETIEM_EFFECTHAND14; break;
    case 15: dwSfxHandRight = XI_SETIEM_EFFECTHAND15; break;
    case 16: dwSfxHandRight = XI_SETIEM_EFFECTHAND16; break;
    case 17: dwSfxHandRight = XI_SETIEM_EFFECTHAND17; break;
    case 18: dwSfxHandRight = XI_SETIEM_EFFECTHAND18; break;
    case 19: dwSfxHandRight = XI_SETIEM_EFFECTHAND19; break;
    case 20: dwSfxHandRight = XI_SETIEM_EFFECTHAND20; break;
    case 21: dwSfxHandRight = XI_SETIEM_EFFECTHAND21; break;
    case 22: dwSfxHandRight = XI_SETIEM_EFFECTHAND22; break;
    case 23: dwSfxHandRight = XI_SETIEM_EFFECTHAND23; break;
    default : dwSfxHandRight = XI_SETIEM_EFFECTHAND; break;
	}
	
	switch( m_iGlowHandLeft ) 
	{
    case 0: dwSfxHandLeft = XI_SETIEM_EFFECTHAND; break; 
    case 1: dwSfxHandLeft = XI_SETIEM_EFFECTHAND1; break; 
    case 2: dwSfxHandLeft = XI_SETIEM_EFFECTHAND2; break; 
    case 3: dwSfxHandLeft = XI_SETIEM_EFFECTHAND3; break; 
    case 4: dwSfxHandLeft = XI_SETIEM_EFFECTHAND4; break; 
    case 5: dwSfxHandLeft = XI_SETIEM_EFFECTHAND5; break;
    case 6: dwSfxHandLeft = XI_SETIEM_EFFECTHAND6; break; 
    case 7: dwSfxHandLeft = XI_SETIEM_EFFECTHAND7; break;
    case 8: dwSfxHandLeft = XI_SETIEM_EFFECTHAND8; break;
    case 9: dwSfxHandLeft = XI_SETIEM_EFFECTHAND9; break;
    case 10: dwSfxHandLeft = XI_SETIEM_EFFECTHAND10; break;
    case 11: dwSfxHandLeft = XI_SETIEM_EFFECTHAND11; break;
    case 12: dwSfxHandLeft = XI_SETIEM_EFFECTHAND12; break;
    case 13: dwSfxHandLeft = XI_SETIEM_EFFECTHAND13; break;
    case 14: dwSfxHandLeft = XI_SETIEM_EFFECTHAND14; break;
    case 15: dwSfxHandLeft = XI_SETIEM_EFFECTHAND15; break;
    case 16: dwSfxHandLeft = XI_SETIEM_EFFECTHAND16; break;
    case 17: dwSfxHandLeft = XI_SETIEM_EFFECTHAND17; break;
    case 18: dwSfxHandLeft = XI_SETIEM_EFFECTHAND18; break;
    case 19: dwSfxHandLeft = XI_SETIEM_EFFECTHAND19; break;
    case 20: dwSfxHandLeft = XI_SETIEM_EFFECTHAND20; break;
    case 21: dwSfxHandLeft = XI_SETIEM_EFFECTHAND21; break;
    case 22: dwSfxHandLeft = XI_SETIEM_EFFECTHAND22; break;
    case 23: dwSfxHandLeft = XI_SETIEM_EFFECTHAND23; break;
    default : dwSfxHandLeft = XI_SETIEM_EFFECTHAND; break;
	}

	CSfxPartsLinkShoulder* pSfx = NULL;
	D3DXVECTOR3 v3Scal = D3DXVECTOR3( 1.0f, 1.0f, 1.0f );

		pSfx = (CSfxPartsLinkShoulder*)CreateSfx( D3DDEVICE, dwSfxArmRight, GetPos(), GetId(), GetPos(), GetId(), -1 ); // rechte schulter
		pSfx->m_nPartsLink = 0;
		pSfx->m_nOldAbilityOption = nAbilityOption;
		pSfx = (CSfxPartsLinkShoulder*)CreateSfx( D3DDEVICE, dwSfxArmLeft, GetPos(), GetId(), GetPos(), GetId(), -1 ); // linke schulter
		pSfx->m_nPartsLink = 1;
		pSfx->m_nOldAbilityOption = nAbilityOption;
		pSfx = (CSfxPartsLinkShoulder*)CreateSfx( D3DDEVICE, dwSfxArmRight, GetPos(), GetId(), GetPos(), GetId(), -1 ); // rechter oberarm
		pSfx->m_nPartsLink = 4;		
		pSfx->m_nOldAbilityOption = nAbilityOption;
		pSfx = (CSfxPartsLinkShoulder*)CreateSfx( D3DDEVICE, dwSfxArmLeft, GetPos(), GetId(), GetPos(), GetId(), -1 ); // linker oberarm
		pSfx->m_nPartsLink = 5;	
		pSfx->m_nOldAbilityOption = nAbilityOption;
		pSfx = (CSfxPartsLinkShoulder*)CreateSfx( D3DDEVICE, dwSfxBody, GetPos(), GetId(), GetPos(), GetId(), -1 ); // Kopf, vorne, brust
		pSfx->m_nPartsLink = 6;
		pSfx->SetScale(D3DXVECTOR3( 3.0f, 4.5f, 3.0f ));
		pSfx->m_nOldAbilityOption = nAbilityOption;
		pSfx = (CSfxPartsLinkShoulder*)CreateSfx( D3DDEVICE, dwSfxBody, GetPos(), GetId(), GetPos(), GetId(), -1 ); // Kopf, vorne, brust
		pSfx->m_nPartsLink = 7;		
		pSfx->SetScale(D3DXVECTOR3( 3.0f, 3.0f, 3.0f ));		
		pSfx->m_nOldAbilityOption = nAbilityOption;
		pSfx = (CSfxPartsLinkShoulder*)CreateSfx( D3DDEVICE, dwSfxArmRight, GetPos(), GetId(), GetPos(), GetId(), -1 ); // rechter arm
		pSfx->m_nPartsLink = 8;			
		pSfx->m_nOldAbilityOption = nAbilityOption;
		pSfx = (CSfxPartsLinkShoulder*)CreateSfx( D3DDEVICE, dwSfxArmLeft, GetPos(), GetId(), GetPos(), GetId(), -1 ); // linker arm
		pSfx->m_nPartsLink = 9;	
		pSfx->m_nOldAbilityOption = nAbilityOption;
		pSfx = (CSfxPartsLinkShoulder*)CreateSfx( D3DDEVICE, dwSfxArmRight, GetPos(), GetId(), GetPos(), GetId(), -1 ); // rechter oberarm
		pSfx->m_nPartsLink = 2;
		pSfx->m_nOldAbilityOption = nAbilityOption;
		pSfx = (CSfxPartsLinkShoulder*)CreateSfx( D3DDEVICE, dwSfxArmLeft, GetPos(), GetId(), GetPos(), GetId(), -1 ); // linker unterarm
		pSfx->m_nPartsLink = 3;		
		pSfx->m_nOldAbilityOption = nAbilityOption;
		pSfx = (CSfxPartsLinkShoulder*)CreateSfx( D3DDEVICE, dwSfxLegLeft, GetPos(), GetId(), GetPos(), GetId(), -1 ); // linkes knie
		pSfx->m_nPartsLink = 26;			
		pSfx->m_nOldAbilityOption = nAbilityOption;
		pSfx = (CSfxPartsLinkShoulder*)CreateSfx( D3DDEVICE, dwSfxLegRight, GetPos(), GetId(), GetPos(), GetId(), -1 ); // rechtes knie
		pSfx->m_nPartsLink = 29;
		pSfx->m_nOldAbilityOption = nAbilityOption;
		pSfx = (CSfxPartsLinkShoulder*)CreateSfx( D3DDEVICE, dwSfxHandRight, GetPos(), GetId(), GetPos(), GetId(), -1 ); //rechte Hand
		pSfx->m_nPartsLink = 8;			
		pSfx->m_v3Offset.y = 0.2f;
		pSfx->m_nOldAbilityOption = nAbilityOption;
		pSfx = (CSfxPartsLinkShoulder*)CreateSfx( D3DDEVICE, dwSfxHandLeft, GetPos(), GetId(), GetPos(), GetId(), -1 ); // linke Hand
		pSfx->m_nPartsLink = 9;			
		pSfx->m_v3Offset.y = 0.2f;
		pSfx->m_nOldAbilityOption = nAbilityOption;
}

Mover.h

Under 

Code:
DWORD			m_dwAuthorization;
add

Code:
#ifdef __JOPS_GLOW
public:
	int m_iGlowBody;
	int m_iGlowLegLeft;
	int m_iGlowLegRight;
	int m_iGlowArmLeft;
	int m_iGlowArmRight;
	int m_iGlowHandLeft;
	int m_iGlowHandRight;
#endif //__JOPS_GLOW
WndWorld.cpp

after 

Code:
case MMI_TELEPORTER:
			{
				CWndMapEx* pWndMapEx = ( CWndMapEx* )g_WndMng.CreateApplet( APP_MAP_EX );

				if( pWndMapEx == NULL )
					break;

				pWndMapEx->SetConstructionMode( CWndMapEx::TELEPORTATION );
				pWndMapEx->InitializeTeleportationInformation( pFocusMover );
			}
			break;
add

Code:
#ifdef __JOPS_GLOW
      case MMI_GLOW_CHANGE:
      {
        g_WndMng.ObjectExecutor( SHORTCUT_APPLET, APP_SETGLOW1);
        break;
      }
#endif //__JOPS_GLOW
FuncApplet.cpp

after 

Code:
DECLAREAPPLET( AppMain_Wnd2ndPassword  , new CWnd2ndPassword );
add

Code:
#ifdef __JOPS_GLOW
DECLAREAPPLET( AppMain_Glow , new CWndGlowChange );
#endif //__JOPS_GLOW
after

Code:
	AddAppletFunc( AppMain_Wnd2ndPassword  , APP_2ND_PASSWORD_NUMBERPAD  , _T( "Wnd2ndPassword" )   , _T( "Icon_Applet.dds" )   , GETTEXT( TID_2ND_PASSWORD_WINDOW_OPEN ),  0  );
add

Code:
#ifdef __JOPS_GLOW
	AddAppletFunc( AppMain_Glow, 			APP_SETGLOW1, 				_T("WndGlowChange"),						_T("Icon_Applet.dds")    ,_T("Change glow")         ,  0 );
#endif //__JOPS_GLOW
WndField.cpp

at the end of file add

Code:
#ifdef __JOPS_GLOW
CWndGlowChange::CWndGlowChange( void ) 
{
	GlowBody = 0;
	GlowHandRight = 0;
	GlowHandLeft = 0;
	GlowArmRight = 0;
	GlowArmLeft = 0;
	GlowLegRight = 0;
	GlowLegLeft = 0;
}

CWndGlowChange::~CWndGlowChange( void )
{
	GlowBody = 0;
	GlowHandRight = 0;
	GlowHandLeft = 0;
	GlowArmRight = 0;
	GlowArmLeft = 0;
	GlowLegRight = 0;
	GlowLegLeft = 0;
  DeleteDeviceObjects();
}

CString GetNameGlow( int nGlow )
{
  CString strResult;
  switch( nGlow ) 
	{
    case 1: strResult.Format("Glow 1"); break; 
    case 2: strResult.Format("Glow 2"); break; 
    case 3: strResult.Format("Glow 3"); break; 
    case 4: strResult.Format("Glow 4"); break; 
    case 5: strResult.Format("Glow 5"); break; 
    case 6: strResult.Format("Glow 6"); break; 
    case 7: strResult.Format("Glow 7"); break; 
    case 8: strResult.Format("Glow 8"); break; 
    case 9: strResult.Format("Glow 9"); break; 
    case 10: strResult.Format("Glow 10"); break; 
    case 11: strResult.Format("Glow 11"); break; 
    case 12: strResult.Format("Glow 12"); break; 
    case 13: strResult.Format("Glow 13"); break; 
    case 14: strResult.Format("Glow 14"); break; 
    case 15: strResult.Format("Glow 15"); break; 
    case 16: strResult.Format("Glow 16"); break;
    case 17: strResult.Format("Glow 17"); break;
    case 18: strResult.Format("Glow 18"); break;
    case 19: strResult.Format("Glow 19"); break;
    case 20: strResult.Format("Glow 20"); break;
    case 21: strResult.Format("Glow 21"); break;
    case 22: strResult.Format("Glow 22"); break;
    case 23: strResult.Format("Glow 23"); break;
    default: strResult.Format("Glow 0"); break;
	}
	return strResult;
}

BOOL CWndGlowChange::Initialize( CWndBase* pWndParent, DWORD dwType )
{
  return CWndNeuz::InitDialog( g_Neuz.GetSafeHwnd(), APP_SETGLOW1, 0, CPoint( 0, 0 ), pWndParent );
}

BOOL CWndGlowChange::OnCommand( UINT nID, DWORD dwMessage, CWndBase* pWndBase ) 
{ 
  return CWndNeuz::OnCommand( nID, dwMessage, pWndBase ); 
} 

void CWndGlowChange::OnSize( UINT nType, int cx, int cy ) 
{ 
  CWndNeuz::OnSize( nType, cx, cy ); 
} 

void CWndGlowChange::OnLButtonUp( UINT nFlags, CPoint point ) 
{ 
} 

void CWndGlowChange::OnLButtonDown( UINT nFlags, CPoint point ) 
{ 
} 

void CWndGlowChange::OnDraw( C2DRender* p2DRender )
{
	CWndStatic* sBody = (CWndStatic*)GetDlgItem(WIDC_STATICCOL);
	CWndStatic* sHandRight = (CWndStatic*)GetDlgItem(WIDC_STATICHAND);
	CWndStatic* sHandLeft = (CWndStatic*)GetDlgItem(WIDC_STATICHAND1);
	CWndStatic* sArmRight = (CWndStatic*)GetDlgItem(WIDC_STATICHAND11);
	CWndStatic* sArmLeft = (CWndStatic*)GetDlgItem(WIDC_STATICHAND111);
	CWndStatic* sLegRight = (CWndStatic*)GetDlgItem(WIDC_STATICHAND1111);
	CWndStatic* sLegLeft = (CWndStatic*)GetDlgItem(WIDC_STATICHAND11111);
	
	if(!sBody || !sHandRight || !sHandLeft || !sArmRight || !sArmLeft || !sLegRight || !sLegLeft)
    return;

  CString strBody, strArmRight, strArmLeft, strLegLeft, strLegRight, strHandRight, strHandLeft;
  
	strBody.Format("%s (%i/16)",GetNameGlow(GlowBody), GlowBody+1);
	sBody->SetTitle(strBody);
	
	strHandRight.Format("%s (%i/16)",GetNameGlow(GlowArmRight), GlowArmRight+1);
	sArmRight->SetTitle(strHandRight);

	strArmLeft.Format("%s (%i/16)",GetNameGlow(GlowArmLeft), GlowArmLeft+1);
	sArmLeft->SetTitle(strArmLeft);
	
	strLegLeft.Format("%s (%i/16)",GetNameGlow(GlowLegLeft), GlowLegLeft+1);
	sLegLeft->SetTitle(strLegLeft);
	
	strLegRight.Format("%s (%i/16)",GetNameGlow(GlowLegRight), GlowLegRight+1);
	sLegRight->SetTitle(strLegRight);
	
	strHandRight.Format("%s (%i/24)",GetNameGlow(GlowHandRight), GlowHandRight+1);
	sHandRight->SetTitle(strHandRight);
	
	strHandLeft.Format("%s (%i/24)",GetNameGlow(GlowHandLeft), GlowHandLeft+1);
	sHandLeft->SetTitle(strHandLeft);

	return;
}

void CWndGlowChange::UpDateModel()
{
}

void CWndGlowChange::UpdateParts()
{
}

HRESULT CWndGlowChange::RestoreDeviceObjects()
{
    CWndNeuz::RestoreDeviceObjects();
    return S_OK;
}

HRESULT CWndGlowChange::InvalidateDeviceObjects()
{
    CWndNeuz::InvalidateDeviceObjects();
    return S_OK;
}

HRESULT CWndGlowChange::DeleteDeviceObjects()
{
    CWndNeuz::DeleteDeviceObjects();
    InvalidateDeviceObjects();
    return S_OK;
}

void CWndGlowChange::OnInitialUpdate( void )
{
  CWndNeuz::OnInitialUpdate(); 

	CWndStatic* sBody = (CWndStatic*)GetDlgItem(WIDC_STATICCOL);
	CWndStatic* sHandRight = (CWndStatic*)GetDlgItem(WIDC_STATICHAND);
	CWndStatic* sHandLeft = (CWndStatic*)GetDlgItem(WIDC_STATICHAND1);
	CWndStatic* sArmRight = (CWndStatic*)GetDlgItem(WIDC_STATICHAND11);
	CWndStatic* sArmLeft = (CWndStatic*)GetDlgItem(WIDC_STATICHAND111);
	CWndStatic* sLegRight = (CWndStatic*)GetDlgItem(WIDC_STATICHAND1111);
	CWndStatic* sLegLeft = (CWndStatic*)GetDlgItem(WIDC_STATICHAND11111);
	
	if(!sBody || !sHandRight || !sHandLeft || !sArmRight || !sArmLeft || !sLegRight || !sLegLeft)
    return;

	GlowBody = g_pPlayer->m_iGlowBody;
	GlowHandLeft = g_pPlayer->m_iGlowHandLeft;
	GlowHandRight = g_pPlayer->m_iGlowHandRight;
	GlowArmLeft = g_pPlayer->m_iGlowArmLeft;
	GlowArmRight = g_pPlayer->m_iGlowArmRight;
	GlowLegLeft = g_pPlayer->m_iGlowLegLeft;
	GlowLegRight = g_pPlayer->m_iGlowLegRight;

  CString strBody, strArmRight, strArmLeft, strLegLeft, strLegRight, strHandRight, strHandLeft;
  
	strBody.Format("%s (%i/16)",GetNameGlow(GlowBody), GlowBody+1);
	sBody->SetTitle(strBody);
	
	strHandRight.Format("%s (%i/16)",GetNameGlow(GlowArmRight), GlowArmRight+1);
	sArmRight->SetTitle(strHandRight);

	strArmLeft.Format("%s (%i/16)",GetNameGlow(GlowArmLeft), GlowArmLeft+1);
	sArmLeft->SetTitle(strArmLeft);
	
	strLegLeft.Format("%s (%i/16)",GetNameGlow(GlowLegLeft), GlowLegLeft+1);
	sLegLeft->SetTitle(strLegLeft);
	
	strLegRight.Format("%s (%i/16)",GetNameGlow(GlowLegRight), GlowLegRight+1);
	sLegRight->SetTitle(strLegRight);
	
	strHandRight.Format("%s (%i/24)",GetNameGlow(GlowHandRight), GlowHandRight+1);
	sHandRight->SetTitle(strHandRight);
	
	strHandLeft.Format("%s (%i/24)",GetNameGlow(GlowHandLeft), GlowHandLeft+1);
	sHandLeft->SetTitle(strHandLeft);

	MoveParentCenter();	
}

BOOL CWndGlowChange::OnChildNotify( UINT message, UINT nID, LRESULT* pLResult )
{
  switch (nID)
  {
    case WIDC_BUTTCOLRIGHT:
    { 
      if(GlowBody == 15)
        GlowBody = 0;
      else
        GlowBody += 1;
      break;
    }
    
    case WIDC_BUTTCOLLEFT:
    {
      if(GlowBody == 0)
        GlowBody = 15;
      else
        GlowBody -= 1;
      break;
    }
    
    case WIDC_BUTTHANDLEFT:
    {
      if(GlowHandRight == 0)
        GlowHandRight = 23;
      else
        GlowHandRight -= 1;
      break;
    }
    
    case WIDC_BUTTHANDRIGHT:
    {
      if(GlowHandRight == 23)
        GlowHandRight = 0;
      else
        GlowHandRight += 1;
      break;
    }
    
    case WIDC_BUTTHANDLEFT1:
    {
      if(GlowHandLeft == 0)
        GlowHandLeft = 23;
      else
        GlowHandLeft -= 1;
      break;
    }
    
    case WIDC_BUTTHANDRIGHT1:
    {
      if(GlowHandLeft == 23)
        GlowHandLeft = 0;
      else
        GlowHandLeft += 1;
      break;
    }
    
    case WIDC_BUTTHANDRIGHT11:
    { 
      if(GlowArmRight == 15)
        GlowArmRight = 0;
      else
        GlowArmRight += 1;
      break;
    }
    
    case WIDC_BUTTHANDLEFT11:
    {
      if(GlowArmRight == 0)
        GlowArmRight = 15;
      else
        GlowArmRight -= 1;
      break;
    }
        
    case WIDC_BUTTHANDRIGHT111:
    { 
      if(GlowArmLeft == 15)
        GlowArmLeft = 0;
      else
        GlowArmLeft += 1;
      break;
    }
    
    case WIDC_BUTTHANDLEFT111:
    {
      if(GlowArmLeft == 0)
        GlowArmLeft = 15;
      else
        GlowArmLeft -= 1;
      break;
    }
      
    case WIDC_BUTTHANDRIGHT1111:
    { 
      if(GlowLegRight == 15)
        GlowLegRight = 0;
      else
        GlowLegRight += 1;
      break;
    }
    
    case WIDC_BUTTHANDLEFT1111:
    {
      if(GlowLegRight == 0)
        GlowLegRight = 15;
      else
        GlowLegRight -= 1;
      break;
    }
    
    case WIDC_BUTTHANDRIGHT11111:
    { 
      if(GlowLegLeft == 15)
        GlowLegLeft = 0;
      else
        GlowLegLeft += 1;
      break;
    }
    
    case WIDC_BUTTHANDLEFT11111:
    {
      if(GlowLegLeft == 0)
        GlowLegLeft = 15;
      else
        GlowLegLeft -= 1;
      break;
    }
    
    case WIDC_BUTTON1:
    {
      g_DPlay.SendGlowChange( GlowBody, GlowHandLeft, GlowHandRight, GlowArmLeft, GlowArmRight, GlowLegLeft, GlowLegRight);
      Destroy();
      break;
    }
	
    default:
    {
      Destroy();
      break;
    }

	}
  return CWndNeuz::OnChildNotify( message, nID, pLResult );
}
#endif //__JOPS_GLOW
WndField.h

before (end of file)

Code:
#endif // !defined(AFX_WNDFIELD_H__A93F3186_63D6_43C1_956F_EC8691E0C7D9__INCLUDED_)
add

Code:
#ifdef __JOPS_GLOW
class CWndGlowChange : public CWndNeuz
{
public:
  CWndGlowChange( void );
  ~CWndGlowChange( void );
	//original variables
	int GlowBody;
	int GlowHandLeft;
	int GlowHandRight;
	int GlowArmLeft;
	int GlowArmRight;
	int GlowLegLeft;
	int GlowLegRight;
	//counters for output
	int GlowBodyC;
	int GlowHandLeftC;
	int GlowHandRightC;
	int GlowArmLeftC;
	int GlowArmRightC;
	int GlowLegLeftC;
	int GlowLegRightC;

  virtual HRESULT RestoreDeviceObjects();
  virtual HRESULT InvalidateDeviceObjects();
  virtual HRESULT DeleteDeviceObjects();

public:
  virtual BOOL Initialize( CWndBase* pWndParent = NULL, DWORD nType = MB_OK ); 
  virtual BOOL OnChildNotify( UINT message, UINT nID, LRESULT* pLResult ); 
  virtual void OnDraw( C2DRender* p2DRender ); 
  virtual    void OnInitialUpdate(); 
  virtual BOOL OnCommand( UINT nID, DWORD dwMessage, CWndBase* pWndBase ); 
  virtual void OnSize( UINT nType, int cx, int cy ); 
  virtual void OnLButtonUp( UINT nFlags, CPoint point ); 
  virtual void OnLButtonDown( UINT nFlags, CPoint point );
	virtual void UpDateModel();
	virtual void UpdateParts();
};
#endif //__JOPS_GLOW


User.cpp

after

Code:
void CUserMng::RemoveUser( DWORD dwSerial )
{
	map<DWORD, CUser*>::iterator it = m_users.find( dwSerial );
	if( it == m_users.end() )
		return;

	CUser* pUser = it->second;

	if( IsValidObj( pUser ) ) 
	{
		pUser->OnTradeRemoveUser();

		m_users.erase( it );
		--m_lCount;
		RemoveUserFromCacheMsg( pUser );
	}
}
add

Code:
#ifdef __JOPS_GLOW
void CUserMng::UpdateGlow( CUser* pUser, int glowbody, int glowhandleft, int glowhandright, int glowarmleft, int glowarmright, int glowlegleft, int glowlegright )
{
	CAr arBlock;
	arBlock << pUser->GetId() << SNAPSHOTTYPE_UPDATEGLOW;
	arBlock << glowbody;
	arBlock << glowhandleft;
	arBlock << glowhandright;
	arBlock << glowarmleft;
	arBlock << glowarmright;
	arBlock << glowlegleft;
	arBlock << glowlegright;
	GETBLOCK( arBlock, lpBlock, uBlockSize );

	FOR_VISIBILITYRANGE( pUser )
	{
		USERPTR->AddBlock( lpBlock, uBlockSize );
	}
	NEXT_VISIBILITYRANGE( pUser )
}
#endif //__JOPS_GLOW
User.h

after

Code:
void			RemoveUser( DWORD dwSerial );
*

add

Code:
#ifdef __JOPS_GLOW
	void			UpdateGlow( CUser* pUser, int glowbody, int glowhandleft, int glowhandright, int glowarmleft, int glowarmright, int glowlegleft, int glowlegright );
#endif //__JOPS_GLOW
MsgHdr.h

before

Code:
#define SNAPSHOTTYPE_CHAT	(WORD)0x0001
add

Code:
#ifdef __JOPS_GLOW
#define PACKETTYPE_GLOW_CHANGE          (DWORD)0xDD000046
#endif //__JOPS_GLOW
and before

Code:
#define ERROR_OK							0L
add

Code:
#ifdef __JOPS_GLOW
#define SNAPSHOTTYPE_UPDATEGLOW           (WORD)0xff26
#endif //__JOPS_GLOW
/!\ Use undefined number !! Ex : 0xDD000046 or 0xDD000047 for PACKETTYPE and SNAPSHOTTYPE etc

DbManagerSave.cpp

after 

Code:
		bOk[0]	= qry->BindParameter( 1, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, &i, 0, &cbLen );
		bOk[1]	= qry->BindParameter( 2, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_VARCHAR, 4290, 0, (char*)p.pszItem, 0, &cbLen );
		bOk[2]	= qry->BindParameter( 3, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_VARCHAR, 215, 0, (char*)p.pszIndex, 0, &cbLen );
		bOk[3]	= qry->BindParameter( 4, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_VARCHAR, 215, 0, (char*)p.pszObjIndex, 0, &cbLen );
		bOk[4]	= qry->BindParameter( 5, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_VARCHAR, 2000, 0, (char*)p.pszExt, 0, &cbLen );
#if __VER >= 15 // __PETVIS
		bOk[5]	= qry->BindParameter( 6, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_VARCHAR, 7800, 0, (char*)p.pszPiercing, 0, &cbLen );
#else // __PETVIS
		bOk[5]	= qry->BindParameter( 6, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_VARCHAR, 2000, 0, (char*)p.pszPiercing, 0, &cbLen );
#endif // __PETVIS
		bOk[6]	= qry->BindParameter( 7, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_VARCHAR, 2689, 0, (char*)p.pszPet, 0, &cbLen );
		bOk[7]	= qry->BindParameter( 8, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, &p.bExpired, 0, &cbLen );
		bOk[8]	= qry->BindParameter( 9, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, &p.tExpirationDate, 0, &cbLen );


		if( !qry->Exec( szQuery ) )
		{
			SAFE_DELETE_ARRAY( bOK );
			return;
		}
	}
#endif	// __SYS_POCKET
add

Code:
char szQuery[QUERY_SIZE] = { 0, };
#ifdef __JOPS_GLOW
  int iGlowArmLeft = pMover->m_iGlowArmLeft;
  if(iGlowArmLeft < 0 || iGlowArmLeft > 16)
    iGlowArmLeft = 0;
    
  int iGlowArmRight = pMover->m_iGlowArmRight;
  if(iGlowArmRight < 0 || iGlowArmRight > 16)
    iGlowArmRight = 0;
  
  int iGlowLegLeft = pMover->m_iGlowLegLeft;
  if(iGlowLegLeft < 0 || iGlowLegLeft > 16)
    iGlowLegLeft = 0;
  
  int iGlowLegRight = pMover->m_iGlowLegRight;
  if(iGlowLegRight < 0 || iGlowLegRight > 16)
    iGlowLegRight = 0;
  
  int iGlowBody = pMover->m_iGlowBody;
  if(iGlowBody < 0 || iGlowBody > 16)
    iGlowBody = 0;
  
  int iGlowHandLeft = pMover->m_iGlowHandLeft;
  if(iGlowHandLeft < 0 || iGlowHandLeft > 24)
    iGlowHandLeft = 0;
  
  int iGlowHandRight = pMover->m_iGlowHandRight;
  if(iGlowHandRight < 0 || iGlowHandRight > 24)
    iGlowHandRight = 0;
	
	sprintf( szQuery, "uspGlow @query = 'S1', @idPlayer = '%07d', @iGlowArmLeft = '%d', @iGlowArmRight = '%d', @iGlowLegLeft = '%d', @iGlowLegRight = '%d', @iGlowBody = '%d', @iGlowHandLeft = '%d', @iGlowHandRight = '%d'",
		pMover->m_idPlayer,iGlowArmLeft, iGlowArmLeft, iGlowArmRight, iGlowLegRight, iGlowBody, iGlowHandLeft, iGlowHandRight );
		
	if( !qry->Exec( szQuery ) )
	{
		WriteLog( "%s, %d\t%s", __FILE__, __LINE__, szQuery );
		return;
	}
#endif //__JOPS_GLOW
DbManagerJoin.cpp

after

Code:
#if __VER >= 11 // __SYS_POCKET
	if( qry->MoreResults() )
	{
		while( qry->Fetch() )
		{
			//GetPocket( &mover, qry, lpDBOP );
			// mirchang_100416 VERIFYSTRING use return value
			if( GetPocket( &mover, qry, lpDBOP ) == FALSE )
			{
				return;
			}
			// mirchang_100416
		}
	}
#endif	// __SYS_POCKET
add

Code:
#ifdef __JOPS_GLOW
	sprintf( szQuery, "uspGlow @query = 'L1', @idPlayer = '%07d'", mover.m_idPlayer );
	
	if( !qry->Exec( szQuery ) )
	{
		FreeRequest( lpDBOP );
		return;
	}
	
	if( qry->Fetch() )
	{
		mover.m_iGlowArmLeft = qry->GetInt( "iGlowArmLeft" );
		mover.m_iGlowArmRight = qry->GetInt( "iGlowArmRight" );
		mover.m_iGlowLegLeft = qry->GetInt( "iGlowLegLeft" );
		mover.m_iGlowLegRight = qry->GetInt( "iGlowLegRight" );
		mover.m_iGlowBody = qry->GetInt( "iGlowBody" );
		mover.m_iGlowHandLeft = qry->GetInt( "iGlowHandLeft" );
		mover.m_iGlowHandRight = qry->GetInt( "iGlowHandRight" );
	}
#endif //__JOPS_GLOW
in folder _Network\Objects

Obj.h

after

Code:
#if __VER >= 15 // __GUILD_HOUSE
public:
	int		m_nRestPoint;
	time_t	m_tLogOut;
#endif // __GUILD_HOUSE
add

Code:
#ifdef __JOPS_GLOW
public:
	int m_iGlowBody;
	int m_iGlowLegLeft;
	int m_iGlowLegRight;
	int m_iGlowArmLeft;
	int m_iGlowArmRight;
	int m_iGlowHandLeft;
	int m_iGlowHandRight;
#endif //__JOPS_GLOW
Obj.cpp

after

Code:
#if __VER >= 15 // __GUILD_HOUSE
	m_nRestPoint = 0;
	m_tLogOut = 0;
#endif // __GUILD_HOUSE
add

Code:
#ifdef __JOPS_GLOW
	m_iGlowBody = 0;
	m_iGlowLegLeft = 0;
	m_iGlowLegRight = 0;
	m_iGlowArmLeft = 0;
	m_iGlowArmRight = 0;
	m_iGlowHandLeft = 0;
	m_iGlowHandRight = 0;
#endif //__JOPS_GLOW
and after

Code:
#if __VER >= 15 // __GUILD_HOUSE
	m_nRestPoint = pMover->m_nRestPoint;
	m_tLogOut = pMover->m_tLogOut;
#endif // __GUILD_HOUSE
add

Code:
#ifdef __JOPS_GLOW
	m_iGlowArmLeft = pMover->m_iGlowArmLeft;
	m_iGlowArmRight = pMover->m_iGlowArmRight;
	m_iGlowLegLeft = pMover->m_iGlowLegLeft;
	m_iGlowLegRight = pMover->m_iGlowLegRight;
	m_iGlowBody = pMover->m_iGlowBody;
	m_iGlowHandLeft = pMover->m_iGlowHandLeft;
	m_iGlowHandRight = pMover->m_iGlowHandRight;

	if( m_iGlowArmLeft > 16 || m_iGlowArmLeft < 0 )
		m_iGlowArmLeft = 0;
	if( m_iGlowArmRight > 16 || m_iGlowArmRight < 0 )
		m_iGlowArmRight = 0;
	if( m_iGlowLegLeft > 16 || m_iGlowLegLeft < 0 )
		m_iGlowLegLeft = 0;
	if( m_iGlowLegRight > 16 || m_iGlowLegRight < 0 )
		m_iGlowLegRight = 0;
	if( m_iGlowBody > 16 || m_iGlowBody < 0)
		m_iGlowBody = 0;
	if( m_iGlowHandLeft > 24 || m_iGlowHandLeft < 0 )
		m_iGlowHandLeft = 0;
	if( m_iGlowHandRight > 24 || m_iGlowHandRight < 0 )
		m_iGlowHandRight = 0;
#endif //__JOPS_GLOW
_Common\ObjSerializeOpt.cpp

after

Code:
for( int j = 0 ; j < SM_MAX ; ++j )
				ar << m_dwSMTime[j];
add

Code:
#ifdef __JOPS_GLOW
			ar << m_iGlowBody;
			ar << m_iGlowHandLeft;
			ar << m_iGlowHandRight;
			ar << m_iGlowArmLeft;
			ar << m_iGlowArmRight;
			ar << m_iGlowLegLeft;
			ar << m_iGlowLegRight;
#endif //__JOPS_GLOW
and after

Code:
for( int j = 0 ; j < SM_MAX ; ++j )
				ar >> m_dwSMTime[j];
add

Code:
#ifdef __JOPS_GLOW
			ar >> m_iGlowBody;
			ar >> m_iGlowHandLeft;
			ar >> m_iGlowHandRight;
			ar >> m_iGlowArmLeft;
			ar >> m_iGlowArmRight;
			ar >> m_iGlowLegLeft;
			ar >> m_iGlowLegRight;
#endif //__JOPS_GLOW
CreateObj.cpp

in function : 

Code:
CSfx* CreateSfx( LPDIRECT3DDEVICE9 pd3dDevice, DWORD dwSfxObj, 
				 D3DXVECTOR3& vPosSrc, OBJID idSrc, D3DXVECTOR3& vPosDest, OBJID idDest, int nSec )
add

Code:
#ifdef __JOPS_GLOW
	case XI_SETIEM_EFFECTHAND1:
	case XI_SETIEM_EFFECTHAND2:
	case XI_SETIEM_EFFECTHAND3:
	case XI_SETIEM_EFFECTHAND4:
	case XI_SETIEM_EFFECTHAND5:
	case XI_SETIEM_EFFECTHAND6:
	case XI_SETIEM_EFFECTHAND7:
	case XI_SETIEM_EFFECTHAND8:
	case XI_SETIEM_EFFECTHAND9:
	case XI_SETIEM_EFFECTHAND10:
	case XI_SETIEM_EFFECTHAND11:
	case XI_SETIEM_EFFECTHAND12:
	case XI_SETIEM_EFFECTHAND13:
	case XI_SETIEM_EFFECTHAND14:
	case XI_SETIEM_EFFECTHAND15:
	case XI_SETIEM_EFFECTHAND16:
	case XI_SETIEM_EFFECTHAND17:
	case XI_SETIEM_EFFECTHAND18:
	case XI_SETIEM_EFFECTHAND19:
	case XI_SETIEM_EFFECTHAND20:
	case XI_SETIEM_EFFECTHAND21:
	case XI_SETIEM_EFFECTHAND22:
	case XI_SETIEM_EFFECTHAND23:
	case XI_GEN_ITEM_SETITEM101:
	case XI_GEN_ITEM_SETITEM102:
	case XI_GEN_ITEM_SETITEM103:
	case XI_GEN_ITEM_SETITEM104:
	case XI_GEN_ITEM_SETITEM105:
	case XI_GEN_ITEM_SETITEM106:
	case XI_GEN_ITEM_SETITEM107:
	case XI_GEN_ITEM_SETITEM108:
	case XI_GEN_ITEM_SETITEM109:
	case XI_GEN_ITEM_SETITEM1010:
	case XI_GEN_ITEM_SETITEM1011:
	case XI_GEN_ITEM_SETITEM1012:
	case XI_GEN_ITEM_SETITEM1013:
	case XI_GEN_ITEM_SETITEM1014:
	case XI_GEN_ITEM_SETITEM1015:
#endif //__JOPS_GLOW

before 

Code:
pObj = new CSfxPartsLinkShoulder(); break;
in VersionCommon.h

-> Database / Neuz / WorldServer

add

Code:
#define __JOPS_GLOW
in ResData.h

add 

Code:
#define APP_SETGLOW1          9999
replace 9999 by unused number

at end of file add

Code:
#define WIDC_STATICCOL          1506
#define WIDC_STATICHAND         1507
#define WIDC_STATICHAND1        1508
#define WIDC_STATICHAND11       1509
#define WIDC_STATICHAND111      1510
#define WIDC_STATICHAND1111     1511
#define WIDC_STATICHAND11111    1512
#define WIDC_TEXTCOUNTCOL       1513
#define WIDC_TEXTCOUNTHAND      1514
#define WIDC_TEXTCOUNTHAND1     1515
#define WIDC_TEXTCOUNTHAND11    1516
#define WIDC_TEXTCOUNTHAND111   1517
#define WIDC_TEXTCOUNTHAND1111  1518
#define WIDC_TEXTCOUNTHAND11111 1519
#define WIDC_BUTTCOLRIGHT       1520
#define WIDC_BUTTCOLLEFT        1521
#define WIDC_BUTTHANDLEFT       1522
#define WIDC_BUTTHANDRIGHT      1523
#define WIDC_BUTTHANDLEFT1      1524
#define WIDC_BUTTHANDRIGHT1     1525
#define WIDC_BUTTHANDRIGHT11    1526
#define WIDC_BUTTHANDLEFT11     1527
#define WIDC_BUTTHANDRIGHT111   1528
#define WIDC_BUTTHANDLEFT111    1529
#define WIDC_BUTTHANDRIGHT1111  1530
#define WIDC_BUTTHANDLEFT1111   1531
#define WIDC_BUTTHANDRIGHT11111 1532
#define WIDC_BUTTHANDLEFT11111  1533
#define WIDC_BUTTAURAOK         1534
Resdata.inc (v15)

Code:
APP_SETGLOW1 "WndTile00.tga" 1 320 589 0x2410000 26
{
// Title String
IDS_RESDATA_INC_009139
}
{
// ToolTip
IDS_RESDATA_INC_009140
}
{
    WTYPE_BUTTON WIDC_BUTTON1 "" 0 118 530 197 554 0x220010 0 0 0 0
    {
    // Title String
    IDS_RESDATA_INC_009141
    }
    {
    // ToolTip
    IDS_RESDATA_INC_009142
    }
    WTYPE_STATIC WIDC_STATIC "WndEditTile200.tga" 1 8 8 294 27 0x220040 0 0 0 0
    {
    // Title String
    IDS_RESDATA_INC_009143
    }
    {
    // ToolTip
    IDS_RESDATA_INC_009144
    }
    WTYPE_STATIC WIDC_STATIC1 "" 0 18 34 64 53 0x220000 0 0 0 0
    {
    // Title String
    IDS_RESDATA_INC_009145
    }
    {
    // ToolTip
    IDS_RESDATA_INC_009146
    }
    WTYPE_STATIC WIDC_STATIC2 "" 0 18 53 102 72 0x220000 0 0 0 0
    {
    // Title String
    IDS_RESDATA_INC_009147
    }
    {
    // ToolTip
    IDS_RESDATA_INC_009148
    }
    WTYPE_STATIC WIDC_STATIC3 "" 0 18 72 102 91 0x220000 0 0 0 0
    {
    // Title String
    IDS_RESDATA_INC_009149
    }
    {
    // ToolTip
    IDS_RESDATA_INC_009150
    }
    WTYPE_STATIC WIDC_STATIC4 "" 0 18 90 117 109 0x220000 0 0 0 0
    {
    // Title String
    IDS_RESDATA_INC_009151
    }
    {
    // ToolTip
    IDS_RESDATA_INC_009152
    }
    WTYPE_STATIC WIDC_STATIC5 "" 0 18 110 96 129 0x220000 0 0 0 0
    {
    // Title String
    IDS_RESDATA_INC_009153
    }
    {
    // ToolTip
    IDS_RESDATA_INC_009154
    }
    WTYPE_STATIC WIDC_STATIC6 "" 0 18 129 125 148 0x220000 0 0 0 0
    {
    // Title String
    IDS_RESDATA_INC_009155
    }
    {
    // ToolTip
    IDS_RESDATA_INC_009156
    }
    WTYPE_STATIC WIDC_STATIC7 "" 0 18 148 122 167 0x220000 0 0 0 0
    {
    // Title String
    IDS_RESDATA_INC_009157
    }
    {
    // ToolTip
    IDS_RESDATA_INC_009158
    }
    WTYPE_STATIC WIDC_STATIC8 "WndEditTile200.tga" 1 12 174 298 193 0x220050 0 0 0 0
    {
    // Title String
    IDS_RESDATA_INC_009159
    }
    {
    // ToolTip
    IDS_RESDATA_INC_009160
    }
    WTYPE_STATIC WIDC_STATIC11 "Inerset.tga" 0 60 202 259 507 0x220002 0 0 0 0
    {
    // Title String
    IDS_RESDATA_INC_009161
    }
    {
    // ToolTip
    IDS_RESDATA_INC_009162
    }
   WTYPE_BUTTON WIDC_BUTTHANDLEFT11111 "WndLeftArrow01.bmp" 0 102 478 121 500 0x220010 0 0 0 0
    {
    // Title String
    IDS_RESDATA_INC_009161
    }
    {
    // ToolTip
    IDS_RESDATA_INC_009162
    }
    WTYPE_BUTTON WIDC_BUTTHANDRIGHT11111 "WndRightArrow01.bmp" 0 122 478 141 500 0x220010 0 0 0 0
    {
    // Title String
    IDS_RESDATA_INC_009163
    }
    {
    // ToolTip
    IDS_RESDATA_INC_009164
    }
    WTYPE_BUTTON WIDC_BUTTHANDLEFT1111 "WndLeftArrow01.bmp" 0 182 478 201 500 0x220010 0 0 0 0
    {
    // Title String
    IDS_RESDATA_INC_009165
    }
    {
    // ToolTip
    IDS_RESDATA_INC_009166
    }
    WTYPE_BUTTON WIDC_BUTTHANDRIGHT1111 "WndRightArrow01.bmp" 0 202 478 221 500 0x220010 0 0 0 0
    {
    // Title String
    IDS_RESDATA_INC_009167
    }
    {
    // ToolTip
    IDS_RESDATA_INC_009168
    }
    WTYPE_BUTTON WIDC_BUTTCOLLEFT "WndLeftArrow01.bmp" 0 144 334 163 356 0x220010 0 0 0 0
    {
    // Title String
    IDS_RESDATA_INC_009169
    }
    {
    // ToolTip
    IDS_RESDATA_INC_009170
    }
    WTYPE_BUTTON WIDC_BUTTCOLRIGHT "WndRightArrow01.bmp" 0 164 334 183 356 0x220010 0 0 0 0
    {
    // Title String
    IDS_RESDATA_INC_009171
    }
    {
    // ToolTip
    IDS_RESDATA_INC_009172
    }
    WTYPE_BUTTON WIDC_BUTTHANDLEFT111 "WndLeftArrow01.bmp" 0 108 308 127 330 0x220010 0 0 0 0
    {
    // Title String
    IDS_RESDATA_INC_009173
    }
    {
    // ToolTip
    IDS_RESDATA_INC_009174
    }
    WTYPE_BUTTON WIDC_BUTTHANDRIGHT111 "WndRightArrow01.bmp" 0 128 308 147 330 0x220010 0 0 0 0
    {
    // Title String
    IDS_RESDATA_INC_009175
    }
    {
    // ToolTip
    IDS_RESDATA_INC_009176
    }
    WTYPE_BUTTON WIDC_BUTTHANDLEFT1 "WndLeftArrow01.bmp" 0 72 356 91 378 0x220010 0 0 0 0
    {
    // Title String
    IDS_RESDATA_INC_009177
    }
    {
    // ToolTip
    IDS_RESDATA_INC_009178
    }
    WTYPE_BUTTON WIDC_BUTTHANDRIGHT1 "WndRightArrow01.bmp" 0 92 356 111 378 0x220010 0 0 0 0
    {
    // Title String
    IDS_RESDATA_INC_009179
    }
    {
    // ToolTip
    IDS_RESDATA_INC_009180
    }
    WTYPE_BUTTON WIDC_BUTTHANDLEFT11 "WndLeftArrow01.bmp" 0 180 308 199 330 0x220010 0 0 0 0
    {
    // Title String
    IDS_RESDATA_INC_009181
    }
    {
    // ToolTip
    IDS_RESDATA_INC_009182
    }
    WTYPE_BUTTON WIDC_BUTTHANDRIGHT11 "WndRightArrow01.bmp" 0 200 308 219 330 0x220010 0 0 0 0
    {
    // Title String
    IDS_RESDATA_INC_009183
    }
    {
    // ToolTip
    IDS_RESDATA_INC_009184
    }
    WTYPE_BUTTON WIDC_BUTTHANDLEFT "WndLeftArrow01.bmp" 0 212 356 231 378 0x220010 0 0 0 0
    {
    // Title String
    IDS_RESDATA_INC_009185
    }
    {
    // ToolTip
    IDS_RESDATA_INC_009186
    }
    WTYPE_BUTTON WIDC_BUTTHANDRIGHT "WndRightArrow01.bmp" 0 232 356 251 378 0x220010 0 0 0 0
    {
    // Title String
    IDS_RESDATA_INC_009187
    }
    {
    // ToolTip
    IDS_RESDATA_INC_009188
    }
    WTYPE_STATIC WIDC_STATICCOL "" 0 62 34 295 53 0x220000 0 0 0 0
    {
    // Title String
    IDS_RESDATA_INC_009191
    }
    {
    // ToolTip
    IDS_RESDATA_INC_009192
    }
    WTYPE_STATIC WIDC_STATICHAND111 "" 0 104 53 296 73 0x220000 0 0 0 0
    {
    // Title String
    IDS_RESDATA_INC_009193
    }
    {
    // ToolTip
    IDS_RESDATA_INC_009194
    }
    WTYPE_STATIC WIDC_STATICHAND11 "" 0 87 72 294 91 0x220000 0 0 0 0
    {
    // Title String
    IDS_RESDATA_INC_009195
    }
    {
    // ToolTip
    IDS_RESDATA_INC_009196
    }
    WTYPE_STATIC WIDC_STATICHAND1 "" 0 104 90 294 109 0x220000 0 0 0 0
    {
    // Title String
    IDS_RESDATA_INC_009197
    }
    {
    // ToolTip
    IDS_RESDATA_INC_009198
    }
    WTYPE_STATIC WIDC_STATICHAND "" 0 96 110 296 129 0x220000 0 0 0 0
    {
    // Title String
    IDS_RESDATA_INC_009199
    }
    {
    // ToolTip
    IDS_RESDATA_INC_009200
    }
    WTYPE_STATIC WIDC_STATICHAND11111 "" 0 115 129 294 148 0x220000 0 0 0 0
    {
    // Title String
    IDS_RESDATA_INC_009201
    }
    {
    // ToolTip
    IDS_RESDATA_INC_009202
    }
    WTYPE_STATIC WIDC_STATICHAND1111 "" 0 106 148 296 167 0x220000 0 0 0 0
    {
    // Title String
    IDS_RESDATA_INC_009203
    }
    {
    // ToolTip
    IDS_RESDATA_INC_009204
    }

}
ResData.txt.txt

Code:
IDS_RESDATA_INC_009139	Glow change
IDS_RESDATA_INC_009140	
IDS_RESDATA_INC_009141	Ok
IDS_RESDATA_INC_009142	
IDS_RESDATA_INC_009143	
IDS_RESDATA_INC_009144	
IDS_RESDATA_INC_009145	Body:
IDS_RESDATA_INC_009146	
IDS_RESDATA_INC_009147	left arm:
IDS_RESDATA_INC_009148	
IDS_RESDATA_INC_009149	right arm:
IDS_RESDATA_INC_009150	
IDS_RESDATA_INC_009151	left hand:
IDS_RESDATA_INC_009152	
IDS_RESDATA_INC_009153	right hand:
IDS_RESDATA_INC_009154	
IDS_RESDATA_INC_009155	left leg:
IDS_RESDATA_INC_009156	
IDS_RESDATA_INC_009157	right leg:
IDS_RESDATA_INC_009158	
IDS_RESDATA_INC_009159	
IDS_RESDATA_INC_009160	
IDS_RESDATA_INC_009161	
IDS_RESDATA_INC_009162	
IDS_RESDATA_INC_009163	Button
IDS_RESDATA_INC_009164	
IDS_RESDATA_INC_009165	Button
IDS_RESDATA_INC_009166	
IDS_RESDATA_INC_009167	Button
IDS_RESDATA_INC_009168	
IDS_RESDATA_INC_009169	Button
IDS_RESDATA_INC_009170	
IDS_RESDATA_INC_009171	Button
IDS_RESDATA_INC_009172	
IDS_RESDATA_INC_009173	Button
IDS_RESDATA_INC_009174	
IDS_RESDATA_INC_009175	Button
IDS_RESDATA_INC_009176	
IDS_RESDATA_INC_009177	Button
IDS_RESDATA_INC_009178	
IDS_RESDATA_INC_009179	Button
IDS_RESDATA_INC_009180	
IDS_RESDATA_INC_009181	Button
IDS_RESDATA_INC_009182	
IDS_RESDATA_INC_009183	Button
IDS_RESDATA_INC_009184	
IDS_RESDATA_INC_009185	Button
IDS_RESDATA_INC_009186	
IDS_RESDATA_INC_009187	Button
IDS_RESDATA_INC_009188	
IDS_RESDATA_INC_009189	Button
IDS_RESDATA_INC_009190	
IDS_RESDATA_INC_009191	Static
IDS_RESDATA_INC_009192	
IDS_RESDATA_INC_009193	Static
IDS_RESDATA_INC_009194	
IDS_RESDATA_INC_009195	Static
IDS_RESDATA_INC_009196	
IDS_RESDATA_INC_009197	Static
IDS_RESDATA_INC_009198	
IDS_RESDATA_INC_009199	Static
IDS_RESDATA_INC_009200	
IDS_RESDATA_INC_009201	Static
IDS_RESDATA_INC_009202	
IDS_RESDATA_INC_009203	Static
IDS_RESDATA_INC_009204
defineNeuz.h

Code:
#define MMI_GLOW_CHANGE         800
defineText.h

Code:
#define TID_MMI_GLOW_CHANGE               7800
add exactly 7000 to number of MMI_GLOW_CHANGE

textClient.inc

Code:
TID_MMI_GLOW_CHANGE               0xff000000
{
	"Glow Change"
}
Finally just add at npc in character.inc

Code:
AddMenu( MMI_GLOW_CHANGE  );
defineObj.h

Code:
#define XI_SETIEM_EFFECTHAND1                  2701
#define XI_SETIEM_EFFECTHAND2                  2702	
#define XI_SETIEM_EFFECTHAND3                  2703	
#define XI_SETIEM_EFFECTHAND4                  2704	
#define XI_SETIEM_EFFECTHAND5                  2705	
#define XI_SETIEM_EFFECTHAND6                  2706	
#define XI_SETIEM_EFFECTHAND7                  2707	
#define XI_SETIEM_EFFECTHAND8                  2708	
#define XI_SETIEM_EFFECTHAND9                  2709	
#define XI_SETIEM_EFFECTHAND10                 2710	
#define XI_SETIEM_EFFECTHAND11                 2711
#define XI_SETIEM_EFFECTHAND12                 2712	
#define XI_SETIEM_EFFECTHAND13                 2713	
#define XI_SETIEM_EFFECTHAND14                 2714	
#define XI_SETIEM_EFFECTHAND15                 2715	
#define XI_SETIEM_EFFECTHAND16                 2716	
#define XI_SETIEM_EFFECTHAND17                 2717	
#define XI_SETIEM_EFFECTHAND18                 2718	
#define XI_SETIEM_EFFECTHAND19                 2719	
#define XI_SETIEM_EFFECTHAND20                 2720	
#define XI_SETIEM_EFFECTHAND21                 2721	
#define XI_SETIEM_EFFECTHAND22                 2722	
#define XI_SETIEM_EFFECTHAND23                 2723	
#define XI_GEN_ITEM_SETITEM101                 2724	
#define XI_GEN_ITEM_SETITEM102                 2725	
#define XI_GEN_ITEM_SETITEM103                 2726	
#define XI_GEN_ITEM_SETITEM104                 2727	
#define XI_GEN_ITEM_SETITEM105                 2728	
#define XI_GEN_ITEM_SETITEM106                 2729	
#define XI_GEN_ITEM_SETITEM107                 2730	
#define XI_GEN_ITEM_SETITEM108                 2731	
#define XI_GEN_ITEM_SETITEM109                 2732	
#define XI_GEN_ITEM_SETITEM1010                2733	
#define XI_GEN_ITEM_SETITEM1011                2734	
#define XI_GEN_ITEM_SETITEM1012                2735	
#define XI_GEN_ITEM_SETITEM1013                2736	
#define XI_GEN_ITEM_SETITEM1014                2737	
#define XI_GEN_ITEM_SETITEM1015                2738
mdlDyna.inc

Code:
"ffg_newhandglowred" XI_SETIEM_EFFECTHAND1 MODELTYPE_SFX "" 0 MD_FAR 0 1.0f 0 1 ATEX_NONE 1
		"ffg_newhandglowblue" XI_SETIEM_EFFECTHAND2 MODELTYPE_SFX "" 0 MD_FAR 0 1.0f 0 1 ATEX_NONE 1
		"ffg_newhandglowyellow" XI_SETIEM_EFFECTHAND3 MODELTYPE_SFX "" 0 MD_FAR 0 1.0f 0 1 ATEX_NONE 1
		"ffg_newhandglowgreen" XI_SETIEM_EFFECTHAND4 MODELTYPE_SFX "" 0 MD_FAR 0 1.0f 0 1 ATEX_NONE 1
		"ffg_newhandglowpurple" XI_SETIEM_EFFECTHAND5 MODELTYPE_SFX "" 0 MD_FAR 0 1.0f 0 1 ATEX_NONE 1
		"sfx_leveleffecthandblack" XI_SETIEM_EFFECTHAND6 MODELTYPE_SFX "" 0 MD_FAR 0 1.0f 0 1 ATEX_NONE 1
		"ffg_newhandglowgold" XI_SETIEM_EFFECTHAND7 MODELTYPE_SFX "" 0 MD_FAR 0 1.0f 0 1 ATEX_NONE 1
		"ffg_newhandglowpink" XI_SETIEM_EFFECTHAND8 MODELTYPE_SFX "" 0 MD_FAR 0 1.0f 0 1 ATEX_NONE 1
		"sfx_leveleffecthandrainbow" XI_SETIEM_EFFECTHAND9 MODELTYPE_SFX "" 0 MD_FAR 0 1.0f 0 1 ATEX_NONE 1
		"ffg_newhandglowsilver" XI_SETIEM_EFFECTHAND10 MODELTYPE_SFX "" 0 MD_FAR 0 1.0f 0 1 ATEX_NONE 1
		"ffg_newhandgloworange" XI_SETIEM_EFFECTHAND11 MODELTYPE_SFX "" 0 MD_FAR 0 1.0f 0 1 ATEX_NONE 1
		"sfx_leveleffecthanddarkpurple" XI_SETIEM_EFFECTHAND12 MODELTYPE_SFX "" 0 MD_FAR 0 1.0f 0 1 ATEX_NONE 1
		"ffg_newhandglowlethal" XI_SETIEM_EFFECTHAND13 MODELTYPE_SFX "" 0 MD_FAR 0 1.0f 0 1 ATEX_NONE 1
		"ffg_newhandglowintensity" XI_SETIEM_EFFECTHAND14 MODELTYPE_SFX "" 0 MD_FAR 0 1.0f 0 1 ATEX_NONE 1
		"ffg_newhandglowdusk" XI_SETIEM_EFFECTHAND15 MODELTYPE_SFX "" 0 MD_FAR 0 1.0f 0 1 ATEX_NONE 1
		"ffg_newhandglowthunder" XI_SETIEM_EFFECTHAND16 MODELTYPE_SFX "" 0 MD_FAR 0 1.0f 0 1 ATEX_NONE 1
		"ffg_newhandglowmental" XI_SETIEM_EFFECTHAND17 MODELTYPE_SFX "" 0 MD_FAR 0 1.0f 0 1 ATEX_NONE 1
		"ffg_newhandglowvenom" XI_SETIEM_EFFECTHAND18 MODELTYPE_SFX "" 0 MD_FAR 0 1.0f 0 1 ATEX_NONE 1
		"ffg_newhandglowsnowflake" XI_SETIEM_EFFECTHAND19 MODELTYPE_SFX "" 0 MD_FAR 0 1.0f 0 1 ATEX_NONE 1
		"ffg_newhandglowchristmas" XI_SETIEM_EFFECTHAND20 MODELTYPE_SFX "" 0 MD_FAR 0 1.0f 0 1 ATEX_NONE 1
		"ffg_newhandglowpink" XI_SETIEM_EFFECTHAND21 MODELTYPE_SFX "" 0 MD_FAR 0 1.0f 0 1 ATEX_NONE 1
		"ffg_newhandglowinversion" XI_SETIEM_EFFECTHAND22 MODELTYPE_SFX "" 0 MD_FAR 0 1.0f 0 1 ATEX_NONE 1
		"ffg_newhandglowevilenergy" XI_SETIEM_EFFECTHAND23 MODELTYPE_SFX "" 0 MD_FAR 0 1.0f 0 1 ATEX_NONE 1
		"sfx_level10red" XI_GEN_ITEM_SETITEM101 MODELTYPE_SFX "" 0 MD_NEAR 0 1.0f 0 1 ATEX_NONE 1
		"sfx_level10blue" XI_GEN_ITEM_SETITEM102 MODELTYPE_SFX "" 0 MD_NEAR 0 1.0f 0 1 ATEX_NONE 1
		"sfx_level10yellow" XI_GEN_ITEM_SETITEM103 MODELTYPE_SFX "" 0 MD_NEAR 0 1.0f 0 1 ATEX_NONE 1
		"sfx_level10green" XI_GEN_ITEM_SETITEM104 MODELTYPE_SFX "" 0 MD_NEAR 0 1.0f 0 1 ATEX_NONE 1
		"sfx_level10purple" XI_GEN_ITEM_SETITEM105 MODELTYPE_SFX "" 0 MD_NEAR 0 1.0f 0 1 ATEX_NONE 1
		"sfx_level10black" XI_GEN_ITEM_SETITEM106 MODELTYPE_SFX "" 0 MD_NEAR 0 1.0f 0 1 ATEX_NONE 1
		"sfx_level10orange" XI_GEN_ITEM_SETITEM107 MODELTYPE_SFX "" 0 MD_NEAR 0 1.0f 0 1 ATEX_NONE 1
		"sfx_level10pink" XI_GEN_ITEM_SETITEM108 MODELTYPE_SFX "" 0 MD_NEAR 0 1.0f 0 1 ATEX_NONE 1
		"sfx_level10rainbow" XI_GEN_ITEM_SETITEM109 MODELTYPE_SFX "" 0 MD_NEAR 0 1.0f 0 1 ATEX_NONE 1
		"sfx_level10sparklesilver" XI_GEN_ITEM_SETITEM1010 MODELTYPE_SFX "" 0 MD_NEAR 0 1.0f 0 1 ATEX_NONE 1
		"sfx_level10sparklegold" XI_GEN_ITEM_SETITEM1011 MODELTYPE_SFX "" 0 MD_NEAR 0 1.0f 0 1 ATEX_NONE 1
		"sfx_level10darkpurple" XI_GEN_ITEM_SETITEM1012 MODELTYPE_SFX "" 0 MD_NEAR 0 1.0f 0 1 ATEX_NONE 1
		"sfx_level10lethal" XI_GEN_ITEM_SETITEM1013 MODELTYPE_SFX "" 0 MD_NEAR 0 1.0f 0 1 ATEX_NONE 1
		"sfx_level10intensity" XI_GEN_ITEM_SETITEM1014 MODELTYPE_SFX "" 0 MD_NEAR 0 1.0f 0 1 ATEX_NONE 1
		"sfx_level10dusk" XI_GEN_ITEM_SETITEM1015 MODELTYPE_SFX "" 0 MD_NEAR 0 1.0f 0 1 ATEX_NONE 1

Database.

Create new Table with :

Code:
USE [CHARACTER_01_DBF]
GO

/****** Object:  Table [dbo].[GLOW_TBL]    Script Date: 09/19/2015 16:20:04 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[GLOW_TBL](
	[idPlayer] [char](7) NULL,
	[iGlowArmLeft] [int] NULL,
	[iGlowArmRight] [int] NULL,
	[iGlowLegLeft] [int] NULL,
	[iGlowLegRight] [int] NULL,
	[iGlowBody] [int] NULL,
	[iGlowHandLeft] [int] NULL,
	[iGlowHandRight] [int] NULL
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO
and create new stored procedure

Code:
USE [CHARACTER_01_DBF]
GO

/****** Object:  StoredProcedure [dbo].[uspGlow]    Script Date: 09/19/2015 16:20:41 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[uspGlow]
	@query char(2) = 'S1',
	@idPlayer char(7) = '0000001',
	@iGlowArmLeft int = '0',
	@iGlowArmRight int = '0',
	@iGlowLegLeft int = '0',
	@iGlowLegRight int = '0',
	@iGlowBody int = '0',
	@iGlowHandLeft int = '0',
	@iGlowHandRight int = '0'
AS

SET NOCOUNT ON
SET XACT_ABORT ON

IF @query = 'S1'
	BEGIN
		IF EXISTS( SELECT * FROM dbo.GLOW_TBL WHERE idPlayer = @idPlayer )
			BEGIN
				UPDATE dbo.GLOW_TBL
				SET iGlowArmLeft = @iGlowArmLeft, iGlowArmRight = @iGlowArmRight, iGlowLegLeft = @iGlowLegLeft, iGlowLegRight = @iGlowLegRight, iGlowBody = @iGlowBody, iGlowHandLeft = @iGlowHandLeft, iGlowHandRight = @iGlowHandRight
				WHERE idPlayer = @idPlayer
			END
		ELSE
			BEGIN
				INSERT INTO dbo.GLOW_TBL( idPlayer, iGlowArmLeft, iGlowArmRight, iGlowLegLeft, iGlowLegRight, iGlowBody, iGlowHandLeft, iGlowHandRight )
				VALUES( @idPlayer, @iGlowArmLeft, @iGlowArmRight, @iGlowLegLeft, @iGlowLegRight, @iGlowBody, @iGlowHandLeft, @iGlowHandRight )
			END
	END
ELSE IF @query = 'L1'
	BEGIN
		IF EXISTS( SELECT * FROM dbo.GLOW_TBL WHERE idPlayer = @idPlayer )
			BEGIN
				SELECT * FROM dbo.GLOW_TBL WHERE idPlayer = @idPlayer
			END
		ELSE
			BEGIN
				INSERT INTO dbo.GLOW_TBL( idPlayer, iGlowArmLeft, iGlowArmRight, iGlowLegLeft, iGlowLegRight, iGlowBody, iGlowHandLeft, iGlowHandRight )
				VALUES( @idPlayer, '0', '0', '0', '0', '0', '0', '0' )
			END
	END
	
-- Table

SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON

GO
一些图片


历史版本

  • V19.飞你莫属
  • 11-11-24V18.翱翔重生
  • 11-04-13V17.龙的逆袭
  • 10-12-13V16.神采飞扬
  • 10-04-16V15.羽化飞天
  • 09-11-04V14.翼之降临