#include <sourcemod>
#include <sdktools>
#include <sdkhooks>
new g_MyTrail[MAXPLAYERS+1];
new g_MyAura[MAXPLAYERS+1];
new String:g_MyTrailName[MAXPLAYERS+1][64];
new String:g_MyAuraName[MAXPLAYERS+1][64];
new Handle:g_Menu;
public OnPluginStart()
{
g_Menu = CreateMenu(Select_Menu);
SetMenuTitle(g_Menu,"Auras And Trails:\n \n");
AddMenuItem(g_Menu, "sm_auras", "Auras");
AddMenuItem(g_Menu, "sm_trails", "Trails");
RegConsoleCmd("sm_trail", mainmenu);
RegConsoleCmd("sm_aura", mainmenu);
RegConsoleCmd("sm_trails", trailsmenu);
RegConsoleCmd("sm_auras", aurasmenu);
RegConsoleCmd("sm_calltrail", callmytrail);
RegConsoleCmd("sm_callaura", callmyaura);
HookEvent("round_end",round_end);
HookEvent("player_death",player_death);
HookEvent("player_spawn", player_spawn);
HookEvent("round_start", round_start);
HookEvent("player_disconnect", Event_Disc);
}
public Action:callmyaura(client, args)
{
new String:sText[64];
GetCmdArgString(sText, sizeof(sText));
StripQuotes(sText);
if(IsClientValid(client))
{
if(strlen(sText) > 0)
{
new flags = GetUserFlagBits(client);
if (!(flags & ADMFLAG_RESERVATION || flags & ADMFLAG_ROOT))
{
if(!(StrContains(sText, "Aura", false) == 0) && !(StrContains(sText, "Aura3", false) == 0) && !(StrContains(sText, "Aura4", false) == 0) && !(StrContains(sText, "Aura9", false) == 0) && !(StrContains(sText, "Aura10", false) == 0))
{
g_MyAuraName[client] = sText;
} else
{
PrintToChat(client,"\x02 No Rights for this Aura!");
}
} else
{
g_MyAuraName[client] = sText;
}
GiveAura(client);
}
}
return Plugin_Handled;
}
public Action:callmytrail(client, args)
{
new String:sText[64];
GetCmdArgString(sText, sizeof(sText));
StripQuotes(sText);
if(IsClientValid(client))
{
if(strlen(sText) > 0)
{
new flags = GetUserFlagBits(client);
if (!(flags & ADMFLAG_RESERVATION || flags & ADMFLAG_ROOT))
{
if(!(StrContains(sText, "Trail", false) == 0) && !(StrContains(sText, "Trail3", false) == 0) && !(StrContains(sText, "Trail4", false) == 0) && !(StrContains(sText, "Trail5", false) == 0) && !(StrContains(sText, "Trail7", false) == 0))
{
g_MyTrailName[client] = sText;
} else
{
PrintToChat(client,"\x02 No Rights for this Trail!");
}
} else
{
g_MyTrailName[client] = sText;
}
GiveTrail(client);
}
}
return Plugin_Handled;
}
public OnMapStart()
{
AddFileToDownloadsTable("particles/aurasandtrailbyiex.pcf");
PrecacheGeneric("particles/aurasandtrailbyiex.pcf",true);
PrecacheModel("materials/ex/ballX.vmt");
PrecacheModel("materials/ex/ES.vmt");
PrecacheModel("materials/ex/ballX.vtf");
PrecacheModel("materials/ex/gl.vmt");
PrecacheModel("materials/ex/gl.vtf");
PrecacheModel("materials/ex/ES.vtf");
AddFileToDownloadsTable("materials/ex/gl.vmt");
AddFileToDownloadsTable("materials/ex/gl.vtf");
AddFileToDownloadsTable("materials/ex/ballX.vmt");
AddFileToDownloadsTable("materials/ex/ES.vmt");
AddFileToDownloadsTable("materials/ex/ballX.vtf");
AddFileToDownloadsTable("materials/ex/ES.vtf");
}
public Action:round_end(Handle:event, const String:name[], bool:dontBroadcast)
{
for(new i = 1;i <= MaxClients;i++)
{
g_MyTrail = 0;
}
}
public Action:player_spawn(Handle:event, const String:name[], bool:dontBroadcast)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
GiveTrail(client);
GiveAura(client);
}
public Action:round_start(Handle:event, const String:name[], bool:dontBroadcast)
{
CreateTimer(1.0,Timer_GiveNeon);
}
public Action:Timer_GiveNeon(Handle:timer)
{
for(new i = 1;i <= MaxClients;i++)
{
if(IsClientInGame(i) && IsPlayerAlive(i))
{
GiveTrail(i);
GiveAura(i);
}
}
}
public Action:Event_Disc(Handle:event, const String:name[], bool:dontBroadcast)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
g_MyTrail[client] = 0;
g_MyTrailName[client] = "";
g_MyAura[client] = 0;
g_MyAuraName[client] = "";
}
public Action:trailsmenu(client, args)
{
if (0 < client <= MaxClients)
{
new Handle:g_MenuTrail;
g_MenuTrail = CreateMenu(Select_MenuAura);
SetMenuTitle(g_MenuTrail,"Trails:\n \n");
AddMenuItem(g_MenuTrail, "DISABLETRAIL", "No Trail");
new flags = GetUserFlagBits(client);
if (flags & ADMFLAG_RESERVATION || flags & ADMFLAG_ROOT)
{
AddMenuItem(g_MenuTrail, "sm_calltrail Trail", "[VIP]Trail #1");
AddMenuItem(g_MenuTrail, "sm_calltrail Trail2", "[VIP]Trail #2");
AddMenuItem(g_MenuTrail, "sm_calltrail Trail3", "[VIP]Trail #3");
AddMenuItem(g_MenuTrail, "sm_calltrail Trail4", "[VIP]Trail #4");
AddMenuItem(g_MenuTrail, "sm_calltrail Trail5", "[VIP]Trail #5");
//AddMenuItem(g_MenuTrail, "sm_calltrail Trail6", "[VIP]Trail #6");
AddMenuItem(g_MenuTrail, "sm_calltrail Trail7", "[VIP]Trail #6");
AddMenuItem(g_MenuTrail, "sm_calltrail Trail8", "[VIP]Trail #7");
AddMenuItem(g_MenuTrail, "sm_calltrail Trail9", "[VIP]Trail #8");
AddMenuItem(g_MenuTrail, "sm_calltrail Trail10", "[VIP]Trail #9");
AddMenuItem(g_MenuTrail, "sm_calltrail Trail11", "[VIP]Trail #10");
} else
{
AddMenuItem(g_MenuTrail, "sm_calltrail Trail", "[VIP]Trail #1",ITEMDRAW_DISABLED); //
AddMenuItem(g_MenuTrail, "sm_calltrail Trail2", "[VIP]Trail #2");
AddMenuItem(g_MenuTrail, "sm_calltrail Trail3", "[VIP]Trail #3",ITEMDRAW_DISABLED); //
AddMenuItem(g_MenuTrail, "sm_calltrail Trail4", "[VIP]Trail #4",ITEMDRAW_DISABLED); //
AddMenuItem(g_MenuTrail, "sm_calltrail Trail5", "[VIP]Trail #5",ITEMDRAW_DISABLED); //
//AddMenuItem(g_MenuTrail, "sm_calltrail Trail6", "[VIP]Trail #6");
AddMenuItem(g_MenuTrail, "sm_calltrail Trail7", "[VIP]Trail #6",ITEMDRAW_DISABLED); //
AddMenuItem(g_MenuTrail, "sm_calltrail Trail8", "[VIP]Trail #7");
AddMenuItem(g_MenuTrail, "sm_calltrail Trail9", "[VIP]Trail #8");
AddMenuItem(g_MenuTrail, "sm_calltrail Trail10", "[VIP]Trail #9");
AddMenuItem(g_MenuTrail, "sm_calltrail Trail11", "[VIP]Trail #10");
}
DisplayMenu(g_MenuTrail, client, 0);
ClientCommand(client, "playgamesound sound/buttons/buttons17.wav");
}
return Plugin_Handled;
}
public Action:aurasmenu(client, args)
{
if (0 < client <= MaxClients)
{
new Handle:g_MenuAura;
g_MenuAura = CreateMenu(Select_MenuAura);
SetMenuTitle(g_MenuAura,"Auras:\n \n");
AddMenuItem(g_MenuAura, "REMOVEAURA", "No Aura");
new flags = GetUserFlagBits(client);
if (flags & ADMFLAG_RESERVATION || flags & ADMFLAG_ROOT)
{
AddMenuItem(g_MenuAura, "sm_callaura Aura1", "[VIP]Aura #1");
AddMenuItem(g_MenuAura, "sm_callaura Aura2", "[VIP]Aura #2");
AddMenuItem(g_MenuAura, "sm_callaura Aura3", "[VIP]Aura #3");
AddMenuItem(g_MenuAura, "sm_callaura Aura4", "[VIP]Aura #4");
AddMenuItem(g_MenuAura, "sm_callaura Aura5", "[VIP]Aura #5");
AddMenuItem(g_MenuAura, "sm_callaura Aura6", "[VIP]Aura #6");
AddMenuItem(g_MenuAura, "sm_callaura Aura7", "[VIP]Aura #7");
AddMenuItem(g_MenuAura, "sm_callaura Aura8", "[VIP]Aura #8");
AddMenuItem(g_MenuAura, "sm_callaura Aura9", "[VIP]Aura #9");
AddMenuItem(g_MenuAura, "sm_callaura Aura10", "[VIP]Aura #10");
} else
{
AddMenuItem(g_MenuAura, "sm_callaura Aura1", "[VIP]Aura #1",ITEMDRAW_DISABLED); //
AddMenuItem(g_MenuAura, "sm_callaura Aura2", "[VIP]Aura #2");
AddMenuItem(g_MenuAura, "sm_callaura Aura3", "[VIP]Aura #3",ITEMDRAW_DISABLED); //
AddMenuItem(g_MenuAura, "sm_callaura Aura4", "[VIP]Aura #4",ITEMDRAW_DISABLED); //
AddMenuItem(g_MenuAura, "sm_callaura Aura5", "[VIP]Aura #5");
AddMenuItem(g_MenuAura, "sm_callaura Aura6", "[VIP]Aura #6");
AddMenuItem(g_MenuAura, "sm_callaura Aura7", "[VIP]Aura #7");
AddMenuItem(g_MenuAura, "sm_callaura Aura8", "[VIP]Aura #8");
AddMenuItem(g_MenuAura, "sm_callaura Aura9", "[VIP]Aura #9",ITEMDRAW_DISABLED); //
AddMenuItem(g_MenuAura, "sm_callaura Aura10", "[VIP]Aura #10",ITEMDRAW_DISABLED); //
}
DisplayMenu(g_MenuAura, client, 0);
ClientCommand(client, "playgamesound sound/buttons/buttons17.wav");
}
return Plugin_Handled;
}
bool:IsClientValid( client )
{
return (client > 0 && client <= MaxClients && IsClientInGame(client));
}
RemoveAura(client)
{
if(g_MyAura[client] != 0)
{
if(IsClientInGame(client))
{
if(IsValidEdict(g_MyAura[client]))
{
AcceptEntityInput(g_MyAura[client], "Kill");
}
}
g_MyAura[client] = 0;
}
}
RemoveTrail(client)
{
if(g_MyTrail[client] != 0)
{
if(IsClientInGame(client))
{
if(IsValidEdict(g_MyTrail[client]))
{
AcceptEntityInput(g_MyTrail[client], "Kill");
}
}
g_MyTrail[client] = 0;
}
}
GiveAura(client)
{
if(IsClientInGame(client) && IsPlayerAlive(client))
{
if(g_MyAura[client] != 0)
{
RemoveAura(client);
}
if(IsPlayerAlive(client))
{
if(!(strcmp(g_MyAuraName[client],"",false) == 0))
{
new Float:clientOrigin[3];
GetClientAbsOrigin(client, clientOrigin);
g_MyAura[client] = CreateEntityByName("info_particle_system");
DispatchKeyValue(g_MyAura[client] , "start_active", "0");
DispatchKeyValue(g_MyAura[client] , "effect_name", g_MyAuraName[client]);
DispatchSpawn(g_MyAura[client] );
TeleportEntity(g_MyAura[client] , clientOrigin, NULL_VECTOR,NULL_VECTOR);
ActivateEntity(g_MyAura[client] );
SetVariantString("!activator");
AcceptEntityInput(g_MyAura[client], "SetParent", client, g_MyAura[client], 0);
CreateTimer(0.25,Timer_Run,g_MyAura[client]);
}
}
}
}
GiveTrail(client)
{
if(IsClientInGame(client) && IsPlayerAlive(client))
{
if(g_MyTrail[client] != 0)
{
RemoveTrail(client);
}
if(IsPlayerAlive(client))
{
if(!(strcmp(g_MyTrailName[client],"",false) == 0))
{
new Float:clientOrigin[3];
GetClientAbsOrigin(client, clientOrigin);
g_MyTrail[client] = CreateEntityByName("info_particle_system");
DispatchKeyValue(g_MyTrail[client] , "start_active", "0");
DispatchKeyValue(g_MyTrail[client] , "effect_name", g_MyTrailName[client]);
DispatchSpawn(g_MyTrail[client] );
TeleportEntity(g_MyTrail[client] , clientOrigin, NULL_VECTOR,NULL_VECTOR);
ActivateEntity(g_MyTrail[client] );
SetVariantString("!activator");
AcceptEntityInput(g_MyTrail[client], "SetParent", client, g_MyTrail[client], 0);
CreateTimer(0.25,Timer_Run,g_MyTrail[client]);
}
}
}
}
public Action:player_death(Handle:event, const String:name[], bool:dontBroadcast)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
RemoveTrail(client);
RemoveAura(client);
}
public Action:Timer_Run(Handle:timer,any:ent)
{
if(ent > 0 && IsValidEntity(ent))
{
AcceptEntityInput(ent,"Start");
}
}
public Action:mainmenu(client, args)
{
if (0 < client <= MaxClients)
{
DisplayMenu(g_Menu, client, 0);
ClientCommand(client, "playgamesound sound/buttons/buttons17.wav");
}
return Plugin_Handled;
}
public Select_MenuAura(Handle:menu, MenuAction:action, client, item)
{
if (action != MenuAction_Select)
return;
decl String:cmd[50];
if (!GetMenuItem(menu, item, cmd, 50))
return;
if(StrContains(cmd, "REMOVEAURA", false) == 0)
{
g_MyAuraName[client] = "";
RemoveAura(client);
} else
{
FakeClientCommand(client, cmd);
}
ClientCommand(client, "playgamesound sound/buttons/buttons17.wav");
return;
}
public Select_Menu(Handle:menu, MenuAction:action, client, item)
{
if (action != MenuAction_Select)
return;
decl String:cmd[50];
if (!GetMenuItem(menu, item, cmd, 50))
return;
if(StrContains(cmd, "DISABLETRAIL", false) == 0)
{
g_MyTrailName[client] = "";
RemoveTrail(client);
} else
{
FakeClientCommand(client, cmd);
}
ClientCommand(client, "playgamesound sound/buttons/buttons17.wav");
return;
}