Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

Assassin Class on Juver

Newbie Spellweaver
Joined
Aug 17, 2017
Messages
49
Reaction score
1
Good Day to all, does anyone know how to enable assassin class on juver source?

I'm currently having trouble using assassin class on my emulator causing some bugtrap errors.
 
Newbie Spellweaver
Joined
Aug 17, 2017
Messages
49
Reaction score
1
Still having the same problem sir aizen.

Here is the bugtrap.
 
Upvote 0
Master Summoner
Joined
Feb 6, 2019
Messages
575
Reaction score
159
My bad . check the inventorypagewear.cpp
open7512 - Assassin Class on Juver - RaGEZONE Forums
Still having the same problem sir aizen.

Here is the bugtrap.
 
Upvote 0
Newbie Spellweaver
Joined
Aug 17, 2017
Messages
49
Reaction score
1
Still no luck, I can't find what the problem. I was using sir empirez source.
 
Upvote 0
Newbie Spellweaver
Joined
Aug 17, 2017
Messages
49
Reaction score
1
can i see your inventorypagewear.cpp ?

#include "StdAfx.h"
#include "InventoryPageWear.h"
#include "ItemImage.h"
#include "GLGaeaClient.h"
#include "GLItemMan.h"
#include "InnerInterface.h"
#include "ItemMove.h"
#include "BasicButton.h"
#include "GameTextControl.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

const int CInventoryPageWear::nOUTOFRANGE = -1;

CInventoryPageWear::CInventoryPageWear ()
: m_pMouseOver ( NULL )

/*equipment lock, Juver, 2018/01/16 */
, m_pButtonLock(NULL)
, m_pButtonUnlock(NULL)
{
}

CInventoryPageWear::~CInventoryPageWear ()
{
}

void CInventoryPageWear::CreateSubControl ( int nClassType )
{
CString strInvenWearBack[GLCI_NUM_8CLASS] =
{
"INVENTORY_PAGE_WEAR_FIGHTER_M",
"INVENTORY_PAGE_WEAR_ARMS_M",
"INVENTORY_PAGE_WEAR_ARCHER_W",
"INVENTORY_PAGE_WEAR_SPIRIT_W",
"INVENTORY_PAGE_WEAR_EXTREME_M",
"INVENTORY_PAGE_WEAR_EXTREME_W",
"INVENTORY_PAGE_WEAR_FIGHTER_W",
"INVENTORY_PAGE_WEAR_ARMS_W",
"INVENTORY_PAGE_WEAR_ARCHER_M",
"INVENTORY_PAGE_WEAR_SPIRIT_M",
"INVENTORY_PAGE_WEAR_SCIENTIST_M",
"INVENTORY_PAGE_WEAR_SCIENTIST_W",
"INVENTORY_PAGE_WEAR_ASSASSIN_M",
"INVENTORY_PAGE_WEAR_ASSASSIN_W",
"INVENTORY_PAGE_WEAR_TRICKER_M",
"INVENTORY_PAGE_WEAR_TRICKER_W",
};

CreateControl ( strInvenWearBack[nClassType].GetString () );

{
CString strInvenWearItem[ITEM_IMAGE_SIZE] =
{
"CHARACTER_WINDOW_WEAR_SLOT_HEAD", //ËÑÇ
"CHARACTER_WINDOW_WEAR_SLOT_NECK", //ÊÃéÍÂ
"CHARACTER_WINDOW_WEAR_SLOT_UPPER", //àÊ×éÍ
"CHARACTER_WINDOW_WEAR_SLOT_LEFT_WEAPON", //Âѹ ¡ÃÐÊع
"CHARACTER_WINDOW_WEAR_SLOT_WRIST", //µèÒ§ËÙ
"CHARACTER_WINDOW_WEAR_SLOT_HAND", //¶Ø§Á×Í
"CHARACTER_WINDOW_WEAR_SLOT_LOWER", //¡Ò§à¡§
"CHARACTER_WINDOW_WEAR_SLOT_LEFT_EARRING", //áËǹ1
"CHARACTER_WINDOW_WEAR_SLOT_RIGHT_WEAPON", //ÍÒÇظ
"CHARACTER_WINDOW_WEAR_SLOT_FOOT", //Ãͧà·éÒ
"CHARACTER_WINDOW_WEAR_SLOT_RIGHT_EARRING",//áËǹ2
"CHARACTER_WINDOW_WEAR_SLOT_VEHICLE", //ö
};

CString strInvenWearOver[ITEM_IMAGE_SIZE] =
{
"CHARACTER_WINDOW_WEAR_SLOT_HEAD_OVER", //ËÑÇ
"CHARACTER_WINDOW_WEAR_SLOT_NECK_OVER", //ÊÃéÍÂ
"CHARACTER_WINDOW_WEAR_SLOT_UPPER_OVER", //àÊ×éÍ
"CHARACTER_WINDOW_WEAR_SLOT_LEFT_WEAPON_OVER", //Âѹ ¡ÃÐÊع
"CHARACTER_WINDOW_WEAR_SLOT_WRIST_OVER", //µèÒ§ËÙ
"CHARACTER_WINDOW_WEAR_SLOT_HAND_OVER", //¶Ø§Á×Í
"CHARACTER_WINDOW_WEAR_SLOT_LOWER_OVER", //¡Ò§à¡§
"CHARACTER_WINDOW_WEAR_SLOT_LEFT_EARRING_OVER", //áËǹ1
"CHARACTER_WINDOW_WEAR_SLOT_RIGHT_WEAPON_OVER", //ÍÒÇظ
"CHARACTER_WINDOW_WEAR_SLOT_FOOT_OVER", //Ãͧà·éÒ
"CHARACTER_WINDOW_WEAR_SLOT_RIGHT_EARRING_OVER",//áËǹ2
"CHARACTER_WINDOW_WEAR_SLOT_VEHICLE_OVER", //ö
};

for ( int i = 0; i < ITEM_IMAGE_SIZE; i++ )
{
m_pItemImage = CreateItemImage ( strInvenWearItem.GetString (), ITEM_IMAGE0 + i );
m_pSlotDisplay = CreateControl ( strInvenWearOver.GetString () );
m_pSlotDisplay->SetVisibleSingle ( FALSE );
}
}

m_pMouseOver = CreateControl ( "ITEM_MOUSE_OVER" );
// m_pSlotDisplay = CreateControl ( "TRADE_INVENTORY_OVER_0" );
// m_pSlotBlockDisplay = CreateControl ( "TRADE_OVER_0" );


/*equipment lock, Juver, 2018/01/16 */
m_pButtonLock = new CBasicButton;
m_pButtonLock->CreateSub ( this, "INVEN_BUTTON_LOCK", UI_FLAG_DEFAULT, BUTTON_KEY_LOCK );
m_pButtonLock->CreateFlip ( "INVEN_BUTTON_LOCK_F", CBasicButton::CLICK_FLIP );
m_pButtonLock->SetFlip(false);
m_pButtonLock->SetVisibleSingle ( FALSE );
RegisterControl ( m_pButtonLock );

m_pButtonUnlock = new CBasicButton;
m_pButtonUnlock->CreateSub ( this, "INVEN_BUTTON_UNLOCK", UI_FLAG_DEFAULT, BUTTON_KEY_UNLOCK );
m_pButtonUnlock->CreateFlip ( "INVEN_BUTTON_UNLOCK_F", CBasicButton::CLICK_FLIP );
m_pButtonUnlock->SetFlip(false);
m_pButtonUnlock->SetVisibleSingle ( FALSE );
RegisterControl ( m_pButtonUnlock );
}

CUIControl* CInventoryPageWear::CreateControl ( const char* szControl )
{
CUIControl* pControl = new CUIControl;
pControl->CreateSub ( this, szControl );
RegisterControl ( pControl );

return pControl;
}

CItemImage* CInventoryPageWear::CreateItemImage ( const char* szControl, UIGUID ControlID )
{
CItemImage* pItemImage = new CItemImage;
pItemImage->CreateSub ( this, szControl, UI_FLAG_DEFAULT, ControlID );
pItemImage->CreateSubControl ();
RegisterControl ( pItemImage );

return pItemImage;
}

EMSLOT CInventoryPageWear::IMAGE2EMSLOT ( int nIndex )
{
switch ( nIndex )
{
case ITEM_IMAGE0: return SLOT_HEADGEAR; // ¸Ó¸®
case ITEM_IMAGE1: return SLOT_NECK; // ¸ñ°ÉÀÌ
case ITEM_IMAGE2: return SLOT_UPPER; // »óÀÇ
case ITEM_IMAGE3: return SLOT_LHAND; // ¿Þ¼Õµµ±¸
case ITEM_IMAGE4: return SLOT_WRIST; // ¼Õ¸ñ
case ITEM_IMAGE5: return SLOT_HAND; // Àå°©
case ITEM_IMAGE6: return SLOT_LOWER; // ÇÏÀÇ
case ITEM_IMAGE7: return SLOT_LFINGER; // ¿Þ¼Õ ¼Õ°¡¶ô
case ITEM_IMAGE8: return SLOT_RHAND; // ¿À¸¥¼Õµµ±¸
case ITEM_IMAGE9: return SLOT_FOOT; // ½Å¹ß
case ITEM_IMAGE10: return SLOT_RFINGER; // ¿À¸¥¼Õ ¼Õ°¡¶ô
case ITEM_IMAGE11: return SLOT_VEHICLE;
}

GASSERT ( 0 && "¹üÀ§¸¦ ¹þ¾î³³´Ï´Ù." );
return SLOT_TSIZE;
}

void CInventoryPageWear::Update ( int x, int y, BYTE LB, BYTE MB, BYTE RB, int nScroll, float fElapsedTime, BOOL bFirstControl )
{
SetItemIndex ( nOUTOFRANGE );
if ( m_pMouseOver ) m_pMouseOver->SetVisibleSingle ( FALSE );
// if ( m_pSlotDisplay ) m_pSlotDisplay->SetVisibleSingle ( FALSE );
// if ( m_pSlotBlockDisplay ) m_pSlotBlockDisplay->SetVisibleSingle ( FALSE );

// ½º³À, ½ºÅ³ À̹ÌÁö ºÙÀ̱â
CItemMove* pItemMove = CInnerInterface::GetInstance().GetItemMove ();
SNATIVEID sHOLD_ITEM_ID(false);
// bool bFOUND_TOWEAR = false;
if ( pItemMove ) sHOLD_ITEM_ID = pItemMove->GetItem();

for ( int i = 0; i < SLOT_NSIZE_2; i++ )
{
const SITEMCUSTOM& sItemCustomOld = GetItem ( i );

EMSLOT emSlot = IMAGE2EMSLOT ( i + ITEM_IMAGE0 );
SITEMCUSTOM sItemCustom = GLGaeaClient::GetInstance().GetCharacter()->GET_SLOT_ITEM ( emSlot );

// NOTE
// ÀÌÀü ÇÁ·¹ÀÓ°ú ºñ±³ÇÏ¿©,
// µ¥ÀÌŸ°¡ ´Þ¶óÁø °æ¿ì¿¡¸¸,
// ·Îµå/¾ð·Îµå ÀÛ¾÷À» ÁøÇàÇÑ´Ù.
if ( sItemCustom != sItemCustomOld )
{
if ( sItemCustom.sNativeID != NATIVEID_NULL () )
{
LoadItem ( i, sItemCustom );
}
else
{
UnLoadItem ( i );
}
}

m_pSlotDisplay->SetVisibleSingle ( FALSE );

// NOTE
// ÀåÂøµÉ À§Ä¡ Ç¥½Ã
if ( sHOLD_ITEM_ID != NATIVEID_NULL () /*&& !bFOUND_TOWEAR*/ )
{
if ( GLGaeaClient::GetInstance().GetCharacter()->CHECKSLOT_ITEM ( sHOLD_ITEM_ID, emSlot ) )
{
const UIRECT& rcImagePos = m_pItemImage->GetGlobalPos ();
D3DXVECTOR2 vPos ( rcImagePos.left, rcImagePos.top );

if ( GLGaeaClient::GetInstance().GetCharacter()->ACCEPT_ITEM ( sHOLD_ITEM_ID ) )
{
m_pSlotDisplay->SetVisibleSingle ( TRUE );
}

// bFOUND_TOWEAR = true;
}
}
}

/*puton lock, Juver, 2018/01/13 */
BOOL bEnabled = GLGaeaClient::GetInstance().GetCharacter()->m_bEnableEquipmentLock;
BOOL bLocked = GLGaeaClient::GetInstance().GetCharacter()->m_bEquipmentLockStatus;
if ( m_pButtonLock ) m_pButtonLock->SetVisibleSingle( bEnabled && bLocked );
if ( m_pButtonUnlock ) m_pButtonUnlock->SetVisibleSingle( bEnabled && !bLocked );

CUIGroup::Update ( x, y, LB, MB, RB, nScroll, fElapsedTime, bFirstControl );
}

void CInventoryPageWear::TranslateUIMessage ( UIGUID ControlID, DWORD dwMsg )
{
switch ( ControlID )
{
case ITEM_IMAGE0:
case ITEM_IMAGE1:
case ITEM_IMAGE2:
case ITEM_IMAGE3:
case ITEM_IMAGE4:
case ITEM_IMAGE5:
case ITEM_IMAGE6:
case ITEM_IMAGE7:
case ITEM_IMAGE8:
case ITEM_IMAGE9:
case ITEM_IMAGE10:
case ITEM_IMAGE11:
{
if ( CHECK_MOUSE_IN ( dwMsg ) )
{
int nIndex = ControlID - ITEM_IMAGE0;
SetItemIndex ( nIndex );

if ( !CInnerInterface::GetInstance().IsFirstItemSlot () ) return ;

// ½º³À, ½ºÅ³ À̹ÌÁö ºÙÀ̱â
CItemMove* pItemMove = CInnerInterface::GetInstance().GetItemMove ();
if ( !pItemMove )
{
GASSERT ( 0 && "CItemMove°¡ ³ÎÀÔ´Ï´Ù." );
return ;
}

if ( pItemMove->GetItem () != NATIVEID_NULL () )
{
const UIRECT& rcSlotPos = m_pItemImage[nIndex]->GetGlobalPos ();
pItemMove->SetGlobalPos ( rcSlotPos );

AddMessageEx ( UIMSG_MOUSEIN_WEARSLOT | UIMSG_TOTOPPARENT );
}

// ¸¶¿ì½º Ç¥½Ã Å׵θ®
if ( pItemMove->GetItem () == NATIVEID_NULL () && m_pItemImage[m_nIndex]->GetItem () != NATIVEID_NULL () )
{
const UIRECT& rcImagePos = m_pItemImage[nIndex]->GetGlobalPos ();
m_pMouseOver->SetGlobalPos ( rcImagePos );
m_pMouseOver->SetVisibleSingle ( TRUE );
}
}
}
break;

/*puton lock, Juver, 2018/01/13 */
case BUTTON_KEY_LOCK:
case BUTTON_KEY_UNLOCK:
{
if( CHECK_MOUSEIN_LBUPLIKE( dwMsg ) )
CInnerInterface::GetInstance().OpenEquipmentLockInput();
}break;
}
}

EMSLOT CInventoryPageWear::GetItemSlot ()
{
return IMAGE2EMSLOT ( GetItemIndex () + ITEM_IMAGE0 );
}

void CInventoryPageWear::LoadItem ( int nIndex, SITEMCUSTOM& ref_sItemCustom )
{
m_ItemCustomArray[nIndex] = ref_sItemCustom;

SITEM* pItemData = GLItemMan::GetInstance().GetItem ( ref_sItemCustom.sNativeID );
m_pItemImage[nIndex]->SetItem ( pItemData->sBasicOp.sICONID, pItemData->GetInventoryFile(), pItemData->sBasicOp.sNativeID );
}

SITEMCUSTOM& CInventoryPageWear::GetItem ( int nIndex )
{
return m_ItemCustomArray[nIndex];
}

void CInventoryPageWear::UnLoadItem ( int nIndex )
{
m_ItemCustomArray[nIndex].sNativeID = NATIVEID_NULL ();
m_pItemImage[nIndex]->ResetItem ();
}

here's my inventorypagewear.cpp sir aizen
 
Upvote 0
Master Summoner
Joined
Feb 6, 2019
Messages
575
Reaction score
159
are you using classic interface ?
if you are try to merge this one



#include "StdAfx.h"
#include "InventoryPageWear.h"
#include "ItemImage.h"
#include "GLGaeaClient.h"
#include "GLItemMan.h"
#include "InnerInterface.h"
#include "ItemMove.h"
#include "BasicButton.h"
#include "GameTextControl.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

const int CInventoryPageWear::nOUTOFRANGE = -1;

CInventoryPageWear::CInventoryPageWear ()
: m_pMouseOver ( NULL )

/*equipment lock, Juver, 2018/01/16 */
, m_pButtonLock(NULL)
, m_pButtonUnlock(NULL)
{
}

CInventoryPageWear::~CInventoryPageWear ()
{
}

void CInventoryPageWear::CreateSubControl ( int nClassType )
{
CString strInvenWearBack[GLCI_NUM_8CLASS] =
{
"INVENTORY_PAGE_WEAR_FIGHTER_M",
"INVENTORY_PAGE_WEAR_ARMS_M",
"INVENTORY_PAGE_WEAR_ARCHER_W",
"INVENTORY_PAGE_WEAR_SPIRIT_W",
"INVENTORY_PAGE_WEAR_EXTREME_M",
"INVENTORY_PAGE_WEAR_EXTREME_W",
"INVENTORY_PAGE_WEAR_FIGHTER_W",
"INVENTORY_PAGE_WEAR_ARMS_W",
"INVENTORY_PAGE_WEAR_ARCHER_M",
"INVENTORY_PAGE_WEAR_SPIRIT_M",
"INVENTORY_PAGE_WEAR_SCIENTIST_M",
"INVENTORY_PAGE_WEAR_SCIENTIST_W",
"INVENTORY_PAGE_WEAR_ASSASSIN_M",
"INVENTORY_PAGE_WEAR_ASSASSIN_W",
"INVENTORY_PAGE_WEAR_TRICKER_M",
"INVENTORY_PAGE_WEAR_TRICKER_W",
};

CreateControl ( strInvenWearBack[nClassType].GetString () );

{
CString strInvenWearItem[ITEM_IMAGE_SIZE] =
{
"CHARACTER_WINDOW_WEAR_SLOT_HEAD", //ËÑÇ
"CHARACTER_WINDOW_WEAR_SLOT_NECK", //ÊÃéÍÂ
"CHARACTER_WINDOW_WEAR_SLOT_UPPER", //àÊ×éÍ
"CHARACTER_WINDOW_WEAR_SLOT_LEFT_WEAPON", //Âѹ ¡ÃÐÊع
"CHARACTER_WINDOW_WEAR_SLOT_WRIST", //µèÒ§ËÙ
"CHARACTER_WINDOW_WEAR_SLOT_HAND", //¶Ø§Á×Í
"CHARACTER_WINDOW_WEAR_SLOT_LOWER", //¡Ò§à¡§
"CHARACTER_WINDOW_WEAR_SLOT_LEFT_EARRING", //áËǹ1
"CHARACTER_WINDOW_WEAR_SLOT_RIGHT_WEAPON", //ÍÒÇظ
"CHARACTER_WINDOW_WEAR_SLOT_FOOT", //Ãͧà·éÒ
"CHARACTER_WINDOW_WEAR_SLOT_RIGHT_EARRING",//áËǹ2
"CHARACTER_WINDOW_WEAR_SLOT_VEHICLE", //ö
};

CString strInvenWearOver[ITEM_IMAGE_SIZE] =
{
"CHARACTER_WINDOW_WEAR_SLOT_HEAD_OVER", //ËÑÇ
"CHARACTER_WINDOW_WEAR_SLOT_NECK_OVER", //ÊÃéÍÂ
"CHARACTER_WINDOW_WEAR_SLOT_UPPER_OVER", //àÊ×éÍ
"CHARACTER_WINDOW_WEAR_SLOT_LEFT_WEAPON_OVER", //Âѹ ¡ÃÐÊع
"CHARACTER_WINDOW_WEAR_SLOT_WRIST_OVER", //µèÒ§ËÙ
"CHARACTER_WINDOW_WEAR_SLOT_HAND_OVER", //¶Ø§Á×Í
"CHARACTER_WINDOW_WEAR_SLOT_LOWER_OVER", //¡Ò§à¡§
"CHARACTER_WINDOW_WEAR_SLOT_LEFT_EARRING_OVER", //áËǹ1
"CHARACTER_WINDOW_WEAR_SLOT_RIGHT_WEAPON_OVER", //ÍÒÇظ
"CHARACTER_WINDOW_WEAR_SLOT_FOOT_OVER", //Ãͧà·éÒ
"CHARACTER_WINDOW_WEAR_SLOT_RIGHT_EARRING_OVER",//áËǹ2
"CHARACTER_WINDOW_WEAR_SLOT_VEHICLE_OVER", //ö
};

for ( int i = 0; i < ITEM_IMAGE_SIZE; i++ )
{
m_pItemImage = CreateItemImage ( strInvenWearItem.GetString (), ITEM_IMAGE0 + i );
m_pSlotDisplay = CreateControl ( strInvenWearOver.GetString () );
m_pSlotDisplay->SetVisibleSingle ( FALSE );
}
}

m_pMouseOver = CreateControl ( "ITEM_MOUSE_OVER" );
// m_pSlotDisplay = CreateControl ( "TRADE_INVENTORY_OVER_0" );
// m_pSlotBlockDisplay = CreateControl ( "TRADE_OVER_0" );


/*equipment lock, Juver, 2018/01/16 */
m_pButtonLock = new CBasicButton;
m_pButtonLock->CreateSub ( this, "INVEN_BUTTON_LOCK", UI_FLAG_DEFAULT, BUTTON_KEY_LOCK );
m_pButtonLock->CreateFlip ( "INVEN_BUTTON_LOCK_F", CBasicButton::CLICK_FLIP );
m_pButtonLock->SetFlip(false);
m_pButtonLock->SetVisibleSingle ( FALSE );
RegisterControl ( m_pButtonLock );

m_pButtonUnlock = new CBasicButton;
m_pButtonUnlock->CreateSub ( this, "INVEN_BUTTON_UNLOCK", UI_FLAG_DEFAULT, BUTTON_KEY_UNLOCK );
m_pButtonUnlock->CreateFlip ( "INVEN_BUTTON_UNLOCK_F", CBasicButton::CLICK_FLIP );
m_pButtonUnlock->SetFlip(false);
m_pButtonUnlock->SetVisibleSingle ( FALSE );
RegisterControl ( m_pButtonUnlock );
}

CUIControl* CInventoryPageWear::CreateControl ( const char* szControl )
{
CUIControl* pControl = new CUIControl;
pControl->CreateSub ( this, szControl );
RegisterControl ( pControl );

return pControl;
}

CItemImage* CInventoryPageWear::CreateItemImage ( const char* szControl, UIGUID ControlID )
{
CItemImage* pItemImage = new CItemImage;
pItemImage->CreateSub ( this, szControl, UI_FLAG_DEFAULT, ControlID );
pItemImage->CreateSubControl ();
RegisterControl ( pItemImage );

return pItemImage;
}

EMSLOT CInventoryPageWear::IMAGE2EMSLOT ( int nIndex )
{
switch ( nIndex )
{
case ITEM_IMAGE0: return SLOT_HEADGEAR; // ¸Ó¸®
case ITEM_IMAGE1: return SLOT_NECK; // ¸ñ°ÉÀÌ
case ITEM_IMAGE2: return SLOT_UPPER; // »óÀÇ
case ITEM_IMAGE3: return SLOT_LHAND; // ¿Þ¼Õµµ±¸
case ITEM_IMAGE4: return SLOT_WRIST; // ¼Õ¸ñ
case ITEM_IMAGE5: return SLOT_HAND; // Àå°©
case ITEM_IMAGE6: return SLOT_LOWER; // ÇÏÀÇ
case ITEM_IMAGE7: return SLOT_LFINGER; // ¿Þ¼Õ ¼Õ°¡¶ô
case ITEM_IMAGE8: return SLOT_RHAND; // ¿À¸¥¼Õµµ±¸
case ITEM_IMAGE9: return SLOT_FOOT; // ½Å¹ß
case ITEM_IMAGE10: return SLOT_RFINGER; // ¿À¸¥¼Õ ¼Õ°¡¶ô
case ITEM_IMAGE11: return SLOT_VEHICLE;
}

GASSERT ( 0 && "¹üÀ§¸¦ ¹þ¾î³³´Ï´Ù." );
return SLOT_TSIZE;
}

void CInventoryPageWear::Update ( int x, int y, BYTE LB, BYTE MB, BYTE RB, int nScroll, float fElapsedTime, BOOL bFirstControl )
{
SetItemIndex ( nOUTOFRANGE );
if ( m_pMouseOver ) m_pMouseOver->SetVisibleSingle ( FALSE );
// if ( m_pSlotDisplay ) m_pSlotDisplay->SetVisibleSingle ( FALSE );
// if ( m_pSlotBlockDisplay ) m_pSlotBlockDisplay->SetVisibleSingle ( FALSE );

// ½º³À, ½ºÅ³ À̹ÌÁö ºÙÀ̱â
CItemMove* pItemMove = CInnerInterface::GetInstance().GetItemMove ();
SNATIVEID sHOLD_ITEM_ID(false);
// bool bFOUND_TOWEAR = false;
if ( pItemMove ) sHOLD_ITEM_ID = pItemMove->GetItem();

for ( int i = 0; i < SLOT_NSIZE_2; i++ )
{
const SITEMCUSTOM& sItemCustomOld = GetItem ( i );

EMSLOT emSlot = IMAGE2EMSLOT ( i + ITEM_IMAGE0 );
SITEMCUSTOM sItemCustom = GLGaeaClient::GetInstance().GetCharacter()->GET_SLOT_ITEM ( emSlot );

// NOTE
// ÀÌÀü ÇÁ·¹ÀÓ°ú ºñ±³ÇÏ¿©,
// µ¥ÀÌŸ°¡ ´Þ¶óÁø °æ¿ì¿¡¸¸,
// ·Îµå/¾ð·Îµå ÀÛ¾÷À» ÁøÇàÇÑ´Ù.
if ( sItemCustom != sItemCustomOld )
{
if ( sItemCustom.sNativeID != NATIVEID_NULL () )
{
LoadItem ( i, sItemCustom );
}
else
{
UnLoadItem ( i );
}
}

m_pSlotDisplay->SetVisibleSingle ( FALSE );

// NOTE
// ÀåÂøµÉ À§Ä¡ Ç¥½Ã
if ( sHOLD_ITEM_ID != NATIVEID_NULL () /*&& !bFOUND_TOWEAR*/ )
{
if ( GLGaeaClient::GetInstance().GetCharacter()->CHECKSLOT_ITEM ( sHOLD_ITEM_ID, emSlot ) )
{
const UIRECT& rcImagePos = m_pItemImage->GetGlobalPos ();
D3DXVECTOR2 vPos ( rcImagePos.left, rcImagePos.top );

if ( GLGaeaClient::GetInstance().GetCharacter()->ACCEPT_ITEM ( sHOLD_ITEM_ID ) )
{
m_pSlotDisplay->SetVisibleSingle ( TRUE );
}

// bFOUND_TOWEAR = true;
}
}
}

/*puton lock, Juver, 2018/01/13 */
BOOL bEnabled = GLGaeaClient::GetInstance().GetCharacter()->m_bEnableEquipmentLock;
BOOL bLocked = GLGaeaClient::GetInstance().GetCharacter()->m_bEquipmentLockStatus;
if ( m_pButtonLock ) m_pButtonLock->SetVisibleSingle( bEnabled && bLocked );
if ( m_pButtonUnlock ) m_pButtonUnlock->SetVisibleSingle( bEnabled && !bLocked );

CUIGroup::Update ( x, y, LB, MB, RB, nScroll, fElapsedTime, bFirstControl );
}

void CInventoryPageWear::TranslateUIMessage ( UIGUID ControlID, DWORD dwMsg )
{
switch ( ControlID )
{
case ITEM_IMAGE0:
case ITEM_IMAGE1:
case ITEM_IMAGE2:
case ITEM_IMAGE3:
case ITEM_IMAGE4:
case ITEM_IMAGE5:
case ITEM_IMAGE6:
case ITEM_IMAGE7:
case ITEM_IMAGE8:
case ITEM_IMAGE9:
case ITEM_IMAGE10:
case ITEM_IMAGE11:
{
if ( CHECK_MOUSE_IN ( dwMsg ) )
{
int nIndex = ControlID - ITEM_IMAGE0;
SetItemIndex ( nIndex );

if ( !CInnerInterface::GetInstance().IsFirstItemSlot () ) return ;

// ½º³À, ½ºÅ³ À̹ÌÁö ºÙÀ̱â
CItemMove* pItemMove = CInnerInterface::GetInstance().GetItemMove ();
if ( !pItemMove )
{
GASSERT ( 0 && "CItemMove°¡ ³ÎÀÔ´Ï´Ù." );
return ;
}

if ( pItemMove->GetItem () != NATIVEID_NULL () )
{
const UIRECT& rcSlotPos = m_pItemImage[nIndex]->GetGlobalPos ();
pItemMove->SetGlobalPos ( rcSlotPos );

AddMessageEx ( UIMSG_MOUSEIN_WEARSLOT | UIMSG_TOTOPPARENT );
}

// ¸¶¿ì½º Ç¥½Ã Å׵θ®
if ( pItemMove->GetItem () == NATIVEID_NULL () && m_pItemImage[m_nIndex]->GetItem () != NATIVEID_NULL () )
{
const UIRECT& rcImagePos = m_pItemImage[nIndex]->GetGlobalPos ();
m_pMouseOver->SetGlobalPos ( rcImagePos );
m_pMouseOver->SetVisibleSingle ( TRUE );
}
}
}
break;

/*puton lock, Juver, 2018/01/13 */
case BUTTON_KEY_LOCK:
case BUTTON_KEY_UNLOCK:
{
if( CHECK_MOUSEIN_LBUPLIKE( dwMsg ) )
CInnerInterface::GetInstance().OpenEquipmentLockInput();
}break;
}
}

EMSLOT CInventoryPageWear::GetItemSlot ()
{
return IMAGE2EMSLOT ( GetItemIndex () + ITEM_IMAGE0 );
}

void CInventoryPageWear::LoadItem ( int nIndex, SITEMCUSTOM& ref_sItemCustom )
{
m_ItemCustomArray[nIndex] = ref_sItemCustom;

SITEM* pItemData = GLItemMan::GetInstance().GetItem ( ref_sItemCustom.sNativeID );
m_pItemImage[nIndex]->SetItem ( pItemData->sBasicOp.sICONID, pItemData->GetInventoryFile(), pItemData->sBasicOp.sNativeID );
}

SITEMCUSTOM& CInventoryPageWear::GetItem ( int nIndex )
{
return m_ItemCustomArray[nIndex];
}

void CInventoryPageWear::UnLoadItem ( int nIndex )
{
m_ItemCustomArray[nIndex].sNativeID = NATIVEID_NULL ();
m_pItemImage[nIndex]->ResetItem ();
}

here's my inventorypagewear.cpp sir aizen




are you having error on creating?

if you are find this code on s_CAgentServerMsg.cpp

Code:
              //jdevtodo 
              //enable later when new classes are ready
              if ( nIndex == GLCI_ASSASSIN_M || nIndex == GLCI_ASSASSIN_W ||
                   nIndex == GLCI_TRICKER_M || nIndex == GLCI_TRICKER_M )
               {
                        nncfd.nResult = EM_CHA_NEW_FB_SUB_MAX;
                        SendClient(dwClient, &nncfd);
                        return;
               }

replace with this

Code:
              //jdevtodo 
              //enable later when new classes are ready
             /*if ( nIndex == GLCI_ASSASSIN_M || nIndex == GLCI_ASSASSIN_W || 
                   nIndex == GLCI_TRICKER_M || nIndex == GLCI_TRICKER_M )
               {
                        nncfd.nResult = EM_CHA_NEW_FB_SUB_MAX; 
                        SendClient(dwClient, &nncfd);
                        return; 
               }*/


what cpp do i need to edit to enable assassin class in my server...aside from CharacterCreatePageSet.cpp boss @aizen00
 
Last edited:
Upvote 0
Newbie Spellweaver
Joined
Aug 17, 2017
Messages
49
Reaction score
1
are you using classic interface ?
if you are try to merge this one







are you having error on creating?

if you are find this code

Code:
              //jdevtodo 
              //enable later when new classes are ready
              if ( nIndex == GLCI_ASSASSIN_M || nIndex == GLCI_ASSASSIN_W ||
                   nIndex == GLCI_TRICKER_M || nIndex == GLCI_TRICKER_M )
               {
                        nncfd.nResult = EM_CHA_NEW_FB_SUB_MAX;
                        SendClient(dwClient, &nncfd);
                        return;
               }

replace with this

Code:
              //jdevtodo 
              //enable later when new classes are ready
             /*if ( nIndex == GLCI_ASSASSIN_M || nIndex == GLCI_ASSASSIN_W || 
                   nIndex == GLCI_TRICKER_M || nIndex == GLCI_TRICKER_M )
               {
                        nncfd.nResult = EM_CHA_NEW_FB_SUB_MAX; 
                        SendClient(dwClient, &nncfd);
                        return; 
               }*/

I'm using the new interface for the Inventory, Bank, and character view sir aizen. I've already use the inventorypagewear on your source but i still have the bugtrap.

I'm using your source, using the assassin on the emulator works fine but for sir empirez source i'm getting this bugtrap whenever I'm using the assassin charset on the emulator
 
Upvote 0
Master Summoner
Joined
Feb 6, 2019
Messages
575
Reaction score
159
try this one


I'm using the new interface for the Inventory, Bank, and character view sir aizen. I've already use the inventorypagewear on your source but i still have the bugtrap.

I'm using your source, using the assassin on the emulator works fine but for sir empirez source i'm getting this bugtrap whenever I'm using the assassin charset on the emulator
 
Upvote 0
Junior Spellweaver
Joined
Feb 17, 2022
Messages
177
Reaction score
8
are you using classic interface ?
if you are try to merge this one







are you having error on creating?

if you are find this code

Code:
              //jdevtodo 
              //enable later when new classes are ready
              if ( nIndex == GLCI_ASSASSIN_M || nIndex == GLCI_ASSASSIN_W ||
                   nIndex == GLCI_TRICKER_M || nIndex == GLCI_TRICKER_M )
               {
                        nncfd.nResult = EM_CHA_NEW_FB_SUB_MAX;
                        SendClient(dwClient, &nncfd);
                        return;
               }

replace with this

Code:
              //jdevtodo 
              //enable later when new classes are ready
             /*if ( nIndex == GLCI_ASSASSIN_M || nIndex == GLCI_ASSASSIN_W || 
                   nIndex == GLCI_TRICKER_M || nIndex == GLCI_TRICKER_M )
               {
                        nncfd.nResult = EM_CHA_NEW_FB_SUB_MAX; 
                        SendClient(dwClient, &nncfd);
                        return; 
               }*/

im using new interface... i cant see assassin class in creation page



try this one

boss this is new interface? i will try this later i dont have my laptop now... btw thanks i will update here later
 
Upvote 0
Junior Spellweaver
Joined
Feb 17, 2022
Messages
177
Reaction score
8
I'm using the new interface for the Inventory, Bank, and character view sir aizen. I've already use the inventorypagewear on your source but i still have the bugtrap.

I'm using your source, using the assassin on the emulator works fine but for sir empirez source i'm getting this bugtrap whenever I'm using the assassin charset on the emulator

you fixed yours?



try this one

@aizen00 sir this is my CharacterCreatePageSet.cpp
what should i edit to enable assassin at the creation page?

#include "StdAfx.h"
#include "CharacterCreatePageSet.h"
#include "CharacterCreateInfo.h"

#include "d3dfont.h"
#include "UITextControl.h"
#include "GameTextControl.h"

#include "BasicLineBox.h"
#include "BasicTextBox.h"
#include "ModalWindow.h"

#include "OuterInterface.h"
#include "DxGlobalStage.h"
#include "DxLobyStage.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

CCharacterCreatePageSet::CCharacterCreatePageSet ()
: m_bUseCancel( TRUE )
, m_bCreateClassExtremeM( FALSE )
, m_bCreateClassExtremeW( FALSE )
, m_nSelectedSchool( -1 )
, m_nSelectedSex( -1 )
, m_nSelectedClass( -1 )
, m_nSelectedLastSchool( -1 )
, m_nSelectedLastSex( -1 )
, m_nSelectedLastClass( -1 )

//jdevtodo
//enable later when new classes are ready
, m_bCreateClassGunner(TRUE) //enable gunner
, m_bCreateClassAssassin(TRUE)
, m_bCreateClassMagician(FALSE)
{
for( int i=0; i<GLSCHOOL_NUM; ++i ){
m_pTypeSchool_Off = NULL;
m_pTypeSchool_On = NULL;
m_pTypeSchool_Box = NULL;
m_pTypeSchool_Focus = NULL;
}

for( int i=0; i<2; ++i ){
m_pTypeSex_Off = NULL;
m_pTypeSex_On = NULL;
m_pTypeSex_Box = NULL;
m_pTypeSex_Focus = NULL;
}

for( int i=0; i<GLCI_NUM_8CLASS; ++i ){
m_pTypeClass_Off = NULL;
m_pTypeClass_On = NULL;
m_pTypeClass_Box = NULL;
m_pTypeClass_Focus = NULL;
}
}

CCharacterCreatePageSet::~CCharacterCreatePageSet ()
{
}

void CCharacterCreatePageSet::CreateSubControl ()
{
CD3DFontPar* pFont9 = DxFontMan::GetInstance().LoadDxFont ( _DEFAULT_FONT, 9, _DEFAULT_FONT_FLAG );

CBasicLineBox* pBasicLineBox = new CBasicLineBox;
pBasicLineBox->CreateSub ( this, "BASIC_LINE_BOX_OUTER", UI_FLAG_XSIZE | UI_FLAG_YSIZE );
pBasicLineBox->CreateBaseBoxOuter( "CREATE_CHAR_SCHOOL_TEXT" );
RegisterControl ( pBasicLineBox );

pBasicLineBox = new CBasicLineBox;
pBasicLineBox->CreateSub ( this, "BASIC_LINE_BOX_OUTER", UI_FLAG_XSIZE | UI_FLAG_YSIZE );
pBasicLineBox->CreateBaseBoxOuter( "CREATE_CHAR_SEX_TEXT" );
RegisterControl ( pBasicLineBox );

pBasicLineBox = new CBasicLineBox;
pBasicLineBox->CreateSub ( this, "BASIC_LINE_BOX_OUTER", UI_FLAG_XSIZE | UI_FLAG_YSIZE );
pBasicLineBox->CreateBaseBoxOuter( "CREATE_CHAR_CLASS_TEXT" );
RegisterControl ( pBasicLineBox );

CBasicTextBox* pStaticText = new CBasicTextBox;
pStaticText->CreateSub ( this, "CREATE_CHAR_SCHOOL_TEXT" );
pStaticText->SetFont ( pFont9 );
pStaticText->SetTextAlign ( TEXT_ALIGN_CENTER_X | TEXT_ALIGN_CENTER_Y );
pStaticText->SetText( (char*)ID2GAMEWORD ("CREATE_CHARACTER_PAGE_STATIC", 0), NS_UITEXTCOLOR::WHITE );
RegisterControl ( pStaticText );

pStaticText = new CBasicTextBox;
pStaticText->CreateSub ( this, "CREATE_CHAR_SEX_TEXT" );
pStaticText->SetFont ( pFont9 );
pStaticText->SetTextAlign ( TEXT_ALIGN_CENTER_X | TEXT_ALIGN_CENTER_Y );
pStaticText->SetText( (char*)ID2GAMEWORD ("CREATE_CHARACTER_PAGE_STATIC", 6), NS_UITEXTCOLOR::WHITE );
RegisterControl ( pStaticText );

pStaticText = new CBasicTextBox;
pStaticText->CreateSub ( this, "CREATE_CHAR_CLASS_TEXT" );
pStaticText->SetFont ( pFont9 );
pStaticText->SetTextAlign ( TEXT_ALIGN_CENTER_X | TEXT_ALIGN_CENTER_Y );
pStaticText->SetText( (char*)ID2GAMEWORD ("CREATE_CHARACTER_PAGE_STATIC", 1), NS_UITEXTCOLOR::WHITE );
RegisterControl ( pStaticText );


std::string strSchoolOff[GLSCHOOL_NUM] =
{
"CREATE_CHAR_MARK_SM_OFF",
"CREATE_CHAR_MARK_HA_OFF",
"CREATE_CHAR_MARK_BH_OFF",
};

std::string strSchoolOn[GLSCHOOL_NUM] =
{
"CREATE_CHAR_MARK_SM_ON",
"CREATE_CHAR_MARK_HA_ON",
"CREATE_CHAR_MARK_BH_ON",
};

std::string strSchoolBox[GLSCHOOL_NUM] =
{
"CREATE_CHAR_MARK_SM_BOX",
"CREATE_CHAR_MARK_HA_BOX",
"CREATE_CHAR_MARK_BH_BOX",
};

std::string strSchoolFocus[GLSCHOOL_NUM] =
{
"CREATE_CHAR_MARK_SM_FOCUS",
"CREATE_CHAR_MARK_HA_FOCUS",
"CREATE_CHAR_MARK_BH_FOCUS",
};

for( int i=0; i<GLSCHOOL_NUM; ++i ){

m_pTypeSchool_Off = new CUIControl;
m_pTypeSchool_Off->CreateSub ( this, strSchoolOff.c_str() );
m_pTypeSchool_Off->SetVisibleSingle ( FALSE );
RegisterControl ( m_pTypeSchool_Off );

m_pTypeSchool_On = new CUIControl;
m_pTypeSchool_On->CreateSub ( this, strSchoolOn.c_str() );
m_pTypeSchool_On->SetVisibleSingle ( FALSE );
RegisterControl ( m_pTypeSchool_On );

m_pTypeSchool_Box = new CUIControl;
m_pTypeSchool_Box->CreateSub ( this, strSchoolBox.c_str() );
m_pTypeSchool_Box->SetVisibleSingle ( FALSE );
RegisterControl ( m_pTypeSchool_Box );

m_pTypeSchool_Focus = new CUIControl;
m_pTypeSchool_Focus->CreateSub ( this, strSchoolFocus.c_str(), UI_FLAG_XSIZE | UI_FLAG_YSIZE, CHARACTER_CREATE_PAGE_TYPE_SCHOOL_0 + i );
m_pTypeSchool_Focus->SetVisibleSingle ( FALSE );
RegisterControl ( m_pTypeSchool_Focus );
}


std::string strSexOff[2] =
{
"CREATE_CHAR_SEX_MALE_OFF",
"CREATE_CHAR_SEX_FEMALE_OFF",
};

std::string strSexOn[2] =
{
"CREATE_CHAR_SEX_MALE_ON",
"CREATE_CHAR_SEX_FEMALE_ON",
};

std::string strSexBox[2] =
{
"CREATE_CHAR_SEX_MALE_BOX",
"CREATE_CHAR_SEX_FEMALE_BOX",
};

std::string strSexFocus[2] =
{
"CREATE_CHAR_SEX_MALE_FOCUS",
"CREATE_CHAR_SEX_FEMALE_FOCUS",
};

for( int i=0; i<2; ++i ){

m_pTypeSex_Off = new CUIControl;
m_pTypeSex_Off->CreateSub ( this, strSexOff.c_str() );
m_pTypeSex_Off->SetVisibleSingle ( FALSE );
RegisterControl ( m_pTypeSex_Off );

m_pTypeSex_On = new CUIControl;
m_pTypeSex_On->CreateSub ( this, strSexOn.c_str() );
m_pTypeSex_On->SetVisibleSingle ( FALSE );
RegisterControl ( m_pTypeSex_On );

m_pTypeSex_Box = new CUIControl;
m_pTypeSex_Box->CreateSub ( this, strSexBox.c_str() );
m_pTypeSex_Box->SetVisibleSingle ( FALSE );
RegisterControl ( m_pTypeSex_Box );

m_pTypeSex_Focus = new CUIControl;
m_pTypeSex_Focus->CreateSub ( this, strSexFocus.c_str(), UI_FLAG_XSIZE | UI_FLAG_YSIZE, CHARACTER_CREATE_PAGE_TYPE_SEX_MALE + i );
m_pTypeSex_Focus->SetVisibleSingle ( FALSE );
RegisterControl ( m_pTypeSex_Focus );
}


std::string strClass_Off[GLCI_NUM_8CLASS] =
{
"CREATE_CHAR_CLASS_BRAWLER_MALE_OFF",
"CREATE_CHAR_CLASS_SWORDMAN_MALE_OFF",
"CREATE_CHAR_CLASS_ARCHER_FEMALE_OFF",
"CREATE_CHAR_CLASS_SHAMAN_FEMALE_OFF",
"CREATE_CHAR_CLASS_EXTREME_MALE_OFF",
"CREATE_CHAR_CLASS_EXTREME_FEMALE_OFF",
"CREATE_CHAR_CLASS_BRAWLER_FEMALE_OFF",
"CREATE_CHAR_CLASS_SWORDMAN_FEMALE_OFF",
"CREATE_CHAR_CLASS_ARCHER_MALE_OFF",
"CREATE_CHAR_CLASS_SHAMAN_MALE_OFF",
"CREATE_CHAR_CLASS_SCIENTIST_MALE_OFF",
"CREATE_CHAR_CLASS_SCIENTIST_FEMALE_OFF",
"CREATE_CHAR_CLASS_ASSASSIN_MALE_OFF",
"CREATE_CHAR_CLASS_ASSASSIN_FEMALE_OFF",
"CREATE_CHAR_CLASS_TRICKER_MALE_OFF",
"CREATE_CHAR_CLASS_TRICKER_FEMALE_OFF",

};

std::string strClass_On[GLCI_NUM_8CLASS] =
{
"CREATE_CHAR_CLASS_BRAWLER_MALE_ON",
"CREATE_CHAR_CLASS_SWORDMAN_MALE_ON",
"CREATE_CHAR_CLASS_ARCHER_FEMALE_ON",
"CREATE_CHAR_CLASS_SHAMAN_FEMALE_ON",
"CREATE_CHAR_CLASS_EXTREME_MALE_ON",
"CREATE_CHAR_CLASS_EXTREME_FEMALE_ON",
"CREATE_CHAR_CLASS_BRAWLER_FEMALE_ON",
"CREATE_CHAR_CLASS_SWORDMAN_FEMALE_ON",
"CREATE_CHAR_CLASS_ARCHER_MALE_ON",
"CREATE_CHAR_CLASS_SHAMAN_MALE_ON",
"CREATE_CHAR_CLASS_SCIENTIST_MALE_ON",
"CREATE_CHAR_CLASS_SCIENTIST_FEMALE_ON",
"CREATE_CHAR_CLASS_ASSASSIN_MALE_ON",
"CREATE_CHAR_CLASS_ASSASSIN_FEMALE_ON",
"CREATE_CHAR_CLASS_TRICKER_MALE_ON",
"CREATE_CHAR_CLASS_TRICKER_FEMALE_ON",
};

std::string strClass_Box[GLCI_NUM_8CLASS] =
{
"CREATE_CHAR_CLASS_BRAWLER_MALE_BOX",
"CREATE_CHAR_CLASS_SWORDMAN_MALE_BOX",
"CREATE_CHAR_CLASS_ARCHER_FEMALE_BOX",
"CREATE_CHAR_CLASS_SHAMAN_FEMALE_BOX",
"CREATE_CHAR_CLASS_EXTREME_MALE_BOX",
"CREATE_CHAR_CLASS_EXTREME_FEMALE_BOX",
"CREATE_CHAR_CLASS_BRAWLER_FEMALE_BOX",
"CREATE_CHAR_CLASS_SWORDMAN_FEMALE_BOX",
"CREATE_CHAR_CLASS_ARCHER_MALE_BOX",
"CREATE_CHAR_CLASS_SHAMAN_MALE_BOX",
"CREATE_CHAR_CLASS_SCIENTIST_MALE_BOX",
"CREATE_CHAR_CLASS_SCIENTIST_FEMALE_BOX",
"CREATE_CHAR_CLASS_ASSASSIN_MALE_BOX",
"CREATE_CHAR_CLASS_ASSASSIN_FEMALE_BOX",
"CREATE_CHAR_CLASS_TRICKER_MALE_BOX",
"CREATE_CHAR_CLASS_TRICKER_FEMALE_BOX",
};

std::string strClass_Focus[GLCI_NUM_8CLASS] =
{
"CREATE_CHAR_CLASS_BRAWLER_MALE_FOCUS",
"CREATE_CHAR_CLASS_SWORDMAN_MALE_FOCUS",
"CREATE_CHAR_CLASS_ARCHER_FEMALE_FOCUS",
"CREATE_CHAR_CLASS_SHAMAN_FEMALE_FOCUS",
"CREATE_CHAR_CLASS_EXTREME_MALE_FOCUS",
"CREATE_CHAR_CLASS_EXTREME_FEMALE_FOCUS",
"CREATE_CHAR_CLASS_BRAWLER_FEMALE_FOCUS",
"CREATE_CHAR_CLASS_SWORDMAN_FEMALE_FOCUS",
"CREATE_CHAR_CLASS_ARCHER_MALE_FOCUS",
"CREATE_CHAR_CLASS_SHAMAN_MALE_FOCUS",
"CREATE_CHAR_CLASS_SCIENTIST_MALE_FOCUS",
"CREATE_CHAR_CLASS_SCIENTIST_FEMALE_FOCUS",
"CREATE_CHAR_CLASS_ASSASSIN_MALE_FOCUS",
"CREATE_CHAR_CLASS_ASSASSIN_FEMALE_FOCUS",
"CREATE_CHAR_CLASS_TRICKER_MALE_FOCUS",
"CREATE_CHAR_CLASS_TRICKER_FEMALE_FOCUS",
};

for( int i=0; i<GLCI_NUM_8CLASS; ++i ){

m_pTypeClass_Off = new CUIControl;
m_pTypeClass_Off->CreateSub ( this, strClass_Off.c_str() );
m_pTypeClass_Off->SetVisibleSingle ( FALSE );
RegisterControl ( m_pTypeClass_Off );

m_pTypeClass_On = new CUIControl;
m_pTypeClass_On->CreateSub ( this, strClass_On.c_str() );
m_pTypeClass_On->SetVisibleSingle ( FALSE );
RegisterControl ( m_pTypeClass_On );

m_pTypeClass_Box = new CUIControl;
m_pTypeClass_Box->CreateSub ( this, strClass_Box.c_str() );
m_pTypeClass_Box->SetVisibleSingle ( FALSE );
RegisterControl ( m_pTypeClass_Box );

m_pTypeClass_Focus = new CUIControl;
m_pTypeClass_Focus->CreateSub ( this, strClass_Focus.c_str(), UI_FLAG_XSIZE | UI_FLAG_YSIZE, CHARACTER_CREATE_PAGE_TYPE_CLASS_MALE_BRAWLER + i );
m_pTypeClass_Focus->SetVisibleSingle ( FALSE );
RegisterControl ( m_pTypeClass_Focus );
}

ResetAll();
}

void CCharacterCreatePageSet::TranslateUIMessage ( UIGUID ControlID, DWORD dwMsg )
{
CUIGroup::TranslateUIMessage ( ControlID, dwMsg );


switch( ControlID )
{
case CHARACTER_CREATE_PAGE_TYPE_SCHOOL_0:
case CHARACTER_CREATE_PAGE_TYPE_SCHOOL_1:
case CHARACTER_CREATE_PAGE_TYPE_SCHOOL_2:
{
if ( CHECK_MOUSE_IN ( dwMsg ) ) {
int nSelect = ControlID - CHARACTER_CREATE_PAGE_TYPE_SCHOOL_0;
SchoolMouseIn( nSelect );

if ( CHECK_MOUSEIN_LBUPLIKE ( dwMsg ) ){
SchoolSelect( nSelect );
}
}

}break;

case CHARACTER_CREATE_PAGE_TYPE_SEX_MALE:
case CHARACTER_CREATE_PAGE_TYPE_SEX_FEMALE:
{
if ( CHECK_MOUSE_IN ( dwMsg ) ) {
int nSelect = ControlID - CHARACTER_CREATE_PAGE_TYPE_SEX_MALE;
SexMouseIn( nSelect );

if ( CHECK_MOUSEIN_LBUPLIKE ( dwMsg ) ){
SexSelect( nSelect );
}
}
}break;

case CHARACTER_CREATE_PAGE_TYPE_CLASS_MALE_BRAWLER:
case CHARACTER_CREATE_PAGE_TYPE_CLASS_MALE_SWORDSMAN:
case CHARACTER_CREATE_PAGE_TYPE_CLASS_FEMALE_ARCHER:
case CHARACTER_CREATE_PAGE_TYPE_CLASS_FEMALE_SHAMAN:
case CHARACTER_CREATE_PAGE_TYPE_CLASS_MALE_EXTREME:
case CHARACTER_CREATE_PAGE_TYPE_CLASS_FEMALE_EXTREME:
case CHARACTER_CREATE_PAGE_TYPE_CLASS_FEMALE_BRAWLER:
case CHARACTER_CREATE_PAGE_TYPE_CLASS_FEMALE_SWORDSMAN:
case CHARACTER_CREATE_PAGE_TYPE_CLASS_MALE_ARCHER:
case CHARACTER_CREATE_PAGE_TYPE_CLASS_MALE_SHAMAN:
case CHARACTER_CREATE_PAGE_TYPE_CLASS_MALE_GUNNER:
case CHARACTER_CREATE_PAGE_TYPE_CLASS_FEMALE_GUNNER:
case CHARACTER_CREATE_PAGE_TYPE_CLASS_MALE_ASSASSIN:
case CHARACTER_CREATE_PAGE_TYPE_CLASS_FEMALE_ASSASSIN:
case CHARACTER_CREATE_PAGE_TYPE_CLASS_MALE_TRICKER:
case CHARACTER_CREATE_PAGE_TYPE_CLASS_FEMALE_TRICKER:
{
if ( CHECK_MOUSE_IN ( dwMsg ) ) {
int nSelect = ControlID - CHARACTER_CREATE_PAGE_TYPE_CLASS_MALE_BRAWLER;
ClassMouseIn( nSelect );

if ( CHECK_MOUSEIN_LBUPLIKE ( dwMsg ) ){
ClassSelect( nSelect );
}
}
}break;

};
}

void CCharacterCreatePageSet::Update ( int x, int y, BYTE LB, BYTE MB, BYTE RB, int nScroll, float fElapsedTime, BOOL bFirstControl )
{
for( int i=0; i<GLSCHOOL_NUM; ++i ){
m_pTypeSchool_Box->SetVisibleSingle( FALSE );
}

for( int i=0; i<2; ++i ){
m_pTypeSex_Box->SetVisibleSingle( FALSE );
}

for( int i=0; i<GLCI_NUM_8CLASS; ++i ){
m_pTypeClass_Box->SetVisibleSingle( FALSE );
}

CUIGroup::Update( x, y, LB, MB, RB, nScroll, fElapsedTime, bFirstControl );

if ( m_nSelectedSchool != m_nSelectedLastSchool ||
m_nSelectedSex != m_nSelectedLastSex ||
m_nSelectedClass != m_nSelectedLastClass )
{
UpdateUI();

m_nSelectedLastSchool = m_nSelectedSchool;
m_nSelectedLastSex = m_nSelectedSex;
m_nSelectedLastClass = m_nSelectedClass;
}
}

void CCharacterCreatePageSet::ResetAll()
{
m_nSelectedSchool = -1;
m_nSelectedSex = -1;
m_nSelectedClass = -1;

for( int i=0; i<GLSCHOOL_NUM; ++i ){
m_pTypeSchool_Off->SetVisibleSingle( TRUE );
m_pTypeSchool_On->SetVisibleSingle( FALSE );
m_pTypeSchool_Box->SetVisibleSingle( FALSE );
m_pTypeSchool_Focus->SetVisibleSingle( TRUE );
}

for( int i=0; i<2; ++i ){
m_pTypeSex_Off->SetVisibleSingle( TRUE );
m_pTypeSex_On->SetVisibleSingle( FALSE );
m_pTypeSex_Box->SetVisibleSingle( FALSE );
m_pTypeSex_Focus->SetVisibleSingle( TRUE );
}

for( int i=0; i<GLCI_NUM_8CLASS; ++i ){
m_pTypeClass_On->SetVisibleSingle( FALSE );
m_pTypeClass_Box->SetVisibleSingle( FALSE );
}

for( int i=0; i<GLCI_NUM_8CLASS; ++i ){
BOOL bVisible = ( i == GLCI_BRAWLER_M ||
i == GLCI_SWORDSMAN_M ||
i == GLCI_ARCHER_M ||
i == GLCI_SHAMAN_M ||
i == GLCI_EXTREME_M ||
i == GLCI_GUNNER_M ||
i == GLCI_ASSASSIN_M||
i == GLCI_TRICKER_M );

if ( i == GLCI_EXTREME_M && !COuterInterface::GetInstance().GetCharRemainExM() ){
bVisible = FALSE;
}

if ( i == GLCI_EXTREME_W && !COuterInterface::GetInstance().GetCharRemainExW() ){
bVisible = FALSE;
}

if ( (i == GLCI_GUNNER_M || i == GLCI_GUNNER_W ) /*&& !m_bCreateClassGunner*/ ){ //enable gunner
bVisible = FALSE;
}

if ( (i == GLCI_ASSASSIN_M || i == GLCI_ASSASSIN_W ) /*&& !m_bCreateClassAssassin*/ ){
bVisible = FALSE;
}

if ( (i == GLCI_TRICKER_M || i == GLCI_TRICKER_W ) /*&& !m_bCreateClassMagician*/ ){
bVisible = FALSE;
}

m_pTypeClass_Off->SetVisibleSingle( bVisible );
m_pTypeClass_Focus->SetVisibleSingle( bVisible );
}
}

void CCharacterCreatePageSet::UpdateUI()
{
for( int i=0; i<GLSCHOOL_NUM; ++i ){
m_pTypeSchool_Off->SetVisibleSingle( TRUE );
m_pTypeSchool_On->SetVisibleSingle( FALSE );
}

for( int i=0; i<2; ++i ){
m_pTypeSex_Off->SetVisibleSingle( TRUE );
m_pTypeSex_On->SetVisibleSingle( FALSE );
}

for( int i=0; i<GLCI_NUM_8CLASS; ++i ){
BOOL bVisible = ( i == GLCI_BRAWLER_M ||
i == GLCI_SWORDSMAN_M ||
i == GLCI_ARCHER_M ||
i == GLCI_SHAMAN_M ||
i == GLCI_EXTREME_M ||
i == GLCI_GUNNER_M ||
i == GLCI_ASSASSIN_M ||
i == GLCI_TRICKER_M );

if ( i == GLCI_EXTREME_M && !COuterInterface::GetInstance().GetCharRemainExM() ){
bVisible = FALSE;
}

if ( i == GLCI_EXTREME_W && !COuterInterface::GetInstance().GetCharRemainExW() ){
bVisible = FALSE;
}

if ( (i == GLCI_GUNNER_M || i == GLCI_GUNNER_W ) && !m_bCreateClassGunner ){
bVisible = FALSE;
}

if ( (i == GLCI_ASSASSIN_M || i == GLCI_ASSASSIN_W ) /*&& !m_bCreateClassAssassin*/ ){
bVisible = FALSE;
}

if ( (i == GLCI_TRICKER_M || i == GLCI_TRICKER_W ) /*&& !m_bCreateClassMagician*/ ){
bVisible = FALSE;
}

m_pTypeClass_On->SetVisibleSingle( FALSE );
m_pTypeClass_Off->SetVisibleSingle( bVisible );
m_pTypeClass_Focus->SetVisibleSingle( bVisible );
}

BOOL bValidSchool = FALSE;
BOOL bValidSex = FALSE;
BOOL bValidClass = FALSE;

if ( m_nSelectedSchool >= 0 && m_nSelectedSchool < GLSCHOOL_NUM )
{
m_pTypeSchool_On[m_nSelectedSchool]->SetVisibleSingle( TRUE );
bValidSchool = TRUE;
}

if ( m_nSelectedSex >= 0 && m_nSelectedSex < 2 )
{
m_pTypeSex_On[m_nSelectedSex]->SetVisibleSingle( TRUE );
bValidSex = TRUE;

for( int i=0; i<GLCI_NUM_8CLASS; ++i ){
m_pTypeClass_Off->SetVisibleSingle( FALSE );
m_pTypeClass_Focus->SetVisibleSingle( FALSE );
}

int nMale[GLCI_NUM_8CLASS/2] = { GLCI_BRAWLER_M, GLCI_SWORDSMAN_M, GLCI_ARCHER_M, GLCI_SHAMAN_M, GLCI_EXTREME_M, GLCI_GUNNER_M, GLCI_ASSASSIN_M, GLCI_TRICKER_M };
int nFemale[GLCI_NUM_8CLASS/2] = { GLCI_BRAWLER_W, GLCI_SWORDSMAN_W, GLCI_ARCHER_W, GLCI_SHAMAN_W, GLCI_EXTREME_W, GLCI_GUNNER_W, GLCI_ASSASSIN_W, GLCI_TRICKER_W };

for ( int i=0; i<(GLCI_NUM_8CLASS/2); ++ i ){
int nSelect = (m_nSelectedSex == 1)? nFemale : nMale;
if ( nSelect == GLCI_EXTREME_M && !COuterInterface::GetInstance().GetCharRemainExM() ) continue;
if ( nSelect == GLCI_EXTREME_W && !COuterInterface::GetInstance().GetCharRemainExW() ) continue;

if ( nSelect == GLCI_GUNNER_M && !m_bCreateClassGunner ) continue;
if ( nSelect == GLCI_GUNNER_W && !m_bCreateClassGunner ) continue;

if ( nSelect == GLCI_ASSASSIN_M /*&& !m_bCreateClassAssassin*/ ) continue;
if ( nSelect == GLCI_ASSASSIN_W /*&& !m_bCreateClassAssassin*/ ) continue;

if ( nSelect == GLCI_TRICKER_M /*&& !m_bCreateClassMagician*/ ) continue;
if ( nSelect == GLCI_TRICKER_W /*&& !m_bCreateClassMagician */ ) continue;

m_pTypeClass_Off[nSelect]->SetVisibleSingle( TRUE );
m_pTypeClass_Focus[nSelect]->SetVisibleSingle( TRUE );
}
}

if ( m_nSelectedClass >= 0 && m_nSelectedClass < GLCI_NUM_8CLASS )
{
m_pTypeClass_On[m_nSelectedClass]->SetVisibleSingle( TRUE );
bValidClass = TRUE;
}

COuterInterface::GetInstance().GetCharacterCreateInfo()->SetData( m_nSelectedSchool, m_nSelectedSex, m_nSelectedClass );

if ( m_nSelectedClass == GLCI_EXTREME_M && !COuterInterface::GetInstance().GetCharRemainExM() ){
bValidClass = FALSE;
}

if ( m_nSelectedClass == GLCI_EXTREME_W && !COuterInterface::GetInstance().GetCharRemainExW() ){
bValidClass = FALSE;
}

if ( ( m_nSelectedClass == GLCI_GUNNER_M || m_nSelectedClass == GLCI_GUNNER_W ) && !m_bCreateClassGunner ){
bValidClass = FALSE;
}

if ( ( m_nSelectedClass == GLCI_ASSASSIN_M || m_nSelectedClass == GLCI_ASSASSIN_W ) /*&& !m_bCreateClassAssassin*/ ){
bValidClass = FALSE;
}

if ( ( m_nSelectedClass == GLCI_TRICKER_M || m_nSelectedClass == GLCI_TRICKER_W ) /*&& !m_bCreateClassMagician*/ ){
bValidClass = FALSE;
}

if ( bValidSchool && bValidSex && bValidClass )
{
DxGlobalStage::GetInstance().GetLobyStage()->SelCharSchool( m_nSelectedSchool );
DxGlobalStage::GetInstance().GetLobyStage()->SelCharClass( m_nSelectedClass );
DxGlobalStage::GetInstance().GetLobyStage()->SetStyleStep( TRUE );
}else{
DxGlobalStage::GetInstance().GetLobyStage()->SetStyleStep( FALSE );
}
}

void CCharacterCreatePageSet::SchoolSelect( int nSelect )
{
if ( nSelect < 0 ) return;
if ( nSelect >= GLSCHOOL_NUM ) return;
if ( nSelect == m_nSelectedSchool ) return;

m_nSelectedSchool = nSelect;
m_nSelectedSex = -1;
m_nSelectedClass = -1;
}

void CCharacterCreatePageSet::SexSelect( int nSelect )
{
if ( nSelect < 0 ) return;
if ( nSelect >= 2 ) return;
if ( nSelect == m_nSelectedSex ) return;

if ( m_nSelectedSchool < 0 || m_nSelectedSchool >= GLSCHOOL_NUM )
{
DoModalOuter ( ID2GAMEEXTEXT ( "NEW_CHAR_SELECT_SCHOOL_ERROR" ), MODAL_INFOMATION, OK );
return;
}

m_nSelectedSex = nSelect;
m_nSelectedClass = -1;
}

void CCharacterCreatePageSet::ClassSelect( int nSelect )
{
if ( nSelect < 0 ) return;
if ( nSelect >= GLCI_NUM_8CLASS ) return;

if ( m_nSelectedSchool < 0 || m_nSelectedSchool >= GLSCHOOL_NUM )
{
DoModalOuter ( ID2GAMEEXTEXT ( "NEW_CHAR_SELECT_SCHOOL_ERROR" ), MODAL_INFOMATION, OK );
return;
}

if ( m_nSelectedSex < 0 || m_nSelectedSex >= 2 )
{
DoModalOuter ( ID2GAMEEXTEXT ( "NEW_CHAR_SELECT_SEX_ERROR" ), MODAL_INFOMATION, OK );
return;
}

m_nSelectedClass = nSelect;
}

void CCharacterCreatePageSet::SchoolMouseIn( int nSelect )
{
if ( nSelect < 0 ) return;
if ( nSelect >= GLSCHOOL_NUM ) return;
m_pTypeSchool_Box[nSelect]->SetVisibleSingle( TRUE );
}

void CCharacterCreatePageSet::SexMouseIn( int nSelect )
{
if ( nSelect < 0 ) return;
if ( nSelect >= 2 ) return;
m_pTypeSex_Box[nSelect]->SetVisibleSingle( TRUE );
}

void CCharacterCreatePageSet::ClassMouseIn( int nSelect )
{
if ( nSelect < 0 ) return;
if ( nSelect >= GLCI_NUM_8CLASS ) return;
m_pTypeClass_Box[nSelect]->SetVisibleSingle( TRUE );
}
 
Last edited:
Upvote 0
Newbie Spellweaver
Joined
Aug 17, 2017
Messages
49
Reaction score
1
you fixed yours?



@aizen00 sir this is my CharacterCreatePageSet.cpp
what should i edit to enable assassin at the creation page?

#include "StdAfx.h"
#include "CharacterCreatePageSet.h"
#include "CharacterCreateInfo.h"

#include "d3dfont.h"
#include "UITextControl.h"
#include "GameTextControl.h"

#include "BasicLineBox.h"
#include "BasicTextBox.h"
#include "ModalWindow.h"

#include "OuterInterface.h"
#include "DxGlobalStage.h"
#include "DxLobyStage.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

CCharacterCreatePageSet::CCharacterCreatePageSet ()
: m_bUseCancel( TRUE )
, m_bCreateClassExtremeM( FALSE )
, m_bCreateClassExtremeW( FALSE )
, m_nSelectedSchool( -1 )
, m_nSelectedSex( -1 )
, m_nSelectedClass( -1 )
, m_nSelectedLastSchool( -1 )
, m_nSelectedLastSex( -1 )
, m_nSelectedLastClass( -1 )

//jdevtodo
//enable later when new classes are ready
, m_bCreateClassGunner(TRUE) //enable gunner
, m_bCreateClassAssassin(TRUE)
, m_bCreateClassMagician(FALSE)
{
for( int i=0; i<GLSCHOOL_NUM; ++i ){
m_pTypeSchool_Off = NULL;
m_pTypeSchool_On = NULL;
m_pTypeSchool_Box = NULL;
m_pTypeSchool_Focus = NULL;
}

for( int i=0; i<2; ++i ){
m_pTypeSex_Off = NULL;
m_pTypeSex_On = NULL;
m_pTypeSex_Box = NULL;
m_pTypeSex_Focus = NULL;
}

for( int i=0; i<GLCI_NUM_8CLASS; ++i ){
m_pTypeClass_Off = NULL;
m_pTypeClass_On = NULL;
m_pTypeClass_Box = NULL;
m_pTypeClass_Focus = NULL;
}
}

CCharacterCreatePageSet::~CCharacterCreatePageSet ()
{
}

void CCharacterCreatePageSet::CreateSubControl ()
{
CD3DFontPar* pFont9 = DxFontMan::GetInstance().LoadDxFont ( _DEFAULT_FONT, 9, _DEFAULT_FONT_FLAG );

CBasicLineBox* pBasicLineBox = new CBasicLineBox;
pBasicLineBox->CreateSub ( this, "BASIC_LINE_BOX_OUTER", UI_FLAG_XSIZE | UI_FLAG_YSIZE );
pBasicLineBox->CreateBaseBoxOuter( "CREATE_CHAR_SCHOOL_TEXT" );
RegisterControl ( pBasicLineBox );

pBasicLineBox = new CBasicLineBox;
pBasicLineBox->CreateSub ( this, "BASIC_LINE_BOX_OUTER", UI_FLAG_XSIZE | UI_FLAG_YSIZE );
pBasicLineBox->CreateBaseBoxOuter( "CREATE_CHAR_SEX_TEXT" );
RegisterControl ( pBasicLineBox );

pBasicLineBox = new CBasicLineBox;
pBasicLineBox->CreateSub ( this, "BASIC_LINE_BOX_OUTER", UI_FLAG_XSIZE | UI_FLAG_YSIZE );
pBasicLineBox->CreateBaseBoxOuter( "CREATE_CHAR_CLASS_TEXT" );
RegisterControl ( pBasicLineBox );

CBasicTextBox* pStaticText = new CBasicTextBox;
pStaticText->CreateSub ( this, "CREATE_CHAR_SCHOOL_TEXT" );
pStaticText->SetFont ( pFont9 );
pStaticText->SetTextAlign ( TEXT_ALIGN_CENTER_X | TEXT_ALIGN_CENTER_Y );
pStaticText->SetText( (char*)ID2GAMEWORD ("CREATE_CHARACTER_PAGE_STATIC", 0), NS_UITEXTCOLOR::WHITE );
RegisterControl ( pStaticText );

pStaticText = new CBasicTextBox;
pStaticText->CreateSub ( this, "CREATE_CHAR_SEX_TEXT" );
pStaticText->SetFont ( pFont9 );
pStaticText->SetTextAlign ( TEXT_ALIGN_CENTER_X | TEXT_ALIGN_CENTER_Y );
pStaticText->SetText( (char*)ID2GAMEWORD ("CREATE_CHARACTER_PAGE_STATIC", 6), NS_UITEXTCOLOR::WHITE );
RegisterControl ( pStaticText );

pStaticText = new CBasicTextBox;
pStaticText->CreateSub ( this, "CREATE_CHAR_CLASS_TEXT" );
pStaticText->SetFont ( pFont9 );
pStaticText->SetTextAlign ( TEXT_ALIGN_CENTER_X | TEXT_ALIGN_CENTER_Y );
pStaticText->SetText( (char*)ID2GAMEWORD ("CREATE_CHARACTER_PAGE_STATIC", 1), NS_UITEXTCOLOR::WHITE );
RegisterControl ( pStaticText );


std::string strSchoolOff[GLSCHOOL_NUM] =
{
"CREATE_CHAR_MARK_SM_OFF",
"CREATE_CHAR_MARK_HA_OFF",
"CREATE_CHAR_MARK_BH_OFF",
};

std::string strSchoolOn[GLSCHOOL_NUM] =
{
"CREATE_CHAR_MARK_SM_ON",
"CREATE_CHAR_MARK_HA_ON",
"CREATE_CHAR_MARK_BH_ON",
};

std::string strSchoolBox[GLSCHOOL_NUM] =
{
"CREATE_CHAR_MARK_SM_BOX",
"CREATE_CHAR_MARK_HA_BOX",
"CREATE_CHAR_MARK_BH_BOX",
};

std::string strSchoolFocus[GLSCHOOL_NUM] =
{
"CREATE_CHAR_MARK_SM_FOCUS",
"CREATE_CHAR_MARK_HA_FOCUS",
"CREATE_CHAR_MARK_BH_FOCUS",
};

for( int i=0; i<GLSCHOOL_NUM; ++i ){

m_pTypeSchool_Off = new CUIControl;
m_pTypeSchool_Off->CreateSub ( this, strSchoolOff.c_str() );
m_pTypeSchool_Off->SetVisibleSingle ( FALSE );
RegisterControl ( m_pTypeSchool_Off );

m_pTypeSchool_On = new CUIControl;
m_pTypeSchool_On->CreateSub ( this, strSchoolOn.c_str() );
m_pTypeSchool_On->SetVisibleSingle ( FALSE );
RegisterControl ( m_pTypeSchool_On );

m_pTypeSchool_Box = new CUIControl;
m_pTypeSchool_Box->CreateSub ( this, strSchoolBox.c_str() );
m_pTypeSchool_Box->SetVisibleSingle ( FALSE );
RegisterControl ( m_pTypeSchool_Box );

m_pTypeSchool_Focus = new CUIControl;
m_pTypeSchool_Focus->CreateSub ( this, strSchoolFocus.c_str(), UI_FLAG_XSIZE | UI_FLAG_YSIZE, CHARACTER_CREATE_PAGE_TYPE_SCHOOL_0 + i );
m_pTypeSchool_Focus->SetVisibleSingle ( FALSE );
RegisterControl ( m_pTypeSchool_Focus );
}


std::string strSexOff[2] =
{
"CREATE_CHAR_SEX_MALE_OFF",
"CREATE_CHAR_SEX_FEMALE_OFF",
};

std::string strSexOn[2] =
{
"CREATE_CHAR_SEX_MALE_ON",
"CREATE_CHAR_SEX_FEMALE_ON",
};

std::string strSexBox[2] =
{
"CREATE_CHAR_SEX_MALE_BOX",
"CREATE_CHAR_SEX_FEMALE_BOX",
};

std::string strSexFocus[2] =
{
"CREATE_CHAR_SEX_MALE_FOCUS",
"CREATE_CHAR_SEX_FEMALE_FOCUS",
};

for( int i=0; i<2; ++i ){

m_pTypeSex_Off = new CUIControl;
m_pTypeSex_Off->CreateSub ( this, strSexOff.c_str() );
m_pTypeSex_Off->SetVisibleSingle ( FALSE );
RegisterControl ( m_pTypeSex_Off );

m_pTypeSex_On = new CUIControl;
m_pTypeSex_On->CreateSub ( this, strSexOn.c_str() );
m_pTypeSex_On->SetVisibleSingle ( FALSE );
RegisterControl ( m_pTypeSex_On );

m_pTypeSex_Box = new CUIControl;
m_pTypeSex_Box->CreateSub ( this, strSexBox.c_str() );
m_pTypeSex_Box->SetVisibleSingle ( FALSE );
RegisterControl ( m_pTypeSex_Box );

m_pTypeSex_Focus = new CUIControl;
m_pTypeSex_Focus->CreateSub ( this, strSexFocus.c_str(), UI_FLAG_XSIZE | UI_FLAG_YSIZE, CHARACTER_CREATE_PAGE_TYPE_SEX_MALE + i );
m_pTypeSex_Focus->SetVisibleSingle ( FALSE );
RegisterControl ( m_pTypeSex_Focus );
}


std::string strClass_Off[GLCI_NUM_8CLASS] =
{
"CREATE_CHAR_CLASS_BRAWLER_MALE_OFF",
"CREATE_CHAR_CLASS_SWORDMAN_MALE_OFF",
"CREATE_CHAR_CLASS_ARCHER_FEMALE_OFF",
"CREATE_CHAR_CLASS_SHAMAN_FEMALE_OFF",
"CREATE_CHAR_CLASS_EXTREME_MALE_OFF",
"CREATE_CHAR_CLASS_EXTREME_FEMALE_OFF",
"CREATE_CHAR_CLASS_BRAWLER_FEMALE_OFF",
"CREATE_CHAR_CLASS_SWORDMAN_FEMALE_OFF",
"CREATE_CHAR_CLASS_ARCHER_MALE_OFF",
"CREATE_CHAR_CLASS_SHAMAN_MALE_OFF",
"CREATE_CHAR_CLASS_SCIENTIST_MALE_OFF",
"CREATE_CHAR_CLASS_SCIENTIST_FEMALE_OFF",
"CREATE_CHAR_CLASS_ASSASSIN_MALE_OFF",
"CREATE_CHAR_CLASS_ASSASSIN_FEMALE_OFF",
"CREATE_CHAR_CLASS_TRICKER_MALE_OFF",
"CREATE_CHAR_CLASS_TRICKER_FEMALE_OFF",

};

std::string strClass_On[GLCI_NUM_8CLASS] =
{
"CREATE_CHAR_CLASS_BRAWLER_MALE_ON",
"CREATE_CHAR_CLASS_SWORDMAN_MALE_ON",
"CREATE_CHAR_CLASS_ARCHER_FEMALE_ON",
"CREATE_CHAR_CLASS_SHAMAN_FEMALE_ON",
"CREATE_CHAR_CLASS_EXTREME_MALE_ON",
"CREATE_CHAR_CLASS_EXTREME_FEMALE_ON",
"CREATE_CHAR_CLASS_BRAWLER_FEMALE_ON",
"CREATE_CHAR_CLASS_SWORDMAN_FEMALE_ON",
"CREATE_CHAR_CLASS_ARCHER_MALE_ON",
"CREATE_CHAR_CLASS_SHAMAN_MALE_ON",
"CREATE_CHAR_CLASS_SCIENTIST_MALE_ON",
"CREATE_CHAR_CLASS_SCIENTIST_FEMALE_ON",
"CREATE_CHAR_CLASS_ASSASSIN_MALE_ON",
"CREATE_CHAR_CLASS_ASSASSIN_FEMALE_ON",
"CREATE_CHAR_CLASS_TRICKER_MALE_ON",
"CREATE_CHAR_CLASS_TRICKER_FEMALE_ON",
};

std::string strClass_Box[GLCI_NUM_8CLASS] =
{
"CREATE_CHAR_CLASS_BRAWLER_MALE_BOX",
"CREATE_CHAR_CLASS_SWORDMAN_MALE_BOX",
"CREATE_CHAR_CLASS_ARCHER_FEMALE_BOX",
"CREATE_CHAR_CLASS_SHAMAN_FEMALE_BOX",
"CREATE_CHAR_CLASS_EXTREME_MALE_BOX",
"CREATE_CHAR_CLASS_EXTREME_FEMALE_BOX",
"CREATE_CHAR_CLASS_BRAWLER_FEMALE_BOX",
"CREATE_CHAR_CLASS_SWORDMAN_FEMALE_BOX",
"CREATE_CHAR_CLASS_ARCHER_MALE_BOX",
"CREATE_CHAR_CLASS_SHAMAN_MALE_BOX",
"CREATE_CHAR_CLASS_SCIENTIST_MALE_BOX",
"CREATE_CHAR_CLASS_SCIENTIST_FEMALE_BOX",
"CREATE_CHAR_CLASS_ASSASSIN_MALE_BOX",
"CREATE_CHAR_CLASS_ASSASSIN_FEMALE_BOX",
"CREATE_CHAR_CLASS_TRICKER_MALE_BOX",
"CREATE_CHAR_CLASS_TRICKER_FEMALE_BOX",
};

std::string strClass_Focus[GLCI_NUM_8CLASS] =
{
"CREATE_CHAR_CLASS_BRAWLER_MALE_FOCUS",
"CREATE_CHAR_CLASS_SWORDMAN_MALE_FOCUS",
"CREATE_CHAR_CLASS_ARCHER_FEMALE_FOCUS",
"CREATE_CHAR_CLASS_SHAMAN_FEMALE_FOCUS",
"CREATE_CHAR_CLASS_EXTREME_MALE_FOCUS",
"CREATE_CHAR_CLASS_EXTREME_FEMALE_FOCUS",
"CREATE_CHAR_CLASS_BRAWLER_FEMALE_FOCUS",
"CREATE_CHAR_CLASS_SWORDMAN_FEMALE_FOCUS",
"CREATE_CHAR_CLASS_ARCHER_MALE_FOCUS",
"CREATE_CHAR_CLASS_SHAMAN_MALE_FOCUS",
"CREATE_CHAR_CLASS_SCIENTIST_MALE_FOCUS",
"CREATE_CHAR_CLASS_SCIENTIST_FEMALE_FOCUS",
"CREATE_CHAR_CLASS_ASSASSIN_MALE_FOCUS",
"CREATE_CHAR_CLASS_ASSASSIN_FEMALE_FOCUS",
"CREATE_CHAR_CLASS_TRICKER_MALE_FOCUS",
"CREATE_CHAR_CLASS_TRICKER_FEMALE_FOCUS",
};

for( int i=0; i<GLCI_NUM_8CLASS; ++i ){

m_pTypeClass_Off = new CUIControl;
m_pTypeClass_Off->CreateSub ( this, strClass_Off.c_str() );
m_pTypeClass_Off->SetVisibleSingle ( FALSE );
RegisterControl ( m_pTypeClass_Off );

m_pTypeClass_On = new CUIControl;
m_pTypeClass_On->CreateSub ( this, strClass_On.c_str() );
m_pTypeClass_On->SetVisibleSingle ( FALSE );
RegisterControl ( m_pTypeClass_On );

m_pTypeClass_Box = new CUIControl;
m_pTypeClass_Box->CreateSub ( this, strClass_Box.c_str() );
m_pTypeClass_Box->SetVisibleSingle ( FALSE );
RegisterControl ( m_pTypeClass_Box );

m_pTypeClass_Focus = new CUIControl;
m_pTypeClass_Focus->CreateSub ( this, strClass_Focus.c_str(), UI_FLAG_XSIZE | UI_FLAG_YSIZE, CHARACTER_CREATE_PAGE_TYPE_CLASS_MALE_BRAWLER + i );
m_pTypeClass_Focus->SetVisibleSingle ( FALSE );
RegisterControl ( m_pTypeClass_Focus );
}

ResetAll();
}

void CCharacterCreatePageSet::TranslateUIMessage ( UIGUID ControlID, DWORD dwMsg )
{
CUIGroup::TranslateUIMessage ( ControlID, dwMsg );


switch( ControlID )
{
case CHARACTER_CREATE_PAGE_TYPE_SCHOOL_0:
case CHARACTER_CREATE_PAGE_TYPE_SCHOOL_1:
case CHARACTER_CREATE_PAGE_TYPE_SCHOOL_2:
{
if ( CHECK_MOUSE_IN ( dwMsg ) ) {
int nSelect = ControlID - CHARACTER_CREATE_PAGE_TYPE_SCHOOL_0;
SchoolMouseIn( nSelect );

if ( CHECK_MOUSEIN_LBUPLIKE ( dwMsg ) ){
SchoolSelect( nSelect );
}
}

}break;

case CHARACTER_CREATE_PAGE_TYPE_SEX_MALE:
case CHARACTER_CREATE_PAGE_TYPE_SEX_FEMALE:
{
if ( CHECK_MOUSE_IN ( dwMsg ) ) {
int nSelect = ControlID - CHARACTER_CREATE_PAGE_TYPE_SEX_MALE;
SexMouseIn( nSelect );

if ( CHECK_MOUSEIN_LBUPLIKE ( dwMsg ) ){
SexSelect( nSelect );
}
}
}break;

case CHARACTER_CREATE_PAGE_TYPE_CLASS_MALE_BRAWLER:
case CHARACTER_CREATE_PAGE_TYPE_CLASS_MALE_SWORDSMAN:
case CHARACTER_CREATE_PAGE_TYPE_CLASS_FEMALE_ARCHER:
case CHARACTER_CREATE_PAGE_TYPE_CLASS_FEMALE_SHAMAN:
case CHARACTER_CREATE_PAGE_TYPE_CLASS_MALE_EXTREME:
case CHARACTER_CREATE_PAGE_TYPE_CLASS_FEMALE_EXTREME:
case CHARACTER_CREATE_PAGE_TYPE_CLASS_FEMALE_BRAWLER:
case CHARACTER_CREATE_PAGE_TYPE_CLASS_FEMALE_SWORDSMAN:
case CHARACTER_CREATE_PAGE_TYPE_CLASS_MALE_ARCHER:
case CHARACTER_CREATE_PAGE_TYPE_CLASS_MALE_SHAMAN:
case CHARACTER_CREATE_PAGE_TYPE_CLASS_MALE_GUNNER:
case CHARACTER_CREATE_PAGE_TYPE_CLASS_FEMALE_GUNNER:
case CHARACTER_CREATE_PAGE_TYPE_CLASS_MALE_ASSASSIN:
case CHARACTER_CREATE_PAGE_TYPE_CLASS_FEMALE_ASSASSIN:
case CHARACTER_CREATE_PAGE_TYPE_CLASS_MALE_TRICKER:
case CHARACTER_CREATE_PAGE_TYPE_CLASS_FEMALE_TRICKER:
{
if ( CHECK_MOUSE_IN ( dwMsg ) ) {
int nSelect = ControlID - CHARACTER_CREATE_PAGE_TYPE_CLASS_MALE_BRAWLER;
ClassMouseIn( nSelect );

if ( CHECK_MOUSEIN_LBUPLIKE ( dwMsg ) ){
ClassSelect( nSelect );
}
}
}break;

};
}

void CCharacterCreatePageSet::Update ( int x, int y, BYTE LB, BYTE MB, BYTE RB, int nScroll, float fElapsedTime, BOOL bFirstControl )
{
for( int i=0; i<GLSCHOOL_NUM; ++i ){
m_pTypeSchool_Box->SetVisibleSingle( FALSE );
}

for( int i=0; i<2; ++i ){
m_pTypeSex_Box->SetVisibleSingle( FALSE );
}

for( int i=0; i<GLCI_NUM_8CLASS; ++i ){
m_pTypeClass_Box->SetVisibleSingle( FALSE );
}

CUIGroup::Update( x, y, LB, MB, RB, nScroll, fElapsedTime, bFirstControl );

if ( m_nSelectedSchool != m_nSelectedLastSchool ||
m_nSelectedSex != m_nSelectedLastSex ||
m_nSelectedClass != m_nSelectedLastClass )
{
UpdateUI();

m_nSelectedLastSchool = m_nSelectedSchool;
m_nSelectedLastSex = m_nSelectedSex;
m_nSelectedLastClass = m_nSelectedClass;
}
}

void CCharacterCreatePageSet::ResetAll()
{
m_nSelectedSchool = -1;
m_nSelectedSex = -1;
m_nSelectedClass = -1;

for( int i=0; i<GLSCHOOL_NUM; ++i ){
m_pTypeSchool_Off->SetVisibleSingle( TRUE );
m_pTypeSchool_On->SetVisibleSingle( FALSE );
m_pTypeSchool_Box->SetVisibleSingle( FALSE );
m_pTypeSchool_Focus->SetVisibleSingle( TRUE );
}

for( int i=0; i<2; ++i ){
m_pTypeSex_Off->SetVisibleSingle( TRUE );
m_pTypeSex_On->SetVisibleSingle( FALSE );
m_pTypeSex_Box->SetVisibleSingle( FALSE );
m_pTypeSex_Focus->SetVisibleSingle( TRUE );
}

for( int i=0; i<GLCI_NUM_8CLASS; ++i ){
m_pTypeClass_On->SetVisibleSingle( FALSE );
m_pTypeClass_Box->SetVisibleSingle( FALSE );
}

for( int i=0; i<GLCI_NUM_8CLASS; ++i ){
BOOL bVisible = ( i == GLCI_BRAWLER_M ||
i == GLCI_SWORDSMAN_M ||
i == GLCI_ARCHER_M ||
i == GLCI_SHAMAN_M ||
i == GLCI_EXTREME_M ||
i == GLCI_GUNNER_M ||
i == GLCI_ASSASSIN_M||
i == GLCI_TRICKER_M );

if ( i == GLCI_EXTREME_M && !COuterInterface::GetInstance().GetCharRemainExM() ){
bVisible = FALSE;
}

if ( i == GLCI_EXTREME_W && !COuterInterface::GetInstance().GetCharRemainExW() ){
bVisible = FALSE;
}

if ( (i == GLCI_GUNNER_M || i == GLCI_GUNNER_W ) /*&& !m_bCreateClassGunner*/ ){ //enable gunner
bVisible = FALSE;
}

if ( (i == GLCI_ASSASSIN_M || i == GLCI_ASSASSIN_W ) /*&& !m_bCreateClassAssassin*/ ){
bVisible = FALSE;
}

if ( (i == GLCI_TRICKER_M || i == GLCI_TRICKER_W ) /*&& !m_bCreateClassMagician*/ ){
bVisible = FALSE;
}

m_pTypeClass_Off->SetVisibleSingle( bVisible );
m_pTypeClass_Focus->SetVisibleSingle( bVisible );
}
}

void CCharacterCreatePageSet::UpdateUI()
{
for( int i=0; i<GLSCHOOL_NUM; ++i ){
m_pTypeSchool_Off->SetVisibleSingle( TRUE );
m_pTypeSchool_On->SetVisibleSingle( FALSE );
}

for( int i=0; i<2; ++i ){
m_pTypeSex_Off->SetVisibleSingle( TRUE );
m_pTypeSex_On->SetVisibleSingle( FALSE );
}

for( int i=0; i<GLCI_NUM_8CLASS; ++i ){
BOOL bVisible = ( i == GLCI_BRAWLER_M ||
i == GLCI_SWORDSMAN_M ||
i == GLCI_ARCHER_M ||
i == GLCI_SHAMAN_M ||
i == GLCI_EXTREME_M ||
i == GLCI_GUNNER_M ||
i == GLCI_ASSASSIN_M ||
i == GLCI_TRICKER_M );

if ( i == GLCI_EXTREME_M && !COuterInterface::GetInstance().GetCharRemainExM() ){
bVisible = FALSE;
}

if ( i == GLCI_EXTREME_W && !COuterInterface::GetInstance().GetCharRemainExW() ){
bVisible = FALSE;
}

if ( (i == GLCI_GUNNER_M || i == GLCI_GUNNER_W ) && !m_bCreateClassGunner ){
bVisible = FALSE;
}

if ( (i == GLCI_ASSASSIN_M || i == GLCI_ASSASSIN_W ) /*&& !m_bCreateClassAssassin*/ ){
bVisible = FALSE;
}

if ( (i == GLCI_TRICKER_M || i == GLCI_TRICKER_W ) /*&& !m_bCreateClassMagician*/ ){
bVisible = FALSE;
}

m_pTypeClass_On->SetVisibleSingle( FALSE );
m_pTypeClass_Off->SetVisibleSingle( bVisible );
m_pTypeClass_Focus->SetVisibleSingle( bVisible );
}

BOOL bValidSchool = FALSE;
BOOL bValidSex = FALSE;
BOOL bValidClass = FALSE;

if ( m_nSelectedSchool >= 0 && m_nSelectedSchool < GLSCHOOL_NUM )
{
m_pTypeSchool_On[m_nSelectedSchool]->SetVisibleSingle( TRUE );
bValidSchool = TRUE;
}

if ( m_nSelectedSex >= 0 && m_nSelectedSex < 2 )
{
m_pTypeSex_On[m_nSelectedSex]->SetVisibleSingle( TRUE );
bValidSex = TRUE;

for( int i=0; i<GLCI_NUM_8CLASS; ++i ){
m_pTypeClass_Off->SetVisibleSingle( FALSE );
m_pTypeClass_Focus->SetVisibleSingle( FALSE );
}

int nMale[GLCI_NUM_8CLASS/2] = { GLCI_BRAWLER_M, GLCI_SWORDSMAN_M, GLCI_ARCHER_M, GLCI_SHAMAN_M, GLCI_EXTREME_M, GLCI_GUNNER_M, GLCI_ASSASSIN_M, GLCI_TRICKER_M };
int nFemale[GLCI_NUM_8CLASS/2] = { GLCI_BRAWLER_W, GLCI_SWORDSMAN_W, GLCI_ARCHER_W, GLCI_SHAMAN_W, GLCI_EXTREME_W, GLCI_GUNNER_W, GLCI_ASSASSIN_W, GLCI_TRICKER_W };

for ( int i=0; i<(GLCI_NUM_8CLASS/2); ++ i ){
int nSelect = (m_nSelectedSex == 1)? nFemale : nMale;
if ( nSelect == GLCI_EXTREME_M && !COuterInterface::GetInstance().GetCharRemainExM() ) continue;
if ( nSelect == GLCI_EXTREME_W && !COuterInterface::GetInstance().GetCharRemainExW() ) continue;

if ( nSelect == GLCI_GUNNER_M && !m_bCreateClassGunner ) continue;
if ( nSelect == GLCI_GUNNER_W && !m_bCreateClassGunner ) continue;

if ( nSelect == GLCI_ASSASSIN_M /*&& !m_bCreateClassAssassin*/ ) continue;
if ( nSelect == GLCI_ASSASSIN_W /*&& !m_bCreateClassAssassin*/ ) continue;

if ( nSelect == GLCI_TRICKER_M /*&& !m_bCreateClassMagician*/ ) continue;
if ( nSelect == GLCI_TRICKER_W /*&& !m_bCreateClassMagician */ ) continue;

m_pTypeClass_Off[nSelect]->SetVisibleSingle( TRUE );
m_pTypeClass_Focus[nSelect]->SetVisibleSingle( TRUE );
}
}

if ( m_nSelectedClass >= 0 && m_nSelectedClass < GLCI_NUM_8CLASS )
{
m_pTypeClass_On[m_nSelectedClass]->SetVisibleSingle( TRUE );
bValidClass = TRUE;
}

COuterInterface::GetInstance().GetCharacterCreateInfo()->SetData( m_nSelectedSchool, m_nSelectedSex, m_nSelectedClass );

if ( m_nSelectedClass == GLCI_EXTREME_M && !COuterInterface::GetInstance().GetCharRemainExM() ){
bValidClass = FALSE;
}

if ( m_nSelectedClass == GLCI_EXTREME_W && !COuterInterface::GetInstance().GetCharRemainExW() ){
bValidClass = FALSE;
}

if ( ( m_nSelectedClass == GLCI_GUNNER_M || m_nSelectedClass == GLCI_GUNNER_W ) && !m_bCreateClassGunner ){
bValidClass = FALSE;
}

if ( ( m_nSelectedClass == GLCI_ASSASSIN_M || m_nSelectedClass == GLCI_ASSASSIN_W ) /*&& !m_bCreateClassAssassin*/ ){
bValidClass = FALSE;
}

if ( ( m_nSelectedClass == GLCI_TRICKER_M || m_nSelectedClass == GLCI_TRICKER_W ) /*&& !m_bCreateClassMagician*/ ){
bValidClass = FALSE;
}

if ( bValidSchool && bValidSex && bValidClass )
{
DxGlobalStage::GetInstance().GetLobyStage()->SelCharSchool( m_nSelectedSchool );
DxGlobalStage::GetInstance().GetLobyStage()->SelCharClass( m_nSelectedClass );
DxGlobalStage::GetInstance().GetLobyStage()->SetStyleStep( TRUE );
}else{
DxGlobalStage::GetInstance().GetLobyStage()->SetStyleStep( FALSE );
}
}

void CCharacterCreatePageSet::SchoolSelect( int nSelect )
{
if ( nSelect < 0 ) return;
if ( nSelect >= GLSCHOOL_NUM ) return;
if ( nSelect == m_nSelectedSchool ) return;

m_nSelectedSchool = nSelect;
m_nSelectedSex = -1;
m_nSelectedClass = -1;
}

void CCharacterCreatePageSet::SexSelect( int nSelect )
{
if ( nSelect < 0 ) return;
if ( nSelect >= 2 ) return;
if ( nSelect == m_nSelectedSex ) return;

if ( m_nSelectedSchool < 0 || m_nSelectedSchool >= GLSCHOOL_NUM )
{
DoModalOuter ( ID2GAMEEXTEXT ( "NEW_CHAR_SELECT_SCHOOL_ERROR" ), MODAL_INFOMATION, OK );
return;
}

m_nSelectedSex = nSelect;
m_nSelectedClass = -1;
}

void CCharacterCreatePageSet::ClassSelect( int nSelect )
{
if ( nSelect < 0 ) return;
if ( nSelect >= GLCI_NUM_8CLASS ) return;

if ( m_nSelectedSchool < 0 || m_nSelectedSchool >= GLSCHOOL_NUM )
{
DoModalOuter ( ID2GAMEEXTEXT ( "NEW_CHAR_SELECT_SCHOOL_ERROR" ), MODAL_INFOMATION, OK );
return;
}

if ( m_nSelectedSex < 0 || m_nSelectedSex >= 2 )
{
DoModalOuter ( ID2GAMEEXTEXT ( "NEW_CHAR_SELECT_SEX_ERROR" ), MODAL_INFOMATION, OK );
return;
}

m_nSelectedClass = nSelect;
}

void CCharacterCreatePageSet::SchoolMouseIn( int nSelect )
{
if ( nSelect < 0 ) return;
if ( nSelect >= GLSCHOOL_NUM ) return;
m_pTypeSchool_Box[nSelect]->SetVisibleSingle( TRUE );
}

void CCharacterCreatePageSet::SexMouseIn( int nSelect )
{
if ( nSelect < 0 ) return;
if ( nSelect >= 2 ) return;
m_pTypeSex_Box[nSelect]->SetVisibleSingle( TRUE );
}

void CCharacterCreatePageSet::ClassMouseIn( int nSelect )
{
if ( nSelect < 0 ) return;
if ( nSelect >= GLCI_NUM_8CLASS ) return;
m_pTypeClass_Box[nSelect]->SetVisibleSingle( TRUE );
}


Not yet bro, how about you? still got the bugtrap on emulator



I think the problem is on the global ranking feature, whenever i put the feature, the bugtrap suddenly appears on the emulator
 
Upvote 0
Junior Spellweaver
Joined
Feb 17, 2022
Messages
177
Reaction score
8
Not yet bro, how about you? still got the bugtrap on emulator



I think the problem is on the global ranking feature, whenever i put the feature, the bugtrap suddenly appears on the emulator

not yet also... you already enable assassin class from your source? what cpp you edit?
 
Upvote 0
Master Summoner
Joined
Feb 6, 2019
Messages
575
Reaction score
159
compare this yours if you wanna make the class availabilty using config.ini make sure you add the bCreateGunner/assassin/magician on your ranparam.ini


not yet also... you already enable assassin class from your source? what cpp you edit?



merging global ranking sometimes has alot of problems. when you fix the bugtrap it will error of no data showing.
Not yet bro, how about you? still got the bugtrap on emulator



I think the problem is on the global ranking feature, whenever i put the feature, the bugtrap suddenly appears on the emulator
 
Last edited:
Upvote 0
Back
Top