Страница 1 от 1

Преработка на Hook

Публикувано на: 17 Окт 2021, 10:11
от Zedong
Здравейте, искам да попитам дали е възможно да се направи този Hook за BaseBuilder 4.3 by VeCo и само да е за BuildTime и всички играчи да имат достъп до hook-a.

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <engine>


/* Tirant Zombie Base Builder or Veco Zombie Base Builder */
 
#define USE_TIRANT_ZBB
//#define USE_VECO_ZBB
 
#if defined USE_TIRANT_ZBB
    #include <basebuilder>
    #define IsBuildPhase() bb_is_build_phase()
#endif
 
#if defined USE_VECO_ZBB
    #include <vzbb_mod>
    #define IsBuildPhase() user_can_build()
#endif
 
new bool:g_bHook[ 33 ];
 
new gHookOrigins[ 33 ][ 3 ];
 
new g_iHook;
 
new const g_szPrefix[ ] = "Your Prefix Here";
 
public plugin_init( )
{
    register_plugin( "[ ZBB Addon ] Hook", "1.0", "One Above All" );
   
    register_clcmd( "+hook", "hook_on" );
    register_clcmd( "-hook", "hook_off" );
}
public plugin_precache( )
{  
    g_iHook = precache_model( "sprites/zbb/hook.spr" );
}
public hook_on( id )
{
    if ( !(get_user_flags( id ) & ADMIN_RCON) && !IsBuildPhase( ) )
    {
        ColorMessage( id, "Only^3 Admins^1 can use hook after build phase." );
        return PLUGIN_HANDLED;
    }
    if ( get_user_team( id ) != 2 )
    {
        ColorMessage( id, "Only^3 Counter-Terrorists^1 can use hook!" );
        return PLUGIN_HANDLED;
    }
    if ( IsBuildPhase() || get_user_flags( id ) & ADMIN_RCON && !IsBuildPhase())
    {
        get_user_origin( id, gHookOrigins[ id ], 3 );
        g_bHook[ id ] = true;
        set_task( 0.1, "hook_task", id, "", 0, "ab" );
        hook_task( id );
    }
    return PLUGIN_HANDLED;
}
public hook_off( id )
{
    remove_hook( id );
    return PLUGIN_HANDLED;
}
public hook_task( id )
{
    if( !is_user_connected( id ) || !is_user_alive( id ) )
        remove_hook( id );
   
    remove_beam( id );
    draw_hook( id );
    new iOrigin[ 3 ], Float:fVelocity[ 3 ];
   
    get_user_origin( id, iOrigin );
    new iDistance = get_distance( gHookOrigins[ id ], iOrigin);
    if ( iDistance > 25 )
    {
        fVelocity[ 0 ] = ( gHookOrigins[ id ][ 0 ] - iOrigin[ 0 ] ) * ( 2.0 * 300 / iDistance );
        fVelocity[ 1 ] = ( gHookOrigins[ id ][ 1 ] - iOrigin[ 1 ] ) * ( 2.0 * 300 / iDistance );
        fVelocity[ 2 ] = ( gHookOrigins[ id ][ 2 ] - iOrigin[ 2 ] ) * ( 2.0 * 300 / iDistance );
        entity_set_vector( id, EV_VEC_velocity, fVelocity );
    }
    else
    {
        entity_set_vector( id, EV_VEC_velocity, Float:{0.0,0.0,0.0} );
        remove_hook( id );
    }
}
public draw_hook( id )
{
    message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
    write_byte( 1 );                // TE_BEAMENTPOINT
    write_short( id );          // Entity index
    write_coord( gHookOrigins[ id ][ 0 ] );     // Origin
    write_coord( gHookOrigins[ id ][ 1 ] );     // Origin
    write_coord( gHookOrigins[ id ][ 2 ] );     // Origin
    write_short( g_iHook );             // Sprite index
    write_byte( 0 );                // Start frame
    write_byte( 0 );                // Framerate
    write_byte( 100 );          // Life
    write_byte( 10 );           // Width
    write_byte( 0 );                // Noise
    write_byte( random_num(0, 255) );       // Red
    write_byte( random_num(0, 255) );       // Green
    write_byte( random_num(0, 255) );       // Blue
    write_byte( 250 );          // Brightness
    write_byte( 1 );                // Speed
    message_end( );
}
public remove_hook( id )
{
    if( task_exists( id ) )
        remove_task( id );
       
    remove_beam(id);
    g_bHook[ id ] = false;
}
public remove_beam(id)
{
    message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
    write_byte( 99 );
    write_short( id );
    message_end( );
}
stock ColorMessage( const id, const input[ ], any:... )
{
    new iCount = 1, iPlayers[ 32 ];
    static szMessage[ 191 ];
    new iLen = formatex( szMessage, 190, "^4[%s]^1 ", g_szPrefix );
    vformat( szMessage[ iLen ], 190-iLen, input, 3 );
    if ( id ) iPlayers[ 0 ] = id;
    else get_players( iPlayers , iCount , "ch" );
   
    for ( new i = 0; i < iCount; i++ )
    {
        if ( is_user_connected( iPlayers[ i ] ) )
        {
            message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "SayText" ), _, iPlayers[ i ] );
            write_byte( iPlayers[ i ] );
            write_string( szMessage );
            message_end( );
        }
    }
}

Преработка на Hook

Публикувано на: 17 Окт 2021, 14:25
от zolfeca

Код за потвърждение: Избери целия код

#define USE_TIRANT_ZBB
//#define USE_VECO_ZBB
>>

Код за потвърждение: Избери целия код

//#define USE_TIRANT_ZBB
#define USE_VECO_ZBB

Преработка на Hook

Публикувано на: 17 Окт 2021, 17:30
от Zedong
След Build и Prep Time hook-a пак се изпозлва. Аз искам само BuildTime да се използва hook-a

Преработка на Hook

Публикувано на: 18 Окт 2021, 00:11
от OciXCrom
Махни си администраторските флагове и тествай пак.

Преработка на Hook

Публикувано на: 18 Окт 2021, 01:17
от Zedong
Може ли да ми ги махнете?Защото аз не успях да ги махна.

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <engine>


/* Tirant Zombie Base Builder or Veco Zombie Base Builder */
 
//#define USE_TIRANT_ZBB
#define USE_VECO_ZBB
 
#if defined USE_TIRANT_ZBB
    #include <basebuilder>
    #define IsBuildPhase() bb_is_build_phase()
#endif
 
#if defined USE_VECO_ZBB
    #include <vzbb_mod>
    #define IsBuildPhase() user_can_build()
#endif
 
new bool:g_bHook[ 33 ];
 
new gHookOrigins[ 33 ][ 3 ];
 
new g_iHook;
 
new const g_szPrefix[ ] = "bg-bb";
 
public plugin_init( )
{
    register_plugin( "[ ZBB Addon ] Hook", "1.0", "One Above All" );
   
    register_clcmd( "+hook", "hook_on" );
    register_clcmd( "-hook", "hook_off" );
}
public plugin_precache( )
{  
    g_iHook = precache_model( "sprites/zbb/lgtning.spr" );
}
public hook_on( id )
{
    if ( !(get_user_flags( id ) & ADMIN_RCON) && !IsBuildPhase( ) )
    {
        ColorMessage( id, "Only^3 Admins^1 can use hook after build phase." );
        return PLUGIN_HANDLED;
    }
    if ( get_user_team( id ) != 2 )
    {
        ColorMessage( id, "Only^3 humans^1 can use hook!" );
        return PLUGIN_HANDLED;
    }
    if ( IsBuildPhase() || get_user_flags( id ) & ADMIN_RCON && !IsBuildPhase() )
    {
        get_user_origin( id, gHookOrigins[ id ], 3 );
        g_bHook[ id ] = true;
        set_task( 0.1, "hook_task", id, "", 0, "ab" );
        hook_task( id );
    }
    return PLUGIN_HANDLED;
}
public hook_off( id )
{
    remove_hook( id );
    return PLUGIN_HANDLED;
}
public hook_task( id )
{
    if( !is_user_connected( id ) || !is_user_alive( id ) )
        remove_hook( id );
   
    remove_beam( id );
    draw_hook( id );
    new iOrigin[ 3 ], Float:fVelocity[ 3 ];
   
    get_user_origin( id, iOrigin );
    new iDistance = get_distance( gHookOrigins[ id ], iOrigin);
    if ( iDistance > 25 )
    {
        fVelocity[ 0 ] = ( gHookOrigins[ id ][ 0 ] - iOrigin[ 0 ] ) * ( 2.0 * 300 / iDistance );
        fVelocity[ 1 ] = ( gHookOrigins[ id ][ 1 ] - iOrigin[ 1 ] ) * ( 2.0 * 300 / iDistance );
        fVelocity[ 2 ] = ( gHookOrigins[ id ][ 2 ] - iOrigin[ 2 ] ) * ( 2.0 * 300 / iDistance );
        entity_set_vector( id, EV_VEC_velocity, fVelocity );
    }
    else
    {
        entity_set_vector( id, EV_VEC_velocity, Float:{0.0,0.0,0.0} );
        remove_hook( id );
    }
}
public draw_hook( id )
{
    message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
    write_byte( 1 );                // TE_BEAMENTPOINT
    write_short( id );          // Entity index
    write_coord( gHookOrigins[ id ][ 0 ] );     // Origin
    write_coord( gHookOrigins[ id ][ 1 ] );     // Origin
    write_coord( gHookOrigins[ id ][ 2 ] );     // Origin
    write_short( g_iHook );             // Sprite index
    write_byte( 0 );                // Start frame
    write_byte( 0 );                // Framerate
    write_byte( 100 );          // Life
    write_byte( 10 );           // Width
    write_byte( 0 );                // Noise
    write_byte( random_num(0, 255) );       // Red
    write_byte( random_num(0, 255) );       // Green
    write_byte( random_num(0, 255) );       // Blue
    write_byte( 250 );          // Brightness
    write_byte( 1 );                // Speed
    message_end( );
}
public remove_hook( id )
{
    if( task_exists( id ) )
        remove_task( id );
       
    remove_beam(id);
    g_bHook[ id ] = false;
}
public remove_beam(id)
{
    message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
    write_byte( 99 );
    write_short( id );
    message_end( );
}
stock ColorMessage( const id, const input[ ], any:... )
{
    new iCount = 1, iPlayers[ 32 ];
    static szMessage[ 191 ];
    new iLen = formatex( szMessage, 190, "^4[%s]^1 ", g_szPrefix );
    vformat( szMessage[ iLen ], 190-iLen, input, 3 );
    if ( id ) iPlayers[ 0 ] = id;
    else get_players( iPlayers , iCount , "ch" );
   
    for ( new i = 0; i < iCount; i++ )
    {
        if ( is_user_connected( iPlayers[ i ] ) )
        {
            message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "SayText" ), _, iPlayers[ i ] );
            write_byte( iPlayers[ i ] );
            write_string( szMessage );
            message_end( );
        }
    }
}

Преработка на Hook

Публикувано на: 18 Окт 2021, 13:26
от zolfeca
Не можеш да си махнеш правата в сървъра ? Това ли казваш ?

Преработка на Hook

Публикувано на: 18 Окт 2021, 13:47
от Siska
Zedong написа: 18 Окт 2021, 01:17 Може ли да ми ги махнете? Защото аз не успях да ги махна.
Здравей приятел :)
Доколкото разбирам тук са ти казали да си махнеш админските права , за да станеш като всички играчи и да можеш да тестваш дали работи както ти искаш , а именно за всички играчи.
Правата ти трябва да са добавени в този файл - amxmodx/configs/users.ini , а ти трябва да ги махнеш от там.
След това тествай пак плъгина...

Преработка на Hook

Публикувано на: 19 Окт 2021, 19:12
от bg-bb
Незнам за човека който пусна тая заявка но искам да попитам. Може ли hook-a да се изпозлва само във BuildTime?Защото при мен играчите,админите могат да позлват на PrepTime и след тях пак могат да го позлват.
Ето и кода. Става въпрос за BaseBuilder 4.3 by VeCo

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <engine>


/* Tirant Zombie Base Builder or Veco Zombie Base Builder */
 
//#define USE_TIRANT_ZBB
#define USE_VECO_ZBB
 
#if defined USE_TIRANT_ZBB
    #include <basebuilder>
    #define IsBuildPhase() bb_is_build_phase()
#endif
 
#if defined USE_VECO_ZBB
    #include <vzbb_mod>
    #define IsBuildPhase() user_can_build()
#endif
 
new bool:g_bHook[ 33 ];
 
new gHookOrigins[ 33 ][ 3 ];
 
new g_iHook;
 
new const g_szPrefix[ ] = "bb";
 
public plugin_init( )
{
    register_plugin( "[ ZBB Addon ] Hook", "1.0", "One Above All" );
   
    register_clcmd( "+hook", "hook_on" );
    register_clcmd( "-hook", "hook_off" );
}
public plugin_precache( )
{  
    g_iHook = precache_model( "sprites/zbb/lgtning.spr" );
}
public hook_on( id )
{
    if ( !(get_user_flags( id ) & ADMIN_LEVEL_H) && !IsBuildPhase( ) )
    {
        ColorMessage( id, "Only^3 Admins^1 can use hook after build phase." );
        return PLUGIN_HANDLED;
    }
    if ( get_user_team( id ) != 2 )
    {
        ColorMessage( id, "Only^3 humans^1 can use hook!" );
        return PLUGIN_HANDLED;
    }
    if ( IsBuildPhase() || get_user_flags( id ) & ADMIN_LEVEL_H && !IsBuildPhase() )
    {
        get_user_origin( id, gHookOrigins[ id ], 3 );
        g_bHook[ id ] = true;
        set_task( 0.1, "hook_task", id, "", 0, "t" );
        hook_task( id );
    }
    return PLUGIN_HANDLED;
}
public hook_off( id )
{
    remove_hook( id );
    return PLUGIN_HANDLED;
}
public hook_task( id )
{
    if( !is_user_connected( id ) || !is_user_alive( id ) )
        remove_hook( id );
   
    remove_beam( id );
    draw_hook( id );
    new iOrigin[ 3 ], Float:fVelocity[ 3 ];
   
    get_user_origin( id, iOrigin );
    new iDistance = get_distance( gHookOrigins[ id ], iOrigin);
    if ( iDistance > 25 )
    {
        fVelocity[ 0 ] = ( gHookOrigins[ id ][ 0 ] - iOrigin[ 0 ] ) * ( 2.0 * 300 / iDistance );
        fVelocity[ 1 ] = ( gHookOrigins[ id ][ 1 ] - iOrigin[ 1 ] ) * ( 2.0 * 300 / iDistance );
        fVelocity[ 2 ] = ( gHookOrigins[ id ][ 2 ] - iOrigin[ 2 ] ) * ( 2.0 * 300 / iDistance );
        entity_set_vector( id, EV_VEC_velocity, fVelocity );
    }
    else
    {
        entity_set_vector( id, EV_VEC_velocity, Float:{0.0,0.0,0.0} );
        remove_hook( id );
    }
}
public draw_hook( id )
{
    message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
    write_byte( 1 );                // TE_BEAMENTPOINT
    write_short( id );          // Entity index
    write_coord( gHookOrigins[ id ][ 0 ] );     // Origin
    write_coord( gHookOrigins[ id ][ 1 ] );     // Origin
    write_coord( gHookOrigins[ id ][ 2 ] );     // Origin
    write_short( g_iHook );             // Sprite index
    write_byte( 0 );                // Start frame
    write_byte( 0 );                // Framerate
    write_byte( 100 );          // Life
    write_byte( 10 );           // Width
    write_byte( 0 );                // Noise
    write_byte( random_num(0, 255) );       // Red
    write_byte( random_num(0, 255) );       // Green
    write_byte( random_num(0, 255) );       // Blue
    write_byte( 250 );          // Brightness
    write_byte( 1 );                // Speed
    message_end( );
}
public remove_hook( id )
{
    if( task_exists( id ) )
        remove_task( id );
       
    remove_beam(id);
    g_bHook[ id ] = false;
}
public remove_beam(id)
{
    message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
    write_byte( 99 );
    write_short( id );
    message_end( );
}
stock ColorMessage( const id, const input[ ], any:... )
{
    new iCount = 1, iPlayers[ 32 ];
    static szMessage[ 191 ];
    new iLen = formatex( szMessage, 190, "^4[%s]^1 ", g_szPrefix );
    vformat( szMessage[ iLen ], 190-iLen, input, 3 );
    if ( id ) iPlayers[ 0 ] = id;
    else get_players( iPlayers , iCount , "ch" );
   
    for ( new i = 0; i < iCount; i++ )
    {
        if ( is_user_connected( iPlayers[ i ] ) )
        {
            message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "SayText" ), _, iPlayers[ i ] );
            write_byte( iPlayers[ i ] );
            write_string( szMessage );
            message_end( );
        }
    }
}