ItemSpawn: Add a filter for items onto balrog.

This commit is contained in:
zaCade 2018-11-24 14:01:09 +01:00
parent 507ef3b0a8
commit 129d0ec2b7
2 changed files with 41 additions and 2 deletions

View File

@ -2,6 +2,7 @@
#include <sourcemod> #include <sourcemod>
#include <sdktools> #include <sdktools>
#include <sdkhooks>
#include <zombiereloaded> #include <zombiereloaded>
#include <cstrike> #include <cstrike>
@ -9,6 +10,8 @@
int g_iCounter = 0; int g_iCounter = 0;
bool g_bClientHasItem[MAXPLAYERS+1] = false;
Handle g_hGetSlot; Handle g_hGetSlot;
Handle g_hBumpWeapon; Handle g_hBumpWeapon;
Handle g_hOnPickedUp; Handle g_hOnPickedUp;
@ -287,6 +290,24 @@ stock void SetEntityProps(int entity)
SetEntProp(entity, Prop_Send, "m_fEffects", 32); SetEntProp(entity, Prop_Send, "m_fEffects", 32);
} }
//----------------------------------------------------------------------------------------------------
// Purpose:
//----------------------------------------------------------------------------------------------------
stock void AddItemFilter(int entity)
{
SDKHook(entity, SDKHook_StartTouch, OnTriggerTouch);
SDKHook(entity, SDKHook_EndTouch, OnTriggerTouch);
SDKHook(entity, SDKHook_Touch, OnTriggerTouch);
}
//----------------------------------------------------------------------------------------------------
// Purpose:
//----------------------------------------------------------------------------------------------------
public Action OnTriggerTouch(int trigger, int client)
{
return (IsValidClient(client) && g_bClientHasItem[client]) ? Plugin_Handled : Plugin_Continue;
}
//---------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------
// Purpose: // Purpose:
//---------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------
@ -323,11 +344,24 @@ public bool IsValidClient(int client)
return true; return true;
} }
//----------------------------------------------------------------------------------------------------
// Purpose:
//----------------------------------------------------------------------------------------------------
public void OnClientDisconnect(int client)
{
g_bClientHasItem[client] = false;
}
//---------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------
// Purpose: // Purpose:
//---------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------
public void OnRoundStart(Event hEvent, const char[] sEvent, bool bDontBroadcast) public void OnRoundStart(Event hEvent, const char[] sEvent, bool bDontBroadcast)
{ {
for (int client = 1; client <= MaxClients; client++)
{
g_bClientHasItem[client] = false;
}
g_iCounter = 0; g_iCounter = 0;
// player_weaponstrip. // player_weaponstrip.

View File

@ -140,6 +140,7 @@ public void SpawnBalrog(float fOrigin[3])
DispatchKeyFormat(iTriggerRoar, "OnStartTouch", "item_spawn_speedmod,ModifySpeed,1.0,10,-1"); DispatchKeyFormat(iTriggerRoar, "OnStartTouch", "item_spawn_speedmod,ModifySpeed,1.0,10,-1");
SpawnAndActivate(iTriggerRoar); SpawnAndActivate(iTriggerRoar);
ParentToEntity(iTriggerRoar, iKnife); ParentToEntity(iTriggerRoar, iKnife);
AddItemFilter(iTriggerRoar);
// make the trigger work. // make the trigger work.
SetEntityBBox(iTriggerRoar, view_as<float>({-736.0, -736.0, -560.0}), view_as<float>({736.0, 736.0, 560.0})); SetEntityBBox(iTriggerRoar, view_as<float>({-736.0, -736.0, -560.0}), view_as<float>({736.0, 736.0, 560.0}));
@ -356,9 +357,13 @@ public void SpawnBalrog(float fOrigin[3])
//---------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------
public void BalrogPickup(const char[] output, int caller, int activator, float delay) public void BalrogPickup(const char[] output, int caller, int activator, float delay)
{ {
ServerCommand("say ** %N has picked up Balrog **", activator); if (IsValidClient(activator))
{
ServerCommand("say ** %N has picked up Balrog **", activator);
PrintToChat(activator, "RIGHT CLICK = MOTIVATE ZOMBIES and LEFT CLICK = ATTACK."); PrintToChat(activator, "RIGHT CLICK = MOTIVATE ZOMBIES and LEFT CLICK = ATTACK.");
g_bClientHasItem[activator] = true;
}
} }
//---------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------