• 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.

[Guide] Add skill lock and potion lock button (Source code)

Status
Not open for further replies.
Joined
Mar 20, 2012
Messages
760
Reaction score
368
Add skill lock and potion lock button​


BasicPotionTray.cpp

Code:
#include "GLGaeaClient.h"
#include "ItemMove.h"
#include "d3dfont.h"
[COLOR="#FF0000"]#include "GameTextControl.h" <-- add this[/COLOR]

Code:
	pButton->SetControlNameEx ( "狞浇吩飘饭捞 努肺令滚瓢" );
	RegisterControl ( pButton );
// #endif

[COLOR="#FF0000"]	CBasicButton* pLockButton = new CBasicButton;
	pLockButton->CreateSub ( this, "QUICK_POTION_TRAY_LOCK_BUTTON_LOCK_H", UI_FLAG_DEFAULT, QUICK_POTION_TRAY_LOCK_BUTTON_LOCK_H );
	pLockButton->CreateFlip ( "QUICK_POTION_TRAY_LOCK_BUTTON_UNLOCK_H", CBasicButton::KEEP_FLIP );
	pLockButton->SetUseGlobalAction ( TRUE );
	RegisterControl ( pLockButton );

	SetLock(TRUE);[/COLOR]

Code:
void CBasicPotionTray::TranslateUIMessage ( UIGUID ControlID, DWORD dwMsg )
{
	switch ( ControlID )
	{
	[COLOR="#FF0000"]case QUICK_POTION_TRAY_LOCK_BUTTON_LOCK_H:
		{
			if ( CHECK_MOUSE_IN ( dwMsg ) )
			{
				CInnerInterface::GetInstance().SHOW_COMMON_LINEINFO ( ID2GAMEINTEXT("LOCK_POTION_MESSAGE"), NS_UITEXTCOLOR::WHITE );
				if ( CHECK_LB_UP_LIKE ( dwMsg ) )
				{	
					if(!bPotionLock)
					{
						SetLock(TRUE);
					}
					else
					{
						SetLock(FALSE);
					}
				}
			}
		}
		break;[/COLOR]
	case QUICK_POTION_SLOT0:
	case QUICK_POTION_SLOT1:
	case QUICK_POTION_SLOT2:
	case QUICK_POTION_SLOT3:
	case QUICK_POTION_SLOT4:
	case QUICK_POTION_SLOT5:

Code:
				if ( dwMsg & UIMSG_LB_UP )
				{
					const SITEMCUSTOM& sItemCustom = GLGaeaClient::GetInstance().GetCharacter()->GET_HOLD_ITEM ();
					if ( sItemCustom.sNativeID != NATIVEID_NULL () )	//	汲沥
					{
						[COLOR="#FF0000"]if(bPotionLock)
						{
							CInnerInterface::GetInstance().PrintMsgText ( 
										NS_UITEXTCOLOR::NEGATIVE, ID2GAMEINTEXT("LOCK_POTION_MESSAGE_PRESS") );
							return;
						}[/COLOR]
						GLGaeaClient::GetInstance().GetCharacter()->ReqItemQuickSet ( (WORD) nIndex );
					}

Code:
				//	狞 酒捞袍 秦力
				if ( dwMsg & UIMSG_RB_UP )
				{
					[COLOR="#FF0000"]if(bPotionLock)
					{
						CInnerInterface::GetInstance().PrintMsgText ( 
										NS_UITEXTCOLOR::NEGATIVE, ID2GAMEINTEXT("LOCK_POTION_MESSAGE_PRESS") );
						return;
					}[/COLOR]
					GLGaeaClient::GetInstance().GetCharacter()->ReqItemQuickReSet ( (WORD) nIndex );
				}

Code:
	case QUICK_POTION_TRAY_CLOSE_BUTTON:
		{
			if ( CHECK_MOUSE_IN ( dwMsg ) )
			{
			if ( CHECK_LB_UP_LIKE ( dwMsg ) )
			{
				[COLOR="#FF0000"]if(bPotionLock)
				{
					CInnerInterface::GetInstance().PrintMsgText ( 
									NS_UITEXTCOLOR::NEGATIVE, ID2GAMEINTEXT("LOCK_POTION_MESSAGE_PRESS") );
					return;
				}[/COLOR]
				AddMessageEx ( UIMSG_TRAY_CLOSE_LBUP );
			}
			}
		}
		break;
	}
}

Code:
void 	CBasicPotionTray::SetShotcutText ( DWORD nID, CString& strTemp )
{
	m_pSlot[nID]->SetShotcutText(strTemp );	
[COLOR="#FF0000"]}

void	CBasicPotionTray::SetLock(BOOL bLock)
{
	bPotionLock = bLock;[/COLOR]
}


BasicPotionTray.h

Code:
private:
	enum
	{
	QUICK_POTION_SLOT0 = NO_ID + 1,
	QUICK_POTION_SLOT1,
	QUICK_POTION_SLOT2,

	QUICK_POTION_SLOT3,
	QUICK_POTION_SLOT4,
	QUICK_POTION_SLOT5,

[COLOR="#FF0000"]	QUICK_POTION_TRAY_LOCK_BUTTON_LOCK_H,
	QUICK_POTION_TRAY_LOCK_BUTTON_UNLOCK_H,[/COLOR]

	QUICK_POTION_TRAY_CLOSE_BUTTON,
	};

Code:
public:
	int	GetSlotIndex ()					{ return m_nIndex; }
	void	SetSlotIndex ( int nIndex )			{ m_nIndex = nIndex; }
	void 	SetShotcutText ( DWORD nID, CString& strTemp );

[COLOR="#FF0000"]	BOOL	bPotionLock;
	void	SetLock(BOOL bLock);[/COLOR]


BasicSkillTray.cpp

Code:
const	int	CBasicSkillTray::nLBUPSKIP = 1;

CBasicSkillTray::CBasicSkillTray ()
	: m_nLBUPSKIP(0)
	, m_pSkillInfo(NULL)
	[COLOR="#FF0000"], bSkillLock(false)[/COLOR]
{
	memset ( m_pSlotEx, 0, sizeof ( m_pSlotEx ) );
}

CBasicSkillTray::~CBasicSkillTray ()
{
}

Code:
				if ( dwMsg & UIMSG_LB_UP )
				{	
					SNATIVEID sNativeID = pSkillWindowToTray->GetSkill ();

					//	胶懦 殿废
					if ( sNativeID != NATIVEID_NULL () )
					{
						[COLOR="#FF0000"]if(bSkillLock)
						{
							CInnerInterface::GetInstance().PrintMsgText ( 
								NS_UITEXTCOLOR::NEGATIVE, ID2GAMEINTEXT("LOCK_SKILL_MESSAGE_PRESS") );
							return;
						}[/COLOR]

						GLGaeaClient::GetInstance().GetCharacter()->ReqSkillQuickSet ( sNativeID, nG_Index );
						pSkillWindowToTray->ResetSkill ();
						m_nLBUPSKIP = 0;
					}


Code:
				//	胶懦 秦力
				if ( dwMsg & UIMSG_RB_UP )
				{	
					[COLOR="#FF0000"]if(bSkillLock)
					{
						CInnerInterface::GetInstance().PrintMsgText ( 
								NS_UITEXTCOLOR::NEGATIVE, ID2GAMEINTEXT("LOCK_SKILL_MESSAGE_PRESS") );
						return;
					}[/COLOR]
					GLGaeaClient::GetInstance().GetCharacter()->ReqSkillQuickReSet ( nG_Index );
				}
			}
		}
		break;


BasicSkillTray.h

Code:
class CBasicSkillTray : public CUIGroup
{
private:
static	const	int	nLBUPSKIP;
[COLOR="#FF0000"]bool bSkillLock;[/COLOR]

Code:
public:
	void	CreateSubControl( INT nTabIndex );

[COLOR="#FF0000"]	void	SetLockOn()			{bSkillLock = true;}
	void	SetLockOff()			{bSkillLock = false;}[/COLOR]


SkillTrayTab.cpp

Code:
#include "BasicTextButton.h"
#include "BasicLevelDisplay.h"

[COLOR="#FF0000"]#include "UITextControl.h"[/COLOR]

INT CSkillTrayTab::NEXT_INDEX[] = {1, 2, 0};

CSkillTrayTab::CSkillTrayTab(void)
	: m_nTabIndex(0)
	, m_nCount(0)
	[COLOR="#FF0000"], m_bSkillLock(false)[/COLOR]
{
	memset( m_pSkillTray, 0, sizeof( CBasicSkillTray* ) * MAX_TAB_INDEX );
	memset( m_pTextButton, 0, sizeof( CBasicTextButton* ) * MAX_TAB_INDEX );
}

Code:
// #ifndef CH_PARAM // 吝惫 牢磐其捞胶 函版
	CBasicButton * pButton = new CBasicButton;
	pButton->CreateSub( this, "QUICK_SKILL_TRAY_CLOSE_BUTTON", UI_FLAG_DEFAULT, QUICK_SKILL_TRAY_CLOSE_BUTTON );
	pButton->CreateFlip( "QUICK_SKILL_TRAY_CLOSE_BUTTON_F", CBasicButton::MOUSEIN_FLIP );
	pButton->SetUseGlobalAction ( TRUE );	
	RegisterControl( pButton );
// #endif

[COLOR="#FF0000"]	CBasicButton * pLockButton = new CBasicButton;
	pLockButton->CreateSub( this, "QUICK_SKILL_TRAY_LOCK_BUTTON_OPEN_LOCK", UI_FLAG_DEFAULT, QUICK_SKILL_TRAY_LOCK_BUTTON_OPEN_LOCK );
	pLockButton->CreateFlip( "QUICK_SKILL_TRAY_LOCK_BUTTON_OPEN_UNLOCK", CBasicButton::KEEP_FLIP );
	pLockButton->SetFlip( TRUE );
	pLockButton->SetUseGlobalAction ( TRUE );	
	RegisterControl( pLockButton );

	SetLock(TRUE);
[/COLOR]
}

Code:
void CSkillTrayTab::TranslateUIMessage ( UIGUID ControlID, DWORD dwMsg )
{
	switch ( ControlID )
	{
	case QUICK_SKILL_TRAY_CLOSE_BUTTON:
		{
			if ( CHECK_MOUSE_IN ( dwMsg ) )
			{
				if ( CHECK_LB_UP_LIKE ( dwMsg ) )
				{
					[COLOR="#FF0000"]if(m_bSkillLock)
					{
						CInnerInterface::GetInstance().PrintMsgText ( 
										NS_UITEXTCOLOR::NEGATIVE, ID2GAMEINTEXT("LOCK_SKILL_MESSAGE_PRESS") );
						return;
					}[/COLOR]
					CInnerInterface::GetInstance().HideGroup ( GetWndID () );
					CInnerInterface::GetInstance().ShowGroupBottom ( QUICK_SKILL_TRAY_OPEN_BUTTON, true );
				}
			}
		}
		break;
	[COLOR="#FF0000"]case QUICK_SKILL_TRAY_LOCK_BUTTON_OPEN_LOCK:
		{
			if ( CHECK_MOUSE_IN ( dwMsg ) )
			{
				CInnerInterface::GetInstance().SHOW_COMMON_LINEINFO ( ID2GAMEINTEXT("LOCK_SKILL_MESSAGE"), NS_UITEXTCOLOR::WHITE );
				if ( CHECK_LB_UP_LIKE ( dwMsg ) )
				{	
					if(!m_bSkillLock)
					{
						SetLock(true);
					}
					else
					{
						SetLock(false);
					}
				}
			}
		}
		break;[/COLOR]

Code:
void CSkillTrayTab::SetShotcutText ( DWORD nID, CString& strTemp )
{
	m_pSkillTray[0]->SetShotcutText( nID, strTemp );
	m_pSkillTray[1]->SetShotcutText( nID, strTemp );
	m_pSkillTray[2]->SetShotcutText( nID, strTemp );
[COLOR="#FF0000"]}
void CSkillTrayTab::SetLock(bool bLock)
{
	m_bSkillLock = bLock;
	
	if(bLock)
	{
		m_pSkillTray[0]->SetLockOn();
		m_pSkillTray[1]->SetLockOn();
		m_pSkillTray[2]->SetLockOn();
	}
	else
	{
		m_pSkillTray[0]->SetLockOff();
		m_pSkillTray[1]->SetLockOff();
		m_pSkillTray[2]->SetLockOff();
	}[/COLOR]
	
}


SkillTrayTab.h

Code:
public:
	enum
	{
		BASIC_QUICK_SKILL_TRAY_F2 = NO_ID + 1,
		BASIC_QUICK_SKILL_TRAY_F3,
		BASIC_QUICK_SKILL_TRAY_F4,

		BASIC_TEXT_BUTTON_F2,
		BASIC_TEXT_BUTTON_F3,
		BASIC_TEXT_BUTTON_F4,

		BASIC_LEVEL_DISPLAY,

		[COLOR="#FF0000"]QUICK_SKILL_TRAY_LOCK_BUTTON_OPEN_UNLOCK,
		QUICK_SKILL_TRAY_LOCK_BUTTON_OPEN_LOCK,[/COLOR]

		QUICK_SKILL_TRAY_CLOSE_BUTTON
	};

Code:
public:
	void CreateSubControl();

	void SetTabIndex( INT nIndex )			{ GASSERT( 0 <= nIndex && nIndex <= MAX_TAB_INDEX ); m_nTabIndex = nIndex; }
	INT GetTabIndex()						{ return m_nTabIndex; }

	[COLOR="#FF0000"]bool m_bSkillLock;[/COLOR]

Code:
public:
	virtual void Update( int x, int y, BYTE LB, BYTE MB, BYTE RB, int nScroll, float fElapsedTime, BOOL bFirstControl );
	virtual	void TranslateUIMessage( UIGUID ControlID, DWORD dwMsg );
	virtual	void SetVisibleSingle( BOOL bVisible );
	void	SetShotcutText ( DWORD nID, CString& strTemp );

	[COLOR="#FF0000"]void	SetLock(bool bLock);[/COLOR]


For xml :

gameintext.xml
Code:
<WORD Ver="1" Id="LOCK_SKILL_MESSAGE">
<VALUE Lang="pe" Index="0">Unlock/Lock Skill Tray</VALUE>
</WORD>
<WORD Ver="1" Id="LOCK_POTION_MESSAGE">
<VALUE Lang="pe" Index="0">Unlock/Lock Potion Tray</VALUE>
</WORD>
<WORD Ver="1" Id="LOCK_SKILL_MESSAGE_PRESS">
<VALUE Lang="pe" Index="0">Skill Tray is Lock.</VALUE>
</WORD>
<WORD Ver="1" Id="LOCK_POTION_MESSAGE_PRESS">
<VALUE Lang="pe" Index="0">Potion Tray is Lock.</VALUE>
</WORD>

uiinnercfg01.xml
Code:
<CONTROL Local="Common" Id="QUICK_POTION_TRAY_LOCK_BUTTON_LOCK_H">
    <WINDOW_POS X="226" Y="0" W="20" H="41" />
    <TEXTURE SizeX="128" SizeY="128">GUI_skilltray_lock.dds</TEXTURE>
    <TEXTURE_POS X="0" Y="40" W="20" H="41" />
  </CONTROL>

<CONTROL Local="Common" Id="QUICK_POTION_TRAY_LOCK_BUTTON_UNLOCK_H">
    <WINDOW_POS X="0" Y="0" W="20" H="41" />
    <TEXTURE SizeX="128" SizeY="128">GUI_skilltray_lock.dds</TEXTURE>
    <TEXTURE_POS X="40" Y="40" W="20" H="41" />
  </CONTROL>

  <CONTROL Local="Common" Id="QUICK_SKILL_TRAY_LOCK_BUTTON_OPEN_LOCK">
    <WINDOW_POS X="0" Y="398" W="41" H="20" />
    <TEXTURE SizeX="128" SizeY="128">GUI_skilltray_lock.dds</TEXTURE>
    <TEXTURE_POS X="0" Y="0" W="41" H="20" />
  </CONTROL>

  <CONTROL Local="Common" Id="QUICK_SKILL_TRAY_LOCK_BUTTON_OPEN_UNLOCK">
    <WINDOW_POS X="0" Y="0" W="41" H="20" />
    <TEXTURE SizeX="128" SizeY="128">GUI_skilltray_lock.dds</TEXTURE>
    <TEXTURE_POS X="0" Y="20" W="41" H="20" />
  </CONTROL>

GUI_skilltray_lock.dds :


GOOD LUCK :)

Credits :
Marckie - source code
 
Last edited:
Newbie Spellweaver
Joined
Mar 15, 2007
Messages
84
Reaction score
41
-----------------------------------------------
ERROR REPORT
-----------------------------------------------
Execution time : 2013-08-08 18:03:57
[2013-08-08 18:04:24] [INTERFACE] QUICK_SKILL_TRAY_LOCK_BUTTON_OPEN_LOCK not found
[2013-08-08 18:04:24] [INTERFACE] QUICK_SKILL_TRAY_LOCK_BUTTON_OPEN_UNLOCK not found
 
Joined
Mar 20, 2012
Messages
760
Reaction score
368
-----------------------------------------------
ERROR REPORT
-----------------------------------------------
Execution time : 2013-08-08 18:03:57
[2013-08-08 18:04:24] [INTERFACE] QUICK_SKILL_TRAY_LOCK_BUTTON_OPEN_LOCK not found
[2013-08-08 18:04:24] [INTERFACE] QUICK_SKILL_TRAY_LOCK_BUTTON_OPEN_UNLOCK not found

1st post updated.
 
zZzZzZz
Loyal Member
Joined
Jun 30, 2013
Messages
1,035
Reaction score
92
use winmerge bro to see the different , dont deffend on others ! :)
 
Status
Not open for further replies.
Back
Top