AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Suggestions / Requests (https://forums.alliedmods.net/forumdisplay.php?f=12)
-   -   Voice plugin (https://forums.alliedmods.net/showthread.php?t=332588)

NarutoAzores 05-21-2021 11:28

Voice plugin
 
Hello,

I'm searching for JailBreak plugin(HLDS) which:

- With g_privilege = 1 and 2 can talk to everyone (staff)
- Last TT can talk to everyone
- TT players hear voices of CT players
- CT players hear voices of CT players

NarutoAzores 05-24-2021 15:37

Re: Voice plugin
 
or does anyone know how to do just that? (HLDS)

- TT players hear voices of CT players
- CT players hear voices of CT players

Barlap 05-24-2021 18:32

Re: Voice plugin
 
Try this
Code:

#include < amxmodx >
#include < fakemeta >

enum _:Teams
{
    FM_TEAM_UNASSIGNED,
    FM_TEAM_T,
    FM_TEAM_CT,
    FM_TEAM_SPECTATOR
};

new const szPrefix[ ] = "JB";

new bool:Voice[ 33 ], pCvar[ 2 ];

public plugin_init()
{
    register_plugin( "Voice menu", "1.1", "Barlap" );
   
    register_clcmd( "say /vmanager", "CmdVoice" );
   
    register_forward( FM_Voice_SetClientListening, "FwdVoiceSetClientListening" );
   
    register_logevent( "evRoundStart", 2, "1=Round_Start" );
   
    pCvar[ 0 ] = register_cvar( "vmanager_toggle", "1" );
    pCvar[ 1 ] = register_cvar( "vmanager_deadvoice", "1" );        // Dead players can talk to each other
}

public CmdVoice( client )
{
    if ( !get_pcvar_num( pCvar[ 0 ] ) )
        return 0;
   
    if ( !(get_user_flags( client ) & ADMIN_IMMUNITY) )
        return ColorPrint( client, "You have no access to this command." );
   
    static szItem[ 128 ], Menu, Players[ 32 ], iNum, szTempid[ 10 ];
   
    formatex( szItem, charsmax( szItem ), "\r[%s]\w Voice Menu", szPrefix );
   
    Menu = menu_create( szItem, "SubVoice" );
   
    get_players( Players, iNum, "ce", "TERRORIST" );
   
    for ( new i; i < iNum; i++ )
    {
        new iPlayer = Players[ i ];
       
        num_to_str( iPlayer, szTempid, charsmax( szTempid ) );
       
        formatex( szItem, charsmax( szItem ), "%s%s", szName( iPlayer ), Voice[ iPlayer ] ? " - \d[\r Voice \d]" : "" );
       
        menu_additem( Menu, szItem, szTempid );
    }
   
    menu_display( client, Menu );
   
    return 1;
}

public SubVoice( client, Menu, Item )
{
    if ( !get_pcvar_num( pCvar[ 0 ] ) )
        return 0;
   
    if ( Item == MENU_EXIT )
    {
        menu_destroy( Menu );
       
        return 1;
    }
   
    new Access, Callback, Name[ 64 ], Data[ 6 ];
   
    menu_item_getinfo( Menu, Item, Access, Data, charsmax( Data ), Name, charsmax( Name ),Callback );
   
    new iPlayer = str_to_num( Data );
   
    if ( fm_get_user_team( iPlayer ) != FM_TEAM_T )
        return ColorPrint( client, "Invalid player was chosen." );
   
    ColorPrint( 0, "^4%s^1 %s^4 %s^1 the abillity to speak.", szName( client ), Voice[ iPlayer ] ? "took" : "gave", szName( iPlayer ) );
   
    Voice[ iPlayer ] = !Voice[ iPlayer ];
   
    menu_destroy( Menu );
   
    CmdVoice( client );
   
    return 1;
}
   

public FwdVoiceSetClientListening( Rec, Sender, bool:bListen )
{
    if ( !get_pcvar_num( pCvar[ 0 ] ) || get_user_flags( Sender ) & ADMIN_BAN || fm_get_user_team( Sender ) == FM_TEAM_CT && is_user_alive( Sender ) || Voice[ Sender ] ||
    get_pcvar_num( pCvar[ 1 ] ) != 0 && !is_user_alive( Sender ) && !is_user_alive( Rec ) || !is_user_connected( Sender ) || !is_user_connected( Rec ) )
        return 1;
   
    engfunc( EngFunc_SetClientListening, Rec, Sender, 0 );
   
    return FMRES_SUPERCEDE;
}

public evRoundStart( )
{
    if ( !get_pcvar_num( pCvar[ 0 ] ) )
        return 0;
   
    for ( new i = 1; i < get_maxplayers(); i++ )
    {
        if ( !is_user_connected( i ) || !Voice[ i ] )
            continue;
       
        Voice[ i ] = false;
    }
   
    return 0;
}

stock ColorPrint( const client, const szString[], any:... )
{
    new szMsg[ 191 ], Players[ 32 ], PNum = 1;
   
    static Len; Len = formatex( szMsg, charsmax( szMsg ), "^4[%s]^1 ", szPrefix );
   
    vformat( szMsg[ Len ], charsmax ( szMsg ) - Len, szString, 3 );
   
    if ( client )    Players[ 0 ] = client;
   
    else    get_players( Players, PNum, "ch" );
   
    for ( new i; i < PNum; i++ )
    {
        if ( is_user_connected( Players[ i ] ) )
        {
            message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "SayText" ) ,_, Players[ i ] );
           
            write_byte( Players[ i ] );
           
            write_string( szMsg );
           
            message_end( );
        }
    }
   
    return 1;
}

stock szName( const index )
{
    static g_szName[ 32 ];
   
    get_user_name( index, g_szName, charsmax( g_szName ) );
   
    return g_szName;
}

stock fm_get_user_team( const index )
    return get_pdata_int( index, 114 );


NarutoAzores 05-26-2021 18:12

Re: Voice plugin
 
Quote:

Originally Posted by Barlap (Post 2747725)
Try this
Code:

#include < amxmodx >
#include < fakemeta >

enum _:Teams
{
    FM_TEAM_UNASSIGNED,
    FM_TEAM_T,
    FM_TEAM_CT,
    FM_TEAM_SPECTATOR
};

new const szPrefix[ ] = "JB";

new bool:Voice[ 33 ], pCvar[ 2 ];

public plugin_init()
{
    register_plugin( "Voice menu", "1.1", "Barlap" );
   
    register_clcmd( "say /vmanager", "CmdVoice" );
   
    register_forward( FM_Voice_SetClientListening, "FwdVoiceSetClientListening" );
   
    register_logevent( "evRoundStart", 2, "1=Round_Start" );
   
    pCvar[ 0 ] = register_cvar( "vmanager_toggle", "1" );
    pCvar[ 1 ] = register_cvar( "vmanager_deadvoice", "1" );        // Dead players can talk to each other
}

public CmdVoice( client )
{
    if ( !get_pcvar_num( pCvar[ 0 ] ) )
        return 0;
   
    if ( !(get_user_flags( client ) & ADMIN_IMMUNITY) )
        return ColorPrint( client, "You have no access to this command." );
   
    static szItem[ 128 ], Menu, Players[ 32 ], iNum, szTempid[ 10 ];
   
    formatex( szItem, charsmax( szItem ), "\r[%s]\w Voice Menu", szPrefix );
   
    Menu = menu_create( szItem, "SubVoice" );
   
    get_players( Players, iNum, "ce", "TERRORIST" );
   
    for ( new i; i < iNum; i++ )
    {
        new iPlayer = Players[ i ];
       
        num_to_str( iPlayer, szTempid, charsmax( szTempid ) );
       
        formatex( szItem, charsmax( szItem ), "%s%s", szName( iPlayer ), Voice[ iPlayer ] ? " - \d[\r Voice \d]" : "" );
       
        menu_additem( Menu, szItem, szTempid );
    }
   
    menu_display( client, Menu );
   
    return 1;
}

public SubVoice( client, Menu, Item )
{
    if ( !get_pcvar_num( pCvar[ 0 ] ) )
        return 0;
   
    if ( Item == MENU_EXIT )
    {
        menu_destroy( Menu );
       
        return 1;
    }
   
    new Access, Callback, Name[ 64 ], Data[ 6 ];
   
    menu_item_getinfo( Menu, Item, Access, Data, charsmax( Data ), Name, charsmax( Name ),Callback );
   
    new iPlayer = str_to_num( Data );
   
    if ( fm_get_user_team( iPlayer ) != FM_TEAM_T )
        return ColorPrint( client, "Invalid player was chosen." );
   
    ColorPrint( 0, "^4%s^1 %s^4 %s^1 the abillity to speak.", szName( client ), Voice[ iPlayer ] ? "took" : "gave", szName( iPlayer ) );
   
    Voice[ iPlayer ] = !Voice[ iPlayer ];
   
    menu_destroy( Menu );
   
    CmdVoice( client );
   
    return 1;
}
   

public FwdVoiceSetClientListening( Rec, Sender, bool:bListen )
{
    if ( !get_pcvar_num( pCvar[ 0 ] ) || get_user_flags( Sender ) & ADMIN_BAN || fm_get_user_team( Sender ) == FM_TEAM_CT && is_user_alive( Sender ) || Voice[ Sender ] ||
    get_pcvar_num( pCvar[ 1 ] ) != 0 && !is_user_alive( Sender ) && !is_user_alive( Rec ) || !is_user_connected( Sender ) || !is_user_connected( Rec ) )
        return 1;
   
    engfunc( EngFunc_SetClientListening, Rec, Sender, 0 );
   
    return FMRES_SUPERCEDE;
}

public evRoundStart( )
{
    if ( !get_pcvar_num( pCvar[ 0 ] ) )
        return 0;
   
    for ( new i = 1; i < get_maxplayers(); i++ )
    {
        if ( !is_user_connected( i ) || !Voice[ i ] )
            continue;
       
        Voice[ i ] = false;
    }
   
    return 0;
}

stock ColorPrint( const client, const szString[], any:... )
{
    new szMsg[ 191 ], Players[ 32 ], PNum = 1;
   
    static Len; Len = formatex( szMsg, charsmax( szMsg ), "^4[%s]^1 ", szPrefix );
   
    vformat( szMsg[ Len ], charsmax ( szMsg ) - Len, szString, 3 );
   
    if ( client )    Players[ 0 ] = client;
   
    else    get_players( Players, PNum, "ch" );
   
    for ( new i; i < PNum; i++ )
    {
        if ( is_user_connected( Players[ i ] ) )
        {
            message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "SayText" ) ,_, Players[ i ] );
           
            write_byte( Players[ i ] );
           
            write_string( szMsg );
           
            message_end( );
        }
    }
   
    return 1;
}

stock szName( const index )
{
    static g_szName[ 32 ];
   
    get_user_name( index, g_szName, charsmax( g_szName ) );
   
    return g_szName;
}

stock fm_get_user_team( const index )
    return get_pdata_int( index, 114 );


thank you i will test that

NarutoAzores 05-27-2021 16:08

Re: Voice plugin
 
Quote:

Originally Posted by Barlap (Post 2747725)
Try this
Code:

#include < amxmodx >
#include < fakemeta >

enum _:Teams
{
    FM_TEAM_UNASSIGNED,
    FM_TEAM_T,
    FM_TEAM_CT,
    FM_TEAM_SPECTATOR
};

new const szPrefix[ ] = "JB";

new bool:Voice[ 33 ], pCvar[ 2 ];

public plugin_init()
{
    register_plugin( "Voice menu", "1.1", "Barlap" );
   
    register_clcmd( "say /vmanager", "CmdVoice" );
   
    register_forward( FM_Voice_SetClientListening, "FwdVoiceSetClientListening" );
   
    register_logevent( "evRoundStart", 2, "1=Round_Start" );
   
    pCvar[ 0 ] = register_cvar( "vmanager_toggle", "1" );
    pCvar[ 1 ] = register_cvar( "vmanager_deadvoice", "1" );        // Dead players can talk to each other
}

public CmdVoice( client )
{
    if ( !get_pcvar_num( pCvar[ 0 ] ) )
        return 0;
   
    if ( !(get_user_flags( client ) & ADMIN_IMMUNITY) )
        return ColorPrint( client, "You have no access to this command." );
   
    static szItem[ 128 ], Menu, Players[ 32 ], iNum, szTempid[ 10 ];
   
    formatex( szItem, charsmax( szItem ), "\r[%s]\w Voice Menu", szPrefix );
   
    Menu = menu_create( szItem, "SubVoice" );
   
    get_players( Players, iNum, "ce", "TERRORIST" );
   
    for ( new i; i < iNum; i++ )
    {
        new iPlayer = Players[ i ];
       
        num_to_str( iPlayer, szTempid, charsmax( szTempid ) );
       
        formatex( szItem, charsmax( szItem ), "%s%s", szName( iPlayer ), Voice[ iPlayer ] ? " - \d[\r Voice \d]" : "" );
       
        menu_additem( Menu, szItem, szTempid );
    }
   
    menu_display( client, Menu );
   
    return 1;
}

public SubVoice( client, Menu, Item )
{
    if ( !get_pcvar_num( pCvar[ 0 ] ) )
        return 0;
   
    if ( Item == MENU_EXIT )
    {
        menu_destroy( Menu );
       
        return 1;
    }
   
    new Access, Callback, Name[ 64 ], Data[ 6 ];
   
    menu_item_getinfo( Menu, Item, Access, Data, charsmax( Data ), Name, charsmax( Name ),Callback );
   
    new iPlayer = str_to_num( Data );
   
    if ( fm_get_user_team( iPlayer ) != FM_TEAM_T )
        return ColorPrint( client, "Invalid player was chosen." );
   
    ColorPrint( 0, "^4%s^1 %s^4 %s^1 the abillity to speak.", szName( client ), Voice[ iPlayer ] ? "took" : "gave", szName( iPlayer ) );
   
    Voice[ iPlayer ] = !Voice[ iPlayer ];
   
    menu_destroy( Menu );
   
    CmdVoice( client );
   
    return 1;
}
   

public FwdVoiceSetClientListening( Rec, Sender, bool:bListen )
{
    if ( !get_pcvar_num( pCvar[ 0 ] ) || get_user_flags( Sender ) & ADMIN_BAN || fm_get_user_team( Sender ) == FM_TEAM_CT && is_user_alive( Sender ) || Voice[ Sender ] ||
    get_pcvar_num( pCvar[ 1 ] ) != 0 && !is_user_alive( Sender ) && !is_user_alive( Rec ) || !is_user_connected( Sender ) || !is_user_connected( Rec ) )
        return 1;
   
    engfunc( EngFunc_SetClientListening, Rec, Sender, 0 );
   
    return FMRES_SUPERCEDE;
}

public evRoundStart( )
{
    if ( !get_pcvar_num( pCvar[ 0 ] ) )
        return 0;
   
    for ( new i = 1; i < get_maxplayers(); i++ )
    {
        if ( !is_user_connected( i ) || !Voice[ i ] )
            continue;
       
        Voice[ i ] = false;
    }
   
    return 0;
}

stock ColorPrint( const client, const szString[], any:... )
{
    new szMsg[ 191 ], Players[ 32 ], PNum = 1;
   
    static Len; Len = formatex( szMsg, charsmax( szMsg ), "^4[%s]^1 ", szPrefix );
   
    vformat( szMsg[ Len ], charsmax ( szMsg ) - Len, szString, 3 );
   
    if ( client )    Players[ 0 ] = client;
   
    else    get_players( Players, PNum, "ch" );
   
    for ( new i; i < PNum; i++ )
    {
        if ( is_user_connected( Players[ i ] ) )
        {
            message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "SayText" ) ,_, Players[ i ] );
           
            write_byte( Players[ i ] );
           
            write_string( szMsg );
           
            message_end( );
        }
    }
   
    return 1;
}

stock szName( const index )
{
    static g_szName[ 32 ];
   
    get_user_name( index, g_szName, charsmax( g_szName ) );
   
    return g_szName;
}

stock fm_get_user_team( const index )
    return get_pdata_int( index, 114 );


failed compile im using amx version 1.7 i think , what version you use?

iceeedr 05-27-2021 16:44

Re: Voice plugin
 
Quote:

Originally Posted by NarutoAzores (Post 2747973)
failed compile im using amx version 1.7 i think , what version you use?

1.7? WTF

fysiks 05-27-2021 20:42

Re: Voice plugin
 
Quote:

Originally Posted by NarutoAzores (Post 2747973)
failed compile im using amx version 1.7 i think , what version you use?

You should be using 1.9.0+.


All times are GMT -4. The time now is 19:57.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.