Les traigo este pequeño plugin como aporte, es algo sencillo pero creo que a más de alguno le ha de servir.
Contiene:
AMXMODX-ES Link: DAMAGE MANAGER (amxmodx-es.com)
-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.
AMXMODX-ES Link: DAMAGE 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", 0, 0},
{"P228", 1, 2},
{"NULL", 0, 0},
{"SCOUT", 4, 0},
{"HEGRENADE", 0, 0},
{"XM1014", 2, 0},
{"C4", 0, 0},
{"MAC10", 3, 0},
{"AUG [CT]", 4, 8},
{"SMOKEGRENADE", 0},
{"DUAL BERETTAS", 1, 5},
{"FIVE SEVEN", 1, 3},
{"UMP45", 3, 4},
{"GS550 [CT]", 4, 9},
{"GALIL [T]", 4, 2},
{"FAMAS [CT]", 4, 6},
{"USP", 1, 1},
{"GLOCK18", 1, 0},
{"AWP", 4, 1},
{"MP5", 3, 1},
{"M249", 5, 0},
{"M3", 2, 1},
{"M4A1 [CT]", 4, 7},
{"TPM", 3, 3},
{"G3SG1 [T]", 4, 5},
{"FLASHBANG", 0, 0},
{"DEAGLE", 1, 4},
{"KRIEG552 [T]", 4, 4},
{"AK47 [T]", 4, 3},
{"KNIFE", 0, 0},
{"P90", 3, 2}
}
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(iMenu, 0);
menu_additem(iMenu, "[\yPistolas\w]");
menu_additem(iMenu, "[\yEscopetas\w]");
menu_additem(iMenu, "[\ySMG\w]");
menu_additem(iMenu, "[\yRifles\w]");
menu_addblank(iMenu, 0);
menu_additem(iMenu, "[\yMachine Guns\w]");
menu_addblank(iMenu, 1);
menu_setprop(iMenu, MPROP_EXITNAME, "Salir");
menu_display(id, iMenu);
return PLUGIN_HANDLED;
}
public MainHandler(id, iMenu, item)
{
switch(item)
{
case 0: ManageDamage(id);
case 1: PistolMenu(id);
case 2: ShotgunMenu(id);
case 3: SmgMenu(id);
case 4: RiflesMenu(id);
case 5: MachineMenu(id);
}
menu_destroy(iMenu);
return PLUGIN_HANDLED
}
public ManageDamage(id)
{
static iMenu, szText[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(iMenu, szText[0]);
menu_additem(iMenu, szText[1]);
menu_additem(iMenu, szText[2]);
menu_addblank(iMenu, 0);
menu_addtext(iMenu, "Esta opción desactiva todo tipo de daño natural", 0);
menu_additem(iMenu, szText[3]);
menu_addblank(iMenu, 1);
menu_addblank(iMenu, 1);
menu_addblank(iMenu, 1);
menu_setprop(iMenu, MPROP_EXITNAME, "Salir")
menu_display(id, iMenu);
return PLUGIN_HANDLED;
}
public ManageHandler(id, iMenu, item)
{
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(id, print_team_default, "^4[WM]^1 Daño por ^4GRANADA^1: ^4DESACTIVADO");
}
case false:
{
g_AllowNadeDamage = true;
client_print_color(id, print_team_default, "^4[WM]^1 Daño por ^4GRANADA^1: ^4ACTIVADO");
}
}
}
case 1:
{
switch(g_AllowWpnDamage)
{
case true:
{
g_AllowWpnDamage = false;
client_print_color(id, print_team_default, "^4[WM]^1 Daño por ^4ARMAS^1: ^4DESACTIVADO");
}
case false:
{
g_AllowWpnDamage = true;
client_print_color(id, print_team_default, "^4[WM]^1 Daño por ^4ARMAS^1: ^4ACTIVADO");
}
}
}
case 2:
{
switch(g_AllowFallDamage)
{
case true:
{
g_AllowFallDamage = false;
client_print_color(id, print_team_default, "^4[WM]^1 Daño por ^4CAIDA^1: ^4DESACTIVADO");
}
case false:
{
g_AllowFallDamage = true;
client_print_color(id, print_team_default, "^4[WM]^1 Daño por ^4CAIDA^1: ^4ACTIVADO");
}
}
}
case 3:
{
switch(g_IgnoreAllDamage)
{
case true:
{
g_IgnoreAllDamage = false;
client_print_color(id, print_team_default, "^4[WM]^1 Ignorar ^4TODO TIPO DE DAÑO^1: ^4DESACTIVADO");
}
case false:
{
g_IgnoreAllDamage = true;
client_print_color(id, print_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 iMenu, szText[256], bool:iBool;
iMenu = menu_create("[Pistol] Toggler", "PistolHandler");
for(new i; i < sizeof szPistolWpn; i++)
{
iBool = szPistolWpn[i][WPN_BOOL];
formatex(szText, charsmax(szText), "\y[\w%s\y] [\r%s\y]", szPistolWpn[i][WPN_NAME], iBool ? "ON" : "OFF");
menu_additem(iMenu, szText);
}
menu_setprop(iMenu, MPROP_EXITNAME, "Salir");
menu_display(id, iMenu);
return PLUGIN_HANDLED;
}
public PistolHandler(id, iMenu, item)
{
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(id, print_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(id, print_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 iMenu, szText[256], bool:iBool;
iMenu = menu_create("[Shotgun] Toggler", "ShotgunHandler");
for(new i; i < sizeof szShotgunWpn; i++)
{
iBool = szShotgunWpn[i][WPN_BOOL];
formatex(szText, charsmax(szText), "\y[\w%s\y] [\r%s\y]", szShotgunWpn[i][WPN_NAME], iBool ? "ON" : "OFF");
menu_additem(iMenu, szText);
}
menu_setprop(iMenu, MPROP_EXITNAME, "Salir");
menu_display(id, iMenu);
return PLUGIN_HANDLED;
}
public ShotgunHandler(id, iMenu, item)
{
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(id, print_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(id, print_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 iMenu, szText[256], bool:iBool;
iMenu = menu_create("[SMG] Toggler", "SmgHandler");
for(new i; i < sizeof szSmgWpn; i++)
{
iBool = szSmgWpn[i][WPN_BOOL];
formatex(szText, charsmax(szText), "\y[\w%s\y] [\r%s\y]", szSmgWpn[i][WPN_NAME], iBool ? "ON" : "OFF");
menu_additem(iMenu, szText);
}
menu_setprop(iMenu, MPROP_EXITNAME, "Salir");
menu_display(id, iMenu);
return PLUGIN_HANDLED;
}
public SmgHandler(id, iMenu, item)
{
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(id, print_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(id, print_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 iMenu, szText[512], bool:iBool;
iMenu = menu_create("[RIFLES] Toggler", "RiflesHandler");
for(new i; i < sizeof szRiflesWpn; i++)
{
iBool = szRiflesWpn[i][WPN_BOOL];
formatex(szText, charsmax(szText), "\y[\w%s\y] [\r%s\y]", szRiflesWpn[i][WPN_NAME], iBool ? "ON" : "OFF");
menu_additem(iMenu, szText);
}
menu_setprop(iMenu, MPROP_BACKNAME, "Atras")
menu_setprop(iMenu, MPROP_NEXTNAME, "Siguiente");
menu_setprop(iMenu, MPROP_EXITNAME, "Salir");
menu_display(id, iMenu);
return PLUGIN_HANDLED;
}
public RiflesHandler(id, iMenu, item)
{
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(id, print_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(id, print_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 iMenu, szText[256], bool:iBool;
iMenu = menu_create("[MACHINEGUN] Toggler", "MachineHandler");
for(new i; i < sizeof szMachineWpn; i++)
{
iBool = szMachineWpn[i][WPN_BOOL];
formatex(szText, charsmax(szText), "\y[\w%s\y] [\r%s\y]", szMachineWpn[i][WPN_NAME], iBool ? "ON" : "OFF");
menu_additem(iMenu, szText);
}
menu_setprop(iMenu, MPROP_EXITNAME, "Salir");
menu_display(id, iMenu);
return PLUGIN_HANDLED;
}
public MachineHandler(id, iMenu, item)
{
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(id, print_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(id, print_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(victim, inflictor, attacker, Float:damage, damagebits)
{
if(!is_user_alive(victim)) return HAM_IGNORED;
//static szWeapon[3];
if(g_IgnoreAllDamage)
{
SetHamParamFloat(4, Float:0.0)
return HAM_SUPERCEDE;
}
if(damagebits == DMG_BULLET)
{
if(!g_AllowWpnDamage)
{
SetHamParamFloat(4, Float:0.0);
return HAM_SUPERCEDE;
}
}
if(damagebits == DMG_FALL)
{
if(!g_AllowFallDamage)
{
SetHamParamFloat(4, Float:0.0);
return HAM_SUPERCEDE;
}
}
if(attacker && get_user_weapon(attacker) & CSW_HEGRENADE)
{
if(!g_AllowNadeDamage)
{
SetHamParamFloat(4, Float: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(4, Float:0.0);
return HAM_SUPERCEDE;
}
return HAM_IGNORED;
}
public getWpnBool(iWpnID)
{
static iWpnType, bool:iBool, iWpnNum;
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;
}