Como va, les vengo a aportar este menu de bloqueo de fuego, al final no le di el uso que yo queria asi que se los dejo
no se en que mod se pueda aplicar, si es que puede ser para alguno, y si no es asi, es un buen gag para alguien molesto jaja tal vez le puedan dar algun uso
el 99% de los creditos a chamo que me ayudo a tenerlo, gracias
no se en que mod se pueda aplicar, si es que puede ser para alguno, y si no es asi, es un buen gag para alguien molesto jaja tal vez le puedan dar algun uso
el 99% de los creditos a chamo que me ayudo a tenerlo, gracias
Código PHP:
#include amxmodx
#include amxmisc
#include fakemeta
#include hamsandwich
#define PLUGIN "Bloquear fuego de jugador"
#define VERSION "1.0"
#define AUTHORFUEGO "Chamo-."
#define ELGILQUEAGREGOCOSAS "Aleeex"
new g_maxplayers
new bool:PBO_BlockFireAttack[33]
const CI_IgnoreWeapons = ((1 << 2) | (1 << CSW_KNIFE) | (1 << CSW_HEGRENADE) | (1 << CSW_SMOKEGRENADE) | (1 << CSW_FLASHBANG))
const OFFSET_CBASEPLAYERWEAPON = 4
const OFFSET_CBASEMONSTER = 5
const OFFSET_WEAPON_OWNER = 41
const OFFSET_WEAPON_NEXTPRIMARYATTACK = 46
const OFFSET_MONSTER_NEXTATTACK = 83
const Float:F_NextAttackTime = 120.0 // 2 minutos de bloqueo se expresa en segundos
public plugin_init()
{
register_clcmd("say /bloqueo", "restringir")
register_clcmd("say /bloquear","restringir")
register_clcmd("bloqueo", "restringir")
g_maxplayers = get_maxplayers()
new SZ_WeaponName[25];
for (new I = CSW_P228; I <= CSW_P90; I++)
{
if ((1 << I) & CI_IgnoreWeapons)
continue;
get_weaponname(I, SZ_WeaponName, charsmax(SZ_WeaponName))
RegisterHam(Ham_Item_Deploy, SZ_WeaponName, "HAM_Weapons_Deploy_Post", true)
}
}
public HAM_Weapons_Deploy_Post(const I_Weapon)
{
new I_Owner = get_pdata_cbase(I_Weapon, OFFSET_WEAPON_OWNER, OFFSET_CBASEPLAYERWEAPON);
if (!PBO_BlockFireAttack[I_Owner])
return;
set_pdata_float(I_Owner, OFFSET_MONSTER_NEXTATTACK, F_NextAttackTime, OFFSET_CBASEMONSTER)
}
public client_disconnect(id)
PBO_BlockFireAttack[id] = false
public restringir(id)
{
if (get_user_flags(id) & ADMIN_IMMUNITY)
menubloqueo(id)
else
chatcolor(id, "!gESTA FUNCION NO ES PARA VOS, NO TE HAGAS EL !teamDOLOBU")
}
public menubloqueo(id)
{
new menu;
menu = menu_create("Jugadores a bloquear", "restringir2")
static name[32], IDS[3];
for (new i = 1; i <= g_maxplayers; i++)
{
if (!is_user_connected(i))
continue;
get_user_name(i,name, charsmax(name));
formatex(IDS, charsmax(IDS), "%d", i)
menu_additem(menu, name, IDS)
}
menu_display(id, menu, 0)
}
public restringir2(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu)
return;
}
new name[32]; get_user_name(id, name, 31);
new I_Player, SZ_IDs[3];
menu_item_getinfo(menu, item, I_Player, SZ_IDs, charsmax(SZ_IDs), _, _, I_Player)
I_Player = str_to_num(SZ_IDs)
new name_admin[32], name_bloqueado[32];
get_user_name(id, name_admin, 31);
get_user_name(I_Player, name_bloqueado, 31);
PBO_BlockFireAttack[I_Player] = !PBO_BlockFireAttack[I_Player]
chatcolor(0, "!team[SERVIDOR] !gEL ADMIN %s %sBLOQUEO A: %s", name_admin, !PBO_BlockFireAttack[I_Player] ? "DES" : "", name_bloqueado)
chatcolor(id,"!team[AMXX] Cambiaste el estado de ataque del usuario !g%s a: !g%sBLOQUEADO", name_bloqueado, !PBO_BlockFireAttack[I_Player] ? "DES" : "")
engclient_cmd(I_Player, "weapon_knife")
}
stock chatcolor(id, const input[], any:...)
{
static szMsg[191], msgSayText;
if (!msgSayText)
msgSayText = get_user_msgid("SayText");
vformat(szMsg, 190, input, 3);
replace_all(szMsg, 190, "!g", "^4");
replace_all(szMsg, 190, "!y", "^1");
replace_all(szMsg, 190, "!team", "^3");
message_begin(id ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, msgSayText, .player = id);
write_byte(id ? id : 33);
write_string(szMsg);
message_end();
}