⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cheatmsgparser.cpp

📁 墨香最新私服
💻 CPP
字号:
// CheatMsgParser.cpp: implementation of the CCheatMsgParser class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "ChatManager.h"
#include "CheatMsgParser.h"
#include "mhnetwork.h"
#include "objectmanager.h"
#include "Movemanager.h"
#include "ItemManager.h"
#include "DebugDlg.h"
#include "GameIn.h"
#include "MAINGAME.h"
#include "StatsCalcManager.h"
#include "PeaceWarModeManager.h"
#include "ObjectStateManager.h"
#include "./Audio/MHAudioManager.h"
#include "FilteringTable.h"
#ifdef _GMTOOL_
#include "GMToolManager.h"
#endif

#include "mhfile.h"

#include "InventoryExDialog.h"
#include "WindowIdEnum.h"
#include "./Interface/cWindowManager.h"
#include "cDivideBox.h"
#include "QuickManager.h"
#include "UserInfoManager.h"

#include "MapChange.h"
#include "EventMapInfo.h"

#ifdef _GMTOOL_
#include "MHCamera.h"
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
GLOBALTON(CCheatMsgParser)

#ifdef _CHEATENABLE_

BOOL CheatFunc(char* cheat)
{
	char code[256];
	char buf[128];
	sscanf(cheat,"%s",code);
	strupr(code);

//	//KES CHEAT!!!
/*
	if(strcmp(code,"MAPNAME")==0)
	{
		if( strcmp( USERINFOMGR->GetUserID(), "mkteam2" ) != 0 
			&& strcmp( USERINFOMGR->GetUserID(), "MKTEAM2" ) != 0
			&& strcmp( USERINFOMGR->GetUserID(), "andyamy" ) != 0 )///
			return FALSE;

		//MAPTYPE mapnum;
		sscanf(cheat,"%s %s",code,buf);

		WORD mapnum = GetMapNumForName( buf );

		if( mapnum == 0 )
			return TRUE;

		MSG_NAME_DWORD2 msg;
		msg.Category	= MP_CHEAT;
		msg.Protocol	= MP_CHEAT_CHANGEMAP_SYN;
		msg.dwObjectID	= HEROID;
		msg.dwData1		= (DWORD)mapnum;
		msg.dwData2		= (DWORD)gChannelNum;
		msg.Name[0]		= 0;		
		NETWORK->Send( &msg, sizeof(msg) );

		return TRUE;
	}
//
*/
	
	if( strcmp(code,"MONEYBEGETSMONEY") == 0 )
	{
		CHEATMGR->SetCheatEnable( TRUE );
		
		CHATMGR->AddMsg( CTC_CHEAT_1, "01001010010101110100101010101010010010011" );
		CHATMGR->AddMsg( CTC_CHEAT_1, "01001 [ Welcome To the Real World ] 11011" );
		CHATMGR->AddMsg( CTC_CHEAT_1, "11001101010100111010100001010010101111011" );
		
		return TRUE;
	}

	if( !CHEATMGR->IsCheatEnable() ) return FALSE;


	if(strcmp(code,"CAMERAMODE")==0)
	{
		WORD onoff;
		sscanf(cheat,"%s %d",code,&onoff);

		if(onoff)
			HERO->GetEngineObject()->Show();
		else
			HERO->GetEngineObject()->Hide();

		MSG_DWORD2 msg;
		msg.Category = MP_USERCONN;
		msg.Protocol = MP_USERCONN_SETVISIBLE;
		msg.dwObjectID = HEROID;
		msg.dwData1 = HEROID;
		msg.dwData2 = onoff;
		NETWORK->Send(&msg,sizeof(msg));
		return TRUE;
	}
	else if(strcmp(code,"MOVE")==0)
	{
		float x,z;
		sscanf(cheat,"%s %f %f",code,&x,&z);

		VECTOR3 pos;
		pos.x = x;
		pos.y = 0;
		pos.z = z;

#ifdef _TESTCLIENT_
		MOVEMGR->SetPosition(HERO,&pos);
#else
		MOVE_POS msg;
		msg.Category = MP_CHEAT;
		msg.Protocol = MP_CHEAT_MOVE_SYN;
		msg.dwObjectID = HEROID;
		msg.dwMoverID = HEROID;
		msg.cpos.Compress(&pos);
		NETWORK->Send(&msg,sizeof(msg));
#endif
		return TRUE;
	}
	else if(strcmp(code,"MAP")==0)
	{
		MAPTYPE mapnum;
		sscanf(cheat,"%s %d",code,&mapnum);

		MSG_NAME_DWORD2 msg;
		msg.Category	= MP_CHEAT;
		msg.Protocol	= MP_CHEAT_CHANGEMAP_SYN;
		msg.dwObjectID	= HEROID;
		msg.dwData1		= (DWORD)mapnum;
		msg.dwData2		= (DWORD)gChannelNum;
		msg.Name[0]		= 0;		
		NETWORK->Send( &msg, sizeof(msg) );

		return TRUE;
	}
	else if(strcmp(code,"LIFE")==0)
	{		
		WORD life;
		sscanf(cheat,"%s %d",code,&life);

#ifdef _TESTCLIENT_
//		STATSMGR->Set_Life(HERO,life);
#else
		MSG_WORD msg;
		msg.Category = MP_CHEAT;
		msg.Protocol = MP_CHEAT_LIFE_SYN;
		msg.dwObjectID = HEROID;
		msg.wData = life;
		NETWORK->Send(&msg,sizeof(msg));
#endif

		return TRUE;
	}
	else if(strcmp(code,"RELOAD")==0)
	{
		MSGBASE msg;
		msg.Category = MP_CHEAT;
		msg.Protocol = MP_CHEAT_RELOADING;
		msg.dwObjectID = HEROID;
		NETWORK->Send(&msg,sizeof(msg));
		return TRUE;
	}
	else if(strcmp(code,"MP")==0)
	{		
		WORD mp;
		sscanf(cheat,"%s %d",code,&mp);

		MSG_WORD msg;
		msg.Category = MP_CHEAT;
		msg.Protocol = MP_CHEAT_MP_SYN;
		msg.dwObjectID = HEROID;
		msg.wData = mp;
		NETWORK->Send(&msg,sizeof(msg));
		return TRUE;
	}
	else if(strcmp(code,"ITEM")==0)
	{
		WORD item;
		sscanf(cheat,"%s %d",code,&item);

		MSG_WORD2 msg;
		msg.Category = MP_CHEAT;
		msg.Protocol = MP_CHEAT_ITEM_SYN;
		msg.dwObjectID = HEROID;
		msg.wData1 = item;
		msg.wData2 = 1;
		NETWORK->Send(&msg,sizeof(msg));
		return TRUE;
	}
	else if(strcmp(code, "DS") == 0)
	{
		CDebugDlg* pDbg = GAMEIN->GetDebugDlg();
		pDbg->SetActive(TRUE);
		return TRUE;
	}
	else if(strcmp(code, "DH") == 0)
	{
		CDebugDlg* pDbg = GAMEIN->GetDebugDlg();
		pDbg->SetActive(FALSE);
		return TRUE;
	}
	else if(strcmp(code, "MANA") == 0)
	{
		WORD mp;
		sscanf(cheat,"%s %d",code,&mp);

		MSG_WORD msg;
		msg.Category = MP_CHEAT;
		msg.Protocol = MP_CHEAT_MANA_SYN;
		msg.dwObjectID = HEROID;
		msg.wData = mp;
		NETWORK->Send(&msg,sizeof(msg));
		return TRUE;

	}
	/*
	else if(strcmp(code, "MUNPAFIELD_REQ") == 0)
	{
		DWORD munpaid;
		sscanf(cheat,"%s %d",code,&munpaid);

		MSG_DWORD msg;
		msg.Category = MP_BATTLE;
		msg.Protocol = MP_BATTLE_MUNPAFIELD_REQUEST_SYN;
		msg.dwObjectID = HEROID;
		msg.dwData = munpaid;
		NETWORK->Send(&msg,sizeof(msg));
		return TRUE;
	}
	*/
	else if(strcmp(code, "SUNG") == 0)
	{
		WORD mugong;
		sscanf(cheat,"%s %d",code,&mugong);

		MSG_WORD2 msg;
		msg.Category = MP_CHEAT;
		msg.Protocol = MP_CHEAT_MUGONGSUNG_SYN;
		msg.dwObjectID = HEROID;
		msg.wData1 = mugong;
		msg.wData2 = 7;
		NETWORK->Send(&msg,sizeof(msg));
		return TRUE;
	}
	else if(strcmp(code, "MONEY") == 0)
	{
		DWORD money;
		sscanf(cheat,"%s %d",code,&money);

		MSG_DWORD msg;
		msg.Category = MP_CHEAT;
		msg.Protocol = MP_CHEAT_MONEY_SYN;
		msg.dwObjectID = HEROID;
		msg.dwData = money;
		NETWORK->Send(&msg,sizeof(msg));
		return TRUE;
	}
	else if(strcmp(code, "CLEARSTATE") == 0)
	{
		OBJECTSTATEMGR->EndObjectState(HERO, HERO->GetState());
		
		return TRUE;
	}
	else if(strcmp(code, "VOLUME") == 0)
	{
		float m,s,b;
		sscanf(cheat,"%s %f %f %f",code,&m,&s,&b);

		AUDIOMGR->SetMasterVolume(m);
		AUDIOMGR->SetSoundVolume(s);
		AUDIOMGR->SetBGMVolume(b);

		return TRUE;
	}
//murim-net test
	else if(strcmp(code, "MURIMNET") == 0)
	{
		MAINGAME->SetGameState( eGAMESTATE_MURIMNET );
		return TRUE;
	}
	else if(strcmp(code, "LEVELUP") == 0)
	{
		WORD val = 1;
		sscanf(cheat,"%s %d",code,&val);
		if(val <= HERO->GetLevel())
			val = HERO->GetLevel()+1;
		MSG_WORD msg;
		msg.Category = MP_CHEAT;
		msg.Protocol = MP_CHEAT_LEVELUP_SYN;
		msg.dwObjectID = HEROID;
		msg.wData = val;
		NETWORK->Send(&msg,sizeof(msg));
		
		return TRUE;
	}

	else if(strcmp(code, "RMS") == 0)
	{
		WORD val = 0;
		sscanf(cheat,"%s %d",code,&val);
		if(val == 0)
			return TRUE;
		if((val < 12) || (val > 400))
			val = 12;
		MSG_WORD msg;
		msg.Category = MP_CHEAT;
		msg.Protocol = MP_CHEAT_GENGOL_SYN;
		msg.dwObjectID = HEROID;
		msg.wData = val;
		NETWORK->Send(&msg,sizeof(msg));
		return TRUE;
	}
	else if(strcmp(code, "ALS") == 0)
	{
		WORD val = 0;
		sscanf(cheat,"%s %d",code,&val);
		if(val == 0)
			return TRUE;
		if((val < 12) || (val > 400))
			val = 12;
		MSG_WORD msg;
		msg.Category = MP_CHEAT;
		msg.Protocol = MP_CHEAT_MINCHUB_SYN;
		msg.dwObjectID = HEROID;
		msg.wData = val;
		NETWORK->Send(&msg,sizeof(msg));
		return TRUE;
	}
	else if(strcmp(code, "CP") == 0)
	{
		WORD val = 0;
		sscanf(cheat,"%s %d",code,&val);
		if(val == 0)
			return TRUE;
		if((val < 12) || (val > 400))
			val = 12;
		MSG_WORD msg;
		msg.Category = MP_CHEAT;
		msg.Protocol = MP_CHEAT_CHERYUK_SYN;
		msg.dwObjectID = HEROID;
		msg.wData = val;
		NETWORK->Send(&msg,sizeof(msg));

		return TRUE;
	}
	else if(strcmp(code, "TLA") == 0)
	{
		WORD val = 0;
		sscanf(cheat,"%s %d",code,&val);
		if(val == 0)
			return TRUE;
		if((val < 12) || (val > 400))
			val = 12;
		MSG_WORD msg;
		msg.Category = MP_CHEAT;
		msg.Protocol = MP_CHEATE_SIMMEK_SYN;
		msg.dwObjectID = HEROID;
		msg.wData = val;
		NETWORK->Send(&msg,sizeof(msg));

		return TRUE;
	}

	else if(strcmp(code, "ABIL") == 0)
	{
		DWORD abilexp;
		sscanf(cheat,"%s %d",code,&abilexp);

		MSG_DWORD msg;
		msg.Category = MP_CHEAT;
		msg.Protocol = MP_CHEAT_ABILITYEXP_SYN;
		msg.dwObjectID = HEROID;
		msg.dwData = abilexp;
		NETWORK->Send(&msg,sizeof(msg));
		
		return TRUE;
	}
	else if( strcmp(code, "MOVETO") == 0 )
	{
/*
		DWORD dwID;
		sscanf(cheat,"%s %d", code, &dwID);

		MOVE_POS msg;
		msg.Category = MP_CHEAT;
		msg.Protocol = MP_CHEAT_MOVETOCHAR_SYN;
		msg.dwObjectID = HEROID;
		msg.dwMoverID = dwID;	//target
//		msg.cpos.Compress(&pos);
		NETWORK->Send(&msg,sizeof(msg));
		return TRUE;
*/
		sscanf(cheat, "%s %s", code, buf);
		//buf-A

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -