DeathChaos25

Untitled

Apr 4th, 2015
549
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.85 KB | None | 0 0
  1. #include <sourcemod>
  2. #include <sdktools>
  3. #include <sdkhooks>
  4. #include <l4d_stocks>
  5.  
  6. #define PLUGIN_VERSION "1.0"
  7. #define PLUGIN_NAME "[L4D2] Tank & Hunter AI Fix test"
  8.  
  9. static Handle:SDKOnHitByVomitJar = INVALID_HANDLE;
  10.  
  11. #define ZOMBIECLASS_SMOKER 1
  12. #define ZOMBIECLASS_BOOMER 2
  13. #define ZOMBIECLASS_HUNTER 3
  14. #define ZOMBIECLASS_SPITTER 4
  15. #define ZOMBIECLASS_JOCKEY 5
  16. #define ZOMBIECLASS_CHARGER 6
  17. #define ZOMBIECLASS_TANK 8
  18.  
  19. public Plugin:myinfo =  {
  20.     name = PLUGIN_NAME,
  21.     author = "",
  22.     description = "",
  23.     version = PLUGIN_VERSION,
  24.     url = ""
  25. };
  26.  
  27. //=============================
  28. // SDKCalls
  29. //=============================
  30. InitSDKCalls()
  31. {
  32.     new Handle:ConfigFile = LoadGameConfigFile("relentless_witch");
  33.     new Handle:MySDKCall = INVALID_HANDLE;
  34.    
  35.     ///////////////////
  36.     //OnHitByVomitJar//
  37.     ///////////////////
  38.     StartPrepSDKCall(SDKCall_Entity);
  39.     PrepSDKCall_SetFromConf(ConfigFile, SDKConf_Signature, "Infected_OnHitByVomitJar");
  40.     PrepSDKCall_AddParameter(SDKType_CBaseEntity, SDKPass_Pointer);
  41.     MySDKCall = EndPrepSDKCall();
  42.     if (MySDKCall == INVALID_HANDLE)
  43.     {
  44.         SetFailState("Cant initialize Infected_OnHitByVomitJar SDKCall");
  45.     }
  46.     SDKOnHitByVomitJar = CloneHandle(MySDKCall, SDKOnHitByVomitJar);
  47.    
  48.     CloseHandle(ConfigFile);
  49.     CloseHandle(MySDKCall);
  50. }
  51. stock SDKCallOnHitByVomitJar(target, client)
  52. {
  53.     SDKCall(SDKOnHitByVomitJar, target, client);
  54. }
  55.  
  56. public OnPluginStart()
  57. {
  58.     HookEvent("player_incapacitated", Event_PlayerIncap);
  59.     HookEvent("player_spawn", Event_PlayerSpawn);
  60.     InitSDKCalls();
  61. }
  62.  
  63. public Action:Event_PlayerIncap(Handle:event, const String:name[], bool:dontBroadcast)
  64. {
  65.     new client = GetClientOfUserId(GetEventInt(event, "userid"));
  66.     if (client < 0 || client > MaxClients)
  67.     {
  68.         return
  69.     }
  70.     for (new j = 1; j <= MaxClients; j++)
  71.     {
  72.         if (IsClientInGame(j) && IsPlayerAlive(j) && GetClientTeam(j) == 3)
  73.         {
  74.             if (IsClientTank(j) || IsClientHunter(j))
  75.             {
  76.                 SDKCallOnHitByVomitJar(j, client);
  77.             }
  78.         }
  79.     }
  80. }
  81.  
  82. public Action:Event_PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
  83. {
  84.     new client = GetClientOfUserId(GetEventInt(event, "userid"));
  85.     if (client < 0 || client > MaxClients)
  86.     {
  87.         return
  88.     }
  89.     if (IsClientInGame(client) || GetClientTeam(client) != 3)
  90.     {
  91.         return
  92.     }
  93.     for (new j = 1; j <= MaxClients; j++)
  94.     {
  95.         if (IsClientInGame(j) && IsPlayerAlive(j) && GetClientTeam(j) == 2 && L4D_IsPlayerIncapacitated(j))
  96.         {
  97.             SDKCallOnHitByVomitJar(client, j);
  98.         }
  99.     }
  100. }
  101.  
  102. stock bool:IsClientTank(client)
  103. {
  104.     new class = GetEntProp(client, Prop_Send, "m_zombieClass");
  105.     if (GetClientTeam(client) == 3 && class == ZOMBIECLASS_TANK)
  106.     {
  107.         return true;
  108.     }
  109.     return false;
  110. }
  111.  
  112. stock bool:IsClientHunter(client)
  113. {
  114.     new class = GetEntProp(client, Prop_Send, "m_zombieClass");
  115.     if (GetClientTeam(client) == 3 && class == ZOMBIECLASS_HUNTER)
  116.     {
  117.         return true;
  118.     }
  119.     return false;
  120. }
Advertisement
Add Comment
Please, Sign In to add comment