From 476e2ae68f34f5b55080a13c7c12cff2b6f35f12 Mon Sep 17 00:00:00 2001 From: Jackz Date: Sat, 19 Dec 2020 15:35:06 -0600 Subject: [PATCH] swarm: Minor fixes / activate on car alarms --- plugins/l4d2_swarm.smx | Bin 8601 -> 9028 bytes scripting/l4d2_swarm.sp | 169 +++++++++++++++++++--------------------- 2 files changed, 81 insertions(+), 88 deletions(-) diff --git a/plugins/l4d2_swarm.smx b/plugins/l4d2_swarm.smx index 71d3c1937007e78a4b49427e87bcecfcfc77e7f1..4403970c5aac55344c80a7a86d55c8e1ee7229ba 100644 GIT binary patch literal 9028 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 literal 8601 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 [range]"); RegAdminCmd("sm_rushtogglemenu", Cmd_SwarmToggleMenu, ADMFLAG_ROOT, "sm_swarmtogglemenu - Open swarm toggle menu"); RegAdminCmd("sm_rtmenu", Cmd_SwarmToggleMenu, ADMFLAG_ROOT, "sm_swarmtogglemenu - Open swarm toggle menu"); -} - -public Action Cmd_SwarmToggle(int client, int args) { - //SwarmTarget, SwarmRadius - if(args == 0) { - ReplyToCommand(client, "Usage: sm_rushtoggle [radius]"); - }else{ - char arg1[32], arg2[32]; - GetCmdArg(1, arg1, sizeof(arg1)); - GetCmdArg(2, arg2, sizeof(arg2)); - - if(StrEqual(arg1, "disable", true)) { - SwarmTarget = -1; - SwarmRadius = hSwarmDefaultRange.IntValue; - ReplyToCommand(client, "Deactivated swarm toggle."); - CloseHandle(timer); - } - - int range = StringToInt(arg2); - if(range <= 0) range = hSwarmDefaultRange.IntValue; - SwarmRadius = range; - - char target_name[MAX_TARGET_LENGTH]; - int target_list[1], target_count; - bool tn_is_ml; - - if ((target_count = ProcessTargetString( - arg1, - client, - target_list, - 1, - COMMAND_FILTER_ALIVE, /* Only allow alive players */ - target_name, - sizeof(target_name), - tn_is_ml)) <= 0) - { - /* This function replies to the admin with a failure message */ - ReplyToTargetError(client, target_count); - return Plugin_Handled; - } - if(target_list[0] == SwarmTarget) { - SwarmTarget = -1; - SwarmRadius = hSwarmDefaultRange.IntValue; - ReplyToCommand(client, "Deactivated swarm toggle."); - CloseHandle(timer); - timer = INVALID_HANDLE; - }else{ - SwarmTarget = target_list[0]; - SwarmUser(GetClientUserId(target_list[0]), range); - ReplyToCommand(client, "Now continously swarming victim %N. Radius: %d", target_list[0], range); - if(timer == INVALID_HANDLE) - timer = CreateTimer(1.0, Timer_Swarm, _, TIMER_REPEAT); - } - } - return Plugin_Handled; + HookEvent("triggered_car_alarm", Event_CarAlarm); } public Action Cmd_Swarm(int client, int args) { @@ -138,39 +84,72 @@ public Action Cmd_Swarm(int client, int args) { ReplyToTargetError(client, target_count); return Plugin_Handled; } - /*int entity = -1; - do { - entity = FindEntityByClassname(entity, "zombie"); - } while(entity != -1) - - for (int target = 1; target <= MaxClients; target++) - { - if (IsClientInGame(target) && IsPlayerAlive(target) && GetClientTeam(ta)) - { - if (IsPlayerAlive(target) && GetClientTeam(target) == 3) - { - new Float:targetVector[3]; - GetClientAbsimpact(target, targetVector); - - new Float:distance = GetVectorDistance(targetVector, impact); - if (distance < DISTANCESETTING) - { - //ACTIONS ON AFFECTED TARGET - } - } - } - } */ SwarmUser(GetClientUserId(target_list[0]), range); ReplyToCommand(client, "Swarming victim %N. Radius: %d", target_list[0], range); } return Plugin_Handled; } + +public Action Cmd_SwarmToggle(int client, int args) { + //SwarmTarget, SwarmRadius + if(args == 0) { + ReplyToCommand(client, "Usage: sm_rushtoggle [radius]"); + }else{ + char arg1[32], arg2[32]; + GetCmdArg(1, arg1, sizeof(arg1)); + GetCmdArg(2, arg2, sizeof(arg2)); + + if(StrEqual(arg1, "disable", true) || StrEqual(arg1, "x", true)) { + SwarmTarget = -1; + SwarmRadius = hSwarmDefaultRange.IntValue; + ReplyToCommand(client, "Deactivated swarm toggle."); + CloseHandle(timer); + return Plugin_Handled; + } + + int range = StringToInt(arg2); + if(range <= 0) range = hSwarmDefaultRange.IntValue; + SwarmRadius = range; + + char target_name[MAX_TARGET_LENGTH]; + int target_list[1], target_count; + bool tn_is_ml; + + if ((target_count = ProcessTargetString( + arg1, + client, + target_list, + 1, + COMMAND_FILTER_ALIVE, + target_name, + sizeof(target_name), + tn_is_ml)) <= 0) + { + ReplyToTargetError(client, target_count); + return Plugin_Handled; + } + if(target_list[0] == SwarmTarget) { + SwarmTarget = -1; + SwarmRadius = hSwarmDefaultRange.IntValue; + ReplyToCommand(client, "Deactivated swarm toggle."); + CloseHandle(timer); + timer = INVALID_HANDLE; + }else{ + SwarmTarget = GetClientUserId(target_list[0]); + SwarmUser(GetClientUserId(target_list[0]), range); + ReplyToCommand(client, "Now continously swarming victim %N. Radius: %d", target_list[0], range); + if(timer == INVALID_HANDLE) + timer = CreateTimer(1.0, Timer_Swarm, _, TIMER_REPEAT); + } + } + return Plugin_Handled; +} public Action Cmd_SwarmMenu(int client, int args) { Menu menu = new Menu(Handle_SwarmMenu); menu.SetTitle("Swarm a Player"); char name[32], idStr[4]; for(int id = 1; id < MaxClients; id++) { - if(IsClientConnected(id) && IsClientInGame(id) && IsPlayerAlive(id)) { + if(IsClientConnected(id) && IsClientInGame(id) && IsPlayerAlive(id) && GetClientTeam(id) == 2) { GetClientName(id, name, sizeof(name)); Format(idStr, sizeof(idStr), "%d", GetClientUserId(id)); menu.AddItem(idStr, name); @@ -182,10 +161,10 @@ public Action Cmd_SwarmMenu(int client, int args) { public Action Cmd_SwarmToggleMenu(int client, int args) { Menu menu = new Menu(Handle_SwarmMenuToggle); menu.SetTitle("Toggle Swarm On Player"); - menu.AddItem("disable", "Disable"); + menu.AddItem("x", "Disable"); char name[32], idStr[3]; for(int id = 1; id < MaxClients; id++) { - if(IsClientConnected(id) && IsClientInGame(id) && IsPlayerAlive(id)) { + if(IsClientConnected(id) && IsClientInGame(id) && IsPlayerAlive(id) && GetClientTeam(id) == 2) { GetClientName(id, name, sizeof(name)); Format(idStr, sizeof(idStr), "%d", GetClientUserId(id)); menu.AddItem(idStr, name); @@ -204,7 +183,7 @@ public int Handle_SwarmMenu(Menu menu, MenuAction action, int client, int index) menu.GetItem(index, info, sizeof(info)); int userid = StringToInt(info); SwarmUser(userid, hSwarmDefaultRange.IntValue); - PrintToChat(client, "Swarming player %N with radius %d", userid, hSwarmDefaultRange.IntValue); + PrintToChat(client, "Swarming player #%d with radius %d", userid, hSwarmDefaultRange.IntValue); Cmd_SwarmMenu(client, 0); } else if (action == MenuAction_End) { delete menu; @@ -218,18 +197,27 @@ public int Handle_SwarmMenuToggle(Menu menu, MenuAction action, int client, int { char info[4]; menu.GetItem(index, info, sizeof(info)); - if(StrEqual(info, "disable", true)) { + if(StrEqual(info, "x", true)) { SwarmTarget = -1; SwarmRadius = hSwarmDefaultRange.IntValue; PrintToChat(client, "Disabled swarm toggle.", SwarmTarget, SwarmRadius); CloseHandle(timer); timer = INVALID_HANDLE; }else{ - SwarmTarget = StringToInt(info); - int clientID = GetClientOfUserId(SwarmTarget); - PrintToChat(client, "Toggled swarm on for %N. Radius: %d", clientID, SwarmRadius); - if(timer == INVALID_HANDLE) - timer = CreateTimer(1.0, Timer_Swarm, _, TIMER_REPEAT); + int clickedUser = StringToInt(info); + if(clickedUser != SwarmTarget) { + SwarmTarget = clickedUser; + int clientID = GetClientOfUserId(SwarmTarget); + PrintToChat(client, "Toggled swarm on for %N (#%d). Radius: %d", clientID, SwarmTarget, SwarmRadius); + if(timer == INVALID_HANDLE) + timer = CreateTimer(1.0, Timer_Swarm, _, TIMER_REPEAT); + }else{ + SwarmTarget = -1; + SwarmRadius = hSwarmDefaultRange.IntValue; + ReplyToCommand(client, "Deactivated swarm toggle."); + CloseHandle(timer); + timer = INVALID_HANDLE; + } } } else if (action == MenuAction_End) { delete menu; @@ -237,7 +225,7 @@ public int Handle_SwarmMenuToggle(Menu menu, MenuAction action, int client, int } public Action Timer_Swarm(Handle timerH, any data) { - if(SwarmTarget >= 0 && IsClientConnected(SwarmTarget) && IsPlayerAlive(SwarmTarget)) { + if(SwarmTarget >= 0) { SwarmUser(SwarmTarget, SwarmRadius); return Plugin_Continue; }else { @@ -248,4 +236,9 @@ public Action Timer_Swarm(Handle timerH, any data) { void SwarmUser(int clientUserId, int range) { L4D2_RunScript("RushVictim(GetPlayerFromUserID(%d), %d)", clientUserId, range); +} + +public void Event_CarAlarm(Event event, const char[] name, bool dontBroadcast) { + int user = event.GetInt("userid"); + SwarmUser(user, hSwarmDefaultRange.IntValue); } \ No newline at end of file