// ** Тип сообщения
#define TYPEMESSAGE 3 // 1 - Чат | 2 - Худ | 3 - Хинт
// ** Показывать ли сообщение еще раз в раунде, если уже когда-то было покзано
#define RESET 0 // 1 - Показывать | Любое другое значение запретит
// ** Продолжительность худ сообщения (сколько секунд показывать худ сообщения игрокам?)
#define TIME 5.0
// ** Координаты худ сообщения, когда остался последний...
#define POSTX 0.005 // Террорист >> вправо|влево
#define POSTY 0.52 // Террорист >> вверх|вниз
#define POSCTX 0.005 // Контр-террорист >> вправо|влево
#define POSCTY 0.48 // Контр-террорист >> вверх|вниз
// ** Цвет (RGB) худ сообщения...
#define COLOR_T_R GetRandomInt(0, 255) // Террорист >> красный (В данный момент рандом)
#define COLOR_T_G GetRandomInt(0, 255) // Террорист >> зеленый (В данный момент рандом)
#define COLOR_T_B GetRandomInt(0, 255) // Террорист >> синий (В данный момент рандом)
#define COLOR_CT_R GetRandomInt(0, 255) // Контр-террорист >> красный (В данный момент рандом)
#define COLOR_CT_G GetRandomInt(0, 255) // Контр-террорист >> зеленый (В данный момент рандом)
#define COLOR_CT_B GetRandomInt(0, 255) // Контр-террорист >> синий (В данный момент рандом)
// ** Текст сообщения, когда остался последний... | * '%N' - ник последнего игрока
#define MESSAGETT "Играем строго по одному, против: <font color='#0000FF'>%N<font color='#FF0000'>" // Террорист
#define MESSAGECT "Играем строго по одному, против: <font color='#0000FF'>%N<font color='#FF0000'>" // Контр-террорист
// =================================================================== CODE ===================================================================
#include <sdktools_gamerules>
public Plugin myinfo =
{
name = "Message - PlayerLast",
author = "Drumanid",
version = "1.0"
}
#define LC(%0) for(int %0 = 1; %0 <= MaxClients; ++%0) if(IsClientInGame(%0))
#define TEAM_T 2
#define TEAM_CT 3
bool g_bUse[2] = false;
EngineVersion g_Game;
public void OnPluginStart()
{
g_Game = GetEngineVersion();
HookEvent("round_start", RoundStart, EventHookMode_PostNoCopy);
HookEvent("player_death", PlayerDeath, EventHookMode_PostNoCopy);
HookEvent("player_spawn", PlayerSpawn);
}
public void RoundStart(Event event, const char[] name, bool dbc)
{
for(int i; i < 2; i++) g_bUse[i] = false;
}
public void PlayerDeath(Event event, const char[] name, bool dbc)
{
if(g_Game == Engine_CSGO) if(GameRules_GetProp("m_bWarmupPeriod")) return;
int iTt, iCt, iClient[2];
LC(i)
{
if(IsPlayerAlive(i))
{
switch(GetClientTeam(i))
{
case TEAM_T: if(++iTt < 2) iClient[0] = i;
case TEAM_CT: if(++iCt < 2) iClient[1] = i;
}
}
}
if(iTt == 1 && !g_bUse[0])
{
SendMessage(iClient[0], TEAM_T);
g_bUse[0] = true;
}
else if(iCt == 1 && !g_bUse[1])
{
SendMessage(iClient[1], TEAM_CT);
g_bUse[1] = true;
}
}
public void PlayerSpawn(Event event, const char[] name, bool dbc)
{
if(RESET == 1 && !g_bUse[0] || !g_bUse[1])
{
switch(GetClientTeam(GetClientOfUserId(event.GetInt("userid"))))
{
case TEAM_T: g_bUse[0] = false;
case TEAM_CT: g_bUse[1] = false;
}
}
}
void SendMessage(int iClient, int iTeam)
{
if(iClient > 0 && IsClientInGame(iClient)/* && IsPlayerAlive(iClient)*/)
{
char sBuffer[128];
switch(iTeam)
{
case TEAM_T: FormatEx(sBuffer, sizeof(sBuffer), MESSAGETT, iClient);
case TEAM_CT: FormatEx(sBuffer, sizeof(sBuffer), MESSAGECT, iClient);
}
switch(TYPEMESSAGE)
{
case 1:
{
LC(i) PrintToChat(i, sBuffer);
}
case 2:
{
switch(iTeam)
{
case TEAM_T: SetHudTextParams(POSTX, POSTY, TIME, COLOR_T_R, COLOR_T_G, COLOR_T_B, 255, 1, 1.0, 1.0, 1.0);
case TEAM_CT: SetHudTextParams(POSCTX, POSCTY, TIME, COLOR_CT_R, COLOR_CT_G, COLOR_CT_B, 255, 1, 1.0, 1.0, 1.0);
}
LC(i) ShowHudText(i, -1, sBuffer);
}
case 3:
{
LC(i) PrintHintText(i, sBuffer);
}
}
}
}