MxEMexico

Versión completa: DAMAGE MANAGER
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Les traigo este pequeño plugin como aporte, es algo sencillo pero creo que a más de alguno le ha de servir.

-Damage Manager-

El plugin consiste en interruptores independientes para cada arma, dicho interruptor funciona para encender / apagar el daño de algún arma en específico

Contiene:
  • Menús separados para cada tipo de arma. (Pistolas, Escopetas, SMG, Rifles, MachineGuns);

  • Opción de activar / desactivar el daño de cada arma en específico.

  • Opción para activar / desactivar el daño en general (todo tipo de daño natural);

  • Opción para activar / desactivar el daño por caída.

  • Opción para activar / desactivar el daño por granadas.

  • Opción para activar / desactivar el daño de todas las armas en general.
:whatever:

AMXMODX-ES LinkDAMAGE MANAGER (amxmodx-es.com)

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

#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>

//DAMAGE MANAGER by GabsHp

//NO MODIFICAR NINGUN ENUM / CONSTANTE / ARRAY
//SALUDOS PA LOS PIBES DEL DISCORD DE AMX-ES Y PAL BORRACHO DEL GOZE

new bool:g_AllowWpnDamage true
new 
bool:g_AllowFallDamage true
new 
bool:g_IgnoreAllDamage false
new 
bool:g_AllowNadeDamage true;


enum 
_:WPN_GETTYPE
{
    
//NOMBRE DEL ARMA, SOLO COMO GUIA, NINGUNA FUNCION
    
WPN_NAME[20],
    
//EL TIPO DE ARMA, PARA DETECTAR SI ES PISTOLA, ESCOPETA, SMG ETC...
    
WPN_TYPE,
    
//INDEX DE NUMERACION EN SU RESPECTIVO MENU;
    
WPN_NUM
}
new const 
szWpnType[][WPN_GETTYPE] =
{
    {
"NULL"00},
    {
"P228"12},
    {
"NULL"00},
    {
"SCOUT"40},
    {
"HEGRENADE"00},
    {
"XM1014"20},
    {
"C4"00},
    {
"MAC10"30},
    {
"AUG [CT]"48},
    {
"SMOKEGRENADE"0},
    {
"DUAL BERETTAS"15},
    {
"FIVE SEVEN"13},
    {
"UMP45"34},
    {
"GS550 [CT]"49},
    {
"GALIL [T]"42},
    {
"FAMAS [CT]"46},
    {
"USP"11},
    {
"GLOCK18"10},
    {
"AWP"41},
    {
"MP5"31},
    {
"M249"50},
    {
"M3"21},
    {
"M4A1 [CT]"47},
    {
"TPM"33},
    {
"G3SG1 [T]"45},
    {
"FLASHBANG"00},
    {
"DEAGLE"14},
    {
"KRIEG552 [T]"44},
    {
"AK47 [T]"43},
    {
"KNIFE"00},
    {
"P90"32}

}

enum 
_:WPN_INFO
{
    
//NOMBRE DEL ARMA MOSTRADO EN EL MENU
    
WPN_NAME[20],
    
//BOOLEANO QUE DETECTA SI ESTA ON / OFF EL DAÑO DE CADA ARMA
    
bool:WPN_BOOL
};

new 
szPistolWpn[][WPN_INFO] =
{
    {
"GLOCK18"true},
    {
"USP"true},
    {
"P228"true},
    {
"FIVE SEVEN"true},
    {
"DEAGLE"true},
    {
"DUAL BERETTAS"true}
}

new 
szShotgunWpn[][WPN_INFO] =
{
    {
"XM1014"true},
    {
"M3"true}
}

new 
szSmgWpn[][WPN_INFO] =
{
    {
"MAC10"true},
    {
"MP5"true},
    {
"P90"true},
    {
"TMP"true},
    {
"UMP45"true}
}

new 
szRiflesWpn[][WPN_INFO] =
{
    {
"SCOUT"true},
    {
"AWP"true},
    {
"GALIL [T]"true},
    {
"AK47 [T]"true},
    {
"KRIEG552 [T]"true},
    {
"G3SG1 [T]"true},
    {
"FAMAS [CT]"true},
    {
"M4A1 [CT]"true},
    {
"AUG [CT]"true},
    {
"GS550 [CT]"true}
}

new 
szMachineWpn[][WPN_INFO] =
{
    {
"M249"true}
}


public 
plugin_init()
{
    
register_plugin("Damage Manager""1.0""GabsHp");
    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage");
    
register_clcmd("say /damage""MainMenu");
}


public 
MainMenu(id)
{
    if(!
get_user_flags(id) && ADMIN_CVAR) return PLUGIN_HANDLED;
    static 
iMenu;
    
iMenu menu_create("\r[\yDamage Manager\r] \wMenú Principal""MainHandler");
    
menu_additem(iMenu"\yTipos de Daño");
    
menu_addblank(iMenu0);
    
menu_additem(iMenu"[\yPistolas\w]");
    
menu_additem(iMenu"[\yEscopetas\w]");
    
menu_additem(iMenu"[\ySMG\w]");
    
menu_additem(iMenu"[\yRifles\w]");
    
menu_addblank(iMenu0);
    
menu_additem(iMenu"[\yMachine Guns\w]");
    
menu_addblank(iMenu1);
    
menu_setprop(iMenuMPROP_EXITNAME"Salir");
    
menu_display(idiMenu);
    return 
PLUGIN_HANDLED;

}

public 
MainHandler(idiMenuitem)
{
    switch(
item)
    {
        case 
0ManageDamage(id);
        case 
1PistolMenu(id);
        case 
2ShotgunMenu(id);
        case 
3SmgMenu(id);
        case 
4RiflesMenu(id);
        case 
5MachineMenu(id);
    }
    
menu_destroy(iMenu);
    return 
PLUGIN_HANDLED
}

public 
ManageDamage(id)
{
    static 
iMenuszText[4][64];
    
formatex(szText[0], charsmax(szText[]), "\y[\wDaño por Granada\y] [\r%s\y]"g_AllowNadeDamage "ON" "OFF");
    
formatex(szText[1], charsmax(szText[]), "\y[\wDaño por Armas\y] [\r%s\y]"g_AllowWpnDamage "ON" "OFF");
    
formatex(szText[2], charsmax(szText[]), "\y[\wDaño por Caida\y] [\r%s\y]"g_AllowFallDamage "ON" "OFF");
    
formatex(szText[3], charsmax(szText[]), "\y[\wIgnorar todo daño\y] [\r%s\y]"g_IgnoreAllDamage "ON" "OFF");
    
iMenu menu_create("Activar / Desactivar Daño""ManageHandler");
    
menu_additem(iMenuszText[0]);
    
menu_additem(iMenuszText[1]);
    
menu_additem(iMenuszText[2]);
    
menu_addblank(iMenu0);
    
menu_addtext(iMenu"Esta opción desactiva todo tipo de daño natural"0);
    
menu_additem(iMenuszText[3]);
    
menu_addblank(iMenu1);
    
menu_addblank(iMenu1);
    
menu_addblank(iMenu1);
    
menu_setprop(iMenuMPROP_EXITNAME"Salir")
    
menu_display(idiMenu);
    return 
PLUGIN_HANDLED;
}

public 
ManageHandler(idiMenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(iMenu);
        
MainMenu(id);
        return 
PLUGIN_HANDLED;
    }
    switch(
item)
    {
        case 
0:
        {
            switch(
g_AllowNadeDamage)
            {
                case 
true:
                {
                    
g_AllowNadeDamage false;
                    
client_print_color(idprint_team_default"^4[WM]^1 Daño por ^4GRANADA^1: ^4DESACTIVADO");
                }
                case 
false:
                {
                    
g_AllowNadeDamage true;
                    
client_print_color(idprint_team_default"^4[WM]^1 Daño por ^4GRANADA^1: ^4ACTIVADO");
                }
            }
        }
        case 
1:
        {
            switch(
g_AllowWpnDamage)
            {
                case 
true:
                {
                    
g_AllowWpnDamage false;
                    
client_print_color(idprint_team_default"^4[WM]^1 Daño por ^4ARMAS^1: ^4DESACTIVADO");
                }
                case 
false:
                {
                    
g_AllowWpnDamage true;
                    
client_print_color(idprint_team_default"^4[WM]^1 Daño por ^4ARMAS^1: ^4ACTIVADO");
                }
            }
        }
        case 
2:
        {
            switch(
g_AllowFallDamage)
            {
                case 
true:
                {
                    
g_AllowFallDamage false;
                    
client_print_color(idprint_team_default"^4[WM]^1 Daño por ^4CAIDA^1: ^4DESACTIVADO");
                }
                case 
false:
                {
                    
g_AllowFallDamage true;
                    
client_print_color(idprint_team_default"^4[WM]^1 Daño por ^4CAIDA^1: ^4ACTIVADO");
                }
            }
        }
        case 
3:
        {
            switch(
g_IgnoreAllDamage)
            {
                case 
true:
                {
                    
g_IgnoreAllDamage false;
                    
client_print_color(idprint_team_default"^4[WM]^1 Ignorar ^4TODO TIPO DE DAÑO^1: ^4DESACTIVADO");
                }
                case 
false:
                {
                    
g_IgnoreAllDamage true;
                    
client_print_color(idprint_team_default"^4[WM]^1 Ignorar ^4TODO TIPO DE DAÑO^1: ^4ACTIVADO");
                }
            }
        }
    }
    
menu_destroy(iMenu);
    
ManageDamage(id);
    return 
PLUGIN_HANDLED;
}

public 
PistolMenu(id)
{
    static 
iMenuszText[256], bool:iBool;
    
iMenu menu_create("[Pistol] Toggler""PistolHandler");
    for(new 
isizeof szPistolWpni++)
    {
        
iBool szPistolWpn[i][WPN_BOOL];
        
formatex(szTextcharsmax(szText), "\y[\w%s\y] [\r%s\y]"szPistolWpn[i][WPN_NAME], iBool "ON" "OFF");
        
menu_additem(iMenuszText);
    }
    
menu_setprop(iMenuMPROP_EXITNAME"Salir");
    
menu_display(idiMenu);
    return 
PLUGIN_HANDLED;
}

public 
PistolHandler(idiMenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(iMenu);
        
MainMenu(id);
        return 
PLUGIN_HANDLED;
    }
    switch(
szPistolWpn[item][WPN_BOOL])
    {
        case 
true:
        {
            
szPistolWpn[item][WPN_BOOL] = false;
            
client_print_color(idprint_team_default"^4[WM]^1 Daño ^3%s^1: ^4DESACTIVADO"szPistolWpn[item][WPN_NAME]);
        }
        case 
false:
        {
            
szPistolWpn[item][WPN_BOOL] = true;
            
client_print_color(idprint_team_default"^4[WM]^1 Daño ^3%s^1: ^4ACTIVADO"szPistolWpn[item][WPN_NAME]);
        }
    }
    
menu_destroy(iMenu);
    
PistolMenu(id);
    return 
PLUGIN_HANDLED
}

public 
ShotgunMenu(id)
{
    static 
iMenuszText[256], bool:iBool;
    
iMenu menu_create("[Shotgun] Toggler""ShotgunHandler");
    for(new 
isizeof szShotgunWpni++)
    {
        
iBool szShotgunWpn[i][WPN_BOOL];
        
formatex(szTextcharsmax(szText), "\y[\w%s\y] [\r%s\y]"szShotgunWpn[i][WPN_NAME], iBool "ON" "OFF");
        
menu_additem(iMenuszText);
    }
    
menu_setprop(iMenuMPROP_EXITNAME"Salir");
    
menu_display(idiMenu);
    return 
PLUGIN_HANDLED;
}

public 
ShotgunHandler(idiMenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(iMenu);
        
MainMenu(id);
        return 
PLUGIN_HANDLED;
    }
    switch(
szShotgunWpn[item][WPN_BOOL])
    {
        case 
true:
        {
            
szShotgunWpn[item][WPN_BOOL] = false;
            
client_print_color(idprint_team_default"^4[WM]^1 Daño ^3%s^1: ^4DESACTIVADO"szShotgunWpn[item][WPN_NAME]);
        }
        case 
false:
        {
            
szShotgunWpn[item][WPN_BOOL] = true;
            
client_print_color(idprint_team_default"^4[WM]^1 Daño ^3%s^1: ^4ACTIVADO"szShotgunWpn[item][WPN_NAME]);
        }
    }
    
menu_destroy(iMenu);
    
ShotgunMenu(id);
    return 
PLUGIN_HANDLED
}

public 
SmgMenu(id)
{
    static 
iMenuszText[256], bool:iBool;
    
iMenu menu_create("[SMG] Toggler""SmgHandler");
    for(new 
isizeof szSmgWpni++)
    {
        
iBool szSmgWpn[i][WPN_BOOL];
        
formatex(szTextcharsmax(szText), "\y[\w%s\y] [\r%s\y]"szSmgWpn[i][WPN_NAME], iBool "ON" "OFF");
        
menu_additem(iMenuszText);
    }
    
menu_setprop(iMenuMPROP_EXITNAME"Salir");
    
menu_display(idiMenu);
    return 
PLUGIN_HANDLED;
}

public 
SmgHandler(idiMenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(iMenu);
        
MainMenu(id);
        return 
PLUGIN_HANDLED;
    }
    switch(
szSmgWpn[item][WPN_BOOL])
    {
        case 
true:
        {
            
szSmgWpn[item][WPN_BOOL] = false;
            
client_print_color(idprint_team_default"^4[WM]^1 Daño ^3%s^1: ^4DESACTIVADO"szSmgWpn[item][WPN_NAME]);
        }
        case 
false:
        {
            
szSmgWpn[item][WPN_BOOL] = true;
            
client_print_color(idprint_team_default"^4[WM]^1 Daño ^3%s^1: ^4ACTIVADO"szSmgWpn[item][WPN_NAME]);
        }
    }
    
menu_destroy(iMenu);
    
SmgMenu(id);
    return 
PLUGIN_HANDLED
}

public 
RiflesMenu(id)
{
    static 
iMenuszText[512], bool:iBool;
    
iMenu menu_create("[RIFLES] Toggler""RiflesHandler");
    for(new 
isizeof szRiflesWpni++)
    {
        
iBool szRiflesWpn[i][WPN_BOOL];
        
formatex(szTextcharsmax(szText), "\y[\w%s\y] [\r%s\y]"szRiflesWpn[i][WPN_NAME], iBool "ON" "OFF");
        
menu_additem(iMenuszText);
    }
    
menu_setprop(iMenuMPROP_BACKNAME"Atras")
    
menu_setprop(iMenuMPROP_NEXTNAME"Siguiente");
    
menu_setprop(iMenuMPROP_EXITNAME"Salir");
    
menu_display(idiMenu);
    return 
PLUGIN_HANDLED;
}

public 
RiflesHandler(idiMenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(iMenu);
        
MainMenu(id);
        return 
PLUGIN_HANDLED;
    }
    switch(
szRiflesWpn[item][WPN_BOOL])
    {
        case 
true:
        {
            
szRiflesWpn[item][WPN_BOOL] = false;
            
client_print_color(idprint_team_default"^4[WM]^1 Daño ^3%s^1: ^4DESACTIVADO"szRiflesWpn[item][WPN_NAME]);
        }
        case 
false:
        {
            
szRiflesWpn[item][WPN_BOOL] = true;
            
client_print_color(idprint_team_default"^4[WM]^1 Daño ^3%s^1: ^4ACTIVADO"szRiflesWpn[item][WPN_NAME]);
        }
    }
    
menu_destroy(iMenu);
    
RiflesMenu(id);
    return 
PLUGIN_HANDLED
}

public 
MachineMenu(id)
{
    static 
iMenuszText[256], bool:iBool;
    
iMenu menu_create("[MACHINEGUN] Toggler""MachineHandler");
    for(new 
isizeof szMachineWpni++)
    {
        
iBool szMachineWpn[i][WPN_BOOL];
        
formatex(szTextcharsmax(szText), "\y[\w%s\y] [\r%s\y]"szMachineWpn[i][WPN_NAME], iBool "ON" "OFF");
        
menu_additem(iMenuszText);
    }
    
menu_setprop(iMenuMPROP_EXITNAME"Salir");
    
menu_display(idiMenu);
    return 
PLUGIN_HANDLED;
}

public 
MachineHandler(idiMenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(iMenu);
        
MainMenu(id);
        return 
PLUGIN_HANDLED;
    }
    switch(
szMachineWpn[item][WPN_BOOL])
    {
        case 
true:
        {
            
szMachineWpn[item][WPN_BOOL] = false;
            
client_print_color(idprint_team_default"^4[WM]^1 Daño ^3%s^1: ^4DESACTIVADO"szMachineWpn[item][WPN_NAME]);
        }
        case 
false:
        {
            
szMachineWpn[item][WPN_BOOL] = true;
            
client_print_color(idprint_team_default"^4[WM]^1 Daño ^3%s^1: ^4ACTIVADO"szMachineWpn[item][WPN_NAME]);
        }
    }
    
menu_destroy(iMenu);
    
MachineMenu(id);
    return 
PLUGIN_HANDLED
}

public 
fw_TakeDamage(victiminflictorattackerFloat:damagedamagebits)
{
    if(!
is_user_alive(victim)) return HAM_IGNORED;
    //static szWeapon[3];
    
if(g_IgnoreAllDamage)
    {
        
SetHamParamFloat(4Float:0.0)
        return 
HAM_SUPERCEDE;
    }

    if(
damagebits == DMG_BULLET)
    {
        if(!
g_AllowWpnDamage)
        {
            
SetHamParamFloat(4Float:0.0);
            return 
HAM_SUPERCEDE;
        }
    }

    if(
damagebits == DMG_FALL)
    {
        if(!
g_AllowFallDamage)
        {
            
SetHamParamFloat(4Float:0.0);
            return 
HAM_SUPERCEDE;
        }
    }

    if(
attacker && get_user_weapon(attacker) & CSW_HEGRENADE)
    {
        if(!
g_AllowNadeDamage)
        {
            
SetHamParamFloat(4Float:0.0);
            return 
HAM_SUPERCEDE;
        }
    }
    
    
if(!attacker)
    {
        return 
HAM_IGNORED;
    }
    new 
iWpnID;
    static 
iBool;
    
iWpnID get_user_weapon(attacker);
    
iBool getWpnBool(iWpnID);
    if(!
iBool && szWpnType[iWpnID][WPN_TYPE] != 0)
    {
        
SetHamParamFloat(4Float:0.0);
        return 
HAM_SUPERCEDE;
    }
    return 
HAM_IGNORED;
}


public 
getWpnBool(iWpnID)
{
    static 
iWpnTypebool:iBooliWpnNum;
    
iWpnType szWpnType[iWpnID][WPN_TYPE];
    
iWpnNum szWpnType[iWpnID][WPN_NUM];
    switch(
iWpnType)
    {
        case 
1:
        {
            
iBool szPistolWpn[iWpnNum][WPN_BOOL];
            return 
iBool;
        }
        case 
2:
        {
            
iBool szShotgunWpn[iWpnNum][WPN_BOOL];
            return 
iBool;
        }
        case 
3:
        {
            
iBool szSmgWpn[iWpnNum][WPN_BOOL];
            return 
iBool;
        }
        case 
4:
        {
            
iBool szRiflesWpn[iWpnNum][WPN_BOOL];
            return 
iBool;
        }
        case 
5:
        {
            
iBool szMachineWpn[iWpnNum][WPN_BOOL];
            return 
iBool;
        }
    }
    
iBool true;
    return 
iBool;


[Imagen: 0mkce1Q.png]

[Imagen: wZLaM8b.png]

[Imagen: AXx5YqS.png]