#define PLUGIN "zp_trigger_hurt_block"
#define VERSION "1.0"
#define AUTHOR "MSS"
const tlimit = 32
new trig_id[tlimit] // hurter ids
new trig_targets[tlimit][32] // hurter targets
new trig_state[tlimit] // hurter state (0 = off, 1 = on)
new numoftrigs = 0
new Float:turnOffDelay = 3.0 // Her sinyal geldiginde kac saniyeligine acik kalacak?
new Float:forbiddenDelay = 20.0 // Round basinda ilk kac saniye trigger_hurt ile olmek imkansiz olacak?
new Float:lastRoundTime = 0.0 // DOKUNMA
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
new temptext[64]
new c = 0
new entcount = entity_count()
for (new id = 33; id < entcount; id++)
{
if (!is_valid_ent(id))
continue;
entity_get_string(id, EV_SZ_classname, temptext, 64)
//server_print(temptext)
if (equali(temptext, "trigger_hurt"))
{
if (entity_get_int(id, EV_INT_spawnflags) & 2)
{
//server_print("found")
trig_id[c] = id
entity_get_string(id, EV_SZ_targetname, trig_targets[c], 32)
//server_print("target name = %s", trig_targets[c])
//set_task(0.5, "spawnFlag", _, _, _, "b")
c++
if (c >= tlimit)
break;
}
}
}
numoftrigs = c
register_logevent( "EventRoundEnd", 2, "1=Round_End" )
//server_print("found %d hurters", c)
}
public TurnOffState(data[], id)
{
trig_state[data[0]] = 0
}
public FireEvent()
{
new arg0[64]
new comptxt[64]
new param[1]
for (new id = 0; id < 64; id++)
arg0[id] = getarg(1, id)
for (new id = 0; id < numoftrigs; id++)
{
format(comptxt, charsmax(comptxt), "Firing: (%s)", trig_targets[id])
if (equal(arg0, comptxt, strlen(comptxt)))
{
//client_print(0, print_chat, "event: %s", arg0)
param[0] = id
trig_state[id] = 1
set_task(turnOffDelay, "TurnOffState", _, param, 1)
}
}
return FMRES_IGNORED
}
public EventNewRound()
{
for (new id = 0; id < numoftrigs; id++)
trig_state[id] = 0
lastRoundTime = get_gametime()
//set_task(OlusumGecikmesi, "spawnTriggers")
}
public EventRoundEnd()
{
/*new param[1]
for (new id = 0; id < numoftrigs; id++)
{
param[0] = id
set_task(turnOffDelay, "TurnOffState", _, param, 1)
}*/
//client_print(0, print_chat, "ROUND END")
}
public player_damage(this, idinflictor, idattacker, Float:damage, damagebits) {
for (new id = 0; id < numoftrigs; id++)
{
if(idattacker == trig_id[id] && (!trig_state[id] || get_gametime() - lastRoundTime < forbiddenDelay))
return HAM_SUPERCEDE
}
return HAM_IGNORED
}