Senior Member
Join Date: May 2019
Location: Argentina
01-27-2021
, 22:11
Re: [L4D2] Tank Spawn Announcement with sound (versus)
#3
Quote:
Originally Posted by
Marttt
Try this
Spoiler
PHP Code:
#define PLUGIN_NAME "Tank Spawn Announcement with sound (made to Tank Rush)"
#define PLUGIN_AUTHOR "Mart"
#define PLUGIN_DESCRIPTION "When the tank spawns, it announces itself in chat by making a sound"
#define PLUGIN_VERSION "1.0.0"
#define PLUGIN_URL "https://forums.alliedmods.net/showthread.php?t=330277"
public Plugin myinfo =
{
name = PLUGIN_NAME ,
author = PLUGIN_AUTHOR ,
description = PLUGIN_DESCRIPTION ,
version = PLUGIN_VERSION ,
url = PLUGIN_URL
}
#include <sourcemod>
#include <sdktools>
#include <sdkhooks>
#pragma semicolon 1
#pragma newdecls required
#define TEAM_INFECTED 3
#define SOUND "ui/pickup_secret01.wav"
public void OnPluginStart ()
{
HookEvent ( "tank_spawn" , Event_TankSpawn );
}
/****************************************************************************************************/
public void OnMapStart ()
{
PrecacheSound ( SOUND , true );
}
/****************************************************************************************************/
public void Event_TankSpawn ( Event event , const char [] name , bool dontBroadcast )
{
RequestFrame ( OnNextFrame , GetEventInt ( event , "userid" ));
}
/****************************************************************************************************/
public void OnNextFrame ( int userid )
{
int tank = GetClientOfUserId ( userid );
if (! IsValidClient ( tank ))
return;
if ( GetClientTeam ( tank ) != TEAM_INFECTED )
{
RequestFrame ( OnNextFrame , userid );
return;
}
for ( int client = 1 ; client <= MaxClients ; client ++)
{
if (! IsClientInGame ( client ))
continue;
if ( IsFakeClient ( client ))
continue;
EmitSoundToClient ( client , SOUND , client , SNDCHAN_WEAPON , SNDLEVEL_SCREAMING );
SayText2 ( client , tank , "\x03[\x04!\x03]\x04The \x05Tank \x04has been spawned!" );
}
}
// ====================================================================================================
// Helpers
// ====================================================================================================
/**
* Validates if is a valid client index.
*
* @param client Client index.
* @return True if client index is valid, false otherwise.
*/
bool IsValidClientIndex ( int client )
{
return ( 1 <= client <= MaxClients );
}
/****************************************************************************************************/
/**
* Validates if is a valid client.
*
* @param client Client index.
* @return True if client index is valid and client is in game, false otherwise.
*/
bool IsValidClient ( int client )
{
return ( IsValidClientIndex ( client ) && IsClientInGame ( client ));
}
/****************************************************************************************************/
void SayText2 ( int client , int author , const char [] format , any ...)
{
char message [ 250 ];
VFormat ( message , sizeof ( message ), format , 4 );
Handle hBuffer = StartMessageOne ( "SayText2" , client );
BfWriteByte ( hBuffer , author );
BfWriteByte ( hBuffer , true );
BfWriteString ( hBuffer , message );
EndMessage ();
}
No errors, this works
thanks Marttt!
video demonstration
__________________