Attempt to fix up am41036
This commit is contained in:
		@@ -40,7 +40,8 @@ void CPlayer::Init(edict_t* e, int i)
 | 
				
			|||||||
	pEdict = e;
 | 
						pEdict = e;
 | 
				
			||||||
	initialized = false;
 | 
						initialized = false;
 | 
				
			||||||
	ingame = false;
 | 
						ingame = false;
 | 
				
			||||||
	bot = false;
 | 
						bot_value = false;
 | 
				
			||||||
 | 
						bot_cached = false;
 | 
				
			||||||
	authorized = false;
 | 
						authorized = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	current = 0;
 | 
						current = 0;
 | 
				
			||||||
@@ -88,7 +89,8 @@ void CPlayer::Disconnect()
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	queries.clear();
 | 
						queries.clear();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	bot = 0;
 | 
						bot_value = false;
 | 
				
			||||||
 | 
						bot_cached = false;
 | 
				
			||||||
	menu = 0;
 | 
						menu = 0;
 | 
				
			||||||
	newmenu = -1;
 | 
						newmenu = -1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -114,10 +116,11 @@ int CPlayer::NextHUDChannel()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
bool CPlayer::Connect(const char* connectname, const char* ipaddress)
 | 
					bool CPlayer::Connect(const char* connectname, const char* ipaddress)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						bot_value = false;
 | 
				
			||||||
 | 
						bot_cached = false;
 | 
				
			||||||
	name.assign(connectname);
 | 
						name.assign(connectname);
 | 
				
			||||||
	ip.assign(ipaddress);
 | 
						ip.assign(ipaddress);
 | 
				
			||||||
	time = gpGlobals->time;
 | 
						time = gpGlobals->time;
 | 
				
			||||||
	bot = IsBot();
 | 
					 | 
				
			||||||
	death_killer = 0;
 | 
						death_killer = 0;
 | 
				
			||||||
	menu = 0;
 | 
						menu = 0;
 | 
				
			||||||
	newmenu = -1;
 | 
						newmenu = -1;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -83,7 +83,8 @@ public:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	bool initialized;
 | 
						bool initialized;
 | 
				
			||||||
	bool ingame;
 | 
						bool ingame;
 | 
				
			||||||
	bool bot;
 | 
						bool bot_cached;
 | 
				
			||||||
 | 
						bool bot_value;
 | 
				
			||||||
	bool authorized;
 | 
						bool authorized;
 | 
				
			||||||
	bool vgui;	
 | 
						bool vgui;	
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -131,7 +132,23 @@ public:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	inline bool IsBot()
 | 
						inline bool IsBot()
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		return ((pEdict->v.flags & FL_FAKECLIENT) ? true : false);
 | 
							if (!bot_cached)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								bot_value = false;
 | 
				
			||||||
 | 
								if (pEdict->v.flags & FL_FAKECLIENT)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									bot_value = true;
 | 
				
			||||||
 | 
								} else {
 | 
				
			||||||
 | 
									const char *auth = GETPLAYERAUTHID(pEdict);
 | 
				
			||||||
 | 
									if (auth && (strcmp(auth, "BOT") == 0))
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										bot_value = true;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								bot_cached = true;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return bot_value;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	inline bool IsAlive()
 | 
						inline bool IsAlive()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -177,7 +177,7 @@ static cell AMX_NATIVE_CALL console_cmd(AMX *amx, cell *params) /* 2 param */
 | 
				
			|||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		CPlayer* pPlayer = GET_PLAYER_POINTER_I(index);
 | 
							CPlayer* pPlayer = GET_PLAYER_POINTER_I(index);
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		if (!pPlayer->bot && pPlayer->initialized)
 | 
							if (!pPlayer->IsBot() && pPlayer->initialized)
 | 
				
			||||||
			CLIENT_COMMAND(pPlayer->pEdict, "%s", cmd);
 | 
								CLIENT_COMMAND(pPlayer->pEdict, "%s", cmd);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -516,7 +516,7 @@ static cell AMX_NATIVE_CALL is_user_bot(AMX *amx, cell *params) /* 1 param */
 | 
				
			|||||||
	if (index < 1 || index > gpGlobals->maxClients)
 | 
						if (index < 1 || index > gpGlobals->maxClients)
 | 
				
			||||||
		return 0;
 | 
							return 0;
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	return (GET_PLAYER_POINTER_I(index)->bot ? 1 : 0);
 | 
						return (GET_PLAYER_POINTER_I(index)->IsBot() ? 1 : 0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static cell AMX_NATIVE_CALL is_user_hltv(AMX *amx, cell *params) /* 1 param */
 | 
					static cell AMX_NATIVE_CALL is_user_hltv(AMX *amx, cell *params) /* 1 param */
 | 
				
			||||||
@@ -1506,7 +1506,7 @@ static cell AMX_NATIVE_CALL client_cmd(AMX *amx, cell *params) /* 2 param */
 | 
				
			|||||||
		for (int i = 1; i <= gpGlobals->maxClients; ++i)
 | 
							for (int i = 1; i <= gpGlobals->maxClients; ++i)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			CPlayer* pPlayer = GET_PLAYER_POINTER_I(i);
 | 
								CPlayer* pPlayer = GET_PLAYER_POINTER_I(i);
 | 
				
			||||||
			if (!pPlayer->bot && pPlayer->initialized /*&& pPlayer->ingame*/)
 | 
								if (!pPlayer->IsBot() && pPlayer->initialized /*&& pPlayer->ingame*/)
 | 
				
			||||||
				CLIENT_COMMAND(pPlayer->pEdict, "%s", cmd);
 | 
									CLIENT_COMMAND(pPlayer->pEdict, "%s", cmd);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
@@ -1520,7 +1520,7 @@ static cell AMX_NATIVE_CALL client_cmd(AMX *amx, cell *params) /* 2 param */
 | 
				
			|||||||
		
 | 
							
 | 
				
			||||||
		CPlayer* pPlayer = GET_PLAYER_POINTER_I(index);
 | 
							CPlayer* pPlayer = GET_PLAYER_POINTER_I(index);
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		if (!pPlayer->bot && pPlayer->initialized /*&& pPlayer->ingame*/)
 | 
							if (!pPlayer->IsBot() && pPlayer->initialized /*&& pPlayer->ingame*/)
 | 
				
			||||||
			CLIENT_COMMAND(pPlayer->pEdict, "%s", cmd);
 | 
								CLIENT_COMMAND(pPlayer->pEdict, "%s", cmd);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
@@ -1883,7 +1883,7 @@ static cell AMX_NATIVE_CALL get_players(AMX *amx, cell *params) /* 4 param */
 | 
				
			|||||||
		{
 | 
							{
 | 
				
			||||||
			if (pPlayer->IsAlive() ? (flags & 2) : (flags & 1))
 | 
								if (pPlayer->IsAlive() ? (flags & 2) : (flags & 1))
 | 
				
			||||||
				continue;
 | 
									continue;
 | 
				
			||||||
			if (pPlayer->bot ? (flags & 4) : (flags & 8))
 | 
								if (pPlayer->IsBot() ? (flags & 4) : (flags & 8))
 | 
				
			||||||
				continue;
 | 
									continue;
 | 
				
			||||||
			if ((flags & 16) && (pPlayer->teamId != team))
 | 
								if ((flags & 16) && (pPlayer->teamId != team))
 | 
				
			||||||
				continue;
 | 
									continue;
 | 
				
			||||||
@@ -1940,7 +1940,7 @@ static cell AMX_NATIVE_CALL find_player(AMX *amx, cell *params) /* 1 param */
 | 
				
			|||||||
			if (pPlayer->IsAlive() ? (flags & 64) : (flags & 32))
 | 
								if (pPlayer->IsAlive() ? (flags & 64) : (flags & 32))
 | 
				
			||||||
				continue;
 | 
									continue;
 | 
				
			||||||
			
 | 
								
 | 
				
			||||||
			if (pPlayer->bot ? (flags & 128) : (flags & 256))
 | 
								if (pPlayer->IsBot() ? (flags & 128) : (flags & 256))
 | 
				
			||||||
				continue;
 | 
									continue;
 | 
				
			||||||
			
 | 
								
 | 
				
			||||||
			if (flags & 1)
 | 
								if (flags & 1)
 | 
				
			||||||
@@ -3606,7 +3606,7 @@ static cell AMX_NATIVE_CALL query_client_cvar(AMX *amx, cell *params)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	CPlayer *pPlayer = GET_PLAYER_POINTER_I(id);
 | 
						CPlayer *pPlayer = GET_PLAYER_POINTER_I(id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!pPlayer->initialized || pPlayer->bot)
 | 
						if (!pPlayer->initialized || pPlayer->IsBot())
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		LogError(amx, AMX_ERR_NATIVE, "Player %d is either not connected or a bot", id);
 | 
							LogError(amx, AMX_ERR_NATIVE, "Player %d is either not connected or a bot", id);
 | 
				
			||||||
		return 0;
 | 
							return 0;
 | 
				
			||||||
@@ -4261,8 +4261,8 @@ AMX_NATIVE_INFO amxmodx_Natives[] =
 | 
				
			|||||||
	{"CreateOneForward",		CreateOneForward},
 | 
						{"CreateOneForward",		CreateOneForward},
 | 
				
			||||||
	{"DestroyForward",			DestroyForward},
 | 
						{"DestroyForward",			DestroyForward},
 | 
				
			||||||
	{"ExecuteForward",			ExecuteForward},
 | 
						{"ExecuteForward",			ExecuteForward},
 | 
				
			||||||
 | 
						{"LibraryExists",			LibraryExists},
 | 
				
			||||||
	{"PrepareArray",			PrepareArray},
 | 
						{"PrepareArray",			PrepareArray},
 | 
				
			||||||
	{"ShowSyncHudMsg",			ShowSyncHudMsg},
 | 
						{"ShowSyncHudMsg",			ShowSyncHudMsg},
 | 
				
			||||||
	{"LibraryExists",			LibraryExists},
 | 
					 | 
				
			||||||
	{NULL,						NULL}
 | 
						{NULL,						NULL}
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -693,7 +693,7 @@ void C_ServerDeactivate_Post()
 | 
				
			|||||||
BOOL C_ClientConnect_Post(edict_t *pEntity, const char *pszName, const char *pszAddress, char szRejectReason[128])
 | 
					BOOL C_ClientConnect_Post(edict_t *pEntity, const char *pszName, const char *pszAddress, char szRejectReason[128])
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	CPlayer* pPlayer = GET_PLAYER_POINTER(pEntity);
 | 
						CPlayer* pPlayer = GET_PLAYER_POINTER(pEntity);
 | 
				
			||||||
	if (!pPlayer->bot)
 | 
						if (!pPlayer->IsBot())
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		bool a = pPlayer->Connect(pszName, pszAddress);
 | 
							bool a = pPlayer->Connect(pszName, pszAddress);
 | 
				
			||||||
		executeForwards(FF_ClientConnect, static_cast<cell>(pPlayer->index));
 | 
							executeForwards(FF_ClientConnect, static_cast<cell>(pPlayer->index));
 | 
				
			||||||
@@ -741,7 +741,7 @@ void C_ClientDisconnect(edict_t *pEntity)
 | 
				
			|||||||
void C_ClientPutInServer_Post(edict_t *pEntity)
 | 
					void C_ClientPutInServer_Post(edict_t *pEntity)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	CPlayer *pPlayer = GET_PLAYER_POINTER(pEntity);
 | 
						CPlayer *pPlayer = GET_PLAYER_POINTER(pEntity);
 | 
				
			||||||
	if (!pPlayer->bot)
 | 
						if (!pPlayer->IsBot())
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		pPlayer->PutInServer();
 | 
							pPlayer->PutInServer();
 | 
				
			||||||
		++g_players_num;
 | 
							++g_players_num;
 | 
				
			||||||
@@ -761,9 +761,7 @@ void C_ClientUserInfoChanged_Post(edict_t *pEntity, char *infobuffer)
 | 
				
			|||||||
	if (pPlayer->ingame)
 | 
						if (pPlayer->ingame)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		pPlayer->name.assign(name);			//	Make sure player have name up to date
 | 
							pPlayer->name.assign(name);			//	Make sure player have name up to date
 | 
				
			||||||
	}
 | 
						} else if (pPlayer->IsBot()) {
 | 
				
			||||||
	else if (pPlayer->IsBot())
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		pPlayer->Connect(name, "127.0.0.1"/*CVAR_GET_STRING("net_address")*/);
 | 
							pPlayer->Connect(name, "127.0.0.1"/*CVAR_GET_STRING("net_address")*/);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		executeForwards(FF_ClientConnect, static_cast<cell>(pPlayer->index));
 | 
							executeForwards(FF_ClientConnect, static_cast<cell>(pPlayer->index));
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -347,3 +347,4 @@ void UTIL_FakeClientCommand(edict_t *pEdict, const char *cmd, const char *arg1,
 | 
				
			|||||||
	// unset the global "fake" flag
 | 
						// unset the global "fake" flag
 | 
				
			||||||
	g_fakecmd.fake = false;
 | 
						g_fakecmd.fake = false;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user