ribotas skaičius vietų ct komandoje

Šiame forume rašomi vartotojų klausimai/problemos su kuriomis jie susidūrė kuriant pluginus.
Post Reply
GhostMan
Gana aktyvus vartotojas
Posts: 311
Joined: 2012 Jun 30 17:52

ribotas skaičius vietų ct komandoje

Post by GhostMan »

Turiu tokį seną kodą, kurio funkcija yra neįleisti į ct komandą daugiau negu 5 žmonių (jei yra pasiektas 5 ct limitas kiekvienas sekantis prisijungęs žaidėjas yra automatiškai priskiriamas į t komandą) ir taip pat neleisti pakeisti komandos paspaudus M mygtuką (chooseteam).

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 problema tame, kad šitas kodas turi šiokių tokių defektų.
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.
Last edited by GhostMan on 2013 Jun 18 22:40, edited 1 time in total.
NWK.LT Counter-Strike 1.6 Serveriai:
  • War3FT ★ [url=steam://connect/cs.nwk.lt:27015]cs.nwk.lt:27015[/url]
  • JailBreak ★ [url=steam://connect/cs.nwk.lt:27016]cs.nwk.lt:27016[/url]
  • Public ★ [url=steam://connect/cs.nwk.lt:27017]cs.nwk.lt:27017[/url]
  • DeathRun ★ [url=steam://connect/cs.nwk.lt:27018]cs.nwk.lt:27018[/url]
  • Hide'N'Seek ★ [url=steam://connect/cs.nwk.lt:27019]cs.nwk.lt:27019[/url]

User avatar
xFrostas
Flooderis arba specialistas
Posts: 660
Joined: 2010 Sep 02 15:47
Skype: frost.lt

Re: ribotas skaičius vietų ct komandoje

Post by xFrostas »


Post Reply

Who is online

Users browsing this forum: No registered users and 4 guests