- Joined
- May 2, 2012
- Messages
- 475
- Reaction score
- 244
i have updated the .rar file as of 3:22AM GMT +8
s_NetGlobal.h
add this
find SPK_HISTORY
add this as new member of the struct
add this
GLContrlPcMsg.h
add this
add this
add this
also add new method in GLCharMsg.cpp
declare this
add and declare
find ResetControl() add this
add this
add this
add new member on SCHARDATA()
Change GetNativeID() to sNativeID
Also add Method for Opening kill feed window on GLCharactorReq.cpp.
like this
CLIENT UPDATE
Comment.ini
find [ITEMTYPE]
ADD this
Check Attached for UI WIndow.
KillFeedSelectorWindow.rar ( contains cpp & h )
I'll be Updating this thread for GUI. ( xml )
Merry Christmas and Happy New Year!
CREDITS TO
Credits Used Textures from Thai Server I don't know who's.
Reference :I CANNOT ASSIST YOU ON ADDING THIS FEATURE ON YOUR SOURCE. ADD THIS AT YOUR OWN RISK!!! YOU MUST HAVE ATLEAST BASIC KNOWLEDGE ON WRTING C++
s_NetGlobal.h
add this
PKRankData.h// KILL FEED
NET_MSG_GCTRL_KILLFEED_SELECT_REQ = (NET_MSG_GCTRL + 3146), // <<< change 3146 to yours
NET_MSG_GCTRL_KILLFEED_FB = (NET_MSG_GCTRL + 3147), // <<<< change 3147 to yours
find SPK_HISTORY
add this as new member of the struct
find SPK_HISTORY()BYTE cKF_KILLER;
add this
it will look like this, cKF_KILLER ( 0 )
GLContrlPcMsg.h
add this
at the end of the file just before " }; "// KILL FEED
enum EMKILL_FEED_SELECT_FB
{
EMKILL_FEED_SELECT_OK = 0, // feed back ok
EMKILL_FEED_SELECT_FAIL = 1, // feed back failed
EMKILL_FEED_SELECT_NOITEM = 2, // feed back no item probably no card
EMKILL_FEED_SELECT_NOTITEM = 3, // feed back not item kill feed card
EMKILL_FEED_SELECT_ALREADY = 4, // feed same kill feed style
EMKILL_FEED_SELECT_REQUIRE = 5, // card prerequisite problem ( ex. not enough level )
};
add this
DxGlobalStage.cpp// KILL FEED
struct SNET_KILLFEED_SELECT_REQ : public NET_MSG_GENERIC
{
BYTE cIndex;
unsigned int m_Crc32; // ÆÐŶÁ¶ÀÛ ¶§¹®¿¡ CRC32 »ðÀÔ
SNET_KILLFEED_SELECT_REQ ()
: cIndex (-1)
, m_Crc32(0)
{
dwSize = sizeof(SNET_KILLFEED_SELECT_REQ);
nType = NET_MSG_GCTRL_KILLFEED_SELECT_REQ;
GASSERT( sizeof( SNET_KILLFEED_SELECT_REQ ) <= NET_DATA_BUFSIZE );
}
};
// KILL FEED
struct SNET_KILLFEED_SELECT_FB : public NET_MSG_GENERIC
{
EMKILL_FEED_SELECT_FB emFB;
BYTE cIndex;
SNET_KILLFEED_SELECT_FB ()
: emFB(EMKILL_FEED_SELECT_FAIL)
{
dwSize = sizeof(SNET_KILLFEED_SELECT_FB);
nType = NET_MSG_GCTRL_KILLFEED_FB;
GASSERT( sizeof( SNET_KILLFEED_SELECT_FB ) <= NET_DATA_BUFSIZE );
}
};
add this
just before// KILL FEED
case NET_MSG_GCTRL_KILLFEED_FB:
GLGaeaClient.cpp{
GLGaeaClient::GetInstance().MsgProcess ( nmg );
}
break;
just before// KILL FEED
case NET_MSG_GCTRL_KILLFEED_FB:
GLCharacterMsg.cpp{
m_Character.MsgProcess ( nmg );
}
break;
GLGaeaServerMsg.cppvoid GLCharacter::MsgProcess ( NET_MSG_GENERIC* nmg ) // <<< find this
{
switch ( nmg->nType )
{
// add this
// KILL FEED
case NET_MSG_GCTRL_KILLFEED_FB:
{
GLMSG::SNET_KILLFEED_SELECT_FB* pNetMsg = ( GLMSG::SNET_KILLFEED_SELECT_FB* ) nmg;
switch ( pNetMsg->emFB )
{
case EMKILL_FEED_SELECT_ALREADY:
CInnerInterface::GetInstance().PrintMsgTextDlg ( NS_UITEXTCOLOR::FORESTGREEN, ID2GAMEINTEXT("EMKILL_FEED_SELECT_ALREADY") );
break;
case EMKILL_FEED_SELECT_OK:
CInnerInterface::GetInstance().PrintMsgTextDlg ( NS_UITEXTCOLOR::FORESTGREEN, ID2GAMEINTEXT("EMKILL_FEED_SELECT_OK") );
CInnerInterface::GetInstance().HideGroup( STYLE_KILL_FEED_WINDOW );
break;
case EMKILL_FEED_SELECT_NOITEM:
CInnerInterface::GetInstance().PrintMsgTextDlg ( NS_UITEXTCOLOR::FORESTGREEN, ID2GAMEINTEXT("EMKILL_FEED_SELECT_NOITEM") );
break;
case EMKILL_FEED_SELECT_NOTITEM:
CInnerInterface::GetInstance().PrintMsgTextDlg ( NS_UITEXTCOLOR::FORESTGREEN, ID2GAMEINTEXT("EMKILL_FEED_SELECT_NOTITEM") );
break;
case EMKILL_FEED_SELECT_REQUIRE:
CInnerInterface::GetInstance().PrintMsgTextDlg ( NS_UITEXTCOLOR::FORESTGREEN, ID2GAMEINTEXT("EMKILL_FEED_SELECT_REQUIRE") );
break;
}
}
break;
GLCharMsg.cpp// KILL FEED
case NET_MSG_GCTRL_KILLFEED_SELECT_REQ: /// <<<<< add this
{
if ( dwGaeaID == GAEAID_NULL ) return E_FAIL;
PGLCHAR pChar = GetChar ( dwGaeaID );
if ( !pChar ) return S_FALSE;
pChar->MsgProcess ( nmg ); // <<<<< find this
}
break;
also add new method in GLCharMsg.cpp
GLChar.h// KILL FEED
HRESULT GLChar::MsgReqKillFeedSelect(NET_MSG_GENERIC* nmg)
{
GLMSG::SNET_KILLFEED_SELECT_REQ* pNetMsg = ( GLMSG::SNET_KILLFEED_SELECT_REQ* ) nmg;
GLMSG::SNET_KILLFEED_SELECT_FB NetMsgFB;
if ( !IsValidBody() )
return TRUE;
SINVENITEM* pInvenItem = m_cInventory.FindItem ( ITEM_KILL_FEED_SELECTOR );
if (!pInvenItem)
{
NetMsgFB.emFB = EMKILL_FEED_SELECT_NOITEM;
GLGaeaServer::GetInstance().SENDTOCLIENT ( m_dwClientID, (NET_MSG_GENERIC*) &NetMsgFB );
return TRUE;
}
if ( CheckCoolTime( pInvenItem->sItemCustom.GetNativeID() ) )
return TRUE;
const SITEM* pItem = GLItemMan::GetInstance().GetItem( pInvenItem->sItemCustom.sNativeID );
if ( !pItem )
{
NetMsgFB.emFB = EMKILL_FEED_SELECT_NOITEM;
GLGaeaServer::GetInstance().SENDTOCLIENT ( m_dwClientID, (NET_MSG_GENERIC*) &NetMsgFB );
return TRUE;
}
if ( pItem->sBasicOp.emItemType != ITEM_KILL_FEED_SELECTOR )
{
NetMsgFB.emFB = EMKILL_FEED_SELECT_NOTITEM;
GLGaeaServer::GetInstance().SENDTOCLIENT ( m_dwClientID, (NET_MSG_GENERIC*) &NetMsgFB );
return TRUE;
}
// Note : ·¹º§ Á¶°Ç È®ÀÎ
//
if ( !SIMPLE_CHECK_ITEM( pInvenItem->sItemCustom.sNativeID ) )
{
NetMsgFB.emFB = EMKILL_FEED_SELECT_REQUIRE;
GLGaeaServer::GetInstance().SENDTOCLIENT ( m_dwClientID, (NET_MSG_GENERIC*) &NetMsgFB );
return TRUE;
}
if ( pNetMsg->cIndex < 0 || pNetMsg->cIndex > 6 )
{
NetMsgFB.emFB = EMKILL_FEED_SELECT_FAIL;
GLGaeaServer::GetInstance().SENDTOCLIENT ( m_dwClientID, (NET_MSG_GENERIC*) &NetMsgFB );
return TRUE;
}
if ( DoDrugInvenItem( pInvenItem->wPosX, pInvenItem->wPosY ) )
{
m_nKILLFEEDSELECTOR = pNetMsg->cIndex;
NetMsgFB.emFB = EMKILL_FEED_SELECT_OK;
GLGaeaServer::GetInstance().SENDTOCLIENT ( m_dwClientID, (NET_MSG_GENERIC*) &NetMsgFB );
}
else
{
NetMsgFB.emFB = EMKILL_FEED_SELECT_NOITEM;
GLGaeaServer::GetInstance().SENDTOCLIENT ( m_dwClientID, (NET_MSG_GENERIC*) &NetMsgFB );
return TRUE;
}
return S_OK;
}
declare this
InnerInterface.hHRESULT MsgReqKillFeedSelect ( NET_MSG_GENERIC* nmg );
add and declare
InnerInterface.cppclass CKillFeedSelectorWindow;
CKillFeedSelectorWindow* m_pKillFeedStyleSelector;
find ResetControl() add this
InnerInterfaceSimple.cppm_pKillFeedStyleSelector = NULL;
add this
InnerInterfaceGuid.h{
m_pKillFeedStyleSelector = new CKillFeedSelectorWindow (&GLGaeaClient::GetInstance(), this );
m_pKillFeedStyleSelector->Create ( STYLE_KILL_FEED_WINDOW, "BASIC_WINDOW", UI_FLAG_XSIZE | UI_FLAG_YSIZE );
m_pKillFeedStyleSelector->CreateBaseWindowBlack( "STYLE_KILL_FEED_WINDOW", "Kill Feed Styling" );
m_pKillFeedStyleSelector->CreateSubControl ();
m_pKillFeedStyleSelector->SetAlignFlag ( UI_FLAG_CENTER_Y | UI_FLAG_CENTER_X );
RegisterControl ( m_pKillFeedStyleSelector);
ShowGroupFocus ( STYLE_KILL_FEED_WINDOW );
HideGroup ( STYLE_KILL_FEED_WINDOW );
}
add this
GLCharData.hSTYLE_KILL_FEED_WINDOW,
add new member on SCHARDATA()
//KILL FEED
int m_nKILLFEEDSELECTOR;
SCHARDATA ()
: m_nKILLFEEDSELECTOR(0)
, m_dwUserID(0) // ->>> find this
Change GetNativeID() to sNativeID
Also add Method for Opening kill feed window on GLCharactorReq.cpp.
like this
Refer to this Click meelse if ( pItem->sBasicOp.emItemType==ITEM_PET_SKILL ) // <---- find this
{
GLGaeaClient::GetInstance().GetPetClient()->ReqLearnSkill ( wPosX, wPosY );
}
else if ( pItem->sBasicOp.emItemType == ITEM_KILL_FEED_SELECTOR ) // KILL FEED
{
ReqKillFeedWindowOpen(wPosX, wPosY);
}
CLIENT UPDATE
Comment.ini
find [ITEMTYPE]
ADD this
Check Attached for UI WIndow.
KillFeedSelectorWindow.rar ( contains cpp & h )
I'll be Updating this thread for GUI. ( xml )
Merry Christmas and Happy New Year!
CREDITS TO
You must be registered to see links
Credits Used Textures from Thai Server I don't know who's.
Attachments
You must be registered for see attachments list
Last edited: