Poner limite para donar ammopacks
#1
Hola todos, alguien podria poner en este menu (de chema) que el maximo que se pueda donar sea 100 ammopacks y que solo se pueda utilizar una vez por mapa este menu (o sea solo pueda donar a un jugador por mapa) .. gracias antemano

Código PHP:
/* Sublime AMXX Editor v3.0.0-beta */

#include < amxmodx >

#pragma semicolon 1

#if AMXX_VERSION_NUM < 183

    #define client_disconected client_disconnect
    #define print_team_default 0
    #define MAX_PLAYERS 32
    #define MAX_NAME_LENGTH 32

    
stock client_print_coloriIDiFakeVar, const szInput[ ], any:... ) {

        
#pragma unused iFakeVar
        
static szMessage191 ], g_iMsgSayText;

        if( !
g_iMsgSayText )
            
g_iMsgSayText get_user_msgid"SayText" );

        
vformatszMessage190szInput);

        
message_beginiID MSG_ONE_UNRELIABLE MSG_BROADCASTg_iMsgSayText, .player iID );
        
write_byteiID iID 33 );
        
write_stringszMessage );
        
message_end( );
    }
#endif

/* GLOBAL STUFF */
new g_szPluginName[ ] = "Donate ammopacks";
new 
g_szPluginVersion[ ] = "1.0b";
new 
g_szPluginAuthor[ ] = "Chema";

new 
g_szSayPrefix[ ] = "^3[Kohoutek Gaming]^1";
new 
g_szConsolePrefix[ ] = "[Kohoutek Gaming]";
new 
g_szContactUrl[ ] = "www.amxmodx-es.com/Chema";

new const 
g_szSelectItemSound[ ] = "Ui/buttonclickrelease.wav";

const 
Float:TASK_ADVERTISING 90.0;

new 
g_szPlayerNameMAX_PLAYERS ][ MAX_NAME_LENGTH ];
new 
g_iTargetMAX_PLAYERS ];
new 
g_iAmmopacksMAX_PLAYERS ];

public 
plugin_init( ) {

    
register_pluging_szPluginNameg_szPluginVersiong_szPluginAuthor );
        
    
/* Plugin Cvars */
    
register_cvar"donateaps_author"g_szPluginAuthorFCVAR_SPONLY );
    
register_cvar"donateaps"g_szPluginVersionFCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED );

    
/* Client-related Stuff */
    
register_clcmd"ENTER_AMMOUNT""MESSAGE_EnterAmmount" );
    
register_clcmd"say /donate""ShowDonateMenu" );

    
/* Init Tasks */
    
set_taskTASK_ADVERTISING"task_Advertising"0, .flags "b" );
}

/* Init Tasks */
public task_Advertising( ) {

    
ClrearUserChat);
    
client_print_color00"%s This server is using ^3%s^1 ^4%s^1 by ^3%s^1."g_szSayPrefixg_szPluginNameg_szPluginVersiong_szPluginAuthor );
    
client_print_color00"%s You can contact him at: ^4%s^1."g_szSayPrefixg_szContactUrl );
}

/* Client-related Stuff */
public client_putinserveriID )
    
g_iAmmopacksiID ] = 0;

public 
MESSAGE_EnterAmmount( const iID ) {

    new 
szAmmount12 ], iAmmount;
    
read_argsszAmmountcharsmaxszAmmount ) );
    
remove_quotesszAmmount );
    
trimszAmmount );

    new 
iLen strlenszAmmount );

    if( !
iLen ) {

        
client_print_coloriID0"%s You can't leave the amount blank."g_szSayPrefix );
        
client_cmdiID"messagemode ^"ENTER_AMMOUNT^"" );
        return 
PLUGIN_HANDLED;
    }

    for( new 
0iLeni++ ) {

        if( !
isdigitszAmmount] ) ) {

            
client_print_coloriID0"%s You can only write numbers."g_szSayPrefix );
            
client_cmdiID"messagemode ^"ENTER_AMMOUNT^"" );
            return 
PLUGIN_HANDLED;
        }
    }
    
    
iAmmount str_to_numszAmmount );
    
    if( 
iAmmount ) {

        
client_print_coloriID0"%s You can't put negative numbers."g_szSayPrefix );
        
client_cmdiID"messagemode ^"ENTER_AMMOUNT^"" );
        return 
PLUGIN_HANDLED;
    }

    
g_iAmmopacksg_iTargetiID ] ] += iAmmount;
    
client_print_coloriID0"%s You gave him^4 %i^1 ammopacks to ^3%s^1."g_szSayPrefixiAmmountg_szPlayerNameg_iTargetiID ] ] );
    
client_print_colorg_iTargetiID ], 0"%s ^3%s^1 has given you^4 %i^1 ammopacks."g_szSayPrefixg_szPlayerNameiID ], iAmmount );

    return 
PLUGIN_HANDLED;
}

/* Donate Menu */
public ShowDonateMenu( const iID ) {

    if( !( 
get_user_flagsiID ADMIN_KICK ) ) ) {

        
client_print_coloriID0"%s Only administrators have access to this menu."g_szSayPrefix );
        return 
PLUGIN_HANDLED;
    }

    new 
szBuffer40 ];
    new 
iMenu menu_create"\yDonate ammopacks^n^nFirst select a \wplayer\y.""HandlerDonateMenu" );
    
    new 
iNumber];
    
    for( new 
1<= get_maxplayers( ); i++ ) {
        
        if ( !
is_user_connected/*|| i == iID*/ )
            continue;
        
        
get_user_nameig_szPlayerName], sizeofg_szPlayerName[ ] ) );
        
formatexszBuffercharsmaxszBuffer ), "%s \r(%i Ammopacks)"g_szPlayerName], g_iAmmopacks] );
        
num_to_striiNumbersizeofiNumber ) );
        
menu_additemiMenuszBufferiNumber );
    }
    
    
menu_setpropiMenuMPROP_NUMBER_COLOR"\y" );
    
menu_displayiIDiMenu );
    
    return 
PLUGIN_HANDLED;
}

public 
HandlerDonateMenu( const iID, const iMenu, const iItem ) {

    if( 
iItem == MENU_EXIT ) {
        
        
menu_destroyiMenu );
        return 
PLUGIN_HANDLED;
    }
    
    static 
iNumber], iTarget;
    
menu_item_getinfoiMenuiItemiTargetiNumbersizeofiNumber ), __iTarget );        
    
    
g_iTargetiID ] = str_to_numiNumber );

    
client_cmdiID"messagemode ^"ENTER_AMMOUNT^"" );
    
client_cmdiID"spk ^"%s^""g_szSelectItemSound );

    return 
PLUGIN_HANDLED;
}

/* Stocks & Private functions */
stock ClrearUserChat( const iID ) {

    new 
j;

    for( 
17j++ ) {

        
client_printiIDprint_chat"      " );
    }

Responder
#2
Solo cambia esta linea
Código PHP:
g_iAmmopacksg_iTargetiID ] ] += iAmmount
por esta ------>
Código PHP:
g_iAmmopacksg_iTargetiID ] ] = clamp(g_iAmmopacksg_iTargetiID ] ]+iAmmount0100); 
[Imagen: 76561198068808877.png]
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)