PHP Code:
#pragma semicolon 1
#pragma newdecls required
#include <sdktools_engine>
#include <sdktools_entinput>
#include <sdktools_functions>
bool
bShow[MAXPLAYERS+1];
int
iTesla = -1,
iFade = -1;
public void OnPluginStart()
{
RegAdminCmd("sm_thunder", Cmd_Thunder, ADMFLAG_SLAY);
HookEvent("player_death", Event_Death);
HookEvent("round_freeze_end", Event_Start, EventHookMode_PostNoCopy);
}
public void OnMapStart()
{
iTesla = iFade = -1;
PrecacheGeneric("sprites/physbeam.vmt");
}
public void OnClientDisconnect(int client)
{
bShow[client] = false;
}
public Action Cmd_Thunder(int client, int args)
{
bShow[client] ^= true;
PrintToChat(client, "Thunder shot is %abled", bShow[client] ? "en" : "dis");
return Plugin_Handled;
}
public void Event_Start(Event event, const char[] name, bool dontBroadcast)
{
int entity;
if((iTesla == -1 || EntRefToEntIndex(iTesla) == -1) && (entity = CreateEntityByName("point_tesla")) != -1)
{
DispatchKeyValue(entity, "beamcount_max", "8");
DispatchKeyValue(entity, "beamcount_min", "6");
DispatchKeyValue(entity, "interval_max", "2");
DispatchKeyValue(entity, "interval_min", "0.5");
DispatchKeyValue(entity, "lifetime_max", "0.3");
DispatchKeyValue(entity, "lifetime_min", "0.3");
DispatchKeyValue(entity, "m_Color", "255 255 255");
DispatchKeyValue(entity, "m_flRadius", "200");
DispatchKeyValue(entity, "m_SoundName", "DoSpark");
DispatchKeyValue(entity, "texture", "sprites/physbeam.vmt");
DispatchKeyValue(entity, "thick_max", "5");
DispatchKeyValue(entity, "thick_min", "4");
if(DispatchSpawn(entity)) iTesla = EntIndexToEntRef(entity);
}
if((iFade == -1 || EntRefToEntIndex(iFade) == -1) && (entity = CreateEntityByName("env_fade")) != -1)
{
DispatchKeyValue(entity, "duration", "0");
DispatchKeyValue(entity, "renderamt", "255");
DispatchKeyValue(entity, "rendercolor", "29 211 222");
DispatchKeyValue(entity, "ReverseFadeDuration", "0");
DispatchKeyValue(entity, "spawnflags", "0");
if(DispatchSpawn(entity)) iFade = EntIndexToEntRef(entity);
}
}
public void Event_Death(Event event, const char[] name, bool dontBroadcast)
{
if(!event.GetBool("headshot"))
return;
int attacker = GetClientOfUserId(event.GetInt("attacker"));
if(!attacker || !IsClientInGame(attacker) || !bShow[attacker])
return;
int victim = GetClientOfUserId(event.GetInt("userid"));
if(!victim || !IsClientInGame(victim))
return;
AcceptEntityInput(iFade, "Fade", attacker);
static float pos[3];
GetClientEyePosition(victim, pos);
TeleportEntity(iTesla, pos, NULL_VECTOR, NULL_VECTOR);
AcceptEntityInput(iTesla, "DoSpark");
}