не работает баланс

wewewe

Пользователь
Регистрация
26 Янв 2018
Сообщения
56
Симпатии
0
#1
Есть автобаланс балансирует админов с определеным флагом. но вот суть он не работает. Система 1.10.550.
Код:
#include <amxmodx>
#include <cstrike>
#include <csdm>
#if AMXX_VERSION_NUM < 183
#include <colorchat>
#else
#define DontChange print_team_default
#endif

new bool:g_bConnected[33], bool:g_bAdmin[33];
new g_iPlayers, CsTeams:g_iNewTeam[33];

public plugin_init()
register_plugin("CSDM Auto Balance", "1", "inco");

public client_putinserver(id)
{
if(get_user_flags(id) & ADMIN_RESERVATION )
g_bAdmin[id] = true;

g_iNewTeam[id] = CS_TEAM_UNASSIGNED;
g_bConnected[id] = true;
g_iPlayers++;
}

public client_disconnects(id)
{
g_bConnected[id] = g_bAdmin[id] = false;
g_iPlayers--;
}

public csdm_PostDeath(iKiller, id, HeadShot, const szWeapon[])
{
if(g_iPlayers < 4 || iKiller == id || !g_bConnected[id]) return;

set_task(0.5, "check_teams_and_transfer", id);
}

public csdm_PostSpawn(id, bool:bFake)
{
if(g_iNewTeam[id] > CS_TEAM_UNASSIGNED)
{
static szName[32]; get_user_name(id, szName, charsmax(szName));
client_print_color(0, DontChange, "^4[Balance] ^1%s ^3%s ^1был перемещен за команду ^3%s", g_bAdmin[id] ? "Админ" : "Игрок", szName, g_iNewTeam[id] == CS_TEAM_T ? "Террористов" : "Контр-Террористов");

static iMsgScreenFade;
if(!iMsgScreenFade) iMsgScreenFade = get_user_msgid("ScreenFade");
message_begin( MSG_ONE_UNRELIABLE, iMsgScreenFade, _, id );
write_short(2000);
write_short(2000);
write_short(0);
write_byte(g_iNewTeam[id] == CS_TEAM_T ? 175 : 0);
write_byte(0);
write_byte(g_iNewTeam[id] == CS_TEAM_CT ? 175 : 0);
write_byte(175);
message_end();

g_iNewTeam[id] = CS_TEAM_UNASSIGNED;
}   
}

public check_teams_and_transfer(id)
{
static players[32], pnum, iNumCT, iNumTT;

if(g_bAdmin[id])
{
iNumCT = iNumTT = 0; get_players(players, pnum);
for(new i; i < pnum; i++)
{
if(!g_bAdmin[players[i]]) continue;
switch(cs_get_user_team(players[i]))
{
case CS_TEAM_T: iNumTT++;
case CS_TEAM_CT: iNumCT++;
}
}
}
else
{
get_players(players, iNumCT, "e", "CT");
get_players(players, iNumTT, "e", "TERRORIST");
}
OpersNumsPL(id, iNumCT, iNumTT);
}

OpersNumsPL(const id, const CT, const TT)
{
if(!is_user_connected(id))
return true

static CsTeams:NewTeam, iDiff; iDiff = CT - TT;

if(iDiff > 0) NewTeam = CS_TEAM_T;
else if(iDiff < 0) NewTeam = CS_TEAM_CT;
else return true;

if(abs(iDiff) >= 2 && cs_get_user_team(id) != NewTeam)
{
cs_set_user_team(id, NewTeam);
g_iNewTeam[id] = NewTeam;
}
return true   
}
Поправьте пожалуйста. версия csdm мода csdm. Может его как то упростить.
21 Мар 2019
Ой может не в той теме написал
 

wewewe

Пользователь
Регистрация
26 Янв 2018
Сообщения
56
Симпатии
0
#2
похоже не разобраться))
 

victormevsa

Пользователь
Регистрация
5 Янв 2018
Сообщения
38
Симпатии
12
Пол
Мужской
#3
Есть автобаланс балансирует админов с определеным флагом. но вот суть он не работает. Система 1.10.550.
Код:
#include <amxmodx>
#include <cstrike>
#include <csdm>
#if AMXX_VERSION_NUM < 183
#include <colorchat>
#else
#define DontChange print_team_default
#endif

new bool:g_bConnected[33], bool:g_bAdmin[33];
new g_iPlayers, CsTeams:g_iNewTeam[33];

public plugin_init()
register_plugin("CSDM Auto Balance", "1", "inco");

public client_putinserver(id)
{
if(get_user_flags(id) & ADMIN_RESERVATION )
g_bAdmin[id] = true;

g_iNewTeam[id] = CS_TEAM_UNASSIGNED;
g_bConnected[id] = true;
g_iPlayers++;
}

public client_disconnects(id)
{
g_bConnected[id] = g_bAdmin[id] = false;
g_iPlayers--;
}

public csdm_PostDeath(iKiller, id, HeadShot, const szWeapon[])
{
if(g_iPlayers < 4 || iKiller == id || !g_bConnected[id]) return;

set_task(0.5, "check_teams_and_transfer", id);
}

public csdm_PostSpawn(id, bool:bFake)
{
if(g_iNewTeam[id] > CS_TEAM_UNASSIGNED)
{
static szName[32]; get_user_name(id, szName, charsmax(szName));
client_print_color(0, DontChange, "^4[Balance] ^1%s ^3%s ^1был перемещен за команду ^3%s", g_bAdmin[id] ? "Админ" : "Игрок", szName, g_iNewTeam[id] == CS_TEAM_T ? "Террористов" : "Контр-Террористов");

static iMsgScreenFade;
if(!iMsgScreenFade) iMsgScreenFade = get_user_msgid("ScreenFade");
message_begin( MSG_ONE_UNRELIABLE, iMsgScreenFade, _, id );
write_short(2000);
write_short(2000);
write_short(0);
write_byte(g_iNewTeam[id] == CS_TEAM_T ? 175 : 0);
write_byte(0);
write_byte(g_iNewTeam[id] == CS_TEAM_CT ? 175 : 0);
write_byte(175);
message_end();

g_iNewTeam[id] = CS_TEAM_UNASSIGNED;
}
}

public check_teams_and_transfer(id)
{
static players[32], pnum, iNumCT, iNumTT;

if(g_bAdmin[id])
{
iNumCT = iNumTT = 0; get_players(players, pnum);
for(new i; i < pnum; i++)
{
if(!g_bAdmin[players[i]]) continue;
switch(cs_get_user_team(players[i]))
{
case CS_TEAM_T: iNumTT++;
case CS_TEAM_CT: iNumCT++;
}
}
}
else
{
get_players(players, iNumCT, "e", "CT");
get_players(players, iNumTT, "e", "TERRORIST");
}
OpersNumsPL(id, iNumCT, iNumTT);
}

OpersNumsPL(const id, const CT, const TT)
{
if(!is_user_connected(id))
return true

static CsTeams:NewTeam, iDiff; iDiff = CT - TT;

if(iDiff > 0) NewTeam = CS_TEAM_T;
else if(iDiff < 0) NewTeam = CS_TEAM_CT;
else return true;

if(abs(iDiff) >= 2 && cs_get_user_team(id) != NewTeam)
{
cs_set_user_team(id, NewTeam);
g_iNewTeam[id] = NewTeam;
}
return true
}
Поправьте пожалуйста. версия csdm мода csdm. Может его как то упростить.
21 Мар 2019
Ой может не в той теме написал
А не легче прибегнуть к стандартной теме в server.cfg и не нагружать плагинами которые просто уронят ваш сервер
Например
mp_autoteambalance "2" - сразу балансирует
 

wewewe

Пользователь
Регистрация
26 Янв 2018
Сообщения
56
Симпатии
0
#4
А не легче прибегнуть к стандартной теме в server.cfg и не нагружать плагинами которые просто уронят ваш сервер
Например
mp_autoteambalance "2" - сразу балансирует
Да может быть и легче было бы. Но нужно именно чтоб баланс происходил по флагам. ситуация такая за одну команду 4 випа за другую не одного(дисбаланс жесткий) вот и думаеться почему этот не работает хотя на версии 1.9.0 работает. настройки проверенны такие же. А ну и ксдм мод под новую версию поставлен.
 

perfectblood0

Команда форума
Администратор
Регистрация
29 Окт 2017
Сообщения
1.557
Симпатии
492
#5
Проще поставить другой плагин, благо таких куча. Чем разбираться в том, что заведомо неизвестно. Причин может быть хоть миллион, мы видим лишь исходник.
 

victormevsa

Пользователь
Регистрация
5 Янв 2018
Сообщения
38
Симпатии
12
Пол
Мужской
#6
Да может быть и легче было бы. Но нужно именно чтоб баланс происходил по флагам. ситуация такая за одну команду 4 випа за другую не одного(дисбаланс жесткий) вот и думаеться почему этот не работает хотя на версии 1.9.0 работает. настройки проверенны такие же. А ну и ксдм мод под новую версию поставлен.
А у твоих випов какие флаги?
 

wewewe

Пользователь
Регистрация
26 Янв 2018
Сообщения
56
Симпатии
0
#7
pt
victormevsa,
12 Апр 2019
perfectblood0, Да не спорю причин может быть куча. Но думал хотя сам пересматривал что причина в моде ксдм. и думал что подскажут как настроить под него.
12 Апр 2019
но других плагинов где куча? по флагу только один нашел и тот без исходного
 

perfectblood0

Команда форума
Администратор
Регистрация
29 Окт 2017
Сообщения
1.557
Симпатии
492
#8
pt
victormevsa,
12 Апр 2019
perfectblood0, Да не спорю причин может быть куча. Но думал хотя сам пересматривал что причина в моде ксдм. и думал что подскажут как настроить под него.
12 Апр 2019
но других плагинов где куча? по флагу только один нашел и тот без исходного
А параметр autobalance в server cfg или game cfg какой стоит?
Невнимательно прочитал, если нужен именно по флагам, то проще заказать
 

victormevsa

Пользователь
Регистрация
5 Янв 2018
Сообщения
38
Симпатии
12
Пол
Мужской
#9
pt
victormevsa,
12 Апр 2019
perfectblood0, Да не спорю причин может быть куча. Но думал хотя сам пересматривал что причина в моде ксдм. и думал что подскажут как настроить под него.
12 Апр 2019
но других плагинов где куча? по флагу только один нашел и тот без исходного
Так в этом плагине идёт балансировка игроков вроде с флагом ADMIN_RESERVATION(флаг b)
 

wewewe

Пользователь
Регистрация
26 Янв 2018
Сообщения
56
Симпатии
0
#10
А параметр autobalance в server cfg или game cfg какой стоит?
Невнимательно прочитал, если нужен именно по флагам, то проще заказать
стоит значение 1. Да вроде рабочи плагин но просто в том что обновился и не работает. Хотел узнать в чем причина.
 

perfectblood0

Команда форума
Администратор
Регистрация
29 Окт 2017
Сообщения
1.557
Симпатии
492
#11
стоит значение 1. Да вроде рабочи плагин но просто в том что обновился и не работает. Хотел узнать в чем причина.
Значение 0 должно быть по идее. Попробуйте
 

wewewe

Пользователь
Регистрация
26 Янв 2018
Сообщения
56
Симпатии
0
#12
Значение 0 должно быть по идее. Попробуйте
Пробывал все значения 0.1.2 сервер ксдм. проверил старые параметры где работает там стоит 1. Но не знаю может из за мода ксдм из за инклуида. Хотя проверял разници не нашел. даже не знаю куда копать.
Понедельник в 21:14
Так в этом плагине идёт балансировка игроков вроде с флагом ADMIN_RESERVATION(флаг b)
bpt у випов не дописалось) но и на других флагах пробывал.
 

Izmayl7

Пользователь
Регистрация
9 Июн 2017
Сообщения
426
Симпатии
77
Пол
Мужской
#13
wewewe, в game.cfg и в server.cfg значение поставь в 0, mp_autoteambalance "0" // Разрешить автоматическую балансировку команд.
и посмотри в game.cfg вот это:
C-like:
mp_auto_join_team "1"
// Автоматический выбор команды по переменной humans_join_team
// "0" Выключить
// "1" Включить

humans_join_team "any"
// К выбору какой команды допускать игроков
// "any" Все
// "ct" Counter Terrorists
// "t" Terrorists
// "spec" Spectators
Понедельник в 22:40
и в server.cfgmp_limitteams "1" // Максимальное количество игроков команды "1", которое может превышать количество игроков в команде "2".
 

wewewe

Пользователь
Регистрация
26 Янв 2018
Сообщения
56
Симпатии
0
#14
Код:
mp_auto_join_team "1"
// Автоматический выбор команды по переменной humans_join_team
// "0" Выключить
// "1" Включить
Это я поставил было 0

Код:
humans_join_team "any"
// К выбору какой команды допускать игроков
// "any" Все
// "ct" Counter Terrorists
// "t" Terrorists
// "spec" Spectators
такого параметра вообще нету))

Код:
mp_limitteams "1"
и кстати такого тоже нету не одном из конигов.
я поставил параметры и буду ждать результат
 

kapangaIII

Команда форума
Разработчик
Регистрация
31 Окт 2017
Сообщения
725
Симпатии
207
#18
Код:
public csdm_PostDeath(iKiller, id, HeadShot, const szWeapon[])
{
    if(g_iPlayers < 4 || iKiller == id || !g_bConnected[id]) return;
    set_task(0.5, "check_teams_and_transfer", id);
}
->
Код:
public csdm_PostDeath(iKiller, id, HeadShot, const szWeapon[])
{
    log_amx("text.txt","csdm_PostDeath %d|%d|%d|%s",iKiller,id,HeadShot,szWeapon);
    if(g_iPlayers < 4 || iKiller == id || !g_bConnected[id]) return;
    set_task(0.5, "check_teams_and_transfer", id);
}
После, проверь, пишется ли что нибудь в файл text.txt, если нет - ошибка в моде.
 

wewewe

Пользователь
Регистрация
26 Янв 2018
Сообщения
56
Симпатии
0
#19
Код:
public csdm_PostDeath(iKiller, id, HeadShot, const szWeapon[])
{
    if(g_iPlayers < 4 || iKiller == id || !g_bConnected[id]) return;
    set_task(0.5, "check_teams_and_transfer", id);
}
->
Код:
public csdm_PostDeath(iKiller, id, HeadShot, const szWeapon[])
{
    log_amx("text.txt","csdm_PostDeath %d|%d|%d|%s",iKiller,id,HeadShot,szWeapon);
    if(g_iPlayers < 4 || iKiller == id || !g_bConnected[id]) return;
    set_task(0.5, "check_teams_and_transfer", id);
}
После, проверь, пишется ли что нибудь в файл text.txt, если нет - ошибка в моде.
Не создало вообще этого файла.
 

kapangaIII

Команда форума
Разработчик
Регистрация
31 Окт 2017
Сообщения
725
Симпатии
207
#20
Значит у тебя проблема в моде, он не вызывает этот форвард.