Code: Select all
new cvar_maxcts public plugin_init(){ register_clcmd("chooseteam", "client_chooseteam") register_message(get_user_msgid("VGUIMenu"), "VGUIMenu") cvar_maxcts = register_cvar("limit_maxcts", "5")} public VGUIMenu(iMsgid, iDest, id){ if(get_msg_arg_int(1) != 2) { return PLUGIN_CONTINUE } new ctcount ctcount = active_players(CS_TEAM_CT) if(ctcount >= get_pcvar_num(cvar_maxcts) && cs_get_user_team(id) != CS_TEAM_CT) { new param[2] param[0] = iMsgid set_task(0.1, "join_terrorist", id, param, sizeof(param)) return PLUGIN_HANDLED } return PLUGIN_CONTINUE} public join_terrorist(param[], id){ handle_join(id, param[0], /*CS_TEAM_T*/ 1) set_task(5.0, "check_valid_team", id)} public check_valid_team(id){ if(!is_user_connected(id)) return if(cs_get_user_team(id) != CS_TEAM_T) { cs_set_user_team(id, CS_TEAM_T) }} public client_chooseteam(id){ new ctcount ctcount = active_players(CS_TEAM_CT) if(ctcount >= get_pcvar_num(cvar_maxcts) && cs_get_user_team(id) == CS_TEAM_T) { client_print(id, print_chat, "[AMX] It's forbidden to change team.") return PLUGIN_HANDLED } return PLUGIN_CONTINUE} stock active_players(CsTeams:team, bool:aliveonly = false){ new players[32], inum, i, active, CsTeams:playerteam (aliveonly) ? get_players(players, inum, "ah") : get_players(players, inum, "h") active = 0 for (i = 0; i < inum; ++i) { playerteam = cs_get_user_team(players[i]) if(playerteam == team) active++ } return active} stock handle_join(id, iMsgid, iTeam){ new iMsgBlock iMsgBlock = get_msg_block(iMsgid) set_msg_block(iMsgid, BLOCK_SET) new team[2] num_to_str(iTeam, team, charsmax(team)) engclient_cmd(id, "jointeam", team) engclient_cmd(id, "joinclass", "1") set_msg_block(iMsgid, iMsgBlock) client_print(id, print_chat, "[AMX] It's forbidden to change team.")}
Tik ką po žemėlapio pasikeitimo į serverį prisijungusiems žaidėjams yra rodomas SELECT TEAM meniu ir čia jau nepriklausomai kurioje komandoje kiek žaidėjų yra, kiekvienas dar turintis atidarytą SELECT TEAM meniu gali eiti į betkurią komandą (ar pasiektas ct limitas ar ne - jokio skirtumo, gali vistiek į ct eiti).
Šita problema yra tik po žemėlapio pasikeitimo, nes vėliau ct limitas yra pasiekiamas ir prisijunę žaidėjai nebemato SELECT TEAM meniu, o yra iškarto priskiriami į T komandą.
Tai norėčiau, kad man padėtumėt ištaisyti šitą defektą, nes kaikurių kodo vietų aš nelabai suprantu.