📄 gmtoolmanager.cpp
字号:
msg.Protocol = MP_CHEAT_BANMAP_SYN;
msg.dwObjectID = HEROID;
msg.wData1 = wMapNum;
msg.wData2 = wExceptSelf;
NETWORK->Send( &msg, sizeof(msg) );
}
return TRUE;
}
BOOL CGMToolManager::OnBlockCommand()
{
if( !HERO ) return FALSE;
if( !m_hWndSub[eMenu_Block] ) return FALSE;
SetFocus( _g_hWnd );
char buf[MAX_NAME_LENGTH+1] = { 0, };
int nLen = GetDlgItemText( m_hWndSub[eMenu_Block], IDC_GMBLOCK_EDT_CHAR, buf, MAX_NAME_LENGTH+1 );
if( strncmp( HERO->GetObjectName(), buf, MAX_NAME_LENGTH ) == 0 )
return FALSE;
if( nLen < 4 || nLen > MAX_NAME_LENGTH ) return FALSE;
if( (FILTERTABLE->IsInvalidCharInclude((unsigned char*)buf)) == TRUE )
return FALSE;
BOOL bBlock;
if( SendMessage( GetDlgItem( m_hWndSub[eMenu_Block], IDC_GMBLOCK_BTN_BLOCK ), BM_GETCHECK, 0, 0 ) == BST_CHECKED )
bBlock = TRUE;
else
bBlock = FALSE;
MSG_NAME_DWORD msg;
msg.Category = MP_CHEAT;
msg.Protocol = MP_CHEAT_BLOCKCHARACTER_SYN;
msg.dwObjectID = HEROID;
msg.dwData = (DWORD)bBlock;
SafeStrCpy( msg.Name, buf, MAX_NAME_LENGTH+1 );
NETWORK->Send(&msg,sizeof(msg));
if( bBlock )
{ //disconnect
MSG_NAME msg;
msg.Category = MP_CHEAT;
msg.Protocol = MP_CHEAT_BANCHARACTER_SYN;
msg.dwObjectID = HEROID;
SafeStrCpy( msg.Name, buf, MAX_NAME_LENGTH + 1 );
NETWORK->Send(&msg,sizeof(msg));
return TRUE;
}
return TRUE;
}
BOOL CGMToolManager::OnWhereCommand()
{
if( !m_hWndSub[eMenu_Where] ) return FALSE;
SetFocus( _g_hWnd );
MSG_NAME msg;
msg.Category = MP_CHEAT;
msg.Protocol = MP_CHEAT_WHEREIS_SYN;
msg.dwObjectID = HEROID;
int nLen = GetDlgItemText( m_hWndSub[eMenu_Where], IDC_GMWHERE_EDT_USER, msg.Name, MAX_NAME_LENGTH+1 );
if( nLen < 4 || nLen > MAX_NAME_LENGTH ) return FALSE;
msg.Name[MAX_NAME_LENGTH] = 0;
if( (FILTERTABLE->IsInvalidCharInclude((unsigned char*)msg.Name)) == TRUE )
{
return TRUE;
}
NETWORK->Send( &msg, sizeof(msg) );
//檬扁拳
SetDlgItemText( m_hWndSub[eMenu_Where], IDC_GMWHERE_EDT_MAP, "" );
SetDlgItemInt( m_hWndSub[eMenu_Where], IDC_GMWHERE_EDT_CHANNEL, 0, TRUE );
SetDlgItemInt( m_hWndSub[eMenu_Where], IDC_GMWHERE_EDT_X, 0, TRUE );
SetDlgItemInt( m_hWndSub[eMenu_Where], IDC_GMWHERE_EDT_Y, 0, TRUE );
//
return TRUE;
}
void CGMToolManager::DisplayWhereInfo( char* MapName, int nChannel, int nX, int nY )
{
if( !m_hWndSub[eMenu_Where] ) return;
SetFocus( _g_hWnd );
SetDlgItemText( m_hWndSub[eMenu_Where], IDC_GMWHERE_EDT_MAP, MapName );
SetDlgItemInt( m_hWndSub[eMenu_Where], IDC_GMWHERE_EDT_CHANNEL, nChannel, FALSE );
SetDlgItemInt( m_hWndSub[eMenu_Where], IDC_GMWHERE_EDT_X, nX, FALSE );
SetDlgItemInt( m_hWndSub[eMenu_Where], IDC_GMWHERE_EDT_Y, nY, FALSE );
}
BOOL CGMToolManager::OnHideCommand()
{
if( !m_hWndSub[eMenu_Hide] ) return FALSE;
SetFocus( _g_hWnd );
// char buf[MAX_NAME_LENGTH+1] = {0,};
int nLen = 0;
BOOL bHide = TRUE;
if( SendMessage( GetDlgItem( m_hWndSub[eMenu_Hide], IDC_GMHIDE_BTN_HIDE ), BM_GETCHECK, 0, 0 ) == BST_CHECKED )
bHide = TRUE;
else
bHide = FALSE;
MSG_NAME_DWORD msg;
msg.Category = MP_CHEAT;
msg.Protocol = MP_CHEAT_HIDE_SYN;
msg.dwObjectID = HEROID;
msg.dwData = (DWORD)bHide;
if( SendMessage( GetDlgItem( m_hWndSub[eMenu_Hide], IDC_GMHIDE_BTN_USER ), BM_GETCHECK, 0, 0 ) == BST_CHECKED )
{
nLen = GetDlgItemText( m_hWndSub[eMenu_Hide], IDC_GMHIDE_EDT_USER, msg.Name, MAX_NAME_LENGTH+1 );
if( nLen < 4 || nLen > MAX_NAME_LENGTH )
return FALSE;
}
else
{
msg.Name[0] = 0; //hero
}
msg.Name[MAX_NAME_LENGTH] = 0;
NETWORK->Send( &msg, sizeof(msg) );
return TRUE;
}
BOOL CGMToolManager::OnChatCommand()
{
if( !m_hWndSub[eMenu_Chat] ) return FALSE;
SetFocus( _g_hWnd );
char buf[MAX_NAME_LENGTH+1] = {0,};
int nLen = 0;
BOOL bAllow = TRUE;
int nTime = 0;
if( SendMessage( GetDlgItem( m_hWndSub[eMenu_Move], IDC_GMCHAT_BTN_USER ), BM_GETCHECK, 0, 0 ) == BST_CHECKED )
{
nLen = GetDlgItemText( m_hWndSub[eMenu_Move], IDC_GMCHAT_EDT_USER, buf, MAX_NAME_LENGTH+1 );
if( nLen > MAX_NAME_LENGTH || nLen < 4 ) return FALSE;
if( SendMessage( GetDlgItem( m_hWndSub[eMenu_Move], IDC_GMCHAT_BTN_NOCHAT ), BM_GETCHECK, 0, 0 ) == BST_CHECKED )
{
bAllow = FALSE;
BOOL bRt;
nTime = GetDlgItemInt( m_hWndSub[eMenu_Move], IDC_GMCHAT_EDT_TIME, &bRt, TRUE );
if( !bRt ) return FALSE;
}
else
{
bAllow = TRUE;
}
//msg
//username;
//time;
//
}
else
{
}
return TRUE;
}
BOOL CGMToolManager::OnPKCommand()
{
if( !m_hWndSub[eMenu_PK] ) return FALSE;
SetFocus( _g_hWnd );
char buf[MAX_NAME_LENGTH+1] = {0,};
int nLen = GetDlgItemText( m_hWndSub[eMenu_PK], IDC_GMPK_CMB_MAP, buf, MAX_NAME_LENGTH+1 );
if( nLen > MAX_NAME_LENGTH ) return FALSE;
WORD wMapNum = GetMapNumForName( buf );
if( wMapNum == 0 ) return FALSE;
int nChannel = SendDlgItemMessage( m_hWndSub[eMenu_PK], IDC_GMPK_CMB_CHANNEL, CB_GETCURSEL, 0, 0 ) + 1;
MSG_WORD2 msg;
msg.Category = MP_CHEAT;
msg.Protocol = MP_CHEAT_PKALLOW_SYN;
msg.dwObjectID = HEROID;
msg.wData1 = wMapNum;
if( SendMessage( GetDlgItem( m_hWndSub[eMenu_PK], IDC_GMPK_BTN_NOPK ), BM_GETCHECK, 0, 0 ) == BST_CHECKED )
{
msg.wData2 = 0; //not allow
}
else
{
msg.wData2 = 1; //allow
}
NETWORK->Send(&msg,sizeof(msg));
return TRUE;
}
BOOL CGMToolManager::OnRegenCommand()
{
if( !m_hWndSub[eMenu_Mob] ) return FALSE;
SetFocus( _g_hWnd );
char buf[MAX_ITEMNAME_LENGTH+1] = {0,};
if( SendMessage( GetDlgItem( m_hWndSub[eMenu_Mob], IDC_GMREGEN_BTN_MODEDIRECT ), BM_GETCHECK, 0, 0 ) == BST_CHECKED )
{
//mob
int nSel = SendDlgItemMessage( m_hWndSub[eMenu_Mob], IDC_GMREGEN_CMB_MOBNAME, CB_GETCURSEL, 0, 0 );
// BYTE bBoss = 0;
BASE_MONSTER_LIST* pList = NULL;
if( nSel < m_lBossStartIndex )
{
pList = GAMERESRCMNGR->GetMonsterListInfo( nSel + 1 );
}
else
{
pList = GAMERESRCMNGR->GetMonsterListInfo( 1000 + nSel - m_lBossStartIndex );
// bBoss = 1;
}
if( pList == NULL ) return FALSE;
//mob count
BOOL rt;
int nMobCount = GetDlgItemInt( m_hWndSub[eMenu_Mob], IDC_GMREGEN_EDT_MOBNUM, &rt, TRUE );
if( !rt ) return FALSE;
if( nMobCount <= 0 ) return FALSE;
if( nMobCount > 100 ) return FALSE; //烙矫肺 茄锅俊 100俺 鳖瘤父
//map
int nLen = GetDlgItemText( m_hWndSub[eMenu_Mob], IDC_GMREGEN_CMB_MAP, buf, MAX_NAME_LENGTH+1 );
if( nLen == 0 ) return FALSE;
buf[MAX_NAME_LENGTH] = 0;
WORD wMapNum = GetMapNumForName( buf );
if( wMapNum == 0 ) return FALSE;
//channel
//int nChannel = GetDlgItemInt( m_hWndSub[eMenu_Mob], IDC_GMREGEN_EDT_CHANNEL, &rt, TRUE );
int nChannel = SendDlgItemMessage( m_hWndSub[eMenu_Mob], IDC_GMREGEN_CMB_CHANNEL, CB_GETCURSEL, 0, 0 );
//if( !rt ) return FALSE;
if( nChannel < 0 ) return FALSE;
if( nChannel > m_cbChannelCount ) return FALSE;
//pos & radius
int nX = GetDlgItemInt( m_hWndSub[eMenu_Mob], IDC_GMREGEN_EDT_X, &rt, TRUE ) * 100;
if( !rt ) return FALSE;
int nY = GetDlgItemInt( m_hWndSub[eMenu_Mob], IDC_GMREGEN_EDT_Y, &rt, TRUE ) * 100;
if( !rt ) return FALSE;
int nRad = GetDlgItemInt( m_hWndSub[eMenu_Mob], IDC_GMREGEN_EDT_RAD, &rt, TRUE ) * 100;
if( !rt ) return FALSE;
if( nX < 0 ) nX = 0; //弥措蔼 眉农眠啊
if( nY < 0 ) nY = 0;
if( nRad < 0 ) nRad = 0;
else if( nRad > 10000 ) nRad = 10000; //馆版 100m肺 力茄
VECTOR3 vPos = { (float)nX, 0.0f, (float)nY };
//Item
nLen = GetDlgItemText( m_hWndSub[eMenu_Mob], IDC_GMREGEN_CMB_ITEM, buf, MAX_ITEMNAME_LENGTH+1 );
if( nLen == 0 ) return FALSE;
buf[MAX_ITEMNAME_LENGTH] = 0;
ITEM_INFO* pInfo = ITEMMGR->FindItemInfoForName( buf );
if( pInfo == NULL ) return FALSE;
//Drop Ratio
int nDropRatio = GetDlgItemInt( m_hWndSub[eMenu_Mob], IDC_GMREGEN_EDT_ITEM, &rt, TRUE );
if( !rt ) return FALSE;
if( nDropRatio < 0 ) return FALSE;
if( nDropRatio > 100 ) return FALSE;
MSG_EVENT_MONSTERREGEN msg;
msg.Category = MP_CHEAT;
msg.Protocol = MP_CHEAT_EVENT_MONSTER_REGEN;
msg.dwObjectID = HEROID;
msg.MonsterKind = pList->MonsterKind;
msg.cbMobCount = nMobCount;
msg.wMap = wMapNum;
msg.cbChannel = (BYTE)nChannel;
msg.Pos = vPos;
msg.wRadius = (WORD)nRad;
msg.ItemID = pInfo->ItemIdx;
msg.dwDropRatio = (DWORD)nDropRatio;
// msg.bBoss = bBoss;
NETWORK->Send( &msg,sizeof(msg) );
}
else if( SendMessage( GetDlgItem( m_hWndSub[eMenu_Mob], IDC_GMREGEN_BTN_MODEFILE ), BM_GETCHECK, 0, 0 ) == BST_CHECKED )
{
char lpstrFile[MAX_PATH] = {0,};
GetDlgItemText( m_hWndSub[eMenu_Mob], IDC_GMREGEN_EDT_FILE, lpstrFile, MAX_PATH );
if( lpstrFile[0] == 0 )
return FALSE;
CMHFile fp;
if( !fp.Init( lpstrFile, "rt" ) )
return FALSE;
char buff[256]={0,};
while(1)
{
fp.GetString(buff);
if(fp.IsEOF())
break;
if(buff[0] == '@')
{
fp.GetLineX(buff, 256);
continue;
}
if( strcmp( buff, "$REGEN" ) == 0 )
{
DWORD dwGroup = fp.GetDword();
if( dwGroup == 0 )
{
fp.Release();
return FALSE;
}
if((fp.GetString())[0] == '{')
{
MSG_EVENT_MONSTERREGEN msg;
msg.Category = MP_CHEAT;
msg.Protocol = MP_CHEAT_EVENT_MONSTER_REGEN;
msg.dwObjectID = HEROID;
msg.MonsterKind = GAMERESRCMNGR->GetMonsterIndexForName( fp.GetString() );
msg.cbMobCount = fp.GetByte();
msg.wMap = GetMapNumForName( fp.GetString() );
msg.cbChannel = fp.GetByte();
msg.Pos.x = (float)fp.GetWord() * 100.0f;
msg.Pos.z = (float)fp.GetWord() * 100.0f;
msg.wRadius = fp.GetWord()*100;
ITEM_INFO* pInfo = ITEMMGR->FindItemInfoForName( fp.GetString() );
if( pInfo )
msg.ItemID = pInfo->ItemIdx;
else
msg.ItemID = 0;
msg.dwDropRatio = fp.GetDword();
if( msg.MonsterKind == 0 || msg.wMap == 0 || msg.cbChannel > m_cbChannelCount
|| ( msg.ItemID == 0 && msg.dwDropRatio != 0 ) )
{
ASSERT(0);
}
else
{
NETWORK->Send( &msg,sizeof(msg) );
}
}
else
{
fp.Release();
return FALSE;
}
if((fp.GetString())[0] != '}')
{
fp.Release();
return FALSE;
}
}
}
fp.Release();
}
else if( SendMessage( GetDlgItem( m_hWndSub[eMenu_Mob], IDC_GMREGEN_BTN_DELETE ), BM_GETCHECK, 0, 0 ) == BST_CHECKED )
{
MSGBASE msg;
msg.Category = MP_CHEAT;
msg.Protocol = MP_CHEAT_EVENT_MONSTER_DELETE;
msg.dwObjectID = HEROID;
NETWORK->Send( &msg, sizeof(msg) );
}
else
{
return FALSE;
}
return TRUE;
}
#define MAX_PREFACE_LENGTH 30
BOOL CGMToolManager::OnNoticeCommand()
{
if( !m_hWndSub[eMenu_Notice] ) return FALSE;
SetFocus( _g_hWnd );
char buf[MAX_CHAT_LENGTH+1] = {0,};
char bufMap[MAX_NAME_LENGTH+1] = {0,};
int nLen = GetWindowText( GetDlgItem( m_hWndSub[eMenu_Notice], IDC_GMNOTICE_EDT_PREFACE ), buf, MAX_PREFACE_LENGTH+1 );
int nLen2 = GetWindowText( GetDlgItem( m_hWndSub[eMenu_Notice], IDC_GMNOTICE_EDT_NOTICE ), buf+nLen, MAX_CHAT_LENGTH-MAX_PREFACE_LENGTH );
if( nLen2 == 0 ) return FALSE;
// if( strlen( buf ) == 0 ) return FALSE;
MSG_CHAT_WORD msg;
msg.Category = MP_CHEAT;
msg.Protocol = MP_CHEAT_NOTICE_SYN;
msg.dwObjectID = HEROID;
SafeStrCpy( msg.Msg, buf, MAX_CHAT_LENGTH+1 );
if( SendMessage( GetDlgItem( m_hWndSub[eMenu_Notice], IDC_GMNOTICE_BTN_ALLMAP ), BM_GETCHECK, 0, 0 ) == BST_CHECKED )
{
msg.wData = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -