ftt: Add troll 'meow'

This commit is contained in:
Jackzie 2021-05-21 11:02:41 -05:00
parent 23c5672984
commit ccf2340d3c
No known key found for this signature in database
GPG key ID: 1E834FE36520537A
3 changed files with 26 additions and 12 deletions

View file

@ -243,7 +243,7 @@ public Action Command_PlaySound(int client, int args) {
PrecacheSound(arg2);
for (int i = 0; i < target_count; i++) {
target = target_list[i];
if(IsClientConnected(target) && IsClientInGame(target)) {
if(IsClientConnected(target) && IsClientInGame(target) && !IsFakeClient(target)) {
if(StrEqual(arg3, "direct"))
ClientCommand(target, "playgamesound %s", arg2);
else
@ -283,10 +283,12 @@ public Action Command_StopSound(int client, int args) {
int target;
for (int i = 0; i < target_count; i++) {
target = target_list[i];
if(args < 2)
StopSound(target, 0, lastSound[target]);
else
StopSound(target, 0, arg2);
if(IsClientConnected(target) && IsClientInGame(target) && !IsFakeClient(target)) {
if(args < 2)
StopSound(target, 0, lastSound[target]);
else
StopSound(target, 0, arg2);
}
}
}
return Plugin_Handled;
@ -451,7 +453,6 @@ public void OnClientDisconnect(int client) {
}
}
public void OnMapStart() {
AddFileToDownloadsTable("sound/custom/mariokartmusic.mp3");
PrecacheSound("sound/custom/mariokartmusic.mp3");
HookEntityOutput("info_changelevel", "OnStartTouch", EntityOutput_OnStartTouchSaferoom);

View file

@ -1,6 +1,6 @@
#define AUTOPUNISH_FLOW_MIN_DISTANCE 5000.0
#define AUTOPUNISH_MODE_COUNT 3
#define TROLL_MODE_COUNT 23
#define TROLL_MODE_COUNT 24
//
enum trollMode {
Troll_Reset = 0, //0
@ -25,8 +25,10 @@ enum trollMode {
Troll_DamageBoost, //19
Troll_TempHealthQuickDrain, //20
Troll_VomitPlayer, //21
Troll_VocalizeGag
Troll_VocalizeGag,
Troll_Meow
}
//TODO: Troll_Cat - play custom sounds
enum TrollModifier {
TrollMod_None = 0,
TrollMod_InstantFire = 1,
@ -55,7 +57,8 @@ char TROLL_MODES_NAMES[TROLL_MODE_COUNT][32] = {
"Damage Boost",
"Temp Quick Drain",
"Vomit Player",
"Vocalize Gag"
"Vocalize Gag",
"Meow"
};
char TROLL_MODES_DESCRIPTIONS[TROLL_MODE_COUNT][128] = {
"Resets the user, removes all troll effects", //0
@ -80,8 +83,10 @@ char TROLL_MODES_DESCRIPTIONS[TROLL_MODE_COUNT][128] = {
"Makes a player take more damage than normal",
"Makes a player's temporarily health drain very quickly",
"Shortcut to sm_vomitplayer. vomits the player.",
"Prevents player from sending any vocalizations (even automatic)"
"Prevents player from sending any vocalizations (even automatic)",
"Makes the player meow"
};
enum L4D2Infected
{
L4D2Infected_None = 0,
@ -134,6 +139,7 @@ void ApplyModeToClient(int client, int victim, trollMode mode, TrollModifier mod
case Troll_NoShove: {}
case Troll_SlowDrain: {}
case Troll_TempHealthQuickDrain: {}
case Troll_Meow: {}
case Troll_VomitPlayer: {
L4D_CTerrorPlayer_OnVomitedUpon(victim, victim);
}

View file

@ -67,6 +67,7 @@ public void OnPluginStart() {
HookEvent("player_disconnect", Event_PlayerDisconnect);
HookEvent("player_death", Event_PlayerDeath);
HookEvent("triggered_car_alarm", Event_CarAlarm);
AddNormalSoundHook(view_as<NormalSHook>(SoundHook));
AutoExecConfig(true, "l4d2_feedthetrolls");
@ -88,6 +89,9 @@ public void OnMapEnd() {
UnhookEntityOutput("func_button", "OnPressed", Event_ButtonPress);
}
public void OnMapStart() {
AddFileToDownloadsTable("sound/custom/meow1.mp3");
PrecacheSound("sound/custom/meow1.mp3");
lastButtonUser = -1;
HookEntityOutput("func_button", "OnPressed", Event_ButtonPress);
CreateTimer(MAIN_TIMER_INTERVAL_S, Timer_Main, _, TIMER_REPEAT | TIMER_FLAG_NO_MAPCHANGE);
@ -137,7 +141,7 @@ public void Event_PanicEventCreate(Event event, const char[] name, bool dontBroa
}
public void Event_CarAlarm(Event event, const char[] name, bool dontBroadcast) {
int user = event.GetInt("userid");
int client = GetClientOfUserId(user;
int client = GetClientOfUserId(user);
if(client) {
PrintToChatAll("%N has alerted the horde!", client);
L4D2_RunScript("RushVictim(GetPlayerFromUserID(%d), %d)", user, 15000);
@ -154,7 +158,7 @@ public Action L4D2_OnChooseVictim(int attacker, int &curTarget) {
if(hMagnetChance.FloatValue < GetRandomFloat()) return Plugin_Continue;
L4D2Infected class = view_as<L4D2Infected>(GetEntProp(attacker, Prop_Send, "m_zombieClass"));
int existingTarget = GetClientOfUserId(g_iAttackerTarget[attacker]);
if(existingTarget > 0 && IsPlayerAlive(existingTarget) && (hMagnetTargetMode.IntValue & 1 != 1 || !IsPlayerIncapped(existingTarget)) {
if(existingTarget > 0 && IsPlayerAlive(existingTarget) && (hMagnetTargetMode.IntValue & 1 != 1 || !IsPlayerIncapped(existingTarget))) {
if(class == L4D2Infected_Tank && (hMagnetTargetMode.IntValue % 2 != 2 || !IsPlayerIncapped(existingTarget))) {
curTarget = existingTarget;
return Plugin_Changed;
@ -373,6 +377,9 @@ public Action SoundHook(int[] clients, int& numClients, char sample[PLATFORM_MAX
return Plugin_Changed;
} else if(HasTrollMode(entity, Troll_VocalizeGag)) {
return Plugin_Handled;
} else if(HasTrollMode(entity, Troll_Meow)) {
strcopy(sample, sizeof(sample), "custom/meow1.mp3");
return Plugin_Changed;
}
}