Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <sourcemod>
- #include <sdktools>
- #include <sdkhooks>
- #include <l4d_stocks>
- #define PLUGIN_VERSION "1.0"
- #define PLUGIN_NAME "[L4D2] Tank & Hunter AI Fix test"
- static Handle:SDKOnHitByVomitJar = INVALID_HANDLE;
- #define ZOMBIECLASS_SMOKER 1
- #define ZOMBIECLASS_BOOMER 2
- #define ZOMBIECLASS_HUNTER 3
- #define ZOMBIECLASS_SPITTER 4
- #define ZOMBIECLASS_JOCKEY 5
- #define ZOMBIECLASS_CHARGER 6
- #define ZOMBIECLASS_TANK 8
- public Plugin:myinfo = {
- name = PLUGIN_NAME,
- author = "",
- description = "",
- version = PLUGIN_VERSION,
- url = ""
- };
- //=============================
- // SDKCalls
- //=============================
- InitSDKCalls()
- {
- new Handle:ConfigFile = LoadGameConfigFile("relentless_witch");
- new Handle:MySDKCall = INVALID_HANDLE;
- ///////////////////
- //OnHitByVomitJar//
- ///////////////////
- StartPrepSDKCall(SDKCall_Entity);
- PrepSDKCall_SetFromConf(ConfigFile, SDKConf_Signature, "Infected_OnHitByVomitJar");
- PrepSDKCall_AddParameter(SDKType_CBaseEntity, SDKPass_Pointer);
- MySDKCall = EndPrepSDKCall();
- if (MySDKCall == INVALID_HANDLE)
- {
- SetFailState("Cant initialize Infected_OnHitByVomitJar SDKCall");
- }
- SDKOnHitByVomitJar = CloneHandle(MySDKCall, SDKOnHitByVomitJar);
- CloseHandle(ConfigFile);
- CloseHandle(MySDKCall);
- }
- stock SDKCallOnHitByVomitJar(target, client)
- {
- SDKCall(SDKOnHitByVomitJar, target, client);
- }
- public OnPluginStart()
- {
- HookEvent("player_incapacitated", Event_PlayerIncap);
- HookEvent("player_spawn", Event_PlayerSpawn);
- InitSDKCalls();
- }
- public Action:Event_PlayerIncap(Handle:event, const String:name[], bool:dontBroadcast)
- {
- new client = GetClientOfUserId(GetEventInt(event, "userid"));
- if (client < 0 || client > MaxClients)
- {
- return
- }
- for (new j = 1; j <= MaxClients; j++)
- {
- if (IsClientInGame(j) && IsPlayerAlive(j) && GetClientTeam(j) == 3)
- {
- if (IsClientTank(j) || IsClientHunter(j))
- {
- SDKCallOnHitByVomitJar(j, client);
- }
- }
- }
- }
- public Action:Event_PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
- {
- new client = GetClientOfUserId(GetEventInt(event, "userid"));
- if (client < 0 || client > MaxClients)
- {
- return
- }
- if (IsClientInGame(client) || GetClientTeam(client) != 3)
- {
- return
- }
- for (new j = 1; j <= MaxClients; j++)
- {
- if (IsClientInGame(j) && IsPlayerAlive(j) && GetClientTeam(j) == 2 && L4D_IsPlayerIncapacitated(j))
- {
- SDKCallOnHitByVomitJar(client, j);
- }
- }
- }
- stock bool:IsClientTank(client)
- {
- new class = GetEntProp(client, Prop_Send, "m_zombieClass");
- if (GetClientTeam(client) == 3 && class == ZOMBIECLASS_TANK)
- {
- return true;
- }
- return false;
- }
- stock bool:IsClientHunter(client)
- {
- new class = GetEntProp(client, Prop_Send, "m_zombieClass");
- if (GetClientTeam(client) == 3 && class == ZOMBIECLASS_HUNTER)
- {
- return true;
- }
- return false;
- }
Advertisement
Add Comment
Please, Sign In to add comment