As the title goess disable click to learn or use gold to learn skills . use this if you can if not then dont mind it . . . .
--------------------------------
GLCharSkillMsg.cpp
Look for
HRESULT GLChar::MsgReqLearnSkillNonInven ( NET_MSG_GENERIC* nmg )
replace whole code definition with this
//Activate Skill w/o Scroll
HRESULT GLChar::MsgReqLearnSkillNonInven ( NET_MSG_GENERIC* nmg )
{
GLMSG::SNETPC_REQ_LEARNSKILL_NONINVEN *pNetMsg = (GLMSG::SNETPC_REQ_LEARNSKILL_NONINVEN *) nmg;
SNATIVEID sSKILL_ID = pNetMsg->sSKILLID;
if ( !IsValidBody() ) return E_FAIL;
if( !GLCONST_CHAR::bClickToUnlockSkills ) // TDEV DISABLE CLICK TO UNLOCK SKILLS
{
GLMSG::SNETPC_REQ_LEARNSKILL_NONINVEN_FB NetMsgFB;
NetMsgFB.skill_id = sSKILL_ID;
NetMsgFB.emCHECK = EMSKILL_LEARN_TJ;
GLGaeaServer::GetInstance().SENDTOCLIENT ( m_dwClientID, &NetMsgFB );
return E_FAIL;
}
else
{
if ( ISLEARNED_SKILL(sSKILL_ID) )
{
GLMSG::SNETPC_REQ_LEARNSKILL_NONINVEN_FB NetMsgFB;
NetMsgFB.skill_id = sSKILL_ID;
NetMsgFB.emCHECK = EMSKILL_LEARN_ALREADY;
GLGaeaServer::GetInstance().SENDTOCLIENT ( m_dwClientID, &NetMsgFB );
return E_FAIL;
}
EMSKILL_LEARNCHECK emSKILL_LEARNCHECK = CHECKLEARNABLE_SKILL(sSKILL_ID);
if ( emSKILL_LEARNCHECK!=EMSKILL_LEARN_OK )
{
GLMSG::SNETPC_REQ_LEARNSKILL_NONINVEN_FB NetMsgFB;
NetMsgFB.skill_id = sSKILL_ID;
NetMsgFB.emCHECK = emSKILL_LEARNCHECK;
GLGaeaServer::GetInstance().SENDTOCLIENT ( m_dwClientID, &NetMsgFB );
return E_FAIL;
}
LEARN_SKILL_NONSCROLL(sSKILL_ID);
GLMSG::SNETPC_REQ_LEARNSKILL_NONINVEN_FB NetMsgFB;
NetMsgFB.skill_id = sSKILL_ID;
NetMsgFB.emCHECK = EMSKILL_LEARN_OK;
GLGaeaServer::GetInstance().SENDTOCLIENT ( m_dwClientID, &NetMsgFB );
GLMSG::SNETPC_UPDATE_SKP NetMsgSkp;
NetMsgSkp.dwSkillPoint = m_dwSkillPoint;
GLGaeaServer::GetInstance().SENDTOCLIENT ( m_dwClientID, &NetMsgSkp );
//Update Any money type
GLMSG::SNETPC_UPDATE_MONEYTYPE NetMsgMoney;
NetMsgMoney.lnGold = m_lnMoney;
NetMsgMoney.lnPremP = m_lnPremP;
NetMsgMoney.lnVoteP = m_lnVoteP;
NetMsgMoney.lnContribP = m_lnContribP; //add contributionpoint by CNDev
GLGaeaServer::GetInstance().SENDTOCLIENT ( m_dwClientID, &NetMsgMoney );
PGLSKILL pSkill = GLSkillMan::GetInstance().GetData ( sSKILL_ID );
if ( !pSkill ) return E_FAIL;
if ( pSkill->m_sBASIC.emROLE == SKILL::EMROLE_PASSIVE )
{
GLMSG::SNETPC_UPDATE_PASSIVE_BRD NetMsgBrd;
NetMsgBrd.dwGaeaID = m_dwGaeaID;
NetMsgBrd.sSKILL_DATA = m_sSUM_PASSIVE;
SendMsgViewAround ( (NET_MSG_GENERIC*) &NetMsgBrd );
}
return S_OK;
}
}
----------------------
GLcontrlBaseMsg.h
look for enum EMSKILL_LEARNCHECK
replace whole definition code with this
enum EMSKILL_LEARNCHECK
{
EMSKILL_LEARN_OK = 0, // ¹è¿ì±â ¼º°ø.
EMSKILL_LEARN_MAX = 1, // ´õ ÀÌ»ó ·¾¾÷À» ÇÒ ¼ö ¾øÀ½.
EMSKILL_LEARN_NOTTERM = 2, // ¿ä±¸ Á¶°ÇÀÌ ÃæÁ·µÇÁö ¾Ê¾Æ¼ ·¾¾÷À» ÇÒ¼ö ¾øÀ½.
EMSKILL_LEARN_NOTCLASS = 3, // ºÎ¼°¡ Ʋ·Á¼ ¹è¿ï¼ö ¾ø½À´Ï´Ù.
EMSKILL_LEARN_NOTBRIGHT = 4, // ºû/¾Ï Á¶°ÇÀÌ ÃæÁ·µÇÁö ¾Ê½À´Ï´Ù.
EMSKILL_LEARN_ALREADY = 5, // ÀÌ¹Ì ¹è¿î ½ºÅ³ÀÔ´Ï´Ù.
EMSKILL_LEARN_TJ = 6, // TDEV DISABLE CLICK TO UNLOCK SKILLS
EMSKILL_LEARN_UNKNOWN = 999
};
---------------------------------------
glcharactermsg.cpp
look for this
case NET_MSG_GCTRL_REQ_LEARNSKILL_NONINVEN_FB
replace whole definition code with this
//Activate Skill w/o Scroll
case NET_MSG_GCTRL_REQ_LEARNSKILL_NONINVEN_FB:
{
GLMSG::SNETPC_REQ_LEARNSKILL_NONINVEN_FB *pNetMsg = (GLMSG::SNETPC_REQ_LEARNSKILL_NONINVEN_FB *)nmg;
if ( pNetMsg->emCHECK == EMSKILL_OK )
{
PGLSKILL pSkill = GLSkillMan::GetInstance().GetData ( pNetMsg->skill_id );
if ( !pSkill ) break;
m_ExpSkills.insert ( std::make_pair ( pNetMsg->skill_id.dwID, SCHARSKILL(pNetMsg->skill_id,0) ) );
if ( pSkill->m_sBASIC.emROLE == SKILL::EMROLE_PASSIVE )
{
INIT_DATA ( FALSE, FALSE );
}
STARGETID sTargetID(CROW_PC,m_dwGaeaID,m_vPos);
DxEffGroupPlayer::GetInstance().NewEffGroup
(
GLCONST_CHAR::strSKILL_LEARN_EFFECT.c_str(),
m_matTrans,
&sTargetID
);
}
else
{
CInnerInterface::GetInstance().PrintMsgText( NS_UITEXTCOLOR:ISABLE, ID2GAMEINTEXT("TJ_1") );// TDEV DISABLE CLICK TO UNLOCK SKILLS
}
}
break;
--------------------------------------
glogicdata.cpp
look for GLCONST_CHAR
add this below .
BOOL bClickToUnlockSkills = TRUE; // TDEV DISABLE CLICK TO UNLOCK SKILLS
----------------------------------------
glogicdata.h
look for GLCONST_CHAR
add this below
extern BOOL bClickToUnlockSkills; // TDEV DISABLE CLICK TO UNLOCK SKILLS
-------------------------------------------
glogicdataload.cpp
look for GLCONST_CHAR
add this below
cFILE.getflag( "bClickToUnlockSkills", 1, 1, bClickToUnlockSkills ); // TDEV DISABLE CLICK TO UNLOCK SKILLS
---------------------------------------------
Client side
add this on your defaultcharclass
bClickToUnlockSkills 0 // CHANGE TO 1 IF ENABLED TDEV
-----------------------------------------------------------
gameintext.xml
add this below
<SENTENSE Ver="1" Id="TJ_1">
<VALUE Lang="pe">Click to Unlock Skill Is Disabled.</VALUE>
</SENTENSE>
-----------------------------------
--------------------------------
GLCharSkillMsg.cpp
Look for
HRESULT GLChar::MsgReqLearnSkillNonInven ( NET_MSG_GENERIC* nmg )
replace whole code definition with this
//Activate Skill w/o Scroll
HRESULT GLChar::MsgReqLearnSkillNonInven ( NET_MSG_GENERIC* nmg )
{
GLMSG::SNETPC_REQ_LEARNSKILL_NONINVEN *pNetMsg = (GLMSG::SNETPC_REQ_LEARNSKILL_NONINVEN *) nmg;
SNATIVEID sSKILL_ID = pNetMsg->sSKILLID;
if ( !IsValidBody() ) return E_FAIL;
if( !GLCONST_CHAR::bClickToUnlockSkills ) // TDEV DISABLE CLICK TO UNLOCK SKILLS
{
GLMSG::SNETPC_REQ_LEARNSKILL_NONINVEN_FB NetMsgFB;
NetMsgFB.skill_id = sSKILL_ID;
NetMsgFB.emCHECK = EMSKILL_LEARN_TJ;
GLGaeaServer::GetInstance().SENDTOCLIENT ( m_dwClientID, &NetMsgFB );
return E_FAIL;
}
else
{
if ( ISLEARNED_SKILL(sSKILL_ID) )
{
GLMSG::SNETPC_REQ_LEARNSKILL_NONINVEN_FB NetMsgFB;
NetMsgFB.skill_id = sSKILL_ID;
NetMsgFB.emCHECK = EMSKILL_LEARN_ALREADY;
GLGaeaServer::GetInstance().SENDTOCLIENT ( m_dwClientID, &NetMsgFB );
return E_FAIL;
}
EMSKILL_LEARNCHECK emSKILL_LEARNCHECK = CHECKLEARNABLE_SKILL(sSKILL_ID);
if ( emSKILL_LEARNCHECK!=EMSKILL_LEARN_OK )
{
GLMSG::SNETPC_REQ_LEARNSKILL_NONINVEN_FB NetMsgFB;
NetMsgFB.skill_id = sSKILL_ID;
NetMsgFB.emCHECK = emSKILL_LEARNCHECK;
GLGaeaServer::GetInstance().SENDTOCLIENT ( m_dwClientID, &NetMsgFB );
return E_FAIL;
}
LEARN_SKILL_NONSCROLL(sSKILL_ID);
GLMSG::SNETPC_REQ_LEARNSKILL_NONINVEN_FB NetMsgFB;
NetMsgFB.skill_id = sSKILL_ID;
NetMsgFB.emCHECK = EMSKILL_LEARN_OK;
GLGaeaServer::GetInstance().SENDTOCLIENT ( m_dwClientID, &NetMsgFB );
GLMSG::SNETPC_UPDATE_SKP NetMsgSkp;
NetMsgSkp.dwSkillPoint = m_dwSkillPoint;
GLGaeaServer::GetInstance().SENDTOCLIENT ( m_dwClientID, &NetMsgSkp );
//Update Any money type
GLMSG::SNETPC_UPDATE_MONEYTYPE NetMsgMoney;
NetMsgMoney.lnGold = m_lnMoney;
NetMsgMoney.lnPremP = m_lnPremP;
NetMsgMoney.lnVoteP = m_lnVoteP;
NetMsgMoney.lnContribP = m_lnContribP; //add contributionpoint by CNDev
GLGaeaServer::GetInstance().SENDTOCLIENT ( m_dwClientID, &NetMsgMoney );
PGLSKILL pSkill = GLSkillMan::GetInstance().GetData ( sSKILL_ID );
if ( !pSkill ) return E_FAIL;
if ( pSkill->m_sBASIC.emROLE == SKILL::EMROLE_PASSIVE )
{
GLMSG::SNETPC_UPDATE_PASSIVE_BRD NetMsgBrd;
NetMsgBrd.dwGaeaID = m_dwGaeaID;
NetMsgBrd.sSKILL_DATA = m_sSUM_PASSIVE;
SendMsgViewAround ( (NET_MSG_GENERIC*) &NetMsgBrd );
}
return S_OK;
}
}
----------------------
GLcontrlBaseMsg.h
look for enum EMSKILL_LEARNCHECK
replace whole definition code with this
enum EMSKILL_LEARNCHECK
{
EMSKILL_LEARN_OK = 0, // ¹è¿ì±â ¼º°ø.
EMSKILL_LEARN_MAX = 1, // ´õ ÀÌ»ó ·¾¾÷À» ÇÒ ¼ö ¾øÀ½.
EMSKILL_LEARN_NOTTERM = 2, // ¿ä±¸ Á¶°ÇÀÌ ÃæÁ·µÇÁö ¾Ê¾Æ¼ ·¾¾÷À» ÇÒ¼ö ¾øÀ½.
EMSKILL_LEARN_NOTCLASS = 3, // ºÎ¼°¡ Ʋ·Á¼ ¹è¿ï¼ö ¾ø½À´Ï´Ù.
EMSKILL_LEARN_NOTBRIGHT = 4, // ºû/¾Ï Á¶°ÇÀÌ ÃæÁ·µÇÁö ¾Ê½À´Ï´Ù.
EMSKILL_LEARN_ALREADY = 5, // ÀÌ¹Ì ¹è¿î ½ºÅ³ÀÔ´Ï´Ù.
EMSKILL_LEARN_TJ = 6, // TDEV DISABLE CLICK TO UNLOCK SKILLS
EMSKILL_LEARN_UNKNOWN = 999
};
---------------------------------------
glcharactermsg.cpp
look for this
case NET_MSG_GCTRL_REQ_LEARNSKILL_NONINVEN_FB
replace whole definition code with this
//Activate Skill w/o Scroll
case NET_MSG_GCTRL_REQ_LEARNSKILL_NONINVEN_FB:
{
GLMSG::SNETPC_REQ_LEARNSKILL_NONINVEN_FB *pNetMsg = (GLMSG::SNETPC_REQ_LEARNSKILL_NONINVEN_FB *)nmg;
if ( pNetMsg->emCHECK == EMSKILL_OK )
{
PGLSKILL pSkill = GLSkillMan::GetInstance().GetData ( pNetMsg->skill_id );
if ( !pSkill ) break;
m_ExpSkills.insert ( std::make_pair ( pNetMsg->skill_id.dwID, SCHARSKILL(pNetMsg->skill_id,0) ) );
if ( pSkill->m_sBASIC.emROLE == SKILL::EMROLE_PASSIVE )
{
INIT_DATA ( FALSE, FALSE );
}
STARGETID sTargetID(CROW_PC,m_dwGaeaID,m_vPos);
DxEffGroupPlayer::GetInstance().NewEffGroup
(
GLCONST_CHAR::strSKILL_LEARN_EFFECT.c_str(),
m_matTrans,
&sTargetID
);
}
else
{
CInnerInterface::GetInstance().PrintMsgText( NS_UITEXTCOLOR:ISABLE, ID2GAMEINTEXT("TJ_1") );// TDEV DISABLE CLICK TO UNLOCK SKILLS
}
}
break;
--------------------------------------
glogicdata.cpp
look for GLCONST_CHAR
add this below .
BOOL bClickToUnlockSkills = TRUE; // TDEV DISABLE CLICK TO UNLOCK SKILLS
----------------------------------------
glogicdata.h
look for GLCONST_CHAR
add this below
extern BOOL bClickToUnlockSkills; // TDEV DISABLE CLICK TO UNLOCK SKILLS
-------------------------------------------
glogicdataload.cpp
look for GLCONST_CHAR
add this below
cFILE.getflag( "bClickToUnlockSkills", 1, 1, bClickToUnlockSkills ); // TDEV DISABLE CLICK TO UNLOCK SKILLS
---------------------------------------------
Client side
add this on your defaultcharclass
bClickToUnlockSkills 0 // CHANGE TO 1 IF ENABLED TDEV
-----------------------------------------------------------
gameintext.xml
add this below
<SENTENSE Ver="1" Id="TJ_1">
<VALUE Lang="pe">Click to Unlock Skill Is Disabled.</VALUE>
</SENTENSE>
-----------------------------------