Kod:
#include < amxmodx >
#include < amxmisc >
#include < cstrike >
#include < hamsandwich >
#include <fun>
#include <engine>

#define PLUGIN "Knife Round"
#define VERSION "2.0"
#define AUTHOR "shake"


new bool:g_bKnifeRound;
new bool:g_bVotingProcess;
new g_iMaxPlayers;
new g_Votes[ 2 ];
new g_pSwapVote;
new g_pNoslash;
new iMaxPlayers;

public plugin_init() {
    register_plugin( PLUGIN, VERSION, AUTHOR );
    g_pSwapVote = register_cvar( "kr_swapvote", "1" );   
    g_pNoslash = register_cvar( "kr_noslash", "1" );
    
    register_clcmd( "say /kf", "CmdKnifeRound", ADMIN_BAN, "Start Knife Round" );
    register_clcmd( "say_team /kf", "CmdKnifeRound", ADMIN_BAN, "Start Knife Round" );
    register_clcmd( "say /kr", "CmdKnifeRound", ADMIN_BAN, "Start Knife Round" );
    register_clcmd( "say /kniferound", "CmdKnifeRound", ADMIN_BAN, "Start Knife Round" );
    
    register_clcmd( "shield", "BlockCmds" );
    register_clcmd( "cl_rebuy", "BlockCmds" );
    
    register_event( "CurWeapon", "EventCurWeapon", "be", "2!29" );
    
    register_logevent( "EventRoundEnd", 2, "0=World triggered", "1=Round_Draw", "1=Round_End" );
    
    register_menucmd( register_menuid( "\r* \yTakimlar Degistirilsin mi?" ), 1023, "MenuCommand" );
    
    RegisterHam( Ham_Weapon_PrimaryAttack, "weapon_knife", "HamKnifePrimAttack" );
    
    g_iMaxPlayers = get_maxplayers( );
    register_srvcmd("kfteleport","OtoTeleport")
    iMaxPlayers = get_maxplayers();
    
}

public EventCurWeapon( id ) {
    if( g_bKnifeRound ) engclient_cmd( id, "weapon_knife" );
    return PLUGIN_CONTINUE;
}

public CmdRestartRound( id, level, cid ) {
    if ( !cmd_access( id, level, cid, 1 ) ) return PLUGIN_HANDLED;
    
    g_bKnifeRound = false;
    
    set_cvar_string("mp_autokick", "0");
    set_cvar_string("mp_freezetime", "5");
    set_cvar_string("mp_autoteambalance", "0");      
    set_cvar_string("mp_limitteams", "0");
    set_cvar_string("mp_friendlyfire", "1");    
    set_cvar_string("sv_alltalk", "0");        
    set_cvar_string("mp_startmoney", "800");
    set_cvar_string("mp_timelimit", "0");       
    set_cvar_string("mp_forcecamera", "2");
    set_cvar_string("mp_forcechasecam", "2");
    set_cvar_string("mp_flashlight", "1");        
    set_cvar_string("mp_tkpunish", "0");    
    set_cvar_string("mp_c4timer", "35");    
    set_cvar_string("mp_roundtime", "1.75");
    set_cvar_string("mp_footsteps", "1");
    set_cvar_string("mp_buytime", "0.25");
    set_cvar_string("mp_maxrounds", "0");
    set_cvar_string("allow_spectators", "1");
    set_cvar_string("mp_logmessages", "1");
    
    server_cmd( "sv_restartround 1" );
    set_task(1.6,"OtoTeleport");
    return PLUGIN_CONTINUE;
}

public CmdKnifeRound( id, level, cid ) {    
    if( !cmd_access( id, level, cid, 1 ) ) return PLUGIN_HANDLED;
    
    CmdRestartRound( id, level, cid );  
    
    set_task( 2.0, "KnifeRoundStart", id );
    
    chat_color(0, "!g[SG] !yKnife Round Basladi.");
    
    
    
    return PLUGIN_CONTINUE;
}

public CmdSwapTeams( id,level,cid ) {
    if( !cmd_access( id, level, cid, 1 ) ) return PLUGIN_HANDLED;
    
    SwapTeams( );
    CmdRestartRound( id, level, cid );
    
    return PLUGIN_CONTINUE;
}

public KnifeRoundStart( ) {
    g_bKnifeRound = true;
    g_bVotingProcess = false;
    
    new players[ 32 ], num;
    get_players( players, num );
    
    for( new i = 0; i < num ; i++ )
    {
        new item = players[ i ];
        EventCurWeapon( item );
    }
    
    return PLUGIN_CONTINUE;
}

public SwapTeams( ) {
    for( new i = 1; i <= g_iMaxPlayers; i++ ) {
        if( is_user_connected( i ) )
        {
            switch( cs_get_user_team( i ) )
            {
                case CS_TEAM_T: cs_set_user_team( i, CS_TEAM_CT );            
                    case CS_TEAM_CT: cs_set_user_team( i, CS_TEAM_T );
                }
        }
    }
}

public EventRoundEnd( ) {
    if( g_bKnifeRound && get_pcvar_num( g_pSwapVote ) ) {
        
        if(!is_only_terrorist()) 
        {
            chat_color(0, "!g[SG] !yKnife Roundu Counter-Teroristler Kazandi."); 
            set_task( 6.0, "vote_ct" );
        }
        else
        {            
            chat_color(0, "!g[SG] !yKnife Roundu Teroristler Kazandi.");
            set_task( 6.0, "vote_t" );  
        }    
    }
    g_bKnifeRound = false;
    
    return PLUGIN_CONTINUE;
}

public vote_t( ) {
    for( new i = 1; i <= g_iMaxPlayers; i++ ) {
        if( is_user_alive( i ) && cs_get_user_team( i ) == CS_TEAM_T )
        {
            ShowMenu( i );
        }
    }
    set_task( 8.0, "finishvote" );
}

public vote_ct( ) {
    for( new i = 1; i <= g_iMaxPlayers; i++ ) {
        if( is_user_alive( i ) && cs_get_user_team( i ) == CS_TEAM_CT )
        {
            ShowMenu( i );
        }
    }
    set_task( 8.0, "finishvote" );
}

public ShowMenu( id ) {
    g_bVotingProcess = true;
    
    if( g_bVotingProcess ) {
        new szMenuBody[ 256 ], keys;
        
        new nLen = format( szMenuBody, 255, "\r* \yTakimlar Degistirilsin mi?^n" );
        nLen += format( szMenuBody[nLen], 255-nLen, "^n\r1. \wEvet" );
        nLen += format( szMenuBody[nLen], 255-nLen, "^n\r2. \wHayir" );
        nLen += format( szMenuBody[nLen], 255-nLen, "^n^n\r0. \wCikis" );
        
        keys = ( 1<<0 | 1<<1 | 1<<9 );
        
        show_menu( id, keys, szMenuBody, -1 );
    }
    
    return PLUGIN_CONTINUE;
}

public MenuCommand( id, key ) {
    if( !g_bVotingProcess ) return PLUGIN_HANDLED;
    
    new szName[ 32 ];
    get_user_name( id, szName, charsmax( szName ) );
    
    switch( key )
    {
        case 0: 
        {
            g_Votes[ 0 ]++;
            
        }
        case 1: 
        {
            g_Votes[ 1 ]++;
            
        }  
        case 9: show_menu( id, 0, "" );
        } 
    
    return PLUGIN_HANDLED;
}

public finishvote( ) {
    if( !g_bVotingProcess ) return PLUGIN_HANDLED;
    
    server_cmd( "sv_restartround 1" );
    
    if ( g_Votes[ 0 ] > g_Votes[ 1 ] ) 
    {
        chat_color(0, "!g[SG] !yTakimlar Degistiriliyor ve Mac Basliyor.");
        SwapTeams( );
    }
    else
    {
        chat_color(0, "!g[SG] !yTakimlar Ayni Kaliyor ve Mac Basliyor.");
    }
    
    g_Votes[ 0 ] = 0;
    g_Votes[ 1 ] = 0;
    g_bVotingProcess = false;
    
    return PLUGIN_HANDLED;
}

public HamKnifePrimAttack( iEnt ) {
    if( g_bKnifeRound && get_pcvar_num( g_pNoslash ) ) 
    {
        ExecuteHamB( Ham_Weapon_SecondaryAttack, iEnt );          
        return HAM_SUPERCEDE;
    }
    return HAM_IGNORED;
}

public BlockCmds( ) {
    if( g_bKnifeRound ) {
        return PLUGIN_HANDLED_MAIN;
    }
    return PLUGIN_CONTINUE;
}
/*------------------------OTOMATİK TELEPORT------------------------------*/
public OtoTeleport() {
    
    new map[32];
    get_mapname(map,31)
    
    new originct[3]; 
    new origint[3];
    
    if(equali(map,"de_dust2")) {
        //Ct Koordinatlari 
        originct[0] = 1373;    // X
        originct[1] = 1988;    // Y
        originct[2] = 45;    // Z
        
        //T Koordinatlari
        origint[0] = 1550;    // X
        origint[1] = 1147;    // Y
        origint[2] = 45;    // Z
    }
    else if(equali(map,"de_inferno")) {
        //Ct Koordinatlari
        originct[0] = 1366;    // X
        originct[1] = 955;    // Y
        originct[2] = 196;    // Z
        
        //T Koordinatlari
        origint[0] = 1514;    // X
        origint[1] = 457;    // Y
        origint[2] = 196;    // Z
    }
    else if(equali(map,"de_nuke")) {
        originct[0] = 1035;    // X
        originct[1] = -1761;    // Y
        originct[2] = -379;    // Z
        
        //T Koordinatlari
        origint[0] = 1179;    // X
        origint[1] = -2183;    // Y
        origint[2] = -379;    // Z
    }
    else if(equali(map,"de_train")) {
        
        originct[0] = -768;    // X
        originct[1] = 1196;    // Y
        originct[2] = -187;    // Z
        
        //T Koordinatlari
        origint[0] = -615;    // X
        origint[1] = 777;    // Y
        origint[2] = -187;    // Z
    }
    for(new i = 0;i<iMaxPlayers;i++) {
        if(get_user_team(i) == 1) {
            set_user_origin(i,origint)
            origint[0]-= 40;
        }
        else if(get_user_team(i) == 2) {
            set_user_origin(i,originct)
            originct[0]+= 40;
        }
        
    }
    for(new i = 0;i<iMaxPlayers;i++) {
        check_user_angles(i)
    }
    
    return PLUGIN_HANDLED
}  
/*------------------------YAZI RENKLENDİRME------------------------------*/
stock chat_color(const id, const input[], any:...) {
    new count = 1, players[32]
    static msg[191]
    vformat(msg, 190, input, 3)
    
    replace_all(msg, 190, "!g", "^4")
    replace_all(msg, 190, "!y", "^1")
    replace_all(msg, 190, "!t", "^3")
    replace_all(msg, 190, "!team2", "^0")
    
    if (id) players[0] = id; else get_players(players, count, "ch")
    {
        for (new i = 0; i < count; i++)
        {
            if (is_user_connected(players[i]))
            {
                message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
                write_byte(players[i]);
                write_string(msg);
                message_end();
            }
        }
    }
}  
/*--------------------------CT KONTROLU---------------------------------*/
stock is_only_terrorist() {
    for(new i = 0;i<iMaxPlayers;i++) {
        if(get_user_team(i) == 2 && is_user_alive(i)) {
            // Canlı CT Tespit Edildi !
            return 0;
        }
    }
    return 1;
}
/*--------------------------AÇI DÜZELTİCİ------------------------------*/
stock check_user_angles(id) {
    new Float:Angle[3];
    entity_get_vector(id,EV_VEC_angles,Angle)
    if(get_user_team(id) == 2) {
        Angle[1] = 270.0;
    }
    else if(get_user_team(id) == 1) {
        Angle[1] = 90.0
    }
    entity_set_vector(id,EV_VEC_angles,Angle)
    entity_set_int(id,EV_INT_fixangle,1)
}
/kf ayarı attığımda resartround la bugu giriyor ilk uzuna ışınlıyor fakat daha sonra res geldiği için t baseye atıyor. 2. ise ct lerde kazansa t lerde kazansa Hep teroristler kazandi diyor bunu düzeltebilirseniz çok iyi olur teşekkürler...