I fixed problem with nades by giving player 256 more hp on "player spawn" and removing it if his hp drop under 256. Player will not see any difference on his HUD but spectators gonna see wrong amount of hp.
PHP Code:
#include <amxmodx>
#include <fakemeta>
#include <fun>
#define MAX_PLAYERS 32
new g_max_players
new bool:g_restart_attempt[MAX_PLAYERS + 1]
public plugin_init(){
register_plugin( "NoWeaponDmg", "1.0", "Sylwester")
register_forward(FM_TraceLine, "traceline")
register_forward(FM_TraceHull, "tracehull", 1)
register_event("Damage", "damage_event", "b", "2!0")
g_max_players = get_maxplayers()
register_event("ResetHUD", "event_hud_reset", "be")
register_clcmd("fullupdate", "clcmd_fullupdate")
register_event("TextMsg", "event_restart_attempt", "a", "2=#Game_will_restart_in")
}
public traceline(Float:v1[3], Float:v2[3], noMonsters, pentToSkip){
new iAttacker = pentToSkip
new iVictim = get_tr(TR_pHit)
if ( iVictim >= 1 && iVictim <= g_max_players && iAttacker >= 1 && iAttacker <= g_max_players){
set_tr(TR_flFraction, 1.0)
return FMRES_SUPERCEDE
}
return FMRES_IGNORED
}
public tracehull(Float:v1[3], Float:v2[3], noMonsters, hullNumber, pentToSkip){
new iAttacker = pentToSkip
new iVictim = get_tr(TR_pHit)
if ( iVictim >= 1 && iVictim <= g_max_players && iAttacker >= 1 && iAttacker <= g_max_players){
set_tr(TR_flFraction, 1.0)
return FMRES_SUPERCEDE
}
return FMRES_IGNORED
}
public damage_event(id){
if(id < 1 || id > g_max_players)
return PLUGIN_CONTINUE
new weapon
new bodypart
new attacker = get_user_attacker(id, weapon, bodypart)
if(attacker < 1 || attacker > g_max_players)
return PLUGIN_CONTINUE
new damage = read_data(2)
if(weapon==4) //grenade
set_user_health(id, get_user_health (attacker) + damage)
if(get_user_health(id)<=256)
set_user_health(id, get_user_health(id) - 256)
return PLUGIN_HANDLED
}
public clcmd_fullupdate() {
return PLUGIN_HANDLED_MAIN
}
public event_restart_attempt() {
new players[32], num
get_players(players, num, "a")
for (new i; i < num; ++i)
g_restart_attempt[players[i]] = true
}
public event_hud_reset(id) {
if (g_restart_attempt[id]) {
g_restart_attempt[id] = false
return
}
event_player_spawn(id)
}
public event_player_spawn(id) {
set_user_health(id, get_user_health(id) + 256)
}
__________________