Witam,
pytanie takie z ciekawości. Patrzę sobie w kod źródłowy AMXX'a i znalazłem:
static cell AMX_NATIVE_CALL is_user_connected(AMX *amx, cell *params) /* 1 param */ { int index = params[1]; if (index < 1 || index > gpGlobals->maxClients) return 0; CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); return (pPlayer->ingame ? 1 : 0); }
static cell AMX_NATIVE_CALL get_user_team(AMX *amx, cell *params) /* 3 param */ { int index = params[1]; if (index < 1 || index > gpGlobals->maxClients) return -1; CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); if (pPlayer->ingame) { // SidLuke, DoD fix if (g_bmod_dod) { int iTeam = pPlayer->pEdict->v.team; if (params[3]) { const char *szTeam = ""; switch (iTeam) { case 1: szTeam = "Allies"; break; case 2: szTeam = "Axis"; break; } set_amxstring(amx, params[2], szTeam, params[3]); } return iTeam; } // if (params[3]) { set_amxstring(amx, params[2], pPlayer->team.c_str(), params[3]); } return pPlayer->teamId; } return -1; }
Wnioskuje, że gdy mam taki kod:
if(is_user_connected(id) && get_user_team(id) == 2)
To mogę użyć:
if(get_user_team(id) == 2)
bez obawy, że wywali błąd o graczu invalidzie? Z tego co widzę to kod się powtarza tam...