Red in both teams

Статус
В этой теме нельзя размещать новые ответы.

SeeR

Пользователь
Регистрация
6 Окт 2017
Сообщения
37
Симпатии
0
Hello, can you help me please be red writing to both teams where i ^ 3?


// *************************************************************************************//
// Плагин загружен с www.neugomon.ru //
// Автор: Neygomon [ https://neugomon.ru/members/1/ ] //
// Официальная тема поддержки: https://neugomon.ru/threads/2846/ //
// При копировании материала ссылка на сайт www.neugomon.ru ОБЯЗАТЕЛЬНА! //
// *************************************************************************************//

#include <amxmodx>
#include <reapi>

#define ACCESS_IMMUNITY ADMIN_RCON // Иммунитет для админов при балансе (Админы игнорируются любым балансом(по числу/по скиллу))
#define SCORE_DIFF 2 // Разница в счете между командами (Вкл. аланс по скиллу, если одна команда перееигрывает другую на n раундов)
#define WINSTREAKS_DIFF 3 // Сколько раундов должна победить одна команда, чтобы в нее не добавляло сильных игроков
#define PLAYER_DIFF 1 // Разница в кол-ве игроков в командах (При входе на сервер, чтоб равномерно заполнять команды)
#define MIN_PLAYERS 10 // Минимальное кол-во игроков на сервере для баланса по силам ()
#define ROUND_BSKILL 3 // Каждые n раундов баланс по скиллу (Ну а че, нахер каждый раунд по скиллу то уравнивать?)
#define PL_IGNORE_NUM 3 // Каждые n перемещений в командах для одного игрока (баланс по кол-ву игроков) (Чтобы не кидало одного и того же)
#define PL_IGNORE_SKILL 3 // Каждые n замен по скиллу игрока может перемещать (Чтобы не кидало одного и того же)
//#define CUSTOM_MENU // Меню с 3-мя пунктами. 1 - Войти в игру, 6 - Наблюдатели, 0 - Выход

/* Словарь плагина */
#define MSG_TRANSFER "^3[SS] ^1Jucatorul ^4%s ^1a fost transferat la ^4%s^1."
#define MSG_TRANSFER_CT "Counter-Terrorists"
#define MSG_TRANSFER_T "Terrorists"
#define MSG_REPLACE "^3[SS] ^1Jucatorul ^4%s ^1a fost schimbat cu ^4%s^1."
/* Конец словаря */

// Избавляемся от магии в коде )))
#if !defined MAX_PLAYERS
#define MAX_PLAYERS 32
#endif
#if !defined MAX_NAME_LENGTH
#define MAX_NAME_LENGTH 32
#endif
#define NULL 0

new g_iSkipNPl[MAX_PLAYERS + 1], g_iSkipSPl[MAX_PLAYERS + 1];
new g_iTeamWinStreaks[any:TeamName];
new g_iSkillBalance = ROUND_BSKILL;

public plugin_init()
{
#define VERSION "2.3"
// 2.2: add winstreak for skill balancer
// 2.3: remake hooks
register_plugin("[ReAPI] Lite TeamBalancer", VERSION, "neugomon");
register_cvar("reapi_lite_teambalancer", VERSION, FCVAR_SERVER | FCVAR_SPONLY);

RegisterHookChain(RG_CSGameRules_RestartRound, "CSGameRules_RestartRound_Pre", false);
#if defined CUSTOM_MENU
register_clcmd("chooseteam", "CMD_ChooseTeam");
RegisterHookChain(RG_ShowVGUIMenu, "fwdShowVGUIMenu", false);
RegisterHookChain(RG_HandleMenu_ChooseTeam, "fwdHandleMenu_ChooseTeam", false);
#endif
set_task(1.2, "ChangeServerCvars");
}

public ChangeServerCvars()
{
set_cvar_num("mp_autoteambalance", NULL);
#if defined CUSTOM_MENU
set_cvar_num("mp_limitteams", NULL);
#endif
}

public client_putinserver(id)
g_iSkipSPl[id] = g_iSkipNPl[id] = NULL;

public CSGameRules_RestartRound_Pre()
{
if(get_member_game(m_bCompleteReset))
{
arrayset(g_iTeamWinStreaks, 0, sizeof g_iTeamWinStreaks);
g_iSkillBalance = ROUND_BSKILL;
}
else
{
switch(WinStatus:get_member_game(m_iRoundWinStatus))
{
case WINSTATUS_TERRORISTS:
{
g_iTeamWinStreaks[TEAM_TERRORIST]++;
g_iTeamWinStreaks[TEAM_CT] = 0;
}
case WINSTATUS_CTS:
{
g_iTeamWinStreaks[TEAM_CT]++;
g_iTeamWinStreaks[TEAM_TERRORIST] = 0;
}
}

}

new players[MAX_PLAYERS], pnum;
new iTTWins = get_member_game(m_iNumTerroristWins), iCTWins = get_member_game(m_iNumCTWins);

if(
g_iSkillBalance-- <= NULL &&
get_playersnum() >= MIN_PLAYERS &&
abs(iTTWins - iCTWins) >= SCORE_DIFF &&
abs(g_iTeamWinStreaks[TEAM_TERRORIST] - g_iTeamWinStreaks[TEAM_CT]) < WINSTREAKS_DIFF
)
{
new pEnt1, pEnt2;
get_players(players, pnum);
for(new i, TeamName:iTeam, TeamName:iLeader = (iTTWins > iCTWins) ? TEAM_TERRORIST : TEAM_CT, iStats, iCache[2]; i < pnum; i++)
{
if(g_iSkipSPl[players]-- || get_user_flags(players) & ACCESS_IMMUNITY)
continue;

switch((iTeam = get_member(players, m_iTeam)))
{
case TEAM_TERRORIST, TEAM_CT:
{
iStats = get_user_frags(players) - get_member(players, m_iDeaths);
if(iTeam == iLeader)
{
if(iStats > iCache[0])
{
pEnt1 = players;
iCache[0] = iStats;
}
}
else if(iCache[1] > iStats)
{
pEnt2 = players;
iCache[1] = iStats;
}
}
}
}
if(pEnt1 && pEnt2)
{
new szName1[MAX_NAME_LENGTH], szName2[MAX_NAME_LENGTH];
get_entvar(pEnt1, var_netname, szName1, charsmax(szName1));
get_entvar(pEnt2, var_netname, szName2, charsmax(szName1));
ChatColor(pEnt1, MSG_REPLACE, szName1, szName2);

g_iSkipSPl[pEnt1] = PL_IGNORE_SKILL;
g_iSkipSPl[pEnt2] = PL_IGNORE_SKILL;
rg_switch_team(pEnt1);
rg_switch_team(pEnt2);

g_iSkillBalance = ROUND_BSKILL;
}
}

new iNumTt = get_member_game(m_iNumTerrorist);
new iNumCt = get_member_game(m_iNumCT);
new iTransferNum = abs(iNumTt - iNumCt) / 2;
if(iTransferNum > NULL)
{
get_players(players, pnum, "e", (iNumTt > iNumCt) ? "TERRORIST" : "CT");
for(new i, szName[MAX_NAME_LENGTH]; i < pnum; i++)
{
if(g_iSkipNPl[players]-- || g_iSkipSPl[players] == PL_IGNORE_SKILL || get_user_flags(players) & ACCESS_IMMUNITY)
continue;

get_entvar(players, var_netname, szName, charsmax(szName));
ChatColor(players, MSG_TRANSFER, szName, (iNumTt > iNumCt) ? MSG_TRANSFER_CT : MSG_TRANSFER_T);

g_iSkipNPl[players] = PL_IGNORE_NUM;
rg_switch_team(players);

if(--iTransferNum < 1)
break;
}
}
}

stock ChatColor(playerColorIndex, const szMessage[], any:...)
{
#define msgSayText 76
new szMsg[190];
vformat(szMsg, charsmax(szMsg), szMessage, 3);
message_begin(MSG_ALL, msgSayText);
write_byte(playerColorIndex);
write_string(szMsg);
message_end();
}
 

SeeR

Пользователь
Регистрация
6 Окт 2017
Сообщения
37
Симпатии
0
I added this stock, but I'm not going.

stock ChatColor(playerColorIndex, const szMessage[], any:...)
{
new szMsg[190];
vformat(szMsg, charsmax(szMsg), szMessage, 3);
client_print_color(0, print_team_red, szMsg);
}
 

Анатолий

Заблокированные
Пользователь
Регистрация
8 Июн 2017
Сообщения
686
Симпатии
196
Пол
Мужской
ВКонтакте
e1337ace
I added this stock, but I'm not going.

stock ChatColor(playerColorIndex, const szMessage[], any:...)
{
new szMsg[190];
vformat(szMsg, charsmax(szMsg), szMessage, 3);
client_print_color(0, print_team_red, szMsg);
}
Код:
SendMsg(id, "^1[^4OLOLO^1] ^3olololololololollololo^1!");

SendMsg(id, const MSG[], any:...)
{
    new szMsg[190]; vformat(szMsg, charsmax(szMsg), MSG, 3)
    message_begin(MSG_ONE_UNRELIABLE, 76, .player = id)
    write_byte(id); write_string(szMsg); message_end()
}
 

SeeR

Пользователь
Регистрация
6 Окт 2017
Сообщения
37
Симпатии
0
Thanks, but it does not work.
 

Coder

Пользователь
Регистрация
10 Июн 2017
Сообщения
207
Симпатии
81
Пол
Мужской
Thanks, but it does not work.
^3 means the team color (red, blue, gray). If you want to write message for both teams with red color, that unreal to do, only green ^4 and client color ^1. For example, my chat color is white and if you write ^1 before the message I will see white color, ^4 I will see green, ^3 team color (if I'm playing for ct I will see blue color, if I'm playing for tt I will see red color, if I'm in spectators I will see gray color).
 

fantom

Разработчик
Регистрация
11 Июн 2017
Сообщения
426
Симпатии
293
Пол
Мужской
Coder, you can force team color to red, blue, grey instead of real team color
 

PPP

Пользователь
Регистрация
8 Июн 2017
Сообщения
25
Симпатии
8
Предупреждения
1
SeeR, Hey. If you use amxx 1.8.3
PHP:
client_print_color(id, print_team_red, "^3Red");
 

SeeR

Пользователь
Регистрация
6 Окт 2017
Сообщения
37
Симпатии
0
PPP Thanks, I tried and it does not work. Fantom was offered to help me. Now let's see if we solve it.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу