83 lines
2.3 KiB
SourcePawn
83 lines
2.3 KiB
SourcePawn
/* Plugin Template generated by Pawn Studio */
|
|
|
|
#include <sourcemod>
|
|
#include <sdktools_functions>
|
|
|
|
new bool:enabled, health[MAXPLAYERS+1];
|
|
|
|
public Plugin:myinfo =
|
|
{
|
|
name = "TF2 Halloween teamwork forcer",
|
|
author = "Chefe",
|
|
description = "<- Description ->",
|
|
version = "1.0",
|
|
url = "<- URL ->"
|
|
}
|
|
|
|
public OnPluginStart()
|
|
{
|
|
enabled = false;
|
|
|
|
HookEvent("player_hurt", Event_PlayerHurt);
|
|
HookEvent("player_spawn", Event_PlayerSpawn);
|
|
HookEvent("eyeball_boss_killed", Event_BossLeft);
|
|
HookEvent("eyeball_boss_escaped", Event_BossLeft);
|
|
HookEvent("pumpkin_lord_killed", Event_BossLeft);
|
|
HookEvent("merasmus_killed", Event_BossLeft);
|
|
HookEvent("merasmus_escaped", Event_BossLeft);
|
|
HookEvent("merasmus_summoned", Event_BossSpawn);
|
|
HookEvent("eyeball_boss_summoned", Event_BossSpawn);
|
|
HookEvent("pumpkin_lord_summoned", Event_BossSpawn);
|
|
}
|
|
|
|
public Event_BossSpawn(Handle:event, const String:name[], bool:dontBroadcast)
|
|
{
|
|
enabled = true;
|
|
|
|
PrintToChatAll("\x04Boss fight! All PvP damage gets reflected!");
|
|
}
|
|
|
|
public Event_BossLeft(Handle:event, const String:name[], bool:dontBroadcast)
|
|
{
|
|
enabled = false;
|
|
|
|
PrintToChatAll("\x04Boss fight ended! Normal PvP damage again");
|
|
}
|
|
|
|
public Event_PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
|
|
{
|
|
new userid = GetEventInt(event, "userid");
|
|
new client = GetClientOfUserId(userid);
|
|
|
|
health[client] = GetClientHealth(client);
|
|
}
|
|
|
|
public Event_PlayerHurt(Handle:event, const String:name[], bool:dontBroadcast)
|
|
{
|
|
if (enabled)
|
|
{
|
|
new client_userid = GetEventInt(event, "userid");
|
|
new client = GetClientOfUserId(client_userid);
|
|
new attacker_userid = GetEventInt(event, "attacker");
|
|
new attacker = GetClientOfUserId(attacker_userid);
|
|
new damage = GetEventInt(event, "damageamount");
|
|
new String:authstring[200];
|
|
GetClientAuthString(attacker, authstring, sizeof(authstring));
|
|
|
|
if (strcmp(authstring, "BOT", false) == 0 || attacker == 0 || client == attacker)
|
|
{
|
|
return Plugin_Handled;
|
|
}
|
|
|
|
if (IsClientInGame(client) && IsPlayerAlive(client))
|
|
{
|
|
SetEntData(client, FindDataMapOffs(client, "m_iMaxHealth"), health[client], 4, true);
|
|
SetEntData(client, FindDataMapOffs(client, "m_iHealth"), health[client], 4, true);
|
|
}
|
|
|
|
SlapPlayer(attacker, damage);
|
|
|
|
return Plugin_Handled;
|
|
}
|
|
return Plugin_Continue;
|
|
} |