mirror of
https://github.com/alliedmodders/amxmodx.git
synced 2025-01-12 06:48:04 +03:00
Attempt to fix up am41036
This commit is contained in:
parent
58abc3a655
commit
bab5bb5a72
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user