Initial commit
This commit is contained in:
249
scripting/stopsounds.cs
Normal file
249
scripting/stopsounds.cs
Normal file
@@ -0,0 +1,249 @@
|
||||
#include <sourcemod>
|
||||
#include <sdktools>
|
||||
#include <freak_fortress_2>
|
||||
#include <tf2attributes>
|
||||
|
||||
#pragma tabsize 0
|
||||
|
||||
bool Locked1[MAXPLAYERS+1];
|
||||
bool Locked2[MAXPLAYERS+1];
|
||||
bool Locked3[MAXPLAYERS+1];
|
||||
bool CanWindDown[MAXPLAYERS+1];
|
||||
bool ChangeAngles[MAXPLAYERS+1];
|
||||
|
||||
bool stopsound=false;
|
||||
|
||||
//Stock sounds
|
||||
#define SOUND_GUNFIRE "combat_arms/new_fire_fix.wav"
|
||||
#define SOUND_GUNSPIN "mvm/giant_heavy/giant_heavy_gunspin.wav"
|
||||
#define SOUND_STOCKWINDUP "weapons/minigun_wind_up.wav"
|
||||
#define SOUND_WINDDOWN "combat_arms/rollingdown.wav"
|
||||
|
||||
//Custom sounds
|
||||
#define SOUND_GUNFIRE_1 "combat_arms/new_fire_fix.wav"
|
||||
#define SOUND_GUNSPIN_1 "mvm/giant_heavy/giant_heavy_gunspin.wav"
|
||||
#define SOUND_WINDUP "combat_arms/fix_rollingup_v4.wav"
|
||||
#define SOUND_WINDDOWN_1 "combat_arms/rollingdown.wav"
|
||||
|
||||
public OnPluginStart()
|
||||
{
|
||||
RegAdminCmd("sm_stopsounds", Command_StopSounds, ADMFLAG_CHEATS, "Stop a sound!");
|
||||
//HookUserMessage(GetUserMessageId("PlayerTauntSoundLoopStart"), HookTauntMessage, true);
|
||||
//AddNormalSoundHook(HookSound);
|
||||
}
|
||||
|
||||
public OnMapStart()
|
||||
{
|
||||
PrecacheSound(SOUND_GUNFIRE_1);
|
||||
PrecacheSound(SOUND_GUNSPIN_1);
|
||||
PrecacheSound(SOUND_STOCKWINDUP);
|
||||
PrecacheSound(SOUND_WINDDOWN_1);
|
||||
PrecacheSound(SOUND_WINDUP);
|
||||
PrecacheSound(SOUND_WINDDOWN);
|
||||
PrecacheSound(SOUND_GUNFIRE);
|
||||
PrecacheSound(SOUND_GUNSPIN);
|
||||
}
|
||||
|
||||
public Action:Command_StopSounds(client, args)
|
||||
{
|
||||
stopsound=!stopsound;
|
||||
ReplyToCommand(client, "Toggled!");
|
||||
int value=1;
|
||||
if(stopsound)
|
||||
{
|
||||
int index=1;
|
||||
while ((index = FindEntityByClassname(index, "tf_weapon_minigun")) != -1)
|
||||
{
|
||||
TF2Attrib_SetByName(index, "minigun no spin sounds", view_as<float>(value));
|
||||
}
|
||||
}
|
||||
return Plugin_Handled;
|
||||
}
|
||||
|
||||
/*
|
||||
public Action HookTauntMessage(UserMsg msg_id, BfRead msg, const int[] players, int playersNum, bool reliable, bool init)
|
||||
{
|
||||
int byte = msg.ReadByte(); //The client index sending the sound
|
||||
char string[PLATFORM_MAX_PATH]; //The sound
|
||||
msg.ReadString(string, PLATFORM_MAX_PATH);
|
||||
|
||||
if(stopsound)
|
||||
{
|
||||
PrintToServer("%i %s", byte, string);
|
||||
|
||||
return Plugin_Handled;
|
||||
}
|
||||
return Plugin_Continue;
|
||||
}
|
||||
*/
|
||||
|
||||
public Action TF2_CalcIsAttackCritical(int client, int weapon, char[] weaponname, bool& result)
|
||||
{
|
||||
if(!stopsound)
|
||||
{
|
||||
return Plugin_Continue;
|
||||
}
|
||||
if(GetPlayerWeaponSlot(client, 2) == weapon)
|
||||
return Plugin_Continue;
|
||||
|
||||
ChangeAngles[client]=true;
|
||||
return Plugin_Continue;
|
||||
}
|
||||
|
||||
public Action OnPlayerRunCmd(int iClient, int& iButtons, int& iImpulse, float[3] fVel, float[3] fAng, int& iWeapon)
|
||||
{
|
||||
if(!stopsound)
|
||||
{
|
||||
return Plugin_Continue;
|
||||
}
|
||||
if (IsValidClient(iClient))
|
||||
{
|
||||
int weapon = GetPlayerWeaponSlot(iClient, 0);
|
||||
char classname[64];
|
||||
GetEntityClassname(weapon, classname, sizeof(classname));
|
||||
if(IsValidEntity(weapon) && StrEqual(classname, "tf_weapon_minigun", false))
|
||||
{
|
||||
int iWeaponState = GetEntProp(weapon, Prop_Send, "m_iWeaponState");
|
||||
if (iWeaponState == 1 && !Locked1[iClient])
|
||||
{
|
||||
new Float:position[3];
|
||||
GetEntPropVector(iClient, Prop_Data, "m_vecOrigin", position);
|
||||
EmitSoundToAll(SOUND_WINDUP, iClient, _, _, _, _, _, iClient, position);
|
||||
PrintToChatAll("WeaponState = Windup");
|
||||
Locked1[iClient] = true;
|
||||
Locked2[iClient] = false;
|
||||
Locked3[iClient] = false;
|
||||
CanWindDown[iClient] = true;
|
||||
|
||||
StopSound(iClient, SNDCHAN_AUTO, SOUND_STOCKWINDUP),
|
||||
StopSound(iClient, SNDCHAN_AUTO, SOUND_GUNSPIN);
|
||||
StopSound(iClient, SNDCHAN_AUTO, SOUND_GUNFIRE);
|
||||
}
|
||||
else if (iWeaponState == 2 && !Locked2[iClient])
|
||||
{
|
||||
EmitSoundToAll(SOUND_GUNFIRE, iClient);
|
||||
PrintToChatAll("WeaponState = Firing");
|
||||
|
||||
Locked2[iClient] = true;
|
||||
Locked1[iClient] = true;
|
||||
Locked3[iClient] = false;
|
||||
CanWindDown[iClient] = true;
|
||||
|
||||
StopSound(iClient, SNDCHAN_AUTO, SOUND_GUNSPIN);
|
||||
StopSound(iClient, SNDCHAN_AUTO, SOUND_STOCKWINDUP);
|
||||
for(int i=0; i<7; i++)
|
||||
{
|
||||
for(int s=1; s<MaxClients; s++)
|
||||
{
|
||||
StopSound(iClient, s, "weapons\\minigun_shoot.wav");
|
||||
}
|
||||
if(GetEntPropEnt(iClient, Prop_Send, "m_hActiveWeapon")!=0)
|
||||
{
|
||||
StopSound(GetEntPropEnt(iClient, Prop_Send, "m_hActiveWeapon"), i, "weapons\\minigun_shoot.wav");
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (iWeaponState == 3 && !Locked3[iClient])
|
||||
{
|
||||
EmitSoundToAll(SOUND_GUNSPIN, iClient);
|
||||
PrintToChatAll("WeaponState = Spun Up");
|
||||
|
||||
Locked3[iClient] = true;
|
||||
Locked1[iClient] = true;
|
||||
Locked2[iClient] = false;
|
||||
CanWindDown[iClient] = true;
|
||||
|
||||
StopSound(iClient, SNDCHAN_AUTO, SOUND_GUNFIRE);
|
||||
StopSound(iClient, SNDCHAN_AUTO, SOUND_STOCKWINDUP);
|
||||
}
|
||||
else if (iWeaponState == 0)
|
||||
{
|
||||
if (CanWindDown[iClient])
|
||||
{
|
||||
PrintToChatAll("WeaponState = WindDown");
|
||||
EmitSoundToAll(SOUND_WINDDOWN, iClient);
|
||||
CanWindDown[iClient] = false;
|
||||
}
|
||||
|
||||
StopSound(iClient, SNDCHAN_AUTO, SOUND_GUNSPIN);
|
||||
StopSound(iClient, SNDCHAN_AUTO, SOUND_GUNFIRE);
|
||||
|
||||
Locked1[iClient] = false;
|
||||
Locked2[iClient] = false;
|
||||
Locked3[iClient] = false;
|
||||
}
|
||||
}
|
||||
if(ChangeAngles[iClient])
|
||||
{
|
||||
float fShake[3];
|
||||
int currtime=GetTime();
|
||||
if(currtime>>1&1)
|
||||
{
|
||||
fShake[0] = GetRandomFloat(0.0, -7.0);
|
||||
}
|
||||
else
|
||||
{
|
||||
fShake[0] = 0.0
|
||||
}
|
||||
fShake[2] = 0.0;
|
||||
//float fNewAngles[3];
|
||||
//GetClientEyeAngles(client, fNewAngles);
|
||||
fAng[0]+=fShake[0];
|
||||
fAng[1]+=fShake[1];
|
||||
//fNewAngles[2]+=fShake[2];
|
||||
SetEntPropVector(iClient, Prop_Send, "m_vecPunchAngle", fShake);
|
||||
TeleportEntity(iClient, NULL_VECTOR, fAng, NULL_VECTOR);
|
||||
ChangeAngles[iClient]=false;
|
||||
return Plugin_Changed;
|
||||
}
|
||||
if(ChangeAngles[iClient])
|
||||
{
|
||||
float fShake[3];
|
||||
// int currtime=GetTime();
|
||||
//if(currtime>>1&1)
|
||||
//{
|
||||
fShake[0] =-5.0
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// fShake[0] = 0.0
|
||||
//}
|
||||
fShake[2] = 0.0;
|
||||
//float fNewAngles[3];
|
||||
//GetClientEyeAngles(client, fNewAngles);
|
||||
fAng[0]+=fShake[0];
|
||||
fAng[1]+=fShake[1];
|
||||
//fNewAngles[2]+=fShake[2];
|
||||
SetEntPropVector(iClient, Prop_Send, "m_vecPunchAngle", fShake);
|
||||
TeleportEntity(iClient, NULL_VECTOR, fAng, NULL_VECTOR);
|
||||
ChangeAngles[iClient]=false;
|
||||
return Plugin_Changed;
|
||||
}
|
||||
}
|
||||
return Plugin_Continue;
|
||||
}
|
||||
|
||||
bool IsValidClient(client)
|
||||
{
|
||||
if (client <= 0) return false;
|
||||
if (client > MaxClients) return false;
|
||||
return IsClientInGame(client);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
#if SOURCEMOD_V_MAJOR==1 && SOURCEMOD_V_MINOR<=7
|
||||
public Action:HookSound(clients[64], &numClients, String:sound[PLATFORM_MAX_PATH], &client, &channel, &Float:volume, &level, &pitch, &flags)
|
||||
#else
|
||||
public Action:HookSound(clients[64], &numClients, String:sound[PLATFORM_MAX_PATH], &client, &channel, &Float:volume, &level, &pitch, &flags, String:soundEntry[PLATFORM_MAX_PATH], &seed)
|
||||
#endif
|
||||
{
|
||||
if(stopsound)
|
||||
{
|
||||
PrintToChatAll("Sound: %s", sound);
|
||||
EmitSound(clients, numClients, "vo/engineer_ThanksForTheHeal02.mp3", client, channel, level, flags, volume, pitch);
|
||||
return Plugin_Stop;
|
||||
}
|
||||
return Plugin_Continue;
|
||||
}
|
||||
*/
|
Reference in New Issue
Block a user