NECESITO MODIFICACION DE BUILD DISPENSER
#1
buenos días. baje el plugin BUILD DISPENSER pero para poder colocarlo Tenes que usar la letra D "drop".
lo que necesito es que en vez de usar "drop" para construirlo puedas poner en el say "/dispenser", para que sea mas facil de colocar y pueda unificar todos los comandos en un menu mas adelante

Código PHP:
/*         
    ~~~~~~~~~~~~~~~~~~~~~~~
        Build Dispenser

        Like in TFC or TF2 dispensers give you armor health and ammo
        Every time you are near at a teammate dispenser, your health, amor, or ammo will refill to maximum!        
 
        By tuty;
    ~~~~~~~~~~~~~~~~~~~~~~~
*/



#include < amxmodx >
#include < amxmisc >

#include < fakemeta >
#include < hamsandwich >
#include < cstrike >
#include < engine >
#include < fun >

#include < xs >

#pragma semicolon 1

#define PLUGIN_VERSION        "#1.0.6.0"

#if AMXX_VERSION_NUM < 183
#define MAX_PLAYERS        32
#endif

#define BREAK_COMPUTER        6

enum
{
    
STATUS_BUILDING,
    
STATUS_ACTIVE
};

enum _iColorAndCoords
{
    
x_r 0,
    
y_g,
    
z_b
};

new const 
gDamageSounds[ ][ ] = 
{
    
"debris/metal1.wav",
    
"debris/metal2.wav",
    
"debris/metal3.wav"
};

new const 
szBuildingMessages[ ][ ] =
{
    
"Building a Dispenser right here...",
    
"Directing a DISPENSER!",
    
"Dispenser coming now!",
    
"Dispenser coming right up ahead!"
};

new const 
gDispenserClassname[ ] = "NiceDispenser:D";

new const 
gDispenserActive[ ] = "buttons/button9.wav";
new const 
gDispenserMdl[ ] = "models/dispenser.mdl";
new const 
gMetalGibsMdl[ ] = "models/computergibs.mdl";
new const 
gHealingSprite[ ] = "sprites/laserbeam.spr";

new 
gHealingBeam;
new 
gMetalGibs;
new 
gMaxPlayers;
new 
gHudSync;

new 
gCvarEnabled;
new 
gDispenserCost;
new 
gCvarDispenserHealth;
new 
gCvarBuildTime;
new 
gCvarReplenishRadius;
new 
gCvarSpinDispenser;
new 
gCvarMaxHealth;
new 
gCvarMaxArmor;

new 
Float:gDispenserOriginMAX_PLAYERS ][ iColorAndCoords ];
new 
gBeamcolorMAX_PLAYERS ][ iColorAndCoords ];

new 
Float:gDispenserHealthOffMAX_PLAYERS ];
new 
bool:bDispenserBuildMAX_PLAYERS ];

public 
plugin_init( )
{
    
register_plugin"Build Dispenser"PLUGIN_VERSION"tuty" );
    
    
register_event"TextMsg""EVENT_TextMsg""a""2&#Game_C""2&#Game_w""2&#Game_will_restart_in" );
    
register_logevent"LOG_RoundEnd"2"1=Round_End" );
    
    static 
szDispenserClassname[ ] = "info_target";

    
RegisterHamHam_TakeDamageszDispenserClassname"bacon_TakeDamage");
    
RegisterHamHam_TraceAttackszDispenserClassname"bacon_TraceAttack" );
    
    
register_thinkgDispenserClassname"DispenserThink" );
    
register_clcmd"drop""CommandDispenserBuild" );
    
    
gCvarEnabled register_cvar"dispenser_enabled""1" );
    
gDispenserCost register_cvar"dispenser_cost""1500" );
    
gCvarDispenserHealth register_cvar"dispenser_health""900" );
    
gCvarBuildTime register_cvar"dispenser_buildtime""5" );
    
gCvarReplenishRadius register_cvar"dispenser_radius""300" );
    
gCvarSpinDispenser register_cvar"dispenser_spin""1" );
    
gCvarMaxHealth register_cvar"dispenser_playermax_health""100" );
    
gCvarMaxArmor register_cvar"dispenser_playermax_armor""100" );
    
    
gMaxPlayers get_maxplayers( );

    
gHudSync CreateHudSyncObj( );
}

public 
client_connectid )
{
    
bDispenserBuildid ] = false;
}

public 
plugin_precache( )
{    
    
gHealingBeam precache_modelgHealingSprite );
    
gMetalGibs precache_modelgMetalGibsMdl );
    
    
precache_modelgDispenserMdl );
    
precache_soundgDispenserActive );
    
    new 
i;
    for( 
0sizeof gDamageSoundsi++ )
    {
        
precache_soundgDamageSounds] );
    }
}

public 
CommandDispenserBuildid )
{
    if( !
is_user_aliveid 
    || 
get_user_weaponid ) != CSW_KNIFE 
    
|| get_pcvar_numgCvarEnabled ) != )
    {
        return 
PLUGIN_CONTINUE;
    }
    
    if( !( 
pevidpev_flags ) & FL_ONGROUND ) )
    {
        
client_printidprint_center"¡Debes estar en el suelo para construir un dispenser!" );
        
        return 
PLUGIN_HANDLED;
    }

    if( 
bDispenserBuildid ] == true )
    {
        
client_printidprint_center"¡Ya has construido un Dispenser!" );
        
        return 
PLUGIN_HANDLED;
    }

    new 
iMoney cs_get_user_moneyid );
    new 
iCost get_pcvar_numgDispenserCost );
    
    if( 
iMoney iCost )
    {
        
client_printidprint_chat"[AMBA CS] No tienes dinero para comprar un Dispenser... Necesitas(%d$)"iCost );
        
        return 
PLUGIN_HANDLED;
    }

    new 
Float:flPlayerOrigin];
    
pevidpev_originflPlayerOrigin );
    
    new 
Float:flHealth floatget_pcvar_numgCvarDispenserHealth ) );

    new 
iEntity create_entity"info_target" );
    
    if( !
pev_validiEntity ) )
    {
        return 
PLUGIN_HANDLED;
    }

    
set_peviEntitypev_classnamegDispenserClassname );
    
engfuncEngFunc_SetModeliEntitygDispenserMdl );
    
engfuncEngFunc_SetSizeiEntityFloat:{ -12.0, -10.0, -12.0 }, Float:{ 12.010.012.0 } );
    
set_peviEntitypev_originflPlayerOrigin );
    
set_peviEntitypev_solidSOLID_NOT );
    
set_peviEntitypev_movetypeMOVETYPE_TOSS );
    
set_peviEntitypev_healthflHealth );
    
set_peviEntitypev_takedamageDAMAGE_YES );
    
set_peviEntitypev_iuser2id );
    
set_peviEntitypev_iuser3STATUS_BUILDING );
    
set_peviEntitypev_nextthinkget_gametime( ) + 0.1 );

    
gDispenserOriginid ][ x_r ] = flPlayerOrigin];
    
gDispenserOriginid ][ y_g ] = flPlayerOrigin];
    
gDispenserOriginid ][ z_b ] = flPlayerOrigin];
    
    
gDispenserHealthOffid ] = flHealth;
    
bDispenserBuildid ] = true;
    
    
set_taskfloatget_pcvar_numgCvarBuildTime ) ), "BuildDispenserSolid"iEntity );
    
cs_set_user_moneyidiMoney iCost);

    
client_printidprint_centerszBuildingMessagesrandom_num0charsmaxszBuildingMessages ) ) ] );
    
    return 
PLUGIN_HANDLED;
}

public 
bacon_TakeDamageentidinflictoridattackerFloat:damagedamagebits )
{
    new 
szClassname32 ];
    
peventpev_classnameszClassnamecharsmaxszClassname ) );
    
    if( 
equalszClassnamegDispenserClassname ) )
    {
        new 
iOwner peventpev_iuser2 );

        if( 
peventpev_health ) <= 0.0 )
        {
            new 
szName32 ];
            
get_user_nameidattackerszNamecharsmaxszName ) );

            new 
Float:flOrigin];
            
peventpev_originflOrigin );
                
            
UTIL_BreakModelflOrigingMetalGibsBREAK_COMPUTER );
            
set_peventpev_flagspeventpev_flags ) | FL_KILLME );

            if( 
idattacker == iOwner )
            {
                
client_printiOwnerprint_center"Has destruido el Dispenser!" );
            }

            else
            {
                
client_printiOwnerprint_center"[AMBA CS] %s ha destrozado el Dispenser!"szName );
            }

            
client_cmdiOwner"speak ^"vox/bizwarn computer destroyed^"" );
            
bDispenserBuildiOwner ] = false;
        }
        
        
gDispenserHealthOffiOwner ] = floatpeventpev_health ) );
        
emit_soundentCHAN_STATICgDamageSoundsrandom_num0charsmaxgDamageSounds ) ) ], VOL_NORMATTN_NORM0PITCH_NORM );    
    }
}

public 
bacon_TraceAttackiVictimiAttackerFloat:flDamageFloat:flDirection], iTriDamageBits )
{
    new 
szClassname32 ];
    
peviVictimpev_classnameszClassnamecharsmaxszClassname ) );
    
    if( 
equalszClassnamegDispenserClassname ) )
    {
        new 
Float:flEndOrigin];
        
get_tr2iTrTR_vecEndPosflEndOrigin );
    
        
UTIL_SparksflEndOrigin );
    }
}    
            
public 
DispenserThinkiEnt )
{
    if( 
pev_validiEnt ) )
    {
        new 
iStatus peviEntpev_iuser3 );
        new 
iOwner peviEntpev_iuser2 );

        switch( 
iStatus )
        {
            case 
STATUS_BUILDING:
            {
                
set_renderingiEntkRenderFxDistort255255255kRenderTransAdd70 );
            }
            
            case 
STATUS_ACTIVE:
            {
                new 
id;
                for( 
id 1id <= gMaxPlayersid++ )
                {
                    if( 
is_user_connectediOwner 
                    && 
is_user_connectedid 
                    && 
is_user_aliveid 
                    && 
cs_get_user_teamid ) == cs_get_user_teamiOwner ) )
                    {
                        new 
Float:flOrigin];
                        
pevidpev_originflOrigin );
                        
                        if( 
get_distance_fgDispenserOriginiOwner ], flOrigin ) <= floatget_pcvar_numgCvarReplenishRadius ) ) )
                        {
                            if( 
UTIL_IsVisibleidiEnt ) )
                            {
                                
UTIL_GiveWeaponAmmoid );
                            
                                
// people will ask why i didn't used if and else if...
                                // because i want to recharge health and armor and ammo in same time if needed :D

                                
if( get_user_healthid ) < get_pcvar_numgCvarMaxHealth ) )
                                {
                                    
set_user_healthidget_user_healthid ) + );
                                }
                            
                                if( 
get_user_armorid ) < get_pcvar_numgCvarMaxArmor ) )
                                {
                                    
set_user_armoridget_user_armorid ) + );
                                }
                            
                                
UTIL_BeamEntsgDispenserOriginiOwner ], flOrigingBeamcoloriOwner ][ x_r ], gBeamcoloriOwner ][ y_g ], gBeamcoloriOwner ][ z_b ] );
                            }
                        }
                    }
                }
                
                
set_hudmessagegBeamcoloriOwner ][ x_r ], gBeamcoloriOwner ][ y_g ], gBeamcoloriOwner ][ z_b ], 0.00.2116.00.2 );
                
ShowSyncHudMsgiOwnergHudSync">>>[ DISPENSER ]<<<^n^nEstado de Salud: [%d]"floatroundgDispenserHealthOffiOwner ] ) );
            }
        }
        
        if( 
get_pcvar_numgCvarSpinDispenser ) == )
        {
            new 
Float:flAngles];
            
peviEntpev_anglesflAngles );
            
            
flAngles] += 1.0;
            
            
set_peviEntpev_anglesflAngles );
        }

        
set_peviEntpev_nextthinkget_gametime( ) + 0.1 );
    }
}

public 
BuildDispenserSolidiEntity )
{
    if( 
pev_validiEntity ) )
    {
        new 
iOwner peviEntitypev_iuser2 );
        
        if( 
is_user_connectediOwner ) )
        {
            switch( 
cs_get_user_teamiOwner ) )
            {
                case 
CS_TEAM_T:
                {
                    
gBeamcoloriOwner ][ x_r ] = 255gBeamcoloriOwner ][ y_g ] = 0gBeamcoloriOwner ][ z_b ] = 0;
                    
set_renderingiEntitykRenderFxGlowShellgBeamcoloriOwner ][ x_r ], gBeamcoloriOwner ][ y_g ], gBeamcoloriOwner ][ z_b ], kRenderNormal);
                }
        
                case 
CS_TEAM_CT:
                {
                    
gBeamcoloriOwner ][ x_r ] = 0gBeamcoloriOwner ][ y_g ] = 0gBeamcoloriOwner ][ z_b ] = 255;
                    
set_renderingiEntitykRenderFxGlowShellgBeamcoloriOwner ][ x_r ], gBeamcoloriOwner ][ y_g ], gBeamcoloriOwner ][ z_b ], kRenderNormal);
                }
            }
        }

        
set_peviEntitypev_solidSOLID_BBOX );
        
set_peviEntitypev_iuser3STATUS_ACTIVE );

        
engfuncEngFunc_DropToFlooriEntity );
        
        
emit_soundiEntityCHAN_STATICgDispenserActiveVOL_NORMATTN_NORM0PITCH_NORM );
    }
}

public 
EVENT_TextMsg( )
{
    
UTIL_DestroyDispensers( );
}

public 
LOG_RoundEnd( )
{
    
UTIL_DestroyDispensers( );
}


/*         
    ~~~~~~~~~~~~~~~~~~~~~~~
        Stocks
    ~~~~~~~~~~~~~~~~~~~~~~~
*/


stock UTIL_DestroyDispensers( )
{
    new 
iEnt FM_NULLENT;
    
    while( ( 
iEnt find_ent_by_classiEntgDispenserClassname ) ) )
    {
        new 
iOwner peviEntpev_iuser2 );
        
        
bDispenserBuildiOwner ] = false;
        
set_peviEntpev_flagspeviEntpev_flags ) | FL_KILLME );
    }
}

stock UTIL_BreakModelFloat:flOrigin], modelflags )
{
    
engfuncEngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYflOrigin);
    
write_byteTE_BREAKMODEL );
    
engfuncEngFunc_WriteCoordflOrigin] );
    
engfuncEngFunc_WriteCoordflOrigin] );
    
engfuncEngFunc_WriteCoordflOrigin] );
    
write_coord16 );
    
write_coord16 );
    
write_coord16 );
    
write_coordrandom_num( -2020 ) );
    
write_coordrandom_num( -2020 ) );
    
write_coord10 );
    
write_byte10 );
    
write_shortmodel );
    
write_byte10 );
    
write_byte);
    
write_byteflags );
    
message_end( );
}

stock UTIL_BeamEntsFloat:flStart], Float:flEnd], rg)
{
    
engfuncEngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYflStart );
    
write_byteTE_BEAMPOINTS );
    
engfuncEngFunc_WriteCoordflStart] );
    
engfuncEngFunc_WriteCoordflStart] );
    
engfuncEngFunc_WriteCoordflStart] );
    
engfuncEngFunc_WriteCoordflEnd] );
    
engfuncEngFunc_WriteCoordflEnd] );
    
engfuncEngFunc_WriteCoordflEnd] );
    
write_shortgHealingBeam );
    
write_byte);
    
write_byte);
    
write_byte);
    
write_byte80 );
    
write_byte);
    
write_byte);
    
write_byte);
    
write_byte);
    
write_byte130 );
    
write_byte);
    
message_end( );
}

stock UTIL_GiveWeaponAmmoindex )
{
    new 
szCopyAmmoData40 ];
    
    switch( 
get_user_weaponindex ) )
    {
        case 
CSW_P228copyszCopyAmmoDatacharsmaxszCopyAmmoData ), "ammo_357sig" );
        case 
CSW_SCOUTCSW_G3SG1CSW_AK47copyszCopyAmmoDatacharsmaxszCopyAmmoData ), "ammo_762nato" );
        case 
CSW_XM1014CSW_M3copyszCopyAmmoDatacharsmaxszCopyAmmoData ), "ammo_buckshot" );
        case 
CSW_MAC10CSW_UMP45CSW_USPcopyszCopyAmmoDatacharsmaxszCopyAmmoData ), "ammo_45acp" );
        case 
CSW_SG550CSW_GALILCSW_FAMASCSW_M4A1CSW_SG552CSW_AUGcopyszCopyAmmoDatacharsmaxszCopyAmmoData ), "ammo_556nato" );
        case 
CSW_ELITECSW_GLOCK18CSW_MP5NAVYCSW_TMPcopyszCopyAmmoDatacharsmaxszCopyAmmoData ), "ammo_9mm" );
        case 
CSW_AWPcopyszCopyAmmoDatacharsmaxszCopyAmmoData ), "ammo_338magnum" );
        case 
CSW_M249copyszCopyAmmoDatacharsmaxszCopyAmmoData ), "ammo_556natobox" );
        case 
CSW_FIVESEVENCSW_P90copyszCopyAmmoDatacharsmaxszCopyAmmoData ), "ammo_57mm" );
        case 
CSW_DEAGLEcopyszCopyAmmoDatacharsmaxszCopyAmmoData ), "ammo_50ae" );
    }
    
    
give_itemindexszCopyAmmoData );
}

stock UTIL_SparksFloat:flOrigin] )
{
    
engfuncEngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYflOrigin);
    
write_byteTE_SPARKS );
    
engfuncEngFunc_WriteCoordflOrigin] );
    
engfuncEngFunc_WriteCoordflOrigin] );
    
engfuncEngFunc_WriteCoordflOrigin] );
    
message_end( );
}

stock bool:UTIL_IsVisibleindexentityignoremonsters )
{
    new 
Float:flStart], Float:flDest];
    
pevindexpev_originflStart );
    
pevindexpev_view_ofsflDest );

    
xs_vec_addflStartflDestflStart );
    
    
peventitypev_originflDest );
    
engfuncEngFunc_TraceLineflStartflDestignoremonstersindex);
    
    new 
Float:flFraction;
    
get_tr20TR_flFractionflFraction );
    
    if( 
flFraction == 1.0 || get_tr20TR_pHit) == entity )
    {
        return 
true;
    }
    
    return 
false;
}

/*         
    ~~~~~~~~~~~~~~~~~~~~~~~
          End of Code
    ~~~~~~~~~~~~~~~~~~~~~~~
*/
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang3082\\ f0\\ fs16 \n\\ par }
*/ 
Responder
#2
(03/08/2021, 12:35 PM)cahervar escribió: buenos días. baje el plugin BUILD DISPENSER pero para poder colocarlo Tenes que usar la letra D "drop".
lo que necesito es que en vez de usar "drop" para construirlo puedas poner en el say "/dispenser", para que sea mas facil de colocar y pueda unificar todos los comandos en un menu mas adelante

Código PHP:
/*         
    ~~~~~~~~~~~~~~~~~~~~~~~
        Build Dispenser

        Like in TFC or TF2 dispensers give you armor health and ammo
        Every time you are near at a teammate dispenser, your health, amor, or ammo will refill to maximum!        
 
        By tuty;
    ~~~~~~~~~~~~~~~~~~~~~~~
*/



#include < amxmodx >
#include < amxmisc >

#include < fakemeta >
#include < hamsandwich >
#include < cstrike >
#include < engine >
#include < fun >

#include < xs >

#pragma semicolon 1

#define PLUGIN_VERSION        "#1.0.6.0"

#if AMXX_VERSION_NUM < 183
#define MAX_PLAYERS        32
#endif

#define BREAK_COMPUTER        6

enum
{
    
STATUS_BUILDING,
    
STATUS_ACTIVE
};

enum _iColorAndCoords
{
    
x_r 0,
    
y_g,
    
z_b
};

new const 
gDamageSounds[ ][ ] = 
{
    
"debris/metal1.wav",
    
"debris/metal2.wav",
    
"debris/metal3.wav"
};

new const 
szBuildingMessages[ ][ ] =
{
    
"Building a Dispenser right here...",
    
"Directing a DISPENSER!",
    
"Dispenser coming now!",
    
"Dispenser coming right up ahead!"
};

new const 
gDispenserClassname[ ] = "NiceDispenser:D";

new const 
gDispenserActive[ ] = "buttons/button9.wav";
new const 
gDispenserMdl[ ] = "models/dispenser.mdl";
new const 
gMetalGibsMdl[ ] = "models/computergibs.mdl";
new const 
gHealingSprite[ ] = "sprites/laserbeam.spr";

new 
gHealingBeam;
new 
gMetalGibs;
new 
gMaxPlayers;
new 
gHudSync;

new 
gCvarEnabled;
new 
gDispenserCost;
new 
gCvarDispenserHealth;
new 
gCvarBuildTime;
new 
gCvarReplenishRadius;
new 
gCvarSpinDispenser;
new 
gCvarMaxHealth;
new 
gCvarMaxArmor;

new 
Float:gDispenserOriginMAX_PLAYERS ][ iColorAndCoords ];
new 
gBeamcolorMAX_PLAYERS ][ iColorAndCoords ];

new 
Float:gDispenserHealthOffMAX_PLAYERS ];
new 
bool:bDispenserBuildMAX_PLAYERS ];

public 
plugin_init( )
{
    
register_plugin"Build Dispenser"PLUGIN_VERSION"tuty" );
    
    
register_event"TextMsg""EVENT_TextMsg""a""2&#Game_C""2&#Game_w""2&#Game_will_restart_in" );
    
register_logevent"LOG_RoundEnd"2"1=Round_End" );
    
    static 
szDispenserClassname[ ] = "info_target";

    
RegisterHamHam_TakeDamageszDispenserClassname"bacon_TakeDamage");
    
RegisterHamHam_TraceAttackszDispenserClassname"bacon_TraceAttack" );
    
    
register_thinkgDispenserClassname"DispenserThink" );
    
register_clcmd"drop""CommandDispenserBuild" );
    
    
gCvarEnabled register_cvar"dispenser_enabled""1" );
    
gDispenserCost register_cvar"dispenser_cost""1500" );
    
gCvarDispenserHealth register_cvar"dispenser_health""900" );
    
gCvarBuildTime register_cvar"dispenser_buildtime""5" );
    
gCvarReplenishRadius register_cvar"dispenser_radius""300" );
    
gCvarSpinDispenser register_cvar"dispenser_spin""1" );
    
gCvarMaxHealth register_cvar"dispenser_playermax_health""100" );
    
gCvarMaxArmor register_cvar"dispenser_playermax_armor""100" );
    
    
gMaxPlayers get_maxplayers( );

    
gHudSync CreateHudSyncObj( );
}

public 
client_connectid )
{
    
bDispenserBuildid ] = false;
}

public 
plugin_precache( )
{    
    
gHealingBeam precache_modelgHealingSprite );
    
gMetalGibs precache_modelgMetalGibsMdl );
    
    
precache_modelgDispenserMdl );
    
precache_soundgDispenserActive );
    
    new 
i;
    for( 
0sizeof gDamageSoundsi++ )
    {
        
precache_soundgDamageSounds] );
    }
}

public 
CommandDispenserBuildid )
{
    if( !
is_user_aliveid 
    || 
get_user_weaponid ) != CSW_KNIFE 
    
|| get_pcvar_numgCvarEnabled ) != )
    {
        return 
PLUGIN_CONTINUE;
    }
    
    if( !( 
pevidpev_flags ) & FL_ONGROUND ) )
    {
        
client_printidprint_center"¡Debes estar en el suelo para construir un dispenser!" );
        
        return 
PLUGIN_HANDLED;
    }

    if( 
bDispenserBuildid ] == true )
    {
        
client_printidprint_center"¡Ya has construido un Dispenser!" );
        
        return 
PLUGIN_HANDLED;
    }

    new 
iMoney cs_get_user_moneyid );
    new 
iCost get_pcvar_numgDispenserCost );
    
    if( 
iMoney iCost )
    {
        
client_printidprint_chat"[AMBA CS] No tienes dinero para comprar un Dispenser... Necesitas(%d$)"iCost );
        
        return 
PLUGIN_HANDLED;
    }

    new 
Float:flPlayerOrigin];
    
pevidpev_originflPlayerOrigin );
    
    new 
Float:flHealth floatget_pcvar_numgCvarDispenserHealth ) );

    new 
iEntity create_entity"info_target" );
    
    if( !
pev_validiEntity ) )
    {
        return 
PLUGIN_HANDLED;
    }

    
set_peviEntitypev_classnamegDispenserClassname );
    
engfuncEngFunc_SetModeliEntitygDispenserMdl );
    
engfuncEngFunc_SetSizeiEntityFloat:{ -12.0, -10.0, -12.0 }, Float:{ 12.010.012.0 } );
    
set_peviEntitypev_originflPlayerOrigin );
    
set_peviEntitypev_solidSOLID_NOT );
    
set_peviEntitypev_movetypeMOVETYPE_TOSS );
    
set_peviEntitypev_healthflHealth );
    
set_peviEntitypev_takedamageDAMAGE_YES );
    
set_peviEntitypev_iuser2id );
    
set_peviEntitypev_iuser3STATUS_BUILDING );
    
set_peviEntitypev_nextthinkget_gametime( ) + 0.1 );

    
gDispenserOriginid ][ x_r ] = flPlayerOrigin];
    
gDispenserOriginid ][ y_g ] = flPlayerOrigin];
    
gDispenserOriginid ][ z_b ] = flPlayerOrigin];
    
    
gDispenserHealthOffid ] = flHealth;
    
bDispenserBuildid ] = true;
    
    
set_taskfloatget_pcvar_numgCvarBuildTime ) ), "BuildDispenserSolid"iEntity );
    
cs_set_user_moneyidiMoney iCost);

    
client_printidprint_centerszBuildingMessagesrandom_num0charsmaxszBuildingMessages ) ) ] );
    
    return 
PLUGIN_HANDLED;
}

public 
bacon_TakeDamageentidinflictoridattackerFloat:damagedamagebits )
{
    new 
szClassname32 ];
    
peventpev_classnameszClassnamecharsmaxszClassname ) );
    
    if( 
equalszClassnamegDispenserClassname ) )
    {
        new 
iOwner peventpev_iuser2 );

        if( 
peventpev_health ) <= 0.0 )
        {
            new 
szName32 ];
            
get_user_nameidattackerszNamecharsmaxszName ) );

            new 
Float:flOrigin];
            
peventpev_originflOrigin );
                
            
UTIL_BreakModelflOrigingMetalGibsBREAK_COMPUTER );
            
set_peventpev_flagspeventpev_flags ) | FL_KILLME );

            if( 
idattacker == iOwner )
            {
                
client_printiOwnerprint_center"Has destruido el Dispenser!" );
            }

            else
            {
                
client_printiOwnerprint_center"[AMBA CS] %s ha destrozado el Dispenser!"szName );
            }

            
client_cmdiOwner"speak ^"vox/bizwarn computer destroyed^"" );
            
bDispenserBuildiOwner ] = false;
        }
        
        
gDispenserHealthOffiOwner ] = floatpeventpev_health ) );
        
emit_soundentCHAN_STATICgDamageSoundsrandom_num0charsmaxgDamageSounds ) ) ], VOL_NORMATTN_NORM0PITCH_NORM );    
    }
}

public 
bacon_TraceAttackiVictimiAttackerFloat:flDamageFloat:flDirection], iTriDamageBits )
{
    new 
szClassname32 ];
    
peviVictimpev_classnameszClassnamecharsmaxszClassname ) );
    
    if( 
equalszClassnamegDispenserClassname ) )
    {
        new 
Float:flEndOrigin];
        
get_tr2iTrTR_vecEndPosflEndOrigin );
    
        
UTIL_SparksflEndOrigin );
    }
}    
            
public 
DispenserThinkiEnt )
{
    if( 
pev_validiEnt ) )
    {
        new 
iStatus peviEntpev_iuser3 );
        new 
iOwner peviEntpev_iuser2 );

        switch( 
iStatus )
        {
            case 
STATUS_BUILDING:
            {
                
set_renderingiEntkRenderFxDistort255255255kRenderTransAdd70 );
            }
            
            case 
STATUS_ACTIVE:
            {
                new 
id;
                for( 
id 1id <= gMaxPlayersid++ )
                {
                    if( 
is_user_connectediOwner 
                    && 
is_user_connectedid 
                    && 
is_user_aliveid 
                    && 
cs_get_user_teamid ) == cs_get_user_teamiOwner ) )
                    {
                        new 
Float:flOrigin];
                        
pevidpev_originflOrigin );
                        
                        if( 
get_distance_fgDispenserOriginiOwner ], flOrigin ) <= floatget_pcvar_numgCvarReplenishRadius ) ) )
                        {
                            if( 
UTIL_IsVisibleidiEnt ) )
                            {
                                
UTIL_GiveWeaponAmmoid );
                            
                                
// people will ask why i didn't used if and else if...
                                // because i want to recharge health and armor and ammo in same time if needed :D

                                
if( get_user_healthid ) < get_pcvar_numgCvarMaxHealth ) )
                                {
                                    
set_user_healthidget_user_healthid ) + );
                                }
                            
                                if( 
get_user_armorid ) < get_pcvar_numgCvarMaxArmor ) )
                                {
                                    
set_user_armoridget_user_armorid ) + );
                                }
                            
                                
UTIL_BeamEntsgDispenserOriginiOwner ], flOrigingBeamcoloriOwner ][ x_r ], gBeamcoloriOwner ][ y_g ], gBeamcoloriOwner ][ z_b ] );
                            }
                        }
                    }
                }
                
                
set_hudmessagegBeamcoloriOwner ][ x_r ], gBeamcoloriOwner ][ y_g ], gBeamcoloriOwner ][ z_b ], 0.00.2116.00.2 );
                
ShowSyncHudMsgiOwnergHudSync">>>[ DISPENSER ]<<<^n^nEstado de Salud: [%d]"floatroundgDispenserHealthOffiOwner ] ) );
            }
        }
        
        if( 
get_pcvar_numgCvarSpinDispenser ) == )
        {
            new 
Float:flAngles];
            
peviEntpev_anglesflAngles );
            
            
flAngles] += 1.0;
            
            
set_peviEntpev_anglesflAngles );
        }

        
set_peviEntpev_nextthinkget_gametime( ) + 0.1 );
    }
}

public 
BuildDispenserSolidiEntity )
{
    if( 
pev_validiEntity ) )
    {
        new 
iOwner peviEntitypev_iuser2 );
        
        if( 
is_user_connectediOwner ) )
        {
            switch( 
cs_get_user_teamiOwner ) )
            {
                case 
CS_TEAM_T:
                {
                    
gBeamcoloriOwner ][ x_r ] = 255gBeamcoloriOwner ][ y_g ] = 0gBeamcoloriOwner ][ z_b ] = 0;
                    
set_renderingiEntitykRenderFxGlowShellgBeamcoloriOwner ][ x_r ], gBeamcoloriOwner ][ y_g ], gBeamcoloriOwner ][ z_b ], kRenderNormal);
                }
        
                case 
CS_TEAM_CT:
                {
                    
gBeamcoloriOwner ][ x_r ] = 0gBeamcoloriOwner ][ y_g ] = 0gBeamcoloriOwner ][ z_b ] = 255;
                    
set_renderingiEntitykRenderFxGlowShellgBeamcoloriOwner ][ x_r ], gBeamcoloriOwner ][ y_g ], gBeamcoloriOwner ][ z_b ], kRenderNormal);
                }
            }
        }

        
set_peviEntitypev_solidSOLID_BBOX );
        
set_peviEntitypev_iuser3STATUS_ACTIVE );

        
engfuncEngFunc_DropToFlooriEntity );
        
        
emit_soundiEntityCHAN_STATICgDispenserActiveVOL_NORMATTN_NORM0PITCH_NORM );
    }
}

public 
EVENT_TextMsg( )
{
    
UTIL_DestroyDispensers( );
}

public 
LOG_RoundEnd( )
{
    
UTIL_DestroyDispensers( );
}


/*         
    ~~~~~~~~~~~~~~~~~~~~~~~
        Stocks
    ~~~~~~~~~~~~~~~~~~~~~~~
*/


stock UTIL_DestroyDispensers( )
{
    new 
iEnt FM_NULLENT;
    
    while( ( 
iEnt find_ent_by_classiEntgDispenserClassname ) ) )
    {
        new 
iOwner peviEntpev_iuser2 );
        
        
bDispenserBuildiOwner ] = false;
        
set_peviEntpev_flagspeviEntpev_flags ) | FL_KILLME );
    }
}

stock UTIL_BreakModelFloat:flOrigin], modelflags )
{
    
engfuncEngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYflOrigin);
    
write_byteTE_BREAKMODEL );
    
engfuncEngFunc_WriteCoordflOrigin] );
    
engfuncEngFunc_WriteCoordflOrigin] );
    
engfuncEngFunc_WriteCoordflOrigin] );
    
write_coord16 );
    
write_coord16 );
    
write_coord16 );
    
write_coordrandom_num( -2020 ) );
    
write_coordrandom_num( -2020 ) );
    
write_coord10 );
    
write_byte10 );
    
write_shortmodel );
    
write_byte10 );
    
write_byte);
    
write_byteflags );
    
message_end( );
}

stock UTIL_BeamEntsFloat:flStart], Float:flEnd], rg)
{
    
engfuncEngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYflStart );
    
write_byteTE_BEAMPOINTS );
    
engfuncEngFunc_WriteCoordflStart] );
    
engfuncEngFunc_WriteCoordflStart] );
    
engfuncEngFunc_WriteCoordflStart] );
    
engfuncEngFunc_WriteCoordflEnd] );
    
engfuncEngFunc_WriteCoordflEnd] );
    
engfuncEngFunc_WriteCoordflEnd] );
    
write_shortgHealingBeam );
    
write_byte);
    
write_byte);
    
write_byte);
    
write_byte80 );
    
write_byte);
    
write_byte);
    
write_byte);
    
write_byte);
    
write_byte130 );
    
write_byte);
    
message_end( );
}

stock UTIL_GiveWeaponAmmoindex )
{
    new 
szCopyAmmoData40 ];
    
    switch( 
get_user_weaponindex ) )
    {
        case 
CSW_P228copyszCopyAmmoDatacharsmaxszCopyAmmoData ), "ammo_357sig" );
        case 
CSW_SCOUTCSW_G3SG1CSW_AK47copyszCopyAmmoDatacharsmaxszCopyAmmoData ), "ammo_762nato" );
        case 
CSW_XM1014CSW_M3copyszCopyAmmoDatacharsmaxszCopyAmmoData ), "ammo_buckshot" );
        case 
CSW_MAC10CSW_UMP45CSW_USPcopyszCopyAmmoDatacharsmaxszCopyAmmoData ), "ammo_45acp" );
        case 
CSW_SG550CSW_GALILCSW_FAMASCSW_M4A1CSW_SG552CSW_AUGcopyszCopyAmmoDatacharsmaxszCopyAmmoData ), "ammo_556nato" );
        case 
CSW_ELITECSW_GLOCK18CSW_MP5NAVYCSW_TMPcopyszCopyAmmoDatacharsmaxszCopyAmmoData ), "ammo_9mm" );
        case 
CSW_AWPcopyszCopyAmmoDatacharsmaxszCopyAmmoData ), "ammo_338magnum" );
        case 
CSW_M249copyszCopyAmmoDatacharsmaxszCopyAmmoData ), "ammo_556natobox" );
        case 
CSW_FIVESEVENCSW_P90copyszCopyAmmoDatacharsmaxszCopyAmmoData ), "ammo_57mm" );
        case 
CSW_DEAGLEcopyszCopyAmmoDatacharsmaxszCopyAmmoData ), "ammo_50ae" );
    }
    
    
give_itemindexszCopyAmmoData );
}

stock UTIL_SparksFloat:flOrigin] )
{
    
engfuncEngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYflOrigin);
    
write_byteTE_SPARKS );
    
engfuncEngFunc_WriteCoordflOrigin] );
    
engfuncEngFunc_WriteCoordflOrigin] );
    
engfuncEngFunc_WriteCoordflOrigin] );
    
message_end( );
}

stock bool:UTIL_IsVisibleindexentityignoremonsters )
{
    new 
Float:flStart], Float:flDest];
    
pevindexpev_originflStart );
    
pevindexpev_view_ofsflDest );

    
xs_vec_addflStartflDestflStart );
    
    pev
entitypev_originflDest );
    
engfuncEngFunc_TraceLineflStartflDestignoremonstersindex);
    
    
new Float:flFraction;
    
get_tr20TR_flFractionflFraction );
    
    if( 
flFraction == 1.0 || get_tr20TR_pHit) == entity )
    {
        return 
true;
    }
    
    
return false;
}

/*         
    ~~~~~~~~~~~~~~~~~~~~~~~
          End of Code
    ~~~~~~~~~~~~~~~~~~~~~~~
*/
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang3082\\ f0\\ fs16 \n\\ par }
*/ 

Cambia esta linea ->

Código PHP:
register_clcmd"drop""CommandDispenserBuild" ); 

por ->

Código PHP:
register_clcmd"say /dispenser""CommandDispenserBuild" ); 

y borra esta linea ->

Código PHP:
|| get_user_weaponid ) != CSW_KNIFE 

Saludos! Crab
Responder
#3
(03/08/2021, 03:39 PM)CakiC escribió: Cambia esta linea ->

Código PHP:
register_clcmd"drop""CommandDispenserBuild" ); 

por ->

Código PHP:
register_clcmd"say /dispenser""CommandDispenserBuild" ); 

y borra esta linea ->

Código PHP:
|| get_user_weaponid ) != CSW_KNIFE 

Saludos! Crab

gracias
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)