AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Suggestions / Requests (https://forums.alliedmods.net/forumdisplay.php?f=12)
-   -   RoundStartEvent - help (https://forums.alliedmods.net/showthread.php?t=190455)

Ax3l 07-18-2012 18:47

RoundStartEvent - help
 
I have a vip plugin , with menu , and all of things

But i have a problem , function

Code:

register_logevent( "RoundStartEvent" , 2 , "1=Round_Start" );

public RoundStartEvent( )
{
        new Players[ 32 ] , count;
        get_players( Players , count , "ch" );
       
        for( new i; i < count; i++ )
        {
                AlreadyUsed[ i ] = false;
        }
}

I understood is not so good .
I mean , i want to use 1 option from /vipmenu in 1 round .
And sometimes i don't use /vipmenu in 1 round but it say i used it ... so -> BUG



Here come my question : is good if i replace roundstartevent with :

Code:

RegisterHam( Ham_Spawn , "player" , "SpawnPlayer" , 1 );

public SpawnPlayer( iPlayer )
{
        AlreadyUsed[ iPlayer ] = false;
}

Or should i stick with RoundStartEvent ?

ConnorMcLeod 07-18-2012 18:56

Re: RoundStartEvent - help
 
Spawn should be ok.
But you can use new round.
Problem with roud start is that people can't use stuff during freezetime if bool has been set on previous round.

register_event("HLTV", "Event_HLTV_New_Round", "a", "1=0", "2=0")

PHP Code:

public Event_HLTV_New_Round()
{
    
arrayset(AlreadyUsedfalsesizeof(AlreadyUsed))



Ax3l 07-18-2012 19:00

Re: RoundStartEvent - help
 
If ConnorMcLeod say so , i will use new round . Thank you :)

ConnorMcLeod 07-18-2012 19:01

Re: RoundStartEvent - help
 
Quote:

Originally Posted by Ax3l (Post 1753345)
And sometimes i don't use /vipmenu in 1 round but it say i used it ... so -> BUG

Seems that there is another problem somewhere in your code then.

Ax3l 07-18-2012 19:05

Re: RoundStartEvent - help
 
This is all plugin

Code:

new bool: AlreadyUsed[ 33 ];

new g_iSayText;

public plugin_init( )
{
        register_clcmd( "say /vipmenu" , "CmdVIP" );
       
        register_event( "HLTV" , "NewRound" , "a" , "1=0" , "2=0" );
       
        g_iSayText = get_user_msgid( "SayText" );
}

public NewRound( )
{
        arrayset( AlreadyUsed , false , sizeof( AlreadyUsed ) );
}

public CmdVIP( iPlayer )
{
        if( get_user_flags( iPlayer ) & ADMIN_LEVEL_H )
        {
                if( !AlreadyUsed[ iPlayer ] )
                {
                        new Menu = menu_create( "VIP Menu" , "VIPMenu" );
                       
                        menu_additem( Menu , "GoDMoDe" , "1" );
                        menu_additem( Menu , "NoClip" , "2" );
                        menu_additem( Menu , "HeaLth" , "3" );
                        menu_additem( Menu , "MoNeY" , "4" );
                        menu_additem( Menu , "XP" , "5" );
                        menu_additem( Menu , "ReSPaWn" , "6" );
                       
                        menu_display( iPlayer , Menu , 0 );
                       
                        AlreadyUsed[ iPlayer ] = true;
                }
               
                else
                {
                        TE_SayText( iPlayer , "^x03 Ai folosit deja meniul de VIP runda asta" );
                }
        }
       
        else
        {
                TE_SayText( iPlayer , "^x03 Nu ai acces la aceasta comanda" );
        }
}

public VIPMenu( iPlayer , Menu , Item )
{
        if( Item == MENU_EXIT )
        {
                menu_destroy( Menu );
               
                return PLUGIN_HANDLED;
        }
       
        switch( Item )
        {
                case 0 : GoDMoDe( iPlayer );
                case 1 : NoClip( iPlayer );
                case 2 : HeaLth( iPlayer );
                case 3 : MoNeY( iPlayer );
                case 4 : XP( iPlayer );
                case 5 : ReSPaWn( iPlayer );
        }
       
        return PLUGIN_HANDLED;
}

public GoDMoDe( iPlayer )
{
        set_user_godmode( iPlayer , 1 );
       
        TE_SayText( iPlayer , "^x03 Ai folosit comanda de^x04 VIP GoDMoDe^x03 . Pentru 5 secunde esti invincibil" );
       
        set_task( 2.0 , "GoDMoDeOff" , iPlayer );
}

public GoDMoDeOff( iPlayer )
        set_user_godmode( iPlayer , 0 );

public NoClip( iPlayer )
{
        set_user_noclip( iPlayer , 1 );
       
        TE_SayText( iPlayer , "^x03 Ai folosit comanda de^x04 VIP NoClip^x03 . Pentru 5 secunde poti trece prin pereti" );
       
        set_task( 5.0 , "NoClipOff" , iPlayer );
}

public NoClipOff( iPlayer )
        set_user_noclip( iPlayer , 0 );

public HeaLth( iPlayer )
{
        set_user_health( iPlayer , get_user_health( iPlayer ) + 50 );
        cs_set_user_armor( iPlayer , get_user_armor( iPlayer ) + 100 , CS_ARMOR_VESTHELM );
        set_user_footsteps( iPlayer , 1 );
       
        TE_SayText( iPlayer , "^x03 Ai folosit comanda de^x04 VIP HeaLth^x03 . Ai primit +50 HP" );
}

public MoNeY( iPlayer )
{
        cs_set_user_money( iPlayer , 16000 );
       
        TE_SayText( iPlayer , "^x03 Ai folosit comanda de^x04 VIP MoNeY^x03 . Ai primit 16.000 $" );
}

public XP( iPlayer )
{
        new Nume[ 32];
        get_user_name( iPlayer , Nume , 31 );
       
        server_cmd( "amx_givexp %s 2500" , Nume );
}

public ReSPaWn( iPlayer )
{
        new iSansa = random( 100 );
       
        if( iSansa <= 20 && !is_user_alive( iPlayer ) )
        {
                ExecuteHamB( Ham_CS_RoundRespawn , iPlayer );
               
                TE_SayText( iPlayer , "^x03 Ai folosit comanda de^x04 VIP ReSPaWn . Ai primit ReSPaWn" );
        }
       
        else
        {
                TE_SayText( iPlayer , "^x03 Astazi nu ai noroc . Nu ai primit ReSPaWn" );
        }
}

TE_SayText( iReceiver , szMessage[ ] , any: ... )
{
        static szBuffer[ 192 ];
        vformat( szBuffer , 191 , szMessage , 3 );
       
        if( iReceiver )
                message_begin( MSG_ONE_UNRELIABLE , g_iSayText , _ , iReceiver ) , write_byte( iReceiver ) , write_string( szBuffer ) , message_end( );
       
        else
        {
                static iPlayers[ 32 ] , iNum , i;
                get_players( iPlayers , iNum , "ch" );
               
                for( i = 0; i < iNum; i++ )
                        message_begin( MSG_ONE_UNRELIABLE , g_iSayText , _ , iPlayers[ i ] ) , write_byte( iPlayers[ i ] ) , write_string( szBuffer ) , message_end( );
        }
}


ConnorMcLeod 07-18-2012 19:26

Re: RoundStartEvent - help
 
Don't set bool in CmdVIP but in VIPMenu, so if player press exit or if menu disappear because of another menu or whatever, bool won't be set to true.

PHP Code:

public CmdVIPiPlayer )
{
    if( 
get_user_flagsiPlayer ) & ADMIN_LEVEL_H )
    {
        if( !
AlreadyUsediPlayer ] )
        {
            new 
Menu menu_create"VIP Menu" "VIPMenu" );
            
            
menu_additemMenu "GoDMoDe" "1" );
            
menu_additemMenu "NoClip" "2" );
            
menu_additemMenu "HeaLth" "3" );
            
menu_additemMenu "MoNeY" "4" );
            
menu_additemMenu "XP" "5" );
            
menu_additemMenu "ReSPaWn" "6" );
            
            
menu_displayiPlayer Menu );
            
            
AlreadyUsediPlayer ] = true;
        }
        
        else
        {
            
TE_SayTextiPlayer "^x03 Ai folosit deja meniul de VIP runda asta" );
        }
    }
    
    else
    {
        
TE_SayTextiPlayer "^x03 Nu ai acces la aceasta comanda" );
    }
}

public 
VIPMenuiPlayer Menu Item )
{
    if( 
Item == MENU_EXIT )
    {
        
menu_destroyMenu );
        
        return 
PLUGIN_HANDLED;
    }
    
    switch( 
Item )
    {
        case 
GoDMoDeiPlayer );
        case 
NoClipiPlayer );
        case 
HeaLthiPlayer );
        case 
MoNeYiPlayer );
        case 
XPiPlayer );
        case 
ReSPaWniPlayer );
    }
    
    return 
PLUGIN_HANDLED;


->

PHP Code:

public CmdVIPiPlayer )
{
    if( 
get_user_flagsiPlayer ) & ADMIN_LEVEL_H )
    {
        if( !
AlreadyUsediPlayer ] )
        {
            new 
Menu menu_create"VIP Menu" "VIPMenu" );
            
            
menu_additemMenu "GoDMoDe" "1" );
            
menu_additemMenu "NoClip" "2" );
            
menu_additemMenu "HeaLth" "3" );
            
menu_additemMenu "MoNeY" "4" );
            
menu_additemMenu "XP" "5" );
            
menu_additemMenu "ReSPaWn" "6" );
            
            
menu_displayiPlayer Menu );
        }
        
        else
        {
            
TE_SayTextiPlayer "^x03 Ai folosit deja meniul de VIP runda asta" );
        }
    }
    
    else
    {
        
TE_SayTextiPlayer "^x03 Nu ai acces la aceasta comanda" );
    }
}

public 
VIPMenuiPlayer Menu Item )
{
    if( 
Item != MENU_EXIT )
    {
        switch( 
Item )
        {
            case 
GoDMoDeiPlayer );
            case 
NoClipiPlayer );
            case 
HeaLthiPlayer );
            case 
MoNeYiPlayer );
            case 
XPiPlayer );
            case 
ReSPaWniPlayer );
            default : goto 
ExitMenu// who knows :)
        
}
        
AlreadyUsediPlayer ] = true;
    }

ExitMenu:
    
menu_destroyMenu );    
    return 
PLUGIN_HANDLED;



Ax3l 07-18-2012 19:46

Re: RoundStartEvent - help
 
Plugin works great with your "setting" ( new round ) . Thank you very much

Now i will change bool from CmdVIP to VIPMenu

Thanks a lot


All times are GMT -4. The time now is 22:10.

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