It works. It does that because the number of players is always <= 1 when the map starts. I added a delay to prevent this:
Code:
#include <amxmodx>
#if !defined client_disconnected
#define client_disconnected client_disconnect
#endif
new g_pPlayersNeeded
new g_pChangeTo
new g_pWait
new g_iPlayerCount
new bool:g_bActive
public plugin_init()
{
register_plugin("Change Map on X Players", "1.1", "OciXCrom")
g_pPlayersNeeded = register_cvar("change_players_needed", "10")
g_pChangeTo = register_cvar("change_to_map", "fy_snow")
g_pWait = register_cvar("change_wait", "30")
}
public plugin_cfg()
{
new szCurrentMap[32], szChangeTo[32]
get_mapname(szCurrentMap, charsmax(szCurrentMap))
get_pcvar_string(g_pChangeTo, szChangeTo, charsmax(szChangeTo))
if(equali(szCurrentMap, szChangeTo))
{
pause("d")
}
set_task(get_pcvar_float(g_pWait), "activate_plugin", .flags = "c")
}
public activate_plugin()
{
g_bActive = true
if(g_iPlayerCount <= get_pcvar_num(g_pPlayersNeeded))
{
change_the_map()
}
}
public client_putinserver(id)
{
if(++g_iPlayerCount <= get_pcvar_num(g_pPlayersNeeded) && g_bActive)
{
change_the_map()
}
}
public client_disconnected(id)
{
g_iPlayerCount--
}
public change_the_map()
{
g_bActive = false
new szMap[32]
get_pcvar_string(g_pChangeTo, szMap, charsmax(szMap))
#if defined engine_changelevel
engine_changelevel(szMap)
#else
server_cmd("changelevel %s", szMap)
#endif
}
__________________