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

wewewe

Пользователь
Регистрация
26 Янв 2018
Сообщения
57
Симпатии
0
Есть автобаланс балансирует админов с определеным флагом. но вот суть он не работает. Система 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. Может его как то упростить.[DOUBLEPOST=1553187369][/DOUBLEPOST]Ой может не в той теме написал
 

wewewe

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

victormevsa

Пользователь
Регистрация
5 Янв 2018
Сообщения
129
Симпатии
31
Пол
Мужской
Есть автобаланс балансирует админов с определеным флагом. но вот суть он не работает. Система 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. Может его как то упростить.[DOUBLEPOST=1553187369][/DOUBLEPOST]Ой может не в той теме написал
А не легче прибегнуть к стандартной теме в server.cfg и не нагружать плагинами которые просто уронят ваш сервер
Например
mp_autoteambalance "2" - сразу балансирует
 

wewewe

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

perfectblood0

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

victormevsa

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

wewewe

Пользователь
Регистрация
26 Янв 2018
Сообщения
57
Симпатии
0
pt
victormevsa,[DOUBLEPOST=1555018443][/DOUBLEPOST]perfectblood0, Да не спорю причин может быть куча. Но думал хотя сам пересматривал что причина в моде ксдм. и думал что подскажут как настроить под него.[DOUBLEPOST=1555018478][/DOUBLEPOST]но других плагинов где куча? по флагу только один нашел и тот без исходного
 

perfectblood0

Команда форума
Администратор
Регистрация
29 Окт 2017
Сообщения
2.578
Симпатии
914
Пол
Женский
pt
victormevsa,[DOUBLEPOST=1555018443][/DOUBLEPOST]perfectblood0, Да не спорю причин может быть куча. Но думал хотя сам пересматривал что причина в моде ксдм. и думал что подскажут как настроить под него.[DOUBLEPOST=1555018478][/DOUBLEPOST]но других плагинов где куча? по флагу только один нашел и тот без исходного
А параметр autobalance в server cfg или game cfg какой стоит?
Невнимательно прочитал, если нужен именно по флагам, то проще заказать
 

victormevsa

Пользователь
Регистрация
5 Янв 2018
Сообщения
129
Симпатии
31
Пол
Мужской
pt
victormevsa,[DOUBLEPOST=1555018443][/DOUBLEPOST]perfectblood0, Да не спорю причин может быть куча. Но думал хотя сам пересматривал что причина в моде ксдм. и думал что подскажут как настроить под него.[DOUBLEPOST=1555018478][/DOUBLEPOST]но других плагинов где куча? по флагу только один нашел и тот без исходного
Так в этом плагине идёт балансировка игроков вроде с флагом ADMIN_RESERVATION(флаг b)
 

wewewe

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

perfectblood0

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

wewewe

Пользователь
Регистрация
26 Янв 2018
Сообщения
57
Симпатии
0
Значение 0 должно быть по идее. Попробуйте
Пробывал все значения 0.1.2 сервер ксдм. проверил старые параметры где работает там стоит 1. Но не знаю может из за мода ксдм из за инклуида. Хотя проверял разници не нашел. даже не знаю куда копать.[DOUBLEPOST=1555352079][/DOUBLEPOST]
Так в этом плагине идёт балансировка игроков вроде с флагом ADMIN_RESERVATION(флаг b)
bpt у випов не дописалось) но и на других флагах пробывал.
 

Izmayl7

Пользователь
Регистрация
9 Июн 2017
Сообщения
527
Симпатии
103
Пол
Мужской
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
[DOUBLEPOST=1555357220][/DOUBLEPOST]и в server.cfgmp_limitteams "1" // Максимальное количество игроков команды "1", которое может превышать количество игроков в команде "2".
 

wewewe

Пользователь
Регистрация
26 Янв 2018
Сообщения
57
Симпатии
0
Код:
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"
и кстати такого тоже нету не одном из конигов.
я поставил параметры и буду ждать результат
 

Izmayl7

Пользователь
Регистрация
9 Июн 2017
Сообщения
527
Симпатии
103
Пол
Мужской
wewewe, в обоих случаях 0 и 0 был?! попробуй.
 
K

kapangaIII

Код:
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
Сообщения
57
Симпатии
0
Код:
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, если нет - ошибка в моде.
Не создало вообще этого файла.
 
K

kapangaIII

Значит у тебя проблема в моде, он не вызывает этот форвард.
 
Сверху Снизу