PHP- Kodu:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <fun>
#include <colorchat>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"

new const T_ISYANCI[] = "models/player/t_isyanci/t_isyanci.mdl";
new const 
T_KATIL[] = "models/player/t_katil/t_katil.mdl";
new const 
T_DEFAULT[] = "models/player/t_default/t_default.mdl";
new const 
CT_DEFAULT[] = "models/player/ct_default/ct_default.mdl";
new const 
CT_KOMUTCU[] = "models/player/ct_komutcu/ct_komutcu.mdl";

new 
bool:blocked[33];
new 
basisyanci;
new 
komutcu;
public 
plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_clcmd("say /sec""BasIsyanciSec")
    
register_forward(FM_Voice_SetClientListening"FwdSetVoice");
    
register_event("HLTV","eNewRound","a","1=0","2=0")
    
register_event("DeathMsg","eDeath","a")
    
register_event"TeamInfo""eTeamChange""a" );
    
    
}
public 
plugin_precache() {
    
precache_model(T_ISYANCI)
    
precache_model(T_DEFAULT)
    
precache_model(T_KATIL)
    
precache_model(CT_DEFAULT)
    
precache_model(CT_KOMUTCU)
}
public 
BasIsyanciSec(id) {
    if(
cs_get_user_team(id) == CS_TEAM_CT)
    {
        new 
menu menu_create("\yBas Isyanci Sec","menu_handler")
        
        new 
players[32],inum;
        static 
tempid,szName[32],szID[6];
        
get_players(players,inum,"ace","TERRORIST")
        for(new 
i;i<inum;i++) {
            
tempid players[i];
            
get_user_name(tempid,szName,31)
            
num_to_str(tempid,szID,5)
            
menu_additem(menu,szName,szID)
        }
        
menu_setprop(menu,MPROP_EXIT,MEXIT_ALL)
        
menu_display(id,menu,0)
    }
    return 
PLUGIN_HANDLED
}
public 
menu_handler(id,menu,item) {
    if(
item == MENU_EXIT) {
        
menu_destroy(menu)
        return 
PLUGIN_HANDLED
    
}
    new 
access,callback;
    new 
name[32],data[6];
    
menu_item_getinfo(menu,item,access,data,5,name,31,callback)
    new 
Uid str_to_num(data);
    new 
uname[32],admin[32];
    
get_user_name(id,admin,31)
    if(
is_user_connected(Uid)) {
        
get_user_name(Uid,uname,31)
        
basisyanci Uid;
        
cs_set_user_model(Uid,"t_isyanci")
        
ColorChat(Uid,GREEN,"BAS ISYANCI SECILDIN: ^3+100 HP +1 Flashbang +Mikrofon")
        
ColorChat(0,GREEN,"^3%s: %s ^1Adli Oyuncuyu ^4Bas Isyanci ^1Olarak Secti !",admin,uname)
        
set_pev(Uid,pev_health,200.0)
        
give_item(Uid,"weapon_flashbang")
    }
    return 
PLUGIN_HANDLED
}
public 
eNewRound() {
    new 
players[32],inumname[32];
    
get_players(players,inum)
    static 
id;
    for(new 
i;i<inum;i++) {
        
id players[i];
        
blocked[id] = true;
        
cs_reset_user_model(id)
        if(
get_user_team(id) == 2) {
            
cs_set_user_model(id,"ct_default")
        }
        if(
get_user_team(id) == 1) {
            
cs_set_user_model(id,"t_default")
        }
    }
    
basisyanci 0;
    
komutcu 0;
    new 
iPlayers[32], iNum;
    
get_players(iPlayers,iNum,"ace","TERRORIST");
    
    if(
iNum) {
        
komutcu iPlayers[ ( iNum ) ? randomiNum ) : ];
        
get_user_name(komutcu,name,31);
        
ColorChat(0,GREEN,"Secilen Komutcu: ^3%s",name)
        
ColorChat(komutcu,GREEN,"KOMUTCU SECILDIN")
        
cs_set_user_model(komutcu,"ct_komutcu")
    }
}
public 
eDeath() {
    new 
killer read_data(1);
    new 
victim read_data(2);
    if(
get_user_team(killer) == && get_user_team(victim) == && basisyanci != killer) {
        
cs_set_user_model(killer,"t_katil")
    }
}
public 
eTeamChange() {
    
    new 
id read_data(1);
    if(
is_user_bot(id)) return PLUGIN_CONTINUE
    
new team[12];
    
read_data(2,team,11);
    
    switch( 
team[0] ) {
        
        case 
'C' :{
            
cs_set_user_model(id,"ct_default")
        }  
        case 
'T' :{
            
cs_set_user_model(id,"t_default")
        }   
    }
    return 
PLUGIN_CONTINUE
}
public 
FwdSetVoice(receiversenderlisten) {
    if(
get_user_team(sender) != && basisyanci != sender) {
        
engfunc(EngFunc_SetClientListeningreceiversender0);
        return 
FMRES_SUPERCEDE;
    }
    return 
FMRES_IGNORED

CT deki herkes mikrofon açabilir. Botlarla veya gerçek oyuncularla olmasının bir önemi yok. Birinde ct den rastgele bir komutçu seçebiliyorsa diğerinde de seçebilir demektir. Sen tek başına denediğinde seçiyor mu komutçu seni ?

İkincisi için ise ilgili publici
PHP- Kodu:
public fw_TakeDamage_Post(victim,inflictor,attacker,Float:damage,damagetype) { 
    if(!(
<= attacker <= 32) || !(<= victim <= 32) ) return HAM_IGNORED
    
if(blok_damage[attacker] && (get_user_team(attacker) != get_user_team(victim)) ) { 
        return 
HAM_SUPERCEDE 
    

    return 
HAM_IGNORED 

Olarak düzelt. Örneğin kişi yüksekten düştüğünde ona zarar veren "worldspawn" olur. Worldspawn'ın indexi user indexlerinden farklı olduğu için blok_damage değişkeninin içine sığmayabilir. Bu durumda da "index out of bounds" verir. Önce valid player kontrolü yapman gerek.