Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma semicolon 1
- #pragma newdecls required
- #include <sourcemod>
- #include <sdktools>
- #include <events>
- #define PLUGIN_VERSION "0.0"
- public Plugin myinfo =
- {
- name = "Spectator Kill Fix",
- author = "fakuivan",
- description = "Fixes an exploit related to projectiles not being kill on team switch",
- version = PLUGIN_VERSION,
- url = "https://forums.alliedmods.net/member.php?u=264797"
- };
- public void OnPluginStart()
- {
- //CreateConVar("sm__version", PLUGIN_VERSION, "Version of ", FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY);
- HookEvent("player_team", Event_OnClientChangeTeam);
- }
- char gs_prop_ents[][2][] =
- {
- {"obj_sentrygun" , "m_hBuilder"},
- {"projectile_rocket" , "m_hOwnerEntity"},
- {"obj_dispenser" , "m_hBuilder"},
- {"obj_teleporter" , "m_hBuilder"}
- };
- public void Event_OnClientChangeTeam(Event h_event, const char[] s_name, bool b_dontBroadcast)
- {
- char s_client_name[MAX_NAME_LENGTH];
- int i_userid = GetEventInt(h_event, "userid");
- int i_team = GetEventInt(h_event, "team");
- int i_old_team = GetEventInt(h_event, "oldteam");
- bool b_disconnect = GetEventBool(h_event, "disconnect");
- bool b_auto_team = GetEventBool(h_event, "autoteam");
- bool b_sielent = GetEventBool(h_event, "silent");
- GetEventString(h_event, "name", s_client_name, sizeof(s_client_name));
- if (b_disconnect || i_team == i_old_team)
- {
- return;
- }
- CleanParented(GetClientOfUserId(i_userid), gs_prop_ents, sizeof(gs_prop_ents));
- }
- void CleanParented(int i_client, char[][][] s_ent_prop_names, int i_entnum)
- {
- int i_entity;
- for (int i = 0; i < i_entnum; i++)
- {
- while ((i_entity = FindEntityByClassname(i_entity, s_ent_prop_names[i][0])) != INVALID_ENT_REFERENCE)
- {
- if (GetEntPropEnt(i_entity, Prop_Send, s_ent_prop_names[i][1]) == i_client)
- {
- AcceptEntityInput(i_entity, "Kill");
- }
- }
- }
- }
- /*Errors:
- C:\Users\fakui\Seafile\Programming\sm_scripting\experiments\Spectator Kill Fix\spectator_kill_fix.sp 49 error 035 argument type mismatch (argument 2)
- C:\Users\fakui\Seafile\Programming\sm_scripting\experiments\Spectator Kill Fix\spectator_kill_fix.sp 49 error 017 undefined symbol "s_ent_prop_names"
- C:\Users\fakui\Seafile\Programming\sm_scripting\experiments\Spectator Kill Fix\spectator_kill_fix.sp 49 error 029 invalid expression, assumed zero
- C:\Users\fakui\Seafile\Programming\sm_scripting\experiments\Spectator Kill Fix\spectator_kill_fix.sp 49 fatal error 190 too many error messages on one line */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement