• Unfortunately, we have experienced significant hard drive damage that requires urgent maintenance and rebuilding. The forum will be a state of read only until we install our new drives and rebuild all the configurations needed. Please follow our Facebook page for updates, we will be back up shortly! (The forum could go offline at any given time due to the nature of the failed drives whilst awaiting the upgrades.) When you see an Incapsula error, you know we are in the process of migration.

[SHARE] SIMPLE KILL FEED STYLING [SOURCE CODE]

Joined
May 2, 2012
Messages
475
Reaction score
244
i have updated the .rar file as of 3:22AM GMT +8
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++
Reference :

s_NetGlobal.h
add this

// 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
PKRankData.h
find SPK_HISTORY
add this as new member of the struct

BYTE cKF_KILLER;
find SPK_HISTORY()
add this

, cKF_KILLER ( 0 )
it will look like this
spk_history - [SHARE] SIMPLE KILL FEED STYLING [SOURCE CODE] - RaGEZONE Forums


GLContrlPcMsg.h
add this

// 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 )
};
at the end of the file just before " }; "
add this

// 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 );
}
};
DxGlobalStage.cpp
add this

// KILL FEED
case NET_MSG_GCTRL_KILLFEED_FB:
just before
{
GLGaeaClient::GetInstance().MsgProcess ( nmg );
}
break;
GLGaeaClient.cpp
// KILL FEED
case NET_MSG_GCTRL_KILLFEED_FB:
just before
{
m_Character.MsgProcess ( nmg );
}
break;
GLCharacterMsg.cpp
void 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;
GLGaeaServerMsg.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;
GLCharMsg.cpp
Kill Feed - [SHARE] SIMPLE KILL FEED STYLING [SOURCE CODE] - RaGEZONE Forums

also add new method in GLCharMsg.cpp

// 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;
}
GLChar.h
declare this

HRESULT MsgReqKillFeedSelect ( NET_MSG_GENERIC* nmg );
InnerInterface.h
add and declare

class CKillFeedSelectorWindow;

CKillFeedSelectorWindow* m_pKillFeedStyleSelector;
InnerInterface.cpp
find ResetControl() add this

m_pKillFeedStyleSelector = NULL;
InnerInterfaceSimple.cpp
add this

{
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 );
}
InnerInterfaceGuid.h
add this

STYLE_KILL_FEED_WINDOW,
GLCharData.h
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
else 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);
}
Refer to this Click me

CLIENT UPDATE
Comment.ini
find [ITEMTYPE]
ADD this
comment.ini - [SHARE] SIMPLE KILL FEED STYLING [SOURCE CODE] - RaGEZONE Forums

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! :)
ejsayaaa - [SHARE] SIMPLE KILL FEED STYLING [SOURCE CODE] - RaGEZONE Forums


CREDITS TO


Credits Used Textures from Thai Server I don't know who's.
 

Attachments

You must be registered for see attachments list
Last edited:
Experienced Elementalist
Joined
Nov 8, 2023
Messages
245
Reaction score
36
1703644234869 - [SHARE] SIMPLE KILL FEED STYLING [SOURCE CODE] - RaGEZONE Forums

Anyone knows where to Declare that ? I think Sir EJ forgot to put it in the guide .
 

Attachments

You must be registered for see attachments list
Experienced Elementalist
Joined
Nov 8, 2023
Messages
245
Reaction score
36
mind share how you solve the error 1 ?
I changed it to this since im using Juver
C++:
    if ( CheckCoolTime( pInvenItem->sItemCustom.sNativeID ) )
    return TRUE;
 
Joined
May 2, 2012
Messages
475
Reaction score
244
Change GetNativeID() to sNativeID

Or you can make one yourself

Declare m_nKILLFEEDSELECTOR; to your GLCharData. Then add for Database saving.

Like i said implement it at your own risk. Don't rely entirely on this thread because i might forgotten to put some ;)

Also add Method for Opening kill feed window on GLCharactorReq.

You know what i mean ;)
 
Back
Top